VirtualBox

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


Ignore:
Timestamp:
Feb 12, 2025 3:35:15 PM (3 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
167502
Message:

VMM/IEM: Removed memory write stats since nobody is using the anymore (consumer was PATM); mark APIs as internal where possible. jiraref:VBP-1431

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

Legend:

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

    r106061 r108186  
    981981#endif
    982982
    983     VBOXSTRICTRC rc = IEMExecOneBypassEx(pVCpu, NULL /*pcbWritten*/);
     983    VBOXSTRICTRC rc = IEMExecOneBypass(pVCpu);
    984984    if (RT_UNLIKELY(   rc == VERR_IEM_ASPECT_NOT_IMPLEMENTED
    985985                    || rc == VERR_IEM_INSTR_NOT_IMPLEMENTED))
  • trunk/src/VBox/VMM/VMMAll/IEMAll-armv8.cpp

    r106061 r108186  
    4949*********************************************************************************************************************************/
    5050
    51 VMMDECL(VBOXSTRICTRC) IEMExecForExits(PVMCPUCC pVCpu, uint32_t fWillExit, uint32_t cMinInstructions, uint32_t cMaxInstructions,
    52                                       uint32_t cMaxInstructionsWithoutExits, PIEMEXECFOREXITSTATS pStats)
     51VMM_INT_DECL(VBOXSTRICTRC)
     52IEMExecForExits(PVMCPUCC pVCpu, uint32_t fWillExit, uint32_t cMinInstructions, uint32_t cMaxInstructions,
     53                uint32_t cMaxInstructionsWithoutExits, PIEMEXECFOREXITSTATS pStats)
    5354{
    5455    AssertReleaseFailed();
     
    5960
    6061
    61 VMMDECL(VBOXSTRICTRC) IEMExecLots(PVMCPUCC pVCpu, uint32_t cMaxInstructions, uint32_t cPollRate, uint32_t *pcInstructions)
     62VMM_INT_DECL(VBOXSTRICTRC) IEMExecLots(PVMCPUCC pVCpu, uint32_t cMaxInstructions, uint32_t cPollRate, uint32_t *pcInstructions)
    6263{
    6364    AssertReleaseFailed();
     
    6768
    6869
    69 VMMDECL(VBOXSTRICTRC) IEMExecOne(PVMCPUCC pVCpu)
     70VMM_INT_DECL(VBOXSTRICTRC) IEMExecOne(PVMCPUCC pVCpu)
    7071{
    7172    AssertReleaseFailed();
     
    7576
    7677
    77 VMMDECL(VBOXSTRICTRC) IEMExecOneWithPrefetchedByPC(PVMCPUCC pVCpu, uint64_t OpcodeBytesPC,
    78                                                    const void *pvOpcodeBytes, size_t cbOpcodeBytes)
     78VMM_INT_DECL(VBOXSTRICTRC) IEMExecOneWithPrefetchedByPC(PVMCPUCC pVCpu, uint64_t OpcodeBytesPC,
     79                                                        const void *pvOpcodeBytes, size_t cbOpcodeBytes)
    7980{
    8081    AssertReleaseFailed();
     
    8485
    8586
    86 VMMDECL(VBOXSTRICTRC) IEMExecOneBypassEx(PVMCPUCC pVCpu, uint32_t *pcbWritten)
     87VMM_INT_DECL(VBOXSTRICTRC) IEMExecOneBypass(PVMCPUCC pVCpu)
    8788{
    8889    AssertReleaseFailed();
    89     RT_NOREF(pVCpu, pcbWritten);
     90    RT_NOREF(pVCpu);
    9091    return VERR_NOT_IMPLEMENTED;
    9192}
    9293
    9394
    94 VMMDECL(VBOXSTRICTRC) IEMExecOneBypassWithPrefetchedByPC(PVMCPUCC pVCpu, uint64_t OpcodeBytesPC,
    95                                                          const void *pvOpcodeBytes, size_t cbOpcodeBytes)
     95VMM_INT_DECL(VBOXSTRICTRC) IEMExecOneBypassWithPrefetchedByPC(PVMCPUCC pVCpu, uint64_t OpcodeBytesPC,
     96                                                              const void *pvOpcodeBytes, size_t cbOpcodeBytes)
    9697{
    9798    AssertReleaseFailed();
     
    101102
    102103
    103 VMMDECL(VBOXSTRICTRC) IEMInjectTrpmEvent(PVMCPUCC pVCpu)
     104VMM_INT_DECL(VBOXSTRICTRC) IEMInjectTrpmEvent(PVMCPUCC pVCpu)
    104105{
    105106    AssertReleaseFailed();
  • trunk/src/VBox/VMM/VMMAll/IEMAll.cpp

    r107113 r108186  
    61216121#undef  LOG_GROUP
    61226122#define LOG_GROUP LOG_GROUP_IEM_MEM
    6123 
    6124 /**
    6125  * Updates the IEMCPU::cbWritten counter if applicable.
    6126  *
    6127  * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
    6128  * @param   fAccess             The access being accounted for.
    6129  * @param   cbMem               The access size.
    6130  */
    6131 DECL_FORCE_INLINE(void) iemMemUpdateWrittenCounter(PVMCPUCC pVCpu, uint32_t fAccess, size_t cbMem)
    6132 {
    6133     if (   (fAccess & (IEM_ACCESS_WHAT_MASK | IEM_ACCESS_TYPE_WRITE)) == (IEM_ACCESS_WHAT_STACK | IEM_ACCESS_TYPE_WRITE)
    6134         || (fAccess & (IEM_ACCESS_WHAT_MASK | IEM_ACCESS_TYPE_WRITE)) == (IEM_ACCESS_WHAT_DATA  | IEM_ACCESS_TYPE_WRITE) )
    6135         pVCpu->iem.s.cbWritten += (uint32_t)cbMem;
    6136 }
    6137 
    61386123
    61396124/**
     
    67506735    pVCpu->iem.s.cActiveMappings++;
    67516736
    6752     iemMemUpdateWrittenCounter(pVCpu, fAccess, cbMem);
    67536737    *ppvMem = pbBuf;
    67546738    *pbUnmapInfo = iMemMap | 0x08 | ((fAccess & IEM_ACCESS_TYPE_MASK) << 4);
     
    68396823    pVCpu->iem.s.cActiveMappings++;
    68406824
    6841     iemMemUpdateWrittenCounter(pVCpu, fAccess, cbMem);
    68426825    *ppvMem = pbBuf;
    68436826    *pbUnmapInfo = iMemMap | 0x08 | ((fAccess & IEM_ACCESS_TYPE_MASK) << 4);
     
    72147197    pVCpu->iem.s.cActiveMappings += 1;
    72157198
    7216     iemMemUpdateWrittenCounter(pVCpu, fAccess, cbMem);
    72177199    *ppvMem = pvMem;
    72187200    *pbUnmapInfo = iMemMap | 0x08 | ((fAccess & IEM_ACCESS_TYPE_MASK) << 4);
     
    77107692    pVCpu->iem.s.iNextMapping = iMemMap + 1;
    77117693    pVCpu->iem.s.cActiveMappings++;
    7712 
    7713     iemMemUpdateWrittenCounter(pVCpu, fAccess, cbMem);
    77147694
    77157695    *pbUnmapInfo = iMemMap | 0x08 | ((fAccess & IEM_ACCESS_TYPE_MASK) << 4);
     
    97099689
    97109690/**
    9711  * The actual code execution bits of IEMExecOne, IEMExecOneEx, and
    9712  * IEMExecOneWithPrefetchedByPC.
     9691 * The actual code execution bits of IEMExecOne, IEMExecOneWithPrefetchedByPC,
     9692 * IEMExecOneBypass and friends.
    97139693 *
    97149694 * Similar code is found in IEMExecLots.
     
    98469826 * @param   pVCpu       The cross context virtual CPU structure of the calling EMT.
    98479827 */
    9848 VMMDECL(VBOXSTRICTRC) IEMExecOne(PVMCPUCC pVCpu)
     9828VMM_INT_DECL(VBOXSTRICTRC) IEMExecOne(PVMCPUCC pVCpu)
    98499829{
    98509830    AssertCompile(sizeof(pVCpu->iem.s) <= sizeof(pVCpu->iem.padding)); /* (tstVMStruct can't do it's job w/o instruction stats) */
     
    98699849
    98709850
    9871 VMMDECL(VBOXSTRICTRC) IEMExecOneEx(PVMCPUCC pVCpu, uint32_t *pcbWritten)
    9872 {
    9873     uint32_t const cbOldWritten = pVCpu->iem.s.cbWritten;
    9874     VBOXSTRICTRC rcStrict = iemInitDecoderAndPrefetchOpcodes(pVCpu, 0 /*fExecOpts*/);
    9875     if (rcStrict == VINF_SUCCESS)
    9876     {
    9877         rcStrict = iemExecOneInner(pVCpu, true, "IEMExecOneEx");
    9878         if (pcbWritten)
    9879             *pcbWritten = pVCpu->iem.s.cbWritten - cbOldWritten;
    9880     }
    9881     else if (pVCpu->iem.s.cActiveMappings > 0)
    9882         iemMemRollback(pVCpu);
    9883 
    9884     return rcStrict;
    9885 }
    9886 
    9887 
    9888 VMMDECL(VBOXSTRICTRC) IEMExecOneWithPrefetchedByPC(PVMCPUCC pVCpu, uint64_t OpcodeBytesPC,
    9889                                                    const void *pvOpcodeBytes, size_t cbOpcodeBytes)
     9851VMM_INT_DECL(VBOXSTRICTRC) IEMExecOneWithPrefetchedByPC(PVMCPUCC pVCpu, uint64_t OpcodeBytesPC,
     9852                                                        const void *pvOpcodeBytes, size_t cbOpcodeBytes)
    98909853{
    98919854    VBOXSTRICTRC rcStrict;
     
    99189881
    99199882
    9920 VMMDECL(VBOXSTRICTRC) IEMExecOneBypassEx(PVMCPUCC pVCpu, uint32_t *pcbWritten)
    9921 {
    9922     uint32_t const cbOldWritten = pVCpu->iem.s.cbWritten;
     9883VMM_INT_DECL(VBOXSTRICTRC) IEMExecOneBypass(PVMCPUCC pVCpu)
     9884{
    99239885    VBOXSTRICTRC rcStrict = iemInitDecoderAndPrefetchOpcodes(pVCpu, IEM_F_BYPASS_HANDLERS);
    99249886    if (rcStrict == VINF_SUCCESS)
    9925     {
    9926         rcStrict = iemExecOneInner(pVCpu, false, "IEMExecOneBypassEx");
    9927         if (pcbWritten)
    9928             *pcbWritten = pVCpu->iem.s.cbWritten - cbOldWritten;
    9929     }
     9887        rcStrict = iemExecOneInner(pVCpu, false, "IEMExecOneBypass");
    99309888    else if (pVCpu->iem.s.cActiveMappings > 0)
    99319889        iemMemRollback(pVCpu);
     
    99359893
    99369894
    9937 VMMDECL(VBOXSTRICTRC) IEMExecOneBypassWithPrefetchedByPC(PVMCPUCC pVCpu, uint64_t OpcodeBytesPC,
    9938                                                          const void *pvOpcodeBytes, size_t cbOpcodeBytes)
     9895VMM_INT_DECL(VBOXSTRICTRC) IEMExecOneBypassWithPrefetchedByPC(PVMCPUCC pVCpu, uint64_t OpcodeBytesPC,
     9896                                                              const void *pvOpcodeBytes, size_t cbOpcodeBytes)
    99399897{
    99409898    VBOXSTRICTRC rcStrict;
     
    99779935 * @param   pVCpu   The cross context virtual CPU structure of the calling EMT.
    99789936 */
    9979 VMMDECL(VBOXSTRICTRC) IEMExecOneIgnoreLock(PVMCPUCC pVCpu)
     9937VMM_INT_DECL(VBOXSTRICTRC) IEMExecOneIgnoreLock(PVMCPUCC pVCpu)
    99809938{
    99819939    /*
     
    1005210010
    1005310011
    10054 VMMDECL(VBOXSTRICTRC) IEMExecLots(PVMCPUCC pVCpu, uint32_t cMaxInstructions, uint32_t cPollRate, uint32_t *pcInstructions)
     10012VMM_INT_DECL(VBOXSTRICTRC) IEMExecLots(PVMCPUCC pVCpu, uint32_t cMaxInstructions, uint32_t cPollRate, uint32_t *pcInstructions)
    1005510013{
    1005610014    uint32_t const cInstructionsAtStart = pVCpu->iem.s.cInstructions;
     
    1022310181 * @param   pStats              Where to return statistics.
    1022410182 */
    10225 VMMDECL(VBOXSTRICTRC) IEMExecForExits(PVMCPUCC pVCpu, uint32_t fWillExit, uint32_t cMinInstructions, uint32_t cMaxInstructions,
    10226                                       uint32_t cMaxInstructionsWithoutExits, PIEMEXECFOREXITSTATS pStats)
     10183VMM_INT_DECL(VBOXSTRICTRC)
     10184IEMExecForExits(PVMCPUCC pVCpu, uint32_t fWillExit, uint32_t cMinInstructions, uint32_t cMaxInstructions,
     10185                uint32_t cMaxInstructionsWithoutExits, PIEMEXECFOREXITSTATS pStats)
    1022710186{
    1022810187    NOREF(fWillExit); /** @todo define flexible exit crits */
     
    1047010429 * @param   pVCpu               The cross context virtual CPU structure.
    1047110430 */
    10472 VMMDECL(VBOXSTRICTRC) IEMInjectTrpmEvent(PVMCPUCC pVCpu)
     10431VMM_INT_DECL(VBOXSTRICTRC) IEMInjectTrpmEvent(PVMCPUCC pVCpu)
    1047310432{
    1047410433#ifndef IEM_IMPLEMENTS_TASKSWITCH
  • trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp

    r107854 r108186  
    91179117    else
    91189118    {
    9119         /* We use IEMExecOneBypassEx() here as it suppresses attempt to continue emulating any
     9119        /* We use IEMExecOneBypass() here as it suppresses attempt to continue emulating any
    91209120           instruction(s) when interrupt inhibition is set as part of emulating the VMRUN
    91219121           instruction itself, see @bugref{7243#c126} */
    9122         rcStrict = IEMExecOneBypassEx(pVCpu, NULL /* pcbWritten */);
     9122        rcStrict = IEMExecOneBypass(pVCpu);
    91239123    }
    91249124    STAM_PROFILE_ADV_STOP(&pVCpu->hm.s.StatExitVmentry, z);
  • trunk/src/VBox/VMM/VMMR3/IEMR3.cpp

    r108178 r108186  
    116116 * @param   pVM                The cross context VM structure.
    117117 */
    118 VMMR3DECL(int)      IEMR3Init(PVM pVM)
     118VMMR3_INT_DECL(int) IEMR3Init(PVM pVM)
    119119{
    120120    /*
     
    375375        STAMR3RegisterF(pVM, &pVCpu->iem.s.cRetErrStatuses,             STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
    376376                        "Error statuses returned",                      "/IEM/CPU%u/cRetErrStatuses", idCpu);
    377         STAMR3RegisterF(pVM, &pVCpu->iem.s.cbWritten,                   STAMTYPE_U32,       STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,
    378                         "Approx bytes written",                         "/IEM/CPU%u/cbWritten", idCpu);
    379377        STAMR3RegisterF(pVM, &pVCpu->iem.s.cPendingCommit,              STAMTYPE_U32,       STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,
    380378                        "Times RC/R0 had to postpone instruction committing to ring-3", "/IEM/CPU%u/cPendingCommit", idCpu);
     
    11031101
    11041102
    1105 VMMR3DECL(int)      IEMR3Term(PVM pVM)
     1103VMMR3_INT_DECL(int) IEMR3Term(PVM pVM)
    11061104{
    11071105    NOREF(pVM);
     
    11221120
    11231121
    1124 VMMR3DECL(void)    IEMR3Relocate(PVM pVM)
     1122VMMR3_INT_DECL(void) IEMR3Relocate(PVM pVM)
    11251123{
    11261124    RT_NOREF(pVM);
     
    11341132 * @param   uExit               The IEM exit to name.
    11351133 */
    1136 VMMR3DECL(const char *) IEMR3GetExitName(uint32_t uExit)
     1134VMMR3_INT_DECL(const char *) IEMR3GetExitName(uint32_t uExit)
    11371135{
    11381136    static const char * const s_apszNames[] =
  • trunk/src/VBox/VMM/include/IEMInternal-armv8.h

    r106061 r108186  
    526526    /** The number of potential exits. */
    527527    uint32_t                cPotentialExits;
    528     /** The number of bytes data or stack written (mostly for IEMExecOneEx).
    529      * This may contain uncommitted writes.  */
    530     uint32_t                cbWritten;
    531528    /** Counts the VERR_IEM_INSTR_NOT_IMPLEMENTED returns. */
    532529    uint32_t                cRetInstrNotImplemented;
     
    563560    uint8_t                 aidxTargetCpuEflFlavour[2];
    564561
    565     uint8_t                 bPadding;
     562    uint8_t                 bPadding[5];
    566563
    567564    /** The CPU vendor. */
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r108178 r108186  
    19381938    /** The number of potential exits. */
    19391939    uint32_t                cPotentialExits;
    1940     /** The number of bytes data or stack written (mostly for IEMExecOneEx).
    1941      * This may contain uncommitted writes.  */
    1942     uint32_t                cbWritten;
    19431940    /** Counts the VERR_IEM_INSTR_NOT_IMPLEMENTED returns. */
    19441941    uint32_t                cRetInstrNotImplemented;
     
    19861983    uint8_t                 cLogRelWrMsr;
    19871984    /** Alignment padding. */
    1988     uint8_t                 abAlignment9[46];
     1985    uint8_t                 abAlignment9[50];
    19891986
    19901987
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