Changeset 52411 in vbox
- Timestamp:
- Aug 19, 2014 11:00:46 AM (10 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r52281 r52411 2351 2351 AssertRCReturn(rc, rc); 2352 2352 2353 /* Update VCPU with the currently set pin-based VM-execution controls. */2354 2353 pVCpu->hm.s.vmx.u32PinCtls = val; 2355 2354 return rc; … … 2475 2474 AssertRCReturn(rc, rc); 2476 2475 2477 /* Update VCPU with the currently set processor-based VM-execution controls. */2478 2476 pVCpu->hm.s.vmx.u32ProcCtls = val; 2479 2477 … … 2534 2532 AssertRCReturn(rc, rc); 2535 2533 2536 /* Update VCPU with the currently set secondary processor-based VM-execution controls. */2537 2534 pVCpu->hm.s.vmx.u32ProcCtls2 = val; 2538 2535 } … … 2719 2716 /* 2720 2717 * Without UnrestrictedGuest, pRealModeTSS and pNonPagingModeEPTPageTable *must* always be allocated. 2721 * We no longer support the highly unlikely case of UnrestrictedGuest without pRealModeTSS. See hmR3InitFinalizeR0 ().2718 * We no longer support the highly unlikely case of UnrestrictedGuest without pRealModeTSS. See hmR3InitFinalizeR0Intel(). 2722 2719 */ 2723 /* -XXX- change hmR3InitFinalizeR0Intel() to fail if pRealModeTSS alloc fails. */2724 2720 if ( !pVM->hm.s.vmx.fUnrestrictedGuest 2725 2721 && ( !pVM->hm.s.vmx.pNonPagingModeEPTPageTable … … 3336 3332 AssertRCReturn(rc, rc); 3337 3333 3338 /* Update VCPU with the currently set VM-exit controls. */3339 3334 pVCpu->hm.s.vmx.u32EntryCtls = val; 3340 3335 HMCPU_CF_CLEAR(pVCpu, HM_CHANGED_VMX_ENTRY_CTLS); … … 3423 3418 AssertRCReturn(rc, rc); 3424 3419 3425 /* Update VCPU with the currently set VM-exit controls. */3426 3420 pVCpu->hm.s.vmx.u32ExitCtls = val; 3427 3421 HMCPU_CF_CLEAR(pVCpu, HM_CHANGED_VMX_EXIT_CTLS); … … 7985 7979 Log4Func(("vcpu[%d]\n", pVCpu->idCpu)); 7986 7980 7987 /* Clear interrupt-window exiting control. */7988 7981 if (pVCpu->hm.s.vmx.u32ProcCtls & VMX_VMCS_CTRL_PROC_EXEC_INT_WINDOW_EXIT) 7989 7982 { … … 7992 7985 } 7993 7986 7994 /* Clear NMI-window exiting control. */7995 7987 if (pVCpu->hm.s.vmx.u32ProcCtls & VMX_VMCS_CTRL_PROC_EXEC_NMI_WINDOW_EXIT) 7996 7988 { … … 8009 8001 #endif 8010 8002 8011 /* Clear the entry-interruption field (including the valid bit). */8012 8003 rc = VMXWriteVmcs32(VMX_VMCS32_CTRL_ENTRY_INTERRUPTION_INFO, 0); 8013 8004 AssertRC(rc); 8014 8005 8015 /* Clear the pending debug exception field. */8016 8006 rc = VMXWriteVmcs32(VMX_VMCS_GUEST_PENDING_DEBUG_EXCEPTIONS, 0); 8017 8007 AssertRC(rc); … … 8233 8223 HMVMX_ASSERT_PREEMPT_SAFE(); 8234 8224 8235 #ifdef LOG_ENABLED 8236 /** @todo r=ramshankar: I'm not able to use VMMRZCallRing3Disable() here, 8237 * probably not initialized yet? Anyway this will do for now. 8238 * 8239 * Update: Should be possible once VMXR0LoadGuestState() is removed as an 8240 * interface and disable ring-3 calls when thread-context hooks are not 8241 * available. */ 8242 bool fCallerDisabledLogFlush = VMMR0IsLogFlushDisabled(pVCpu); 8243 VMMR0LogFlushDisable(pVCpu); 8244 #endif 8225 VMMRZCallRing3Disable(pVCpu); 8226 Assert(VMMR0IsLogFlushDisabled(pVCpu)); 8245 8227 8246 8228 LogFlowFunc(("pVM=%p pVCpu=%p\n", pVM, pVCpu)); … … 8300 8282 HMCPU_CF_CLEAR(pVCpu, HM_CHANGED_GUEST_CR2); 8301 8283 8302 #ifdef LOG_ENABLED 8303 /* Only reenable log-flushing if the caller has it enabled. */ 8304 if (!fCallerDisabledLogFlush) 8305 VMMR0LogFlushEnable(pVCpu); 8306 #endif 8284 VMMRZCallRing3Enable(pVCpu); 8307 8285 8308 8286 STAM_PROFILE_ADV_STOP(&pVCpu->hm.s.StatLoadGuestState, x); -
trunk/src/VBox/VMM/VMMRZ/VMMRZ.cpp
r51720 r52411 134 134 135 135 Assert(pVCpu->vmm.s.cCallRing3Disabled < 16); 136 if (ASMAtomic IncU32(&pVCpu->vmm.s.cCallRing3Disabled) == 1) /** @todo replace with unordered variant (ASMAtomicUoIncU32). */137 { /** @todo See @bugref{6208} comment #36 for impl. diff. */136 if (ASMAtomicUoIncU32(&pVCpu->vmm.s.cCallRing3Disabled) == 1) 137 { 138 138 /** @todo it might make more sense to just disable logging here, then we 139 139 * won't flush away important bits... but that goes both ways really. */ … … 155 155 156 156 /** 157 * Counters VMMRZCallRing3Disable and re-enables host calls.157 * Counters VMMRZCallRing3Disable() and re-enables host calls. 158 158 * 159 159 * @param pVCpu The CPU struct for the calling EMT. … … 168 168 169 169 Assert(pVCpu->vmm.s.cCallRing3Disabled > 0); 170 if (ASMAtomic DecU32(&pVCpu->vmm.s.cCallRing3Disabled) == 0) /** @todo replace with unordered variant (ASMAtomicUoDecU32). */170 if (ASMAtomicUoDecU32(&pVCpu->vmm.s.cCallRing3Disabled) == 0) 171 171 { 172 172 #ifdef IN_RC
Note:
See TracChangeset
for help on using the changeset viewer.