儲存庫 vbox 的更動 16408
- 時間撮記:
- 2009-1-30 下午12:14:26 (16 年 以前)
- 位置:
- trunk
- 檔案:
-
- 修改 6 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/include/VBox/pgm.h
r16321 r16408 503 503 VMMR3DECL(int) PGMR3TermCPU(PVM pVM); 504 504 VMMR3DECL(int) PGMR3LockCall(PVM pVM); 505 VMMR3DECL(int) PGMR3ChangeShwPDMappings(PVM pVM, bool fEnable);506 505 VMMR3DECL(int) PGMR3ChangeMode(PVM pVM, PGMMODE enmGuestMode); 507 506 … … 548 547 VMMR3DECL(int) PGMR3MappingsFix(PVM pVM, RTGCPTR GCPtrBase, uint32_t cb); 549 548 VMMR3DECL(int) PGMR3MappingsUnfix(PVM pVM); 549 VMMR3DECL(int) PGMR3MappingsDisable(PVM pVM); 550 550 VMMR3DECL(int) PGMR3MapIntermediate(PVM pVM, RTUINTPTR Addr, RTHCPHYS HCPhys, unsigned cbPages); 551 551 VMMR3DECL(bool) PGMR3MapHasConflicts(PVM pVM, uint64_t cr3, bool fRawR0); -
trunk/src/VBox/VMM/HWACCM.cpp
r16136 r16408 416 416 417 417 /* Disable mapping of the hypervisor into the shadow page table. */ 418 PGMR3 ChangeShwPDMappings(pVM, false);418 PGMR3MappingsDisable(pVM); 419 419 420 420 /* Disable the switcher */ -
trunk/src/VBox/VMM/PGM.cpp
r16376 r16408 4580 4580 4581 4581 4582 /**4583 * Inform PGM if we want all mappings to be put into the shadow page table. (necessary for e.g. VMX)4584 *4585 * @returns VBox status code.4586 * @param pVM VM handle.4587 * @param fEnable Enable or disable shadow mappings4588 */4589 VMMR3DECL(int) PGMR3ChangeShwPDMappings(PVM pVM, bool fEnable)4590 {4591 pVM->pgm.s.fDisableMappings = !fEnable;4592 4593 uint32_t cb;4594 int rc = PGMR3MappingsSize(pVM, &cb);4595 AssertRCReturn(rc, rc);4596 4597 /* Pretend the mappings are now fixed; to force a refresh of the reserved PDEs. */4598 rc = PGMR3MappingsFix(pVM, MM_HYPER_AREA_ADDRESS, cb);4599 AssertRCReturn(rc, rc);4600 4601 return VINF_SUCCESS;4602 }4603 -
trunk/src/VBox/VMM/PGMMap.cpp
r16321 r16408 640 640 } 641 641 642 /** 643 * Disable the hypervisor mappings in the shadow page tables (doesn't touch the intermediate table!) 644 * 645 * @returns VBox status code. 646 * @param pVM The VM. 647 */ 648 VMMR3DECL(int) PGMR3MappingsDisable(PVM pVM) 649 { 650 uint32_t cb; 651 int rc = PGMR3MappingsSize(pVM, &cb); 652 AssertRCReturn(rc, rc); 653 654 rc = PGMMapDeactivateAll(pVM); 655 AssertRCReturn(rc, rc); 656 657 /* 658 * Mark the mappings as fixed (using fake values) and disabled. 659 */ 660 pVM->pgm.s.fDisableMappings = true; 661 pVM->pgm.s.fMappingsFixed = true; 662 pVM->pgm.s.GCPtrMappingFixed = MM_HYPER_AREA_ADDRESS; 663 pVM->pgm.s.cbMappingFixed = cb; 664 pVM->pgm.s.fSyncFlags &= ~PGM_SYNC_MONITOR_CR3; 665 VM_FF_SET(pVM, VM_FF_PGM_SYNC_CR3); 666 return VINF_SUCCESS; 667 } 668 642 669 643 670 /** … … 968 995 */ 969 996 #ifndef VBOX_WITH_PGMPOOL_PAGING_ONLY 997 Assert(!pPGM->pShw32BitPdR3->a[iNewPDE].n.u1Present || pgmMapAreMappingsEnabled(&pVM->pgm.s)); 970 998 if ( pgmMapAreMappingsEnabled(&pVM->pgm.s) 971 999 && pPGM->pShw32BitPdR3->a[iNewPDE].n.u1Present) … … 989 1017 unsigned iPDE = iNewPDE * 2 % 512; 990 1018 #ifndef VBOX_WITH_PGMPOOL_PAGING_ONLY 1019 Assert(!pPGM->apShwPaePDsR3[iPD]->a[iPDE].n.u1Present || pgmMapAreMappingsEnabled(&pVM->pgm.s)); 991 1020 if ( pgmMapAreMappingsEnabled(&pVM->pgm.s) 992 1021 && pPGM->apShwPaePDsR3[iPD]->a[iPDE].n.u1Present) … … 1006 1035 AssertFatal(iPDE < 512); 1007 1036 #ifndef VBOX_WITH_PGMPOOL_PAGING_ONLY 1037 Assert(!pPGM->apShwPaePDsR3[iPD]->a[iPDE].n.u1Present || pgmMapAreMappingsEnabled(&pVM->pgm.s)); 1008 1038 if ( pgmMapAreMappingsEnabled(&pVM->pgm.s) 1009 1039 && pPGM->apShwPaePDsR3[iPD]->a[iPDE].n.u1Present) -
trunk/src/VBox/VMM/VMMAll/PGMAllMap.cpp
r16376 r16408 209 209 210 210 211 212 #ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY213 214 211 /** 215 212 * Sets all PDEs involved with the mapping in the shadow page table. … … 416 413 return VINF_SUCCESS; 417 414 } 418 #endif /* VBOX_WITH_PGMPOOL_PAGING_ONLY */ -
trunk/src/VBox/VMM/VMMTests.cpp
r13858 r16408 478 478 479 479 /* Enable mapping of the hypervisor into the shadow page table. */ 480 PGMR3ChangeShwPDMappings(pVM, true); 480 uint32_t cb; 481 rc = PGMR3MappingsSize(pVM, &cb); 482 AssertRCReturn(rc, rc); 483 484 /* Pretend the mappings are now fixed; to force a refresh of the reserved PDEs. */ 485 rc = PGMR3MappingsFix(pVM, MM_HYPER_AREA_ADDRESS, cb); 486 AssertRCReturn(rc, rc); 481 487 482 488 CPUMQueryHyperCtxPtr(pVM, &pHyperCtx);
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器