x86/cpuid: do not expand max leaves on restore

When restoring limit the maximum leaves to the ones supported by Xen
4.12 in order to not expand the maximum leaves a guests sees. Note
this is unlikely to cause real issues.

Guests restored from Xen versions 4.13 or greater will contain CPUID
data on the stream that will override the values set by
xc_cpuid_apply_policy.

Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
Roger Pau Monné authored and Jan Beulich committed 2021-04-29 16:04:11 +02:00
1 parent ec0ec16487
commit 111c8c33a8
1 file changed
+9 -4
+9 -4
View File
@@ -498,18 +498,23 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
goto out;
}
/*
* Account for feature which have been disabled by default since Xen 4.13,
* so migrated-in VM's don't risk seeing features disappearing.
*/
if ( restore )
{
/*
* Account for feature which have been disabled by default since Xen 4.13,
* so migrated-in VM's don't risk seeing features disappearing.
*/
p->basic.rdrand = test_bit(X86_FEATURE_RDRAND, host_featureset);
if ( di.hvm )
{
p->feat.mpx = test_bit(X86_FEATURE_MPX, host_featureset);
}
/* Clamp maximum leaves to the ones supported on 4.12. */
p->basic.max_leaf = min(p->basic.max_leaf, 0xdu);
p->feat.max_subleaf = 0;
p->extd.max_leaf = min(p->extd.max_leaf, 0x1cu);
}
if ( featureset )
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.