VirtualBox

Changeset 90558 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Aug 6, 2021 8:36:24 PM (3 years ago)
Author:
vboxsync
Message:

VMM/PGMCritSect: Avoid queuing on PDMCritSectLeave contention and include more contexts where we trust calling SUPSemEventSignal (targetting solaris). bugref:6695

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp

    r90531 r90558  
    897897    pCritSect->s.hEventToSignal = NIL_SUPSEMEVENT;
    898898    PVMCPUCC pVCpu           = VMMGetCpu(pVM);
    899     bool     fQueueOnTrouble = true;
     899    bool     fQueueOnTrouble = false; /* Set this to true to test queueing. */
    900900    if (   pVCpu == NULL /* non-EMT access, if we implement it must be able to block */
    901901        || VMMRZCallRing3IsEnabled(pVCpu)
    902902        || RTSemEventIsSignalSafe()
     903        || (   VMMR0ThreadCtxHookIsEnabled(pVCpu)       /* Doesn't matter if Signal() blocks if we have hooks, ... */
     904            && RTThreadPreemptIsEnabled(NIL_RTTHREAD)   /* ... and preemption is still enabled, */
     905            && ASMIntAreEnabled())                      /* ... and interrupts hasn't yet been disabled. Special pre-GC HM env. */
    903906        || (fQueueOnTrouble = (   hEventToSignal == NIL_SUPSEMEVENT
    904907                               && ASMAtomicUoReadS32(&pCritSect->s.Core.cLockers) == 0)) )
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