summaryrefslogtreecommitdiffstats
path: root/sys/amd64/vmm/intel/vmcs.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/amd64/vmm/intel/vmcs.c')
-rw-r--r--sys/amd64/vmm/intel/vmcs.c44
1 files changed, 4 insertions, 40 deletions
diff --git a/sys/amd64/vmm/intel/vmcs.c b/sys/amd64/vmm/intel/vmcs.c
index 980eac1..1ddefe0 100644
--- a/sys/amd64/vmm/intel/vmcs.c
+++ b/sys/amd64/vmm/intel/vmcs.c
@@ -315,11 +315,7 @@ done:
}
int
-vmcs_set_defaults(struct vmcs *vmcs,
- u_long host_rip, u_long host_rsp, uint64_t eptp,
- uint32_t pinbased_ctls, uint32_t procbased_ctls,
- uint32_t procbased_ctls2, uint32_t exit_ctls,
- uint32_t entry_ctls, u_long msr_bitmap, uint16_t vpid)
+vmcs_init(struct vmcs *vmcs)
{
int error, codesel, datasel, tsssel;
u_long cr0, cr4, efer;
@@ -335,22 +331,6 @@ vmcs_set_defaults(struct vmcs *vmcs,
*/
VMPTRLD(vmcs);
- /*
- * Load the VMX controls
- */
- if ((error = vmwrite(VMCS_PIN_BASED_CTLS, pinbased_ctls)) != 0)
- goto done;
- if ((error = vmwrite(VMCS_PRI_PROC_BASED_CTLS, procbased_ctls)) != 0)
- goto done;
- if ((error = vmwrite(VMCS_SEC_PROC_BASED_CTLS, procbased_ctls2)) != 0)
- goto done;
- if ((error = vmwrite(VMCS_EXIT_CTLS, exit_ctls)) != 0)
- goto done;
- if ((error = vmwrite(VMCS_ENTRY_CTLS, entry_ctls)) != 0)
- goto done;
-
- /* Guest state */
-
/* Initialize guest IA32_PAT MSR with the default value */
pat = PAT_VALUE(0, PAT_WRITE_BACK) |
PAT_VALUE(1, PAT_WRITE_THROUGH) |
@@ -422,23 +402,7 @@ vmcs_set_defaults(struct vmcs *vmcs,
goto done;
/* instruction pointer */
- if ((error = vmwrite(VMCS_HOST_RIP, host_rip)) != 0)
- goto done;
-
- /* stack pointer */
- if ((error = vmwrite(VMCS_HOST_RSP, host_rsp)) != 0)
- goto done;
-
- /* eptp */
- if ((error = vmwrite(VMCS_EPTP, eptp)) != 0)
- goto done;
-
- /* vpid */
- if ((error = vmwrite(VMCS_VPID, vpid)) != 0)
- goto done;
-
- /* msr bitmap */
- if ((error = vmwrite(VMCS_MSR_BITMAP, msr_bitmap)) != 0)
+ if ((error = vmwrite(VMCS_HOST_RIP, (u_long)vmx_exit_guest)) != 0)
goto done;
/* exception bitmap */
@@ -509,7 +473,7 @@ DB_SHOW_COMMAND(vmcs, db_show_vmcs)
switch (exit & 0x8000ffff) {
case EXIT_REASON_EXCEPTION:
case EXIT_REASON_EXT_INTR:
- val = vmcs_read(VMCS_EXIT_INTERRUPTION_INFO);
+ val = vmcs_read(VMCS_EXIT_INTR_INFO);
db_printf("Interrupt Type: ");
switch (val >> 8 & 0x7) {
case 0:
@@ -531,7 +495,7 @@ DB_SHOW_COMMAND(vmcs, db_show_vmcs)
db_printf(" Vector: %lu", val & 0xff);
if (val & 0x800)
db_printf(" Error Code: %lx",
- vmcs_read(VMCS_EXIT_INTERRUPTION_ERROR));
+ vmcs_read(VMCS_EXIT_INTR_ERRCODE));
db_printf("\n");
break;
case EXIT_REASON_EPT_FAULT:
OpenPOWER on IntegriCloud