VirtualBox

Changeset 39938 in vbox for trunk/src/VBox/Devices/Storage


Ignore:
Timestamp:
Feb 1, 2012 3:54:44 PM (13 years ago)
Author:
vboxsync
Message:

AHCI: Temporary release assertions which hopefully catch inconsistent controller states causing hangs during VM poweroff

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Storage/DevAHCI.cpp

    r39845 r39938  
    53835383            {
    53845384                /* Task is active and was canceled. */
    5385                 AssertMsg(pAhciPort->cTasksActive > 0, ("Task was canceled but none is active\n"));
     5385                AssertReleaseMsg(ASMAtomicReadU32(&pAhciPort->cTasksActive) > 0,
     5386                                 ("Task was canceled but none is active\n"));
    53865387                ASMAtomicDecU32(&pAhciPort->cTasksActive);
    53875388
     
    54005401    }
    54015402
     5403    AssertRelease(!ASMAtomicReadU32(&pAhciPort->cTasksActive));
    54025404    return true; /* always true for now because tasks don't use guest memory as the buffer which makes canceling a task impossible. */
    54035405}
     
    56965698        /* Add the task to the cache. */
    56975699        ASMAtomicWritePtr(&pAhciPort->aCachedTasks[pAhciReq->uTag], pAhciReq);
     5700        AssertReleaseMsg(ASMAtomicReadU32(&pAhciPort->cTasksActive) > 0 ,
     5701                         ("Inconsistent request counter\n"));
    56985702        ASMAtomicDecU32(&pAhciPort->cTasksActive);
    56995703
     
    62496253            else
    62506254            {
     6255                AssertReleaseMsg(ASMAtomicReadU32(&pAhciPort->cTasksActive) < AHCI_NR_COMMAND_SLOTS,
     6256                                 ("There are more than 32 requests active"));
    62516257                ASMAtomicIncU32(&pAhciPort->cTasksActive);
    62526258
     
    64336439            else
    64346440            {
     6441                AssertReleaseMsg(ASMAtomicReadU32(&pAhciPort->cTasksActive) < AHCI_NR_COMMAND_SLOTS,
     6442                                 ("There are more than 32 requests active"));
    64356443                ASMAtomicIncU32(&pAhciPort->cTasksActive);
    64366444                enmTxDir = ahciProcessCmd(pAhciPort, pAhciReq, &pAhciReq->cmdFis[0]);
     
    64456453                    {
    64466454                        pAhciPort->Led.Asserted.s.fWriting = pAhciPort->Led.Actual.s.fWriting = 1;
    6447                         rc = pAhciPort->pDrvBlock->pfnDiscard(pAhciPort->pDrvBlock, 
     6455                        rc = pAhciPort->pDrvBlock->pfnDiscard(pAhciPort->pDrvBlock,
    64486456                                                              pAhciReq->u.Trim.paRanges,
    64496457                                                              pAhciReq->u.Trim.cRanges);
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