From a581f50600d003cb517d48959868d9941e2455cf Mon Sep 17 00:00:00 2001 From: Binbin Wu Date: Tue, 30 Apr 2019 10:27:11 +0800 Subject: [PATCH] hv: vmsr: enable msr ia32_misc_enable emulation Add MSR_IA32_MISC_ENABLE to emulated_guest_msrs to enable the emulation. Init MSR_IA32_MISC_ENABLE for guest. Tracked-On: #2834 Signed-off-by: Binbin Wu Acked-by: Eddie Dong --- hypervisor/arch/x86/guest/vmcs.c | 3 +++ hypervisor/arch/x86/guest/vmsr.c | 1 + hypervisor/include/arch/x86/guest/vcpu.h | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/hypervisor/arch/x86/guest/vmcs.c b/hypervisor/arch/x86/guest/vmcs.c index a174ac187..8a1467e96 100644 --- a/hypervisor/arch/x86/guest/vmcs.c +++ b/hypervisor/arch/x86/guest/vmcs.c @@ -92,6 +92,9 @@ static void init_guest_vmx(struct acrn_vcpu *vcpu, uint64_t cr0, uint64_t cr3, load_segment(ectx->tr, VMX_GUEST_TR); load_segment(ectx->ldtr, VMX_GUEST_LDTR); + /* init guest ia32_misc_enable value for guest read */ + vcpu_set_guest_msr(vcpu, MSR_IA32_MISC_ENABLE, msr_read(MSR_IA32_MISC_ENABLE)); + /* fixed values */ exec_vmwrite32(VMX_GUEST_IA32_SYSENTER_CS, 0U); exec_vmwrite(VMX_GUEST_IA32_SYSENTER_ESP, 0UL); diff --git a/hypervisor/arch/x86/guest/vmsr.c b/hypervisor/arch/x86/guest/vmsr.c index bdd34118c..771754b24 100644 --- a/hypervisor/arch/x86/guest/vmsr.c +++ b/hypervisor/arch/x86/guest/vmsr.c @@ -48,6 +48,7 @@ static const uint32_t emulated_guest_msrs[NUM_GUEST_MSRS] = { MSR_IA32_MCG_CAP, MSR_IA32_MCG_STATUS, + MSR_IA32_MISC_ENABLE, }; #define NUM_MTRR_MSRS 13U diff --git a/hypervisor/include/arch/x86/guest/vcpu.h b/hypervisor/include/arch/x86/guest/vcpu.h index c55b6c02b..fb6ff5078 100644 --- a/hypervisor/include/arch/x86/guest/vcpu.h +++ b/hypervisor/include/arch/x86/guest/vcpu.h @@ -214,7 +214,7 @@ struct ext_context { #define SECURE_WORLD 1 #define NUM_WORLD_MSRS 2U -#define NUM_COMMON_MSRS 9U +#define NUM_COMMON_MSRS 10U #define NUM_GUEST_MSRS (NUM_WORLD_MSRS + NUM_COMMON_MSRS) #define EOI_EXIT_BITMAP_SIZE 256U