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

[PATCH v6 0/3] amd/msr: implement MSR_VIRT_SPEC_CTRL for HVM guests


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Roger Pau Monne <roger.pau@xxxxxxxxxx>
  • Date: Tue, 17 May 2022 17:31:24 +0200
  • 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=RE8NR3CZplIH9Ch+tl7XBiIwHDlPpz9VsoHnquiTqD8=; b=QvCMtlpj7oLF04ibalXHO9+hk7zHwg2x2PZ5gs3+uApUp5bclJBjRWr2gzzmK2l1+332/cQplWrMvKupa6fynXcvOj6n/Y2+ewOG3/2CWVf0Tp/DRArwtVQR4n44Tkm0f4A/R+vmBEiaNUaX7TeDZEVnvvvifYvW4PVAM/yswd7w0sAz5Rri0J73FXRAw/tpxVxwLXp8TIlfTodTCe30j1/dOvr/gikIv6xOnhrBTDrJ1zRJNGQLFd8UrZlbdhqn+OJtl5w/dFGf1y85O7SarrDJHvntpVMbUR4nvxn263MCgPimqFwR4rQyXFl0AztoZj/05Kb4EZJ23lIUCkYWeg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eXecJZR8Snp21bqLVmZ/cAE3Iya0fbseCCkTH0jlsQ4XdFQL6gceg5HFtI4V3saq6bS2GJptf/ZTgCjGDzmZs72Hut93IIRCQIO2aRoAguwcXqscLrbdWRLsg6Z6orYItX5tQNSjnYa87eS0lKmMK3QUvpdo2gWZy7/xdoOgew8oamyr12cCwICs+eiAB2IabofYyIR+ND/UZ0dyvo+DXGagBQ6YkCXrBYIICWuNmCzdEsvyt8KYsE3u4o6h1pOGpozWn57I5MpXuJIxdpg8D/Le8hvcpG3OJvRbORiJn3d2lM6PVY2GqV369GqJjlLqZgv/VS9S2SWBxDbMiAjiMg==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: Roger Pau Monne <roger.pau@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Henry Wang <Henry.Wang@xxxxxxx>, Community Manager <community.manager@xxxxxxxxxxxxxx>
  • Delivery-date: Tue, 17 May 2022 15:31:46 +0000
  • Ironport-data: A9a23:yjPMCaxqkBqjpDV414x6t+cUxyrEfRIJ4+MujC+fZmUNrF6WrkVSz mQcCjrQOq3bY2D1Kdx0PNi/9ENXuZGDm4RlS1dprCAxQypGp/SeCIXCJC8cHc8zwu4v7q5Dx 59DAjUVBJlsFhcwnj/0bv656yMUOZigHtIQMsadUsxKbVIiGX5JZS5LwbZj2NY12IfhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ Npljq7rV0QiGp/2pssabAZIMwFDHpN09+qSSZS/mZT7I0zuVVLJm6krIGRoeIoS96BwHH1E8 uEeJHYVdBefiumqwbW9DO5xmsAkK8qtN4Qa0p1i5WiBUbB6HtacGOOWtLe03x9p7ixKNezZa McDLyJmcTzLYgFVO0dRA5U79AutriamLmUH8QzEzUYxy2X4nC5fgInpDMv2X8WOa8pux2Xbh G2TqgwVBTlfbrRz0wGt4n+qw+PCgy7/cIYTD6GjsO5nhkWJwW4eAwFQUkG0ydG7gEOjX9NUK 2QP5zEj66M18SSDUd3VTxC+5nmesXY0e9dWCfx81wiLxYLd+QPfDW8BJhZKb9kjqck3WS1s0 1aPltzkHxR/vbuNU3Wf+7yI6zSoNkAowXQqYCYFSU4J5oflqYRr3hbXFI4/Qeiyk8H/Hiz2z 3aSti8iir4PjMkNkaKm4VTAhDHqrZ/MJuIo2jjqsquexlsRTOaYi0aAtTA3Md4owF6lc2S8
  • Ironport-hdrordr: A9a23:UKBclqhmB/d0izJVHGsfSpKlKHBQX1N13DAbv31ZSRFFG/FwyP rCoB1L73XJYWgqM03IwerwQJVoMkmsjqKdgLNhdYtKOTOLhILGFvAH0WKP+Vzd8mjFh5dgPM RbAuND4b/LfD9HZK/BiWHWferIguP3lpxA7t2urEuFODsaDp2ImD0JaDpzfHcXeCB2Qb4CUL aM7MtOoDStPV4NaN6gO3UDV+/f4/XWiZPPe3c9dlMawTjLqQntxK/xEhCe0BtbeShI260e/W /MlBG8zrm/ssu81gTX2wbonthrcZrau5R+7f63+4kowwbX+0aVjUNaKv6/VQUO0a+SAZAR4Z vxSlkbToFOAjjqDxuISFPWqnTdOXAVmjXfIBaj8AfeiN28SzQgB8Vbg4VFNhPf9ko7pdl5lL lGxmSDqvNsfGT9dQnGlq31vitR5z6JSLsZ4J4upm0aVZFbZK5arIQZ8k8QGJAcHDji4IRiFO V1FsnT6PtfbFvfNhnizyBS6c3pWm52EgaNQ0AEtMDQ2z9KnGphx09dwMAEhH8P+J80VpEB7e XZNaZjkq1IU6YtHNRALfZERdHyBn3GQBrKPm7XKVP7FLsfM3aIsJLz6KVd3pDZRHXJ9upApH 3saiIniYdpQTOQNSSn5uw7zizw
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Hello,

The following series implements support for MSR_VIRT_SPEC_CTRL
(VIRT_SSBD) on different AMD CPU families.

Note that the support is added backwards, starting with the newer CPUs
that support MSR_SPEC_CTRL and moving to the older ones either using
MSR_VIRT_SPEC_CTRL or the SSBD bit in LS_CFG.

Xen is still free to use it's own SSBD setting, as the selection is
context switched on vm{entry,exit}.

On Zen2 and later, SPEC_CTRL.SSBD should exist and should be used in
preference to VIRT_SPEC_CTRL.SSBD.  However, for migration
compatibility, Xen offers VIRT_SSBD to guests (in the max cpuid policy,
not default) implemented in terms of SPEC_CTRL.SSBD.

On Fam15h thru Zen1, Xen exposes VIRT_SSBD to guests by default to
abstract away the model and/or hypervisor specific differences in
MSR_LS_CFG/MSR_VIRT_SPEC_CTRL.

So the implementation of VIRT_SSBD exposed to HVM guests will use one of
the following underlying mechanisms, in the preference order listed
below:

 * SPEC_CTRL.SSBD: patch 1
 * VIRT_SPEC_CTRL.SSBD: patch 2.
 * Non-architectural way using LS_CFG: patch 3.

NB: patch 3 introduces some logic in GIF=0 context, such logic has been
kept to a minimum due to the special context it's running on.

Roger Pau Monne (3):
  amd/msr: implement VIRT_SPEC_CTRL for HVM guests on top of SPEC_CTRL
  amd/msr: allow passthrough of VIRT_SPEC_CTRL for HVM guests
  amd/msr: implement VIRT_SPEC_CTRL for HVM guests using legacy SSBD

 CHANGELOG.md                                |   3 +
 xen/arch/x86/cpu/amd.c                      | 121 +++++++++++++++++---
 xen/arch/x86/cpuid.c                        |  21 ++++
 xen/arch/x86/hvm/hvm.c                      |   1 +
 xen/arch/x86/hvm/svm/entry.S                |   8 ++
 xen/arch/x86/hvm/svm/svm.c                  |  39 +++++++
 xen/arch/x86/include/asm/amd.h              |   4 +
 xen/arch/x86/include/asm/cpufeatures.h      |   1 +
 xen/arch/x86/include/asm/msr.h              |  14 +++
 xen/arch/x86/msr.c                          |  26 +++++
 xen/arch/x86/spec_ctrl.c                    |  12 +-
 xen/include/public/arch-x86/cpufeatureset.h |   2 +-
 12 files changed, 233 insertions(+), 19 deletions(-)

-- 
2.36.0




 


Rackspace

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