Changeset 62963 in vbox
- Timestamp:
- Aug 4, 2016 9:24:53 AM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 109566
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/DevAHCI.cpp
r62632 r62963 313 313 uint8_t aATAPICmd[ATAPI_PACKET_SIZE]; 314 314 /** Size of one sector for the ATAPI transfer. */ 315 size_tcbATAPISector;315 uint32_t cbATAPISector; 316 316 /** Physical address of the command header. - GC */ 317 317 RTGCPHYS GCPhysCmdHdrAddr; … … 958 958 static int ahciPostFisIntoMemory(PAHCIPort pAhciPort, unsigned uFisType, uint8_t *cmdFis); 959 959 static void ahciPostFirstD2HFisIntoMemory(PAHCIPort pAhciPort); 960 static size_t ahciCopyToPrdtl(PPDMDEVINS pDevIns, PAHCIREQ pAhciReq, 961 void *pvBuf, size_t cbBuf); 962 static size_t ahciCopyFromPrdtl(PPDMDEVINS pDevIns, PAHCIREQ pAhciReq, 963 void *pvBuf, size_t cbBuf); 960 static uint32_t ahciCopyToPrdtl(PPDMDEVINS pDevIns, PAHCIREQ pAhciReq, const void *pvBuf, size_t cbBuf); 961 static size_t ahciCopyFromPrdtl(PPDMDEVINS pDevIns, PAHCIREQ pAhciReq, void *pvBuf, size_t cbBuf); 964 962 static bool ahciCancelActiveTasks(PAHCIPort pAhciPort, PAHCIREQ pAhciReqExcept); 965 963 static void ahciReqMemFree(PAHCIPort pAhciPort, PAHCIREQ pAhciReq, bool fForceFree); … … 1070 1068 1071 1069 #ifdef IN_RING3 1070 1072 1071 /* 1073 1072 * Assert irq when an CCC timeout occurs … … 1075 1074 static DECLCALLBACK(void) ahciCccTimer(PPDMDEVINS pDevIns, PTMTIMER pTimer, void *pvUser) 1076 1075 { 1076 RT_NOREF(pDevIns, pTimer); 1077 1077 PAHCI pAhci = (PAHCI)pvUser; 1078 1078 … … 1091 1091 /* Cancel all tasks first. */ 1092 1092 bool fAllTasksCanceled = ahciCancelActiveTasks(pAhciPort, NULL); 1093 Assert(fAllTasksCanceled); 1093 Assert(fAllTasksCanceled); NOREF(fAllTasksCanceled); 1094 1094 1095 1095 /* Signature for SATA device. */ … … 1137 1137 ASMAtomicXchgBool(&pAhciPort->fPortReset, false); 1138 1138 } 1139 #endif 1139 1140 #endif /* IN_RING3 */ 1140 1141 1141 1142 /** … … 1280 1281 1281 1282 pAhciPort->regSSTS = 0; 1282 pAhciPort->regSIG = ~0;1283 pAhciPort->regSIG = UINT32_MAX; 1283 1284 pAhciPort->regTFD = 0x7f; 1284 1285 pAhciPort->fFirstD2HFisSend = false; … … 2077 2078 2078 2079 pAhciPort->regTFD = (1 << 8) | ATA_STAT_SEEK | ATA_STAT_WRERR; 2079 pAhciPort->regSIG = ~0;2080 pAhciPort->regSIG = UINT32_MAX; 2080 2081 pAhciPort->regSSTS = 0; 2081 2082 pAhciPort->regSCTL = 0; … … 2548 2549 #ifdef IN_RING3 2549 2550 2550 static DECLCALLBACK(int) ahciR3MMIOMap(PPCIDEVICE pPciDev, /*unsigned*/ int iRegion, RTGCPHYS GCPhysAddress, uint32_t cb, 2551 PCIADDRESSSPACE enmType) 2552 { 2551 static DECLCALLBACK(int) 2552 ahciR3MMIOMap(PPCIDEVICE pPciDev, /*unsigned*/ int iRegion, RTGCPHYS GCPhysAddress, uint32_t cb, PCIADDRESSSPACE enmType) 2553 { 2554 RT_NOREF(iRegion, enmType); 2553 2555 PAHCI pThis = PCIDEV_2_PAHCI(pPciDev); 2554 2556 PPDMDEVINS pDevIns = pPciDev->pDevIns; … … 2590 2592 * Map the legacy I/O port ranges to make Solaris work with the controller. 2591 2593 */ 2592 static DECLCALLBACK(int) ahciR3LegacyFakeIORangeMap(PPCIDEVICE pPciDev, /*unsigned*/ int iRegion, RTGCPHYS GCPhysAddress, uint32_t cb, PCIADDRESSSPACE enmType) 2593 { 2594 static DECLCALLBACK(int) 2595 ahciR3LegacyFakeIORangeMap(PPCIDEVICE pPciDev, /*unsigned*/ int iRegion, RTGCPHYS GCPhysAddress, uint32_t cb, PCIADDRESSSPACE enmType) 2596 { 2597 RT_NOREF(iRegion, enmType); 2594 2598 PAHCI pThis = PCIDEV_2_PAHCI(pPciDev); 2595 2599 PPDMDEVINS pDevIns = pPciDev->pDevIns; … … 2628 2632 * Map the BMDMA I/O port range (used for the Index/Data pair register access) 2629 2633 */ 2630 static DECLCALLBACK(int) ahciR3IdxDataIORangeMap(PPCIDEVICE pPciDev, /*unsigned*/ int iRegion, RTGCPHYS GCPhysAddress, uint32_t cb, PCIADDRESSSPACE enmType) 2631 { 2634 static DECLCALLBACK(int) 2635 ahciR3IdxDataIORangeMap(PPCIDEVICE pPciDev, /*unsigned*/ int iRegion, RTGCPHYS GCPhysAddress, uint32_t cb, PCIADDRESSSPACE enmType) 2636 { 2637 RT_NOREF(iRegion, enmType); 2632 2638 PAHCI pThis = PCIDEV_2_PAHCI(pPciDev); 2633 2639 PPDMDEVINS pDevIns = pPciDev->pDevIns; … … 3083 3089 static int ahciIdentifySS(PAHCIPort pAhciPort, void *pvBuf) 3084 3090 { 3085 uint16_t *p; 3086 int rc = VINF_SUCCESS; 3087 3088 p = (uint16_t *)pvBuf; 3091 uint16_t *p = (uint16_t *)pvBuf; 3089 3092 memset(p, 0, 512); 3090 3093 p[0] = RT_H2LE_U16(0x0040); … … 3301 3304 3302 3305 /* Copy the buffer in to the scatter gather list. */ 3303 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&p[0], 3304 RT_MIN(cbData, sizeof(p))); 3306 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&p[0], RT_MIN(cbData, sizeof(p))); 3305 3307 3306 3308 atapiCmdOK(pAhciPort, pAhciReq); … … 3316 3318 3317 3319 /* Copy the buffer in to the scatter gather list. */ 3318 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], 3319 RT_MIN(cbData, sizeof(aBuf))); 3320 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], RT_MIN(cbData, sizeof(aBuf))); 3320 3321 3321 3322 atapiCmdOK(pAhciPort, pAhciReq); … … 3344 3345 3345 3346 /* Copy the buffer in to the scatter gather list. */ 3346 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], 3347 RT_MIN(cbData, sizeof(aBuf))); 3347 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], RT_MIN(cbData, sizeof(aBuf))); 3348 3348 3349 3349 atapiCmdOK(pAhciPort, pAhciReq); … … 3375 3375 3376 3376 /* Copy the buffer in to the scatter gather list. */ 3377 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], 3378 RT_MIN(cbData, sizeof(aBuf))); 3377 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], RT_MIN(cbData, sizeof(aBuf))); 3379 3378 3380 3379 atapiCmdOK(pAhciPort, pAhciReq); … … 3382 3381 } 3383 3382 3384 static size_t atapiGetConfigurationFillFeatureListProfiles( PAHCIPort pAhciPort,uint8_t *pbBuf, size_t cbBuf)3383 static size_t atapiGetConfigurationFillFeatureListProfiles(uint8_t *pbBuf, size_t cbBuf) 3385 3384 { 3386 3385 if (cbBuf < 3*4) … … 3400 3399 } 3401 3400 3402 static size_t atapiGetConfigurationFillFeatureCore( PAHCIPort pAhciPort,uint8_t *pbBuf, size_t cbBuf)3401 static size_t atapiGetConfigurationFillFeatureCore(uint8_t *pbBuf, size_t cbBuf) 3403 3402 { 3404 3403 if (cbBuf < 12) … … 3415 3414 } 3416 3415 3417 static size_t atapiGetConfigurationFillFeatureMorphing( PAHCIPort pAhciPort,uint8_t *pbBuf, size_t cbBuf)3416 static size_t atapiGetConfigurationFillFeatureMorphing(uint8_t *pbBuf, size_t cbBuf) 3418 3417 { 3419 3418 if (cbBuf < 8) … … 3429 3428 } 3430 3429 3431 static size_t atapiGetConfigurationFillFeatureRemovableMedium( PAHCIPort pAhciPort,uint8_t *pbBuf, size_t cbBuf)3430 static size_t atapiGetConfigurationFillFeatureRemovableMedium(uint8_t *pbBuf, size_t cbBuf) 3432 3431 { 3433 3432 if (cbBuf < 8) … … 3444 3443 } 3445 3444 3446 static size_t atapiGetConfigurationFillFeatureRandomReadable( PAHCIPort pAhciPort,uint8_t *pbBuf, size_t cbBuf)3445 static size_t atapiGetConfigurationFillFeatureRandomReadable(uint8_t *pbBuf, size_t cbBuf) 3447 3446 { 3448 3447 if (cbBuf < 12) … … 3460 3459 } 3461 3460 3462 static size_t atapiGetConfigurationFillFeatureCDRead( PAHCIPort pAhciPort,uint8_t *pbBuf, size_t cbBuf)3461 static size_t atapiGetConfigurationFillFeatureCDRead(uint8_t *pbBuf, size_t cbBuf) 3463 3462 { 3464 3463 if (cbBuf < 8) … … 3474 3473 } 3475 3474 3476 static size_t atapiGetConfigurationFillFeaturePowerManagement( PAHCIPort pAhciPort,uint8_t *pbBuf, size_t cbBuf)3475 static size_t atapiGetConfigurationFillFeaturePowerManagement(uint8_t *pbBuf, size_t cbBuf) 3477 3476 { 3478 3477 if (cbBuf < 4) … … 3486 3485 } 3487 3486 3488 static size_t atapiGetConfigurationFillFeatureTimeout( PAHCIPort pAhciPort,uint8_t *pbBuf, size_t cbBuf)3487 static size_t atapiGetConfigurationFillFeatureTimeout(uint8_t *pbBuf, size_t cbBuf) 3489 3488 { 3490 3489 if (cbBuf < 8) … … 3521 3520 pbBuf += 8; 3522 3521 3523 cbCopied = atapiGetConfigurationFillFeatureListProfiles(p AhciPort, pbBuf, cbBuf);3522 cbCopied = atapiGetConfigurationFillFeatureListProfiles(pbBuf, cbBuf); 3524 3523 cbBuf -= cbCopied; 3525 3524 pbBuf += cbCopied; 3526 3525 3527 cbCopied = atapiGetConfigurationFillFeatureCore(p AhciPort, pbBuf, cbBuf);3526 cbCopied = atapiGetConfigurationFillFeatureCore(pbBuf, cbBuf); 3528 3527 cbBuf -= cbCopied; 3529 3528 pbBuf += cbCopied; 3530 3529 3531 cbCopied = atapiGetConfigurationFillFeatureMorphing(p AhciPort, pbBuf, cbBuf);3530 cbCopied = atapiGetConfigurationFillFeatureMorphing(pbBuf, cbBuf); 3532 3531 cbBuf -= cbCopied; 3533 3532 pbBuf += cbCopied; 3534 3533 3535 cbCopied = atapiGetConfigurationFillFeatureRemovableMedium(p AhciPort, pbBuf, cbBuf);3534 cbCopied = atapiGetConfigurationFillFeatureRemovableMedium(pbBuf, cbBuf); 3536 3535 cbBuf -= cbCopied; 3537 3536 pbBuf += cbCopied; 3538 3537 3539 cbCopied = atapiGetConfigurationFillFeatureRandomReadable(p AhciPort, pbBuf, cbBuf);3538 cbCopied = atapiGetConfigurationFillFeatureRandomReadable(pbBuf, cbBuf); 3540 3539 cbBuf -= cbCopied; 3541 3540 pbBuf += cbCopied; 3542 3541 3543 cbCopied = atapiGetConfigurationFillFeatureCDRead(p AhciPort, pbBuf, cbBuf);3542 cbCopied = atapiGetConfigurationFillFeatureCDRead(pbBuf, cbBuf); 3544 3543 cbBuf -= cbCopied; 3545 3544 pbBuf += cbCopied; 3546 3545 3547 cbCopied = atapiGetConfigurationFillFeaturePowerManagement(p AhciPort, pbBuf, cbBuf);3546 cbCopied = atapiGetConfigurationFillFeaturePowerManagement(pbBuf, cbBuf); 3548 3547 cbBuf -= cbCopied; 3549 3548 pbBuf += cbCopied; 3550 3549 3551 cbCopied = atapiGetConfigurationFillFeatureTimeout(p AhciPort, pbBuf, cbBuf);3550 cbCopied = atapiGetConfigurationFillFeatureTimeout(pbBuf, cbBuf); 3552 3551 cbBuf -= cbCopied; 3553 3552 pbBuf += cbCopied; 3554 3553 3555 3554 /* Set data length now. */ 3556 ataH2BE_U32(&aBuf[0], sizeof(aBuf) - cbBuf);3555 ataH2BE_U32(&aBuf[0], (uint32_t)(sizeof(aBuf) - cbBuf)); 3557 3556 3558 3557 /* Copy the buffer in to the scatter gather list. */ 3559 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], 3560 RT_MIN(cbData, sizeof(aBuf))); 3558 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], RT_MIN(cbData, sizeof(aBuf))); 3561 3559 3562 3560 atapiCmdOK(pAhciPort, pAhciReq); … … 3634 3632 } while (!ASMAtomicCmpXchgU32(&pAhciPort->MediaEventStatus, NewStatus, OldStatus)); 3635 3633 3636 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&abBuf[0], 3637 RT_MIN(cbData, sizeof(abBuf))); 3634 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&abBuf[0], RT_MIN(cbData, sizeof(abBuf))); 3638 3635 3639 3636 atapiCmdOK(pAhciPort, pAhciReq); … … 3659 3656 3660 3657 /* Copy the buffer in to the scatter gather list. */ 3661 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], 3662 RT_MIN(cbData, sizeof(aBuf))); 3658 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], RT_MIN(cbData, sizeof(aBuf))); 3663 3659 3664 3660 atapiCmdOK(pAhciPort, pAhciReq); … … 3689 3685 3690 3686 /* Copy the buffer in to the scatter gather list. */ 3691 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], 3692 RT_MIN(cbData, sizeof(aBuf))); 3687 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], RT_MIN(cbData, sizeof(aBuf))); 3693 3688 3694 3689 atapiCmdOK(pAhciPort, pAhciReq); … … 3740 3735 3741 3736 /* Copy the buffer in to the scatter gather list. */ 3742 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], 3743 RT_MIN(cbData, sizeof(aBuf))); 3737 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], RT_MIN(cbData, sizeof(aBuf))); 3744 3738 3745 3739 atapiCmdOK(pAhciPort, pAhciReq); … … 3772 3766 3773 3767 /* Copy the buffer in to the scatter gather list. */ 3774 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], 3775 RT_MIN(cbData, sizeof(aBuf))); 3768 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], RT_MIN(cbData, sizeof(aBuf))); 3776 3769 3777 3770 atapiCmdOK(pAhciPort, pAhciReq); … … 3835 3828 3836 3829 /* Copy the buffer in to the scatter gather list. */ 3837 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], 3838 RT_MIN(cbData, cbSize)); 3830 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], RT_MIN(cbData, cbSize)); 3839 3831 3840 3832 atapiCmdOK(pAhciPort, pAhciReq); … … 3869 3861 3870 3862 /* Copy the buffer in to the scatter gather list. */ 3871 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], 3872 RT_MIN(cbData, sizeof(aBuf))); 3863 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], RT_MIN(cbData, sizeof(aBuf))); 3873 3864 3874 3865 atapiCmdOK(pAhciPort, pAhciReq); … … 3958 3949 3959 3950 /* Copy the buffer in to the scatter gather list. */ 3960 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], 3961 RT_MIN(cbData, cbSize)); 3951 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], RT_MIN(cbData, cbSize)); 3962 3952 3963 3953 atapiCmdOK(pAhciPort, pAhciReq); … … 3975 3965 static int atapiPassthroughSS(PAHCIREQ pAhciReq, PAHCIPort pAhciPort, size_t cbData, size_t *pcbData) 3976 3966 { 3967 RT_NOREF(cbData); 3977 3968 int rc = VINF_SUCCESS; 3978 3969 uint8_t abATAPISense[ATAPI_SENSE_SIZE]; … … 4012 4003 * imbalance of powers. */ 4013 4004 uint8_t aATAPICmd[ATAPI_PACKET_SIZE]; 4014 uint32_t iATAPILBA, cSectors , cReqSectors, cbCurrTX;4005 uint32_t iATAPILBA, cSectors; 4015 4006 uint8_t *pbBuf = (uint8_t *)pvBuf; 4016 4007 … … 4045 4036 } 4046 4037 memcpy(aATAPICmd, pAhciReq->aATAPICmd, ATAPI_PACKET_SIZE); 4047 cReqSectors = 0;4038 uint32_t cReqSectors = 0; 4048 4039 for (uint32_t i = cSectors; i > 0; i -= cReqSectors) 4049 4040 { … … 4052 4043 else 4053 4044 cReqSectors = i; 4054 cbCurrTX = pAhciReq->cbATAPISector * cReqSectors;4045 uint32_t cbCurrTX = pAhciReq->cbATAPISector * cReqSectors; 4055 4046 switch (pAhciReq->aATAPICmd[0]) 4056 4047 { … … 4179 4170 4180 4171 /* Reply with the same amount of data as the real drive. */ 4181 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, pvBuf, 4182 cbTransfer); 4172 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, pvBuf, cbTransfer); 4183 4173 } 4184 4174 else … … 4371 4361 4372 4362 /* Copy the buffer into the scatter gather list. */ 4373 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], 4374 RT_MIN(cbData, max_len)); 4363 *pcbData = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, (void *)&aBuf[0], RT_MIN(cbData, max_len)); 4375 4364 4376 4365 atapiCmdOK(pAhciPort, pAhciReq); … … 4381 4370 { 4382 4371 size_t cbTransfered = 0; 4383 int rcSourceSink; 4384 4385 rcSourceSink = g_apfnAtapiFuncs[iSourceSink](pAhciReq, pAhciPort, cbMax, 4386 &cbTransfered); 4387 4388 pAhciReq->cmdHdr.u32PRDBC = cbTransfered; 4389 pAhciReq->cbTransfer = cbTransfered; 4372 int rcSourceSink = g_apfnAtapiFuncs[iSourceSink](pAhciReq, pAhciPort, cbMax, &cbTransfered); 4373 4374 pAhciReq->cmdHdr.u32PRDBC = (uint32_t)cbTransfered; 4375 pAhciReq->cbTransfer = (uint32_t)cbTransfered; 4376 Assert(pAhciReq->cbTransfer == cbTransfered); 4390 4377 4391 4378 LogFlow(("cbTransfered=%d\n", cbTransfered)); … … 4439 4426 static int atapiReadSectors(PAHCIPort pAhciPort, PAHCIREQ pAhciReq, uint32_t iATAPILBA, uint32_t cSectors, uint32_t cbSector) 4440 4427 { 4428 RT_NOREF(pAhciPort); 4441 4429 Log(("%s: %d sectors at LBA %d\n", __FUNCTION__, cSectors, iATAPILBA)); 4442 4430 … … 5557 5545 * @param cbBuf The size of the buffer. 5558 5546 */ 5559 static size_t ahciCopyToPrdtl(PPDMDEVINS pDevIns, PAHCIREQ pAhciReq, 5560 void *pvBuf, size_t cbBuf) 5561 { 5562 uint8_t *pbBuf = (uint8_t *)pvBuf; 5547 static uint32_t ahciCopyToPrdtl(PPDMDEVINS pDevIns, PAHCIREQ pAhciReq, void const *pvBuf, size_t cbBuf) 5548 { 5549 uint8_t const *pbBuf = (uint8_t const *)pvBuf; 5563 5550 SGLEntry aPrdtlEntries[32]; 5564 5551 RTGCPHYS GCPhysPrdtl = pAhciReq->GCPhysPrdtl; 5565 5552 unsigned cPrdtlEntries = pAhciReq->cPrdtlEntries; 5566 size_t cbCopied = 0;5553 uint32_t cbCopied = 0; 5567 5554 5568 5555 AssertMsgReturn(cPrdtlEntries > 0, ("Copying 0 bytes is not possible\n"), 0); … … 5581 5568 uint32_t cbThisCopy = (aPrdtlEntries[i].u32DescInf & SGLENTRY_DESCINF_DBC) + 1; 5582 5569 5583 cbThisCopy = RT_MIN(cbThisCopy, cbBuf);5570 cbThisCopy = (uint32_t)RT_MIN(cbThisCopy, cbBuf); 5584 5571 5585 5572 /* Copy into SG entry. */ … … 5634 5621 uint32_t cbThisCopy = (aPrdtlEntries[i].u32DescInf & SGLENTRY_DESCINF_DBC) + 1; 5635 5622 5636 cbThisCopy = RT_MIN(cbThisCopy, cbBuf);5623 cbThisCopy = (uint32_t)RT_MIN(cbThisCopy, cbBuf); 5637 5624 5638 5625 /* Copy into buffer. */ … … 5714 5701 } 5715 5702 else 5716 ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, 5717 pAhciReq->u.Io.DataSeg.pvSeg, 5718 pAhciReq->u.Io.DataSeg.cbSeg); 5703 ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, pAhciReq->u.Io.DataSeg.pvSeg, pAhciReq->u.Io.DataSeg.cbSeg); 5719 5704 } 5720 5705 … … 6299 6284 AHCITXDIR enmTxDir = AHCITXDIR_NONE; 6300 6285 bool fLBA48 = false; 6301 CmdHdr *pCmdHdr = &pAhciReq->cmdHdr;6302 6286 6303 6287 AssertMsg(pCmdFis[AHCI_CMDFIS_TYPE] == AHCI_CMDFIS_TYPE_H2D, ("FIS is not a host to device Fis!!\n")); … … 6312 6296 { 6313 6297 uint16_t u16Temp[256]; 6314 size_t cbCopied;6315 6298 6316 6299 /* Fill the buffer. */ … … 6318 6301 6319 6302 /* Copy the buffer. */ 6320 cbCopied = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, 6321 &u16Temp[0], sizeof(u16Temp)); 6303 uint32_t cbCopied = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, &u16Temp[0], sizeof(u16Temp)); 6322 6304 6323 6305 pAhciReq->fFlags |= AHCI_REQ_PIO_DATA; … … 6486 6468 unsigned offLogRead = ((pCmdFis[AHCI_CMDFIS_CYLLEXP] << 8) | pCmdFis[AHCI_CMDFIS_CYLL]) * 512; 6487 6469 unsigned iPage = pCmdFis[AHCI_CMDFIS_SECTN]; 6488 size_t cbCopied;6489 6470 6490 6471 LogFlow(("Trying to read %zu bytes starting at offset %u from page %u\n", cbLogRead, offLogRead, iPage)); … … 6540 6521 */ 6541 6522 bool fAbortedAll = ahciCancelActiveTasks(pAhciPort, pAhciReq); 6542 Assert(fAbortedAll); 6523 Assert(fAbortedAll); NOREF(fAbortedAll); 6543 6524 ahciSendSDBFis(pAhciPort, 0xffffffff, true); 6544 6525 … … 6548 6529 6549 6530 /* Copy the buffer. */ 6550 cbCopied = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, 6551 &aBuf[offLogRead], cbLogRead); 6531 uint32_t cbCopied = ahciCopyToPrdtl(pAhciPort->pDevInsR3, pAhciReq, &aBuf[offLogRead], cbLogRead); 6552 6532 6553 6533 pAhciReq->fFlags |= AHCI_REQ_PIO_DATA; … … 6881 6861 static DECLCALLBACK(int) ahciAsyncIOLoop(PPDMDEVINS pDevIns, PPDMTHREAD pThread) 6882 6862 { 6863 RT_NOREF(pDevIns); 6883 6864 PAHCIPort pAhciPort = (PAHCIPort)pThread->pvUser; 6884 6865 PAHCI pAhci = pAhciPort->CTX_SUFF(pAhci); 6885 int rc = VINF_SUCCESS; 6886 uint64_t u64StartTime = 0; 6887 uint64_t u64StopTime = 0; 6888 uint32_t uIORequestsProcessed = 0; 6889 uint32_t uIOsPerSec = 0; 6890 uint32_t fTasksToProcess = 0; 6866 int rc = VINF_SUCCESS; 6891 6867 6892 6868 ahciLog(("%s: Port %d entering async IO loop.\n", __FUNCTION__, pAhciPort->iLUN)); … … 7070 7046 static DECLCALLBACK(void) ahciR3Info(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs) 7071 7047 { 7048 RT_NOREF(pszArgs); 7072 7049 PAHCI pThis = PDMINS_2_DATA(pDevIns, PAHCI); 7073 7050 … … 7171 7148 static DECLCALLBACK(int) ahciR3SavePrep(PPDMDEVINS pDevIns, PSSMHANDLE pSSM) 7172 7149 { 7150 RT_NOREF(pDevIns, pSSM); 7173 7151 Assert(ahciR3AllAsyncIOIsFinished(pDevIns)); 7174 7152 return VINF_SUCCESS; … … 7180 7158 static DECLCALLBACK(int) ahciR3LoadPrep(PPDMDEVINS pDevIns, PSSMHANDLE pSSM) 7181 7159 { 7160 RT_NOREF(pDevIns, pSSM); 7182 7161 Assert(ahciR3AllAsyncIOIsFinished(pDevIns)); 7183 7162 return VINF_SUCCESS; … … 7189 7168 static DECLCALLBACK(int) ahciR3LiveExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSM, uint32_t uPass) 7190 7169 { 7170 RT_NOREF(uPass); 7191 7171 PAHCI pThis = PDMINS_2_DATA(pDevIns, PAHCI); 7192 7172 … … 7203 7183 7204 7184 static const char *s_apszIdeEmuPortNames[4] = { "PrimaryMaster", "PrimarySlave", "SecondaryMaster", "SecondarySlave" }; 7205 for ( size_t i = 0; i < RT_ELEMENTS(s_apszIdeEmuPortNames); i++)7185 for (uint32_t i = 0; i < RT_ELEMENTS(s_apszIdeEmuPortNames); i++) 7206 7186 { 7207 7187 uint32_t iPort; … … 7439 7419 7440 7420 static const char *s_apszIdeEmuPortNames[4] = { "PrimaryMaster", "PrimarySlave", "SecondaryMaster", "SecondarySlave" }; 7441 for ( size_t i = 0; i < RT_ELEMENTS(s_apszIdeEmuPortNames); i++)7421 for (uint32_t i = 0; i < RT_ELEMENTS(s_apszIdeEmuPortNames); i++) 7442 7422 { 7443 7423 uint32_t iPort; … … 7898 7878 static int ahciR3VpdInit(PPDMDEVINS pDevIns, PAHCIPort pAhciPort, const char *pszName) 7899 7879 { 7900 int rc = VINF_SUCCESS;7901 PAHCI pAhci = PDMINS_2_DATA(pDevIns, PAHCI);7902 7880 7903 7881 /* Generate a default serial number. */ … … 7905 7883 RTUUID Uuid; 7906 7884 7885 int rc = VINF_SUCCESS; 7907 7886 if (pAhciPort->pDrvMedia) 7908 7887 rc = pAhciPort->pDrvMedia->pfnGetUuid(pAhciPort->pDrvMedia, &Uuid); … … 8209 8188 static int ahciR3ResetCommon(PPDMDEVINS pDevIns, bool fConstructor) 8210 8189 { 8190 RT_NOREF(fConstructor); 8211 8191 PAHCI pAhci = PDMINS_2_DATA(pDevIns, PAHCI); 8212 8192
Note:
See TracChangeset
for help on using the changeset viewer.