Changeset 45947 in vbox for trunk/include/VBox/vmm
- Timestamp:
- May 8, 2013 12:27:58 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 85594
- Location:
- trunk/include/VBox/vmm
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/hm_vmx.h
r45904 r45947 872 872 #define VMX_VMCS64_CTRL_TSC_OFFSET_HIGH 0x2011 873 873 874 /** Optional (VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_USE_TPR_SHADOW) */874 /** Optional (VMX_VMCS_CTRL_PROC_EXEC_USE_TPR_SHADOW) */ 875 875 #define VMX_VMCS64_CTRL_VAPIC_PAGEADDR_FULL 0x2012 876 876 #define VMX_VMCS64_CTRL_VAPIC_PAGEADDR_HIGH 0x2013 … … 925 925 * @{ 926 926 */ 927 #define VMX_VMCS32_CTRL_PIN_EXEC _CONTROLS0x4000928 #define VMX_VMCS32_CTRL_PROC_EXEC _CONTROLS0x4002927 #define VMX_VMCS32_CTRL_PIN_EXEC 0x4000 928 #define VMX_VMCS32_CTRL_PROC_EXEC 0x4002 929 929 #define VMX_VMCS32_CTRL_EXCEPTION_BITMAP 0x4004 930 930 #define VMX_VMCS32_CTRL_PAGEFAULT_ERROR_MASK 0x4006 931 931 #define VMX_VMCS32_CTRL_PAGEFAULT_ERROR_MATCH 0x4008 932 932 #define VMX_VMCS32_CTRL_CR3_TARGET_COUNT 0x400A 933 #define VMX_VMCS32_CTRL_EXIT _CONTROLS0x400C933 #define VMX_VMCS32_CTRL_EXIT 0x400C 934 934 #define VMX_VMCS32_CTRL_EXIT_MSR_STORE_COUNT 0x400E 935 935 #define VMX_VMCS32_CTRL_EXIT_MSR_LOAD_COUNT 0x4010 936 #define VMX_VMCS32_CTRL_ENTRY _CONTROLS0x4012936 #define VMX_VMCS32_CTRL_ENTRY 0x4012 937 937 #define VMX_VMCS32_CTRL_ENTRY_MSR_LOAD_COUNT 0x4014 938 938 #define VMX_VMCS32_CTRL_ENTRY_INTERRUPTION_INFO 0x4016 … … 940 940 #define VMX_VMCS32_CTRL_ENTRY_INSTR_LENGTH 0x401A 941 941 #define VMX_VMCS32_CTRL_TPR_THRESHOLD 0x401C 942 #define VMX_VMCS32_CTRL_PROC_EXEC _CONTROLS20x401E943 /** @} */ 944 945 946 /** @name VMX_VMCS_CTRL_PIN_EXEC _CONTROLS942 #define VMX_VMCS32_CTRL_PROC_EXEC2 0x401E 943 /** @} */ 944 945 946 /** @name VMX_VMCS_CTRL_PIN_EXEC 947 947 * @{ 948 948 */ 949 949 /** External interrupts cause VM exits if set; otherwise dispatched through the guest's IDT. */ 950 #define VMX_VMCS_CTRL_PIN_EXEC_ CONTROLS_EXT_INT_EXIT RT_BIT(0)950 #define VMX_VMCS_CTRL_PIN_EXEC_EXT_INT_EXIT RT_BIT(0) 951 951 /** Non-maskable interrupts cause VM exits if set; otherwise dispatched through the guest's IDT. */ 952 #define VMX_VMCS_CTRL_PIN_EXEC_ CONTROLS_NMI_EXIT RT_BIT(3)952 #define VMX_VMCS_CTRL_PIN_EXEC_NMI_EXIT RT_BIT(3) 953 953 /** Virtual NMIs. */ 954 #define VMX_VMCS_CTRL_PIN_EXEC_ CONTROLS_VIRTUAL_NMI RT_BIT(5)954 #define VMX_VMCS_CTRL_PIN_EXEC_VIRTUAL_NMI RT_BIT(5) 955 955 /** Activate VMX preemption timer. */ 956 #define VMX_VMCS_CTRL_PIN_EXEC_ CONTROLS_PREEMPT_TIMER RT_BIT(6)956 #define VMX_VMCS_CTRL_PIN_EXEC_PREEMPT_TIMER RT_BIT(6) 957 957 /* All other bits are reserved and must be set according to MSR IA32_VMX_PROCBASED_CTLS. */ 958 958 /** @} */ 959 959 960 /** @name VMX_VMCS_CTRL_PROC_EXEC _CONTROLS960 /** @name VMX_VMCS_CTRL_PROC_EXEC 961 961 * @{ 962 962 */ 963 963 /** VM Exit as soon as RFLAGS.IF=1 and no blocking is active. */ 964 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_INT_WINDOW_EXIT RT_BIT(2)964 #define VMX_VMCS_CTRL_PROC_EXEC_INT_WINDOW_EXIT RT_BIT(2) 965 965 /** Use timestamp counter offset. */ 966 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_USE_TSC_OFFSETTING RT_BIT(3)966 #define VMX_VMCS_CTRL_PROC_EXEC_USE_TSC_OFFSETTING RT_BIT(3) 967 967 /** VM Exit when executing the HLT instruction. */ 968 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_HLT_EXIT RT_BIT(7)968 #define VMX_VMCS_CTRL_PROC_EXEC_HLT_EXIT RT_BIT(7) 969 969 /** VM Exit when executing the INVLPG instruction. */ 970 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_INVLPG_EXIT RT_BIT(9)970 #define VMX_VMCS_CTRL_PROC_EXEC_INVLPG_EXIT RT_BIT(9) 971 971 /** VM Exit when executing the MWAIT instruction. */ 972 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_MWAIT_EXIT RT_BIT(10)972 #define VMX_VMCS_CTRL_PROC_EXEC_MWAIT_EXIT RT_BIT(10) 973 973 /** VM Exit when executing the RDPMC instruction. */ 974 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_RDPMC_EXIT RT_BIT(11)974 #define VMX_VMCS_CTRL_PROC_EXEC_RDPMC_EXIT RT_BIT(11) 975 975 /** VM Exit when executing the RDTSC/RDTSCP instruction. */ 976 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_RDTSC_EXIT RT_BIT(12)976 #define VMX_VMCS_CTRL_PROC_EXEC_RDTSC_EXIT RT_BIT(12) 977 977 /** 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) */ 978 #define VMX_VMCS_CTRL_PROC_EXEC_C ONTROLS_CR3_LOAD_EXIT RT_BIT(15)978 #define VMX_VMCS_CTRL_PROC_EXEC_CR3_LOAD_EXIT RT_BIT(15) 979 979 /** 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) */ 980 #define VMX_VMCS_CTRL_PROC_EXEC_C ONTROLS_CR3_STORE_EXIT RT_BIT(16)980 #define VMX_VMCS_CTRL_PROC_EXEC_CR3_STORE_EXIT RT_BIT(16) 981 981 /** VM Exit on CR8 loads. */ 982 #define VMX_VMCS_CTRL_PROC_EXEC_C ONTROLS_CR8_LOAD_EXIT RT_BIT(19)982 #define VMX_VMCS_CTRL_PROC_EXEC_CR8_LOAD_EXIT RT_BIT(19) 983 983 /** VM Exit on CR8 stores. */ 984 #define VMX_VMCS_CTRL_PROC_EXEC_C ONTROLS_CR8_STORE_EXIT RT_BIT(20)984 #define VMX_VMCS_CTRL_PROC_EXEC_CR8_STORE_EXIT RT_BIT(20) 985 985 /** Use TPR shadow. */ 986 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_USE_TPR_SHADOW RT_BIT(21)986 #define VMX_VMCS_CTRL_PROC_EXEC_USE_TPR_SHADOW RT_BIT(21) 987 987 /** VM Exit when virtual nmi blocking is disabled. */ 988 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_NMI_WINDOW_EXIT RT_BIT(22)988 #define VMX_VMCS_CTRL_PROC_EXEC_NMI_WINDOW_EXIT RT_BIT(22) 989 989 /** VM Exit when executing a MOV DRx instruction. */ 990 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_MOV_DR_EXIT RT_BIT(23)990 #define VMX_VMCS_CTRL_PROC_EXEC_MOV_DR_EXIT RT_BIT(23) 991 991 /** VM Exit when executing IO instructions. */ 992 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_UNCOND_IO_EXIT RT_BIT(24)992 #define VMX_VMCS_CTRL_PROC_EXEC_UNCOND_IO_EXIT RT_BIT(24) 993 993 /** Use IO bitmaps. */ 994 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_USE_IO_BITMAPS RT_BIT(25)994 #define VMX_VMCS_CTRL_PROC_EXEC_USE_IO_BITMAPS RT_BIT(25) 995 995 /** Monitor trap flag. */ 996 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_MONITOR_TRAP_FLAG RT_BIT(27)996 #define VMX_VMCS_CTRL_PROC_EXEC_MONITOR_TRAP_FLAG RT_BIT(27) 997 997 /** Use MSR bitmaps. */ 998 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_USE_MSR_BITMAPS RT_BIT(28)998 #define VMX_VMCS_CTRL_PROC_EXEC_USE_MSR_BITMAPS RT_BIT(28) 999 999 /** VM Exit when executing the MONITOR instruction. */ 1000 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_MONITOR_EXIT RT_BIT(29)1000 #define VMX_VMCS_CTRL_PROC_EXEC_MONITOR_EXIT RT_BIT(29) 1001 1001 /** VM Exit when executing the PAUSE instruction. */ 1002 #define VMX_VMCS_CTRL_PROC_EXEC_ CONTROLS_PAUSE_EXIT RT_BIT(30)1002 #define VMX_VMCS_CTRL_PROC_EXEC_PAUSE_EXIT RT_BIT(30) 1003 1003 /** Determines whether the secondary processor based VM-execution controls are used. */ 1004 1004 #define VMX_VMCS_CTRL_PROC_EXEC_USE_SECONDARY_EXEC_CTRL RT_BIT(31) 1005 1005 /** @} */ 1006 1006 1007 /** @name VMX_VMCS_CTRL_PROC_EXEC _CONTROLS21007 /** @name VMX_VMCS_CTRL_PROC_EXEC2 1008 1008 * @{ 1009 1009 */ … … 1035 1035 1036 1036 1037 /** @name VMX_VMCS_CTRL_ENTRY _CONTROLS1037 /** @name VMX_VMCS_CTRL_ENTRY 1038 1038 * @{ 1039 1039 */ 1040 1040 /** 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) */ 1041 #define VMX_VMCS_CTRL_ENTRY_ CONTROLS_LOAD_DEBUG RT_BIT(2)1041 #define VMX_VMCS_CTRL_ENTRY_LOAD_DEBUG RT_BIT(2) 1042 1042 /** 64 bits guest mode. Must be 0 for CPUs that don't support AMD64. */ 1043 #define VMX_VMCS_CTRL_ENTRY_ CONTROLS_IA32E_MODE_GUEST RT_BIT(9)1043 #define VMX_VMCS_CTRL_ENTRY_IA32E_MODE_GUEST RT_BIT(9) 1044 1044 /** In SMM mode after VM-entry. */ 1045 #define VMX_VMCS_CTRL_ENTRY_ CONTROLS_ENTRY_SMM RT_BIT(10)1045 #define VMX_VMCS_CTRL_ENTRY_ENTRY_SMM RT_BIT(10) 1046 1046 /** Disable dual treatment of SMI and SMM; must be zero for VM-entry outside of SMM. */ 1047 #define VMX_VMCS_CTRL_ENTRY_ CONTROLS_DEACTIVATE_DUALMON RT_BIT(11)1047 #define VMX_VMCS_CTRL_ENTRY_DEACTIVATE_DUALMON RT_BIT(11) 1048 1048 /** This control determines whether the guest IA32_PERF_GLOBAL_CTRL MSR is loaded on VM entry. */ 1049 #define VMX_VMCS_CTRL_ENTRY_ CONTROLS_LOAD_GUEST_PERF_MSR RT_BIT(13)1049 #define VMX_VMCS_CTRL_ENTRY_LOAD_GUEST_PERF_MSR RT_BIT(13) 1050 1050 /** This control determines whether the guest IA32_PAT MSR is loaded on VM entry. */ 1051 #define VMX_VMCS_CTRL_ENTRY_ CONTROLS_LOAD_GUEST_PAT_MSR RT_BIT(14)1051 #define VMX_VMCS_CTRL_ENTRY_LOAD_GUEST_PAT_MSR RT_BIT(14) 1052 1052 /** This control determines whether the guest IA32_EFER MSR is loaded on VM entry. */ 1053 #define VMX_VMCS_CTRL_ENTRY_ CONTROLS_LOAD_GUEST_EFER_MSR RT_BIT(15)1054 /** @} */ 1055 1056 1057 /** @name VMX_VMCS_CTRL_EXIT _CONTROLS1053 #define VMX_VMCS_CTRL_ENTRY_LOAD_GUEST_EFER_MSR RT_BIT(15) 1054 /** @} */ 1055 1056 1057 /** @name VMX_VMCS_CTRL_EXIT 1058 1058 * @{ 1059 1059 */ 1060 1060 /** 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) */ 1061 #define VMX_VMCS_CTRL_EXIT_ CONTROLS_SAVE_DEBUG RT_BIT(2)1061 #define VMX_VMCS_CTRL_EXIT_SAVE_DEBUG RT_BIT(2) 1062 1062 /** Return to long mode after a VM-exit. */ 1063 #define VMX_VMCS_CTRL_EXIT_ CONTROLS_HOST_ADDR_SPACE_SIZE RT_BIT(9)1063 #define VMX_VMCS_CTRL_EXIT_HOST_ADDR_SPACE_SIZE RT_BIT(9) 1064 1064 /** This control determines whether the IA32_PERF_GLOBAL_CTRL MSR is loaded on VM exit. */ 1065 #define VMX_VMCS_CTRL_EXIT_ CONTROLS_LOAD_PERF_MSR RT_BIT(12)1065 #define VMX_VMCS_CTRL_EXIT_LOAD_PERF_MSR RT_BIT(12) 1066 1066 /** Acknowledge external interrupts with the irq controller if one caused a VM-exit. */ 1067 #define VMX_VMCS_CTRL_EXIT_ CONTROLS_ACK_EXT_INT RT_BIT(15)1067 #define VMX_VMCS_CTRL_EXIT_ACK_EXT_INT RT_BIT(15) 1068 1068 /** This control determines whether the guest IA32_PAT MSR is saved on VM exit. */ 1069 #define VMX_VMCS_CTRL_EXIT_ CONTROLS_SAVE_GUEST_PAT_MSR RT_BIT(18)1069 #define VMX_VMCS_CTRL_EXIT_SAVE_GUEST_PAT_MSR RT_BIT(18) 1070 1070 /** This control determines whether the host IA32_PAT MSR is loaded on VM exit. */ 1071 #define VMX_VMCS_CTRL_EXIT_ CONTROLS_LOAD_HOST_PAT_MSR RT_BIT(19)1071 #define VMX_VMCS_CTRL_EXIT_LOAD_HOST_PAT_MSR RT_BIT(19) 1072 1072 /** This control determines whether the guest IA32_EFER MSR is saved on VM exit. */ 1073 #define VMX_VMCS_CTRL_EXIT_ CONTROLS_SAVE_GUEST_EFER_MSR RT_BIT(20)1073 #define VMX_VMCS_CTRL_EXIT_SAVE_GUEST_EFER_MSR RT_BIT(20) 1074 1074 /** This control determines whether the host IA32_EFER MSR is loaded on VM exit. */ 1075 #define VMX_VMCS_CTRL_EXIT_ CONTROLS_LOAD_HOST_EFER_MSR RT_BIT(21)1075 #define VMX_VMCS_CTRL_EXIT_LOAD_HOST_EFER_MSR RT_BIT(21) 1076 1076 /** This control determines whether the value of the VMX preemption timer is 1077 1077 * saved on every VM exit. */ 1078 #define VMX_VMCS_CTRL_EXIT_ CONTROLS_SAVE_VMX_PREEMPT_TIMER RT_BIT(22)1078 #define VMX_VMCS_CTRL_EXIT_SAVE_VMX_PREEMPT_TIMER RT_BIT(22) 1079 1079 /** @} */ 1080 1080 -
trunk/include/VBox/vmm/hm_vmx.mac
r44528 r45947 61 61 %define VMX_VMCS_GUEST_DEBUGCTL_FULL 02802h 62 62 %define VMX_VMCS_GUEST_DEBUGCTL_HIGH 02803h 63 %define VMX_VMCS_CTRL_PIN_EXEC _CONTROLS04000h64 %define VMX_VMCS_CTRL_PROC_EXEC _CONTROLS04002h63 %define VMX_VMCS_CTRL_PIN_EXEC 04000h 64 %define VMX_VMCS_CTRL_PROC_EXEC 04002h 65 65 %define VMX_VMCS_CTRL_EXCEPTION_BITMAP 04004h 66 66 %define VMX_VMCS_CTRL_PAGEFAULT_ERROR_MASK 04006h 67 67 %define VMX_VMCS_CTRL_PAGEFAULT_ERROR_MATCH 04008h 68 68 %define VMX_VMCS_CTRL_CR3_TARGET_COUNT 0400Ah 69 %define VMX_VMCS_CTRL_EXIT _CONTROLS0400Ch69 %define VMX_VMCS_CTRL_EXIT 0400Ch 70 70 %define VMX_VMCS_CTRL_EXIT_MSR_STORE_COUNT 0400Eh 71 71 %define VMX_VMCS_CTRL_EXIT_MSR_LOAD_COUNT 04010h 72 %define VMX_VMCS_CTRL_ENTRY _CONTROLS04012h72 %define VMX_VMCS_CTRL_ENTRY 04012h 73 73 %define VMX_VMCS_CTRL_ENTRY_MSR_LOAD_COUNT 04014h 74 74 %define VMX_VMCS_CTRL_ENTRY_IRQ_INFO 04016h … … 119 119 %define VMX_VMCS_RO_IO_RIP 06408h 120 120 %define VMX_VMCS_GUEST_LINEAR_ADDR 0640Ah 121 %define VMX_VMCS64_GUEST_CR0 122 %define VMX_VMCS64_GUEST_CR3 123 %define VMX_VMCS64_GUEST_CR4 124 %define VMX_VMCS64_GUEST_ES_BASE 125 %define VMX_VMCS64_GUEST_CS_BASE 126 %define VMX_VMCS64_GUEST_SS_BASE 127 %define VMX_VMCS64_GUEST_DS_BASE 128 %define VMX_VMCS64_GUEST_FS_BASE 129 %define VMX_VMCS64_GUEST_GS_BASE 130 %define VMX_VMCS64_GUEST_LDTR_BASE 131 %define VMX_VMCS64_GUEST_TR_BASE 132 %define VMX_VMCS64_GUEST_GDTR_BASE 133 %define VMX_VMCS64_GUEST_IDTR_BASE 134 %define VMX_VMCS64_GUEST_DR7 135 %define VMX_VMCS64_GUEST_RSP 136 %define VMX_VMCS64_GUEST_RIP 137 %define VMX_VMCS64_GUEST_RFLAGS 121 %define VMX_VMCS64_GUEST_CR0 06800h 122 %define VMX_VMCS64_GUEST_CR3 06802h 123 %define VMX_VMCS64_GUEST_CR4 06804h 124 %define VMX_VMCS64_GUEST_ES_BASE 06806h 125 %define VMX_VMCS64_GUEST_CS_BASE 06808h 126 %define VMX_VMCS64_GUEST_SS_BASE 0680Ah 127 %define VMX_VMCS64_GUEST_DS_BASE 0680Ch 128 %define VMX_VMCS64_GUEST_FS_BASE 0680Eh 129 %define VMX_VMCS64_GUEST_GS_BASE 06810h 130 %define VMX_VMCS64_GUEST_LDTR_BASE 06812h 131 %define VMX_VMCS64_GUEST_TR_BASE 06814h 132 %define VMX_VMCS64_GUEST_GDTR_BASE 06816h 133 %define VMX_VMCS64_GUEST_IDTR_BASE 06818h 134 %define VMX_VMCS64_GUEST_DR7 0681Ah 135 %define VMX_VMCS64_GUEST_RSP 0681Ch 136 %define VMX_VMCS64_GUEST_RIP 0681Eh 137 %define VMX_VMCS64_GUEST_RFLAGS 06820h 138 138 %define VMX_VMCS_GUEST_DEBUG_EXCEPTIONS 06822h 139 %define VMX_VMCS64_GUEST_SYSENTER_ESP 140 %define VMX_VMCS64_GUEST_SYSENTER_EIP 139 %define VMX_VMCS64_GUEST_SYSENTER_ESP 06824h 140 %define VMX_VMCS64_GUEST_SYSENTER_EIP 06826h 141 141 %define VMX_VMCS_HOST_CR0 06C00h 142 142 %define VMX_VMCS_HOST_CR3 06C02h … … 152 152 %define VMX_VMCS_HOST_RIP 06C16h 153 153 154 %define VMX_VMCS_CTRL_EXIT_CONTROLS_HOST_AMD64 RT_BIT(9)
Note:
See TracChangeset
for help on using the changeset viewer.