Changeset 100000 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- May 30, 2023 6:09:42 AM (20 months ago)
- Location:
- trunk/src/VBox/VMM/VMMR3
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/EM.cpp
r99999 r100000 1896 1896 #else 1897 1897 bool fWakeupPending = false; 1898 //ssertReleaseFailed(); 1899 /** @todo */ 1898 1899 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VTIMER_ACTIVATED)) 1900 { 1901 VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_VTIMER_ACTIVATED); 1902 1903 fWakeupPending = true; 1904 if (pVM->em.s.fIemExecutesAll) 1905 rc2 = VINF_EM_RESCHEDULE; 1906 else 1907 { 1908 rc2 = HMR3IsActive(pVCpu) ? VINF_EM_RESCHEDULE_HM 1909 : VM_IS_NEM_ENABLED(pVM) ? VINF_EM_RESCHEDULE 1910 : VINF_EM_RESCHEDULE_REM; 1911 } 1912 } 1900 1913 #endif 1901 1914 -
trunk/src/VBox/VMM/VMMR3/TM.cpp
r99740 r100000 1270 1270 pVCpu->tm.s.u64TSC = 0; 1271 1271 pVCpu->tm.s.u64TSCLastSeen = 0; 1272 #if defined(VBOX_VMM_TARGET_ARMV8) 1273 pVCpu->cNsVTimerActivate = UINT64_MAX; 1274 #endif 1272 1275 } 1273 1276 } -
trunk/src/VBox/VMM/VMMR3/VMEmt.cpp
r99576 r100000 568 568 } 569 569 570 #if defined(VBOX_VMM_TARGET_ARMV8) 571 uint64_t cNsVTimerActivate = TMCpuGetVTimerActivationNano(pVCpu); 572 const bool fVTimerActive = cNsVTimerActivate != UINT64_MAX; 573 #endif 574 570 575 /* 571 576 * Halt loop. … … 584 589 STAM_REL_PROFILE_ADD_PERIOD(&pUVCpu->vm.s.StatHaltTimers, cNsElapsedTimers); 585 590 if ( VM_FF_IS_ANY_SET(pVM, VM_FF_EXTERNAL_HALTED_MASK) 586 || VMCPU_FF_IS_ANY_SET(pVCpu, fMask)) 591 || VMCPU_FF_IS_ANY_SET(pVCpu, fMask) 592 #if defined(VBOX_VMM_TARGET_ARMV8) 593 || cNsElapsedTimers >= cNsVTimerActivate 594 #endif 595 ) 596 { 597 #if defined(VBOX_VMM_TARGET_ARMV8) 598 cNsVTimerActivate = 0; 599 #endif 587 600 break; 601 } 588 602 589 603 /* … … 595 609 || VMCPU_FF_IS_ANY_SET(pVCpu, fMask)) 596 610 break; 611 612 #if defined(VBOX_VMM_TARGET_ARMV8) 613 u64NanoTS = RT_MIN(cNsVTimerActivate, u64NanoTS); 614 #endif 597 615 598 616 /* … … 656 674 && Elapsed > 100000 /* 0.1 ms */) 657 675 fBlockOnce = false; 676 677 #if defined(VBOX_VMM_TARGET_ARMV8) 678 cNsVTimerActivate -= RT_MIN(cNsVTimerActivate, Elapsed); 679 /* Did the vTimer expire? */ 680 if (!cNsVTimerActivate) 681 break; 682 #endif 658 683 } 659 684 } 660 685 //if (fSpinning) RTLogRelPrintf("spun for %RU64 ns %u loops; lag=%RU64 pct=%d\n", RTTimeNanoTS() - u64Now, cLoops, TMVirtualSyncGetLag(pVM), u32CatchUpPct); 661 686 687 #if defined(VBOX_VMM_TARGET_ARMV8) 688 if (fVTimerActive) 689 { 690 if (!cNsVTimerActivate) 691 VMCPU_FF_SET(pVCpu, VMCPU_FF_VTIMER_ACTIVATED); 692 693 TMCpuSetVTimerNextActivation(pVCpu, cNsVTimerActivate); 694 } 695 #endif 662 696 ASMAtomicUoWriteBool(&pUVCpu->vm.s.fWait, false); 663 697 return rc;
Note:
See TracChangeset
for help on using the changeset viewer.