VirtualBox

Ignore:
Timestamp:
Mar 6, 2025 8:30:37 AM (7 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
167838
Message:

VMM/GIC: bugref:10404 Bits.

File:
1 edited

Legend:

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

    r108452 r108464  
    22442244            break;
    22452245        case GIC_DIST_REG_TYPER_OFF:
    2246             Assert(pGicDev->uMaxSpi > 0 && pGicDev->uMaxSpi < GIC_DIST_REG_TYPER_NUM_ITLINES);
     2246        {
     2247            Assert(pGicDev->uMaxSpi > 0 && pGicDev->uMaxSpi <= GIC_DIST_REG_TYPER_NUM_ITLINES);
     2248            Assert(pGicDev->fAffRoutingEnabled);
    22472249            *puValue = GIC_DIST_REG_TYPER_NUM_ITLINES_SET(pGicDev->uMaxSpi)
    2248                      | GIC_DIST_REG_TYPER_NUM_PES_SET(0)      /* 1 PE */ /** @todo r=ramshankar: Should this be pVCpu->cCpus? Currently it means 'ARE' must always be used? */
    2249                      /*| GIC_DIST_REG_TYPER_ESPI*/            /** @todo */
    2250                      /*| GIC_DIST_REG_TYPER_NMI*/             /** @todo Non-maskable interrupts */
    2251                      /*| GIC_DIST_REG_TYPER_SECURITY_EXTN */  /** @todo */
    2252                      /*| GIC_DIST_REG_TYPER_MBIS */           /** @todo Message based interrupts */
     2250                     | GIC_DIST_REG_TYPER_NUM_PES_SET(0)      /* Affinity routing is always enabled, hence this MBZ. */
     2251                     /*| GIC_DIST_REG_TYPER_NMI*/             /** @todo Support non-maskable interrupts */
     2252                     /*| GIC_DIST_REG_TYPER_SECURITY_EXTN */  /** @todo Support dual security states. */
     2253                     /*| GIC_DIST_REG_TYPER_MBIS */           /** @todo Support message-based interrupts */
    22532254                     /*| GIC_DIST_REG_TYPER_LPIS */           /** @todo Support LPIs */
    22542255                     | (pGicDev->fRangeSelSupport ? GIC_DIST_REG_TYPER_RSS : 0)
    2255                      | GIC_DIST_REG_TYPER_IDBITS_SET(16);
    2256             break;
     2256                     | GIC_DIST_REG_TYPER_IDBITS_SET(16);    /* We only support 16-bit interrupt IDs. */
     2257            if (pGicDev->fExtSpi)
     2258                *puValue |= GIC_DIST_REG_TYPER_ESPI
     2259                         |  GIC_DIST_REG_TYPER_ESPI_RANGE_SET(pGicDev->uMaxExtSpi);
     2260            break;
     2261        }
    22572262        case GIC_DIST_REG_STATUSR_OFF:
    22582263            AssertReleaseFailed();
     
    27022707{
    27032708    PGICDEV pGicDev = PDMDEVINS_2_DATA(pDevIns, PGICDEV);
    2704     Assert(idRedist == pVCpu->idCpu);   /* Assert for now, maybe remove function parameter later. */
     2709    AssertRelease(idRedist == pVCpu->idCpu);
    27052710    switch (offReg)
    27062711    {
    27072712        case GIC_REDIST_REG_TYPER_OFF:
    27082713        {
    2709             PCVMCC pVM = PDMDevHlpGetVM(pDevIns);
    2710             *puValue = ((pVCpu->idCpu == pVM->cCpus - 1) ? GIC_REDIST_REG_TYPER_LAST : 0)
     2714            PCVMCC pVM = pVCpu->CTX_SUFF(pVM);
     2715            *puValue = (pVCpu->idCpu == pVM->cCpus - 1 ? GIC_REDIST_REG_TYPER_LAST : 0)
    27112716                     | GIC_REDIST_REG_TYPER_CPU_NUMBER_SET(idRedist)
    2712                      | GIC_REDIST_REG_TYPER_CMN_LPI_AFF_SET(GIC_REDIST_REG_TYPER_CMN_LPI_AFF_ALL);
     2717                     | GIC_REDIST_REG_TYPER_CMN_LPI_AFF_SET(GIC_REDIST_REG_TYPER_CMN_LPI_AFF_ALL)
     2718                     | (pGicDev->fExtPpi ? GIC_REDIST_REG_TYPER_PPI_NUM_SET(pGicDev->uMaxExtPpi) : 0);
     2719            Assert(!pGicDev->fExtPpi || pGicDev->uMaxExtPpi > 0);
    27132720            break;
    27142721        }
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