VirtualBox

Changeset 108830 in vbox for trunk/src


Ignore:
Timestamp:
Apr 2, 2025 12:39:01 PM (13 days ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168276
Message:

VMM/GIC: bugref:10877 GITS work-in-progress. Debug info [2].

File:
1 edited

Legend:

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

    r108829 r108830  
    314314        static uint32_t const s_acbPageSize[] = { _4K, _16K, _64K, _64K };
    315315        static const char* const s_apszType[] = { "UnImpl", "Devices", "vPEs", "Intr Collections" };
     316
    316317        uint64_t const uReg        = pGitsDev->aItsTableRegs[8].u;
    317         uint16_t const cPages      = RT_BF_GET(uReg, GITS_BF_CTRL_REG_BASER_SIZE) + 1;
     318        uint16_t const uSize       = RT_BF_GET(uReg, GITS_BF_CTRL_REG_BASER_SIZE);
     319        uint16_t const cPages      = uSize > 0 ? uSize + 1 : 0;
    318320        uint8_t const  idxPageSize = RT_BF_GET(uReg, GITS_BF_CTRL_REG_BASER_PAGESIZE);
    319321        uint64_t const cbItsTable  = cPages * s_acbPageSize[idxPageSize];
     
    322324        const char *pszType        = s_apszType[idxType];
    323325        pHlp->pfnPrintf(pHlp, "  aItsTableReg[%u]      = %#RX64\n", i, uReg);
    324         pHlp->pfnPrintf(pHlp, "    Size                  = %#x (%u page(s) of %.Rhcb each)\n", cPages - 1, cPages, cbItsTable);
     326        pHlp->pfnPrintf(pHlp, "    Size                  = %#x (pages=%u total=%.Rhcb)\n", uSize, cPages, cbItsTable);
    325327        pHlp->pfnPrintf(pHlp, "    Page size             = %#x (%.Rhcb)\n", idxPageSize, s_acbPageSize[idxPageSize]);
    326328        pHlp->pfnPrintf(pHlp, "    Shareability          = %#x\n", RT_BF_GET(uReg, GITS_BF_CTRL_REG_BASER_SHAREABILITY));
     
    333335        pHlp->pfnPrintf(pHlp, "    Valid                 = %RTbool\n", RT_BOOL(RT_BF_GET(uReg, GITS_BF_CTRL_REG_BASER_VALID)));
    334336    }
    335     pHlp->pfnPrintf(pHlp, "\n");
    336337
    337338    /* GITS_CBASER. */
    338339    {
    339         uint64_t const uReg = pGitsDev->uCmdBaseReg.u;
    340         uint8_t const uSize = RT_BF_GET(uReg, GITS_BF_CTRL_REG_CBASER_SIZE);
     340        uint64_t const uReg   = pGitsDev->uCmdBaseReg.u;
     341        uint8_t const uSize   = RT_BF_GET(uReg, GITS_BF_CTRL_REG_CBASER_SIZE);
     342        uint16_t const cPages = uSize > 0 ? uSize + 1 : 0;
    341343        pHlp->pfnPrintf(pHlp, "  uCmdBaseReg           = %#RX64\n", uReg);
    342         pHlp->pfnPrintf(pHlp, "    Size                  = %#x (%u %.Rhcb pages)\n", uSize, uSize + 1, _4K * (uSize + 1));
     344        pHlp->pfnPrintf(pHlp, "    Size                  = %#x (pages=%u total=%.Rhcb)\n", uSize, cPages, _4K * cPages);
    343345        pHlp->pfnPrintf(pHlp, "    Shareability          = %#x\n",      RT_BF_GET(uReg, GITS_BF_CTRL_REG_CBASER_SHAREABILITY));
    344346        pHlp->pfnPrintf(pHlp, "    Phys addr             = %#RX64\n",   uReg & GITS_BF_CTRL_REG_CBASER_PHYS_ADDR_MASK);
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