Changeset 50294 in vbox
- Timestamp:
- Jan 30, 2014 6:27:35 PM (11 years ago)
- Location:
- trunk/src/VBox/Devices
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/BIOS/ahci.c
r48123 r50294 634 634 uint8_t removable; 635 635 636 /* Clear all errors after the reset. */ 637 VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SERR, 0xffffffff); 638 636 639 devcount_ahci = bios_dsk->ahci_devcnt; 637 640 -
trunk/src/VBox/Devices/Storage/DevAHCI.cpp
r50283 r50294 1341 1341 if (u32Value & AHCI_PORT_CMD_ST) 1342 1342 { 1343 ahciLog(("%s: Engine starts\n", __FUNCTION__)); 1344 1345 /* Set engine state to running if there is a device attached. */ 1346 if (pAhciPort->pDrvBase) 1343 /* 1344 * Set engine state to running if there is a device attached and 1345 * IS.PCS is clear. 1346 */ 1347 if ( pAhciPort->pDrvBase 1348 && !(pAhciPort->regIS & AHCI_PORT_IS_PCS)) 1349 { 1350 ahciLog(("%s: Engine starts\n", __FUNCTION__)); 1347 1351 u32Value |= AHCI_PORT_CMD_CR; 1352 1353 /* If there is something in CI, kick the I/O thread. */ 1354 if ( pAhciPort->regCI > 0 1355 && ASMAtomicReadBool(&pAhciPort->fWrkThreadSleeping)) 1356 { 1357 ASMAtomicOrU32(&pAhciPort->u32TasksNew, pAhciPort->regCI); 1358 #ifdef IN_RC 1359 PDEVPORTNOTIFIERQUEUEITEM pItem = (PDEVPORTNOTIFIERQUEUEITEM)PDMQueueAlloc(ahci->CTX_SUFF(pNotifierQueue)); 1360 AssertMsg(VALID_PTR(pItem), ("Allocating item for queue failed\n")); 1361 1362 pItem->iPort = pAhciPort->iLUN; 1363 PDMQueueInsert(ahci->CTX_SUFF(pNotifierQueue), (PPDMQUEUEITEMCORE)pItem); 1364 #else 1365 LogFlowFunc(("Signal event semaphore\n")); 1366 int rc = SUPSemEventSignal(ahci->pSupDrvSession, pAhciPort->hEvtProcess); 1367 AssertRC(rc); 1368 #endif 1369 } 1370 } 1371 else 1372 u32Value &= ~AHCI_PORT_CMD_CR; 1348 1373 } 1349 1374 else … … 7691 7716 */ 7692 7717 pAhciPort->regSSTS = 0; 7718 pAhciPort->regSIG = 0; 7693 7719 /* 7694 7720 * Clear CR bit too to prevent submission of new commands when CI is written … … 7696 7722 */ 7697 7723 ASMAtomicAndU32(&pAhciPort->regCMD, ~(AHCI_PORT_CMD_CPS | AHCI_PORT_CMD_CR)); 7698 ASMAtomicOrU32(&pAhciPort->regIS, AHCI_PORT_IS_CPDS | AHCI_PORT_IS_PRCS );7699 ASMAtomicOrU32(&pAhciPort->regSERR, AHCI_PORT_SERR_ N);7724 ASMAtomicOrU32(&pAhciPort->regIS, AHCI_PORT_IS_CPDS | AHCI_PORT_IS_PRCS | AHCI_PORT_IS_PCS); 7725 ASMAtomicOrU32(&pAhciPort->regSERR, AHCI_PORT_SERR_X | AHCI_PORT_SERR_N); 7700 7726 if ( (pAhciPort->regIE & AHCI_PORT_IE_CPDE) 7701 7727 || (pAhciPort->regIE & AHCI_PORT_IE_PCE)
Note:
See TracChangeset
for help on using the changeset viewer.