Changeset 76097 in vbox for trunk/src/VBox/VMM/VMMR0
- Timestamp:
- Dec 10, 2018 5:53:32 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r76042 r76097 2292 2292 2293 2293 fVal |= VMX_PIN_CTLS_EXT_INT_EXIT /* External interrupts cause a VM-exit. */ 2294 |VMX_PIN_CTLS_NMI_EXIT; /* Non-maskable interrupts (NMIs) cause a VM-exit. */2294 | VMX_PIN_CTLS_NMI_EXIT; /* Non-maskable interrupts (NMIs) cause a VM-exit. */ 2295 2295 2296 2296 if (pVM->hm.s.vmx.Msrs.PinCtls.n.allowed1 & VMX_PIN_CTLS_VIRT_NMI) 2297 fVal |= VMX_PIN_CTLS_VIRT_NMI; 2297 fVal |= VMX_PIN_CTLS_VIRT_NMI; /* Use virtual NMIs and virtual-NMI blocking features. */ 2298 2298 2299 2299 /* Enable the VMX preemption timer. */ … … 2444 2444 2445 2445 fVal |= VMX_PROC_CTLS_HLT_EXIT /* HLT causes a VM-exit. */ 2446 |VMX_PROC_CTLS_USE_TSC_OFFSETTING /* Use TSC-offsetting. */2447 |VMX_PROC_CTLS_MOV_DR_EXIT /* MOV DRx causes a VM-exit. */2448 |VMX_PROC_CTLS_UNCOND_IO_EXIT /* All IO instructions cause a VM-exit. */2449 |VMX_PROC_CTLS_RDPMC_EXIT /* RDPMC causes a VM-exit. */2450 |VMX_PROC_CTLS_MONITOR_EXIT /* MONITOR causes a VM-exit. */2451 |VMX_PROC_CTLS_MWAIT_EXIT; /* MWAIT causes a VM-exit. */2446 | VMX_PROC_CTLS_USE_TSC_OFFSETTING /* Use TSC-offsetting. */ 2447 | VMX_PROC_CTLS_MOV_DR_EXIT /* MOV DRx causes a VM-exit. */ 2448 | VMX_PROC_CTLS_UNCOND_IO_EXIT /* All IO instructions cause a VM-exit. */ 2449 | VMX_PROC_CTLS_RDPMC_EXIT /* RDPMC causes a VM-exit. */ 2450 | VMX_PROC_CTLS_MONITOR_EXIT /* MONITOR causes a VM-exit. */ 2451 | VMX_PROC_CTLS_MWAIT_EXIT; /* MWAIT causes a VM-exit. */ 2452 2452 2453 2453 /* We toggle VMX_PROC_CTLS_MOV_DR_EXIT later, check if it's not -always- needed to be set or clear. */ … … 2465 2465 Assert(!pVM->hm.s.vmx.fUnrestrictedGuest); /* Paranoia. */ 2466 2466 fVal |= VMX_PROC_CTLS_INVLPG_EXIT 2467 |VMX_PROC_CTLS_CR3_LOAD_EXIT2468 |VMX_PROC_CTLS_CR3_STORE_EXIT;2467 | VMX_PROC_CTLS_CR3_LOAD_EXIT 2468 | VMX_PROC_CTLS_CR3_STORE_EXIT; 2469 2469 } 2470 2470 … … 2493 2493 { 2494 2494 fVal |= VMX_PROC_CTLS_CR8_STORE_EXIT /* CR8 reads cause a VM-exit. */ 2495 |VMX_PROC_CTLS_CR8_LOAD_EXIT; /* CR8 writes cause a VM-exit. */2495 | VMX_PROC_CTLS_CR8_LOAD_EXIT; /* CR8 writes cause a VM-exit. */ 2496 2496 } 2497 2497 } … … 3682 3682 /* The guest doesn't have paging enabled, make CR3 access cause a VM-exit to update our shadow. */ 3683 3683 uProcCtls |= VMX_PROC_CTLS_CR3_LOAD_EXIT 3684 |VMX_PROC_CTLS_CR3_STORE_EXIT;3684 | VMX_PROC_CTLS_CR3_STORE_EXIT; 3685 3685 } 3686 3686 … … 3730 3730 #ifdef HMVMX_ALWAYS_TRAP_ALL_XCPTS 3731 3731 uXcptBitmap |= 0 3732 |RT_BIT(X86_XCPT_BP)3733 |RT_BIT(X86_XCPT_DE)3734 |RT_BIT(X86_XCPT_NM)3735 |RT_BIT(X86_XCPT_TS)3736 |RT_BIT(X86_XCPT_UD)3737 |RT_BIT(X86_XCPT_NP)3738 |RT_BIT(X86_XCPT_SS)3739 |RT_BIT(X86_XCPT_GP)3740 |RT_BIT(X86_XCPT_PF)3741 |RT_BIT(X86_XCPT_MF)3742 3732 | RT_BIT(X86_XCPT_BP) 3733 | RT_BIT(X86_XCPT_DE) 3734 | RT_BIT(X86_XCPT_NM) 3735 | RT_BIT(X86_XCPT_TS) 3736 | RT_BIT(X86_XCPT_UD) 3737 | RT_BIT(X86_XCPT_NP) 3738 | RT_BIT(X86_XCPT_SS) 3739 | RT_BIT(X86_XCPT_GP) 3740 | RT_BIT(X86_XCPT_PF) 3741 | RT_BIT(X86_XCPT_MF) 3742 ; 3743 3743 #elif defined(HMVMX_ALWAYS_TRAP_PF) 3744 3744 uXcptBitmap |= RT_BIT(X86_XCPT_PF); … … 3852 3852 /* VMX_EPT_MEMTYPE_WB support is already checked in hmR0VmxSetupTaggedTlb(). */ 3853 3853 pVCpu->hm.s.vmx.HCPhysEPTP |= VMX_EPT_MEMTYPE_WB 3854 |(VMX_EPT_PAGE_WALK_LENGTH_DEFAULT << VMX_EPT_PAGE_WALK_LENGTH_SHIFT);3854 | (VMX_EPT_PAGE_WALK_LENGTH_DEFAULT << VMX_EPT_PAGE_WALK_LENGTH_SHIFT); 3855 3855 3856 3856 /* Validate. See Intel spec. 26.2.1 "Checks on VMX Controls" */ … … 6522 6522 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_INHIBIT_INTERRUPTS)) 6523 6523 { 6524 rc =hmR0VmxImportGuestRip(pVCpu);6524 rc = hmR0VmxImportGuestRip(pVCpu); 6525 6525 rc |= hmR0VmxImportGuestRFlags(pVCpu); 6526 AssertRCReturn(rc, rc); 6526 6527 VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_INHIBIT_INTERRUPTS); 6527 6528 } … … 6532 6533 else 6533 6534 { 6534 rc =hmR0VmxImportGuestRip(pVCpu);6535 rc = hmR0VmxImportGuestRip(pVCpu); 6535 6536 rc |= hmR0VmxImportGuestRFlags(pVCpu); 6537 AssertRCReturn(rc, rc); 6536 6538 6537 6539 if (u32Val & ( VMX_VMCS_GUEST_INT_STATE_BLOCK_MOVSS
Note:
See TracChangeset
for help on using the changeset viewer.