diff --git a/arch/x86/kvm/vmx/vmx_pt.c b/arch/x86/kvm/vmx/vmx_pt.c index b21994cdb..22bbf4fd7 100644 --- a/arch/x86/kvm/vmx/vmx_pt.c +++ b/arch/x86/kvm/vmx/vmx_pt.c @@ -72,6 +72,7 @@ #define TSC_EN BIT_ULL(10) #define DIS_RETC BIT_ULL(11) #define BRANCH_EN BIT_ULL(13) +#define EVENT_EN BIT_ULL(31) #define ADDR0_EN BIT_ULL(32) #define ADDR1_EN BIT_ULL(36) @@ -864,7 +865,7 @@ static inline void vmx_pt_setup_msrs(struct vcpu_vmx_pt *vmx_pt){ int i; //vmx_pt->ia32_rtit_ctrl_msr = 0ULL; - WRITE_ONCE(vmx_pt->ia32_rtit_ctrl_msr, (!TRACE_EN) | CTL_OS | CTL_USER | TO_PA | BRANCH_EN | DIS_RETC | PSB_MASK | CYC_EN | TSC_EN); + WRITE_ONCE(vmx_pt->ia32_rtit_ctrl_msr, (!TRACE_EN) | CTL_OS | CTL_USER | TO_PA | EVENT_EN | BRANCH_EN | DIS_RETC | PSB_MASK | CYC_EN | TSC_EN); //vmx_pt->ia32_rtit_ctrl_msr = (!TRACE_EN) | CTL_OS | CTL_USER | TO_PA | BRANCH_EN | DIS_RETC | PSB_MASK; for (i = 0; i < 4; i++){ @@ -1115,6 +1116,11 @@ static int vmx_pt_check_support(void){ return -EIO; } + if (!(c & BIT(7))) { + PRINT_ERROR("No event tracing support!"); + return -EIO; + } + if ((c & BIT(31))){ PRINT_ERROR("IP Payloads are LIP!"); return -EIO;