Changeset 15291 in vbox
- Timestamp:
- Dec 11, 2008 8:22:18 AM (16 years ago)
- Location:
- trunk/src/VBox/VMM/VMMR0
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r15289 r15291 1861 1861 1862 1862 #ifdef VBOX_STRICT 1863 1864 # ifdef VMX_USE_CACHED_VMCS_ACCESSES 1865 { 1866 PVMCSCACHE pCache = &pVCpu->hwaccm.s.vmx.VMCSCache; 1867 /* Flush the queued writes first. */ 1868 for (unsigned i=0;i<pCache->Write.cValidEntries;i++) 1869 { 1870 VMXWriteVMCS(pCache->Write.aField[i], pCache->Write.aFieldVal[i]); 1871 } 1872 pCache->Write.cValidEntries = 0; 1873 } 1874 # endif 1863 VMXFlushWriteCache(pVCpu); 1875 1864 1876 1865 rc = VMXReadVMCS(VMX_VMCS_CTRL_PIN_EXEC_CONTROLS, &val); … … 3226 3215 Assert(pVCpu->hwaccm.s.vmx.proc_ctls & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT); 3227 3216 3217 /* Flush all pending VMCS writes. */ 3218 VMXFlushWriteCache(pVCpu); 3219 3228 3220 /* Clear VM Control Structure. Marking it inactive, clearing implementation specific data and writing back VMCS data to memory. */ 3229 3221 int rc = VMXClearVMCS(pVCpu->hwaccm.s.vmx.pVMCSPhys); … … 3593 3585 3594 3586 3587 #ifdef VMX_USE_CACHED_VMCS_ACCESSES 3588 /** 3589 * Flush the write cache in order not to overflow it with frequent ring switches. 3590 * 3591 * @param pVCpu The VMCPU to operate on. 3592 */ 3593 VMMR0DECL(void) VMXFlushWriteCache(PVMCPU pVCpu) 3594 { 3595 PVMCSCACHE pCache = &pVCpu->hwaccm.s.vmx.VMCSCache; 3596 /* Flush the queued writes first. */ 3597 for (unsigned i=0;i<pCache->Write.cValidEntries;i++) 3598 VMXWriteVMCS(pCache->Write.aField[i], pCache->Write.aFieldVal[i]); 3599 3600 pCache->Write.cValidEntries = 0; 3601 } 3602 #endif -
trunk/src/VBox/VMM/VMMR0/HWVMXR0.h
r15288 r15291 284 284 return VINF_SUCCESS; 285 285 } 286 287 /** 288 * Flush the write cache in order not to overflow it with frequent ring switches. 289 * 290 * @param pVCpu The VMCPU to operate on. 291 */ 292 VMMR0DECL(void) VMXFlushWriteCache(PVMCPU pVCpu); 293 294 #else 295 # define VMXFlushWriteCache(a) do { } while (0) 286 296 #endif 287 297
Note:
See TracChangeset
for help on using the changeset viewer.