VirtualBox

Changeset 97042 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Oct 7, 2022 8:48:58 AM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
153988
Message:

VMM/IEM: Nested VMX: bugref:10092 Slightly shorten VMXVEXITINFO_INIT_WITH macro ("QUALIFIER" -> "QUAL").

File:
1 edited

Legend:

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

    r97037 r97042  
    28602860    uint32_t const     uInstrInfo = iemVmxGetExitInstrInfo(pVCpu, uExitReason, uInstrId, &GCPtrDisp);
    28612861
    2862     VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO(uExitReason, GCPtrDisp, uInstrInfo, cbInstr);
     2862    VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_INFO(uExitReason, GCPtrDisp, uInstrInfo, cbInstr);
    28632863    return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    28642864}
     
    28752875VBOXSTRICTRC iemVmxVmexitInstrInvlpg(PVMCPUCC pVCpu, RTGCPTR GCPtrPage, uint8_t cbInstr) RT_NOEXCEPT
    28762876{
    2877     VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_INVLPG, GCPtrPage, cbInstr);
     2877    VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_INVLPG, GCPtrPage, cbInstr);
    28782878    Assert(IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fLongMode || !RT_HI_U32(ExitInfo.u64Qual));
    28792879    return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
     
    29062906        bool const fMemOperand = RT_BOOL(GCPtrEffDst != NIL_RTGCPTR);
    29072907        VMXVEXITINFO ExitInfo
    2908             = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
    2909                                                                RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER,  0) /* CR0 */
    2910                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_LMSW_OP,   fMemOperand)
    2911                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_LMSW_DATA, uNewMsw)
    2912                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS,
    2913                                                                           VMX_EXIT_QUAL_CRX_ACCESS_LMSW),
    2914                                                              cbInstr);
     2908            = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
     2909                                                          RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER,  0) /* CR0 */
     2910                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_LMSW_OP,   fMemOperand)
     2911                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_LMSW_DATA, uNewMsw)
     2912                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS,  VMX_EXIT_QUAL_CRX_ACCESS_LMSW),
     2913                                                        cbInstr);
    29152914        if (fMemOperand)
    29162915        {
     
    29642963            Log2(("clts: Guest intercept -> VM-exit\n"));
    29652964            VMXVEXITINFO const ExitInfo
    2966                 = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
    2967                                                                    RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 0) /* CR0 */
    2968                                                                  | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS,
    2969                                                                               VMX_EXIT_QUAL_CRX_ACCESS_CLTS),
    2970                                                                  cbInstr);
     2965                = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
     2966                                                              RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 0) /* CR0 */
     2967                                                            | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS,
     2968                                                                         VMX_EXIT_QUAL_CRX_ACCESS_CLTS),
     2969                                                            cbInstr);
    29712970            return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    29722971        }
     
    30083007        Log2(("mov_Cr_Rd: (CR%u) Guest intercept -> VM-exit\n", iCrReg));
    30093008        VMXVEXITINFO const ExitInfo
    3010             = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
    3011                                                                RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, iCrReg)
    3012                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG,   iGReg)
    3013                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS,
    3014                                                                           VMX_EXIT_QUAL_CRX_ACCESS_WRITE),
    3015                                                              cbInstr);
     3009            = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
     3010                                                          RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, iCrReg)
     3011                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG,   iGReg)
     3012                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, VMX_EXIT_QUAL_CRX_ACCESS_WRITE),
     3013                                                        cbInstr);
    30163014        return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    30173015    }
     
    30643062        Log2(("mov_Rd_Cr: (CR3) Guest intercept -> VM-exit\n"));
    30653063        VMXVEXITINFO const ExitInfo
    3066             = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
    3067                                                                RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 3) /* CR3 */
    3068                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG,   iGReg)
    3069                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS,
    3070                                                                           VMX_EXIT_QUAL_CRX_ACCESS_READ),
    3071                                                              cbInstr);
     3064            = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
     3065                                                          RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 3) /* CR3 */
     3066                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG,   iGReg)
     3067                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, VMX_EXIT_QUAL_CRX_ACCESS_READ),
     3068                                                        cbInstr);
    30723069        return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    30733070    }
     
    31003097        Log2(("mov_Cr_Rd: (CR3) Guest intercept -> VM-exit\n"));
    31013098        VMXVEXITINFO const ExitInfo
    3102             = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
    3103                                                                RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 3) /* CR3 */
    3104                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG,   iGReg)
    3105                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS,
    3106                                                                           VMX_EXIT_QUAL_CRX_ACCESS_WRITE),
    3107                                                              cbInstr);
     3099            = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
     3100                                                           RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 3) /* CR3 */
     3101                                                         | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG,   iGReg)
     3102                                                         | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS,
     3103                                                                      VMX_EXIT_QUAL_CRX_ACCESS_WRITE),
     3104                                                         cbInstr);
    31083105        return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    31093106    }
     
    31323129        Log2(("mov_Rd_Cr: (CR8) Guest intercept -> VM-exit\n"));
    31333130        VMXVEXITINFO const ExitInfo
    3134             = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
    3135                                                                RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 8) /* CR8 */
    3136                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG,   iGReg)
    3137                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS,
    3138                                                                           VMX_EXIT_QUAL_CRX_ACCESS_READ),
    3139                                                              cbInstr);
     3131            = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
     3132                                                          RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 8) /* CR8 */
     3133                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG,   iGReg)
     3134                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, VMX_EXIT_QUAL_CRX_ACCESS_READ),
     3135                                                        cbInstr);
    31403136        return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    31413137    }
     
    31653161        Log2(("mov_Cr_Rd: (CR8) Guest intercept -> VM-exit\n"));
    31663162        VMXVEXITINFO const ExitInfo
    3167             = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
    3168                                                                RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 8) /* CR8 */
    3169                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG,   iGReg)
    3170                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS,
    3171                                                                           VMX_EXIT_QUAL_CRX_ACCESS_WRITE),
    3172                                                              cbInstr);
     3163            = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,
     3164                                                          RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 8) /* CR8 */
     3165                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG,   iGReg)
     3166                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, VMX_EXIT_QUAL_CRX_ACCESS_WRITE),
     3167                                                        cbInstr);
    31733168        return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    31743169    }
     
    32003195    {
    32013196        VMXVEXITINFO const ExitInfo
    3202             = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MOV_DRX,
    3203                                                                RT_BF_MAKE(VMX_BF_EXIT_QUAL_DRX_REGISTER,  iDrReg)
    3204                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_DRX_GENREG,    iGReg)
    3205                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_DRX_DIRECTION,
    3206                                                                           uInstrId == VMXINSTRID_MOV_TO_DRX
    3207                                                                           ? VMX_EXIT_QUAL_DRX_DIRECTION_WRITE
    3208                                                                           : VMX_EXIT_QUAL_DRX_DIRECTION_READ),
    3209                                                              cbInstr);
     3197            = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_DRX,
     3198                                                          RT_BF_MAKE(VMX_BF_EXIT_QUAL_DRX_REGISTER,  iDrReg)
     3199                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_DRX_GENREG,    iGReg)
     3200                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_DRX_DIRECTION,
     3201                                                                     uInstrId == VMXINSTRID_MOV_TO_DRX
     3202                                                                     ? VMX_EXIT_QUAL_DRX_DIRECTION_WRITE
     3203                                                                     : VMX_EXIT_QUAL_DRX_DIRECTION_READ),
     3204                                                        cbInstr);
    32103205            return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    32113206    }
     
    32373232    {
    32383233        VMXVEXITINFO const ExitInfo
    3239             = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_IO_INSTR,
    3240                                                                RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_WIDTH,     cbAccess - 1)
    3241                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_ENCODING,  fImm)
    3242                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_PORT,      u16Port)
    3243                                                              | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_DIRECTION,
    3244                                                                           uInstrId == VMXINSTRID_IO_IN
    3245                                                                           ? VMX_EXIT_QUAL_IO_DIRECTION_IN
    3246                                                                           : VMX_EXIT_QUAL_IO_DIRECTION_OUT),
    3247                                                              cbInstr);
     3234            = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_IO_INSTR,
     3235                                                          RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_WIDTH,     cbAccess - 1)
     3236                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_ENCODING,  fImm)
     3237                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_PORT,      u16Port)
     3238                                                        | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_DIRECTION,
     3239                                                                     uInstrId == VMXINSTRID_IO_IN
     3240                                                                     ? VMX_EXIT_QUAL_IO_DIRECTION_IN
     3241                                                                     : VMX_EXIT_QUAL_IO_DIRECTION_OUT),
     3242                                                        cbInstr);
    32483243        return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    32493244    }
     
    33083303
    33093304        VMXVEXITINFO const ExitInfo
    3310             = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_AND_LIN_ADDR(VMX_EXIT_IO_INSTR,
    3311                                                                              RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_WIDTH,   cbAccess - 1)
    3312                                                                            | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_DIRECTION, uDirection)
    3313                                                                            | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_IS_STRING, 1)
    3314                                                                            | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_IS_REP,    fRep)
    3315                                                                            | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_ENCODING,
    3316                                                                                         VMX_EXIT_QUAL_IO_ENCODING_DX)
    3317                                                                            | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_PORT,      u16Port),
    3318                                                                            IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fVmxInsOutInfo
    3319                                                                            ? ExitInstrInfo.u : 0,
    3320                                                                            cbInstr,
    3321                                                                            uGuestLinearAddr);
     3305            = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_INFO_AND_LIN_ADDR(VMX_EXIT_IO_INSTR,
     3306                                                                        RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_WIDTH,   cbAccess - 1)
     3307                                                                      | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_DIRECTION, uDirection)
     3308                                                                      | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_IS_STRING, 1)
     3309                                                                      | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_IS_REP,    fRep)
     3310                                                                      | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_ENCODING,
     3311                                                                                   VMX_EXIT_QUAL_IO_ENCODING_DX)
     3312                                                                      | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_PORT,      u16Port),
     3313                                                                      IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fVmxInsOutInfo
     3314                                                                      ? ExitInstrInfo.u : 0,
     3315                                                                      cbInstr,
     3316                                                                      uGuestLinearAddr);
    33223317        return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    33233318    }
     
    33373332VBOXSTRICTRC iemVmxVmexitInstrMwait(PVMCPUCC pVCpu, bool fMonitorHwArmed, uint8_t cbInstr) RT_NOEXCEPT
    33383333{
    3339     VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MWAIT, fMonitorHwArmed, cbInstr);
     3334    VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MWAIT, fMonitorHwArmed, cbInstr);
    33403335    return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo);
    33413336}
     
    99849979            LogFlowFunc(("Raising APIC-access VM-exit from #PF handler at offset %#x\n", offAccess));
    99859980            VMXVEXITINFO const ExitInfo
    9986                 = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_APIC_ACCESS,
    9987                                                                    RT_BF_MAKE(VMX_BF_EXIT_QUAL_APIC_ACCESS_OFFSET, offAccess)
    9988                                                                  | RT_BF_MAKE(VMX_BF_EXIT_QUAL_APIC_ACCESS_TYPE,   enmAccess),
    9989                                                                  HmExitAux.Vmx.cbInstr);
     9981                = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_APIC_ACCESS,
     9982                                                              RT_BF_MAKE(VMX_BF_EXIT_QUAL_APIC_ACCESS_OFFSET, offAccess)
     9983                                                            | RT_BF_MAKE(VMX_BF_EXIT_QUAL_APIC_ACCESS_TYPE,   enmAccess),
     9984                                                            HmExitAux.Vmx.cbInstr);
    99909985            VMXVEXITEVENTINFO const ExitEventInfo = VMXVEXITEVENTINFO_INIT_ONLY_IDT(HmExitAux.Vmx.uIdtVectoringInfo,
    99919986                                                                                    HmExitAux.Vmx.uIdtVectoringErrCode);
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