Changeset 90934 in vbox
- Timestamp:
- Aug 27, 2021 7:55:29 AM (3 years ago)
- File:
-
- 1 edited
-
trunk/include/VBox/vmm/hm_vmx.h (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/hm_vmx.h
r90932 r90934 1266 1266 1267 1267 /** @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). */ 1273 1275 #define VMX_EXIT_XCPT_OR_NMI 0 1274 /** 1External interrupt. */1276 /** External interrupt. */ 1275 1277 #define VMX_EXIT_EXT_INT 1 1276 /** 2Triple fault. */1278 /** Triple fault. */ 1277 1279 #define VMX_EXIT_TRIPLE_FAULT 2 1278 /** 3INIT signal. */1280 /** INIT signal. */ 1279 1281 #define VMX_EXIT_INIT_SIGNAL 3 1280 /** 4Start-up IPI (SIPI). */1282 /** Start-up IPI (SIPI). */ 1281 1283 #define VMX_EXIT_SIPI 4 1282 /** 5I/O system-management interrupt (SMI). */1284 /** I/O system-management interrupt (SMI). */ 1283 1285 #define VMX_EXIT_IO_SMI 5 1284 /** 6Other SMI. */1286 /** Other SMI. */ 1285 1287 #define VMX_EXIT_SMI 6 1286 /** 7Interrupt window exiting. */1288 /** Interrupt window exiting. */ 1287 1289 #define VMX_EXIT_INT_WINDOW 7 1288 /** 8NMI window exiting. */1290 /** NMI window exiting. */ 1289 1291 #define VMX_EXIT_NMI_WINDOW 8 1290 /** 9Task switch. */1292 /** Task switch. */ 1291 1293 #define VMX_EXIT_TASK_SWITCH 9 1292 /** 10 Guest software attempted to executeCPUID. */1294 /** CPUID. */ 1293 1295 #define VMX_EXIT_CPUID 10 1294 /** 11 Guest software attempted to executeGETSEC. */1296 /** GETSEC. */ 1295 1297 #define VMX_EXIT_GETSEC 11 1296 /** 12 Guest software attempted to executeHLT. */1298 /** HLT. */ 1297 1299 #define VMX_EXIT_HLT 12 1298 /** 13 Guest software attempted to executeINVD. */1300 /** INVD. */ 1299 1301 #define VMX_EXIT_INVD 13 1300 /** 14 Guest software attempted to executeINVLPG. */1302 /** INVLPG. */ 1301 1303 #define VMX_EXIT_INVLPG 14 1302 /** 15 Guest software attempted to executeRDPMC. */1304 /** RDPMC. */ 1303 1305 #define VMX_EXIT_RDPMC 15 1304 /** 16 Guest software attempted to executeRDTSC. */1306 /** RDTSC. */ 1305 1307 #define VMX_EXIT_RDTSC 16 1306 /** 17 Guest software attempted to executeRSM in SMM. */1308 /** RSM in SMM. */ 1307 1309 #define VMX_EXIT_RSM 17 1308 /** 18 Guest software executedVMCALL. */1310 /** VMCALL. */ 1309 1311 #define VMX_EXIT_VMCALL 18 1310 /** 19 Guest software executedVMCLEAR. */1312 /** VMCLEAR. */ 1311 1313 #define VMX_EXIT_VMCLEAR 19 1312 /** 20 Guest software executedVMLAUNCH. */1314 /** VMLAUNCH. */ 1313 1315 #define VMX_EXIT_VMLAUNCH 20 1314 /** 21 Guest software executedVMPTRLD. */1316 /** VMPTRLD. */ 1315 1317 #define VMX_EXIT_VMPTRLD 21 1316 /** 22 Guest software executedVMPTRST. */1318 /** VMPTRST. */ 1317 1319 #define VMX_EXIT_VMPTRST 22 1318 /** 23 Guest software executedVMREAD. */1320 /** VMREAD. */ 1319 1321 #define VMX_EXIT_VMREAD 23 1320 /** 24 Guest software executedVMRESUME. */1322 /** VMRESUME. */ 1321 1323 #define VMX_EXIT_VMRESUME 24 1322 /** 25 Guest software executedVMWRITE. */1324 /** VMWRITE. */ 1323 1325 #define VMX_EXIT_VMWRITE 25 1324 /** 26 Guest software executedVMXOFF. */1326 /** VMXOFF. */ 1325 1327 #define VMX_EXIT_VMXOFF 26 1326 /** 27 Guest software executedVMXON. */1328 /** VMXON. */ 1327 1329 #define VMX_EXIT_VMXON 27 1328 /** 28Control-register accesses. */1330 /** Control-register accesses. */ 1329 1331 #define VMX_EXIT_MOV_CRX 28 1330 /** 29Debug-register accesses. */1332 /** Debug-register accesses. */ 1331 1333 #define VMX_EXIT_MOV_DRX 29 1332 /** 30I/O instruction. */1334 /** I/O instruction. */ 1333 1335 #define VMX_EXIT_IO_INSTR 30 1334 /** 31 RDMSR. Guest software attempted to executeRDMSR. */1336 /** RDMSR. */ 1335 1337 #define VMX_EXIT_RDMSR 31 1336 /** 32 WRMSR. Guest software attempted to executeWRMSR. */1338 /** WRMSR. */ 1337 1339 #define VMX_EXIT_WRMSR 32 1338 /** 33VM-entry failure due to invalid guest state. */1340 /** VM-entry failure due to invalid guest state. */ 1339 1341 #define VMX_EXIT_ERR_INVALID_GUEST_STATE 33 1340 /** 34VM-entry failure due to MSR loading. */1342 /** VM-entry failure due to MSR loading. */ 1341 1343 #define VMX_EXIT_ERR_MSR_LOAD 34 1342 /** 36 Guest software executedMWAIT. */1344 /** MWAIT. */ 1343 1345 #define VMX_EXIT_MWAIT 36 1344 /** 37VM-exit due to monitor trap flag. */1346 /** VM-exit due to monitor trap flag. */ 1345 1347 #define VMX_EXIT_MTF 37 1346 /** 39 Guest software attempted to executeMONITOR. */1348 /** MONITOR. */ 1347 1349 #define VMX_EXIT_MONITOR 39 1348 /** 40 Guest software attempted to executePAUSE. */1350 /** PAUSE. */ 1349 1351 #define VMX_EXIT_PAUSE 40 1350 /** 41VM-entry failure due to machine-check. */1352 /** VM-entry failure due to machine-check. */ 1351 1353 #define VMX_EXIT_ERR_MACHINE_CHECK 41 1352 /** 43TPR below threshold. Guest software executed MOV to CR8. */1354 /** TPR below threshold. Guest software executed MOV to CR8. */ 1353 1355 #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. */ 1356 1357 #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. */ 1359 1359 #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. */ 1362 1361 #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. */ 1365 1363 #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. */ 1368 1365 #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. */ 1371 1367 #define VMX_EXIT_EPT_MISCONFIG 49 1372 /** 50 INVEPT. Guest software attempted to executeINVEPT. */1368 /** INVEPT. */ 1373 1369 #define VMX_EXIT_INVEPT 50 1374 /** 51 RDTSCP. Guest software attempted to executeRDTSCP. */1370 /** RDTSCP. */ 1375 1371 #define VMX_EXIT_RDTSCP 51 1376 /** 52 VMX-preemption timer expired. The preemption timer counted down to zero. */1372 /** VMX-preemption timer expired. */ 1377 1373 #define VMX_EXIT_PREEMPT_TIMER 52 1378 /** 53 INVVPID. Guest software attempted to executeINVVPID. */1374 /** INVVPID. */ 1379 1375 #define VMX_EXIT_INVVPID 53 1380 /** 54 WBINVD. Guest software attempted to executeWBINVD. */1376 /** WBINVD. */ 1381 1377 #define VMX_EXIT_WBINVD 54 1382 /** 55 XSETBV. Guest software attempted to executeXSETBV. */1378 /** XSETBV. */ 1383 1379 #define VMX_EXIT_XSETBV 55 1384 /** 56 APIC write.Guest completed write to virtual-APIC. */1380 /** Guest completed write to virtual-APIC. */ 1385 1381 #define VMX_EXIT_APIC_WRITE 56 1386 /** 57 RDRAND. Guest software attempted to executeRDRAND. */1382 /** RDRAND. */ 1387 1383 #define VMX_EXIT_RDRAND 57 1388 /** 58 INVPCID. Guest software attempted to executeINVPCID. */1384 /** INVPCID. */ 1389 1385 #define VMX_EXIT_INVPCID 58 1390 /** 59 VMFUNC. Guest software attempted to executeVMFUNC. */1386 /** VMFUNC. */ 1391 1387 #define VMX_EXIT_VMFUNC 59 1392 /** 60 ENCLS. Guest software attempted to executeENCLS. */1388 /** ENCLS. */ 1393 1389 #define VMX_EXIT_ENCLS 60 1394 /** 61 - RDSEED - Guest software attempted to executed RDSEED and exiting was 1395 * enabled. */ 1390 /** RDSEED. */ 1396 1391 #define VMX_EXIT_RDSEED 61 1397 /** 62 -Page-modification log full. */1392 /** Page-modification log full. */ 1398 1393 #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. */ 1401 1395 #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. */ 1404 1397 #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). */ 1407 1399 #define VMX_EXIT_SPP_EVENT 66 1408 /* 67 - UMWAIT. Guest software attempted to execute UMWAIT and exiting was enabled. */1400 /* UMWAIT. */ 1409 1401 #define VMX_EXIT_UMWAIT 67 1410 /** 68 - TPAUSE. Guest software attempted to execute TPAUSE and exiting was 1411 * enabled. */ 1402 /** TPAUSE. */ 1412 1403 #define VMX_EXIT_TPAUSE 68 1413 /** The maximum exit value (inclusive). */1404 /** The maximum VM-exit value (inclusive). */ 1414 1405 #define VMX_EXIT_MAX (VMX_EXIT_TPAUSE) 1415 1406 /** @} */ … … 2191 2182 #define VMX_BF_PIN_CTLS_EXT_INT_EXIT_SHIFT 0 2192 2183 #define VMX_BF_PIN_CTLS_EXT_INT_EXIT_MASK UINT32_C(0x00000001) 2193 #define VMX_BF_PIN_CTLS_ UNDEF_1_2_SHIFT12194 #define VMX_BF_PIN_CTLS_ UNDEF_1_2_MASKUINT32_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) 2195 2186 #define VMX_BF_PIN_CTLS_NMI_EXIT_SHIFT 3 2196 2187 #define VMX_BF_PIN_CTLS_NMI_EXIT_MASK UINT32_C(0x00000008) 2197 #define VMX_BF_PIN_CTLS_ UNDEF_4_SHIFT42198 #define VMX_BF_PIN_CTLS_ UNDEF_4_MASKUINT32_C(0x00000010)2188 #define VMX_BF_PIN_CTLS_RSVD_4_SHIFT 4 2189 #define VMX_BF_PIN_CTLS_RSVD_4_MASK UINT32_C(0x00000010) 2199 2190 #define VMX_BF_PIN_CTLS_VIRT_NMI_SHIFT 5 2200 2191 #define VMX_BF_PIN_CTLS_VIRT_NMI_MASK UINT32_C(0x00000020) … … 2203 2194 #define VMX_BF_PIN_CTLS_POSTED_INT_SHIFT 7 2204 2195 #define VMX_BF_PIN_CTLS_POSTED_INT_MASK UINT32_C(0x00000080) 2205 #define VMX_BF_PIN_CTLS_ UNDEF_8_31_SHIFT82206 #define VMX_BF_PIN_CTLS_ UNDEF_8_31_MASKUINT32_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) 2207 2198 RT_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)); 2209 2200 /** @} */ 2210 2201 … … 2262 2253 /** Bit fields for MSR_IA32_VMX_PROCBASED_CTLS and Processor-based VM-execution 2263 2254 * controls field in the VMCS. */ 2264 #define VMX_BF_PROC_CTLS_ UNDEF_0_1_SHIFT02265 #define VMX_BF_PROC_CTLS_ UNDEF_0_1_MASKUINT32_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) 2266 2257 #define VMX_BF_PROC_CTLS_INT_WINDOW_EXIT_SHIFT 2 2267 2258 #define VMX_BF_PROC_CTLS_INT_WINDOW_EXIT_MASK UINT32_C(0x00000004) 2268 2259 #define VMX_BF_PROC_CTLS_USE_TSC_OFFSETTING_SHIFT 3 2269 2260 #define VMX_BF_PROC_CTLS_USE_TSC_OFFSETTING_MASK UINT32_C(0x00000008) 2270 #define VMX_BF_PROC_CTLS_ UNDEF_4_6_SHIFT42271 #define VMX_BF_PROC_CTLS_ UNDEF_4_6_MASKUINT32_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) 2272 2263 #define VMX_BF_PROC_CTLS_HLT_EXIT_SHIFT 7 2273 2264 #define VMX_BF_PROC_CTLS_HLT_EXIT_MASK UINT32_C(0x00000080) 2274 #define VMX_BF_PROC_CTLS_ UNDEF_8_SHIFT82275 #define VMX_BF_PROC_CTLS_ UNDEF_8_MASKUINT32_C(0x00000100)2265 #define VMX_BF_PROC_CTLS_RSVD_8_SHIFT 8 2266 #define VMX_BF_PROC_CTLS_RSVD_8_MASK UINT32_C(0x00000100) 2276 2267 #define VMX_BF_PROC_CTLS_INVLPG_EXIT_SHIFT 9 2277 2268 #define VMX_BF_PROC_CTLS_INVLPG_EXIT_MASK UINT32_C(0x00000200) … … 2282 2273 #define VMX_BF_PROC_CTLS_RDTSC_EXIT_SHIFT 12 2283 2274 #define VMX_BF_PROC_CTLS_RDTSC_EXIT_MASK UINT32_C(0x00001000) 2284 #define VMX_BF_PROC_CTLS_ UNDEF_13_14_SHIFT132285 #define VMX_BF_PROC_CTLS_ UNDEF_13_14_MASKUINT32_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) 2286 2277 #define VMX_BF_PROC_CTLS_CR3_LOAD_EXIT_SHIFT 15 2287 2278 #define VMX_BF_PROC_CTLS_CR3_LOAD_EXIT_MASK UINT32_C(0x00008000) 2288 2279 #define VMX_BF_PROC_CTLS_CR3_STORE_EXIT_SHIFT 16 2289 2280 #define VMX_BF_PROC_CTLS_CR3_STORE_EXIT_MASK UINT32_C(0x00010000) 2290 #define VMX_BF_PROC_CTLS_ UNDEF_17_18_SHIFT172291 #define VMX_BF_PROC_CTLS_ UNDEF_17_18_MASKUINT32_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) 2292 2283 #define VMX_BF_PROC_CTLS_CR8_LOAD_EXIT_SHIFT 19 2293 2284 #define VMX_BF_PROC_CTLS_CR8_LOAD_EXIT_MASK UINT32_C(0x00080000) … … 2304 2295 #define VMX_BF_PROC_CTLS_USE_IO_BITMAPS_SHIFT 25 2305 2296 #define VMX_BF_PROC_CTLS_USE_IO_BITMAPS_MASK UINT32_C(0x02000000) 2306 #define VMX_BF_PROC_CTLS_ UNDEF_26_SHIFT262307 #define VMX_BF_PROC_CTLS_ UNDEF_26_MASKUINT32_C(0x4000000)2297 #define VMX_BF_PROC_CTLS_RSVD_26_SHIFT 26 2298 #define VMX_BF_PROC_CTLS_RSVD_26_MASK UINT32_C(0x4000000) 2308 2299 #define VMX_BF_PROC_CTLS_MONITOR_TRAP_FLAG_SHIFT 27 2309 2300 #define VMX_BF_PROC_CTLS_MONITOR_TRAP_FLAG_MASK UINT32_C(0x08000000) … … 2317 2308 #define VMX_BF_PROC_CTLS_USE_SECONDARY_CTLS_MASK UINT32_C(0x80000000) 2318 2309 RT_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, 2321 2312 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, 2323 2314 USE_SECONDARY_CTLS)); 2324 2315 /** @} */ … … 2429 2420 #define VMX_BF_PROC_CTLS2_XSAVES_XRSTORS_SHIFT 20 2430 2421 #define VMX_BF_PROC_CTLS2_XSAVES_XRSTORS_MASK UINT32_C(0x00100000) 2431 #define VMX_BF_PROC_CTLS2_ UNDEF_21_SHIFT212432 #define VMX_BF_PROC_CTLS2_ UNDEF_21_MASKUINT32_C(0x00200000)2422 #define VMX_BF_PROC_CTLS2_RSVD_21_SHIFT 21 2423 #define VMX_BF_PROC_CTLS2_RSVD_21_MASK UINT32_C(0x00200000) 2433 2424 #define VMX_BF_PROC_CTLS2_MODE_BASED_EPT_PERM_SHIFT 22 2434 2425 #define VMX_BF_PROC_CTLS2_MODE_BASED_EPT_PERM_MASK UINT32_C(0x00400000) … … 2441 2432 #define VMX_BF_PROC_CTLS2_USER_WAIT_PAUSE_SHIFT 26 2442 2433 #define VMX_BF_PROC_CTLS2_USER_WAIT_PAUSE_MASK UINT32_C(0x04000000) 2443 #define VMX_BF_PROC_CTLS2_ UNDEF_27_SHIFT272444 #define VMX_BF_PROC_CTLS2_ UNDEF_27_MASKUINT32_C(0x08000000)2434 #define VMX_BF_PROC_CTLS2_RSVD_27_SHIFT 27 2435 #define VMX_BF_PROC_CTLS2_RSVD_27_MASK UINT32_C(0x08000000) 2445 2436 #define VMX_BF_PROC_CTLS2_ENCLV_EXIT_SHIFT 28 2446 2437 #define VMX_BF_PROC_CTLS2_ENCLV_EXIT_MASK UINT32_C(0x10000000) 2447 #define VMX_BF_PROC_CTLS2_ UNDEF_29_31_SHIFT292448 #define VMX_BF_PROC_CTLS2_ UNDEF_29_31_MASKUINT32_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) 2449 2440 2450 2441 RT_BF_ASSERT_COMPILE_CHECKS(VMX_BF_PROC_CTLS2_, UINT32_C(0), UINT32_MAX, 2451 2442 (VIRT_APIC_ACCESS, EPT, DESC_TABLE_EXIT, RDTSCP, VIRT_X2APIC_MODE, VPID, WBINVD_EXIT, 2452 2443 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 2462 RT_BF_ASSERT_COMPILE_CHECKS(VMX_BF_PROC_CTLS3_, UINT64_C(0), UINT64_MAX, 2463 (LOADIWKEY_EXIT, RSVD_1_63)); 2456 2464 /** @} */ 2457 2465 … … 2488 2496 /** Bit fields for MSR_IA32_VMX_ENTRY_CTLS and VM-entry controls field in the 2489 2497 * VMCS. */ 2490 #define VMX_BF_ENTRY_CTLS_ UNDEF_0_1_SHIFT02491 #define VMX_BF_ENTRY_CTLS_ UNDEF_0_1_MASKUINT32_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) 2492 2500 #define VMX_BF_ENTRY_CTLS_LOAD_DEBUG_SHIFT 2 2493 2501 #define VMX_BF_ENTRY_CTLS_LOAD_DEBUG_MASK UINT32_C(0x00000004) 2494 #define VMX_BF_ENTRY_CTLS_ UNDEF_3_8_SHIFT32495 #define VMX_BF_ENTRY_CTLS_ UNDEF_3_8_MASKUINT32_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) 2496 2504 #define VMX_BF_ENTRY_CTLS_IA32E_MODE_GUEST_SHIFT 9 2497 2505 #define VMX_BF_ENTRY_CTLS_IA32E_MODE_GUEST_MASK UINT32_C(0x00000200) … … 2500 2508 #define VMX_BF_ENTRY_CTLS_DEACTIVATE_DUAL_MON_SHIFT 11 2501 2509 #define VMX_BF_ENTRY_CTLS_DEACTIVATE_DUAL_MON_MASK UINT32_C(0x00000800) 2502 #define VMX_BF_ENTRY_CTLS_ UNDEF_12_SHIFT122503 #define VMX_BF_ENTRY_CTLS_ UNDEF_12_MASKUINT32_C(0x00001000)2510 #define VMX_BF_ENTRY_CTLS_RSVD_12_SHIFT 12 2511 #define VMX_BF_ENTRY_CTLS_RSVD_12_MASK UINT32_C(0x00001000) 2504 2512 #define VMX_BF_ENTRY_CTLS_LOAD_PERF_MSR_SHIFT 13 2505 2513 #define VMX_BF_ENTRY_CTLS_LOAD_PERF_MSR_MASK UINT32_C(0x00002000) … … 2514 2522 #define VMX_BF_ENTRY_CTLS_LOAD_RTIT_CTL_MSR_SHIFT 18 2515 2523 #define VMX_BF_ENTRY_CTLS_LOAD_RTIT_CTL_MSR_MASK UINT32_C(0x00040000) 2516 #define VMX_BF_ENTRY_CTLS_ UNDEF_19_31_SHIFT192517 #define VMX_BF_ENTRY_CTLS_ UNDEF_19_31_MASKUINT32_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) 2518 2526 RT_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, 2520 2528 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)); 2522 2530 /** @} */ 2523 2531 … … 2558 2566 /** Bit fields for MSR_IA32_VMX_EXIT_CTLS and VM-exit controls field in the 2559 2567 * VMCS. */ 2560 #define VMX_BF_EXIT_CTLS_ UNDEF_0_1_SHIFT02561 #define VMX_BF_EXIT_CTLS_ UNDEF_0_1_MASKUINT32_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) 2562 2570 #define VMX_BF_EXIT_CTLS_SAVE_DEBUG_SHIFT 2 2563 2571 #define VMX_BF_EXIT_CTLS_SAVE_DEBUG_MASK UINT32_C(0x00000004) 2564 #define VMX_BF_EXIT_CTLS_ UNDEF_3_8_SHIFT32565 #define VMX_BF_EXIT_CTLS_ UNDEF_3_8_MASKUINT32_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) 2566 2574 #define VMX_BF_EXIT_CTLS_HOST_ADDR_SPACE_SIZE_SHIFT 9 2567 2575 #define VMX_BF_EXIT_CTLS_HOST_ADDR_SPACE_SIZE_MASK UINT32_C(0x00000200) 2568 #define VMX_BF_EXIT_CTLS_ UNDEF_10_11_SHIFT102569 #define VMX_BF_EXIT_CTLS_ UNDEF_10_11_MASKUINT32_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) 2570 2578 #define VMX_BF_EXIT_CTLS_LOAD_PERF_MSR_SHIFT 12 2571 2579 #define VMX_BF_EXIT_CTLS_LOAD_PERF_MSR_MASK UINT32_C(0x00001000) 2572 #define VMX_BF_EXIT_CTLS_ UNDEF_13_14_SHIFT132573 #define VMX_BF_EXIT_CTLS_ UNDEF_13_14_MASKUINT32_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) 2574 2582 #define VMX_BF_EXIT_CTLS_ACK_EXT_INT_SHIFT 15 2575 2583 #define VMX_BF_EXIT_CTLS_ACK_EXT_INT_MASK UINT32_C(0x00008000) 2576 #define VMX_BF_EXIT_CTLS_ UNDEF_16_17_SHIFT162577 #define VMX_BF_EXIT_CTLS_ UNDEF_16_17_MASKUINT32_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) 2578 2586 #define VMX_BF_EXIT_CTLS_SAVE_PAT_MSR_SHIFT 18 2579 2587 #define VMX_BF_EXIT_CTLS_SAVE_PAT_MSR_MASK UINT32_C(0x00040000) … … 2592 2600 #define VMX_BF_EXIT_CTLS_CLEAR_RTIT_CTL_MSR_SHIFT 25 2593 2601 #define VMX_BF_EXIT_CTLS_CLEAR_RTIT_CTL_MSR_MASK UINT32_C(0x02000000) 2594 #define VMX_BF_EXIT_CTLS_ UNDEF_26_31_SHIFT262595 #define VMX_BF_EXIT_CTLS_ UNDEF_26_31_MASKUINT32_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) 2596 2604 RT_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)); 2600 2608 /** @} */ 2601 2609
Note:
See TracChangeset
for help on using the changeset viewer.

