VirtualBox

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


Ignore:
Timestamp:
Apr 8, 2025 7:42:07 AM (4 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168328
Message:

VMM/GIC: bugref:10877 GITS command-queue, work-in-progress.

File:
1 edited

Legend:

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

    r108872 r108877  
    6565#define GITS_CRIT_SECT_IS_OWNER(a_pDevIns)      PDMDevHlpCritSectIsOwner((a_pDevIns), (a_pDevIns)->CTX_SUFF(pCritSectRo))
    6666
     67/** GITS diagnostic enum description expansion.
     68 * The below construct ensures typos in the input to this macro are caught
     69 * during compile time. */
     70#define GITSDIAG_DESC(a_Name)        RT_CONCAT(kGitsDiag_, a_Name) < kGitsDiag_End ? RT_STR(a_Name) : "Ignored"
     71
    6772
    6873/*********************************************************************************************************************************
     
    8186AssertCompileSize(GITSITE, 8);
    8287
    83 /** GITS diagnostic enum description expansion.
    84  * The below construct ensures typos in the input to this macro are caught
    85  * during compile time. */
    86 #define GITSDIAG_DESC(a_Name)        RT_CONCAT(kGitsDiag_, a_Name) < kGitsDiag_End ? RT_STR(a_Name) : "Ignored"
     88
     89/*********************************************************************************************************************************
     90*   Global Variables                                                                                                             *
     91*********************************************************************************************************************************/
    8792/** GITS diagnostics description for members in GITSDIAG. */
    8893static const char *const g_apszGitsDiagDesc[] =
     
    9499AssertCompile(RT_ELEMENTS(g_apszGitsDiagDesc) == kGitsDiag_End);
    95100#undef GITSDIAG_DESC
    96 
    97 
    98 /*********************************************************************************************************************************
    99 *   Global Variables                                                                                                             *
    100 *********************************************************************************************************************************/
    101101
    102102
     
    420420    pGitsDev->uCmdReadReg        = 0;
    421421    pGitsDev->uCmdWriteReg       = 0;
     422    RT_ZERO(pGitsDev->auCt);
    422423}
    423424
     
    571572                        {
    572573                            Assert(!RT_BF_GET(pGitsDev->uTypeReg.u, GITS_BF_CTRL_REG_TYPER_PTA)); /* GITS_TYPER is read-only */
    573                             /** @todo Implementing me. Figure out interrupt collection, HCC etc. */
    574                             //uint64_t const uDw2 = pCmd->au64[2].u;
    575                             //bool const     fValid            = RT_BF_GET(uDw2, GITS_BF_CMD_MAPC_DW2_VALID);
    576                             //uint32_t const uTargetCpuId      = RT_BF_GET(uDw2, GITS_BF_CMD_MAPC_DW2_RDBASE);
    577                             //uint16_t const uIntrCollectionId = RT_BF_GET(uDw2, GITS_BF_CMD_MAPC_DW2_IC_ID);
     574                            uint64_t const uDw2 = pCmd->au64[2].u;
     575                            bool const     fValid            = RT_BF_GET(uDw2, GITS_BF_CMD_MAPC_DW2_VALID);
     576                            uint32_t const uTargetCpuId      = RT_BF_GET(uDw2, GITS_BF_CMD_MAPC_DW2_RDBASE);
     577                            uint16_t const uIntrCollectionId = RT_BF_GET(uDw2, GITS_BF_CMD_MAPC_DW2_IC_ID);
     578
     579                            AssertRelease(uIntrCollectionId < RT_ELEMENTS(pGitsDev->auCt));
     580                            pGitsDev->auCt[uIntrCollectionId].fValid      = fValid;
     581                            pGitsDev->auCt[uIntrCollectionId].idTargetCpu = uTargetCpuId;
     582                            break;
     583                        }
     584
     585                        case GITS_CMD_ID_SYNC:
     586                        {
     587                            /* Nothing to do since all previous commands have committed their changes to device state. */
     588                            break;
     589                        }
     590
     591                        case GITS_CMD_ID_INVALL:
     592                        {
     593                            /* Nothing to do as we currently do not cache interrupt mappings. */
    578594                            break;
    579595                        }
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