- Timestamp:
- Aug 12, 2008 5:50:18 PM (16 years ago)
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/HWACCMAll.cpp
r10822 r11370 73 73 if (pVM->hwaccm.s.svm.fSupported) 74 74 { 75 Log(("HWACCMFlushTLB\n")); 75 76 pVM->hwaccm.s.svm.fForceTLBFlush = true; 76 77 STAM_COUNTER_INC(&pVM->hwaccm.s.StatFlushTLBManual); … … 130 131 return VINF_SUCCESS; 131 132 } 133 134 /** 135 * Checks if an interrupt event is currently pending. 136 * 137 * @returns Interrupt event pending state. 138 * @param pVM The VM to operate on. 139 */ 140 HWACCMDECL(bool) HWACCMHasPendingIrq(PVM pVM) 141 { 142 return pVM->hwaccm.s.Event.fPending; 143 } 144 -
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r11366 r11370 692 692 * @returns true if we consider the page as being reused for a different purpose. 693 693 * @returns false if we consider it to still be a paging page. 694 * @param pVM VM Handle. 694 695 * @param pPage The page in question. 695 696 * @param pRegFrame Trap register frame. 696 * @param pCpu The disassembly info for the faulting inst urction.697 * @param pCpu The disassembly info for the faulting instruction. 697 698 * @param pvFault The fault address. 698 699 * 699 700 * @remark The REP prefix check is left to the caller because of STOSD/W. 700 701 */ 701 DECLINLINE(bool) pgmPoolMonitorIsReused(PPGMPOOLPAGE pPage, PCPUMCTXCORE pRegFrame, PDISCPUSTATE pCpu, RTGCPTR pvFault) 702 { 702 DECLINLINE(bool) pgmPoolMonitorIsReused(PVM pVM, PPGMPOOLPAGE pPage, PCPUMCTXCORE pRegFrame, PDISCPUSTATE pCpu, RTGCPTR pvFault) 703 { 704 #ifndef IN_GC 705 if ( HWACCMHasPendingIrq(pVM) 706 && (pRegFrame->rsp - pvFault) < 32) 707 { 708 /* Fault caused by stack writes while trying to inject an interrupt event. */ 709 Log(("pgmPoolMonitorIsReused: reused %VGv for interrupt stack (rsp=%VGv).\n", pvFault, pRegFrame->rsp)); 710 return true; 711 } 712 #else 713 NOREF(pVM); 714 #endif 715 703 716 switch (pCpu->pCurInstr->opcode) 704 717 { … … 958 971 if ( ( pPage->cModifications < 48 /** @todo #define */ /** @todo need to check that it's not mapping EIP. */ /** @todo adjust this! */ 959 972 || pPage->fCR3Mix) 960 && !(fReused = pgmPoolMonitorIsReused(p Page, pRegFrame, &Cpu, pvFault))973 && !(fReused = pgmPoolMonitorIsReused(pVM, pPage, pRegFrame, &Cpu, pvFault)) 961 974 && !pgmPoolMonitorIsForking(pPool, &Cpu, GCPhysFault & PAGE_OFFSET_MASK)) 962 975 {
Note:
See TracChangeset
for help on using the changeset viewer.