VirtualBox

Changeset 46871 in vbox


Ignore:
Timestamp:
Jun 28, 2013 4:25:06 PM (12 years ago)
Author:
vboxsync
Message:

VMM/HM: Cleanup event injection statistics.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp

    r46869 r46871  
    16911691
    16921692    /*
    1693      * Correct the hidden CS granularity flag. Haven't seen it being wrong in any other
     1693     * Correct the hidden CS granularity bit. Haven't seen it being wrong in any other
    16941694     * register (yet).
    16951695     */
    1696     /** @todo Verify this. */
     1696    /** @todo SELM might need to be fixed as it too should not care about the
     1697     *        granularity bit. See @bugref{6785}. */
    16971698    if (   !pMixedCtx->cs.Attr.n.u1Granularity
    16981699        && pMixedCtx->cs.Attr.n.u1Present
     
    17021703        pMixedCtx->cs.Attr.n.u1Granularity = 1;
    17031704    }
     1705
    17041706#ifdef VBOX_STRICT
    17051707# define HMSVM_ASSERT_SEG_GRANULARITY(reg) \
     
    17081710                  ? (pMixedCtx->reg.u32Limit & 0xfff) == 0xfff \
    17091711                  :  pMixedCtx->reg.u32Limit <= UINT32_C(0xfffff)), \
    1710               ("Invalid Segment Attributes %#x %#x %#llx\n", pMixedCtx->reg.u32Limit, \
     1712              ("Invalid Segment Attributes Limit=%#RX32 Attr=%#RX32 Base=%#RX64\n", pMixedCtx->reg.u32Limit, \
    17111713              pMixedCtx->reg.Attr.u, pMixedCtx->reg.u64Base))
    17121714
     
    19451947 * @param   GCPtrFaultAddress   The fault-address (CR2) in case it's a
    19461948 *                              page-fault.
     1949 *
     1950 * @remarks Statistics counter assumes this is a guest event being reflected to
     1951 *          the guest i.e. 'StatInjectPendingReflect' is incremented always.
    19471952 */
    19481953DECLINLINE(void) hmR0SvmSetPendingEvent(PVMCPU pVCpu, PSVMEVENT pEvent, RTGCUINTPTR GCPtrFaultAddress)
     
    19571962    Log4(("hmR0SvmSetPendingEvent: u=%#RX64 u8Vector=%#x Type=%#x ErrorCodeValid=%RTbool ErrorCode=%#RX32\n", pEvent->u,
    19581963          pEvent->n.u8Vector, (uint8_t)pEvent->n.u3Type, !!pEvent->n.u1ErrorCodeValid, pEvent->n.u32ErrorCode));
     1964
     1965    STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectPendingReflect);
    19591966}
    19601967
     
    20452052    Log4(("TRPM->HM event: u=%#RX64 u8Vector=%#x uErrorCodeValid=%RTbool uErrorCode=%#RX32\n", Event.u, Event.n.u8Vector,
    20462053          !!Event.n.u1ErrorCodeValid, Event.n.u32ErrorCode));
     2054
    20472055    hmR0SvmSetPendingEvent(pVCpu, &Event, GCPtrFaultAddress);
     2056    STAM_COUNTER_DEC(&pVCpu->hm.s.StatInjectPendingReflect);
    20482057}
    20492058
     
    22032212            hmR0SvmInjectEventVmcb(pVCpu, pVmcb, pCtx, &Event);
    22042213            pVCpu->hm.s.Event.fPending = false;
    2205             STAM_COUNTER_INC(&pVCpu->hm.s.StatIntReinject);
     2214
     2215#ifdef VBOX_WITH_STATISTICS
     2216            if (Event.n.u3Type == SVM_EVENT_EXTERNAL_IRQ)
     2217                STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectInterrupt);
     2218            else
     2219                STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectXcpt);
     2220#endif
    22062221        }
    22072222        else
     
    22202235            hmR0SvmInjectEventVmcb(pVCpu, pVmcb, pCtx, &Event);
    22212236            VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_INTERRUPT_NMI);
     2237
     2238            STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectXcpt);
    22222239        }
    22232240        else
     
    22412258
    22422259                hmR0SvmInjectEventVmcb(pVCpu, pVmcb, pCtx, &Event);
    2243                 STAM_COUNTER_INC(&pVCpu->hm.s.StatIntInject);
     2260                STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectInterrupt);
    22442261            }
    22452262            else
     
    29762993                             *  next instruction. */
    29772994                            /** @todo Investigate this later. */
     2995                            STAM_COUNTER_INC(&pVCpu->hm.s.StatExitGuestBP);
    29782996                            break;
    29792997
     
    31383156
    31393157/**
    3140  * Sets an debug (#DB) exception as pending-for-injection into the VM.
     3158 * Sets a debug (#DB) exception as pending-for-injection into the VM.
    31413159 *
    31423160 * @param   pVCpu       Pointer to the VMCPU.
     
    33673385            {
    33683386                uint8_t uExitVector = (uint8_t)(pSvmTransient->u64ExitCode - SVM_EXIT_EXCEPTION_0);
     3387
     3388#ifdef VBOX_STRICT
     3389                if (   hmR0SvmIsContributoryXcpt(uIdtVector)
     3390                    && uExitVector == X86_XCPT_PF)
     3391                {
     3392                    Log4(("IDT: Contributory #PF uCR2=%#RX64\n", pVCpu->idCpu, pCtx->cr2));
     3393                }
     3394#endif
    33693395                if (   uExitVector == X86_XCPT_PF
    33703396                    && uIdtVector  == X86_XCPT_PF)
     
    34153441                pVCpu->hm.s.Event.fPending = true;
    34163442
     3443                hmR0SvmSetPendingEvent(pVCpu, &pVmcb->ctrl.ExitIntInfo, 0 /* GCPtrFaultAddress */);
     3444
    34173445                /* If uExitVector is #PF, CR2 value will be updated from the VMCB if it's a guest #PF. See hmR0SvmExitXcptPF(). */
    34183446                Log4(("IDT: Pending vectoring event %#RX64 ErrValid=%RTbool Err=%#RX32\n", pVmcb->ctrl.ExitIntInfo.u,
     
    42984326    else if (rc == VINF_EM_RAW_GUEST_TRAP)
    42994327    {
     4328        pVCpu->hm.s.Event.fPending = false;     /* In case it's a contributory or vectoring #PF. */
     4329
    43004330        if (!pSvmTransient->fVectoringPF)
    43014331        {
     
    43034333            u32ErrCode = TRPMGetErrorCode(pVCpu);        /* The error code might have been changed. */
    43044334            TRPMResetTrap(pVCpu);
    4305 
    43064335            hmR0SvmSetPendingXcptPF(pVCpu, pCtx, u32ErrCode, uFaultAddress);
    43074336        }
     
    43104339            /* A guest page-fault occurred during delivery of a page-fault. Inject #DF. */
    43114340            TRPMResetTrap(pVCpu);
    4312             pVCpu->hm.s.Event.fPending = false;     /* Clear pending #PF to replace it with #DF. */
    43134341            hmR0SvmSetPendingXcptDF(pVCpu);
    43144342            Log4(("#PF: Pending #DF due to vectoring #PF\n"));
     
    43674395    HMSVM_CHECK_EXIT_DUE_TO_EVENT_DELIVERY();
    43684396
     4397    STAM_COUNTER_INC(&pVCpu->hm.s.StatExitGuestMF);
     4398
    43694399    int rc;
    43704400    if (!(pCtx->cr0 & X86_CR0_NE))
     
    43724402        /* Old-style FPU error reporting needs some extra work. */
    43734403        /** @todo don't fall back to the recompiler, but do it manually. */
    4374         rc = VERR_EM_INTERPRETER;
    4375     }
    4376     else
    4377     {
    4378         hmR0SvmSetPendingXcptMF(pVCpu);
    4379         rc = VINF_SUCCESS;
    4380     }
    4381     STAM_COUNTER_INC(&pVCpu->hm.s.StatExitGuestMF);
    4382     return rc;
     4404        return VERR_EM_INTERPRETER;
     4405    }
     4406
     4407    hmR0SvmSetPendingXcptMF(pVCpu);
     4408    return VINF_SUCCESS;
    43834409}
    43844410
     
    44034429    {
    44044430        /* Reflect the exception back to the guest. */
    4405         SVMEVENT Event;
    4406         Event.u          = 0;
    4407         Event.n.u1Valid  = 1;
    4408         Event.n.u3Type   = SVM_EVENT_EXCEPTION;
    4409         Event.n.u8Vector = X86_XCPT_DB;
    4410         hmR0SvmSetPendingEvent(pVCpu, &Event, 0 /* GCPtrFaultAddress */);
    4411 
     4431        hmR0SvmSetPendingXcptDB(pVCpu);
    44124432        rc = VINF_SUCCESS;
    44134433    }
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r46850 r46871  
    47114711 * @param   GCPtrFaultAddress   The fault-address (CR2) in case it's a
    47124712 *                              page-fault.
     4713 *
     4714 * @remarks Statistics counter assumes this is a guest event being injected or
     4715 *          re-injected into the guest, i.e. 'StatInjectPendingReflect' is
     4716 *          always incremented.
    47134717 */
    47144718DECLINLINE(void) hmR0VmxSetPendingEvent(PVMCPU pVCpu, uint32_t u32IntrInfo, uint32_t cbInstr, uint32_t u32ErrCode,
     
    47214725    pVCpu->hm.s.Event.cbInstr           = cbInstr;
    47224726    pVCpu->hm.s.Event.GCPtrFaultAddress = GCPtrFaultAddress;
     4727
     4728    STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectPendingReflect);
    47234729}
    47244730
     
    48584864                Log4(("IDT: vcpu[%RU32] Pending vectoring event %#RX64 Err=%#RX32\n", pVCpu->idCpu,
    48594865                      pVCpu->hm.s.Event.u64IntrInfo, pVCpu->hm.s.Event.u32ErrCode));
     4866
    48604867                break;
    48614868            }
     
    48674874                Log4(("IDT: vcpu[%RU32] Pending vectoring #DF %#RX64 uIdtVector=%#x uExitVector=%#x\n", pVCpu->idCpu,
    48684875                      pVCpu->hm.s.Event.u64IntrInfo, uIdtVector, uExitVector));
     4876
    48694877                break;
    48704878            }
     
    57985806    Log4(("TRPM->HM event: u32IntrInfo=%#RX32 enmTrpmEvent=%d cbInstr=%u uErrCode=%#RX32 GCPtrFaultAddress=%#RGv\n",
    57995807         u32IntrInfo, enmTrpmEvent, cbInstr, uErrCode, GCPtrFaultAddress));
     5808
    58005809    hmR0VmxSetPendingEvent(pVCpu, u32IntrInfo, cbInstr, uErrCode, GCPtrFaultAddress);
     5810    STAM_COUNTER_DEC(&pVCpu->hm.s.StatInjectPendingReflect);
    58015811}
    58025812
     
    60966106            AssertRCReturn(rc, rc);
    60976107            pVCpu->hm.s.Event.fPending = false;
    6098             STAM_COUNTER_INC(&pVCpu->hm.s.StatIntReinject);
     6108
     6109#ifdef VBOX_WITH_STATISTICS
     6110            if (uIntrType == VMX_EXIT_INTERRUPTION_INFO_TYPE_EXT_INT)
     6111                STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectInterrupt);
     6112            else
     6113                STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectXcpt);
     6114#endif
    60996115        }
    61006116        else
     
    61146130            AssertRCReturn(rc, rc);
    61156131            VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_INTERRUPT_NMI);
     6132
     6133            STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectXcpt);
    61166134        }
    61176135        else
     
    61376155                rc = hmR0VmxInjectEventVmcs(pVCpu, pMixedCtx, u32IntrInfo, 0 /* cbInstr */,  0 /* u32ErrCode */,
    61386156                                            0 /* GCPtrFaultAddress */, &uIntrState);
    6139                 STAM_COUNTER_INC(&pVCpu->hm.s.StatIntInject);
     6157
     6158                STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectInterrupt);
    61406159            }
    61416160            else
     
    87178736        return VERR_EM_INTERPRETER;
    87188737    }
     8738
    87198739    hmR0VmxSetPendingEvent(pVCpu, VMX_VMCS_CTRL_ENTRY_IRQ_INFO_FROM_EXIT_INT_INFO(pVmxTransient->uExitIntrInfo),
    87208740                           pVmxTransient->cbInstr, pVmxTransient->uExitIntrErrorCode, 0 /* GCPtrFaultAddress */);
  • trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp

    r46850 r46871  
    593593        Log(("Reinjecting event %08x %08x at %RGv\n", pVCpu->hm.s.Event.u64IntrInfo, pVCpu->hm.s.Event.u32ErrCode,
    594594             (RTGCPTR)pCtx->rip));
    595         STAM_COUNTER_INC(&pVCpu->hm.s.StatIntReinject);
     595        STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectPendingReflect);
    596596        Event.u = pVCpu->hm.s.Event.u64IntrInfo;
    597597        hmR0SvmInjectEvent(pVCpu, pVmcb, pCtx, &Event);
     
    617617
    618618            hmR0SvmInjectEvent(pVCpu, pVmcb, pCtx, &Event);
     619            STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectXcpt);
    619620            return VINF_SUCCESS;
    620621        }
     
    725726            else
    726727                Event.n.u3Type = SVM_EVENT_EXCEPTION;
     728
     729            STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectXcpt);
    727730        }
    728731        else
     732        {
    729733            Event.n.u3Type = SVM_EVENT_EXTERNAL_IRQ;
    730 
    731         STAM_COUNTER_INC(&pVCpu->hm.s.StatIntInject);
     734            STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectInterrupt);
     735        }
     736
    732737        hmR0SvmInjectEvent(pVCpu, pVmcb, pCtx, &Event);
    733738    } /* if (interrupts can be dispatched) */
     
    22242229        goto ResumeExecution;
    22252230
     2231    case SVM_EXIT_INTR:         STAM_COUNTER_INC(&pVCpu->hm.s.StatExitExtInt);  /* no break */
    22262232    case SVM_EXIT_FERR_FREEZE:
    2227     case SVM_EXIT_INTR:
    22282233    case SVM_EXIT_NMI:
    22292234    case SVM_EXIT_SMI:
     
    28062811    if (exitCode == SVM_EXIT_INTR)
    28072812    {
    2808         STAM_COUNTER_INC(&pVCpu->hm.s.StatPendingHostIrq);
    28092813        /* On the next entry we'll only sync the host context. */
    28102814        pVCpu->hm.s.fContextUseFlags |= HM_CHANGED_HOST_CONTEXT;
  • trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp

    r46724 r46871  
    10951095        Log(("CPU%d: Reinjecting event %RX64 %08x at %RGv cr2=%RX64\n", pVCpu->idCpu, pVCpu->hm.s.Event.u64IntrInfo,
    10961096             pVCpu->hm.s.Event.u32ErrCode, (RTGCPTR)pCtx->rip, pCtx->cr2));
    1097         STAM_COUNTER_INC(&pVCpu->hm.s.StatIntReinject);
     1097        STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectPendingReflect);
    10981098        rc = hmR0VmxInjectEvent(pVM, pVCpu, pCtx, pVCpu->hm.s.Event.u64IntrInfo, 0, pVCpu->hm.s.Event.u32ErrCode);
    10991099        AssertRC(rc);
     
    11211121            AssertRC(rc);
    11221122
     1123            STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectXcpt);
    11231124            return VINF_SUCCESS;
    11241125        }
     
    12331234            else
    12341235                intInfo |= (VMX_EXIT_INTERRUPTION_INFO_TYPE_HW_XCPT << VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT);
     1236
     1237            STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectXcpt);
    12351238        }
    12361239        else
     1240        {
    12371241            intInfo |= (VMX_EXIT_INTERRUPTION_INFO_TYPE_EXT_INT << VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT);
    1238 
    1239         STAM_COUNTER_INC(&pVCpu->hm.s.StatIntInject);
     1242            STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectInterrupt);
     1243        }
     1244
    12401245        rc = hmR0VmxInjectEvent(pVM, pVCpu, pCtx, intInfo, 0, errCode);
    12411246        AssertRC(rc);
     
    50155020        &&  !VMX_EXIT_INTERRUPTION_INFO_IS_VALID(intInfo))
    50165021    {
    5017         STAM_COUNTER_INC(&pVCpu->hm.s.StatPendingHostIrq);
    50185022        /* On the next entry we'll only sync the host context. */
    50195023        pVCpu->hm.s.fContextUseFlags |= HM_CHANGED_HOST_CONTEXT;
  • trunk/src/VBox/VMM/VMMR3/HM.cpp

    r46842 r46871  
    222222    EXIT_REASON(SVM_EXIT_EXCEPTION_1E       , 94, "Exception Vector 30 (0x1E)."),
    223223    EXIT_REASON(SVM_EXIT_EXCEPTION_1F       , 95, "Exception Vector 31 (0x1F)."),
    224     EXIT_REASON(SVM_EXIT_INTR               , 96, "Physical maskable interrupt."),
    225     EXIT_REASON(SVM_EXIT_NMI                , 97, "Physical non-maskable interrupt."),
    226     EXIT_REASON(SVM_EXIT_SMI                , 98, "System management interrupt."),
    227     EXIT_REASON(SVM_EXIT_INIT               , 99, "Physical INIT signal."),
     224    EXIT_REASON(SVM_EXIT_INTR               , 96, "Physical maskable interrupt (host)."),
     225    EXIT_REASON(SVM_EXIT_NMI                , 97, "Physical non-maskable interrupt (host)."),
     226    EXIT_REASON(SVM_EXIT_SMI                , 98, "System management interrupt (host)."),
     227    EXIT_REASON(SVM_EXIT_INIT               , 99, "Physical INIT signal (host)."),
    228228    EXIT_REASON(SVM_EXIT_VINTR              ,100, "Virtual interrupt-window exit."),
    229229    EXIT_REASON(SVM_EXIT_CR0_SEL_WRITE      ,101, "Write to CR0 that changed any bits other than CR0.TS or CR0.MP."),
     
    689689
    690690        HM_REG_COUNTER(&pVCpu->hm.s.StatSwitchGuestIrq,         "/HM/CPU%d/Switch/IrqPending", "PDMGetInterrupt() cleared behind our back!?!.");
     691        HM_REG_COUNTER(&pVCpu->hm.s.StatPendingHostIrq,         "/HM/CPU%d/Switch/PendingHostIrq", "Exit to ring-3 due to pending host interrupt before executing guest code.");
    691692        HM_REG_COUNTER(&pVCpu->hm.s.StatSwitchHmToR3FF,         "/HM/CPU%d/Switch/HmToR3FF", "Exit to ring-3 due to pending timers, EMT rendezvous, critical section etc.");
    692693        HM_REG_COUNTER(&pVCpu->hm.s.StatSwitchExitToR3,         "/HM/CPU%d/Switch/ExitToR3", "Exit to ring-3 (total).");
    693694        HM_REG_COUNTER(&pVCpu->hm.s.StatSwitchLongJmpToR3,      "/HM/CPU%d/Switch/LongJmpToR3", "Longjump to ring-3.");
    694695
    695         HM_REG_COUNTER(&pVCpu->hm.s.StatIntInject,              "/HM/CPU%d/Irq/Inject", "Injecting hardware interrupt into the guest.");
    696         HM_REG_COUNTER(&pVCpu->hm.s.StatIntReinject,            "/HM/CPU%d/Irq/Reinject", "Re-injecting an event into the guest.");
    697         HM_REG_COUNTER(&pVCpu->hm.s.StatPendingHostIrq,         "/HM/CPU%d/Irq/PendingOnHost", "Exiting to ring-3 due to preemption pending on the host.");
     696        HM_REG_COUNTER(&pVCpu->hm.s.StatInjectInterrupt,        "/HM/CPU%d/EventInject/Interrupt", "Injected an external interrupt into the guest.");
     697        HM_REG_COUNTER(&pVCpu->hm.s.StatInjectXcpt,             "/HM/CPU%d/EventInject/Trap", "Injected an exception into the guest.");
     698        HM_REG_COUNTER(&pVCpu->hm.s.StatInjectPendingReflect,   "/HM/CPU%d/EventInject/PendingReflect", "Reflecting an exception back to the guest.");
    698699
    699700        HM_REG_COUNTER(&pVCpu->hm.s.StatFlushPage,              "/HM/CPU%d/Flush/Page", "Invalidating a guest page on all guest CPUs.");
     
    720721        HM_REG_COUNTER(&pVCpu->hm.s.StatDRxIoCheck,             "/HM/CPU%d/Debug/IOCheck", "Checking for I/O breakpoint.");
    721722
    722         HM_REG_COUNTER(&pVCpu->hm.s.StatLoadMinimal,            "/HM/CPU%d/Load/Minimal", "VM-entry loading just RIP (+RSP, RFLAGs for old VT-x code).");
    723         HM_REG_COUNTER(&pVCpu->hm.s.StatLoadFull,               "/HM/CPU%d/Load/Full", "VM-entry loading more of the state.");
     723        HM_REG_COUNTER(&pVCpu->hm.s.StatLoadMinimal,            "/HM/CPU%d/Load/Minimal", "VM-entry loading minimal guest-state.");
     724        HM_REG_COUNTER(&pVCpu->hm.s.StatLoadFull,               "/HM/CPU%d/Load/Full", "VM-entry loading the full guest-state.");
    724725
    725726        HM_REG_COUNTER(&pVCpu->hm.s.StatVmxCheckBadRmSelBase,   "/HM/CPU%d/VMXCheck/RMSelBase", "Could not use VMX due to unsuitable real-mode selector base.");
    726727        HM_REG_COUNTER(&pVCpu->hm.s.StatVmxCheckBadRmSelLimit,  "/HM/CPU%d/VMXCheck/RMSelLimit", "Could not use VMX due to unsuitable real-mode selector limit.");
    727728        HM_REG_COUNTER(&pVCpu->hm.s.StatVmxCheckRmOk,           "/HM/CPU%d/VMXCheck/VMX_RM", "VMX execution in real (V86) mode OK.");
    728 
    729729        HM_REG_COUNTER(&pVCpu->hm.s.StatVmxCheckBadSel,         "/HM/CPU%d/VMXCheck/Selector", "Could not use VMX due to unsuitable selector.");
    730730        HM_REG_COUNTER(&pVCpu->hm.s.StatVmxCheckBadRpl,         "/HM/CPU%d/VMXCheck/RPL", "Could not use VMX due to unsuitable RPL.");
     
    791791        {
    792792            STAMR3RegisterF(pVM, &pVCpu->hm.s.paStatInjectedIrqs[j], STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_OCCURENCES,
    793                             "Forwarded interrupts.",
    794                             (j < 0x20) ? "/HM/CPU%d/Interrupt/Trap/%02X" : "/HM/CPU%d/Interrupt/IRQ/%02X", i, j);
     793                            "Injected event.",
     794                            (j < 0x20) ? "/HM/CPU%d/EventInject/Event/Trap/%02X" : "/HM/CPU%d/EventInject/Event/IRQ/%02X", i, j);
    795795        }
    796796
  • trunk/src/VBox/VMM/include/HMInternal.h

    r46849 r46871  
    792792    STAMPROFILEADV          StatSpinPokeFailed;
    793793
    794     STAMCOUNTER             StatIntInject;
     794    STAMCOUNTER             StatInjectInterrupt;
     795    STAMCOUNTER             StatInjectXcpt;
     796    STAMCOUNTER             StatInjectPendingReflect;
    795797
    796798    STAMCOUNTER             StatExitShadowNM;
     
    848850    STAMCOUNTER             StatExitMtf;
    849851    STAMCOUNTER             StatExitApicAccess;
    850     STAMCOUNTER             StatIntReinject;
    851852    STAMCOUNTER             StatPendingHostIrq;
    852853
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette