VirtualBox

Changeset 81002 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
Sep 25, 2019 9:12:34 AM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
133599
Message:

VMM: bugref:9566 TRPM enhancements and cleanup. Bumps TRPM saved-state version.

Location:
trunk/src/VBox/VMM/VMMR0
Files:
2 edited

Legend:

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

    r80911 r81002  
    33833383    uint8_t     uVector;
    33843384    TRPMEVENT   enmTrpmEvent;
    3385     RTGCUINT    uErrCode;
     3385    uint32_t    uErrCode;
    33863386    RTGCUINTPTR GCPtrFaultAddress;
    33873387    uint8_t     cbInstr;
    33883388
    3389     int rc = TRPMQueryTrapAll(pVCpu, &uVector, &enmTrpmEvent, &uErrCode, &GCPtrFaultAddress, &cbInstr);
     3389    int rc = TRPMQueryTrapAll(pVCpu, &uVector, &enmTrpmEvent, &uErrCode, &GCPtrFaultAddress, &cbInstr, NULL /* pfIcebp */);
    33903390    AssertRC(rc);
    33913391
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r80911 r81002  
    78287828    uint8_t     uVector;
    78297829    TRPMEVENT   enmTrpmEvent;
    7830     RTGCUINT    uErrCode;
     7830    uint32_t    uErrCode;
    78317831    RTGCUINTPTR GCPtrFaultAddress;
    78327832    uint8_t     cbInstr;
    7833 
    7834     int rc = TRPMQueryTrapAll(pVCpu, &uVector, &enmTrpmEvent, &uErrCode, &GCPtrFaultAddress, &cbInstr);
     7833    bool        fIcebp;
     7834
     7835    int rc = TRPMQueryTrapAll(pVCpu, &uVector, &enmTrpmEvent, &uErrCode, &GCPtrFaultAddress, &cbInstr, &fIcebp);
    78357836    AssertRC(rc);
    78367837
    78377838    uint32_t u32IntInfo;
    78387839    u32IntInfo  = uVector | VMX_IDT_VECTORING_INFO_VALID;
    7839     u32IntInfo |= HMTrpmEventTypeToVmxEventType(uVector, enmTrpmEvent);
     7840    u32IntInfo |= HMTrpmEventTypeToVmxEventType(uVector, enmTrpmEvent, fIcebp);
    78407841
    78417842    rc = TRPMResetTrap(pVCpu);
     
    78767877    else if (VMX_IDT_VECTORING_INFO_TYPE(u32IntInfo) == VMX_IDT_VECTORING_INFO_TYPE_SW_INT)
    78777878        TRPMSetInstrLength(pVCpu, pVCpu->hm.s.Event.cbInstr);
     7879
     7880    if (VMX_IDT_VECTORING_INFO_TYPE(u32IntInfo) == VMX_IDT_VECTORING_INFO_TYPE_PRIV_SW_XCPT)
     7881        TRPMSetTrapDueToIcebp(pVCpu);
    78787882
    78797883    /* We're now done converting the pending event. */
     
    1361913623        {
    1362013624            /* It's a guest page fault and needs to be reflected to the guest. */
    13621             uint32_t uGstErrorCode = TRPMGetErrorCode(pVCpu);
     13625            uint32_t const uGstErrorCode = TRPMGetErrorCode(pVCpu);
    1362213626            TRPMResetTrap(pVCpu);
    1362313627            pVCpu->hm.s.Event.fPending = false;                 /* In case it's a contributory #PF. */
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