VirtualBox

Changeset 108946 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Apr 11, 2025 9:44:17 AM (4 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168457
Message:

VMM/GIC: bugref:10877 LPI work-in-progress.

Location:
trunk/src/VBox/VMM/VMMAll
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/GICAll.cpp

    r108941 r108946  
    31103110    RT_ZERO(pGicDev->bmLpiPending);
    31113111    pGicDev->uLpiConfigBaseReg.u = 0;
     3112    pGicDev->uLpiPendingBaseReg.u = 0;
    31123113    pGicDev->fEnableLpis = false;
    31133114}
  • trunk/src/VBox/VMM/VMMAll/GITSAll.cpp

    r108941 r108946  
    180180
    181181
    182 #if 1
    183182static const char *gitsGetCommandName(uint8_t uCmdId)
    184183{
     
    210209    }
    211210}
    212 #endif
    213 
    214 
    215 static void gitsCmdQueueSetError(PPDMDEVINS pDevIns, PGITSDEV pGitsDev, GITSDIAG enmError, bool fStallQueue)
    216 {
     211
     212
     213DECL_FORCE_INLINE(const char *) gitsGetDiagDescription(GITSDIAG enmDiag)
     214{
     215    if (enmDiag < RT_ELEMENTS(g_apszGitsDiagDesc))
     216        return g_apszGitsDiagDesc[enmDiag];
     217    return "<Unknown>";
     218}
     219
     220
     221static void gitsCmdQueueSetError(PPDMDEVINS pDevIns, PGITSDEV pGitsDev, GITSDIAG enmDiag, bool fStallQueue)
     222{
     223    Log4Func(("enmDiag=%#RX32 (%s) fStallQueue=%RTbool\n", enmDiag, gitsGetDiagDescription(enmDiag)));
    217224    GITS_CRIT_SECT_ENTER(pDevIns);
    218225
    219226    /* Record the error and stall the queue. */
    220     pGitsDev->enmDiag = enmError;
     227    pGitsDev->enmDiag = enmDiag;
    221228    pGitsDev->cCmdQueueErrors++;
    222229    if (fStallQueue)
     
    258265static void gitsCmdQueueThreadWakeUpIfNeeded(PPDMDEVINS pDevIns, PGITSDEV pGitsDev)
    259266{
     267    Log4Func(("\n"));
    260268    Assert(GITS_CRIT_SECT_IS_OWNER(pDevIns));
    261269    if (    gitsCmdQueueCanProcessRequests(pGitsDev)
    262270        && !gitsCmdQueueIsEmpty(pGitsDev))
    263271    {
     272        Log4Func(("Waking up command-queue thread\n"));
    264273        int const rc = PDMDevHlpSUPSemEventSignal(pDevIns, pGitsDev->hEvtCmdQueue);
    265274        AssertRC(rc);
     
    294303
    295304        case GITS_CTRL_REG_PIDR2_OFF:
    296         {
    297305            Assert(cb == 4);
    298306            Assert(pGitsDev->uArchRev <= GITS_CTRL_REG_PIDR2_ARCHREV_GICV4);
    299             uint8_t const uIdCodeDes1 = GIC_JEDEC_JEP10_DES_1(GIC_JEDEC_JEP106_IDENTIFICATION_CODE);
    300             uReg = RT_BF_MAKE(GITS_BF_CTRL_REG_PIDR2_DES_1,   uIdCodeDes1)
     307            uReg = RT_BF_MAKE(GITS_BF_CTRL_REG_PIDR2_DES_1,   GIC_JEDEC_JEP10_DES_1(GIC_JEDEC_JEP106_IDENTIFICATION_CODE))
    301308                 | RT_BF_MAKE(GITS_BF_CTRL_REG_PIDR2_JEDEC,   1)
    302309                 | RT_BF_MAKE(GITS_BF_CTRL_REG_PIDR2_ARCHREV, pGitsDev->uArchRev);
    303310            break;
    304         }
    305311
    306312        case GITS_CTRL_REG_IIDR_OFF:
     
    312318        case GITS_CTRL_REG_TYPER_OFF:
    313319        case GITS_CTRL_REG_TYPER_OFF + 4:
    314         {
    315320            uReg = pGitsDev->uTypeReg.u >> ((offReg & 7) << 3 /* to bits */);
    316321            break;
    317         }
    318322
    319323        case GITS_CTRL_REG_CBASER_OFF:
     
    361365    Assert(cb == 8 || cb == 4);
    362366    Assert(!(offReg & 3));
     367    Log4Func(("offReg=%u uValue=%#RX64 cb=%u\n", offReg, uValue, cb));
    363368
    364369    /*
     
    435440    Assert(cb == 8 || cb == 4);
    436441    Assert(!(offReg & 3));
     442    Log4Func(("offReg=%u uValue=%#RX64 cb=%u\n", offReg, uValue, cb));
    437443    AssertReleaseMsgFailed(("offReg=%#x uValue=%#RX64 [%u-bit]\n", offReg, uValue, cb << 3));
    438444}
     
    496502    /* Basic info, GITS_CTLR and GITS_TYPER. */
    497503    {
    498         GITSDIAG const    enmDiag  = pGitsDev->enmDiag;
    499         const char *const pszDiag  = enmDiag < RT_ELEMENTS(g_apszGitsDiagDesc) ? g_apszGitsDiagDesc[enmDiag] : "(Unknown)";
    500         uint32_t const    uCtrlReg = pGitsDev->uCtrlReg;
     504        uint32_t const uCtrlReg = pGitsDev->uCtrlReg;
     505        GITSDIAG const enmDiag  = pGitsDev->enmDiag;
    501506        pHlp->pfnPrintf(pHlp, "  uArchRev           = %u\n",          pGitsDev->uArchRev);
    502         pHlp->pfnPrintf(pHlp, "  Errors             = %RU64\n",       pGitsDev->cCmdQueueErrors);
    503         pHlp->pfnPrintf(pHlp, "  Diagnostic         = %#RX32 (%s)\n", enmDiag, pszDiag);
     507        pHlp->pfnPrintf(pHlp, "  Cmd queue errors   = %RU64\n",       pGitsDev->cCmdQueueErrors);
     508        pHlp->pfnPrintf(pHlp, "  Last error         = %#RX32 (%s)\n", enmDiag, gitsGetDiagDescription(enmDiag));
    504509        pHlp->pfnPrintf(pHlp, "  GITS_CTLR          = %#RX32\n",      uCtrlReg);
    505510        pHlp->pfnPrintf(pHlp, "    Enabled            = %RTbool\n",   RT_BF_GET(uCtrlReg, GITS_BF_CTRL_REG_CTLR_ENABLED));
     
    584589DECL_HIDDEN_CALLBACK(int) gitsR3CmdQueueProcess(PPDMDEVINS pDevIns, PGITSDEV pGitsDev, void *pvBuf, uint32_t cbBuf)
    585590{
     591    Log4Func(("cbBuf=%RU32\n", cbBuf));
     592
    586593    /* Hold the critical section as we could be accessing the device state simultaneously with MMIO accesses. */
    587594    GITS_CRIT_SECT_ENTER(pDevIns);
     
    710717DECL_HIDDEN_CALLBACK(int) gitsSendMsi(PVMCC pVM, PCIBDF uBusDevFn, PCMSIMSG pMsi, uint32_t uEventId, uint32_t uTagSrc)
    711718{
     719    Log4Func(("uBusDevFn=%#RX32 uEventId=%#RX32\n", uBusDevFn, uEventId));
    712720    RT_NOREF(pVM, uBusDevFn, pMsi, uEventId, uTagSrc);
    713721    return VERR_NOT_IMPLEMENTED;
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