VirtualBox

Changeset 97005 in vbox


Ignore:
Timestamp:
Oct 5, 2022 2:37:41 PM (2 years ago)
Author:
vboxsync
Message:

VMM/HMVMXR0: Converted all VMVEXITINFO initialization to use initializers (via macros) and not call memset/RT_ZERO. This may cause the code to be slightly larger but faster, as it allows the compiler to do a better job.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/hm_vmx.h

    r96711 r97005  
    38443844typedef const VMXVEXITINFO *PCVMXVEXITINFO;
    38453845AssertCompileMemberAlignment(VMXVEXITINFO, u64Qual, 8);
     3846
     3847/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier,
     3848 *  instruction info and length. */
     3849#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO(a_uReason, a_uQualifier, a_uInstrInfo, a_cbInstr) \
     3850    { (a_uReason), (a_cbInstr), { a_uInstrInfo }, VMXINSTRID_NONE, (a_uQualifier), 0, 0, 0, 0 }
     3851
     3852/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier,
     3853 *  instruction info and length all copied from a VMXTRANSIENT structure. */
     3854#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_FROM_TRANSIENT(a_pVmxTransient) \
     3855    VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO((a_pVmxTransient)->uExitReason, \
     3856                                                    (a_pVmxTransient)->uExitQual, \
     3857                                                    (a_pVmxTransient)->ExitInstrInfo.u, \
     3858                                                    (a_pVmxTransient)->cbExitInstr)
     3859
     3860/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier,
     3861 *  instruction length (no info). */
     3862#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(a_uReason, a_uQualifier, a_cbInstr) \
     3863    { (a_uReason), (a_cbInstr), { 0 }, VMXINSTRID_NONE, (a_uQualifier), 0, 0, 0, 0 }
     3864
     3865/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier and
     3866 *  instruction length (no info) all copied from a VMXTRANSIENT structure. */
     3867#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_FROM_TRANSIENT(a_pVmxTransient) \
     3868    VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN((a_pVmxTransient)->uExitReason, \
     3869                                                   (a_pVmxTransient)->uExitQual, \
     3870                                                   (a_pVmxTransient)->cbExitInstr)
     3871
     3872/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier,
     3873 *  instruction info, instruction length and guest linear address. */
     3874#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_AND_LIN_ADDR(a_uReason, a_uQualifier, a_uInstrInfo, \
     3875                                                                     a_cbInstr, a_uGstLinAddr) \
     3876    { (a_uReason), (a_cbInstr), { (a_uInstrInfo) }, VMXINSTRID_NONE, (a_uQualifier), (a_uGstLinAddr), 0, 0, 0 }
     3877
     3878/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier,
     3879 *  instruction info, instruction length and guest linear address all copied
     3880 *  from a VMXTRANSIENT structure. */
     3881#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_AND_LIN_ADDR_FROM_TRANSIENT(a_pVmxTransient) \
     3882    VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_AND_LIN_ADDR((a_pVmxTransient)->uExitReason, \
     3883                                                                (a_pVmxTransient)->uExitQual, \
     3884                                                                (a_pVmxTransient)->ExitInstrInfo.u, \
     3885                                                                (a_pVmxTransient)->cbExitInstr, \
     3886                                                                (a_pVmxTransient)->uGuestLinearAddr)
     3887
     3888/** Initialize a VMXVEXITINFO structure from exit reason and pending debug
     3889 *  exceptions. */
     3890#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_DBG_XCPTS(a_uReason, a_uPendingDbgXcpts) \
     3891    { (a_uReason), 0, { 0 }, VMXINSTRID_NONE, 0, 0, 0, (a_uPendingDbgXcpts), 0 }
     3892
     3893/** Initialize a VMXVEXITINFO structure from exit reason and pending debug
     3894 *  exceptions both copied from a VMXTRANSIENT structure. */
     3895#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_DBG_XCPTS_FROM_TRANSIENT(a_pVmxTransient) \
     3896    VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_DBG_XCPTS((a_pVmxTransient)->uExitReason, (a_pVmxTransient)->uGuestPendingDbgXcpts)
     3897
     3898
     3899/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier,
     3900 *  instruction length, guest linear address and guest physical address. */
     3901#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_AND_GST_ADDRESSES(a_uReason, a_uQualifier, a_cbInstr, \
     3902                                                                         a_uGstLinAddr, a_uGstPhysAddr) \
     3903    { (a_uReason), (a_cbInstr), { 0 }, VMXINSTRID_NONE, (a_uQualifier), (a_uGstLinAddr), (a_uGstPhysAddr), 0, 0 }
     3904
    38463905
    38473906/**
  • trunk/src/VBox/VMM/VMMAll/VMXAllTemplate.cpp.h

    r97004 r97005  
    89728972}
    89738973
    8974 
    89758974#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
     8975
    89768976/**
    89778977 * VM-exit handler for VMCLEAR (VMX_EXIT_VMCLEAR). Unconditional VM-exit.
     
    89918991    HMVMX_CHECK_EXIT_DUE_TO_VMX_INSTR(pVCpu, pVmxTransient->uExitReason);
    89928992
    8993     VMXVEXITINFO ExitInfo;
    8994     RT_ZERO(ExitInfo);
    8995     ExitInfo.uReason     = pVmxTransient->uExitReason;
    8996     ExitInfo.u64Qual     = pVmxTransient->uExitQual;
    8997     ExitInfo.InstrInfo.u = pVmxTransient->ExitInstrInfo.u;
    8998     ExitInfo.cbInstr     = pVmxTransient->cbExitInstr;
     8993    VMXVEXITINFO ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_FROM_TRANSIENT(pVmxTransient);
    89998994    HMVMX_DECODE_MEM_OPERAND(pVCpu, ExitInfo.InstrInfo.u, ExitInfo.u64Qual, VMXMEMACCESS_READ, &ExitInfo.GCPtrEffAddr);
    90008995
     
    90579052    HMVMX_CHECK_EXIT_DUE_TO_VMX_INSTR(pVCpu, pVmxTransient->uExitReason);
    90589053
    9059     VMXVEXITINFO ExitInfo;
    9060     RT_ZERO(ExitInfo);
    9061     ExitInfo.uReason     = pVmxTransient->uExitReason;
    9062     ExitInfo.u64Qual     = pVmxTransient->uExitQual;
    9063     ExitInfo.InstrInfo.u = pVmxTransient->ExitInstrInfo.u;
    9064     ExitInfo.cbInstr     = pVmxTransient->cbExitInstr;
     9054    VMXVEXITINFO ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_FROM_TRANSIENT(pVmxTransient);
    90659055    HMVMX_DECODE_MEM_OPERAND(pVCpu, ExitInfo.InstrInfo.u, ExitInfo.u64Qual, VMXMEMACCESS_READ, &ExitInfo.GCPtrEffAddr);
    90669056
     
    90949084    HMVMX_CHECK_EXIT_DUE_TO_VMX_INSTR(pVCpu, pVmxTransient->uExitReason);
    90959085
    9096     VMXVEXITINFO ExitInfo;
    9097     RT_ZERO(ExitInfo);
    9098     ExitInfo.uReason     = pVmxTransient->uExitReason;
    9099     ExitInfo.u64Qual     = pVmxTransient->uExitQual;
    9100     ExitInfo.InstrInfo.u = pVmxTransient->ExitInstrInfo.u;
    9101     ExitInfo.cbInstr     = pVmxTransient->cbExitInstr;
     9086    VMXVEXITINFO ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_FROM_TRANSIENT(pVmxTransient);
    91029087    HMVMX_DECODE_MEM_OPERAND(pVCpu, ExitInfo.InstrInfo.u, ExitInfo.u64Qual, VMXMEMACCESS_WRITE, &ExitInfo.GCPtrEffAddr);
    91039088
     
    91369121    HMVMX_CHECK_EXIT_DUE_TO_VMX_INSTR(pVCpu, pVmxTransient->uExitReason);
    91379122
    9138     VMXVEXITINFO ExitInfo;
    9139     RT_ZERO(ExitInfo);
    9140     ExitInfo.uReason     = pVmxTransient->uExitReason;
    9141     ExitInfo.u64Qual     = pVmxTransient->uExitQual;
    9142     ExitInfo.InstrInfo.u = pVmxTransient->ExitInstrInfo.u;
    9143     ExitInfo.cbInstr     = pVmxTransient->cbExitInstr;
     9123    VMXVEXITINFO ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_FROM_TRANSIENT(pVmxTransient);
    91449124    if (!ExitInfo.InstrInfo.VmreadVmwrite.fIsRegOperand)
    91459125        HMVMX_DECODE_MEM_OPERAND(pVCpu, ExitInfo.InstrInfo.u, ExitInfo.u64Qual, VMXMEMACCESS_WRITE, &ExitInfo.GCPtrEffAddr);
     
    92299209    HMVMX_CHECK_EXIT_DUE_TO_VMX_INSTR(pVCpu, pVmxTransient->uExitReason);
    92309210
    9231     VMXVEXITINFO ExitInfo;
    9232     RT_ZERO(ExitInfo);
    9233     ExitInfo.uReason     = pVmxTransient->uExitReason;
    9234     ExitInfo.u64Qual     = pVmxTransient->uExitQual;
    9235     ExitInfo.InstrInfo.u = pVmxTransient->ExitInstrInfo.u;
    9236     ExitInfo.cbInstr     = pVmxTransient->cbExitInstr;
     9211    VMXVEXITINFO ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_FROM_TRANSIENT(pVmxTransient);
    92379212    if (!ExitInfo.InstrInfo.VmreadVmwrite.fIsRegOperand)
    92389213        HMVMX_DECODE_MEM_OPERAND(pVCpu, ExitInfo.InstrInfo.u, ExitInfo.u64Qual, VMXMEMACCESS_READ, &ExitInfo.GCPtrEffAddr);
     
    92949269    HMVMX_CHECK_EXIT_DUE_TO_VMX_INSTR(pVCpu, pVmxTransient->uExitReason);
    92959270
    9296     VMXVEXITINFO ExitInfo;
    9297     RT_ZERO(ExitInfo);
    9298     ExitInfo.uReason     = pVmxTransient->uExitReason;
    9299     ExitInfo.u64Qual     = pVmxTransient->uExitQual;
    9300     ExitInfo.InstrInfo.u = pVmxTransient->ExitInstrInfo.u;
    9301     ExitInfo.cbInstr     = pVmxTransient->cbExitInstr;
     9271    VMXVEXITINFO ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_FROM_TRANSIENT(pVmxTransient);
    93029272    HMVMX_DECODE_MEM_OPERAND(pVCpu, ExitInfo.InstrInfo.u, ExitInfo.u64Qual, VMXMEMACCESS_READ, &ExitInfo.GCPtrEffAddr);
    93039273
     
    93309300    HMVMX_CHECK_EXIT_DUE_TO_VMX_INSTR(pVCpu, pVmxTransient->uExitReason);
    93319301
    9332     VMXVEXITINFO ExitInfo;
    9333     RT_ZERO(ExitInfo);
    9334     ExitInfo.uReason     = pVmxTransient->uExitReason;
    9335     ExitInfo.u64Qual     = pVmxTransient->uExitQual;
    9336     ExitInfo.InstrInfo.u = pVmxTransient->ExitInstrInfo.u;
    9337     ExitInfo.cbInstr     = pVmxTransient->cbExitInstr;
     9302    VMXVEXITINFO ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_FROM_TRANSIENT(pVmxTransient);
    93389303    HMVMX_DECODE_MEM_OPERAND(pVCpu, ExitInfo.InstrInfo.u, ExitInfo.u64Qual, VMXMEMACCESS_READ, &ExitInfo.GCPtrEffAddr);
    93399304
     
    93679332    HMVMX_CHECK_EXIT_DUE_TO_VMX_INSTR(pVCpu, pVmxTransient->uExitReason);
    93689333
    9369     VMXVEXITINFO ExitInfo;
    9370     RT_ZERO(ExitInfo);
    9371     ExitInfo.uReason     = pVmxTransient->uExitReason;
    9372     ExitInfo.u64Qual     = pVmxTransient->uExitQual;
    9373     ExitInfo.InstrInfo.u = pVmxTransient->ExitInstrInfo.u;
    9374     ExitInfo.cbInstr     = pVmxTransient->cbExitInstr;
     9334    VMXVEXITINFO ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_FROM_TRANSIENT(pVmxTransient);
    93759335    HMVMX_DECODE_MEM_OPERAND(pVCpu, ExitInfo.InstrInfo.u, ExitInfo.u64Qual, VMXMEMACCESS_READ, &ExitInfo.GCPtrEffAddr);
    93769336
     
    94149374    switch (uExitIntType)
    94159375    {
    9416 #ifndef IN_NEM_DARWIN
     9376# ifndef IN_NEM_DARWIN
    94179377        /*
    94189378         * Physical NMIs:
     
    94219381        case VMX_EXIT_INT_INFO_TYPE_NMI:
    94229382            return hmR0VmxExitHostNmi(pVCpu, pVmxTransient->pVmcsInfo);
    9423 #endif
     9383# endif
    94249384
    94259385        /*
     
    94529412                 * software exception causes a VM-exit, that too provides the VM-exit instruction length.
    94539413                 */
    9454                 VMXVEXITINFO ExitInfo;
    9455                 RT_ZERO(ExitInfo);
    9456                 ExitInfo.uReason = pVmxTransient->uExitReason;
    9457                 ExitInfo.cbInstr = pVmxTransient->cbExitInstr;
    9458                 ExitInfo.u64Qual = pVmxTransient->uExitQual;
     9414                VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_FROM_TRANSIENT(pVmxTransient);
    94599415
    94609416                VMXVEXITEVENTINFO ExitEventInfo;
     
    95549510    vmxHCReadIdtVectoringErrorCodeVmcs(pVCpu, pVmxTransient);
    95559511
    9556     VMXVEXITINFO ExitInfo;
    9557     RT_ZERO(ExitInfo);
    9558     ExitInfo.uReason = pVmxTransient->uExitReason;
    9559     ExitInfo.cbInstr = pVmxTransient->cbExitInstr;
    9560     ExitInfo.u64Qual = pVmxTransient->uExitQual;
     9512    VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_FROM_TRANSIENT(pVmxTransient);
    95619513
    95629514    VMXVEXITEVENTINFO ExitEventInfo;
     
    95969548        vmxHCReadExitQualVmcs(pVCpu, pVmxTransient);
    95979549
    9598         VMXVEXITINFO ExitInfo;
    9599         RT_ZERO(ExitInfo);
    9600         ExitInfo.uReason = pVmxTransient->uExitReason;
    9601         ExitInfo.cbInstr = pVmxTransient->cbExitInstr;
    9602         ExitInfo.u64Qual = pVmxTransient->uExitQual;
     9550        VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_FROM_TRANSIENT(pVmxTransient);
    96039551        return IEMExecVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    96049552    }
     
    96499597        vmxHCReadExitQualVmcs(pVCpu, pVmxTransient);
    96509598
    9651         VMXVEXITINFO ExitInfo;
    9652         RT_ZERO(ExitInfo);
    9653         ExitInfo.uReason   = pVmxTransient->uExitReason;
    9654         ExitInfo.cbInstr   = pVmxTransient->cbExitInstr;
    9655         ExitInfo.u64Qual   = pVmxTransient->uExitQual;
    9656         ExitInfo.InstrInfo = pVmxTransient->ExitInstrInfo;
     9599        VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_FROM_TRANSIENT(pVmxTransient);
    96579600        return IEMExecVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    96589601    }
     
    97259668            if (fIntercept)
    97269669            {
    9727                 VMXVEXITINFO ExitInfo;
    9728                 RT_ZERO(ExitInfo);
    9729                 ExitInfo.uReason = pVmxTransient->uExitReason;
    9730                 ExitInfo.cbInstr = pVmxTransient->cbExitInstr;
    9731                 ExitInfo.u64Qual = pVmxTransient->uExitQual;
     9670                VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_FROM_TRANSIENT(pVmxTransient);
    97329671                rcStrict = IEMExecVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    97339672            }
     
    97589697                if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, uIntercept))
    97599698                {
    9760                     VMXVEXITINFO ExitInfo;
    9761                     RT_ZERO(ExitInfo);
    9762                     ExitInfo.uReason = pVmxTransient->uExitReason;
    9763                     ExitInfo.cbInstr = pVmxTransient->cbExitInstr;
    9764                     ExitInfo.u64Qual = pVmxTransient->uExitQual;
     9699                    VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_FROM_TRANSIENT(pVmxTransient);
    97659700                    rcStrict = IEMExecVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    97669701                }
     
    97879722                && (uReadShadow  & X86_CR0_TS))
    97889723            {
    9789                 VMXVEXITINFO ExitInfo;
    9790                 RT_ZERO(ExitInfo);
    9791                 ExitInfo.uReason = pVmxTransient->uExitReason;
    9792                 ExitInfo.cbInstr = pVmxTransient->cbExitInstr;
    9793                 ExitInfo.u64Qual = pVmxTransient->uExitQual;
     9724                VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_FROM_TRANSIENT(pVmxTransient);
    97949725                rcStrict = IEMExecVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    97959726            }
     
    98149745            if (CPUMIsGuestVmxLmswInterceptSet(&pVCpu->cpum.GstCtx, uNewMsw))
    98159746            {
    9816                 VMXVEXITINFO ExitInfo;
    9817                 RT_ZERO(ExitInfo);
    9818                 ExitInfo.uReason            = pVmxTransient->uExitReason;
    9819                 ExitInfo.cbInstr            = pVmxTransient->cbExitInstr;
     9747                VMXVEXITINFO ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_FROM_TRANSIENT(pVmxTransient);
    98209748                ExitInfo.u64GuestLinearAddr = GCPtrEffDst;
    9821                 ExitInfo.u64Qual            = pVmxTransient->uExitQual;
    98229749                rcStrict = IEMExecVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    98239750            }
     
    98569783        vmxHCReadExitInstrLenVmcs(pVCpu, pVmxTransient);
    98579784
    9858         VMXVEXITINFO ExitInfo;
    9859         RT_ZERO(ExitInfo);
    9860         ExitInfo.uReason = pVmxTransient->uExitReason;
    9861         ExitInfo.cbInstr = pVmxTransient->cbExitInstr;
    9862         ExitInfo.u64Qual = pVmxTransient->uExitQual;
     9785        VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_FROM_TRANSIENT(pVmxTransient);
    98639786        return IEMExecVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    98649787    }
     
    99139836        }
    99149837
    9915         VMXVEXITINFO ExitInfo;
    9916         RT_ZERO(ExitInfo);
    9917         ExitInfo.uReason            = pVmxTransient->uExitReason;
    9918         ExitInfo.cbInstr            = pVmxTransient->cbExitInstr;
    9919         ExitInfo.u64Qual            = pVmxTransient->uExitQual;
    9920         ExitInfo.InstrInfo          = pVmxTransient->ExitInstrInfo;
    9921         ExitInfo.u64GuestLinearAddr = pVmxTransient->uGuestLinearAddr;
     9838        VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_AND_LIN_ADDR_FROM_TRANSIENT(pVmxTransient);
    99229839        return IEMExecVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    99239840    }
     
    99969913    /** @todo NSTVMX: Should consider debugging nested-guests using VM debugger. */
    99979914    vmxHCReadGuestPendingDbgXctps(pVCpu, pVmxTransient);
    9998     VMXVEXITINFO ExitInfo;
    9999     RT_ZERO(ExitInfo);
    10000     ExitInfo.uReason                 = pVmxTransient->uExitReason;
    10001     ExitInfo.u64GuestPendingDbgXcpts = pVmxTransient->uGuestPendingDbgXcpts;
     9915    VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_DBG_XCPTS_FROM_TRANSIENT(pVmxTransient);
    100029916    return IEMExecVmxVmexitTrapLike(pVCpu, &ExitInfo);
    100039917}
     
    100539967    {
    100549968        vmxHCReadGuestPendingDbgXctps(pVCpu, pVmxTransient);
    10055         VMXVEXITINFO ExitInfo;
    10056         RT_ZERO(ExitInfo);
    10057         ExitInfo.uReason                 = pVmxTransient->uExitReason;
    10058         ExitInfo.u64GuestPendingDbgXcpts = pVmxTransient->uGuestPendingDbgXcpts;
     9969        VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_DBG_XCPTS_FROM_TRANSIENT(pVmxTransient);
    100599970        return IEMExecVmxVmexitTrapLike(pVCpu, &ExitInfo);
    100609971    }
     
    100819992              VMX_EXIT_QUAL_APIC_ACCESS_TYPE(pVmxTransient->uExitQual)));
    100829993
    10083     VMXVEXITINFO ExitInfo;
    10084     RT_ZERO(ExitInfo);
    10085     ExitInfo.uReason = pVmxTransient->uExitReason;
    10086     ExitInfo.cbInstr = pVmxTransient->cbExitInstr;
    10087     ExitInfo.u64Qual = pVmxTransient->uExitQual;
     9994    VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_FROM_TRANSIENT(pVmxTransient);
    100889995
    100899996    VMXVEXITEVENTINFO ExitEventInfo;
     
    1017010077        vmxHCReadExitInstrInfoVmcs(pVCpu, pVmxTransient);
    1017110078
    10172         VMXVEXITINFO ExitInfo;
    10173         RT_ZERO(ExitInfo);
    10174         ExitInfo.uReason   = pVmxTransient->uExitReason;
    10175         ExitInfo.cbInstr   = pVmxTransient->cbExitInstr;
    10176         ExitInfo.u64Qual   = pVmxTransient->uExitQual;
    10177         ExitInfo.InstrInfo = pVmxTransient->ExitInstrInfo;
     10079        VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_FROM_TRANSIENT(pVmxTransient);
    1017810080        return IEMExecVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    1017910081    }
     
    1028010182    vmxHCReadExitInstrInfoVmcs(pVCpu, pVmxTransient);
    1028110183
    10282     VMXVEXITINFO ExitInfo;
    10283     RT_ZERO(ExitInfo);
    10284     ExitInfo.uReason   = pVmxTransient->uExitReason;
    10285     ExitInfo.cbInstr   = pVmxTransient->cbExitInstr;
    10286     ExitInfo.u64Qual   = pVmxTransient->uExitQual;
    10287     ExitInfo.InstrInfo = pVmxTransient->ExitInstrInfo;
     10184    VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_FROM_TRANSIENT(pVmxTransient);
    1028810185    return IEMExecVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    1028910186}
     
    1040410301        if (Walk.fFailed & PGM_WALKFAIL_EPT_VIOLATION)
    1040510302        {
    10406             VMXVEXITINFO ExitInfo;
    10407             RT_ZERO(ExitInfo);
    10408             ExitInfo.uReason            = VMX_EXIT_EPT_VIOLATION;
    10409             ExitInfo.cbInstr            = pVmxTransient->cbExitInstr;
    10410             ExitInfo.u64Qual            = pVmxTransient->uExitQual;
    10411             ExitInfo.u64GuestLinearAddr = pVmxTransient->uGuestLinearAddr;
    10412             ExitInfo.u64GuestPhysAddr   = pVmxTransient->uGuestPhysicalAddr;
     10303            VMXVEXITINFO const ExitInfo
     10304                = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_AND_GST_ADDRESSES(VMX_EXIT_EPT_VIOLATION,
     10305                                                                                   pVmxTransient->uExitQual,
     10306                                                                                   pVmxTransient->cbExitInstr,
     10307                                                                                   pVmxTransient->uGuestLinearAddr,
     10308                                                                                   pVmxTransient->uGuestPhysicalAddr);
    1041310309            return IEMExecVmxVmexitEptViolation(pVCpu, &ExitInfo, &ExitEventInfo);
    1041410310        }
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