Hello, The following series implements support for MSR_VIRT_SPEC_CTRL 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. First patch is quite clean, as it uses the shadow SPEC_CTRL in order to set the SSBD bit and have it context switched by Xen using the existing logic recently added. The next two patches introduce a different way to context switch SSBD either depending on the underlying SSBD support, so it's either using VIRT_SPEC_CTRL or the LS_CFG MSR. They also kind of overload the usage of several spec_ctrl variables in the hypervisor in order to store the status of SSBD even when not using MSR_SPEC_CTRL itself. I've tried to document those in the commit messages, but it could be controversial. Thanks, Roger. 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 docs/misc/xen-command-line.pandoc | 5 +- xen/arch/x86/cpu/amd.c | 116 +++++++++++++++++--- xen/arch/x86/cpuid.c | 18 +++ xen/arch/x86/hvm/hvm.c | 1 + xen/arch/x86/hvm/svm/entry.S | 8 +- xen/arch/x86/hvm/svm/svm.c | 67 +++++++++++ xen/arch/x86/include/asm/amd.h | 3 + xen/arch/x86/include/asm/cpufeatures.h | 2 + xen/arch/x86/include/asm/msr.h | 6 +- xen/arch/x86/msr.c | 15 +++ xen/arch/x86/spec_ctrl.c | 11 +- xen/include/public/arch-x86/cpufeatureset.h | 2 +- 12 files changed, 230 insertions(+), 24 deletions(-) -- 2.34.1
