diff --git a/include/arch/x86/arch/machine.h b/include/arch/x86/arch/machine.h index bea4a04a3..f0deb3cc4 100644 --- a/include/arch/x86/arch/machine.h +++ b/include/arch/x86/arch/machine.h @@ -38,6 +38,7 @@ #define IA32_VMX_PROCBASED_CTLS2_MSR 0x48B #define IA32_VMX_EXIT_CTLS_MSR 0x483 #define IA32_VMX_ENTRY_CTLS_MSR 0x484 +#define IA32_VMX_MISC_MSR 0x485 #define IA32_VMX_TRUE_PINBASED_CTLS_MSR 0x48D #define IA32_VMX_TRUE_PROCBASED_CTLS_MSR 0x48E #define IA32_VMX_TRUE_EXIT_CTLS_MSR 0x48F diff --git a/src/arch/x86/object/vcpu.c b/src/arch/x86/object/vcpu.c index e6100f4d8..cca0f13bb 100644 --- a/src/arch/x86/object/vcpu.c +++ b/src/arch/x86/object/vcpu.c @@ -666,6 +666,9 @@ static exception_t invokeReadMSR(vcpu_t *vcpu, word_t field, word_t *buffer) case IA32_FMASK_MSR: value = vcpu->syscall_registers[VCPU_SYSCALL_MASK]; break; + case IA32_VMX_MISC_MSR: + value = x86_rdmsr(field); + break; } setMR(thread, buffer, 0, value); @@ -688,6 +691,7 @@ static exception_t decodeVCPUReadMSR(cap_t cap, word_t length, word_t *buffer) case IA32_STAR_MSR: case IA32_CSTAR_MSR: case IA32_FMASK_MSR: + case IA32_VMX_MISC_MSR: break; default: userError("VCPU ReadMSR: Invalid field %lx.", (long)field);