Add a helper to check for basic INVVPID, it will gain more users in the future. Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx> --- x86/vmx.h | 5 +++++ x86/vmx_tests.c | 5 +---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/x86/vmx.h b/x86/vmx.h index 289f175..9f91602 100644 --- a/x86/vmx.h +++ b/x86/vmx.h @@ -823,6 +823,11 @@ static inline bool is_invept_type_supported(u64 type) return ept_vpid.val & (EPT_CAP_INVEPT_SINGLE << (type - INVEPT_SINGLE)); } +static inline bool is_invvpid_supported(void) +{ + return ept_vpid.val & VPID_CAP_INVVPID; +} + static inline bool is_invvpid_type_supported(unsigned long type) { if (type < INVVPID_ADDR || type > INVVPID_CONTEXT_LOCAL) diff --git a/x86/vmx_tests.c b/x86/vmx_tests.c index 950f527..66f374a 100644 --- a/x86/vmx_tests.c +++ b/x86/vmx_tests.c @@ -3300,7 +3300,6 @@ static void invvpid_test_not_in_vmx_operation(void) */ static void invvpid_test(void) { - u64 msr; int i; unsigned types = 0; unsigned type; @@ -3309,9 +3308,7 @@ static void invvpid_test(void) !(ctrl_cpu_rev[1].clr & CPU_VPID)) test_skip("VPID not supported"); - msr = rdmsr(MSR_IA32_VMX_EPT_VPID_CAP); - - if (!(msr & VPID_CAP_INVVPID)) + if (!is_invvpid_supported()) test_skip("INVVPID not supported.\n"); if (is_invvpid_type_supported(INVVPID_ADDR)) -- 2.34.0.rc2.393.gf8c9666880-goog