Changeset 45701 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Apr 24, 2013 2:21:09 PM (12 years ago)
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/EMAll.cpp
r45620 r45701 1538 1538 # endif 1539 1539 # ifdef VBOX_WITH_RAW_MODE 1540 if (( val ^ oldval) & X86_CR4_VME)1540 if (((val ^ oldval) & X86_CR4_VME) && !HMIsEnabled(pVM)) 1541 1541 VMCPU_FF_SET(pVCpu, VMCPU_FF_SELM_SYNC_TSS); 1542 1542 # endif -
trunk/src/VBox/VMM/VMMAll/HMAll.cpp
r45618 r45701 38 38 39 39 /** 40 * Query HM state (enabled/disabled) 41 * 42 * @returns @c false if disabled, @c true if enabled. 40 * Checks whether HM (VT-x/AMD-V) is being used by this VM. 41 * 42 * @retval @c true if used. 43 * @retval @c false if software virtualization (raw-mode) is used. 43 44 * @param pVM The cross context VM structure. 44 45 * @sa HMIsEnabled, HMR3IsEnabled -
trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
r45531 r45701 87 87 #include <VBox/vmm/iom.h> 88 88 #include <VBox/vmm/em.h> 89 #include <VBox/vmm/hm.h> 89 90 #include <VBox/vmm/tm.h> 90 91 #include <VBox/vmm/dbgf.h> -
trunk/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h
r45533 r45701 3417 3417 RT_BOOL(uOldCrX & X86_CR4_VME), RT_BOOL(uNewCrX & X86_CR4_VME) )); 3418 3418 #ifdef VBOX_WITH_RAW_MODE 3419 VMCPU_FF_SET(pVCpu, VMCPU_FF_SELM_SYNC_TSS); 3419 if (!HMIsEnabled(IEMCPU_TO_VM(pIemCpu))) 3420 VMCPU_FF_SET(pVCpu, VMCPU_FF_SELM_SYNC_TSS); 3420 3421 #endif 3421 3422 } -
trunk/src/VBox/VMM/VMMAll/SELMAll.cpp
r45485 r45701 25 25 #include <VBox/vmm/em.h> 26 26 #include <VBox/vmm/mm.h> 27 #include <VBox/vmm/hm.h> 27 28 #include <VBox/vmm/pgm.h> 28 29 #include <VBox/vmm/hm.h> … … 64 65 { 65 66 Assert(pVM->cCpus == 1 && !CPUMIsGuestInLongMode(VMMGetCpu(pVM))); /* DON'T USE! */ 67 Assert(!HMIsEnabled(pVM)); 66 68 67 69 /** @todo check the limit. */ … … 322 324 { 323 325 Assert(!CPUMIsGuestInLongMode(pVCpu)); /* DON'T USE! (Accessing shadow GDT/LDT.) */ 326 Assert(!HMIsEnabled(pVCpu->CTX_SUFF(pVM))); 324 327 325 328 /* … … 488 491 RTGCPTR GCPtrDesc, RTSEL const Sel, uint32_t const iSReg) 489 492 { 493 Assert(!HMIsEnabled(pVCpu->CTX_SUFF(pVM))); 494 490 495 /* 491 496 * Try read the entry. … … 541 546 PVM pVM = pVCpu->CTX_SUFF(pVM); 542 547 Assert(pVM->cCpus == 1); 548 Assert(!HMIsEnabled(pVM)); 543 549 544 550 … … 634 640 { 635 641 NOREF(pVCpu); 642 Assert(!HMIsEnabled(pVM)); 643 636 644 /** @todo validate limit! */ 637 645 X86DESC Desc; … … 836 844 void selmSetRing1Stack(PVM pVM, uint32_t ss, RTGCPTR32 esp) 837 845 { 846 Assert(!HMIsEnabled(pVM)); 838 847 Assert((ss & 1) || esp == 0); 839 848 pVM->selm.s.Tss.ss1 = ss; … … 852 861 void selmSetRing2Stack(PVM pVM, uint32_t ss, RTGCPTR32 esp) 853 862 { 863 Assert(!HMIsEnabled(pVM)); 854 864 Assert((ss & 3) == 2 || esp == 0); 855 865 pVM->selm.s.Tss.ss2 = ss; … … 858 868 #endif 859 869 860 861 870 #ifdef VBOX_WITH_RAW_MODE_NOT_R0 871 862 872 /** 863 873 * Gets ss:esp for ring1 in main Hypervisor's TSS. … … 872 882 VMMDECL(int) SELMGetRing1Stack(PVM pVM, uint32_t *pSS, PRTGCPTR32 pEsp) 873 883 { 884 Assert(!HMIsEnabled(pVM)); 874 885 Assert(pVM->cCpus == 1); 875 886 PVMCPU pVCpu = &pVM->aCpus[0]; … … 944 955 return VINF_SUCCESS; 945 956 } 946 #endif /* VBOX_WITH_RAW_MODE_NOT_R0 */ 947 948 949 /** 950 * Returns Guest TSS pointer 951 * 952 * @returns Pointer to the guest TSS, RTRCPTR_MAX if not being monitored. 953 * @param pVM Pointer to the VM. 954 */ 955 VMMDECL(RTGCPTR) SELMGetGuestTSS(PVM pVM) 956 { 957 return (RTGCPTR)pVM->selm.s.GCPtrGuestTss; 958 } 959 960 #ifdef VBOX_WITH_RAW_MODE_NOT_R0 957 961 958 962 959 /** … … 1079 1076 VMMDECL(void) SELMShadowCR3Changed(PVM pVM, PVMCPU pVCpu) 1080 1077 { 1081 /** @todo SMP support!! */1078 /** @todo SMP support!! (64-bit guest scenario, primarily) */ 1082 1079 pVM->selm.s.Tss.cr3 = PGMGetHyperCR3(pVCpu); 1083 1080 pVM->selm.s.TssTrap08.cr3 = PGMGetInterRCCR3(pVM, pVCpu);
Note:
See TracChangeset
for help on using the changeset viewer.