Changeset 45705 in vbox for trunk/src/VBox
- Timestamp:
- Apr 24, 2013 2:37:42 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 85251
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/HM.cpp
r45701 r45705 839 839 #ifdef VBOX_WITH_RAW_MODE 840 840 /* Turn off IDT/LDT/GDT and TSS monitoring and sycing. */ 841 SELMR3DisableMonitoring(pVM);842 841 TRPMR3DisableMonitoring(pVM); 843 842 #endif -
trunk/src/VBox/VMM/VMMR3/SELM.cpp
r45701 r45705 179 179 pVM->selm.s.GCSelTss = RTSEL_MAX; 180 180 181 pVM->selm.s.fDisableMonitoring = false;182 181 pVM->selm.s.fSyncTSSRing0Stack = false; 183 182 … … 632 631 633 632 634 #ifdef VBOX_WITH_RAW_MODE635 /**636 * Disable GDT/LDT/TSS monitoring and syncing637 *638 * @param pVM Pointer to the VM.639 */640 VMMR3DECL(void) SELMR3DisableMonitoring(PVM pVM)641 {642 /*643 * Uninstall guest GDT/LDT/TSS write access handlers.644 */645 int rc;646 if (pVM->selm.s.GuestGdtr.pGdt != RTRCPTR_MAX && pVM->selm.s.fGDTRangeRegistered)647 {648 # ifdef SELM_TRACK_GUEST_GDT_CHANGES649 rc = PGMHandlerVirtualDeregister(pVM, pVM->selm.s.GuestGdtr.pGdt);650 AssertRC(rc);651 # endif652 pVM->selm.s.GuestGdtr.pGdt = RTRCPTR_MAX;653 pVM->selm.s.GuestGdtr.cbGdt = 0;654 }655 pVM->selm.s.fGDTRangeRegistered = false;656 if (pVM->selm.s.GCPtrGuestLdt != RTRCPTR_MAX)657 {658 # ifdef SELM_TRACK_GUEST_LDT_CHANGES659 rc = PGMHandlerVirtualDeregister(pVM, pVM->selm.s.GCPtrGuestLdt);660 AssertRC(rc);661 # endif662 pVM->selm.s.GCPtrGuestLdt = RTRCPTR_MAX;663 }664 if (pVM->selm.s.GCPtrGuestTss != RTRCPTR_MAX)665 {666 # ifdef SELM_TRACK_GUEST_TSS_CHANGES667 rc = PGMHandlerVirtualDeregister(pVM, pVM->selm.s.GCPtrGuestTss);668 AssertRC(rc);669 # endif670 pVM->selm.s.GCPtrGuestTss = RTRCPTR_MAX;671 pVM->selm.s.GCSelTss = RTSEL_MAX;672 }673 674 /*675 * Unregister shadow GDT/LDT/TSS write access handlers.676 */677 # ifdef SELM_TRACK_SHADOW_GDT_CHANGES678 if (pVM->selm.s.paGdtRC != NIL_RTRCPTR)679 {680 rc = PGMHandlerVirtualDeregister(pVM, pVM->selm.s.paGdtRC);681 AssertRC(rc);682 pVM->selm.s.paGdtRC = NIL_RTRCPTR;683 }684 # endif685 # ifdef SELM_TRACK_SHADOW_TSS_CHANGES686 if (pVM->selm.s.pvMonShwTssRC != RTRCPTR_MAX)687 {688 rc = PGMHandlerVirtualDeregister(pVM, pVM->selm.s.pvMonShwTssRC);689 AssertRC(rc);690 pVM->selm.s.pvMonShwTssRC = RTRCPTR_MAX;691 }692 # endif693 # ifdef SELM_TRACK_SHADOW_LDT_CHANGES694 if (pVM->selm.s.pvLdtRC != RTRCPTR_MAX)695 {696 rc = PGMHandlerVirtualDeregister(pVM, pVM->selm.s.pvLdtRC);697 AssertRC(rc);698 pVM->selm.s.pvLdtRC = RTRCPTR_MAX;699 }700 # endif701 702 PVMCPU pVCpu = &pVM->aCpus[0]; /* raw mode implies on VCPU */703 VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_SELM_SYNC_TSS);704 VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_SELM_SYNC_GDT);705 VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_SELM_SYNC_LDT);706 707 pVM->selm.s.fDisableMonitoring = true;708 }709 #endif /* VBOX_WITH_RAW_MODE */710 711 712 633 /** 713 634 * Execute state save operation. … … 726 647 PSELM pSelm = &pVM->selm.s; 727 648 728 SSMR3PutBool(pSSM, pSelm->fDisableMonitoring);649 SSMR3PutBool(pSSM, HMIsEnabled(pVM)); 729 650 SSMR3PutBool(pSSM, pSelm->fSyncTSSRing0Stack); 730 651 SSMR3PutSel(pSSM, pSelm->aHyperSel[SELM_HYPER_SEL_CS]); … … 766 687 767 688 /* Get the monitoring flag. */ 768 SSMR3GetBool(pSSM, &pVM->selm.s.fDisableMonitoring); 689 bool fIgnored; 690 SSMR3GetBool(pSSM, &fIgnored); 769 691 770 692 /* Get the TSS state flag. */ -
trunk/src/VBox/VMM/include/SELMInternal.h
r45533 r45705 167 167 bool fGDTRangeRegistered; 168 168 169 /** Indicates whether LDT/GDT/TSS monitoring and syncing is disabled. */170 bool fDisableMonitoring;171 172 169 /** Indicates whether the TSS stack selector & base address need to be refreshed. */ 173 170 bool fSyncTSSRing0Stack; 174 bool fPadding2[ 1+2];171 bool fPadding2[4]; 175 172 176 173 /** SELMR3UpdateFromCPUM() profiling. */
Note:
See TracChangeset
for help on using the changeset viewer.