On Thu, Sep 14, 2023 at 02:33:16AM -0400, Yang Weijiang wrote: >Add CET MSRs to the list of MSRs reported to userspace if the feature, >i.e. IBT or SHSTK, associated with the MSRs is supported by KVM. > >SSP can only be read via RDSSP. Writing even requires destructive and >potentially faulting operations such as SAVEPREVSSP/RSTORSSP or >SETSSBSY/CLRSSBSY. Let the host use a pseudo-MSR that is just a wrapper >for the GUEST_SSP field of the VMCS. > >Suggested-by: Chao Gao <chao.gao@xxxxxxxxx> >Signed-off-by: Yang Weijiang <weijiang.yang@xxxxxxxxx> >--- > arch/x86/include/uapi/asm/kvm_para.h | 1 + > arch/x86/kvm/vmx/vmx.c | 2 ++ > arch/x86/kvm/x86.c | 18 ++++++++++++++++++ > 3 files changed, 21 insertions(+) > >diff --git a/arch/x86/include/uapi/asm/kvm_para.h b/arch/x86/include/uapi/asm/kvm_para.h >index 6e64b27b2c1e..9864bbcf2470 100644 >--- a/arch/x86/include/uapi/asm/kvm_para.h >+++ b/arch/x86/include/uapi/asm/kvm_para.h >@@ -58,6 +58,7 @@ > #define MSR_KVM_ASYNC_PF_INT 0x4b564d06 > #define MSR_KVM_ASYNC_PF_ACK 0x4b564d07 > #define MSR_KVM_MIGRATION_CONTROL 0x4b564d08 >+#define MSR_KVM_SSP 0x4b564d09 > > struct kvm_steal_time { > __u64 steal; >diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c >index 72e3943f3693..9409753f45b0 100644 >--- a/arch/x86/kvm/vmx/vmx.c >+++ b/arch/x86/kvm/vmx/vmx.c >@@ -7009,6 +7009,8 @@ static bool vmx_has_emulated_msr(struct kvm *kvm, u32 index) > case MSR_AMD64_TSC_RATIO: > /* This is AMD only. */ > return false; >+ case MSR_KVM_SSP: >+ return kvm_cpu_cap_has(X86_FEATURE_SHSTK); For other MSRs in emulated_msrs_all[], KVM doesn't check the associated CPUID feature bits. Why bother doing this for MSR_KVM_SSP?