VirtualBox

Changeset 47322 in vbox


Ignore:
Timestamp:
Jul 22, 2013 5:57:43 PM (12 years ago)
Author:
vboxsync
Message:

hm_vmx: spaces and cosmetics.

File:
1 edited

Legend:

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

    r47320 r47322  
    578578 */
    579579/** And-mask for setting reserved bits to zero */
    580 #define VMX_EFLAGS_RESERVED_0           (~0xffc08028)
     580#define VMX_EFLAGS_RESERVED_0                                   (~0xffc08028)
    581581/** Or-mask for setting reserved bits to 1 */
    582 #define VMX_EFLAGS_RESERVED_1           0x00000002
     582#define VMX_EFLAGS_RESERVED_1                                   0x00000002
    583583/** @} */
    584584
     
    587587 */
    588588/** -1 Invalid exit code */
    589 #define VMX_EXIT_INVALID            -1
     589#define VMX_EXIT_INVALID                                        -1
    590590/** 0 Exception or non-maskable interrupt (NMI). */
    591 #define VMX_EXIT_XCPT_OR_NMI        0
     591#define VMX_EXIT_XCPT_OR_NMI                                    0
    592592/** 1 External interrupt. */
    593 #define VMX_EXIT_EXT_INT            1
     593#define VMX_EXIT_EXT_INT                                        1
    594594/** 2 Triple fault. */
    595 #define VMX_EXIT_TRIPLE_FAULT       2
     595#define VMX_EXIT_TRIPLE_FAULT                                   2
    596596/** 3 INIT signal. */
    597 #define VMX_EXIT_INIT_SIGNAL        3
     597#define VMX_EXIT_INIT_SIGNAL                                    3
    598598/** 4 Start-up IPI (SIPI). */
    599 #define VMX_EXIT_SIPI               4
     599#define VMX_EXIT_SIPI                                           4
    600600/** 5 I/O system-management interrupt (SMI). */
    601 #define VMX_EXIT_IO_SMI             5
     601#define VMX_EXIT_IO_SMI                                         5
    602602/** 6 Other SMI. */
    603 #define VMX_EXIT_SMI                6
     603#define VMX_EXIT_SMI                                            6
    604604/** 7 Interrupt window exiting. */
    605 #define VMX_EXIT_INT_WINDOW         7
     605#define VMX_EXIT_INT_WINDOW                                     7
    606606/** 8 NMI window exiting. */
    607 #define VMX_EXIT_NMI_WINDOW         8
     607#define VMX_EXIT_NMI_WINDOW                                     8
    608608/** 9 Task switch. */
    609 #define VMX_EXIT_TASK_SWITCH        9
     609#define VMX_EXIT_TASK_SWITCH                                    9
    610610/** 10 Guest software attempted to execute CPUID. */
    611 #define VMX_EXIT_CPUID              10
     611#define VMX_EXIT_CPUID                                          10
    612612/** 10 Guest software attempted to execute GETSEC. */
    613 #define VMX_EXIT_GETSEC             11
     613#define VMX_EXIT_GETSEC                                         11
    614614/** 12 Guest software attempted to execute HLT. */
    615 #define VMX_EXIT_HLT                12
     615#define VMX_EXIT_HLT                                            12
    616616/** 13 Guest software attempted to execute INVD. */
    617 #define VMX_EXIT_INVD               13
     617#define VMX_EXIT_INVD                                           13
    618618/** 14 Guest software attempted to execute INVLPG. */
    619 #define VMX_EXIT_INVLPG             14
     619#define VMX_EXIT_INVLPG                                         14
    620620/** 15 Guest software attempted to execute RDPMC. */
    621 #define VMX_EXIT_RDPMC              15
     621#define VMX_EXIT_RDPMC                                          15
    622622/** 16 Guest software attempted to execute RDTSC. */
    623 #define VMX_EXIT_RDTSC              16
     623#define VMX_EXIT_RDTSC                                          16
    624624/** 17 Guest software attempted to execute RSM in SMM. */
    625 #define VMX_EXIT_RSM                17
     625#define VMX_EXIT_RSM                                            17
    626626/** 18 Guest software executed VMCALL. */
    627 #define VMX_EXIT_VMCALL             18
     627#define VMX_EXIT_VMCALL                                         18
    628628/** 19 Guest software executed VMCLEAR. */
    629 #define VMX_EXIT_VMCLEAR            19
     629#define VMX_EXIT_VMCLEAR                                        19
    630630/** 20 Guest software executed VMLAUNCH. */
    631 #define VMX_EXIT_VMLAUNCH           20
     631#define VMX_EXIT_VMLAUNCH                                       20
    632632/** 21 Guest software executed VMPTRLD. */
    633 #define VMX_EXIT_VMPTRLD            21
     633#define VMX_EXIT_VMPTRLD                                        21
    634634/** 22 Guest software executed VMPTRST. */
    635 #define VMX_EXIT_VMPTRST            22
     635#define VMX_EXIT_VMPTRST                                        22
    636636/** 23 Guest software executed VMREAD. */
    637 #define VMX_EXIT_VMREAD             23
     637#define VMX_EXIT_VMREAD                                         23
    638638/** 24 Guest software executed VMRESUME. */
    639 #define VMX_EXIT_VMRESUME           24
     639#define VMX_EXIT_VMRESUME                                       24
    640640/** 25 Guest software executed VMWRITE. */
    641 #define VMX_EXIT_VMWRITE            25
     641#define VMX_EXIT_VMWRITE                                        25
    642642/** 26 Guest software executed VMXOFF. */
    643 #define VMX_EXIT_VMXOFF             26
     643#define VMX_EXIT_VMXOFF                                         26
    644644/** 27 Guest software executed VMXON. */
    645 #define VMX_EXIT_VMXON              27
     645#define VMX_EXIT_VMXON                                          27
    646646/** 28 Control-register accesses. */
    647 #define VMX_EXIT_MOV_CRX            28
     647#define VMX_EXIT_MOV_CRX                                        28
    648648/** 29 Debug-register accesses. */
    649 #define VMX_EXIT_MOV_DRX            29
     649#define VMX_EXIT_MOV_DRX                                        29
    650650/** 30 I/O instruction. */
    651 #define VMX_EXIT_IO_INSTR           30
     651#define VMX_EXIT_IO_INSTR                                       30
    652652/** 31 RDMSR. Guest software attempted to execute RDMSR. */
    653 #define VMX_EXIT_RDMSR              31
     653#define VMX_EXIT_RDMSR                                          31
    654654/** 32 WRMSR. Guest software attempted to execute WRMSR. */
    655 #define VMX_EXIT_WRMSR              32
     655#define VMX_EXIT_WRMSR                                          32
    656656/** 33 VM-entry failure due to invalid guest state. */
    657 #define VMX_EXIT_ERR_INVALID_GUEST_STATE    33
     657#define VMX_EXIT_ERR_INVALID_GUEST_STATE                        33
    658658/** 34 VM-entry failure due to MSR loading. */
    659 #define VMX_EXIT_ERR_MSR_LOAD       34
     659#define VMX_EXIT_ERR_MSR_LOAD                                   34
    660660/** 36 Guest software executed MWAIT. */
    661 #define VMX_EXIT_MWAIT              36
     661#define VMX_EXIT_MWAIT                                          36
    662662/** 37 VM exit due to monitor trap flag. */
    663 #define VMX_EXIT_MTF                37
     663#define VMX_EXIT_MTF                                            37
    664664/** 39 Guest software attempted to execute MONITOR. */
    665 #define VMX_EXIT_MONITOR            39
     665#define VMX_EXIT_MONITOR                                        39
    666666/** 40 Guest software attempted to execute PAUSE. */
    667 #define VMX_EXIT_PAUSE              40
     667#define VMX_EXIT_PAUSE                                          40
    668668/** 41 VM-entry failure due to machine-check. */
    669 #define VMX_EXIT_ERR_MACHINE_CHECK  41
     669#define VMX_EXIT_ERR_MACHINE_CHECK                              41
    670670/** 43 TPR below threshold. Guest software executed MOV to CR8. */
    671 #define VMX_EXIT_TPR_BELOW_THRESHOLD        43
     671#define VMX_EXIT_TPR_BELOW_THRESHOLD                            43
    672672/** 44 APIC access. Guest software attempted to access memory at a physical address on the APIC-access page. */
    673 #define VMX_EXIT_APIC_ACCESS        44
     673#define VMX_EXIT_APIC_ACCESS                                    44
    674674/** 46 Access to GDTR or IDTR. Guest software attempted to execute LGDT, LIDT, SGDT, or SIDT. */
    675 #define VMX_EXIT_XDTR_ACCESS        46
     675#define VMX_EXIT_XDTR_ACCESS                                    46
    676676/** 47 Access to LDTR or TR. Guest software attempted to execute LLDT, LTR, SLDT, or STR. */
    677 #define VMX_EXIT_TR_ACCESS          47
     677#define VMX_EXIT_TR_ACCESS                                      47
    678678/** 48 EPT violation. An attempt to access memory with a guest-physical address was disallowed by the configuration of the EPT paging structures. */
    679 #define VMX_EXIT_EPT_VIOLATION      48
     679#define VMX_EXIT_EPT_VIOLATION                                  48
    680680/** 49 EPT misconfiguration. An attempt to access memory with a guest-physical address encountered a misconfigured EPT paging-structure entry. */
    681 #define VMX_EXIT_EPT_MISCONFIG      49
     681#define VMX_EXIT_EPT_MISCONFIG                                  49
    682682/** 50 INVEPT. Guest software attempted to execute INVEPT. */
    683 #define VMX_EXIT_INVEPT             50
     683#define VMX_EXIT_INVEPT                                         50
    684684/** 51 RDTSCP. Guest software attempted to execute RDTSCP. */
    685 #define VMX_EXIT_RDTSCP             51
     685#define VMX_EXIT_RDTSCP                                         51
    686686/** 52 VMX-preemption timer expired. The preemption timer counted down to zero. */
    687 #define VMX_EXIT_PREEMPT_TIMER      52
     687#define VMX_EXIT_PREEMPT_TIMER                                  52
    688688/** 53 INVVPID. Guest software attempted to execute INVVPID. */
    689 #define VMX_EXIT_INVVPID            53
     689#define VMX_EXIT_INVVPID                                        53
    690690/** 54 WBINVD. Guest software attempted to execute WBINVD. */
    691 #define VMX_EXIT_WBINVD             54
     691#define VMX_EXIT_WBINVD                                         54
    692692/** 55 XSETBV. Guest software attempted to execute XSETBV. */
    693 #define VMX_EXIT_XSETBV             55
     693#define VMX_EXIT_XSETBV                                         55
    694694/** 57 RDRAND. Guest software attempted to execute RDRAND. */
    695 #define VMX_EXIT_RDRAND             57
     695#define VMX_EXIT_RDRAND                                         57
    696696/** 58 INVPCID. Guest software attempted to execute INVPCID. */
    697 #define VMX_EXIT_INVPCID            58
     697#define VMX_EXIT_INVPCID                                        58
    698698/** 59 VMFUNC. Guest software attempted to execute VMFUNC. */
    699 #define VMX_EXIT_VMFUNC             59
     699#define VMX_EXIT_VMFUNC                                         59
    700700/** The maximum exit value (inclusive). */
    701 #define VMX_EXIT_MAX                (VMX_EXIT_VMFUNC)
     701#define VMX_EXIT_MAX                                            (VMX_EXIT_VMFUNC)
    702702/** @} */
    703703
     
    706706 * @{
    707707 */
    708 /** 1 VMCALL executed in VMX root operation. */
    709 #define VMX_ERROR_VMCALL                            1
    710 /** 2 VMCLEAR with invalid physical address. */
    711 #define VMX_ERROR_VMCLEAR_INVALID_PHYS_ADDR         2
    712 /** 3 VMCLEAR with VMXON pointer. */
    713 #define VMX_ERROR_VMCLEAR_INVALID_VMXON_PTR         3
    714 /** 4 VMLAUNCH with non-clear VMCS. */
    715 #define VMX_ERROR_VMLAUCH_NON_CLEAR_VMCS            4
    716 /** 5 VMRESUME with non-launched VMCS. */
    717 #define VMX_ERROR_VMRESUME_NON_LAUNCHED_VMCS        5
    718 /** 6 VMRESUME with a corrupted VMCS (indicates corruption of the current VMCS). */
    719 #define VMX_ERROR_VMRESUME_CORRUPTED_VMCS           6
    720 /** 7 VM entry with invalid control field(s). */
    721 #define VMX_ERROR_VMENTRY_INVALID_CONTROL_FIELDS    7
    722 /** 8 VM entry with invalid host-state field(s). */
    723 #define VMX_ERROR_VMENTRY_INVALID_HOST_STATE        8
    724 /** 9 VMPTRLD with invalid physical address. */
    725 #define VMX_ERROR_VMPTRLD_INVALID_PHYS_ADDR         9
    726 /** 10 VMPTRLD with VMXON pointer. */
    727 #define VMX_ERROR_VMPTRLD_VMXON_PTR                 10
    728 /** 11 VMPTRLD with incorrect VMCS revision identifier. */
    729 #define VMX_ERROR_VMPTRLD_WRONG_VMCS_REVISION       11
    730 /** 12 VMREAD/VMWRITE from/to unsupported VMCS component. */
    731 #define VMX_ERROR_VMREAD_INVALID_COMPONENT          12
    732 #define VMX_ERROR_VMWRITE_INVALID_COMPONENT         VMX_ERROR_VMREAD_INVALID_COMPONENT
    733 /** 13 VMWRITE to read-only VMCS component. */
    734 #define VMX_ERROR_VMWRITE_READONLY_COMPONENT        13
    735 /** 15 VMXON executed in VMX root operation. */
    736 #define VMX_ERROR_VMXON_IN_VMX_ROOT_OP              15
    737 /** 16 VM entry with invalid executive-VMCS pointer. */
    738 #define VMX_ERROR_VMENTRY_INVALID_VMCS_EXEC_PTR     16
    739 /** 17 VM entry with non-launched executive VMCS. */
    740 #define VMX_ERROR_VMENTRY_NON_LAUNCHED_EXEC_VMCS    17
    741 /** 18 VM entry with executive-VMCS pointer not VMXON pointer. */
    742 #define VMX_ERROR_VMENTRY_EXEC_VMCS_PTR             18
    743 /** 19 VMCALL with non-clear VMCS. */
    744 #define VMX_ERROR_VMCALL_NON_CLEAR_VMCS             19
    745 /** 20 VMCALL with invalid VM-exit control fields. */
    746 #define VMX_ERROR_VMCALL_INVALID_VMEXIT_FIELDS      20
    747 /** 22 VMCALL with incorrect MSEG revision identifier. */
    748 #define VMX_ERROR_VMCALL_INVALID_MSEG_REVISION      22
    749 /** 23 VMXOFF under dual-monitor treatment of SMIs and SMM. */
    750 #define VMX_ERROR_VMXOFF_DUAL_MONITOR               23
    751 /** 24 VMCALL with invalid SMM-monitor features. */
    752 #define VMX_ERROR_VMCALL_INVALID_SMM_MONITOR        24
    753 /** 25 VM entry with invalid VM-execution control fields in executive VMCS. */
    754 #define VMX_ERROR_VMENTRY_INVALID_VM_EXEC_CTRL      25
    755 /** 26 VM entry with events blocked by MOV SS. */
    756 #define VMX_ERROR_VMENTRY_MOV_SS                    26
    757 /** 26 Invalid operand to INVEPT/INVVPID. */
    758 #define VMX_ERROR_INVEPTVPID_INVALID_OPERAND        28
     708/** VMCALL executed in VMX root operation. */
     709#define VMX_ERROR_VMCALL                                        1
     710/** VMCLEAR with invalid physical address. */
     711#define VMX_ERROR_VMCLEAR_INVALID_PHYS_ADDR                     2
     712/** VMCLEAR with VMXON pointer. */
     713#define VMX_ERROR_VMCLEAR_INVALID_VMXON_PTR                     3
     714/** VMLAUNCH with non-clear VMCS. */
     715#define VMX_ERROR_VMLAUCH_NON_CLEAR_VMCS                        4
     716/** VMRESUME with non-launched VMCS. */
     717#define VMX_ERROR_VMRESUME_NON_LAUNCHED_VMCS                    5
     718/** VMRESUME with a corrupted VMCS (indicates corruption of the current VMCS). */
     719#define VMX_ERROR_VMRESUME_CORRUPTED_VMCS                       6
     720/** VM-entry with invalid control field(s). */
     721#define VMX_ERROR_VMENTRY_INVALID_CONTROL_FIELDS                7
     722/** VM-entry with invalid host-state field(s). */
     723#define VMX_ERROR_VMENTRY_INVALID_HOST_STATE                    8
     724/** VMPTRLD with invalid physical address. */
     725#define VMX_ERROR_VMPTRLD_INVALID_PHYS_ADDR                     9
     726/** VMPTRLD with VMXON pointer. */
     727#define VMX_ERROR_VMPTRLD_VMXON_PTR                             10
     728/** VMPTRLD with incorrect VMCS revision identifier. */
     729#define VMX_ERROR_VMPTRLD_WRONG_VMCS_REVISION                   11
     730/** VMREAD/VMWRITE from/to unsupported VMCS component. */
     731#define VMX_ERROR_VMREAD_INVALID_COMPONENT                      12
     732#define VMX_ERROR_VMWRITE_INVALID_COMPONENT                     VMX_ERROR_VMREAD_INVALID_COMPONENT
     733/** VMWRITE to read-only VMCS component. */
     734#define VMX_ERROR_VMWRITE_READONLY_COMPONENT                    13
     735/** VMXON executed in VMX root operation. */
     736#define VMX_ERROR_VMXON_IN_VMX_ROOT_OP                          15
     737/** VM entry with invalid executive-VMCS pointer. */
     738#define VMX_ERROR_VMENTRY_INVALID_VMCS_EXEC_PTR                 16
     739/** VM entry with non-launched executive VMCS. */
     740#define VMX_ERROR_VMENTRY_NON_LAUNCHED_EXEC_VMCS                17
     741/** VM entry with executive-VMCS pointer not VMXON pointer. */
     742#define VMX_ERROR_VMENTRY_EXEC_VMCS_PTR                         18
     743/** VMCALL with non-clear VMCS. */
     744#define VMX_ERROR_VMCALL_NON_CLEAR_VMCS                         19
     745/** VMCALL with invalid VM-exit control fields. */
     746#define VMX_ERROR_VMCALL_INVALID_VMEXIT_FIELDS                  20
     747/** VMCALL with incorrect MSEG revision identifier. */
     748#define VMX_ERROR_VMCALL_INVALID_MSEG_REVISION                  22
     749/** VMXOFF under dual-monitor treatment of SMIs and SMM. */
     750#define VMX_ERROR_VMXOFF_DUAL_MONITOR                           23
     751/** VMCALL with invalid SMM-monitor features. */
     752#define VMX_ERROR_VMCALL_INVALID_SMM_MONITOR                    24
     753/** VM entry with invalid VM-execution control fields in executive VMCS. */
     754#define VMX_ERROR_VMENTRY_INVALID_VM_EXEC_CTRL                  25
     755/** VM entry with events blocked by MOV SS. */
     756#define VMX_ERROR_VMENTRY_MOV_SS                                26
     757/** Invalid operand to INVEPT/INVVPID. */
     758#define VMX_ERROR_INVEPTVPID_INVALID_OPERAND                    28
    759759
    760760/** @} */
     
    817817 * @{
    818818 */
    819 #define MSR_IA32_VMX_EPT_VPID_CAP_RWX_X_ONLY                                RT_BIT_64(0)
    820 #define MSR_IA32_VMX_EPT_VPID_CAP_RWX_W_ONLY                                RT_BIT_64(1)
    821 #define MSR_IA32_VMX_EPT_VPID_CAP_RWX_WX_ONLY                               RT_BIT_64(2)
    822 #define MSR_IA32_VMX_EPT_VPID_CAP_GAW_21_BITS                               RT_BIT_64(3)
    823 #define MSR_IA32_VMX_EPT_VPID_CAP_GAW_30_BITS                               RT_BIT_64(4)
    824 #define MSR_IA32_VMX_EPT_VPID_CAP_GAW_39_BITS                               RT_BIT_64(5)
    825 #define MSR_IA32_VMX_EPT_VPID_CAP_GAW_48_BITS                               RT_BIT_64(6)
    826 #define MSR_IA32_VMX_EPT_VPID_CAP_GAW_57_BITS                               RT_BIT_64(7)
    827 #define MSR_IA32_VMX_EPT_VPID_CAP_EMT_UC                                    RT_BIT_64(8)
    828 #define MSR_IA32_VMX_EPT_VPID_CAP_EMT_WC                                    RT_BIT_64(9)
    829 #define MSR_IA32_VMX_EPT_VPID_CAP_EMT_WT                                    RT_BIT_64(12)
    830 #define MSR_IA32_VMX_EPT_VPID_CAP_EMT_WP                                    RT_BIT_64(13)
    831 #define MSR_IA32_VMX_EPT_VPID_CAP_EMT_WB                                    RT_BIT_64(14)
    832 #define MSR_IA32_VMX_EPT_VPID_CAP_SP_21_BITS                                RT_BIT_64(16)
    833 #define MSR_IA32_VMX_EPT_VPID_CAP_SP_30_BITS                                RT_BIT_64(17)
    834 #define MSR_IA32_VMX_EPT_VPID_CAP_SP_39_BITS                                RT_BIT_64(18)
    835 #define MSR_IA32_VMX_EPT_VPID_CAP_SP_48_BITS                                RT_BIT_64(19)
    836 #define MSR_IA32_VMX_EPT_VPID_CAP_INVEPT                                    RT_BIT_64(20)
    837 #define MSR_IA32_VMX_EPT_VPID_CAP_INVEPT_SINGLE_CONTEXT                     RT_BIT_64(25)
    838 #define MSR_IA32_VMX_EPT_VPID_CAP_INVEPT_ALL_CONTEXTS                       RT_BIT_64(26)
    839 #define MSR_IA32_VMX_EPT_VPID_CAP_INVVPID                                   RT_BIT_64(32)
    840 #define MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_INDIV_ADDR                        RT_BIT_64(40)
    841 #define MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_SINGLE_CONTEXT                    RT_BIT_64(41)
    842 #define MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_ALL_CONTEXTS                      RT_BIT_64(42)
    843 #define MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_SINGLE_CONTEXT_RETAIN_GLOBALS     RT_BIT_64(43)
     819#define MSR_IA32_VMX_EPT_VPID_CAP_RWX_X_ONLY                             RT_BIT_64(0)
     820#define MSR_IA32_VMX_EPT_VPID_CAP_RWX_W_ONLY                             RT_BIT_64(1)
     821#define MSR_IA32_VMX_EPT_VPID_CAP_RWX_WX_ONLY                            RT_BIT_64(2)
     822#define MSR_IA32_VMX_EPT_VPID_CAP_GAW_21_BITS                            RT_BIT_64(3)
     823#define MSR_IA32_VMX_EPT_VPID_CAP_GAW_30_BITS                            RT_BIT_64(4)
     824#define MSR_IA32_VMX_EPT_VPID_CAP_GAW_39_BITS                            RT_BIT_64(5)
     825#define MSR_IA32_VMX_EPT_VPID_CAP_GAW_48_BITS                            RT_BIT_64(6)
     826#define MSR_IA32_VMX_EPT_VPID_CAP_GAW_57_BITS                            RT_BIT_64(7)
     827#define MSR_IA32_VMX_EPT_VPID_CAP_EMT_UC                                 RT_BIT_64(8)
     828#define MSR_IA32_VMX_EPT_VPID_CAP_EMT_WC                                 RT_BIT_64(9)
     829#define MSR_IA32_VMX_EPT_VPID_CAP_EMT_WT                                 RT_BIT_64(12)
     830#define MSR_IA32_VMX_EPT_VPID_CAP_EMT_WP                                 RT_BIT_64(13)
     831#define MSR_IA32_VMX_EPT_VPID_CAP_EMT_WB                                 RT_BIT_64(14)
     832#define MSR_IA32_VMX_EPT_VPID_CAP_SP_21_BITS                             RT_BIT_64(16)
     833#define MSR_IA32_VMX_EPT_VPID_CAP_SP_30_BITS                             RT_BIT_64(17)
     834#define MSR_IA32_VMX_EPT_VPID_CAP_SP_39_BITS                             RT_BIT_64(18)
     835#define MSR_IA32_VMX_EPT_VPID_CAP_SP_48_BITS                             RT_BIT_64(19)
     836#define MSR_IA32_VMX_EPT_VPID_CAP_INVEPT                                 RT_BIT_64(20)
     837#define MSR_IA32_VMX_EPT_VPID_CAP_INVEPT_SINGLE_CONTEXT                  RT_BIT_64(25)
     838#define MSR_IA32_VMX_EPT_VPID_CAP_INVEPT_ALL_CONTEXTS                    RT_BIT_64(26)
     839#define MSR_IA32_VMX_EPT_VPID_CAP_INVVPID                                RT_BIT_64(32)
     840#define MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_INDIV_ADDR                     RT_BIT_64(40)
     841#define MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_SINGLE_CONTEXT                 RT_BIT_64(41)
     842#define MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_ALL_CONTEXTS                   RT_BIT_64(42)
     843#define MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_SINGLE_CONTEXT_RETAIN_GLOBALS  RT_BIT_64(43)
    844844
    845845/** @} */
     
    849849 */
    850850/** Uncachable EPT paging structure memory type. */
    851 #define VMX_EPT_MEMTYPE_UC                                  0
     851#define VMX_EPT_MEMTYPE_UC                                      0
    852852/** Write-back EPT paging structure memory type. */
    853 #define VMX_EPT_MEMTYPE_WB                                  6
     853#define VMX_EPT_MEMTYPE_WB                                      6
    854854/** Shift value to get the EPT page walk length (bits 5-3) */
    855 #define VMX_EPT_PAGE_WALK_LENGTH_SHIFT                      3
     855#define VMX_EPT_PAGE_WALK_LENGTH_SHIFT                          3
    856856/** Mask value to get the EPT page walk length (bits 5-3) */
    857 #define VMX_EPT_PAGE_WALK_LENGTH_MASK                       7
     857#define VMX_EPT_PAGE_WALK_LENGTH_MASK                           7
    858858/** Default EPT page-walk length (1 less than the actual EPT page-walk
    859859 *  length) */
    860 #define VMX_EPT_PAGE_WALK_LENGTH_DEFAULT                    3
     860#define VMX_EPT_PAGE_WALK_LENGTH_DEFAULT                        3
    861861/** @} */
    862862
     
    865865 * @{
    866866 */
    867 #define VMX_VMCS16_GUEST_FIELD_VPID                               0x0
    868 #define VMX_VMCS16_GUEST_FIELD_ES                                 0x800
    869 #define VMX_VMCS16_GUEST_FIELD_CS                                 0x802
    870 #define VMX_VMCS16_GUEST_FIELD_SS                                 0x804
    871 #define VMX_VMCS16_GUEST_FIELD_DS                                 0x806
    872 #define VMX_VMCS16_GUEST_FIELD_FS                                 0x808
    873 #define VMX_VMCS16_GUEST_FIELD_GS                                 0x80A
    874 #define VMX_VMCS16_GUEST_FIELD_LDTR                               0x80C
    875 #define VMX_VMCS16_GUEST_FIELD_TR                                 0x80E
     867#define VMX_VMCS16_GUEST_FIELD_VPID                             0x0
     868#define VMX_VMCS16_GUEST_FIELD_ES                               0x800
     869#define VMX_VMCS16_GUEST_FIELD_CS                               0x802
     870#define VMX_VMCS16_GUEST_FIELD_SS                               0x804
     871#define VMX_VMCS16_GUEST_FIELD_DS                               0x806
     872#define VMX_VMCS16_GUEST_FIELD_FS                               0x808
     873#define VMX_VMCS16_GUEST_FIELD_GS                               0x80A
     874#define VMX_VMCS16_GUEST_FIELD_LDTR                             0x80C
     875#define VMX_VMCS16_GUEST_FIELD_TR                               0x80E
    876876/** @} */
    877877
     
    879879 * @{
    880880 */
    881 #define VMX_VMCS16_HOST_FIELD_ES                                  0xC00
    882 #define VMX_VMCS16_HOST_FIELD_CS                                  0xC02
    883 #define VMX_VMCS16_HOST_FIELD_SS                                  0xC04
    884 #define VMX_VMCS16_HOST_FIELD_DS                                  0xC06
    885 #define VMX_VMCS16_HOST_FIELD_FS                                  0xC08
    886 #define VMX_VMCS16_HOST_FIELD_GS                                  0xC0A
    887 #define VMX_VMCS16_HOST_FIELD_TR                                  0xC0C
     881#define VMX_VMCS16_HOST_FIELD_ES                                0xC00
     882#define VMX_VMCS16_HOST_FIELD_CS                                0xC02
     883#define VMX_VMCS16_HOST_FIELD_SS                                0xC04
     884#define VMX_VMCS16_HOST_FIELD_DS                                0xC06
     885#define VMX_VMCS16_HOST_FIELD_FS                                0xC08
     886#define VMX_VMCS16_HOST_FIELD_GS                                0xC0A
     887#define VMX_VMCS16_HOST_FIELD_TR                                0xC0C
    888888/** @}          */
    889889
     
    891891 * @{
    892892 */
    893 #define VMX_VMCS64_HOST_FIELD_PAT_FULL                            0x2C00
    894 #define VMX_VMCS64_HOST_FIELD_PAT_HIGH                            0x2C01
    895 #define VMX_VMCS64_HOST_FIELD_EFER_FULL                           0x2C02
    896 #define VMX_VMCS64_HOST_FIELD_EFER_HIGH                           0x2C03
    897 #define VMX_VMCS64_HOST_PERF_GLOBAL_CTRL_FULL                     0x2C04      /**< MSR IA32_PERF_GLOBAL_CTRL */
    898 #define VMX_VMCS64_HOST_PERF_GLOBAL_CTRL_HIGH                     0x2C05      /**< MSR IA32_PERF_GLOBAL_CTRL */
     893#define VMX_VMCS64_HOST_FIELD_PAT_FULL                          0x2C00
     894#define VMX_VMCS64_HOST_FIELD_PAT_HIGH                          0x2C01
     895#define VMX_VMCS64_HOST_FIELD_EFER_FULL                         0x2C02
     896#define VMX_VMCS64_HOST_FIELD_EFER_HIGH                         0x2C03
     897#define VMX_VMCS64_HOST_PERF_GLOBAL_CTRL_FULL                   0x2C04      /**< MSR IA32_PERF_GLOBAL_CTRL */
     898#define VMX_VMCS64_HOST_PERF_GLOBAL_CTRL_HIGH                   0x2C05      /**< MSR IA32_PERF_GLOBAL_CTRL */
    899899/** @}          */
    900900
     
    903903 * @{
    904904 */
    905 #define VMX_VMCS64_CTRL_IO_BITMAP_A_FULL                          0x2000
    906 #define VMX_VMCS64_CTRL_IO_BITMAP_A_HIGH                          0x2001
    907 #define VMX_VMCS64_CTRL_IO_BITMAP_B_FULL                          0x2002
    908 #define VMX_VMCS64_CTRL_IO_BITMAP_B_HIGH                          0x2003
     905#define VMX_VMCS64_CTRL_IO_BITMAP_A_FULL                        0x2000
     906#define VMX_VMCS64_CTRL_IO_BITMAP_A_HIGH                        0x2001
     907#define VMX_VMCS64_CTRL_IO_BITMAP_B_FULL                        0x2002
     908#define VMX_VMCS64_CTRL_IO_BITMAP_B_HIGH                        0x2003
    909909
    910910/* Optional */
    911 #define VMX_VMCS64_CTRL_MSR_BITMAP_FULL                           0x2004
    912 #define VMX_VMCS64_CTRL_MSR_BITMAP_HIGH                           0x2005
    913 
    914 #define VMX_VMCS64_CTRL_EXIT_MSR_STORE_FULL                       0x2006
    915 #define VMX_VMCS64_CTRL_EXIT_MSR_STORE_HIGH                       0x2007
    916 #define VMX_VMCS64_CTRL_EXIT_MSR_LOAD_FULL                        0x2008
    917 #define VMX_VMCS64_CTRL_EXIT_MSR_LOAD_HIGH                        0x2009
    918 
    919 #define VMX_VMCS64_CTRL_ENTRY_MSR_LOAD_FULL                       0x200A
    920 #define VMX_VMCS64_CTRL_ENTRY_MSR_LOAD_HIGH                       0x200B
    921 
    922 #define VMX_VMCS64_CTRL_EXEC_VMCS_PTR_FULL                        0x200C
    923 #define VMX_VMCS64_CTRL_EXEC_VMCS_PTR_HIGH                        0x200D
    924 
    925 #define VMX_VMCS64_CTRL_TSC_OFFSET_FULL                           0x2010
    926 #define VMX_VMCS64_CTRL_TSC_OFFSET_HIGH                           0x2011
     911#define VMX_VMCS64_CTRL_MSR_BITMAP_FULL                         0x2004
     912#define VMX_VMCS64_CTRL_MSR_BITMAP_HIGH                         0x2005
     913
     914#define VMX_VMCS64_CTRL_EXIT_MSR_STORE_FULL                     0x2006
     915#define VMX_VMCS64_CTRL_EXIT_MSR_STORE_HIGH                     0x2007
     916#define VMX_VMCS64_CTRL_EXIT_MSR_LOAD_FULL                      0x2008
     917#define VMX_VMCS64_CTRL_EXIT_MSR_LOAD_HIGH                      0x2009
     918
     919#define VMX_VMCS64_CTRL_ENTRY_MSR_LOAD_FULL                     0x200A
     920#define VMX_VMCS64_CTRL_ENTRY_MSR_LOAD_HIGH                     0x200B
     921
     922#define VMX_VMCS64_CTRL_EXEC_VMCS_PTR_FULL                      0x200C
     923#define VMX_VMCS64_CTRL_EXEC_VMCS_PTR_HIGH                      0x200D
     924
     925#define VMX_VMCS64_CTRL_TSC_OFFSET_FULL                         0x2010
     926#define VMX_VMCS64_CTRL_TSC_OFFSET_HIGH                         0x2011
    927927
    928928/** Optional (VMX_VMCS_CTRL_PROC_EXEC_USE_TPR_SHADOW) */
    929 #define VMX_VMCS64_CTRL_VAPIC_PAGEADDR_FULL                       0x2012
    930 #define VMX_VMCS64_CTRL_VAPIC_PAGEADDR_HIGH                       0x2013
     929#define VMX_VMCS64_CTRL_VAPIC_PAGEADDR_FULL                     0x2012
     930#define VMX_VMCS64_CTRL_VAPIC_PAGEADDR_HIGH                     0x2013
    931931
    932932/** Optional (VMX_VMCS_CTRL_PROC_EXEC2_VIRT_APIC) */
    933 #define VMX_VMCS64_CTRL_APIC_ACCESSADDR_FULL                      0x2014
    934 #define VMX_VMCS64_CTRL_APIC_ACCESSADDR_HIGH                      0x2015
     933#define VMX_VMCS64_CTRL_APIC_ACCESSADDR_FULL                    0x2014
     934#define VMX_VMCS64_CTRL_APIC_ACCESSADDR_HIGH                    0x2015
    935935
    936936/** Optional (VMX_VMCS_CTRL_PROC_EXEC2_VMFUNC) */
    937 #define VMX_VMCS64_CTRL_VMFUNC_CTRLS_FULL                         0x2018
    938 #define VMX_VMCS64_CTRL_VMFUNC_CTRLS_HIGH                         0x2019
     937#define VMX_VMCS64_CTRL_VMFUNC_CTRLS_FULL                       0x2018
     938#define VMX_VMCS64_CTRL_VMFUNC_CTRLS_HIGH                       0x2019
    939939
    940940/** Extended page table pointer. */
    941 #define VMX_VMCS64_CTRL_EPTP_FULL                                 0x201a
    942 #define VMX_VMCS64_CTRL_EPTP_HIGH                                 0x201b
     941#define VMX_VMCS64_CTRL_EPTP_FULL                               0x201a
     942#define VMX_VMCS64_CTRL_EPTP_HIGH                               0x201b
    943943
    944944/** Extended page table pointer lists. */
    945 #define VMX_VMCS64_CTRL_EPTP_LIST_FULL                            0x2024
    946 #define VMX_VMCS64_CTRL_EPTP_LIST_HIGH                            0x2025
     945#define VMX_VMCS64_CTRL_EPTP_LIST_FULL                          0x2024
     946#define VMX_VMCS64_CTRL_EPTP_LIST_HIGH                          0x2025
    947947
    948948/** VM-exit guest phyiscal address. */
    949 #define VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_FULL                      0x2400
    950 #define VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_HIGH                      0x2401
     949#define VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_FULL                    0x2400
     950#define VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_HIGH                    0x2401
    951951/** @} */
    952952
     
    10021002 */
    10031003/** External interrupts cause VM exits if set; otherwise dispatched through the guest's IDT. */
    1004 #define VMX_VMCS_CTRL_PIN_EXEC_EXT_INT_EXIT            RT_BIT(0)
     1004#define VMX_VMCS_CTRL_PIN_EXEC_EXT_INT_EXIT                     RT_BIT(0)
    10051005/** Non-maskable interrupts cause VM exits if set; otherwise dispatched through the guest's IDT. */
    1006 #define VMX_VMCS_CTRL_PIN_EXEC_NMI_EXIT                RT_BIT(3)
     1006#define VMX_VMCS_CTRL_PIN_EXEC_NMI_EXIT                         RT_BIT(3)
    10071007/** Virtual NMIs. */
    1008 #define VMX_VMCS_CTRL_PIN_EXEC_VIRTUAL_NMI             RT_BIT(5)
     1008#define VMX_VMCS_CTRL_PIN_EXEC_VIRTUAL_NMI                      RT_BIT(5)
    10091009/** Activate VMX preemption timer. */
    1010 #define VMX_VMCS_CTRL_PIN_EXEC_PREEMPT_TIMER           RT_BIT(6)
     1010#define VMX_VMCS_CTRL_PIN_EXEC_PREEMPT_TIMER                    RT_BIT(6)
    10111011/* All other bits are reserved and must be set according to MSR IA32_VMX_PROCBASED_CTLS. */
    10121012/** @} */
     
    10161016 */
    10171017/** VM Exit as soon as RFLAGS.IF=1 and no blocking is active. */
    1018 #define VMX_VMCS_CTRL_PROC_EXEC_INT_WINDOW_EXIT        RT_BIT(2)
     1018#define VMX_VMCS_CTRL_PROC_EXEC_INT_WINDOW_EXIT                 RT_BIT(2)
    10191019/** Use timestamp counter offset. */
    1020 #define VMX_VMCS_CTRL_PROC_EXEC_USE_TSC_OFFSETTING     RT_BIT(3)
     1020#define VMX_VMCS_CTRL_PROC_EXEC_USE_TSC_OFFSETTING              RT_BIT(3)
    10211021/** VM Exit when executing the HLT instruction. */
    1022 #define VMX_VMCS_CTRL_PROC_EXEC_HLT_EXIT               RT_BIT(7)
     1022#define VMX_VMCS_CTRL_PROC_EXEC_HLT_EXIT                        RT_BIT(7)
    10231023/** VM Exit when executing the INVLPG instruction. */
    1024 #define VMX_VMCS_CTRL_PROC_EXEC_INVLPG_EXIT            RT_BIT(9)
     1024#define VMX_VMCS_CTRL_PROC_EXEC_INVLPG_EXIT                     RT_BIT(9)
    10251025/** VM Exit when executing the MWAIT instruction. */
    1026 #define VMX_VMCS_CTRL_PROC_EXEC_MWAIT_EXIT             RT_BIT(10)
     1026#define VMX_VMCS_CTRL_PROC_EXEC_MWAIT_EXIT                      RT_BIT(10)
    10271027/** VM Exit when executing the RDPMC instruction. */
    1028 #define VMX_VMCS_CTRL_PROC_EXEC_RDPMC_EXIT             RT_BIT(11)
     1028#define VMX_VMCS_CTRL_PROC_EXEC_RDPMC_EXIT                      RT_BIT(11)
    10291029/** VM Exit when executing the RDTSC/RDTSCP instruction. */
    1030 #define VMX_VMCS_CTRL_PROC_EXEC_RDTSC_EXIT             RT_BIT(12)
     1030#define VMX_VMCS_CTRL_PROC_EXEC_RDTSC_EXIT                      RT_BIT(12)
    10311031/** VM Exit when executing the MOV to CR3 instruction. (forced to 1 on the 'first' VT-x capable CPUs; this actually includes the newest Nehalem CPUs) */
    1032 #define VMX_VMCS_CTRL_PROC_EXEC_CR3_LOAD_EXIT          RT_BIT(15)
     1032#define VMX_VMCS_CTRL_PROC_EXEC_CR3_LOAD_EXIT                   RT_BIT(15)
    10331033/** VM Exit when executing the MOV from CR3 instruction. (forced to 1 on the 'first' VT-x capable CPUs; this actually includes the newest Nehalem CPUs) */
    1034 #define VMX_VMCS_CTRL_PROC_EXEC_CR3_STORE_EXIT         RT_BIT(16)
     1034#define VMX_VMCS_CTRL_PROC_EXEC_CR3_STORE_EXIT                  RT_BIT(16)
    10351035/** VM Exit on CR8 loads. */
    1036 #define VMX_VMCS_CTRL_PROC_EXEC_CR8_LOAD_EXIT          RT_BIT(19)
     1036#define VMX_VMCS_CTRL_PROC_EXEC_CR8_LOAD_EXIT                   RT_BIT(19)
    10371037/** VM Exit on CR8 stores. */
    1038 #define VMX_VMCS_CTRL_PROC_EXEC_CR8_STORE_EXIT         RT_BIT(20)
     1038#define VMX_VMCS_CTRL_PROC_EXEC_CR8_STORE_EXIT                  RT_BIT(20)
    10391039/** Use TPR shadow. */
    1040 #define VMX_VMCS_CTRL_PROC_EXEC_USE_TPR_SHADOW         RT_BIT(21)
     1040#define VMX_VMCS_CTRL_PROC_EXEC_USE_TPR_SHADOW                  RT_BIT(21)
    10411041/** VM Exit when virtual nmi blocking is disabled. */
    1042 #define VMX_VMCS_CTRL_PROC_EXEC_NMI_WINDOW_EXIT        RT_BIT(22)
     1042#define VMX_VMCS_CTRL_PROC_EXEC_NMI_WINDOW_EXIT                 RT_BIT(22)
    10431043/** VM Exit when executing a MOV DRx instruction. */
    1044 #define VMX_VMCS_CTRL_PROC_EXEC_MOV_DR_EXIT            RT_BIT(23)
     1044#define VMX_VMCS_CTRL_PROC_EXEC_MOV_DR_EXIT                     RT_BIT(23)
    10451045/** VM Exit when executing IO instructions. */
    1046 #define VMX_VMCS_CTRL_PROC_EXEC_UNCOND_IO_EXIT         RT_BIT(24)
     1046#define VMX_VMCS_CTRL_PROC_EXEC_UNCOND_IO_EXIT                  RT_BIT(24)
    10471047/** Use IO bitmaps. */
    1048 #define VMX_VMCS_CTRL_PROC_EXEC_USE_IO_BITMAPS         RT_BIT(25)
     1048#define VMX_VMCS_CTRL_PROC_EXEC_USE_IO_BITMAPS                  RT_BIT(25)
    10491049/** Monitor trap flag. */
    1050 #define VMX_VMCS_CTRL_PROC_EXEC_MONITOR_TRAP_FLAG      RT_BIT(27)
     1050#define VMX_VMCS_CTRL_PROC_EXEC_MONITOR_TRAP_FLAG               RT_BIT(27)
    10511051/** Use MSR bitmaps. */
    1052 #define VMX_VMCS_CTRL_PROC_EXEC_USE_MSR_BITMAPS        RT_BIT(28)
     1052#define VMX_VMCS_CTRL_PROC_EXEC_USE_MSR_BITMAPS                 RT_BIT(28)
    10531053/** VM Exit when executing the MONITOR instruction. */
    1054 #define VMX_VMCS_CTRL_PROC_EXEC_MONITOR_EXIT           RT_BIT(29)
     1054#define VMX_VMCS_CTRL_PROC_EXEC_MONITOR_EXIT                    RT_BIT(29)
    10551055/** VM Exit when executing the PAUSE instruction. */
    1056 #define VMX_VMCS_CTRL_PROC_EXEC_PAUSE_EXIT             RT_BIT(30)
     1056#define VMX_VMCS_CTRL_PROC_EXEC_PAUSE_EXIT                      RT_BIT(30)
    10571057/** Determines whether the secondary processor based VM-execution controls are used. */
    10581058#define VMX_VMCS_CTRL_PROC_EXEC_USE_SECONDARY_EXEC_CTRL         RT_BIT(31)
     
    10931093 */
    10941094/** Load guest debug controls (dr7 & IA32_DEBUGCTL_MSR) (forced to 1 on the 'first' VT-x capable CPUs; this actually includes the newest Nehalem CPUs) */
    1095 #define VMX_VMCS_CTRL_ENTRY_LOAD_DEBUG                 RT_BIT(2)
     1095#define VMX_VMCS_CTRL_ENTRY_LOAD_DEBUG                          RT_BIT(2)
    10961096/** 64 bits guest mode. Must be 0 for CPUs that don't support AMD64. */
    1097 #define VMX_VMCS_CTRL_ENTRY_IA32E_MODE_GUEST           RT_BIT(9)
     1097#define VMX_VMCS_CTRL_ENTRY_IA32E_MODE_GUEST                    RT_BIT(9)
    10981098/** In SMM mode after VM-entry. */
    1099 #define VMX_VMCS_CTRL_ENTRY_ENTRY_SMM                  RT_BIT(10)
     1099#define VMX_VMCS_CTRL_ENTRY_ENTRY_SMM                           RT_BIT(10)
    11001100/** Disable dual treatment of SMI and SMM; must be zero for VM-entry outside of SMM. */
    1101 #define VMX_VMCS_CTRL_ENTRY_DEACTIVATE_DUALMON         RT_BIT(11)
    1102 /** This control determines whether the guest IA32_PERF_GLOBAL_CTRL MSR is loaded on VM entry. */
    1103 #define VMX_VMCS_CTRL_ENTRY_LOAD_GUEST_PERF_MSR        RT_BIT(13)
    1104 /** This control determines whether the guest IA32_PAT MSR is loaded on VM entry. */
    1105 #define VMX_VMCS_CTRL_ENTRY_LOAD_GUEST_PAT_MSR         RT_BIT(14)
    1106 /** This control determines whether the guest IA32_EFER MSR is loaded on VM entry. */
    1107 #define VMX_VMCS_CTRL_ENTRY_LOAD_GUEST_EFER_MSR        RT_BIT(15)
     1101#define VMX_VMCS_CTRL_ENTRY_DEACTIVATE_DUALMON                  RT_BIT(11)
     1102/** Whether the guest IA32_PERF_GLOBAL_CTRL MSR is loaded on VM entry. */
     1103#define VMX_VMCS_CTRL_ENTRY_LOAD_GUEST_PERF_MSR                 RT_BIT(13)
     1104/** Whether the guest IA32_PAT MSR is loaded on VM entry. */
     1105#define VMX_VMCS_CTRL_ENTRY_LOAD_GUEST_PAT_MSR                  RT_BIT(14)
     1106/** Whether the guest IA32_EFER MSR is loaded on VM entry. */
     1107#define VMX_VMCS_CTRL_ENTRY_LOAD_GUEST_EFER_MSR                 RT_BIT(15)
    11081108/** @} */
    11091109
     
    11131113 */
    11141114/** Save guest debug controls (dr7 & IA32_DEBUGCTL_MSR) (forced to 1 on the 'first' VT-x capable CPUs; this actually includes the newest Nehalem CPUs) */
    1115 #define VMX_VMCS_CTRL_EXIT_SAVE_DEBUG                  RT_BIT(2)
     1115#define VMX_VMCS_CTRL_EXIT_SAVE_DEBUG                           RT_BIT(2)
    11161116/** Return to long mode after a VM-exit. */
    1117 #define VMX_VMCS_CTRL_EXIT_HOST_ADDR_SPACE_SIZE        RT_BIT(9)
    1118 /** This control determines whether the IA32_PERF_GLOBAL_CTRL MSR is loaded on VM exit. */
    1119 #define VMX_VMCS_CTRL_EXIT_LOAD_PERF_MSR               RT_BIT(12)
     1117#define VMX_VMCS_CTRL_EXIT_HOST_ADDR_SPACE_SIZE                 RT_BIT(9)
     1118/** Whether the IA32_PERF_GLOBAL_CTRL MSR is loaded on VM exit. */
     1119#define VMX_VMCS_CTRL_EXIT_LOAD_PERF_MSR                        RT_BIT(12)
    11201120/** Acknowledge external interrupts with the irq controller if one caused a VM-exit. */
    1121 #define VMX_VMCS_CTRL_EXIT_ACK_EXT_INT                 RT_BIT(15)
    1122 /** This control determines whether the guest IA32_PAT MSR is saved on VM exit. */
    1123 #define VMX_VMCS_CTRL_EXIT_SAVE_GUEST_PAT_MSR          RT_BIT(18)
    1124 /** This control determines whether the host IA32_PAT MSR is loaded on VM exit. */
    1125 #define VMX_VMCS_CTRL_EXIT_LOAD_HOST_PAT_MSR           RT_BIT(19)
    1126 /** This control determines whether the guest IA32_EFER MSR is saved on VM exit. */
    1127 #define VMX_VMCS_CTRL_EXIT_SAVE_GUEST_EFER_MSR         RT_BIT(20)
    1128 /** This control determines whether the host IA32_EFER MSR is loaded on VM exit. */
    1129 #define VMX_VMCS_CTRL_EXIT_LOAD_HOST_EFER_MSR          RT_BIT(21)
    1130 /** This control determines whether the value of the VMX preemption timer is
    1131  *  saved on every VM exit. */
    1132 #define VMX_VMCS_CTRL_EXIT_SAVE_VMX_PREEMPT_TIMER      RT_BIT(22)
     1121#define VMX_VMCS_CTRL_EXIT_ACK_EXT_INT                          RT_BIT(15)
     1122/** Whether the guest IA32_PAT MSR is saved on VM exit. */
     1123#define VMX_VMCS_CTRL_EXIT_SAVE_GUEST_PAT_MSR                   RT_BIT(18)
     1124/** Whether the host IA32_PAT MSR is loaded on VM exit. */
     1125#define VMX_VMCS_CTRL_EXIT_LOAD_HOST_PAT_MSR                    RT_BIT(19)
     1126/** Whether the guest IA32_EFER MSR is saved on VM exit. */
     1127#define VMX_VMCS_CTRL_EXIT_SAVE_GUEST_EFER_MSR                  RT_BIT(20)
     1128/** Whether the host IA32_EFER MSR is loaded on VM exit. */
     1129#define VMX_VMCS_CTRL_EXIT_LOAD_HOST_EFER_MSR                   RT_BIT(21)
     1130/** Whether the value of the VMX preemption timer is saved on every VM exit. */
     1131#define VMX_VMCS_CTRL_EXIT_SAVE_VMX_PREEMPT_TIMER               RT_BIT(22)
    11331132/** @} */
    11341133
     
    12561255/** The logical processor is inactive, because executed a HLT instruction. */
    12571256#define VMX_VMCS_GUEST_ACTIVITY_HLT                              0x1
    1258 /** The logical processor is inactive, because of a triple fault or other
    1259  *  serious error. */
     1257/** The logical processor is inactive, because of a triple fault or other serious error. */
    12601258#define VMX_VMCS_GUEST_ACTIVITY_SHUTDOWN                         0x2
    12611259/** The logical processor is inactive, because it's waiting for a startup-IPI */
     
    13101308 */
    13111309/** 0-2:  Debug register number */
    1312 #define VMX_EXIT_QUALIFICATION_DRX_REGISTER(a)         (a & 7)
     1310#define VMX_EXIT_QUALIFICATION_DRX_REGISTER(a)                  (a & 7)
    13131311/** 3:    Reserved; cleared to 0. */
    1314 #define VMX_EXIT_QUALIFICATION_DRX_RES1(a)             ((a >> 3) & 1)
     1312#define VMX_EXIT_QUALIFICATION_DRX_RES1(a)                      ((a >> 3) & 1)
    13151313/** 4:    Direction of move (0 = write, 1 = read) */
    1316 #define VMX_EXIT_QUALIFICATION_DRX_DIRECTION(a)        ((a >> 4) & 1)
     1314#define VMX_EXIT_QUALIFICATION_DRX_DIRECTION(a)                 ((a >> 4) & 1)
    13171315/** 5-7:  Reserved; cleared to 0. */
    1318 #define VMX_EXIT_QUALIFICATION_DRX_RES2(a)             ((a >> 5) & 7)
     1316#define VMX_EXIT_QUALIFICATION_DRX_RES2(a)                      ((a >> 5) & 7)
    13191317/** 8-11: General purpose register number. */
    1320 #define VMX_EXIT_QUALIFICATION_DRX_GENREG(a)           ((a >> 8) & 0xF)
     1318#define VMX_EXIT_QUALIFICATION_DRX_GENREG(a)                    ((a >> 8) & 0xF)
    13211319/** Rest: reserved. */
    13221320/** @} */
     
    13251323 * @{
    13261324 */
    1327 #define VMX_EXIT_QUALIFICATION_DRX_DIRECTION_WRITE     0
    1328 #define VMX_EXIT_QUALIFICATION_DRX_DIRECTION_READ      1
     1325#define VMX_EXIT_QUALIFICATION_DRX_DIRECTION_WRITE              0
     1326#define VMX_EXIT_QUALIFICATION_DRX_DIRECTION_READ               1
    13291327/** @} */
    13301328
     
    13351333 */
    13361334/** 0-3:   Control register number (0 for CLTS & LMSW) */
    1337 #define VMX_EXIT_QUALIFICATION_CRX_REGISTER(a)         (a & 0xF)
     1335#define VMX_EXIT_QUALIFICATION_CRX_REGISTER(a)                  (a & 0xF)
    13381336/** 4-5:   Access type. */
    1339 #define VMX_EXIT_QUALIFICATION_CRX_ACCESS(a)           ((a >> 4) & 3)
     1337#define VMX_EXIT_QUALIFICATION_CRX_ACCESS(a)                    ((a >> 4) & 3)
    13401338/** 6:     LMSW operand type */
    1341 #define VMX_EXIT_QUALIFICATION_CRX_LMSW_OP(a)          ((a >> 6) & 1)
     1339#define VMX_EXIT_QUALIFICATION_CRX_LMSW_OP(a)                   ((a >> 6) & 1)
    13421340/** 7:     Reserved; cleared to 0. */
    1343 #define VMX_EXIT_QUALIFICATION_CRX_RES1(a)             ((a >> 7) & 1)
     1341#define VMX_EXIT_QUALIFICATION_CRX_RES1(a)                      ((a >> 7) & 1)
    13441342/** 8-11:  General purpose register number (0 for CLTS & LMSW). */
    1345 #define VMX_EXIT_QUALIFICATION_CRX_GENREG(a)           ((a >> 8) & 0xF)
     1343#define VMX_EXIT_QUALIFICATION_CRX_GENREG(a)                    ((a >> 8) & 0xF)
    13461344/** 12-15: Reserved; cleared to 0. */
    1347 #define VMX_EXIT_QUALIFICATION_CRX_RES2(a)             ((a >> 12) & 0xF)
     1345#define VMX_EXIT_QUALIFICATION_CRX_RES2(a)                      ((a >> 12) & 0xF)
    13481346/** 16-31: LMSW source data (else 0). */
    1349 #define VMX_EXIT_QUALIFICATION_CRX_LMSW_DATA(a)        ((a >> 16) & 0xFFFF)
     1347#define VMX_EXIT_QUALIFICATION_CRX_LMSW_DATA(a)                 ((a >> 16) & 0xFFFF)
    13501348/** Rest: reserved. */
    13511349/** @} */
     
    13541352 * @{
    13551353 */
    1356 #define VMX_EXIT_QUALIFICATION_CRX_ACCESS_WRITE        0
    1357 #define VMX_EXIT_QUALIFICATION_CRX_ACCESS_READ         1
    1358 #define VMX_EXIT_QUALIFICATION_CRX_ACCESS_CLTS         2
    1359 #define VMX_EXIT_QUALIFICATION_CRX_ACCESS_LMSW         3
     1354#define VMX_EXIT_QUALIFICATION_CRX_ACCESS_WRITE                 0
     1355#define VMX_EXIT_QUALIFICATION_CRX_ACCESS_READ                  1
     1356#define VMX_EXIT_QUALIFICATION_CRX_ACCESS_CLTS                  2
     1357#define VMX_EXIT_QUALIFICATION_CRX_ACCESS_LMSW                  3
    13601358/** @} */
    13611359
     
    13631361 * @{
    13641362 */
    1365 #define VMX_EXIT_QUALIFICATION_TASK_SWITCH_SELECTOR(a)  (a & 0xffff)
    1366 #define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE(a)      ((a >> 30)& 0x3)
     1363#define VMX_EXIT_QUALIFICATION_TASK_SWITCH_SELECTOR(a)          (a & 0xffff)
     1364#define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE(a)              ((a >> 30)& 0x3)
    13671365/** Task switch caused by a call instruction. */
    1368 #define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE_CALL    0
     1366#define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE_CALL            0
    13691367/** Task switch caused by an iret instruction. */
    1370 #define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE_IRET    1
     1368#define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE_IRET            1
    13711369/** Task switch caused by a jmp instruction. */
    1372 #define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE_JMP     2
     1370#define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE_JMP             2
    13731371/** Task switch caused by an interrupt gate. */
    1374 #define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE_IDT     3
     1372#define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE_IDT             3
    13751373/** @} */
    13761374
     
    13801378 */
    13811379/** Set if the violation was caused by a data read. */
    1382 #define VMX_EXIT_QUALIFICATION_EPT_DATA_READ            RT_BIT(0)
     1380#define VMX_EXIT_QUALIFICATION_EPT_DATA_READ                    RT_BIT(0)
    13831381/** Set if the violation was caused by a data write. */
    1384 #define VMX_EXIT_QUALIFICATION_EPT_DATA_WRITE           RT_BIT(1)
     1382#define VMX_EXIT_QUALIFICATION_EPT_DATA_WRITE                   RT_BIT(1)
    13851383/** Set if the violation was caused by an insruction fetch. */
    1386 #define VMX_EXIT_QUALIFICATION_EPT_INSTR_FETCH          RT_BIT(2)
     1384#define VMX_EXIT_QUALIFICATION_EPT_INSTR_FETCH                  RT_BIT(2)
    13871385/** AND of the present bit of all EPT structures. */
    1388 #define VMX_EXIT_QUALIFICATION_EPT_ENTRY_PRESENT        RT_BIT(3)
     1386#define VMX_EXIT_QUALIFICATION_EPT_ENTRY_PRESENT                RT_BIT(3)
    13891387/** AND of the write bit of all EPT structures. */
    1390 #define VMX_EXIT_QUALIFICATION_EPT_ENTRY_WRITE          RT_BIT(4)
     1388#define VMX_EXIT_QUALIFICATION_EPT_ENTRY_WRITE                  RT_BIT(4)
    13911389/** AND of the execute bit of all EPT structures. */
    1392 #define VMX_EXIT_QUALIFICATION_EPT_ENTRY_EXECUTE        RT_BIT(5)
     1390#define VMX_EXIT_QUALIFICATION_EPT_ENTRY_EXECUTE                RT_BIT(5)
    13931391/** Set if the guest linear address field contains the faulting address. */
    1394 #define VMX_EXIT_QUALIFICATION_EPT_GUEST_ADDR_VALID     RT_BIT(7)
     1392#define VMX_EXIT_QUALIFICATION_EPT_GUEST_ADDR_VALID             RT_BIT(7)
    13951393/** If bit 7 is one: (reserved otherwise)
    13961394 *  1 - violation due to physical address access.
    13971395 *  0 - violation caused by page walk or access/dirty bit updates
    13981396 */
    1399 #define VMX_EXIT_QUALIFICATION_EPT_TRANSLATED_ACCESS    RT_BIT(8)
     1397#define VMX_EXIT_QUALIFICATION_EPT_TRANSLATED_ACCESS            RT_BIT(8)
    14001398/** @} */
    14011399
     
    14051403 */
    14061404/** 0-2:   IO operation width. */
    1407 #define VMX_EXIT_QUALIFICATION_IO_WIDTH(a)             (a & 7)
     1405#define VMX_EXIT_QUALIFICATION_IO_WIDTH(a)                      (a & 7)
    14081406/** 3:     IO operation direction. */
    1409 #define VMX_EXIT_QUALIFICATION_IO_DIRECTION(a)         ((a >> 3) & 1)
     1407#define VMX_EXIT_QUALIFICATION_IO_DIRECTION(a)                  ((a >> 3) & 1)
    14101408/** 4:     String IO operation. */
    1411 #define VMX_EXIT_QUALIFICATION_IO_STRING(a)            ((a >> 4) & 1)
     1409#define VMX_EXIT_QUALIFICATION_IO_STRING(a)                     ((a >> 4) & 1)
    14121410/** 5:     Repeated IO operation. */
    1413 #define VMX_EXIT_QUALIFICATION_IO_REP(a)               ((a >> 5) & 1)
     1411#define VMX_EXIT_QUALIFICATION_IO_REP(a)                        ((a >> 5) & 1)
    14141412/** 6:     Operand encoding. */
    1415 #define VMX_EXIT_QUALIFICATION_IO_ENCODING(a)          ((a >> 6) & 1)
     1413#define VMX_EXIT_QUALIFICATION_IO_ENCODING(a)                   ((a >> 6) & 1)
    14161414/** 16-31: IO Port (0-0xffff). */
    1417 #define VMX_EXIT_QUALIFICATION_IO_PORT(a)              ((a >> 16) & 0xffff)
     1415#define VMX_EXIT_QUALIFICATION_IO_PORT(a)                       ((a >> 16) & 0xffff)
    14181416/* Rest reserved. */
    14191417/** @} */
     
    14221420 * @{
    14231421 */
    1424 #define VMX_EXIT_QUALIFICATION_IO_DIRECTION_OUT        0
    1425 #define VMX_EXIT_QUALIFICATION_IO_DIRECTION_IN         1
     1422#define VMX_EXIT_QUALIFICATION_IO_DIRECTION_OUT                 0
     1423#define VMX_EXIT_QUALIFICATION_IO_DIRECTION_IN                  1
    14261424/** @} */
    14271425
     
    14301428 * @{
    14311429 */
    1432 #define VMX_EXIT_QUALIFICATION_IO_ENCODING_DX          0
    1433 #define VMX_EXIT_QUALIFICATION_IO_ENCODING_IMM         1
     1430#define VMX_EXIT_QUALIFICATION_IO_ENCODING_DX                   0
     1431#define VMX_EXIT_QUALIFICATION_IO_ENCODING_IMM                  1
    14341432/** @} */
    14351433
     
    14381436 */
    14391437/** 0-11:   If the APIC-access VM exit is due to a linear access, the offset of access within the APIC page. */
    1440 #define VMX_EXIT_QUALIFICATION_APIC_ACCESS_OFFSET(a)    ((a) & 0xfff)
     1438#define VMX_EXIT_QUALIFICATION_APIC_ACCESS_OFFSET(a)            ((a) & 0xfff)
    14411439/** 12-15:  Access type. */
    1442 #define VMX_EXIT_QUALIFICATION_APIC_ACCESS_TYPE(a)      ((a) & 0xf000)
     1440#define VMX_EXIT_QUALIFICATION_APIC_ACCESS_TYPE(a)              ((a) & 0xf000)
    14431441/* Rest reserved. */
    14441442/** @} */
     
    14491447 */
    14501448/** Linear read access. */
    1451 #define VMX_APIC_ACCESS_TYPE_LINEAR_READ                0
     1449#define VMX_APIC_ACCESS_TYPE_LINEAR_READ                        0
    14521450/** Linear write access. */
    1453 #define VMX_APIC_ACCESS_TYPE_LINEAR_WRITE               1
     1451#define VMX_APIC_ACCESS_TYPE_LINEAR_WRITE                       1
    14541452/** Linear instruction fetch access. */
    1455 #define VMX_APIC_ACCESS_TYPE_LINEAR_INSTR_FETCH         2
     1453#define VMX_APIC_ACCESS_TYPE_LINEAR_INSTR_FETCH                 2
    14561454/** Linear read/write access during event delivery. */
    1457 #define VMX_APIC_ACCESS_TYPE_LINEAR_EVENT_DELIVERY      3
     1455#define VMX_APIC_ACCESS_TYPE_LINEAR_EVENT_DELIVERY              3
    14581456/** Physical read/write access during event delivery. */
    1459 #define VMX_APIC_ACCESS_TYPE_PHYSICAL_EVENT_DELIVERY    10
     1457#define VMX_APIC_ACCESS_TYPE_PHYSICAL_EVENT_DELIVERY            10
    14601458/** Physical access for an instruction fetch or during instruction execution. */
    1461 #define VMX_APIC_ACCESS_TYPE_PHYSICAL_INSTR             15
     1459#define VMX_APIC_ACCESS_TYPE_PHYSICAL_INSTR                     15
    14621460/** @} */
    14631461
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