mmu: refine functions for invept

- rename mmu_invept to invept
- panic if HW doesn't support invept

Signed-off-by: Jason Chen CJ <jason.cj.chen@intel.com>
This commit is contained in:
Jason Chen CJ 2018-04-08 11:50:47 +08:00 committed by Jack Ren
parent a68850e00f
commit 878b5a0466
4 changed files with 8 additions and 5 deletions

View File

@ -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);

View File

@ -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};

View File

@ -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);
}

View File

@ -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);