VirtualBox

Changeset 78650 in vbox for trunk/include


Ignore:
Timestamp:
May 22, 2019 9:41:16 AM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
130718
Message:

VMM: Nested VMX: bugref:9180 Added RTIT_CTL MSR to the virtual VMCS. Brought up rest of HM definitions to the latest VT-x specs. Spaces.

File:
1 edited

Legend:

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

    r78637 r78650  
    213213/** CS.Attr.P bit invalid. */
    214214#define VMX_IGS_CS_ATTR_P_INVALID                               516
    215 /** CS.Attr reserved bits not set to 0.  */
     215/** CS.Attr reserved bits not set to 0. */
    216216#define VMX_IGS_CS_ATTR_RESERVED                                517
    217217/** CS.Attr.G bit invalid. */
     
    789789    /* Invalidate all contexts (all EPTs) */
    790790    VMXTLBFLUSHEPT_ALL_CONTEXTS                = 2,
    791     /** Unsupported by VirtualBox.   */
     791    /** Unsupported by VirtualBox. */
    792792    VMXTLBFLUSHEPT_NOT_SUPPORTED               = 0xbad0,
    793793    /** Unsupported by CPU. */
     
    915915        /** Always cleared to 0. */
    916916        uint32_t    u1Cleared0      : 1;
    917         /** Operand size; 0=16-bit, 1=32-bit, undefined for 64-bit.  */
     917        /** Operand size; 0=16-bit, 1=32-bit, undefined for 64-bit. */
    918918        uint32_t    uOperandSize    : 1;
    919919        uint32_t    u3Undef0        : 3;
     
    969969        uint32_t    iReg1           : 4;
    970970        uint32_t    u4Undef0        : 4;
    971         /** Operand size; 0=16-bit, 1=32-bit, 2=64-bit, 3=unused.  */
     971        /** Operand size; 0=16-bit, 1=32-bit, 2=64-bit, 3=unused. */
    972972        uint32_t    u2OperandSize   : 2;
    973973        uint32_t    u19Def0         : 20;
     
    986986        /** Memory or register operand. */
    987987        uint32_t    fIsRegOperand   : 1;
    988         /** Operand size; 0=16-bit, 1=32-bit, 2=64-bit, 3=unused.  */
     988        /** Operand size; 0=16-bit, 1=32-bit, 2=64-bit, 3=unused. */
    989989        uint32_t    u4Undef0        : 4;
    990990        /** The segment register (X86_SREG_XXX). */
     
    10171017        /** Memory/Register - Always cleared to 0 to indicate memory operand. */
    10181018        uint32_t    fIsRegOperand   : 1;
    1019         /** Operand size; 0=16-bit, 1=32-bit, 2=64-bit, 3=unused.  */
     1019        /** Operand size; 0=16-bit, 1=32-bit, 2=64-bit, 3=unused. */
    10201020        uint32_t    uOperandSize    : 2;
    10211021        uint32_t    u2Undef0        : 2;
     
    10801080#define VMXMSRPM_MASK                                           (VMXMSRPM_RD_MASK  | VMXMSRPM_WR_MASK)
    10811081/** */
    1082 /** Gets whether the MSR permission is valid or not.  */
     1082/** Gets whether the MSR permission is valid or not. */
    10831083#define VMXMSRPM_IS_FLAG_VALID(a_Msrpm)                         (    (a_Msrpm) != 0 \
    10841084                                                                 && ((a_Msrpm) & ~VMXMSRPM_MASK) == 0 \
     
    13311331/** 62 - Page-modification log full. */
    13321332#define VMX_EXIT_PML_FULL                                       62
    1333 /** 63 - XSAVES - Guest software attempted to executed XSAVES and exiting was
     1333/** 63 - XSAVES. Guest software attempted to execute XSAVES and exiting was
    13341334 * enabled (XSAVES/XRSTORS was enabled too, of course). */
    13351335#define VMX_EXIT_XSAVES                                         63
    1336 /** 63 - XRSTORS - Guest software attempted to executed XRSTORS and exiting
     1336/** 64 - XRSTORS. Guest software attempted to execute XRSTORS and exiting
    13371337 * was enabled (XSAVES/XRSTORS was enabled too, of course). */
    13381338#define VMX_EXIT_XRSTORS                                        64
     1339/** 66 - SPP-related event. Attempt to determine an access' sub-page write
     1340 *  permission encountered an SPP miss or misconfiguration. */
     1341#define VMX_EXIT_SPP_EVENT                                      66
     1342/* 67 - UMWAIT. Guest software attempted to execute UMWAIT and exiting was enabled. */
     1343#define VMX_EXIT_UMWAIT                                         67
     1344/** 68 - TPAUSE. Guest software attempted to execute TPAUSE and exiting was
     1345 *  enabled. */
     1346#define VMX_EXIT_TPAUSE                                         68
    13391347/** The maximum exit value (inclusive). */
    1340 #define VMX_EXIT_MAX                                            (VMX_EXIT_XRSTORS)
     1348#define VMX_EXIT_MAX                                            (VMX_EXIT_TPAUSE)
    13411349/** @} */
    13421350
     
    14391447#define VMX_BASIC_MEM_TYPE_WB                                   6
    14401448
    1441 /** Bit fields for MSR_IA32_VMX_BASIC.  */
     1449/** Bit fields for MSR_IA32_VMX_BASIC. */
    14421450/** VMCS revision identifier used by the processor. */
    14431451#define VMX_BF_BASIC_VMCS_ID_SHIFT                              0
     
    14961504#define VMX_MISC_CR3_TARGET_COUNT(a_MiscMsr)                    (((a) >> 16) & 0xff)
    14971505
    1498 /** Bit fields for MSR_IA32_VMX_MISC.  */
     1506/** Bit fields for MSR_IA32_VMX_MISC. */
    14991507/** Relationship between the preemption timer and tsc. */
    15001508#define VMX_BF_MISC_PREEMPT_TIMER_TSC_SHIFT                     0
     
    15091517#define VMX_BF_MISC_RSVD_9_13_SHIFT                             9
    15101518#define VMX_BF_MISC_RSVD_9_13_MASK                              UINT64_C(0x0000000000003e00)
    1511 /** Whether Intel PT (Processor Trace) can be used in VMX operation.  */
     1519/** Whether Intel PT (Processor Trace) can be used in VMX operation. */
    15121520#define VMX_BF_MISC_INTEL_PT_SHIFT                              14
    15131521#define VMX_BF_MISC_INTEL_PT_MASK                               UINT64_C(0x0000000000004000)
     
    15481556 * @{
    15491557 */
    1550 /** Bit 0 is reserved and RAZ.  */
     1558/** Bit 0 is reserved and RAZ. */
    15511559#define VMX_BF_VMCS_ENUM_RSVD_0_SHIFT                           0
    15521560#define VMX_BF_VMCS_ENUM_RSVD_0_MASK                            UINT64_C(0x0000000000000001)
     
    15541562#define VMX_BF_VMCS_ENUM_HIGHEST_IDX_SHIFT                      1
    15551563#define VMX_BF_VMCS_ENUM_HIGHEST_IDX_MASK                       UINT64_C(0x00000000000003fe)
    1556 /** Bit 10:63 is reserved and RAZ.  */
     1564/** Bit 10:63 is reserved and RAZ. */
    15571565#define VMX_BF_VMCS_ENUM_RSVD_10_63_SHIFT                       10
    15581566#define VMX_BF_VMCS_ENUM_RSVD_10_63_MASK                        UINT64_C(0xfffffffffffffc00)
     
    22152223#define VMX_PROC_CTLS2_EPT_VE                                   RT_BIT(18)
    22162224/** Conceal VMX non-root operation from Intel processor trace (PT). */
    2217 #define VMX_PROC_CTLS2_CONCEAL_FROM_PT                          RT_BIT(19)
     2225#define VMX_PROC_CTLS2_CONCEAL_VMX_FROM_PT                      RT_BIT(19)
    22182226/** Enables XSAVES/XRSTORS instructions. */
    22192227#define VMX_PROC_CTLS2_XSAVES_XRSTORS                           RT_BIT(20)
     
    22222230#define VMX_PROC_CTLS2_MODE_BASED_EPT_PERM                      RT_BIT(22)
    22232231/** Enables EPT permissions to be specified at granularity of 128 bytes. */
    2224 #define VMX_PROC_CTLS2_SPPTP                                    RT_BIT(23)
     2232#define VMX_PROC_CTLS2_SPPTP_EPT                                RT_BIT(23)
     2233/** Intel PT output addresses are treated as guest-physical addresses and
     2234 *  translated using EPT. */
     2235#define VMX_PROC_CTLS2_PT_EPT                                   RT_BIT(24)
    22252236/** Use TSC scaling. */
    22262237#define VMX_PROC_CTLS2_TSC_SCALING                              RT_BIT(25)
     2238/** Enables TPAUSE, UMONITOR and UMWAIT instructions. */
     2239#define VMX_PROC_CTLS2_USER_WAIT_PAUSE                          RT_BIT(26)
    22272240/** Enables consulting ENCLV-exiting bitmap when executing ENCLV. */
    22282241#define VMX_PROC_CTLS2_ENCLV_EXIT                               RT_BIT(28)
     
    22682281#define VMX_BF_PROC_CTLS2_EPT_VE_SHIFT                          18
    22692282#define VMX_BF_PROC_CTLS2_EPT_VE_MASK                           UINT32_C(0x00040000)
    2270 #define VMX_BF_PROC_CTLS2_CONCEAL_FROM_PT_SHIFT                 19
    2271 #define VMX_BF_PROC_CTLS2_CONCEAL_FROM_PT_MASK                  UINT32_C(0x00080000)
     2283#define VMX_BF_PROC_CTLS2_CONCEAL_VMX_FROM_PT_SHIFT             19
     2284#define VMX_BF_PROC_CTLS2_CONCEAL_VMX_FROM_PT_MASK              UINT32_C(0x00080000)
    22722285#define VMX_BF_PROC_CTLS2_XSAVES_XRSTORS_SHIFT                  20
    22732286#define VMX_BF_PROC_CTLS2_XSAVES_XRSTORS_MASK                   UINT32_C(0x00100000)
     
    22762289#define VMX_BF_PROC_CTLS2_MODE_BASED_EPT_PERM_SHIFT             22
    22772290#define VMX_BF_PROC_CTLS2_MODE_BASED_EPT_PERM_MASK              UINT32_C(0x00400000)
    2278 #define VMX_BF_PROC_CTLS2_SPPTP_SHIFT                           23
    2279 #define VMX_BF_PROC_CTLS2_SPPTP_MASK                            UINT32_C(0x00800000)
    2280 #define VMX_BF_PROC_CTLS2_UNDEF_24_SHIFT                        24
    2281 #define VMX_BF_PROC_CTLS2_UNDEF_24_MASK                         UINT32_C(0x01000000)
     2291#define VMX_BF_PROC_CTLS2_SPPTP_EPT_SHIFT                       23
     2292#define VMX_BF_PROC_CTLS2_SPPTP_EPT_MASK                        UINT32_C(0x00800000)
     2293#define VMX_BF_PROC_CTLS2_PT_EPT_SHIFT                          24
     2294#define VMX_BF_PROC_CTLS2_PT_EPT_MASK                           UINT32_C(0x01000000)
    22822295#define VMX_BF_PROC_CTLS2_TSC_SCALING_SHIFT                     25
    22832296#define VMX_BF_PROC_CTLS2_TSC_SCALING_MASK                      UINT32_C(0x02000000)
    2284 #define VMX_BF_PROC_CTLS2_UNDEF_26_27_SHIFT                     26
    2285 #define VMX_BF_PROC_CTLS2_UNDEF_26_27_MASK                      UINT32_C(0x0c000000)
     2297#define VMX_BF_PROC_CTLS2_USER_WAIT_PAUSE_SHIFT                 26
     2298#define VMX_BF_PROC_CTLS2_USER_WAIT_PAUSE_MASK                  UINT32_C(0x04000000)
     2299#define VMX_BF_PROC_CTLS2_UNDEF_27_SHIFT                        27
     2300#define VMX_BF_PROC_CTLS2_UNDEF_27_MASK                         UINT32_C(0x08000000)
    22862301#define VMX_BF_PROC_CTLS2_ENCLV_EXIT_SHIFT                      28
    22872302#define VMX_BF_PROC_CTLS2_ENCLV_EXIT_MASK                       UINT32_C(0x10000000)
     
    22922307                            (VIRT_APIC_ACCESS, EPT, DESC_TABLE_EXIT, RDTSCP, VIRT_X2APIC_MODE, VPID, WBINVD_EXIT,
    22932308                             UNRESTRICTED_GUEST, APIC_REG_VIRT, VIRT_INT_DELIVERY, PAUSE_LOOP_EXIT, RDRAND_EXIT, INVPCID, VMFUNC,
    2294                              VMCS_SHADOWING, ENCLS_EXIT, RDSEED_EXIT, PML, EPT_VE, CONCEAL_FROM_PT, XSAVES_XRSTORS, UNDEF_21,
    2295                              MODE_BASED_EPT_PERM, SPPTP, UNDEF_24, TSC_SCALING, UNDEF_26_27, ENCLV_EXIT, UNDEF_29_31));
     2309                             VMCS_SHADOWING, ENCLS_EXIT, RDSEED_EXIT, PML, EPT_VE, CONCEAL_VMX_FROM_PT, XSAVES_XRSTORS, UNDEF_21,
     2310                             MODE_BASED_EPT_PERM, SPPTP_EPT, PT_EPT, TSC_SCALING, USER_WAIT_PAUSE, UNDEF_27, ENCLV_EXIT,
     2311                             UNDEF_29_31));
    22962312/** @} */
    22972313
     
    23182334#define VMX_ENTRY_CTLS_LOAD_BNDCFGS_MSR                         RT_BIT(16)
    23192335/** Whether to conceal VMX from Intel PT (Processor Trace). */
    2320 #define VMX_ENTRY_CTLS_CONCEAL_VMX_PT                           RT_BIT(17)
     2336#define VMX_ENTRY_CTLS_CONCEAL_VMX_FROM_PT                      RT_BIT(17)
     2337/** Whether the guest IA32_RTIT MSR is loaded on VM-entry. */
     2338#define VMX_ENTRY_CTLS_LOAD_RTIT_CTL_MSR                        RT_BIT(18)
    23212339/** Default1 class when true-capability MSRs are not supported. */
    23222340#define VMX_ENTRY_CTLS_DEFAULT1                                 UINT32_C(0x000011ff)
     
    23462364#define VMX_BF_ENTRY_CTLS_LOAD_BNDCFGS_MSR_SHIFT                16
    23472365#define VMX_BF_ENTRY_CTLS_LOAD_BNDCFGS_MSR_MASK                 UINT32_C(0x00010000)
    2348 #define VMX_BF_ENTRY_CTLS_CONCEAL_VMX_PT_SHIFT                  17
    2349 #define VMX_BF_ENTRY_CTLS_CONCEAL_VMX_PT_MASK                   UINT32_C(0x00020000)
    2350 #define VMX_BF_ENTRY_CTLS_UNDEF_18_31_SHIFT                     18
    2351 #define VMX_BF_ENTRY_CTLS_UNDEF_18_31_MASK                      UINT32_C(0xfffc0000)
     2366#define VMX_BF_ENTRY_CTLS_CONCEAL_VMX_FROM_PT_SHIFT             17
     2367#define VMX_BF_ENTRY_CTLS_CONCEAL_VMX_FROM_PT_MASK              UINT32_C(0x00020000)
     2368#define VMX_BF_ENTRY_CTLS_LOAD_RTIT_CTL_MSR_SHIFT               18
     2369#define VMX_BF_ENTRY_CTLS_LOAD_RTIT_CTL_MSR_MASK                UINT32_C(0x00040000)
     2370#define VMX_BF_ENTRY_CTLS_UNDEF_19_31_SHIFT                     19
     2371#define VMX_BF_ENTRY_CTLS_UNDEF_19_31_MASK                      UINT32_C(0xfff80000)
    23522372RT_BF_ASSERT_COMPILE_CHECKS(VMX_BF_ENTRY_CTLS_, UINT32_C(0), UINT32_MAX,
    23532373                            (UNDEF_0_1, LOAD_DEBUG, UNDEF_3_8, IA32E_MODE_GUEST, ENTRY_SMM, DEACTIVATE_DUAL_MON, UNDEF_12,
    2354                              LOAD_PERF_MSR, LOAD_PAT_MSR, LOAD_EFER_MSR, LOAD_BNDCFGS_MSR, CONCEAL_VMX_PT, UNDEF_18_31));
     2374                             LOAD_PERF_MSR, LOAD_PAT_MSR, LOAD_EFER_MSR, LOAD_BNDCFGS_MSR, CONCEAL_VMX_FROM_PT,
     2375                             LOAD_RTIT_CTL_MSR, UNDEF_19_31));
    23552376/** @} */
    23562377
     
    23802401/** Whether IA32_BNDCFGS MSR is cleared on VM-exit. */
    23812402#define VMX_EXIT_CTLS_CLEAR_BNDCFGS_MSR                         RT_BIT(23)
    2382 /** Default1 class when true-capability MSRs are not supported.  */
     2403/** Whether to conceal VMX from Intel PT. */
     2404#define VMX_EXIT_CTLS_CONCEAL_VMX_FROM_PT                       RT_BIT(24)
     2405/** Whether IA32_RTIT_CTL MSR is cleared on VM-exit. */
     2406#define VMX_EXIT_CTLS_CLEAR_RTIT_CTL_MSR                        RT_BIT(25)
     2407/** Default1 class when true-capability MSRs are not supported. */
    23832408#define VMX_EXIT_CTLS_DEFAULT1                                  UINT32_C(0x00036dff)
    23842409
     
    24132438#define VMX_BF_EXIT_CTLS_SAVE_PREEMPT_TIMER_SHIFT               22
    24142439#define VMX_BF_EXIT_CTLS_SAVE_PREEMPT_TIMER_MASK                UINT32_C(0x00400000)
    2415 #define VMX_BF_EXIT_CTLS_UNDEF_23_31_SHIFT                      23
    2416 #define VMX_BF_EXIT_CTLS_UNDEF_23_31_MASK                       UINT32_C(0xff800000)
     2440#define VMX_BF_EXIT_CTLS_CLEAR_BNDCFGS_MSR_SHIFT                23
     2441#define VMX_BF_EXIT_CTLS_CLEAR_BNDCFGS_MSR_MASK                 UINT32_C(0x00800000)
     2442#define VMX_BF_EXIT_CTLS_CONCEAL_VMX_FROM_PT_SHIFT              24
     2443#define VMX_BF_EXIT_CTLS_CONCEAL_VMX_FROM_PT_MASK               UINT32_C(0x01000000)
     2444#define VMX_BF_EXIT_CTLS_CLEAR_RTIT_CTL_MSR_SHIFT               25
     2445#define VMX_BF_EXIT_CTLS_CLEAR_RTIT_CTL_MSR_MASK                UINT32_C(0x02000000)
     2446#define VMX_BF_EXIT_CTLS_UNDEF_26_31_SHIFT                      26
     2447#define VMX_BF_EXIT_CTLS_UNDEF_26_31_MASK                       UINT32_C(0xfc000000)
    24172448RT_BF_ASSERT_COMPILE_CHECKS(VMX_BF_EXIT_CTLS_, UINT32_C(0), UINT32_MAX,
    24182449                            (UNDEF_0_1, SAVE_DEBUG, UNDEF_3_8, HOST_ADDR_SPACE_SIZE, UNDEF_10_11, LOAD_PERF_MSR, UNDEF_13_14,
    24192450                             ACK_EXT_INT, UNDEF_16_17, SAVE_PAT_MSR, LOAD_PAT_MSR, SAVE_EFER_MSR, LOAD_EFER_MSR,
    2420                              SAVE_PREEMPT_TIMER, UNDEF_23_31));
     2451                             SAVE_PREEMPT_TIMER, CLEAR_BNDCFGS_MSR, CONCEAL_VMX_FROM_PT, CLEAR_RTIT_CTL_MSR, UNDEF_26_31));
    24212452/** @} */
    24222453
     
    24842515#define VMX_BF_ENTRY_INT_INFO_TYPE_SHIFT                        8
    24852516#define VMX_BF_ENTRY_INT_INFO_TYPE_MASK                         UINT32_C(0x00000700)
    2486 /** Whether this event has an error code.   */
     2517/** Whether this event has an error code. */
    24872518#define VMX_BF_ENTRY_INT_INFO_ERR_CODE_VALID_SHIFT              11
    24882519#define VMX_BF_ENTRY_INT_INFO_ERR_CODE_VALID_MASK               UINT32_C(0x00000800)
     
    24902521#define VMX_BF_ENTRY_INT_INFO_RSVD_12_30_SHIFT                  12
    24912522#define VMX_BF_ENTRY_INT_INFO_RSVD_12_30_MASK                   UINT32_C(0x7ffff000)
    2492 /** Whether this VM-entry interruption info is valid.  */
     2523/** Whether this VM-entry interruption info is valid. */
    24932524#define VMX_BF_ENTRY_INT_INFO_VALID_SHIFT                       31
    24942525#define VMX_BF_ENTRY_INT_INFO_VALID_MASK                        UINT32_C(0x80000000)
     
    25902621 *  read or write. */
    25912622#define VMXINSTRID_MODRM_PRIMARY_OP_W                           RT_BIT_32(30)
    2592 /** Gets whether the instruction ID is valid or not.  */
     2623/** Gets whether the instruction ID is valid or not. */
    25932624#define VMXINSTRID_IS_VALID(a)                                  (((a) >> 31) & 1)
    25942625#define VMXINSTRID_IS_MODRM_PRIMARY_OP_W(a)                     (((a) >> 30) & 1)
    2595 /** Gets the instruction ID.  */
     2626/** Gets the instruction ID. */
    25962627#define VMXINSTRID_GET_ID(a)                                    ((a) & ~(VMXINSTRID_VALID | VMXINSTRID_MODRM_PRIMARY_OP_W))
    25972628/** No instruction ID info. */
     
    30233054#define VMX_BF_XDTR_INSINFO_UNDEF_2_6_MASK                      UINT32_C(0x0000007c)
    30243055/** Address size, only 0(=16), 1(=32) and 2(=64) are defined.
    3025  * @remarks anyone's guess why this is a 3 bit field...  */
     3056 * @remarks anyone's guess why this is a 3 bit field... */
    30263057#define VMX_BF_XDTR_INSINFO_ADDR_SIZE_SHIFT                     7
    30273058#define VMX_BF_XDTR_INSINFO_ADDR_SIZE_MASK                      UINT32_C(0x00000380)
     
    30823113#define VMX_BF_YYTR_INSINFO_REG1_MASK                           UINT32_C(0x00000078)
    30833114/** Address size, only 0(=16), 1(=32) and 2(=64) are defined.
    3084  * @remarks anyone's guess why this is a 3 bit field...  */
     3115 * @remarks anyone's guess why this is a 3 bit field... */
    30853116#define VMX_BF_YYTR_INSINFO_ADDR_SIZE_SHIFT                     7
    30863117#define VMX_BF_YYTR_INSINFO_ADDR_SIZE_MASK                      UINT32_C(0x00000380)
     
    31403171/** A debug exception would have been triggered by single-step execution mode. */
    31413172#define VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_BS                    RT_BIT_64(14)
    3142 /** A debug exception occurred inside an RTM region.   */
     3173/** A debug exception occurred inside an RTM region. */
    31433174#define VMX_VMCS_GUEST_PENDING_DEBUG_RTM                        RT_BIT_64(16)
    31443175/** Mask of valid bits. */
     
    31913222        /** The index. */
    31923223        uint32_t    u8Index      : 8;
    3193         /** The type; 0=control, 1=VM-exit info, 2=guest-state, 3=host-state.  */
     3224        /** The type; 0=control, 1=VM-exit info, 2=guest-state, 3=host-state. */
    31943225        uint32_t    u2Type       : 2;
    31953226        /** Reserved (MBZ). */
     
    32973328
    32983329/** Virtual VMCS revision ID. Bump this arbitarily chosen identifier if incompatible
    3299  *  changes to the layout of VMXVVMCS is done.  Bit 31 MBZ. */
     3330 *  changes to the layout of VMXVVMCS is done. Bit 31 MBZ. */
    33003331#define VMX_V_VMCS_REVISION_ID                                  UINT32_C(0x40000001)
    33013332AssertCompile(!(VMX_V_VMCS_REVISION_ID & RT_BIT(31)));
     
    33073338#define VMX_V_VMCS_PAGES                                        1
    33083339
    3309 /** The size of the Virtual-APIC page (in bytes).  */
     3340/** The size of the Virtual-APIC page (in bytes). */
    33103341#define VMX_V_VIRT_APIC_SIZE                                    X86_PAGE_4K_SIZE
    33113342/** The size of the Virtual-APIC page (in pages). */
     
    34303461typedef struct
    34313462{
    3432     /** 0x0 - VMX VMCS revision identifier.  */
     3463    /** 0x0 - VMX VMCS revision identifier. */
    34333464    VMXVMCSREVID    u32VmcsRevId;
    34343465    /** 0x4 - VMX-abort indicator. */
     
    35443575    /** @name 32-bit Read-only Data fields.
    35453576     * @{ */
    3546     /** 0xec - VM-instruction error.  */
     3577    /** 0xec - VM-instruction error. */
    35473578    uint32_t        u32RoVmInstrError;
    35483579    /** 0xf0 - VM-exit reason. */
     
    36493680    /** 0x228 - APIC-access address. */
    36503681    RTUINT64U       u64AddrApicAccess;
    3651     /** 0x230 - Posted-interrupt descriptor address.  */
     3682    /** 0x230 - Posted-interrupt descriptor address. */
    36523683    RTUINT64U       u64AddrPostedIntDesc;
    3653     /** 0x238 - VM-functions control.  */
     3684    /** 0x238 - VM-functions control. */
    36543685    RTUINT64U       u64VmFuncCtls;
    3655     /** 0x240 - EPTP pointer.  */
     3686    /** 0x240 - EPTP pointer. */
    36563687    RTUINT64U       u64EptpPtr;
    3657     /** 0x248 - EOI-exit bitmap 0.  */
     3688    /** 0x248 - EOI-exit bitmap 0. */
    36583689    RTUINT64U       u64EoiExitBitmap0;
    3659     /** 0x250 - EOI-exit bitmap 1.  */
     3690    /** 0x250 - EOI-exit bitmap 1. */
    36603691    RTUINT64U       u64EoiExitBitmap1;
    3661     /** 0x258 - EOI-exit bitmap 2.  */
     3692    /** 0x258 - EOI-exit bitmap 2. */
    36623693    RTUINT64U       u64EoiExitBitmap2;
    3663     /** 0x260 - EOI-exit bitmap 3.  */
     3694    /** 0x260 - EOI-exit bitmap 3. */
    36643695    RTUINT64U       u64EoiExitBitmap3;
    3665     /** 0x268 - EPTP-list address.  */
     3696    /** 0x268 - EPTP-list address. */
    36663697    RTUINT64U       u64AddrEptpList;
    3667     /** 0x270 - VMREAD-bitmap address.  */
     3698    /** 0x270 - VMREAD-bitmap address. */
    36683699    RTUINT64U       u64AddrVmreadBitmap;
    3669     /** 0x278 - VMWRITE-bitmap address.  */
     3700    /** 0x278 - VMWRITE-bitmap address. */
    36703701    RTUINT64U       u64AddrVmwriteBitmap;
    3671     /** 0x280 - Virtualization-exception information address.  */
     3702    /** 0x280 - Virtualization-exception information address. */
    36723703    RTUINT64U       u64AddrXcptVeInfo;
    3673     /** 0x288 - XSS-exiting bitmap.  */
     3704    /** 0x288 - XSS-exiting bitmap. */
    36743705    RTUINT64U       u64XssBitmap;
    3675     /** 0x290 - ENCLS-exiting bitmap address.  */
     3706    /** 0x290 - ENCLS-exiting bitmap address. */
    36763707    RTUINT64U       u64EnclsBitmap;
    36773708    /** 0x298 - Sub-page-permission-table pointer. */
    36783709    RTUINT64U       u64SpptPtr;
    3679     /** 0x2a0 - TSC multiplier.  */
     3710    /** 0x2a0 - TSC multiplier. */
    36803711    RTUINT64U       u64TscMultiplier;
    36813712    /** 0x2a8 - Reserved for future. */
     
    37133744    /** 0x3b0 - Guest Bounds-config MSR (Intel MPX - Memory Protection Extensions). */
    37143745    RTUINT64U       u64GuestBndcfgsMsr;
    3715     /** 0x3b8 - Reserved for future. */
    3716     RTUINT64U       au64Reserved2[16];
     3746    /** 0x3b8 - Guest RTIT control MSR (Intel Real Time Instruction Trace). */
     3747    RTUINT64U       u64GuestRtitCtlMsr;
     3748    /** 0x3c0 - Reserved for future. */
     3749    RTUINT64U       au64Reserved2[15];
    37173750    /** @} */
    37183751
     
    37943827    /** 0x710 - Guest TR base. */
    37953828    RTUINT64U       u64GuestTrBase;
    3796     /** 0x718 - Guest GDTR base.  */
     3829    /** 0x718 - Guest GDTR base. */
    37973830    RTUINT64U       u64GuestGdtrBase;
    3798     /** 0x720 - Guest IDTR base.  */
     3831    /** 0x720 - Guest IDTR base. */
    37993832    RTUINT64U       u64GuestIdtrBase;
    3800     /** 0x728 - Guest DR7.  */
     3833    /** 0x728 - Guest DR7. */
    38013834    RTUINT64U       u64GuestDr7;
    3802     /** 0x730 - Guest RSP.  */
     3835    /** 0x730 - Guest RSP. */
    38033836    RTUINT64U       u64GuestRsp;
    3804     /** 0x738 - Guest RIP.  */
     3837    /** 0x738 - Guest RIP. */
    38053838    RTUINT64U       u64GuestRip;
    3806     /** 0x740 - Guest RFLAGS.  */
     3839    /** 0x740 - Guest RFLAGS. */
    38073840    RTUINT64U       u64GuestRFlags;
    3808     /** 0x748 - Guest pending debug exception.  */
     3841    /** 0x748 - Guest pending debug exception. */
    38093842    RTUINT64U       u64GuestPendingDbgXcpt;
    3810     /** 0x750 - Guest SYSENTER ESP.  */
     3843    /** 0x750 - Guest SYSENTER ESP. */
    38113844    RTUINT64U       u64GuestSysenterEsp;
    3812     /** 0x758 - Guest SYSENTER EIP.  */
     3845    /** 0x758 - Guest SYSENTER EIP. */
    38133846    RTUINT64U       u64GuestSysenterEip;
    38143847    /** 0x760 - Reserved for future. */
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