lkml.org 
[lkml]   [2023]   [Apr]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH v2 09/11] KVM: VMX: Advertise MITI_CTRL_BHB_CLEAR_SEQ_S_SUPPORT
    Date
    From: Zhang Chen <chen.zhang@intel.com>

    Allow guest to query if the underying VMM understands BHB-clearing
    sequence and report the statue of BHB-clearing sequence in suprevisor
    mode i.e. CPL < 3 via MSR_VIRTUAL_MITIGATION_ENUM/CTRL.

    Enable BHI_DIS_S for guest if guest is using BHI-clearing sequence and
    the sequence isn't effective on the processor.

    Signed-off-by: Zhang Chen <chen.zhang@intel.com>
    Signed-off-by: Chao Gao <chao.gao@intel.com>
    Tested-by: Jiaan Lu <jiaan.lu@intel.com>
    ---
    arch/x86/kvm/vmx/vmx.c | 11 +++++++++--
    1 file changed, 9 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
    index 25afb4c3e55e..abbbf8e66b53 100644
    --- a/arch/x86/kvm/vmx/vmx.c
    +++ b/arch/x86/kvm/vmx/vmx.c
    @@ -1944,8 +1944,10 @@ static inline bool is_vmx_feature_control_msr_valid(struct vcpu_vmx *vmx,
    }

    #define VIRTUAL_ENUMERATION_VALID_BITS VIRT_ENUM_MITIGATION_CTRL_SUPPORT
    -#define MITI_ENUM_VALID_BITS MITI_ENUM_RETPOLINE_S_SUPPORT
    -#define MITI_CTRL_VALID_BITS MITI_CTRL_RETPOLINE_S_USED
    +#define MITI_ENUM_VALID_BITS (MITI_ENUM_RETPOLINE_S_SUPPORT | \
    + MITI_ENUM_BHB_CLEAR_SEQ_S_SUPPORT)
    +#define MITI_CTRL_VALID_BITS (MITI_CTRL_RETPOLINE_S_USED | \
    + MITI_CTRL_BHB_CLEAR_SEQ_S_USED)

    static int vmx_get_msr_feature(struct kvm_msr_entry *msr)
    {
    @@ -2496,6 +2498,11 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
    arch_msr & ARCH_CAP_RRSBA)
    spec_ctrl_mask |= SPEC_CTRL_RRSBA_DIS_S;

    + if (data & MITI_CTRL_BHB_CLEAR_SEQ_S_USED &&
    + kvm_cpu_cap_has(X86_FEATURE_BHI_CTRL) &&
    + !(arch_msr & ARCH_CAP_BHI_NO))
    + spec_ctrl_mask |= SPEC_CTRL_BHI_DIS_S;
    +
    /*
    * Intercept IA32_SPEC_CTRL to disallow guest from changing
    * certain bits.
    --
    2.40.0
    \
     
     \ /
      Last update: 2023-04-14 08:29    [W:4.897 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site