VirtualBox

Changeset 31087 in vbox


Ignore:
Timestamp:
Jul 25, 2010 8:28:11 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
64035
Message:

AHCI: Add debugger info callback to inspect controller state

File:
1 edited

Legend:

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

    r30723 r31087  
    59395939}
    59405940
     5941/* -=-=-=-=- DBGF -=-=-=-=- */
     5942
     5943/**
     5944 * LsiLogic status info callback.
     5945 *
     5946 * @param   pDevIns     The device instance.
     5947 * @param   pHlp        The output helpers.
     5948 * @param   pszArgs     The arguments.
     5949 */
     5950static DECLCALLBACK(void) ahciR3Info(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
     5951{
     5952    PAHCI pThis = PDMINS_2_DATA(pDevIns, PAHCI);
     5953
     5954    /*
     5955     * Show info.
     5956     */
     5957    pHlp->pfnPrintf(pHlp,
     5958                    "%s#%d: mmio=%RGp ports=%u GC=%RTbool R0=%RTbool\n",
     5959                    pDevIns->pReg->szName,
     5960                    pDevIns->iInstance,
     5961                    pThis->MMIOBase,
     5962                    pThis->cPortsImpl,
     5963                    pThis->fGCEnabled ? true : false,
     5964                    pThis->fR0Enabled ? true : false);
     5965
     5966    /*
     5967     * Show global registers.
     5968     */
     5969    pHlp->pfnPrintf(pHlp, "HbaCap=%#x\n", pThis->regHbaCap);
     5970    pHlp->pfnPrintf(pHlp, "HbaCtrl=%#x\n", pThis->regHbaCtrl);
     5971    pHlp->pfnPrintf(pHlp, "HbaIs=%#x\n", pThis->regHbaIs);
     5972    pHlp->pfnPrintf(pHlp, "HbaPi=%#x", pThis->regHbaPi);
     5973    pHlp->pfnPrintf(pHlp, "HbaVs=%#x\n", pThis->regHbaVs);
     5974    pHlp->pfnPrintf(pHlp, "HbaCccCtl=%#x\n", pThis->regHbaCccCtl);
     5975    pHlp->pfnPrintf(pHlp, "HbaCccPorts=%#x\n", pThis->regHbaCccPorts);
     5976    pHlp->pfnPrintf(pHlp, "PortsInterrupted=%#x\n", pThis->u32PortsInterrupted);
     5977
     5978    /*
     5979     * Per port data.
     5980     */
     5981    for (unsigned i = 0; i < pThis->cPortsImpl; i++)
     5982    {
     5983        PAHCIPort pThisPort = &pThis->ahciPort[i];
     5984
     5985        pHlp->pfnPrintf(pHlp, "Port %d: async=%RTbool device-attached=%RTbool\n",
     5986                        pThisPort->iLUN, pThisPort->fAsyncInterface, pThisPort->pDrvBase != NULL);
     5987        pHlp->pfnPrintf(pHlp, "PortClb=%#x\n", pThisPort->regCLB);
     5988        pHlp->pfnPrintf(pHlp, "PortClbU=%#x\n", pThisPort->regCLBU);
     5989        pHlp->pfnPrintf(pHlp, "PortFb=%#x\n", pThisPort->regFB);
     5990        pHlp->pfnPrintf(pHlp, "PortFbU=%#x\n", pThisPort->regFBU);
     5991        pHlp->pfnPrintf(pHlp, "PortIs=%#x\n", pThisPort->regIS);
     5992        pHlp->pfnPrintf(pHlp, "PortIe=%#x\n", pThisPort->regIE);
     5993        pHlp->pfnPrintf(pHlp, "PortCmd=%#x\n", pThisPort->regCMD);
     5994        pHlp->pfnPrintf(pHlp, "PortTfd=%#x\n", pThisPort->regTFD);
     5995        pHlp->pfnPrintf(pHlp, "PortSig=%#x\n", pThisPort->regSIG);
     5996        pHlp->pfnPrintf(pHlp, "PortSSts=%#x\n", pThisPort->regSSTS);
     5997        pHlp->pfnPrintf(pHlp, "PortSCtl=%#x\n", pThisPort->regSCTL);
     5998        pHlp->pfnPrintf(pHlp, "PortSErr=%#x\n", pThisPort->regSERR);
     5999        pHlp->pfnPrintf(pHlp, "PortSAct=%#x\n", pThisPort->regSACT);
     6000        pHlp->pfnPrintf(pHlp, "PortCi=%#x\n", pThisPort->regCI);
     6001        pHlp->pfnPrintf(pHlp, "PortPhysClb=%RGp\n", pThisPort->GCPhysAddrClb);
     6002        pHlp->pfnPrintf(pHlp, "PortPhysFb=%RGp\n", pThisPort->GCPhysAddrFb);
     6003        pHlp->pfnPrintf(pHlp, "PortActWritePos=%u\n", pThisPort->uActWritePos);
     6004        pHlp->pfnPrintf(pHlp, "PortActReadPos=%u\n", pThisPort->uActReadPos);
     6005        pHlp->pfnPrintf(pHlp, "PortActTasksActive=%u\n", pThisPort->uActTasksActive);
     6006        pHlp->pfnPrintf(pHlp, "PortPoweredOn=%RTbool\n", pThisPort->fPoweredOn);
     6007        pHlp->pfnPrintf(pHlp, "PortSpunUp=%RTbool\n", pThisPort->fSpunUp);
     6008        pHlp->pfnPrintf(pHlp, "PortFirstD2HFisSend=%RTbool\n", pThisPort->fFirstD2HFisSend);
     6009        pHlp->pfnPrintf(pHlp, "PortATAPI=%RTbool\n", pThisPort->fATAPI);
     6010        pHlp->pfnPrintf(pHlp, "PortTasksFinished=%#x\n", pThisPort->u32TasksFinished);
     6011        pHlp->pfnPrintf(pHlp, "PortQueuedTasksFinished=%#x\n", pThisPort->u32QueuedTasksFinished);
     6012        pHlp->pfnPrintf(pHlp, "PortNotificationSend=%RTbool\n", pThisPort->fNotificationSend);
     6013        pHlp->pfnPrintf(pHlp, "PortAsyncIoThreadIdle=%RTbool\n", pThisPort->fAsyncIOThreadIdle);
     6014        pHlp->pfnPrintf(pHlp, "\n");
     6015    }
     6016}
     6017
    59416018/* -=-=-=-=- Helper -=-=-=-=- */
    59426019
     
    72447321    if (RT_FAILURE(rc))
    72457322        return rc;
     7323
     7324    /*
     7325     * Register the info item.
     7326     */
     7327    char szTmp[128];
     7328    RTStrPrintf(szTmp, sizeof(szTmp), "%s%d", pDevIns->pReg->szName, pDevIns->iInstance);
     7329    PDMDevHlpDBGFInfoRegister(pDevIns, szTmp, "AHCI info", ahciR3Info);
    72467330
    72477331    return ahciR3ResetCommon(pDevIns, true /*fConstructor*/);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette