[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH for-4.16] x86/cpuid: do not shrink number of leaves in max policies


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Roger Pau Monne <roger.pau@xxxxxxxxxx>
  • Date: Wed, 24 Nov 2021 17:16:49 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=X6pVwwGe9m19nSJxjOTlaNzYo5HU6Vwzn2MT1WXDBJM=; b=A4SPqrOOOhvxSyhMep2tx16qPdMMprJMOUum/8so5BSf+U6aag9c1MChoeuvL7f1vVrS+gH3RLF96Ml/UMdD3WBmdQICfxWNLKLpQ/BimBsY/yMX5IUgCq8FEkB/HVdhN08TGa6TIhgkvqPmaj3M5fGUldyUKYMRNQTA7WUWBCiOiGEIxLeAhU/JSwS6y2vHUsrVuwjK8zmcVs/K3Q38GQdUtyQHWZpebuWPoyv03EGvS7dZapgN28lRfWysZjaZHXlQTGh6PemVglmTosJh8Ad9D1q1XTk5M4dputqj9Tw7WGE6Vxti7R20zE76O3WIHoHx01J0R6y/T5CQHh1cHg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Dald+QdwQfIDIphvqu1jD4b1L8YtcRISvaaMq0D9c93Cxzi9pMQyqS4w3ai96ctuPpTaZGyHOX89nfuh4rdo2R0vOfbM+pvrN8dySoNU9gpFOGM1t2PJmQ1yk5narFMFTmNoZS2rM3qLhz0IXp08U2vGtusOCLKKb3CyVRY+6tXxX7/jHjamvua/UUAXhekS57Tox8gHyE1oJrYRwYR/cJGXcn9auKatq+grIazkltFaY7GDsNQucVuWL/iHtYUK/gVXbnewwqw8fyWRxEdBYW27O+aIkwBD3rTo4gTDH2E8Q1Knb6qr5eChVWdE004AMBG5RAtdPVU9K3oGQJ9PxA==
  • Authentication-results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Roger Pau Monne <roger.pau@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Ian Jackson <iwj@xxxxxxxxxxxxxx>
  • Delivery-date: Wed, 24 Nov 2021 16:17:41 +0000
  • Ironport-data: A9a23:PPswua5pUXHI7mEsTFBRgwxRtNPAchMFZxGqfqrLsTDasY5as4F+v mIbWj2HM/zfMzCjetsja43j/E4AusKAyYVqHQVvryoyHi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdg2NIw27BVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Z+ sVUhbi6aj4SIu78htgzVTcbGiVFMvgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALNs7kMZlZonh95TrYEewnUdbIRKCiCdpwgWdh2pkfTKa2i 8wxZDB3XSbgXzZ1CnAOBMIPrs6T2Ej8WmgNwL6SjfVuuDWCpOBr65DyNPLFd9rMQt9a9m6Zu WDu72n/GgsdNtGU1XyC6H3Erv/Cm2b3VZwfEJW89+V2mxuDy2oLEhoUWFCn5/6jhSaWWdhSN kgV8SoGtrUp+QqgSdyVYvGjiCfa5FhGAYMWSrBkrlHWokbJ3+qHLloUVw5lYv8fj9N1dSIW+ Fmn3NrtPjM65dV5Vkmh3ruTqDqzPw0cImkDeTIIQGM53jXznG0gpkmRF4g+ScZZmvWwQGitm G7S8EDSkp1K1ZZTv5hX62wrlN5FSnLhagcurjvaUWu+hu+STN70Ptf4gbQ3ABspEWp4crVjl CRV8yR9xLpXZX1oqMBraL9RdF1Oz6zYWAAweXY1Q/EcG82FohZPh7x47jBkP1tOOc0ZYzLva 0K7kVoPv8ANbSH7NPImP93Z5yEWIU7IT4iNuhf8NIQmX3SMXFXfoHEGibC4gQgBb3TAYYlgY MzGIK5A/F4RCLh9zSreegvu+eRD+8zK/kuKHcqT503+idK2PSfJIZ9YYArmRr1ot8us/VSKm +uzwuPXkn2zpsWlOXKJmWPSRHhXRUUG6Wfe95YKK7Xde1U+QwnMyZb5mNscRmCspIwM/s/g9 XChQE5Ijl35gHzMMwKRbX5/LrjoWP5CQbgTZkTA5H6khCouZ5iB9qAae8dldLUr7rU7n/V1U +MEa4OLBfEWEmbL/DEUbJ/cqo1+dUv02VLSbnT9ODVvLYR9QwHp+8P/ele9/ic5ESfq59A1p Ket112HTMNbFRhiFsvfdNmm00i14SoGgOt3UkaReotTdUzg/ZJEMSv0ivNrccgAJQ+anmmR1 hqMAAderu7I+tdn/N7MjKGCjoGoD+ohQRYKQziFte67bHCI8HCizIlMVPezUQrcDG6kqr+/Y eh1zu3nNKFVllh9rIchQa1gyrgz5oWzquYCnBhkBnjCc3+iFqhkfiudxcBKu6BAmu1ZtA+xV h7d89VWI+zUasbsEVpXLws5dOWTk/oTn2CKv/gyJUz74g5x/aaGDhoOb0Xd1nQFIesnKp4hz McgpNUSul62hRcdO9qbijxZqjaXJXsaXqR77pwXDecHUObwJo2utXAENhLL3Q==
  • Ironport-hdrordr: A9a23:jM3JpqqKc2MmmRFL/Qaklk8aV5oneYIsimQD101hICG9JPbo8v xG/c5rtiMc5wx7ZJhNo7q90ey7Lk80lqQU3WByB9uftVLdyQ+VxehZhOPfKn/bdREWndQ96U 4PScVD4NOZNykZsfrH
  • Ironport-sdr: WS6jNXC5daLHHDSOSDAq1eXAkmd432e2U2Mj42nO3uE84bRpA3oGZWZ35cDlSZ06+SJxQguIDu RfHJfI9I8YPjAGnP+kXUN0gjsC+pEKjant3Jqb+jSFT1BRoFdAmRnDyyKD8O1bE/Rw7B6pHHxN D3O2HgsoxsF0VVBpX2EX07OMrDiTUua/8Ol8gXh8VRxjXRMyPGE8Y8ndrwbS2D+DCMYalx5fz4 777y9mEjsqK80owqUdE+4yC+tcGvTLYxIew2/jqXUCsXaztQxPpQqUi04xtLfW1QGqGvBTOoKg eMQNkmnF0RADfwdzzJ+Qq9HU
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Shrinking max policies can lead to failures in migration as previous
versions of Xen didn't shrink the number of leaves in any case, so
it's possible for a guest created on previous versions of Xen that
pass CPUID data on the migration stream to contain a max leaf number
greatest than the one present on the max policies in versions of Xen
containing 540d911c28.

Such failure was seen by osstest when doing a migration from Xen
4.15 to Xen 4.16-rc on a pair of equal boxes, the noceras.

Fix this by preventing any shrinking of the max CPUID policies, so
that previously built guest CPUID policies are compatible.

Fixes: 540d911c28 ('x86/CPUID: shrink max_{,sub}leaf fields according to actual 
leaf contents')
Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
Cc: Ian Jackson <iwj@xxxxxxxxxxxxxx>

This is a regression from Xen 4.15, so should be considered for Xen
4.16. The main risks would be to mess up with the CPUID policy in a
different way, that would also lead to brokenness. Strictly speaking
the change here removes the shrinking of max leaves and restores the
previous behavior, but it's obviously not completely risk free.

It has proven to fix the regression seen on the noceras.
---
 xen/arch/x86/cpuid.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/xen/arch/x86/cpuid.c b/xen/arch/x86/cpuid.c
index 8ac55f0806..173c7b71ac 100644
--- a/xen/arch/x86/cpuid.c
+++ b/xen/arch/x86/cpuid.c
@@ -353,8 +353,6 @@ static void __init calculate_host_policy(void)
         p->extd.raw[0xa].d |= ((1u << SVM_FEATURE_VMCBCLEAN) |
                                (1u << SVM_FEATURE_TSCRATEMSR));
     }
-
-    x86_cpuid_policy_shrink_max_leaves(p);
 }
 
 static void __init guest_common_default_feature_adjustments(uint32_t *fs)
@@ -434,8 +432,6 @@ static void __init calculate_pv_max_policy(void)
     recalculate_xstate(p);
 
     p->extd.raw[0xa] = EMPTY_LEAF; /* No SVM for PV guests. */
-
-    x86_cpuid_policy_shrink_max_leaves(p);
 }
 
 static void __init calculate_pv_def_policy(void)
@@ -523,8 +519,6 @@ static void __init calculate_hvm_max_policy(void)
     sanitise_featureset(hvm_featureset);
     cpuid_featureset_to_policy(hvm_featureset, p);
     recalculate_xstate(p);
-
-    x86_cpuid_policy_shrink_max_leaves(p);
 }
 
 static void __init calculate_hvm_def_policy(void)
-- 
2.33.0




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.