Changeset 18827 in vbox for trunk/src/VBox
- Timestamp:
- Apr 7, 2009 2:59:13 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/EM.cpp
r18825 r18827 2512 2512 static int emR3RawForcedActions(PVM pVM, PCPUMCTX pCtx) 2513 2513 { 2514 /*2515 * Note that the order is *vitally* important!2516 * Also note that SELMR3UpdateFromCPUM may trigger VM_FF_SELM_SYNC_TSS.2517 */2514 /* 2515 * Note that the order is *vitally* important! 2516 * Also note that SELMR3UpdateFromCPUM may trigger VM_FF_SELM_SYNC_TSS. 2517 */ 2518 2518 2519 2519 … … 2530 2530 /* 2531 2531 * Sync IDT. 2532 * 2533 * The CSAMR3CheckGates call in TRPMR3SyncIDT may call PGMPrefetchPage 2534 * and PGMShwModifyPage, so we're in for trouble if for instance a 2535 * PGMSyncCR3+pgmPoolClearAll is pending. 2536 */ 2532 2537 */ 2533 2538 if (VM_FF_ISPENDING(pVM, VM_FF_TRPM_SYNC_IDT)) 2534 2539 { 2540 if ( VM_FF_ISPENDING(pVM, VM_FF_PGM_SYNC_CR3) 2541 && EMIsRawRing0Enabled(pVM) 2542 && CSAMIsEnabled(pVM)) 2543 { 2544 int rc = PGMSyncCR3(pVM, pCtx->cr0, pCtx->cr3, pCtx->cr4, VM_FF_ISSET(pVM, VM_FF_PGM_SYNC_CR3)); 2545 if (RT_FAILURE(rc)) 2546 return rc; 2547 } 2548 2535 2549 int rc = TRPMR3SyncIDT(pVM); 2536 2550 if (RT_FAILURE(rc)) … … 2559 2573 Assert(!VM_FF_ISPENDING(pVM, VM_FF_SELM_SYNC_GDT | VM_FF_SELM_SYNC_LDT)); 2560 2574 2561 /* Prefetch pages for EIP and ESP */2575 /* Prefetch pages for EIP and ESP. */ 2562 2576 /** @todo This is rather expensive. Should investigate if it really helps at all. */ 2563 2577 rc = PGMPrefetchPage(pVM, SELMToFlat(pVM, DIS_SELREG_CS, CPUMCTX2CORE(pCtx), pCtx->rip));
Note:
See TracChangeset
for help on using the changeset viewer.