VirtualBox

Changeset 80522 in vbox for trunk/src


Ignore:
Timestamp:
Aug 31, 2019 9:19:08 PM (5 years ago)
Author:
vboxsync
Message:

Storage/DevVirtioSCSI.cpp: Changes to logging to by default just log the SCSI Commands and Response, and format them to be legible. Still trying to understand the SCSI dialog the logging shows. See bugref:9440, Comment #62 for a log out the exchanges and comments

Location:
trunk/src/VBox/Devices
Files:
4 edited

Legend:

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

    r80521 r80522  
    487487     out[0] = 0x01;  out[1] = target; out[2] = (lun >> 8) & 0x40;  out[3] = lun & 0xff;  *((uint16_t *)out + 4) = 0;
    488488
     489/**
     490 * Do a hex dump of a buffer
     491 * @param   pv       Pointer to array to dump
     492 * @param   cb       Number of characters to dump
     493 * @param   uBase    Base address of offset addresses displayed
     494 * @param   pszTitle Header line/title for the dump
     495 *
     496 */
     497void virtioScsiHexDump(uint8_t *pv, size_t cb, uint32_t uBase, const char *pszTitle) {
     498    if (pszTitle)
     499        Log2(("%s [%d bytes]:\n", pszTitle, cb));
     500    for (uint32_t i = 0; i < RT_MAX(1, (cb / 16)); i++)
     501    {
     502        uint32_t uAddr = i * 16 + uBase;
     503        Log2(("%x%x%x%x: ", (uAddr >> 12) & 0xf, (uAddr >> 8) & 0xf, (uAddr >> 4) & 0xf, uAddr & 0xf));
     504        for (int j = 0; j < 16; j++)
     505        {
     506            if (i * 16 + j >= cb)
     507                Log2(("-- %s", (j + 1) % 8 ? "" : "  "));
     508            else
     509            {
     510                uint8_t u8 = pv[i * 16 + j];
     511                Log2(("%x%x %s", u8 >> 4 & 0xf, u8 & 0xf, (j + 1) % 8 ? "" : "  "));
     512            }
     513        }
     514        for (int j = 0; j < 16; j++ ) {
     515                if (i * 16 + j >= cb)
     516                Log2((" "));
     517                else
     518                {
     519                    uint8_t u8 = pv[i * 16 + j];
     520                Log2(("%c", u8 >= 0x20 && u8 <= 0x7e ? u8 : '.'));
     521            }
     522            }
     523        Log2(("\n"));
     524   }
     525   Log2(("\n"));
     526}
    489527DECLINLINE(const char *) virtioGetTMFTypeText(uint32_t uSubType)
    490528{
     
    567605}
    568606
     607uint8_t virtioScsiEstimateCdbLen(uint8_t uCmd, uint8_t cbMax)
     608{
     609    if (uCmd < 0x1f)
     610        return 6;
     611    else if (uCmd >= 0x20 && uCmd < 0x60)
     612        return 10;
     613    else if (uCmd >= 0x60 && uCmd < 0x80)
     614        return cbMax;
     615    else if (uCmd >= 0x80 && uCmd < 0xa0)
     616        return 16;
     617    else if (uCmd >= 0xa0 && uCmd < 0xC0)
     618        return 12;
     619    else
     620        return cbMax;
     621}
    569622DECLINLINE(uint8_t) virtioScsiMapVerrToVirtio(uint32_t vboxRc)
    570623{
     
    818871 * @returns virtual box status code
    819872 */
    820 static int virtioScsiReqComplete(PVIRTIOSCSI pThis, uint16_t qIdx, uint32_t rcReq)
     873static int virtioScsiReqFinish(PVIRTIOSCSI pThis, uint16_t qIdx, uint32_t rcReq)
    821874{
    822875    struct REQ_RESP_HDR respHdr;
     
    832885    virtioQueueSync(pThis->hVirtio, qIdx);
    833886    LogFunc(("Response code: %s\n", virtioGetReqRespText(respHdr.uResponse)));
     887    Log(("---------------------------------------------------------------------------------\n"));
    834888    return VINF_SUCCESS;
    835889}
    836890
    837 static int virtioScsiR3ReqComplete(PVIRTIOSCSI pThis, PVIRTIOSCSIREQ pReq, int rcReq)
     891static int virtioScsiReqFinish(PVIRTIOSCSI pThis, PVIRTIOSCSIREQ pReq, int rcReq)
    838892{
    839893    PVIRTIOSCSITARGET pTarget = pReq->pTarget;
     
    860914
    861915
    862     LogFunc(("SCSI Status = %x (%s)\n", pReq->uStatus, virtioGetScsiStatusText(pReq->uStatus)));
    863     LogFunc(("Response code: %s\n", virtioGetReqRespText(respHdr.uResponse)));
     916    LogFunc(("Status: %s (0x%x%x)      Response: %s (0x%x%x)\n",
     917                virtioGetScsiStatusText(pReq->uStatus), pReq->uStatus >> 4 & 0xf, pReq->uStatus & 0xf,
     918                virtioGetReqRespText(respHdr.uResponse), respHdr.uResponse >> 4 & 0xf, respHdr.uResponse & 0xf));
    864919
    865920    if (pReq->cbSense)
    866         LogFunc(("Sense: %.*Rhxs\n", pReq->cbSense, pReq->pbSense));
     921    {
     922        Log2Func(("Sense: %s\n", SCSISenseText(pReq->pbSense[2])));
     923        Log2Func(("Sense Ext3: %s\n", SCSISenseExtText(pReq->pbSense[12], pReq->pbSense[12])));
     924        virtioScsiHexDump( pReq->pbSense, pReq->cbSense, 0, "\nSense");
     925    }
    867926
    868927    if (pReq->cbDataIn)
    869         LogFunc(("Data In: %.*Rhxs\n", pReq->cbDataIn, pReq->pbDataIn));
     928        virtioScsiHexDump( pReq->pbDataIn, pReq->cbDataIn, 0, "\ndatain");
    870929
    871930    if (pReq->cbPiIn)
    872         LogFunc(("Pi In: %.*Rhxs\n", pReq->cbPiIn, pReq->pbPiIn));
    873 
    874     LogFunc(("Residual: %d\n", cbResidual));
    875 
     931        virtioScsiHexDump( pReq->pbPiIn, pReq->cbPiIn, 0, "\nPi in");
     932
     933    if (cbResidual)
     934        Log(("Residual: %d\n", cbResidual));
     935
     936    Log(("---------------------------------------------------------------------------------\n"));
    876937    int cSegs = 0;
    877938    RTSGSEG aReqSegs[4];
     
    932993    RT_NOREF(hIoReq);
    933994    PVIRTIOSCSITARGET pTarget = RT_FROM_MEMBER(pInterface, VIRTIOSCSITARGET, IMediaExPort);
    934     virtioScsiR3ReqComplete(pTarget->CTX_SUFF(pVirtioScsi), (PVIRTIOSCSIREQ)pvIoReqAlloc, rcReq);
     995    virtioScsiReqFinish(pTarget->CTX_SUFF(pVirtioScsi), (PVIRTIOSCSIREQ)pvIoReqAlloc, rcReq);
    935996    return VINF_SUCCESS;
    936997}
    937998
    938 static int virtioScsiSubmitReq(PVIRTIOSCSI pThis, uint16_t qIdx, PRTSGBUF pInSgBuf, PRTSGBUF pOutSgBuf)
     999static int virtioScsiReqSubmit(PVIRTIOSCSI pThis, uint16_t qIdx, PRTSGBUF pInSgBuf, PRTSGBUF pOutSgBuf)
    9391000{
    9401001    RT_NOREF(pInSgBuf);
     
    9761037    uint32_t uLUN = (pVirtqReq->cmdHdr.uLUN[2] << 8 | pVirtqReq->cmdHdr.uLUN[3]) & 0x3fff;
    9771038
    978     LogFunc(("LUN: %.8Rhxs, (target:%d, lun:%d) id: %RX64, attr: %x, prio: %d, crn: %x\n"
    979              "                     CDB: %.*Rhxs\n",
    980             pVirtqReq->cmdHdr.uLUN, uTarget, uLUN, pVirtqReq->cmdHdr.uId,
    981             pVirtqReq->cmdHdr.uTaskAttr, pVirtqReq->cmdHdr.uPrio, pVirtqReq->cmdHdr.uCrn, cbCdb,  pbCdb));
     1039    LogFunc(("[%s]  (Target: %d LUN: %d)  CDB: %.*Rhxs\n",
     1040         SCSICmdText(pbCdb[0]), uTarget, uLUN,
     1041            virtioScsiEstimateCdbLen(pbCdb[0], pThis->virtioScsiConfig.uCdbSize), pbCdb));
     1042
     1043    Log3Func(("   id: %RX64, attr: %x, prio: %d, crn: %x\n",
     1044        pVirtqReq->cmdHdr.uId, pVirtqReq->cmdHdr.uTaskAttr, pVirtqReq->cmdHdr.uPrio, pVirtqReq->cmdHdr.uCrn));
    9821045
    9831046    if (uTarget >= pThis->cTargets)
    9841047    {
    985         virtioScsiReqComplete(pThis, qIdx, VERR_IO_BAD_UNIT);
     1048        virtioScsiReqFinish(pThis, qIdx, VERR_IO_BAD_UNIT);
    9861049        return VINF_SUCCESS;
    9871050    }
    9881051    if (uLUN != 0)
    9891052    {
    990         virtioScsiReqComplete(pThis, qIdx, VERR_IO_BAD_UNIT);
     1053        virtioScsiReqFinish(pThis, qIdx, VERR_IO_BAD_UNIT);
    9911054        return VINF_SUCCESS;
    9921055    }
     
    10151078
    10161079    if (cbDataOut)
    1017         LogFunc(("dataout[]: %.*Rhxs\n", cbDataOut, pVirtqReq->uDataOut));
     1080        virtioScsiHexDump( pVirtqReq->uDataOut, cbDataOut, 0, "\ndataout");
     1081
    10181082
    10191083    if (cbPiOut)
    1020         LogFunc(("pi_out[]: %.*Rhxs\n", cbPiOut, pVirtqReq->uPiOut));
     1084        virtioScsiHexDump(pVirtqReq->uPiOut, cbPiOut, 0, "\nPi out");
    10211085
    10221086    PDMMEDIAEXIOREQ   hIoReq = NULL;
     
    10641128        }
    10651129
    1066         LogFunc(("Submitting req (target=%d, LUN=%x) on %s\n", uTarget, uLUN, QUEUENAME(qIdx)));
     1130        Log3Func(("Submitting req on %s\n", uTarget, uLUN, QUEUENAME(qIdx)));
    10671131
    10681132        rc = pIMediaEx->pfnIoReqSendScsiCmd(pIMediaEx, pReq->hIoReq, uLUN, pbCdb, cbCdb,
     
    10731137        {
    10741138            pIMediaEx->pfnIoReqFree(pIMediaEx, hIoReq);
    1075             virtioScsiReqComplete(pThis, qIdx, rc);
     1139            virtioScsiReqFinish(pThis, qIdx, rc);
    10761140            return VINF_SUCCESS;
    10771141        }
    10781142    } else {
    1079         virtioScsiReqComplete(pThis, qIdx, VERR_IO_NOT_READY);
     1143        virtioScsiReqFinish(pThis, qIdx, VERR_IO_NOT_READY);
    10801144        return VINF_SUCCESS;
    10811145
     
    11801244            virtioGetControlAsyncMaskText(szTypeText, sizeof(szTypeText), pScsiCtrlAnQuery->uEventsRequested);
    11811245
    1182             LogFunc(("%s, VirtIO LUN: %.8Rhxs\n%*sAsync Query, types: %s\n",
     1246            Log2Func(("%s, VirtIO LUN: %.8Rhxs\n%*sAsync Query, types: %s\n",
    11831247                QUEUENAME(qIdx), pScsiCtrlAnQuery->uLUN, CBQUEUENAME(qIdx) + 30, "", szTypeText));
    11841248
     
    11961260
    11971261            if (pScsiCtrlAnSubscribe->uEventsRequested & ~SUBSCRIBABLE_EVENTS)
    1198                 Log(("Unsupported bits in event subscription event mask: 0x%x\n", pScsiCtrlAnSubscribe->uEventsRequested));
     1262                LogFunc(("Unsupported bits in event subscription event mask: 0x%x\n", pScsiCtrlAnSubscribe->uEventsRequested));
    11991263
    12001264            char szTypeText[128];
    12011265            virtioGetControlAsyncMaskText(szTypeText, sizeof(szTypeText), pScsiCtrlAnSubscribe->uEventsRequested);
    12021266
    1203             LogFunc(("%s, VirtIO LUN: %.8Rhxs\n%*sAsync Subscribe, types: %s\n",
     1267            Log2Func(("%s, VirtIO LUN: %.8Rhxs\n%*sAsync Subscribe, types: %s\n",
    12041268                QUEUENAME(qIdx), pScsiCtrlAnSubscribe->uLUN, CBQUEUENAME(qIdx) + 30, "", szTypeText));
    12051269
     
    12211285        }
    12221286        default:
    1223             Log(("Unknown control type extracted from %s: %d\n", QUEUENAME(qIdx), pScsiCtrl->uType));
     1287            LogFunc(("Unknown control type extracted from %s: %d\n", QUEUENAME(qIdx), pScsiCtrl->uType));
    12241288
    12251289            uResponse = VIRTIOSCSI_S_FAILURE;
     
    12731337            if (!fNotificationSent)
    12741338            {
    1275                 LogFunc(("%s worker sleeping...\n", QUEUENAME(qIdx)));
     1339                Log3Func(("%s worker sleeping...\n", QUEUENAME(qIdx)));
    12761340                Assert(ASMAtomicReadBool(&pWorker->fSleeping));
    12771341                rc = SUPSemEventWaitNoResume(pThis->pSupDrvSession, pWorker->hEvtProcess, RT_INDEFINITE_WAIT);
     
    12791343                if (RT_UNLIKELY(pThread->enmState != PDMTHREADSTATE_RUNNING))
    12801344                    break;
    1281                 LogFunc(("%s worker woken\n", QUEUENAME(qIdx)));
     1345                Log3Func(("%s worker woken\n", QUEUENAME(qIdx)));
    12821346                ASMAtomicWriteBool(&pWorker->fNotified, false);
    12831347            }
    12841348            ASMAtomicWriteBool(&pWorker->fSleeping, false);
    12851349        }
    1286         LogFunc(("fetching next descriptor chain from %s\n", QUEUENAME(qIdx)));
     1350        Log3Func(("fetching next descriptor chain from %s\n", QUEUENAME(qIdx)));
    12871351        rc = virtioQueueGet(pThis->hVirtio, qIdx, true, &pInSgBuf, &pOutSgBuf);
    12881352        if (rc == VERR_NOT_AVAILABLE)
    12891353        {
    1290             LogFunc(("Nothing found in %s\n", QUEUENAME(qIdx)));
     1354            Log2Func(("Nothing found in %s\n", QUEUENAME(qIdx)));
    12911355            continue;
    12921356        }
     
    12961360            virtioScsiCtrl(pThis, qIdx, pInSgBuf, pOutSgBuf);
    12971361        else
    1298             virtioScsiSubmitReq(pThis, qIdx, pInSgBuf, pOutSgBuf);
     1362            virtioScsiReqSubmit(pThis, qIdx, pInSgBuf, pOutSgBuf);
    12991363    }
    13001364    return VINF_SUCCESS;
     
    15051569    if (qIdx == CONTROLQ_IDX || IS_REQ_QUEUE(qIdx))
    15061570    {
    1507         LogFunc(("%s has available data\n", QUEUENAME(qIdx)));
     1571        Log3Func(("%s has available data\n", QUEUENAME(qIdx)));
    15081572        /** Wake queue's worker thread up if sleeping */
    15091573        if (!ASMAtomicXchgBool(&pWorker->fNotified, true))
     
    15111575            if (ASMAtomicReadBool(&pWorker->fSleeping))
    15121576            {
    1513                 LogFunc(("waking %s worker.\n", QUEUENAME(qIdx)));
     1577                Log3Func(("waking %s worker.\n", QUEUENAME(qIdx)));
    15141578                int rc = SUPSemEventSignal(pThis->pSupDrvSession, pWorker->hEvtProcess);
    15151579                AssertRC(rc);
     
    15191583    else if (qIdx == EVENTQ_IDX)
    15201584    {
    1521         LogFunc(("Driver queued buffer(s) to %s\n"));
     1585        Log3Func(("Driver queued buffer(s) to %s\n"));
    15221586        if (ASMAtomicXchgBool(&pThis->fEventsMissed, false))
    15231587            virtioScsiReportEventsMissed(pThis, 0);
     
    15291593static DECLCALLBACK(void) virtioScsiStatusChanged(VIRTIOHANDLE hVirtio, void *pClient,  bool fVirtioReady)
    15301594{
    1531     LogFunc(("\n"));
    15321595    RT_NOREF(hVirtio);
    15331596    PVIRTIOSCSI pThis = (PVIRTIOSCSI)pClient;
     
    15351598    if (fVirtioReady)
    15361599    {
    1537         LogFunc(("VirtIO ready\n"));
     1600        LogFunc(("VirtIO ready\n---------------------------------------------------------------------------------"));
    15381601        uint64_t features = virtioGetNegotiatedFeatures(hVirtio);
    15391602        pThis->fHasT10pi     = features & VIRTIO_SCSI_F_T10_PI;
  • trunk/src/VBox/Devices/VirtIO/Virtio_1_0.cpp

    r80499 r80522  
    8181            if (pszDepiction[i] == ' ' && first++)
    8282                pszDepiction[i] = '.';
    83         Log(("%s: Guest %s %s 0x%s\n",
     83        Log3Func(("%s: Guest %s %s 0x%s\n",
    8484                  pszFunc, fWrite ? "wrote" : "read ", pszDepiction, pszFormattedVal));
    8585    }
    8686    else /* odd number or oversized access, ... log inline hex-dump style */
    8787    {
    88         Log(("%s: Guest %s %s%s[%d:%d]: %.*Rhxs\n",
     88        Log3Func(("%s: Guest %s %s%s[%d:%d]: %.*Rhxs\n",
    8989              pszFunc, fWrite ? "wrote" : "read ", pszMember,
    9090              pszIdx, uOffset, uOffset + cb, cb, pv));
     
    200200    uint16_t uDescIdx = pDescChain->uHeadIdx;
    201201
    202     Log2Func(("%s DESC CHAIN: (head) desc_idx=%u [avail_idx=%u]\n",
     202    Log3Func(("%s DESC CHAIN: (head) desc_idx=%u [avail_idx=%u]\n",
    203203            pVirtqProxy->szVirtqName, pDescChain->uHeadIdx, pVirtqProxy->uAvailIdx));
    204204
     
    238238        if (desc.fFlags & VIRTQ_DESC_F_WRITE)
    239239        {
    240             Log2Func(("%s IN  desc_idx=%u seg=%u addr=%RGp cb=%u\n",
     240            Log3Func(("%s IN  desc_idx=%u seg=%u addr=%RGp cb=%u\n",
    241241                QUEUENAME(qIdx), uDescIdx, pDescChain->cSegsIn, desc.pGcPhysBuf, desc.cb));
    242242
     
    245245        else
    246246        {
    247             Log2Func(("%s OUT desc_idx=%u seg=%u addr=%RGp cb=%u\n",
     247            Log3Func(("%s OUT desc_idx=%u seg=%u addr=%RGp cb=%u\n",
    248248                QUEUENAME(qIdx), uDescIdx, pDescChain->cSegsOut, desc.pGcPhysBuf, desc.cb));
    249249            pSeg = &(pDescChain->aSegsOut[pDescChain->cSegsOut++]);
     
    264264        *ppOutSegs = &pVirtqProxy->outSgBuf;
    265265
    266     Log2Func(("%s -- segs out: %u,  segs in: %u --\n",
     266    Log3Func(("%s -- segs out: %u,  segs in: %u --\n",
    267267              pVirtqProxy->szVirtqName, pDescChain->cSegsOut, pDescChain->cSegsIn));
    268268
     
    290290    size_t cbRemain = RTSgBufCalcTotalLength(pBufSrc);
    291291    uint16_t uUsedIdx  = virtioReadUsedRingIdx(pVirtio, qIdx);
    292     Log2Func(("Copying client data to %s, desc chain (head desc_idx %d)\n",
     292    Log3Func(("Copying client data to %s, desc chain (head desc_idx %d)\n",
    293293               QUEUENAME(qIdx), uUsedIdx));
    294294
    295     while (cbRemain )
     295    while (cbRemain)
    296296    {
    297297        uint64_t dstSgStart = (uint64_t)pBufDst->paSegs[pBufDst->idxSeg].pvSeg;
     
    326326                        pDescChain->uHeadIdx,
    327327                        pDescChain->cSegsIn);
    328     Log2Func(("Copied %u bytes to %u byte buffer\n                Write ahead used_idx=%d, %s used_idx=%d\n",
     328    Log3Func(("Copied %u bytes to %u byte buffer\n                Write ahead used_idx=%d, %s used_idx=%d\n",
    329329             cbWritten, cbInSgBuf, pVirtqProxy->uUsedIdx,  QUEUENAME(qIdx), uUsedIdx));
    330330    return VINF_SUCCESS;
     
    345345
    346346    uint16_t uIdx = virtioReadUsedRingIdx(pVirtio, qIdx);
    347     Log2Func(("Updating %s used_idx from %u to %u\n",
     347    Log3Func(("Updating %s used_idx from %u to %u\n",
    348348              QUEUENAME(qIdx), uIdx, pVirtqProxy->uUsedIdx));
    349349
     
    362362
    363363    PVIRTQ_PROXY_T pVirtqProxy = &pVirtio->virtqProxy[qIdx];
    364     Log2Func(("%s\n", pVirtqProxy->szVirtqName));
     364    Log3Func(("%s\n", pVirtqProxy->szVirtqName));
    365365
    366366
     
    392392                return;
    393393            }
    394             Log2Func(("...skipping interrupt: VIRTIO_F_EVENT_IDX set but threshold not reached\n"));
     394            Log3Func(("...skipping interrupt: VIRTIO_F_EVENT_IDX set but threshold not reached\n"));
    395395        }
    396396        else
     
    402402                return;
    403403            }
    404             Log2Func(("...skipping interrupt. Guest flagged VIRTQ_AVAIL_F_NO_INTERRUPT for queue\n"));
     404            Log3Func(("...skipping interrupt. Guest flagged VIRTQ_AVAIL_F_NO_INTERRUPT for queue\n"));
    405405
    406406        }
     
    450450{
    451451   if (uCause == VIRTIO_ISR_VIRTQ_INTERRUPT)
    452        LogFlowFunc(("reason: buffer added to 'used' ring.\n"));
     452       Log3Func(("reason: buffer added to 'used' ring.\n"));
    453453   else
    454454   if (uCause == VIRTIO_ISR_DEVICE_CONFIG)
    455        LogFlowFunc(("reason: device config change\n"));
     455       Log3Func(("reason: device config change\n"));
    456456
    457457    pVirtio->uISR |= uCause;
     
    636636        {
    637637            pVirtio->uDeviceStatus = *(uint8_t *)pv;
    638             Log2Func(("Guest wrote uDeviceStatus ................ ("));
     638            Log3Func(("Guest wrote uDeviceStatus ................ ("));
    639639            virtioLogDeviceStatus(pVirtio->uDeviceStatus);
    640640            Log((")\n"));
     
    653653        else /* Guest READ pCommonCfg->uDeviceStatus */
    654654        {
    655             Log2Func(("Guest read  uDeviceStatus ................ ("));
     655            Log3Func(("Guest read  uDeviceStatus ................ ("));
    656656            *(uint32_t *)pv = pVirtio->uDeviceStatus;
    657657            virtioLogDeviceStatus(pVirtio->uDeviceStatus);
     
    758758        {
    759759            ++pVirtio->uConfigGeneration;
    760             Log2Func(("Bumped cfg. generation to %d because %s%s\n",
     760            Log3Func(("Bumped cfg. generation to %d because %s%s\n",
    761761                pVirtio->uConfigGeneration,
    762762                fDevSpecificFieldChanged ? "<dev cfg changed> " : "",
     
    775775    {
    776776        *(uint8_t *)pv = pVirtio->uISR;
    777         Log2Func(("Read and clear ISR\n"));
     777        Log3Func(("Read and clear ISR\n"));
    778778        pVirtio->uISR = 0; /** VirtIO specification requires reads of ISR to clear it */
    779779        virtioLowerInterrupt(pVirtio);
    780780    }
    781781    else {
    782        Log2Func(("Bad read access to mapped capabilities region:\n"
     782       LogFunc(("Bad read access to mapped capabilities region:\n"
    783783                "                  pVirtio=%#p GCPhysAddr=%RGp cb=%u\n",
    784784                pVirtio, GCPhysAddr, pv, cb, pv, cb));
  • trunk/src/VBox/Devices/VirtIO/Virtio_1_0.h

    r80499 r80522  
    320320                            bool fWrite, bool fHasIndex, uint32_t idx);
    321321
     322
    322323#endif /* !VBOX_INCLUDED_SRC_VirtIO_Virtio_1_0_h */
  • trunk/src/VBox/Devices/VirtIO/Virtio_1_0_impl.h

    r80499 r80522  
    517517        int primed = 0;
    518518        if (status & VIRTIO_STATUS_ACKNOWLEDGE)
    519             Log(("ACKNOWLEDGE",   primed++));
     519            Log3(("ACKNOWLEDGE",   primed++));
    520520        if (status & VIRTIO_STATUS_DRIVER)
    521             Log(("%sDRIVER",      primed++ ? " | " : ""));
     521            Log3(("%sDRIVER",      primed++ ? " | " : ""));
    522522        if (status & VIRTIO_STATUS_FEATURES_OK)
    523             Log(("%sFEATURES_OK", primed++ ? " | " : ""));
     523            Log3(("%sFEATURES_OK", primed++ ? " | " : ""));
    524524        if (status & VIRTIO_STATUS_DRIVER_OK)
    525             Log(("%sDRIVER_OK",   primed++ ? " | " : ""));
     525            Log3(("%sDRIVER_OK",   primed++ ? " | " : ""));
    526526        if (status & VIRTIO_STATUS_FAILED)
    527             Log(("%sFAILED",      primed++ ? " | " : ""));
     527            Log3(("%sFAILED",      primed++ ? " | " : ""));
    528528        if (status & VIRTIO_STATUS_DEVICE_NEEDS_RESET)
    529             Log(("%sNEEDS_RESET", primed++ ? " | " : ""));
     529            Log3(("%sNEEDS_RESET", primed++ ? " | " : ""));
    530530    }
    531531}
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