VirtualBox

Changeset 90934 in vbox


Ignore:
Timestamp:
Aug 27, 2021 7:55:29 AM (3 years ago)
Author:
vboxsync
Message:

VMM: Nested VMX: bugref:10092 Added Tertiary Processor-based VM-execution controls, cleaned up comments and UNDEF to RSVD in VM-execution controls as they're not undefined but reserved. No functional change.

File:
1 edited

Legend:

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

    r90932 r90934  
    12661266
    12671267/** @name VMX Basic Exit Reasons.
    1268  * @{
    1269  */
    1270 /** -1 Invalid exit code */
    1271 #define VMX_EXIT_INVALID                                      (-1)
    1272 /** 0 Exception or non-maskable interrupt (NMI). */
     1268 * In accordance with the VT-x spec.
     1269 * Update g_aVMExitHandlers if new VM-exit reasons are added.
     1270 * @{
     1271 */
     1272/** Invalid exit code */
     1273#define VMX_EXIT_INVALID                                        (-1)
     1274/** Exception or non-maskable interrupt (NMI). */
    12731275#define VMX_EXIT_XCPT_OR_NMI                                    0
    1274 /** 1 External interrupt. */
     1276/** External interrupt. */
    12751277#define VMX_EXIT_EXT_INT                                        1
    1276 /** 2 Triple fault. */
     1278/** Triple fault. */
    12771279#define VMX_EXIT_TRIPLE_FAULT                                   2
    1278 /** 3 INIT signal. */
     1280/** INIT signal. */
    12791281#define VMX_EXIT_INIT_SIGNAL                                    3
    1280 /** 4 Start-up IPI (SIPI). */
     1282/** Start-up IPI (SIPI). */
    12811283#define VMX_EXIT_SIPI                                           4
    1282 /** 5 I/O system-management interrupt (SMI). */
     1284/** I/O system-management interrupt (SMI). */
    12831285#define VMX_EXIT_IO_SMI                                         5
    1284 /** 6 Other SMI. */
     1286/** Other SMI. */
    12851287#define VMX_EXIT_SMI                                            6
    1286 /** 7 Interrupt window exiting. */
     1288/** Interrupt window exiting. */
    12871289#define VMX_EXIT_INT_WINDOW                                     7
    1288 /** 8 NMI window exiting. */
     1290/** NMI window exiting. */
    12891291#define VMX_EXIT_NMI_WINDOW                                     8
    1290 /** 9 Task switch. */
     1292/** Task switch. */
    12911293#define VMX_EXIT_TASK_SWITCH                                    9
    1292 /** 10 Guest software attempted to execute CPUID. */
     1294/** CPUID. */
    12931295#define VMX_EXIT_CPUID                                          10
    1294 /** 11 Guest software attempted to execute GETSEC. */
     1296/** GETSEC. */
    12951297#define VMX_EXIT_GETSEC                                         11
    1296 /** 12 Guest software attempted to execute HLT. */
     1298/** HLT. */
    12971299#define VMX_EXIT_HLT                                            12
    1298 /** 13 Guest software attempted to execute INVD. */
     1300/** INVD. */
    12991301#define VMX_EXIT_INVD                                           13
    1300 /** 14 Guest software attempted to execute INVLPG. */
     1302/** INVLPG. */
    13011303#define VMX_EXIT_INVLPG                                         14
    1302 /** 15 Guest software attempted to execute RDPMC. */
     1304/** RDPMC. */
    13031305#define VMX_EXIT_RDPMC                                          15
    1304 /** 16 Guest software attempted to execute RDTSC. */
     1306/** RDTSC. */
    13051307#define VMX_EXIT_RDTSC                                          16
    1306 /** 17 Guest software attempted to execute RSM in SMM. */
     1308/** RSM in SMM. */
    13071309#define VMX_EXIT_RSM                                            17
    1308 /** 18 Guest software executed VMCALL. */
     1310/** VMCALL. */
    13091311#define VMX_EXIT_VMCALL                                         18
    1310 /** 19 Guest software executed VMCLEAR. */
     1312/** VMCLEAR. */
    13111313#define VMX_EXIT_VMCLEAR                                        19
    1312 /** 20 Guest software executed VMLAUNCH. */
     1314/** VMLAUNCH. */
    13131315#define VMX_EXIT_VMLAUNCH                                       20
    1314 /** 21 Guest software executed VMPTRLD. */
     1316/** VMPTRLD. */
    13151317#define VMX_EXIT_VMPTRLD                                        21
    1316 /** 22 Guest software executed VMPTRST. */
     1318/** VMPTRST. */
    13171319#define VMX_EXIT_VMPTRST                                        22
    1318 /** 23 Guest software executed VMREAD. */
     1320/** VMREAD. */
    13191321#define VMX_EXIT_VMREAD                                         23
    1320 /** 24 Guest software executed VMRESUME. */
     1322/** VMRESUME. */
    13211323#define VMX_EXIT_VMRESUME                                       24
    1322 /** 25 Guest software executed VMWRITE. */
     1324/** VMWRITE. */
    13231325#define VMX_EXIT_VMWRITE                                        25
    1324 /** 26 Guest software executed VMXOFF. */
     1326/** VMXOFF. */
    13251327#define VMX_EXIT_VMXOFF                                         26
    1326 /** 27 Guest software executed VMXON. */
     1328/** VMXON. */
    13271329#define VMX_EXIT_VMXON                                          27
    1328 /** 28 Control-register accesses. */
     1330/** Control-register accesses. */
    13291331#define VMX_EXIT_MOV_CRX                                        28
    1330 /** 29 Debug-register accesses. */
     1332/** Debug-register accesses. */
    13311333#define VMX_EXIT_MOV_DRX                                        29
    1332 /** 30 I/O instruction. */
     1334/** I/O instruction. */
    13331335#define VMX_EXIT_IO_INSTR                                       30
    1334 /** 31 RDMSR. Guest software attempted to execute RDMSR. */
     1336/** RDMSR. */
    13351337#define VMX_EXIT_RDMSR                                          31
    1336 /** 32 WRMSR. Guest software attempted to execute WRMSR. */
     1338/** WRMSR. */
    13371339#define VMX_EXIT_WRMSR                                          32
    1338 /** 33 VM-entry failure due to invalid guest state. */
     1340/** VM-entry failure due to invalid guest state. */
    13391341#define VMX_EXIT_ERR_INVALID_GUEST_STATE                        33
    1340 /** 34 VM-entry failure due to MSR loading. */
     1342/** VM-entry failure due to MSR loading. */
    13411343#define VMX_EXIT_ERR_MSR_LOAD                                   34
    1342 /** 36 Guest software executed MWAIT. */
     1344/** MWAIT. */
    13431345#define VMX_EXIT_MWAIT                                          36
    1344 /** 37 VM-exit due to monitor trap flag. */
     1346/** VM-exit due to monitor trap flag. */
    13451347#define VMX_EXIT_MTF                                            37
    1346 /** 39 Guest software attempted to execute MONITOR. */
     1348/** MONITOR. */
    13471349#define VMX_EXIT_MONITOR                                        39
    1348 /** 40 Guest software attempted to execute PAUSE. */
     1350/** PAUSE. */
    13491351#define VMX_EXIT_PAUSE                                          40
    1350 /** 41 VM-entry failure due to machine-check. */
     1352/** VM-entry failure due to machine-check. */
    13511353#define VMX_EXIT_ERR_MACHINE_CHECK                              41
    1352 /** 43 TPR below threshold. Guest software executed MOV to CR8. */
     1354/** TPR below threshold. Guest software executed MOV to CR8. */
    13531355#define VMX_EXIT_TPR_BELOW_THRESHOLD                            43
    1354 /** 44 APIC access. Guest software attempted to access memory at a physical
    1355  *  address on the APIC-access page. */
     1356/** VM-exit due to guest accessing physical address in the APIC-access page. */
    13561357#define VMX_EXIT_APIC_ACCESS                                    44
    1357 /** 45 Virtualized EOI. EOI virtualization was performed for a virtual
    1358  *  interrupt whose vector indexed a bit set in the EOI-exit bitmap. */
     1358/** VM-exit due to EOI virtualization. */
    13591359#define VMX_EXIT_VIRTUALIZED_EOI                                45
    1360 /** 46 Access to GDTR or IDTR. Guest software attempted to execute LGDT, LIDT,
    1361  *  SGDT, or SIDT. */
     1360/** Access to GDTR/IDTR using LGDT, LIDT, SGDT or SIDT. */
    13621361#define VMX_EXIT_GDTR_IDTR_ACCESS                               46
    1363 /** 47 Access to LDTR or TR. Guest software attempted to execute LLDT, LTR,
    1364  *  SLDT, or STR. */
     1362/** Access to LDTR/TR due to LLDT, LTR, SLDT, or STR. */
    13651363#define VMX_EXIT_LDTR_TR_ACCESS                                 47
    1366 /** 48 EPT violation. An attempt to access memory with a guest-physical address
    1367  *  was disallowed by the configuration of the EPT paging structures. */
     1364/** EPT violation. */
    13681365#define VMX_EXIT_EPT_VIOLATION                                  48
    1369 /** 49 EPT misconfiguration. An attempt to access memory with a guest-physical
    1370  *  address encountered a misconfigured EPT paging-structure entry. */
     1366/** EPT misconfiguration. */
    13711367#define VMX_EXIT_EPT_MISCONFIG                                  49
    1372 /** 50 INVEPT. Guest software attempted to execute INVEPT. */
     1368/** INVEPT. */
    13731369#define VMX_EXIT_INVEPT                                         50
    1374 /** 51 RDTSCP. Guest software attempted to execute RDTSCP. */
     1370/** RDTSCP. */
    13751371#define VMX_EXIT_RDTSCP                                         51
    1376 /** 52 VMX-preemption timer expired. The preemption timer counted down to zero. */
     1372/** VMX-preemption timer expired. */
    13771373#define VMX_EXIT_PREEMPT_TIMER                                  52
    1378 /** 53 INVVPID. Guest software attempted to execute INVVPID. */
     1374/** INVVPID. */
    13791375#define VMX_EXIT_INVVPID                                        53
    1380 /** 54 WBINVD. Guest software attempted to execute WBINVD. */
     1376/** WBINVD. */
    13811377#define VMX_EXIT_WBINVD                                         54
    1382 /** 55 XSETBV. Guest software attempted to execute XSETBV. */
     1378/** XSETBV. */
    13831379#define VMX_EXIT_XSETBV                                         55
    1384 /** 56 APIC write. Guest completed write to virtual-APIC. */
     1380/** Guest completed write to virtual-APIC. */
    13851381#define VMX_EXIT_APIC_WRITE                                     56
    1386 /** 57 RDRAND. Guest software attempted to execute RDRAND. */
     1382/** RDRAND. */
    13871383#define VMX_EXIT_RDRAND                                         57
    1388 /** 58 INVPCID. Guest software attempted to execute INVPCID. */
     1384/** INVPCID. */
    13891385#define VMX_EXIT_INVPCID                                        58
    1390 /** 59 VMFUNC. Guest software attempted to execute VMFUNC. */
     1386/** VMFUNC. */
    13911387#define VMX_EXIT_VMFUNC                                         59
    1392 /** 60 ENCLS. Guest software attempted to execute ENCLS. */
     1388/** ENCLS. */
    13931389#define VMX_EXIT_ENCLS                                          60
    1394 /** 61 - RDSEED - Guest software attempted to executed RDSEED and exiting was
    1395  * enabled. */
     1390/** RDSEED. */
    13961391#define VMX_EXIT_RDSEED                                         61
    1397 /** 62 - Page-modification log full. */
     1392/** Page-modification log full. */
    13981393#define VMX_EXIT_PML_FULL                                       62
    1399 /** 63 - XSAVES. Guest software attempted to execute XSAVES and exiting was
    1400  * enabled (XSAVES/XRSTORS was enabled too, of course). */
     1394/** XSAVES. */
    14011395#define VMX_EXIT_XSAVES                                         63
    1402 /** 64 - XRSTORS. Guest software attempted to execute XRSTORS and exiting
    1403  * was enabled (XSAVES/XRSTORS was enabled too, of course). */
     1396/** XRSTORS. */
    14041397#define VMX_EXIT_XRSTORS                                        64
    1405 /** 66 - SPP-related event. Attempt to determine an access' sub-page write
    1406  *  permission encountered an SPP miss or misconfiguration. */
     1398/** SPP-related event (SPP miss or misconfiguration). */
    14071399#define VMX_EXIT_SPP_EVENT                                      66
    1408 /* 67 - UMWAIT. Guest software attempted to execute UMWAIT and exiting was enabled. */
     1400/* UMWAIT. */
    14091401#define VMX_EXIT_UMWAIT                                         67
    1410 /** 68 - TPAUSE. Guest software attempted to execute TPAUSE and exiting was
    1411  *  enabled. */
     1402/** TPAUSE. */
    14121403#define VMX_EXIT_TPAUSE                                         68
    1413 /** The maximum exit value (inclusive). */
     1404/** The maximum VM-exit value (inclusive). */
    14141405#define VMX_EXIT_MAX                                            (VMX_EXIT_TPAUSE)
    14151406/** @} */
     
    21912182#define VMX_BF_PIN_CTLS_EXT_INT_EXIT_SHIFT                      0
    21922183#define VMX_BF_PIN_CTLS_EXT_INT_EXIT_MASK                       UINT32_C(0x00000001)
    2193 #define VMX_BF_PIN_CTLS_UNDEF_1_2_SHIFT                         1
    2194 #define VMX_BF_PIN_CTLS_UNDEF_1_2_MASK                          UINT32_C(0x00000006)
     2184#define VMX_BF_PIN_CTLS_RSVD_1_2_SHIFT                          1
     2185#define VMX_BF_PIN_CTLS_RSVD_1_2_MASK                           UINT32_C(0x00000006)
    21952186#define VMX_BF_PIN_CTLS_NMI_EXIT_SHIFT                          3
    21962187#define VMX_BF_PIN_CTLS_NMI_EXIT_MASK                           UINT32_C(0x00000008)
    2197 #define VMX_BF_PIN_CTLS_UNDEF_4_SHIFT                           4
    2198 #define VMX_BF_PIN_CTLS_UNDEF_4_MASK                            UINT32_C(0x00000010)
     2188#define VMX_BF_PIN_CTLS_RSVD_4_SHIFT                            4
     2189#define VMX_BF_PIN_CTLS_RSVD_4_MASK                             UINT32_C(0x00000010)
    21992190#define VMX_BF_PIN_CTLS_VIRT_NMI_SHIFT                          5
    22002191#define VMX_BF_PIN_CTLS_VIRT_NMI_MASK                           UINT32_C(0x00000020)
     
    22032194#define VMX_BF_PIN_CTLS_POSTED_INT_SHIFT                        7
    22042195#define VMX_BF_PIN_CTLS_POSTED_INT_MASK                         UINT32_C(0x00000080)
    2205 #define VMX_BF_PIN_CTLS_UNDEF_8_31_SHIFT                        8
    2206 #define VMX_BF_PIN_CTLS_UNDEF_8_31_MASK                         UINT32_C(0xffffff00)
     2196#define VMX_BF_PIN_CTLS_RSVD_8_31_SHIFT                         8
     2197#define VMX_BF_PIN_CTLS_RSVD_8_31_MASK                          UINT32_C(0xffffff00)
    22072198RT_BF_ASSERT_COMPILE_CHECKS(VMX_BF_PIN_CTLS_, UINT32_C(0), UINT32_MAX,
    2208                             (EXT_INT_EXIT, UNDEF_1_2, NMI_EXIT, UNDEF_4, VIRT_NMI, PREEMPT_TIMER, POSTED_INT, UNDEF_8_31));
     2199                            (EXT_INT_EXIT, RSVD_1_2, NMI_EXIT, RSVD_4, VIRT_NMI, PREEMPT_TIMER, POSTED_INT, RSVD_8_31));
    22092200/** @} */
    22102201
     
    22622253/** Bit fields for MSR_IA32_VMX_PROCBASED_CTLS and Processor-based VM-execution
    22632254 *  controls field in the VMCS. */
    2264 #define VMX_BF_PROC_CTLS_UNDEF_0_1_SHIFT                        0
    2265 #define VMX_BF_PROC_CTLS_UNDEF_0_1_MASK                         UINT32_C(0x00000003)
     2255#define VMX_BF_PROC_CTLS_RSVD_0_1_SHIFT                         0
     2256#define VMX_BF_PROC_CTLS_RSVD_0_1_MASK                          UINT32_C(0x00000003)
    22662257#define VMX_BF_PROC_CTLS_INT_WINDOW_EXIT_SHIFT                  2
    22672258#define VMX_BF_PROC_CTLS_INT_WINDOW_EXIT_MASK                   UINT32_C(0x00000004)
    22682259#define VMX_BF_PROC_CTLS_USE_TSC_OFFSETTING_SHIFT               3
    22692260#define VMX_BF_PROC_CTLS_USE_TSC_OFFSETTING_MASK                UINT32_C(0x00000008)
    2270 #define VMX_BF_PROC_CTLS_UNDEF_4_6_SHIFT                        4
    2271 #define VMX_BF_PROC_CTLS_UNDEF_4_6_MASK                         UINT32_C(0x00000070)
     2261#define VMX_BF_PROC_CTLS_RSVD_4_6_SHIFT                         4
     2262#define VMX_BF_PROC_CTLS_RSVD_4_6_MASK                          UINT32_C(0x00000070)
    22722263#define VMX_BF_PROC_CTLS_HLT_EXIT_SHIFT                         7
    22732264#define VMX_BF_PROC_CTLS_HLT_EXIT_MASK                          UINT32_C(0x00000080)
    2274 #define VMX_BF_PROC_CTLS_UNDEF_8_SHIFT                          8
    2275 #define VMX_BF_PROC_CTLS_UNDEF_8_MASK                           UINT32_C(0x00000100)
     2265#define VMX_BF_PROC_CTLS_RSVD_8_SHIFT                           8
     2266#define VMX_BF_PROC_CTLS_RSVD_8_MASK                            UINT32_C(0x00000100)
    22762267#define VMX_BF_PROC_CTLS_INVLPG_EXIT_SHIFT                      9
    22772268#define VMX_BF_PROC_CTLS_INVLPG_EXIT_MASK                       UINT32_C(0x00000200)
     
    22822273#define VMX_BF_PROC_CTLS_RDTSC_EXIT_SHIFT                       12
    22832274#define VMX_BF_PROC_CTLS_RDTSC_EXIT_MASK                        UINT32_C(0x00001000)
    2284 #define VMX_BF_PROC_CTLS_UNDEF_13_14_SHIFT                      13
    2285 #define VMX_BF_PROC_CTLS_UNDEF_13_14_MASK                       UINT32_C(0x00006000)
     2275#define VMX_BF_PROC_CTLS_RSVD_13_14_SHIFT                       13
     2276#define VMX_BF_PROC_CTLS_RSVD_13_14_MASK                        UINT32_C(0x00006000)
    22862277#define VMX_BF_PROC_CTLS_CR3_LOAD_EXIT_SHIFT                    15
    22872278#define VMX_BF_PROC_CTLS_CR3_LOAD_EXIT_MASK                     UINT32_C(0x00008000)
    22882279#define VMX_BF_PROC_CTLS_CR3_STORE_EXIT_SHIFT                   16
    22892280#define VMX_BF_PROC_CTLS_CR3_STORE_EXIT_MASK                    UINT32_C(0x00010000)
    2290 #define VMX_BF_PROC_CTLS_UNDEF_17_18_SHIFT                      17
    2291 #define VMX_BF_PROC_CTLS_UNDEF_17_18_MASK                       UINT32_C(0x00060000)
     2281#define VMX_BF_PROC_CTLS_RSVD_17_18_SHIFT                       17
     2282#define VMX_BF_PROC_CTLS_RSVD_17_18_MASK                        UINT32_C(0x00060000)
    22922283#define VMX_BF_PROC_CTLS_CR8_LOAD_EXIT_SHIFT                    19
    22932284#define VMX_BF_PROC_CTLS_CR8_LOAD_EXIT_MASK                     UINT32_C(0x00080000)
     
    23042295#define VMX_BF_PROC_CTLS_USE_IO_BITMAPS_SHIFT                   25
    23052296#define VMX_BF_PROC_CTLS_USE_IO_BITMAPS_MASK                    UINT32_C(0x02000000)
    2306 #define VMX_BF_PROC_CTLS_UNDEF_26_SHIFT                         26
    2307 #define VMX_BF_PROC_CTLS_UNDEF_26_MASK                          UINT32_C(0x4000000)
     2297#define VMX_BF_PROC_CTLS_RSVD_26_SHIFT                          26
     2298#define VMX_BF_PROC_CTLS_RSVD_26_MASK                           UINT32_C(0x4000000)
    23082299#define VMX_BF_PROC_CTLS_MONITOR_TRAP_FLAG_SHIFT                27
    23092300#define VMX_BF_PROC_CTLS_MONITOR_TRAP_FLAG_MASK                 UINT32_C(0x08000000)
     
    23172308#define VMX_BF_PROC_CTLS_USE_SECONDARY_CTLS_MASK                UINT32_C(0x80000000)
    23182309RT_BF_ASSERT_COMPILE_CHECKS(VMX_BF_PROC_CTLS_, UINT32_C(0), UINT32_MAX,
    2319                             (UNDEF_0_1, INT_WINDOW_EXIT, USE_TSC_OFFSETTING, UNDEF_4_6, HLT_EXIT, UNDEF_8, INVLPG_EXIT,
    2320                              MWAIT_EXIT, RDPMC_EXIT, RDTSC_EXIT, UNDEF_13_14, CR3_LOAD_EXIT, CR3_STORE_EXIT, UNDEF_17_18,
     2310                            (RSVD_0_1, INT_WINDOW_EXIT, USE_TSC_OFFSETTING, RSVD_4_6, HLT_EXIT, RSVD_8, INVLPG_EXIT,
     2311                             MWAIT_EXIT, RDPMC_EXIT, RDTSC_EXIT, RSVD_13_14, CR3_LOAD_EXIT, CR3_STORE_EXIT, RSVD_17_18,
    23212312                             CR8_LOAD_EXIT, CR8_STORE_EXIT, USE_TPR_SHADOW, NMI_WINDOW_EXIT, MOV_DR_EXIT, UNCOND_IO_EXIT,
    2322                              USE_IO_BITMAPS, UNDEF_26, MONITOR_TRAP_FLAG, USE_MSR_BITMAPS, MONITOR_EXIT, PAUSE_EXIT,
     2313                             USE_IO_BITMAPS, RSVD_26, MONITOR_TRAP_FLAG, USE_MSR_BITMAPS, MONITOR_EXIT, PAUSE_EXIT,
    23232314                             USE_SECONDARY_CTLS));
    23242315/** @} */
     
    24292420#define VMX_BF_PROC_CTLS2_XSAVES_XRSTORS_SHIFT                  20
    24302421#define VMX_BF_PROC_CTLS2_XSAVES_XRSTORS_MASK                   UINT32_C(0x00100000)
    2431 #define VMX_BF_PROC_CTLS2_UNDEF_21_SHIFT                        21
    2432 #define VMX_BF_PROC_CTLS2_UNDEF_21_MASK                         UINT32_C(0x00200000)
     2422#define VMX_BF_PROC_CTLS2_RSVD_21_SHIFT                         21
     2423#define VMX_BF_PROC_CTLS2_RSVD_21_MASK                          UINT32_C(0x00200000)
    24332424#define VMX_BF_PROC_CTLS2_MODE_BASED_EPT_PERM_SHIFT             22
    24342425#define VMX_BF_PROC_CTLS2_MODE_BASED_EPT_PERM_MASK              UINT32_C(0x00400000)
     
    24412432#define VMX_BF_PROC_CTLS2_USER_WAIT_PAUSE_SHIFT                 26
    24422433#define VMX_BF_PROC_CTLS2_USER_WAIT_PAUSE_MASK                  UINT32_C(0x04000000)
    2443 #define VMX_BF_PROC_CTLS2_UNDEF_27_SHIFT                        27
    2444 #define VMX_BF_PROC_CTLS2_UNDEF_27_MASK                         UINT32_C(0x08000000)
     2434#define VMX_BF_PROC_CTLS2_RSVD_27_SHIFT                         27
     2435#define VMX_BF_PROC_CTLS2_RSVD_27_MASK                          UINT32_C(0x08000000)
    24452436#define VMX_BF_PROC_CTLS2_ENCLV_EXIT_SHIFT                      28
    24462437#define VMX_BF_PROC_CTLS2_ENCLV_EXIT_MASK                       UINT32_C(0x10000000)
    2447 #define VMX_BF_PROC_CTLS2_UNDEF_29_31_SHIFT                     29
    2448 #define VMX_BF_PROC_CTLS2_UNDEF_29_31_MASK                      UINT32_C(0xe0000000)
     2438#define VMX_BF_PROC_CTLS2_RSVD_29_31_SHIFT                      29
     2439#define VMX_BF_PROC_CTLS2_RSVD_29_31_MASK                       UINT32_C(0xe0000000)
    24492440
    24502441RT_BF_ASSERT_COMPILE_CHECKS(VMX_BF_PROC_CTLS2_, UINT32_C(0), UINT32_MAX,
    24512442                            (VIRT_APIC_ACCESS, EPT, DESC_TABLE_EXIT, RDTSCP, VIRT_X2APIC_MODE, VPID, WBINVD_EXIT,
    24522443                             UNRESTRICTED_GUEST, APIC_REG_VIRT, VIRT_INT_DELIVERY, PAUSE_LOOP_EXIT, RDRAND_EXIT, INVPCID, VMFUNC,
    2453                              VMCS_SHADOWING, ENCLS_EXIT, RDSEED_EXIT, PML, EPT_VE, CONCEAL_VMX_FROM_PT, XSAVES_XRSTORS, UNDEF_21,
    2454                              MODE_BASED_EPT_PERM, SPPTP_EPT, PT_EPT, TSC_SCALING, USER_WAIT_PAUSE, UNDEF_27, ENCLV_EXIT,
    2455                              UNDEF_29_31));
     2444                             VMCS_SHADOWING, ENCLS_EXIT, RDSEED_EXIT, PML, EPT_VE, CONCEAL_VMX_FROM_PT, XSAVES_XRSTORS, RSVD_21,
     2445                             MODE_BASED_EPT_PERM, SPPTP_EPT, PT_EPT, TSC_SCALING, USER_WAIT_PAUSE, RSVD_27, ENCLV_EXIT,
     2446                             RSVD_29_31));
     2447/** @} */
     2448
     2449
     2450/** @name Tertiary Processor-based VM-execution controls.
     2451 * @{
     2452 */
     2453/** VM-exit when executing LOADIWKEY. */
     2454#define VMX_PROC_CTLS3_LOADIWKEY_EXIT                           RT_BIT_64(0)
     2455
     2456/** Bit fields for Tertiary processor-based VM-execution controls field in the VMCS. */
     2457#define VMX_BF_PROC_CTLS3_LOADIWKEY_EXIT_SHIFT                  0
     2458#define VMX_BF_PROC_CTLS3_LOADIWKEY_EXIT_MASK                   UINT64_C(0x0000000000000001)
     2459#define VMX_BF_PROC_CTLS3_RSVD_1_63_SHIFT                       1
     2460#define VMX_BF_PROC_CTLS3_RSVD_1_63_MASK                        UINT64_C(0xfffffffffffffffe)
     2461
     2462RT_BF_ASSERT_COMPILE_CHECKS(VMX_BF_PROC_CTLS3_, UINT64_C(0), UINT64_MAX,
     2463                            (LOADIWKEY_EXIT, RSVD_1_63));
    24562464/** @} */
    24572465
     
    24882496/** Bit fields for MSR_IA32_VMX_ENTRY_CTLS and VM-entry controls field in the
    24892497 *  VMCS. */
    2490 #define VMX_BF_ENTRY_CTLS_UNDEF_0_1_SHIFT                       0
    2491 #define VMX_BF_ENTRY_CTLS_UNDEF_0_1_MASK                        UINT32_C(0x00000003)
     2498#define VMX_BF_ENTRY_CTLS_RSVD_0_1_SHIFT                        0
     2499#define VMX_BF_ENTRY_CTLS_RSVD_0_1_MASK                         UINT32_C(0x00000003)
    24922500#define VMX_BF_ENTRY_CTLS_LOAD_DEBUG_SHIFT                      2
    24932501#define VMX_BF_ENTRY_CTLS_LOAD_DEBUG_MASK                       UINT32_C(0x00000004)
    2494 #define VMX_BF_ENTRY_CTLS_UNDEF_3_8_SHIFT                       3
    2495 #define VMX_BF_ENTRY_CTLS_UNDEF_3_8_MASK                        UINT32_C(0x000001f8)
     2502#define VMX_BF_ENTRY_CTLS_RSVD_3_8_SHIFT                        3
     2503#define VMX_BF_ENTRY_CTLS_RSVD_3_8_MASK                         UINT32_C(0x000001f8)
    24962504#define VMX_BF_ENTRY_CTLS_IA32E_MODE_GUEST_SHIFT                9
    24972505#define VMX_BF_ENTRY_CTLS_IA32E_MODE_GUEST_MASK                 UINT32_C(0x00000200)
     
    25002508#define VMX_BF_ENTRY_CTLS_DEACTIVATE_DUAL_MON_SHIFT             11
    25012509#define VMX_BF_ENTRY_CTLS_DEACTIVATE_DUAL_MON_MASK              UINT32_C(0x00000800)
    2502 #define VMX_BF_ENTRY_CTLS_UNDEF_12_SHIFT                        12
    2503 #define VMX_BF_ENTRY_CTLS_UNDEF_12_MASK                         UINT32_C(0x00001000)
     2510#define VMX_BF_ENTRY_CTLS_RSVD_12_SHIFT                         12
     2511#define VMX_BF_ENTRY_CTLS_RSVD_12_MASK                          UINT32_C(0x00001000)
    25042512#define VMX_BF_ENTRY_CTLS_LOAD_PERF_MSR_SHIFT                   13
    25052513#define VMX_BF_ENTRY_CTLS_LOAD_PERF_MSR_MASK                    UINT32_C(0x00002000)
     
    25142522#define VMX_BF_ENTRY_CTLS_LOAD_RTIT_CTL_MSR_SHIFT               18
    25152523#define VMX_BF_ENTRY_CTLS_LOAD_RTIT_CTL_MSR_MASK                UINT32_C(0x00040000)
    2516 #define VMX_BF_ENTRY_CTLS_UNDEF_19_31_SHIFT                     19
    2517 #define VMX_BF_ENTRY_CTLS_UNDEF_19_31_MASK                      UINT32_C(0xfff80000)
     2524#define VMX_BF_ENTRY_CTLS_RSVD_19_31_SHIFT                      19
     2525#define VMX_BF_ENTRY_CTLS_RSVD_19_31_MASK                       UINT32_C(0xfff80000)
    25182526RT_BF_ASSERT_COMPILE_CHECKS(VMX_BF_ENTRY_CTLS_, UINT32_C(0), UINT32_MAX,
    2519                             (UNDEF_0_1, LOAD_DEBUG, UNDEF_3_8, IA32E_MODE_GUEST, ENTRY_SMM, DEACTIVATE_DUAL_MON, UNDEF_12,
     2527                            (RSVD_0_1, LOAD_DEBUG, RSVD_3_8, IA32E_MODE_GUEST, ENTRY_SMM, DEACTIVATE_DUAL_MON, RSVD_12,
    25202528                             LOAD_PERF_MSR, LOAD_PAT_MSR, LOAD_EFER_MSR, LOAD_BNDCFGS_MSR, CONCEAL_VMX_FROM_PT,
    2521                              LOAD_RTIT_CTL_MSR, UNDEF_19_31));
     2529                             LOAD_RTIT_CTL_MSR, RSVD_19_31));
    25222530/** @} */
    25232531
     
    25582566/** Bit fields for MSR_IA32_VMX_EXIT_CTLS and VM-exit controls field in the
    25592567 *  VMCS. */
    2560 #define VMX_BF_EXIT_CTLS_UNDEF_0_1_SHIFT                        0
    2561 #define VMX_BF_EXIT_CTLS_UNDEF_0_1_MASK                         UINT32_C(0x00000003)
     2568#define VMX_BF_EXIT_CTLS_RSVD_0_1_SHIFT                         0
     2569#define VMX_BF_EXIT_CTLS_RSVD_0_1_MASK                          UINT32_C(0x00000003)
    25622570#define VMX_BF_EXIT_CTLS_SAVE_DEBUG_SHIFT                       2
    25632571#define VMX_BF_EXIT_CTLS_SAVE_DEBUG_MASK                        UINT32_C(0x00000004)
    2564 #define VMX_BF_EXIT_CTLS_UNDEF_3_8_SHIFT                        3
    2565 #define VMX_BF_EXIT_CTLS_UNDEF_3_8_MASK                         UINT32_C(0x000001f8)
     2572#define VMX_BF_EXIT_CTLS_RSVD_3_8_SHIFT                         3
     2573#define VMX_BF_EXIT_CTLS_RSVD_3_8_MASK                          UINT32_C(0x000001f8)
    25662574#define VMX_BF_EXIT_CTLS_HOST_ADDR_SPACE_SIZE_SHIFT             9
    25672575#define VMX_BF_EXIT_CTLS_HOST_ADDR_SPACE_SIZE_MASK              UINT32_C(0x00000200)
    2568 #define VMX_BF_EXIT_CTLS_UNDEF_10_11_SHIFT                      10
    2569 #define VMX_BF_EXIT_CTLS_UNDEF_10_11_MASK                       UINT32_C(0x00000c00)
     2576#define VMX_BF_EXIT_CTLS_RSVD_10_11_SHIFT                       10
     2577#define VMX_BF_EXIT_CTLS_RSVD_10_11_MASK                        UINT32_C(0x00000c00)
    25702578#define VMX_BF_EXIT_CTLS_LOAD_PERF_MSR_SHIFT                    12
    25712579#define VMX_BF_EXIT_CTLS_LOAD_PERF_MSR_MASK                     UINT32_C(0x00001000)
    2572 #define VMX_BF_EXIT_CTLS_UNDEF_13_14_SHIFT                      13
    2573 #define VMX_BF_EXIT_CTLS_UNDEF_13_14_MASK                       UINT32_C(0x00006000)
     2580#define VMX_BF_EXIT_CTLS_RSVD_13_14_SHIFT                       13
     2581#define VMX_BF_EXIT_CTLS_RSVD_13_14_MASK                        UINT32_C(0x00006000)
    25742582#define VMX_BF_EXIT_CTLS_ACK_EXT_INT_SHIFT                      15
    25752583#define VMX_BF_EXIT_CTLS_ACK_EXT_INT_MASK                       UINT32_C(0x00008000)
    2576 #define VMX_BF_EXIT_CTLS_UNDEF_16_17_SHIFT                      16
    2577 #define VMX_BF_EXIT_CTLS_UNDEF_16_17_MASK                       UINT32_C(0x00030000)
     2584#define VMX_BF_EXIT_CTLS_RSVD_16_17_SHIFT                       16
     2585#define VMX_BF_EXIT_CTLS_RSVD_16_17_MASK                        UINT32_C(0x00030000)
    25782586#define VMX_BF_EXIT_CTLS_SAVE_PAT_MSR_SHIFT                     18
    25792587#define VMX_BF_EXIT_CTLS_SAVE_PAT_MSR_MASK                      UINT32_C(0x00040000)
     
    25922600#define VMX_BF_EXIT_CTLS_CLEAR_RTIT_CTL_MSR_SHIFT               25
    25932601#define VMX_BF_EXIT_CTLS_CLEAR_RTIT_CTL_MSR_MASK                UINT32_C(0x02000000)
    2594 #define VMX_BF_EXIT_CTLS_UNDEF_26_31_SHIFT                      26
    2595 #define VMX_BF_EXIT_CTLS_UNDEF_26_31_MASK                       UINT32_C(0xfc000000)
     2602#define VMX_BF_EXIT_CTLS_RSVD_26_31_SHIFT                       26
     2603#define VMX_BF_EXIT_CTLS_RSVD_26_31_MASK                        UINT32_C(0xfc000000)
    25962604RT_BF_ASSERT_COMPILE_CHECKS(VMX_BF_EXIT_CTLS_, UINT32_C(0), UINT32_MAX,
    2597                             (UNDEF_0_1, SAVE_DEBUG, UNDEF_3_8, HOST_ADDR_SPACE_SIZE, UNDEF_10_11, LOAD_PERF_MSR, UNDEF_13_14,
    2598                              ACK_EXT_INT, UNDEF_16_17, SAVE_PAT_MSR, LOAD_PAT_MSR, SAVE_EFER_MSR, LOAD_EFER_MSR,
    2599                              SAVE_PREEMPT_TIMER, CLEAR_BNDCFGS_MSR, CONCEAL_VMX_FROM_PT, CLEAR_RTIT_CTL_MSR, UNDEF_26_31));
     2605                            (RSVD_0_1, SAVE_DEBUG, RSVD_3_8, HOST_ADDR_SPACE_SIZE, RSVD_10_11, LOAD_PERF_MSR, RSVD_13_14,
     2606                             ACK_EXT_INT, RSVD_16_17, SAVE_PAT_MSR, LOAD_PAT_MSR, SAVE_EFER_MSR, LOAD_EFER_MSR,
     2607                             SAVE_PREEMPT_TIMER, CLEAR_BNDCFGS_MSR, CONCEAL_VMX_FROM_PT, CLEAR_RTIT_CTL_MSR, RSVD_26_31));
    26002608/** @} */
    26012609
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