Bit 58 in the VMX_BASIC MSR is used to enumerate VMX nested-exception support, thus it's no longer a reserved bit, and can be read as 1. Signed-off-by: Xin Li --- x86/vmx.c | 3 ++- x86/vmx.h | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/x86/vmx.c b/x86/vmx.c index 99fc99e5..df212e19 100644 --- a/x86/vmx.c +++ b/x86/vmx.c @@ -1573,7 +1573,8 @@ static void test_vmx_caps(void) report((basic_msr.revision & (1ul << 31)) == 0 && basic_msr.size > 0 && basic_msr.size <= 4096 && (basic_msr.type == 0 || basic_msr.type == 6) && - basic_msr.reserved1 == 0 && basic_msr.reserved2 == 0, + basic_msr.reserved1 == 0 && basic_msr.reserved2 == 0 && + basic_msr.reserved3 == 0, "MSR_IA32_VMX_BASIC"); val = rdmsr(MSR_IA32_VMX_MISC); diff --git a/x86/vmx.h b/x86/vmx.h index f27ecd72..d9b500f6 100644 --- a/x86/vmx.h +++ b/x86/vmx.h @@ -114,14 +114,16 @@ union vmx_basic_msr { struct { u32 revision; u32 size:13, - reserved1: 3, + reserved1:3, width:1, dual:1, type:4, insouts:1, ctrl:1, no_hw_errcode_cc:1, - reserved2:7; + reserved2:1, + nested_exception:1, + reserved3:5; }; }; -- 2.54.0