Message ID | 20240226213244.18441-10-john.allen@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | SVM guest shadow stack support | expand |
On Mon, Feb 26, 2024, John Allen wrote: > If the CPU supports CET, add CET XSAVES feature bits to the > supported_xss mask. > > Signed-off-by: John Allen <john.allen@amd.com> > --- > arch/x86/kvm/svm/svm.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c > index 1181f017c173..d97d82ebec4a 100644 > --- a/arch/x86/kvm/svm/svm.c > +++ b/arch/x86/kvm/svm/svm.c > @@ -5177,6 +5177,10 @@ static __init void svm_set_cpu_caps(void) > boot_cpu_has(X86_FEATURE_AMD_SSBD)) > kvm_cpu_cap_set(X86_FEATURE_VIRT_SSBD); > > + if (kvm_cpu_cap_has(X86_FEATURE_SHSTK)) > + kvm_caps.supported_xss |= XFEATURE_MASK_CET_USER | > + XFEATURE_MASK_CET_KERNEL; Based on Weijiang's series, I believe this is unnecessary. Common x86 code will both set supported_xss, and clear bits if their associated features are unsupported. I also asked Weijiang to modify the "advertise to userspace" patch to explicitly clear SHSTK and IBT in svm_set_cpu_caps()[*], so if the stars align as I think they will, this patch should simply need to delete the kvm_cpu_cap_clear(X86_FEATURE_SHSTK); that will be added by the VMX series. [*] https://lore.kernel.org/all/ZjLRnisdUgeYgg8i@google.com
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 1181f017c173..d97d82ebec4a 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -5177,6 +5177,10 @@ static __init void svm_set_cpu_caps(void) boot_cpu_has(X86_FEATURE_AMD_SSBD)) kvm_cpu_cap_set(X86_FEATURE_VIRT_SSBD); + if (kvm_cpu_cap_has(X86_FEATURE_SHSTK)) + kvm_caps.supported_xss |= XFEATURE_MASK_CET_USER | + XFEATURE_MASK_CET_KERNEL; + if (enable_pmu) { /* * Enumerate support for PERFCTR_CORE if and only if KVM has
If the CPU supports CET, add CET XSAVES feature bits to the supported_xss mask. Signed-off-by: John Allen <john.allen@amd.com> --- arch/x86/kvm/svm/svm.c | 4 ++++ 1 file changed, 4 insertions(+)