X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/ecc0ceb4089d506a0b8d16686a95817b331af9cb..7e41aa883dd258f888d0470250eead40a53ef1f5:/osfmk/x86_64/pmap.c diff --git a/osfmk/x86_64/pmap.c b/osfmk/x86_64/pmap.c index 209e96335..a73b9e26c 100644 --- a/osfmk/x86_64/pmap.c +++ b/osfmk/x86_64/pmap.c @@ -255,6 +255,7 @@ extern boolean_t doconstro_override; extern long __stack_chk_guard[]; +static uint64_t pmap_eptp_flags = 0; boolean_t pmap_ept_support_ad = FALSE; @@ -800,8 +801,7 @@ pmap_init(void) #if CONFIG_VMX pmap_ept_support_ad = vmx_hv_support() && (VMX_CAP(MSR_IA32_VMX_EPT_VPID_CAP, MSR_IA32_VMX_EPT_VPID_CAP_AD_SHIFT, 1) ? TRUE : FALSE); -#else - pmap_ept_support_ad = FALSE; + pmap_eptp_flags = HV_VMX_EPTP_MEMORY_TYPE_WB | HV_VMX_EPTP_WALK_LENGTH(4) | (pmap_ept_support_ad ? HV_VMX_EPTP_ENABLE_AD_FLAGS : 0); #endif /* CONFIG_VMX */ } @@ -1313,7 +1313,7 @@ pmap_create_options( memset((char *)p->pm_pml4, 0, PAGE_SIZE); if (flags & PMAP_CREATE_EPT) { - p->pm_eptp = (pmap_paddr_t)kvtophys((vm_offset_t)p->pm_pml4); + p->pm_eptp = (pmap_paddr_t)kvtophys((vm_offset_t)p->pm_pml4) | pmap_eptp_flags; p->pm_cr3 = 0; } else { p->pm_eptp = 0;