VirtualBox

Changeset 108480 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Mar 7, 2025 2:09:31 PM (2 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
167867
Message:

VMM/GIC: bugref:10404 STAM counters.

Location:
trunk/src/VBox/VMM
Files:
3 edited

Legend:

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

    r108479 r108480  
    32003200    PGICDEV    pGicDev = PDMDEVINS_2_DATA(pDevIns, PGICDEV);
    32013201
    3202     int const  rcLock  = PDMDevHlpCritSectEnter(pDevIns, pDevIns->pCritSectRoR3, VERR_IGNORED);
    3203     PDM_CRITSECT_RELEASE_ASSERT_RC_DEV(pDevIns, pDevIns->pCritSectRoR3, rcLock);
     3202#ifdef VBOX_WITH_STATISTICS
     3203    PVMCPU pVCpu = VMMGetCpu(pVM);
     3204    if (pVCpu)
     3205        STAM_COUNTER_INC(&pVCpu->gic.s.CTX_SUFF_Z(StatSetSpi));
     3206#endif
    32043207
    32053208#if 0
     
    32163219
    32173220    Assert(idxIntr >= GIC_INTID_RANGE_SPI_START);
    3218     AssertMsgReturnStmt(idxIntr < sizeof(pGicDev->bmIntrPending) * 8,
    3219                         ("out-of-range SPI interrupt ID %RU32 (%RU32)\n", uIntId, uSpiIntId),
    3220                         PDMDevHlpCritSectLeave(pDevIns, pDevIns->pCritSectRoR3),
    3221                         VERR_INVALID_PARAMETER);
     3221    AssertMsgReturn(idxIntr < sizeof(pGicDev->bmIntrPending) * 8,
     3222                    ("out-of-range SPI interrupt ID %RU32 (%RU32)\n", uIntId, uSpiIntId),
     3223                    VERR_INVALID_PARAMETER);
     3224
     3225    int const rcLock = PDMDevHlpCritSectEnter(pDevIns, pDevIns->pCritSectRoR3, VERR_IGNORED);
     3226    PDM_CRITSECT_RELEASE_ASSERT_RC_DEV(pDevIns, pDevIns->pCritSectRoR3, rcLock);
    32223227
    32233228    /* Update the interrupt pending state. */
     
    32263231    else
    32273232        ASMBitClear(&pGicDev->bmIntrPending[0], idxIntr);
     3233
    32283234    int const rc = VBOXSTRICTRC_VAL(gicDistUpdateIrqState(pVM, pGicDev));
    32293235#endif
     
    32443250    PCGICDEV   pGicDev = PDMDEVINS_2_DATA(pDevIns, PCGICDEV);
    32453251    PGICCPU    pGicCpu = VMCPU_TO_GICCPU(pVCpu);
    3246     int const  rcLock  = PDMDevHlpCritSectEnter(pDevIns, pDevIns->pCritSectRoR3, VERR_IGNORED);
    3247     PDM_CRITSECT_RELEASE_ASSERT_RC_DEV(pDevIns, pDevIns->pCritSectRoR3, rcLock);
    32483252
    32493253#if 0
     
    32553259
    32563260    Assert(idxIntr >= GIC_INTID_RANGE_PPI_START);
    3257     AssertMsgReturnStmt(idxIntr < sizeof(pGicCpu->bmIntrPending) * 8,
    3258                         ("out-of-range PPI interrupt ID %RU32 (%RU32)\n", uIntId, uPpiIntId),
    3259                         PDMDevHlpCritSectLeave(pDevIns, pDevIns->pCritSectRoR3),
    3260                         VERR_INVALID_PARAMETER);
     3261    AssertMsgReturn(idxIntr < sizeof(pGicCpu->bmIntrPending) * 8,
     3262                    ("out-of-range PPI interrupt ID %RU32 (%RU32)\n", uIntId, uPpiIntId),
     3263                    VERR_INVALID_PARAMETER);
     3264
     3265    int const  rcLock  = PDMDevHlpCritSectEnter(pDevIns, pDevIns->pCritSectRoR3, VERR_IGNORED);
     3266    PDM_CRITSECT_RELEASE_ASSERT_RC_DEV(pDevIns, pDevIns->pCritSectRoR3, rcLock);
    32613267
    32623268    /* Update the interrupt pending state. */
     
    32653271    else
    32663272        ASMBitClear(&pGicCpu->bmIntrPending[0], idxIntr);
     3273
    32673274    int const rc = VBOXSTRICTRC_VAL(gicReDistUpdateIrqState(pGicDev, pVCpu));
    32683275#endif
    32693276
    32703277    PDMDevHlpCritSectLeave(pDevIns, pDevIns->pCritSectRoR3);
    3271 
    32723278    return rc;
    32733279}
     
    33973403    VMCPU_ASSERT_EMT(pVCpu);
    33983404    Assert(pu64Value);
     3405
     3406    STAM_COUNTER_INC(&pVCpu->gic.s.CTX_SUFF_Z(StatSysRegRead));
    33993407
    34003408    *pu64Value = 0;
     
    35983606    VMCPU_ASSERT_EMT(pVCpu);
    35993607    LogFlowFunc(("pVCpu=%p u32Reg=%#x{%s} u64Value=%RX64\n", pVCpu, u32Reg, gicIccGetRegDescription(u32Reg), u64Value));
     3608
     3609    STAM_COUNTER_INC(&pVCpu->gic.s.CTX_SUFF_Z(StatSysRegWrite));
    36003610
    36013611    PPDMDEVINS pDevIns = VMCPU_TO_DEVINS(pVCpu);
  • trunk/src/VBox/VMM/VMMR3/GICR3.cpp

    r108479 r108480  
    884884        GIC_REG_COUNTER(&pGicCpu->StatSysRegReadR3,  "%u/R3/SysRegRead",  "Number of GIC system register reads in R3.");
    885885        GIC_REG_COUNTER(&pGicCpu->StatSysRegWriteR3, "%u/R3/SysRegWrite", "Number of GIC system register writes in R3.");
     886        GIC_REG_COUNTER(&pGicCpu->StatSetSpiR3,      "%u/R3/SetSpi",      "Number of GIC set SPI callbacks in R3.");
     887        GIC_REG_COUNTER(&pGicCpu->StatSetPpiR3,      "%u/R3/SetPpi",      "Number of GIC set PPI callbacks in R3.");
    886888    }
    887889#endif
  • trunk/src/VBox/VMM/include/GICInternal.h

    r108474 r108480  
    290290    /** Number of MSR writes in R3. */
    291291    STAMCOUNTER                 StatSysRegWriteR3;
     292    /** Number of set SPI callbacks. */
     293    STAMCOUNTER                 StatSetSpiR3;
     294    /** Number of set PPI callbacks. */
     295    STAMCOUNTER                 StatSetPpiR3;
    292296
    293297# if 0 /* No R0 for now. */
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