Hi IA32_EPT_VPID_CAP_XO_TRANSLATIONS is specified as 0x0 and not (1ULL << 0) ie 0 and not bit 0 as on.
Please see the attach diff to correct this and rename IA32_EPT_VPID_CAP_XO_TRANSLATIONS to IA32_EPT_VPID_CAP_XO to reduce wordyness. Cheers Adam diff 0e7183d43c8ed36e5d169be05df61472565710eb /home/adams/devl/openbsd/src blob - 72104b78c733f4ce8ee91910b0b4a6f0f51c15aa file + sys/arch/amd64/amd64/vmm.c --- sys/arch/amd64/amd64/vmm.c +++ sys/arch/amd64/amd64/vmm.c @@ -916,7 +916,7 @@ vm_mprotect_ept(struct vm_mprotect_ept_params *vmep) if (vmm_softc->mode == VMM_MODE_EPT) { msr = rdmsr(IA32_VMX_EPT_VPID_CAP); if (prot == PROT_EXEC && - (msr & IA32_EPT_VPID_CAP_XO_TRANSLATIONS) == 0) { + (msr & IA32_EPT_VPID_CAP_XO) == 0) { DPRINTF("%s: Execute only permissions unsupported," " adding read permission\n", __func__); blob - e0232887ff69a882c00e3b4059baa2b12f047c2d file + sys/arch/amd64/include/specialreg.h --- sys/arch/amd64/include/specialreg.h +++ sys/arch/amd64/include/specialreg.h @@ -957,7 +957,7 @@ #define IA32_VMX_TRUE_ENTRY_CTLS 0x490 #define IA32_VMX_VMFUNC 0x491 -#define IA32_EPT_VPID_CAP_XO_TRANSLATIONS 0x0 +#define IA32_EPT_VPID_CAP_XO (1ULL << 0) #define IA32_EPT_VPID_CAP_PAGE_WALK_4 (1ULL << 6) #define IA32_EPT_VPID_CAP_WB (1ULL << 14) #define IA32_EPT_VPID_CAP_AD_BITS (1ULL << 21)