9 #define EVMCS1_OFFSET(x) offsetof(struct hv_enlightened_vmcs, x)
10 #define EVMCS1_FIELD(number, name, clean_field)[ROL16(number, 6)] = \
11 {EVMCS1_OFFSET(name), clean_field}
16 HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
18 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_BASIC),
20 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_BASIC),
22 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
24 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
25 EVMCS1_FIELD(HOST_IA32_PERF_GLOBAL_CTRL, host_ia32_perf_global_ctrl,
26 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
28 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
30 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
32 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
33 EVMCS1_FIELD(HOST_IA32_SYSENTER_ESP, host_ia32_sysenter_esp,
34 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
35 EVMCS1_FIELD(HOST_IA32_SYSENTER_EIP, host_ia32_sysenter_eip,
36 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
38 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
40 HV_VMX_ENLIGHTENED_CLEAN_FIELD_IO_BITMAP),
42 HV_VMX_ENLIGHTENED_CLEAN_FIELD_IO_BITMAP),
44 HV_VMX_ENLIGHTENED_CLEAN_FIELD_MSR_BITMAP),
46 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
48 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
50 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
52 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
54 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
56 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
58 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
60 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
62 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
64 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
66 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2),
67 EVMCS1_FIELD(VIRTUAL_APIC_PAGE_ADDR, virtual_apic_page_addr,
68 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2),
70 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
72 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
74 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
76 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
77 EVMCS1_FIELD(GUEST_IA32_PERF_GLOBAL_CTRL, guest_ia32_perf_global_ctrl,
78 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
80 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
82 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
84 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
86 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
87 EVMCS1_FIELD(GUEST_PENDING_DBG_EXCEPTIONS, guest_pending_dbg_exceptions,
88 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
90 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
92 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
94 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
96 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
98 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
100 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
102 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
104 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
106 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
108 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
110 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER),
112 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER),
114 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER),
116 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER),
118 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER),
120 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER),
122 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_XLAT),
124 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
126 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2),
127 EVMCS1_FIELD(ENCLS_EXITING_BITMAP, encls_exiting_bitmap,
128 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2),
130 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2),
151 EVMCS1_FIELD(GUEST_PHYSICAL_ADDRESS, guest_physical_address,
152 HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
154 HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
167 EVMCS1_FIELD(GUEST_LINEAR_ADDRESS, guest_linear_address,
168 HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
175 EVMCS1_FIELD(VM_EXIT_MSR_STORE_ADDR, vm_exit_msr_store_addr,
176 HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL),
177 EVMCS1_FIELD(VM_EXIT_MSR_LOAD_ADDR, vm_exit_msr_load_addr,
178 HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL),
179 EVMCS1_FIELD(VM_ENTRY_MSR_LOAD_ADDR, vm_entry_msr_load_addr,
180 HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL),
184 HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
185 EVMCS1_FIELD(GUEST_INTERRUPTIBILITY_INFO, guest_interruptibility_info,
186 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_BASIC),
187 EVMCS1_FIELD(CPU_BASED_VM_EXEC_CONTROL, cpu_based_vm_exec_control,
188 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_PROC),
190 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_EXCPN),
192 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_ENTRY),
193 EVMCS1_FIELD(VM_ENTRY_INTR_INFO_FIELD, vm_entry_intr_info_field,
194 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_EVENT),
196 vm_entry_exception_error_code,
197 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_EVENT),
198 EVMCS1_FIELD(VM_ENTRY_INSTRUCTION_LEN, vm_entry_instruction_len,
199 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_EVENT),
200 EVMCS1_FIELD(HOST_IA32_SYSENTER_CS, host_ia32_sysenter_cs,
201 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
202 EVMCS1_FIELD(PIN_BASED_VM_EXEC_CONTROL, pin_based_vm_exec_control,
203 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP1),
205 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP1),
206 EVMCS1_FIELD(SECONDARY_VM_EXEC_CONTROL, secondary_vm_exec_control,
207 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP1),
209 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
211 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
213 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
215 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
217 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
219 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
221 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
223 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
225 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
227 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
229 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
231 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
233 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
235 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
237 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
239 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
241 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
243 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
244 EVMCS1_FIELD(GUEST_ACTIVITY_STATE, guest_activity_state,
245 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
247 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
250 EVMCS1_FIELD(VM_INSTRUCTION_ERROR, vm_instruction_error,
251 HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
253 HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
255 HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
256 EVMCS1_FIELD(VM_EXIT_INTR_ERROR_CODE, vm_exit_intr_error_code,
257 HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
258 EVMCS1_FIELD(IDT_VECTORING_INFO_FIELD, idt_vectoring_info_field,
259 HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
260 EVMCS1_FIELD(IDT_VECTORING_ERROR_CODE, idt_vectoring_error_code,
261 HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
262 EVMCS1_FIELD(VM_EXIT_INSTRUCTION_LEN, vm_exit_instruction_len,
263 HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
264 EVMCS1_FIELD(VMX_INSTRUCTION_INFO, vmx_instruction_info,
265 HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
268 EVMCS1_FIELD(PAGE_FAULT_ERROR_CODE_MASK, page_fault_error_code_mask,
269 HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL),
270 EVMCS1_FIELD(PAGE_FAULT_ERROR_CODE_MATCH, page_fault_error_code_match,
271 HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL),
273 HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL),
274 EVMCS1_FIELD(VM_EXIT_MSR_STORE_COUNT, vm_exit_msr_store_count,
275 HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL),
276 EVMCS1_FIELD(VM_EXIT_MSR_LOAD_COUNT, vm_exit_msr_load_count,
277 HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL),
278 EVMCS1_FIELD(VM_ENTRY_MSR_LOAD_COUNT, vm_entry_msr_load_count,
279 HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL),
283 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
285 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
287 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
289 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
291 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
293 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
295 HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
297 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
299 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
301 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
303 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
305 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
307 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
309 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
311 HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
312 EVMCS1_FIELD(VIRTUAL_PROCESSOR_ID, virtual_processor_id,
313 HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_XLAT),
const unsigned int nr_evmcs_1_fields
#define EVMCS1_FIELD(number, name, clean_field)
const struct evmcs_field vmcs_field_to_evmcs_1[]