VirtualBox

Changeset 38838 in vbox for trunk/src/VBox/VMM/include


Ignore:
Timestamp:
Sep 23, 2011 11:21:55 AM (13 years ago)
Author:
vboxsync
Message:

VMM,++: Try fix the async reset, suspend and power-off problems in PDM wrt conflicting VMM requests. Split them into priority requests and normal requests. The priority requests can safely be processed when PDM is doing async state change waits, the normal ones cannot. (The problem I bumped into was a unmap-chunk request from PGM being processed during PDMR3Reset, causing a recursive VMMR3EmtRendezvous deadlock.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/include/VMInternal.h

    r36041 r38838  
    174174typedef struct VMINTUSERPERVM
    175175{
    176     /** Head of the request queue. Atomic. */
    177     volatile PVMREQ                 pReqs;
     176    /** Head of the standard request queue. Atomic. */
     177    volatile PVMREQ                 pNormalReqs;
     178    /** Head of the priority request queue. Atomic. */
     179    volatile PVMREQ                 pPriorityReqs;
    178180    /** The last index used during alloc/free. */
    179181    volatile uint32_t               iReqFree;
     
    315317typedef struct VMINTUSERPERVMCPU
    316318{
    317     /** Head of the request queue. Atomic. */
    318     volatile PVMREQ                 pReqs;
     319    /** Head of the normal request queue. Atomic. */
     320    volatile PVMREQ                 pNormalReqs;
     321    /** Head of the priority request queue. Atomic. */
     322    volatile PVMREQ                 pPriorityReqs;
    319323
    320324    /** The handle to the EMT thread. */
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