Changeset 52434 in vbox for trunk/src/VBox/Devices
- Timestamp:
- Aug 20, 2014 8:09:10 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/DevAHCI.cpp
r52412 r52434 5718 5718 } 5719 5719 5720 AssertRelease( !ASMAtomicReadU32(&pAhciPort->cTasksActive)5721 || (pAhciReqExcept && ASMAtomicReadU32(&pAhciPort->cTasksActive) == 1));5722 5720 return true; /* always true for now because tasks don't use guest memory as the buffer which makes canceling a task impossible. */ 5723 5721 } … … 5979 5977 } 5980 5978 5979 bool fPortReset = ASMAtomicReadBool(&pAhciPort->fPortReset); 5981 5980 fXchg = ASMAtomicCmpXchgU32((volatile uint32_t *)&pAhciReq->enmTxState, AHCITXSTATE_FREE, AHCITXSTATE_ACTIVE); 5982 5981 5983 if ( fXchg 5984 && !ASMAtomicReadBool(&pAhciPort->fPortReset)) 5982 if (fXchg && !fPortReset) 5985 5983 { 5986 5984 if (pAhciReq->enmTxDir == AHCITXDIR_READ) … … 6097 6095 * The guest might use it for other things now because it doesn't know about that task anymore. 6098 6096 */ 6099 AssertMsg( pAhciReq->enmTxState == AHCITXSTATE_CANCELED 6100 || pAhciPort->fPortReset, 6101 ("Task is not active but wasn't canceled!\n")); 6097 AssertMsg(pAhciReq->enmTxState == AHCITXSTATE_CANCELED || fPortReset, 6098 ("Task is not active but wasn't canceled and no port reset is active!\n")); 6099 6100 /* 6101 * If this handler switched the request state from active to free the request counter 6102 * must be decremented. 6103 */ 6104 if (fXchg) 6105 { 6106 Assert(fPortReset); 6107 AssertReleaseMsg(ASMAtomicReadU32(&pAhciPort->cTasksActive) > 0 , 6108 ("Inconsistent request counter\n")); 6109 ASMAtomicDecU32(&pAhciPort->cTasksActive); 6110 } 6102 6111 6103 6112 fCanceled = true;
Note:
See TracChangeset
for help on using the changeset viewer.