Changeset 50938 in vbox for trunk/src/VBox/Devices/Storage
- Timestamp:
- Apr 1, 2014 9:36:18 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/DevAHCI.cpp
r50564 r50938 1175 1175 if ((u32Value & AHCI_PORT_SCTL_DET) == AHCI_PORT_SCTL_DET_INIT) 1176 1176 { 1177 bool fAllTasksCanceled;1178 1179 /* Cancel all tasks first. */1180 fAllTasksCanceled = ahciCancelActiveTasks(pAhciPort);1181 Assert(fAllTasksCanceled);1182 1183 1177 if (!ASMAtomicXchgBool(&pAhciPort->fPortReset, true)) 1184 1178 LogRel(("AHCI#%u: Port %d reset\n", ahci->CTX_SUFF(pDevIns)->iInstance, 1185 1179 pAhciPort->iLUN)); 1180 1181 /* Make sure the async I/O thread is not working before we start to cancel active requests. */ 1182 while ( pAhciPort->u32TasksNew 1183 && !pAhciPort->fWrkThreadSleeping) 1184 RTThreadYield(); 1185 1186 /* Cancel all tasks first. */ 1187 bool fAllTasksCanceled = ahciCancelActiveTasks(pAhciPort); 1188 Assert(fAllTasksCanceled); 1186 1189 1187 1190 pAhciPort->regSSTS = 0; … … 1190 1193 pAhciPort->fFirstD2HFisSend = false; 1191 1194 } 1192 else if ((u32Value & AHCI_PORT_SCTL_DET) == AHCI_PORT_SCTL_DET_NINIT && pAhciPort->pDrvBase && 1193 (pAhciPort->regSCTL & AHCI_PORT_SCTL_DET) == AHCI_PORT_SCTL_DET_INIT) 1195 else if ( (u32Value & AHCI_PORT_SCTL_DET) == AHCI_PORT_SCTL_DET_NINIT 1196 && (pAhciPort->regSCTL & AHCI_PORT_SCTL_DET) == AHCI_PORT_SCTL_DET_INIT 1197 && pAhciPort->pDrvBase) 1194 1198 { 1195 1199 if (pAhciPort->pDrvBase) … … 1238 1242 } 1239 1243 } 1240 }1244 } 1241 1245 } 1242 1246 … … 6538 6542 6539 6543 idx = ASMBitFirstSetU32(u32Tasks); 6540 while (idx) 6544 while ( idx 6545 && !pAhciPort->fPortReset) 6541 6546 { 6542 6547 bool fReqCanceled = false;
Note:
See TracChangeset
for help on using the changeset viewer.