From 111c8c33a8a18588f3da3c5dbb7f5c63ddb98ce5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roger=20Pau=20Monn=C3=A9?= Date: Thu, 29 Apr 2021 16:04:11 +0200 Subject: [PATCH] x86/cpuid: do not expand max leaves on restore MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Roger Pau Monné Acked-by: Jan Beulich --- tools/libs/guest/xg_cpuid_x86.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index 5ea69ad3d5..bf9a3750b5 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -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 ) -- 2.30.2