diff --git a/hypervisor/arch/x86/interrupt.c b/hypervisor/arch/x86/interrupt.c index 2a6c6bb89..989115a4b 100644 --- a/hypervisor/arch/x86/interrupt.c +++ b/hypervisor/arch/x86/interrupt.c @@ -289,7 +289,7 @@ int acrn_do_intr_process(struct vcpu *vcpu) uint64_t *pending_intr_bits = &vcpu->arch_vcpu.pending_intr; if (bitmap_test_and_clear(ACRN_REQUEST_TLB_FLUSH, pending_intr_bits)) - mmu_invept(vcpu); + invept(vcpu); if (bitmap_test_and_clear(ACRN_REQUEST_TMR_UPDATE, pending_intr_bits)) vioapic_update_tmr(vcpu); diff --git a/hypervisor/arch/x86/mmu.c b/hypervisor/arch/x86/mmu.c index 431767765..d900c9db3 100644 --- a/hypervisor/arch/x86/mmu.c +++ b/hypervisor/arch/x86/mmu.c @@ -118,6 +118,9 @@ static void check_mmu_capability(void) cpuid(CPUID_EXTEND_FUNCTION_1, &eax, &ebx, &ecx, &edx); mm_caps.mmu_1gb_page_supported = (edx & CPUID_EDX_PAGE1GB) ? (true) : (false); + + if (!mm_caps.invept_supported) + panic("invept must be supported"); } static inline bool check_invept_single_support(void) @@ -132,7 +135,7 @@ static inline bool check_invept_global_support(void) mm_caps.invept_global_context_supported; } -void mmu_invept(struct vcpu *vcpu) +void invept(struct vcpu *vcpu) { struct invept_desc desc = {0}; diff --git a/hypervisor/arch/x86/trusty.c b/hypervisor/arch/x86/trusty.c index f86a70774..f65239774 100644 --- a/hypervisor/arch/x86/trusty.c +++ b/hypervisor/arch/x86/trusty.c @@ -174,8 +174,8 @@ static void create_secure_world_ept(struct vm *vm, uint64_t gpa_orig, vm->sworld_control.sworld_memory.base_hpa = hpa; vm->sworld_control.sworld_memory.length = size; - mmu_invept(vm->current_vcpu); - mmu_invept(vm0->current_vcpu); + invept(vm->current_vcpu); + invept(vm0->current_vcpu); } diff --git a/hypervisor/include/arch/x86/mmu.h b/hypervisor/include/arch/x86/mmu.h index f782e6e54..2ed4a2807 100644 --- a/hypervisor/include/arch/x86/mmu.h +++ b/hypervisor/include/arch/x86/mmu.h @@ -324,7 +324,7 @@ int unmap_mem(struct map_params *map_params, void *paddr, void *vaddr, uint64_t size, uint32_t flags); int modify_mem(struct map_params *map_params, void *paddr, void *vaddr, uint64_t size, uint32_t flags); -void mmu_invept(struct vcpu *vcpu); +void invept(struct vcpu *vcpu); bool check_continuous_hpa(struct vm *vm, uint64_t gpa, uint64_t size); int obtain_last_page_table_entry(struct map_params *map_params, struct entry_params *entry, void *addr, bool direct);