@@ -943,6 +943,7 @@ static int setup_ept(bool enable_ad)
{
int support_2m;
unsigned long end_of_memory;
+ u32 ctrl_cpu[2];
if (!(ept_vpid.val & EPT_CAP_UC) &&
!(ept_vpid.val & EPT_CAP_WB)) {
@@ -958,6 +959,14 @@ static int setup_ept(bool enable_ad)
printf("\tPWL4 is not supported\n");
return 1;
}
+ ctrl_cpu[0] = vmcs_read(CPU_EXEC_CTRL0);
+ ctrl_cpu[1] = vmcs_read(CPU_EXEC_CTRL1);
+ ctrl_cpu[0] = (ctrl_cpu[0] | CPU_SECONDARY)
+ & ctrl_cpu_rev[0].clr;
+ ctrl_cpu[1] = (ctrl_cpu[1] | CPU_EPT)
+ & ctrl_cpu_rev[1].clr;
+ vmcs_write(CPU_EXEC_CTRL0, ctrl_cpu[0]);
+ vmcs_write(CPU_EXEC_CTRL1, ctrl_cpu[1]);
eptp |= (3 << EPTP_PG_WALK_LEN_SHIFT);
pml4 = alloc_page();
memset(pml4, 0, PAGE_SIZE);
@@ -982,22 +991,12 @@ static int apic_version;
static int ept_init_common(bool have_ad)
{
- u32 ctrl_cpu[2];
-
if (!(ctrl_cpu_rev[0].clr & CPU_SECONDARY) ||
!(ctrl_cpu_rev[1].clr & CPU_EPT)) {
printf("\tEPT is not supported");
return VMX_TEST_EXIT;
}
- ctrl_cpu[0] = vmcs_read(CPU_EXEC_CTRL0);
- ctrl_cpu[1] = vmcs_read(CPU_EXEC_CTRL1);
- ctrl_cpu[0] = (ctrl_cpu[0] | CPU_SECONDARY)
- & ctrl_cpu_rev[0].clr;
- ctrl_cpu[1] = (ctrl_cpu[1] | CPU_EPT)
- & ctrl_cpu_rev[1].clr;
- vmcs_write(CPU_EXEC_CTRL0, ctrl_cpu[0]);
- vmcs_write(CPU_EXEC_CTRL1, ctrl_cpu[1]);
if (setup_ept(have_ad))
return VMX_TEST_EXIT;
data_page1 = alloc_page();
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- x86/vmx_tests.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-)