VirtualBox

Changeset 100140 in vbox for trunk/src/VBox/VMM/VMMR3


Ignore:
Timestamp:
Jun 9, 2023 2:54:38 PM (21 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
157833
Message:

VMM/EM: Do not do scheduling based on whether HM has been used and is 'active', because that's not a reliable property (especially after restoring saved state) and it's not correct to go to the recompiler all the time after HM was unable to execute a piece of code. This is probably a problem resurfacing after kicking out the IEM_THEN_REM state from EM and resurrecting the REM state. bugref:10369

Location:
trunk/src/VBox/VMM/VMMR3
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/EM.cpp

    r100012 r100140  
    18051805                            VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_INTERRUPT_NMI);
    18061806                            fWakeupPending = true;
     1807# if 0 /* HMR3IsActive is not reliable (esp. after restore), just return VINF_EM_RESCHEDULE. */
    18071808                            if (pVM->em.s.fIemExecutesAll)
    18081809                                rc2 = VINF_EM_RESCHEDULE;
     
    18131814                                    :                          VINF_EM_RESCHEDULE_REM;
    18141815                            }
     1816# else
     1817                            rc2 = VINF_EM_RESCHEDULE;
     1818# endif
    18151819                        }
    18161820                        UPDATE_RC();
     
    19031907
    19041908            fWakeupPending = true;
    1905             if (pVM->em.s.fIemExecutesAll)
    1906                 rc2 = VINF_EM_RESCHEDULE;
    1907             else
    1908                 rc2 = HMR3IsActive(pVCpu)    ? VINF_EM_RESCHEDULE_HM
    1909                     : VM_IS_NEM_ENABLED(pVM) ? VINF_EM_RESCHEDULE
    1910                     :                          VINF_EM_RESCHEDULE_REM;
     1909            rc2 = VINF_EM_RESCHEDULE;
    19111910        }
    19121911#endif /* VBOX_VMM_TARGET_ARMV8 */
  • trunk/src/VBox/VMM/VMMR3/HM-armv8.cpp

    r100108 r100140  
    366366
    367367
     368#if 0 /* evil */
    368369/**
    369370 * Checks if we are currently using hardware acceleration.
     
    376377    return pVCpu->hm.s.fActive;
    377378}
     379#endif
    378380
    379381
  • trunk/src/VBox/VMM/VMMR3/HM.cpp

    r100139 r100140  
    27612761
    27622762
     2763#if 0 /* evil */
    27632764/**
    27642765 * Checks if we are currently using hardware acceleration.
     
    27712772    return pVCpu->hm.s.fActive;
    27722773}
     2774#endif
    27732775
    27742776
  • trunk/src/VBox/VMM/VMMR3/TRPM.cpp

    r99649 r100140  
    426426        AssertMsg(rc == VERR_APIC_INTR_MASKED_BY_TPR || rc == VERR_NO_DATA, ("PDMGetInterrupt failed. rc=%Rrc\n", rc));
    427427    }
     428# if 0 /* HMR3IsActive is not reliable (esp. after restore), just return VINF_EM_RESCHEDULE. */
    428429    return HMR3IsActive(pVCpu)    ? VINF_EM_RESCHEDULE_HM
    429430         : VM_IS_NEM_ENABLED(pVM) ? VINF_EM_RESCHEDULE
    430431         :                          VINF_EM_RESCHEDULE_REM; /* (Heed the halted state if this is changed!) */
     432# else
     433    return VINF_EM_RESCHEDULE;
     434# endif
    431435#endif
    432436}
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette