current_evmcs
current_evmcs->hv_clean_fields |=
current_evmcs->hv_vp_id = kvm_hv_get_vpindex(vcpu);
if (current_evmcs->hv_enlightenments_control.nested_flush_hypercall)
*(u64 *)((char *)current_evmcs + offset) = value;
current_evmcs->hv_clean_fields &= ~clean_field;
*(u32 *)((char *)current_evmcs + offset) = value;
current_evmcs->hv_clean_fields &= ~clean_field;
*(u16 *)((char *)current_evmcs + offset) = value;
current_evmcs->hv_clean_fields &= ~clean_field;
return *(u64 *)((char *)current_evmcs + offset);
return *(u32 *)((char *)current_evmcs + offset);
return *(u16 *)((char *)current_evmcs + offset);
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_gs_limit = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_ldtr_limit = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_tr_limit = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_gdtr_limit = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_idtr_limit = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_es_ar_bytes = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_cs_ar_bytes = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_ss_ar_bytes = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_ds_ar_bytes = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_fs_ar_bytes = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_gs_ar_bytes = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_ldtr_ar_bytes = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_tr_ar_bytes = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_activity_state = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->guest_sysenter_cs = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->vm_instruction_error = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE;
current_evmcs->vm_exit_reason = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE;
current_evmcs->vm_exit_intr_info = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE;
current_evmcs->vm_exit_intr_error_code = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE;
current_evmcs->idt_vectoring_info_field = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE;
current_evmcs->idt_vectoring_error_code = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE;
current_evmcs->vm_exit_instruction_len = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE;
current_evmcs->vmx_instruction_info = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE;
current_evmcs->page_fault_error_code_mask = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
current_evmcs->page_fault_error_code_match = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
current_evmcs->cr3_target_count = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
current_evmcs->vm_exit_msr_store_count = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
current_evmcs->vm_exit_msr_load_count = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
current_evmcs->vm_entry_msr_load_count = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
current_evmcs->host_es_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->host_cs_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->host_ss_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->host_ds_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->host_fs_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->host_gs_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->host_tr_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->guest_es_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_cs_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_ss_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_ds_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_fs_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_gs_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_ldtr_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_tr_selector = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->virtual_processor_id = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_XLAT;
current_evmcs->host_ia32_perf_global_ctrl = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->guest_ia32_perf_global_ctrl = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->encls_exiting_bitmap = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2;
current_evmcs->tsc_multiplier = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2;
current_evmcs->hv_clean_fields = 0;
((uint64_t)¤t_evmcs->host_rsp),
((uint64_t)¤t_evmcs->host_rip)
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER;
((uint64_t)¤t_evmcs->host_rsp),
((uint64_t)¤t_evmcs->host_rip)
extern struct hv_enlightened_vmcs *current_evmcs;
current_evmcs = vmcs;
current_evmcs->revision_id = EVMCS_VERSION;
*value = current_evmcs->guest_rip;
*value = current_evmcs->guest_rsp;
*value = current_evmcs->guest_rflags;
*value = current_evmcs->host_ia32_pat;
*value = current_evmcs->host_ia32_efer;
*value = current_evmcs->host_cr0;
*value = current_evmcs->host_cr3;
*value = current_evmcs->host_cr4;
*value = current_evmcs->host_ia32_sysenter_esp;
*value = current_evmcs->host_ia32_sysenter_eip;
*value = current_evmcs->host_rip;
*value = current_evmcs->io_bitmap_a;
*value = current_evmcs->io_bitmap_b;
*value = current_evmcs->msr_bitmap;
*value = current_evmcs->guest_es_base;
*value = current_evmcs->guest_cs_base;
*value = current_evmcs->guest_ss_base;
*value = current_evmcs->guest_ds_base;
*value = current_evmcs->guest_fs_base;
*value = current_evmcs->guest_gs_base;
*value = current_evmcs->guest_ldtr_base;
*value = current_evmcs->guest_tr_base;
*value = current_evmcs->guest_gdtr_base;
*value = current_evmcs->guest_idtr_base;
*value = current_evmcs->tsc_offset;
*value = current_evmcs->virtual_apic_page_addr;
*value = current_evmcs->vmcs_link_pointer;
*value = current_evmcs->guest_ia32_debugctl;
*value = current_evmcs->guest_ia32_pat;
*value = current_evmcs->guest_ia32_efer;
*value = current_evmcs->guest_pdptr0;
*value = current_evmcs->guest_pdptr1;
*value = current_evmcs->guest_pdptr2;
*value = current_evmcs->guest_pdptr3;
*value = current_evmcs->guest_pending_dbg_exceptions;
*value = current_evmcs->guest_sysenter_esp;
*value = current_evmcs->guest_sysenter_eip;
*value = current_evmcs->cr0_guest_host_mask;
*value = current_evmcs->cr4_guest_host_mask;
*value = current_evmcs->cr0_read_shadow;
*value = current_evmcs->cr4_read_shadow;
*value = current_evmcs->guest_cr0;
*value = current_evmcs->guest_cr3;
*value = current_evmcs->guest_cr4;
*value = current_evmcs->guest_dr7;
*value = current_evmcs->host_fs_base;
*value = current_evmcs->host_gs_base;
*value = current_evmcs->host_tr_base;
*value = current_evmcs->host_gdtr_base;
*value = current_evmcs->host_idtr_base;
*value = current_evmcs->host_rsp;
*value = current_evmcs->ept_pointer;
*value = current_evmcs->guest_bndcfgs;
*value = current_evmcs->xss_exit_bitmap;
*value = current_evmcs->guest_physical_address;
*value = current_evmcs->exit_qualification;
*value = current_evmcs->guest_linear_address;
*value = current_evmcs->vm_exit_msr_store_addr;
*value = current_evmcs->vm_exit_msr_load_addr;
*value = current_evmcs->vm_entry_msr_load_addr;
*value = current_evmcs->cr3_target_value0;
*value = current_evmcs->cr3_target_value1;
*value = current_evmcs->cr3_target_value2;
*value = current_evmcs->cr3_target_value3;
*value = current_evmcs->tpr_threshold;
*value = current_evmcs->guest_interruptibility_info;
*value = current_evmcs->cpu_based_vm_exec_control;
*value = current_evmcs->exception_bitmap;
*value = current_evmcs->vm_entry_controls;
*value = current_evmcs->vm_entry_intr_info_field;
*value = current_evmcs->vm_entry_exception_error_code;
*value = current_evmcs->vm_entry_instruction_len;
*value = current_evmcs->host_ia32_sysenter_cs;
*value = current_evmcs->pin_based_vm_exec_control;
*value = current_evmcs->vm_exit_controls;
*value = current_evmcs->secondary_vm_exec_control;
*value = current_evmcs->guest_es_limit;
*value = current_evmcs->guest_cs_limit;
*value = current_evmcs->guest_ss_limit;
*value = current_evmcs->guest_ds_limit;
*value = current_evmcs->guest_fs_limit;
*value = current_evmcs->guest_gs_limit;
*value = current_evmcs->guest_ldtr_limit;
*value = current_evmcs->guest_tr_limit;
*value = current_evmcs->guest_gdtr_limit;
*value = current_evmcs->guest_idtr_limit;
*value = current_evmcs->guest_es_ar_bytes;
*value = current_evmcs->guest_cs_ar_bytes;
*value = current_evmcs->guest_ss_ar_bytes;
*value = current_evmcs->guest_ds_ar_bytes;
*value = current_evmcs->guest_fs_ar_bytes;
*value = current_evmcs->guest_gs_ar_bytes;
*value = current_evmcs->guest_ldtr_ar_bytes;
*value = current_evmcs->guest_tr_ar_bytes;
*value = current_evmcs->guest_activity_state;
*value = current_evmcs->guest_sysenter_cs;
*value = current_evmcs->vm_instruction_error;
*value = current_evmcs->vm_exit_reason;
*value = current_evmcs->vm_exit_intr_info;
*value = current_evmcs->vm_exit_intr_error_code;
*value = current_evmcs->idt_vectoring_info_field;
*value = current_evmcs->idt_vectoring_error_code;
*value = current_evmcs->vm_exit_instruction_len;
*value = current_evmcs->vmx_instruction_info;
*value = current_evmcs->page_fault_error_code_mask;
*value = current_evmcs->page_fault_error_code_match;
*value = current_evmcs->cr3_target_count;
*value = current_evmcs->vm_exit_msr_store_count;
*value = current_evmcs->vm_exit_msr_load_count;
*value = current_evmcs->vm_entry_msr_load_count;
*value = current_evmcs->host_es_selector;
*value = current_evmcs->host_cs_selector;
*value = current_evmcs->host_ss_selector;
*value = current_evmcs->host_ds_selector;
*value = current_evmcs->host_fs_selector;
*value = current_evmcs->host_gs_selector;
*value = current_evmcs->host_tr_selector;
*value = current_evmcs->guest_es_selector;
*value = current_evmcs->guest_cs_selector;
*value = current_evmcs->guest_ss_selector;
*value = current_evmcs->guest_ds_selector;
*value = current_evmcs->guest_fs_selector;
*value = current_evmcs->guest_gs_selector;
*value = current_evmcs->guest_ldtr_selector;
*value = current_evmcs->guest_tr_selector;
*value = current_evmcs->virtual_processor_id;
*value = current_evmcs->host_ia32_perf_global_ctrl;
*value = current_evmcs->guest_ia32_perf_global_ctrl;
*value = current_evmcs->encls_exiting_bitmap;
*value = current_evmcs->tsc_multiplier;
current_evmcs->guest_rip = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE;
current_evmcs->guest_rsp = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_BASIC;
current_evmcs->guest_rflags = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_BASIC;
current_evmcs->host_ia32_pat = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->host_ia32_efer = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->host_cr0 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->host_cr3 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->host_cr4 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->host_ia32_sysenter_esp = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->host_ia32_sysenter_eip = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->host_rip = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->io_bitmap_a = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_IO_BITMAP;
current_evmcs->io_bitmap_b = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_IO_BITMAP;
current_evmcs->msr_bitmap = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_MSR_BITMAP;
current_evmcs->guest_es_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_cs_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_ss_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_ds_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_fs_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_gs_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_ldtr_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_tr_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_gdtr_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_idtr_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->tsc_offset = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2;
current_evmcs->virtual_apic_page_addr = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2;
current_evmcs->vmcs_link_pointer = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->guest_ia32_debugctl = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->guest_ia32_pat = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->guest_ia32_efer = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->guest_pdptr0 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->guest_pdptr1 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->guest_pdptr2 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->guest_pdptr3 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->guest_pending_dbg_exceptions = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->guest_sysenter_esp = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->guest_sysenter_eip = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->cr0_guest_host_mask = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR;
current_evmcs->cr4_guest_host_mask = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR;
current_evmcs->cr0_read_shadow = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR;
current_evmcs->cr4_read_shadow = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR;
current_evmcs->guest_cr0 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR;
current_evmcs->guest_cr3 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR;
current_evmcs->guest_cr4 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR;
current_evmcs->guest_dr7 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR;
current_evmcs->host_fs_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER;
current_evmcs->host_gs_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER;
current_evmcs->host_tr_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER;
current_evmcs->host_gdtr_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER;
current_evmcs->host_idtr_base = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER;
current_evmcs->host_rsp = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER;
current_evmcs->ept_pointer = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_XLAT;
current_evmcs->guest_bndcfgs = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1;
current_evmcs->xss_exit_bitmap = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2;
current_evmcs->guest_physical_address = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE;
current_evmcs->exit_qualification = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE;
current_evmcs->guest_linear_address = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE;
current_evmcs->vm_exit_msr_store_addr = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
current_evmcs->vm_exit_msr_load_addr = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
current_evmcs->vm_entry_msr_load_addr = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
current_evmcs->cr3_target_value0 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
current_evmcs->cr3_target_value1 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
current_evmcs->cr3_target_value2 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
current_evmcs->cr3_target_value3 = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
current_evmcs->tpr_threshold = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE;
current_evmcs->guest_interruptibility_info = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_BASIC;
current_evmcs->cpu_based_vm_exec_control = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_PROC;
current_evmcs->exception_bitmap = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_EXCPN;
current_evmcs->vm_entry_controls = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_ENTRY;
current_evmcs->vm_entry_intr_info_field = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_EVENT;
current_evmcs->vm_entry_exception_error_code = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_EVENT;
current_evmcs->vm_entry_instruction_len = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_EVENT;
current_evmcs->host_ia32_sysenter_cs = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1;
current_evmcs->pin_based_vm_exec_control = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP1;
current_evmcs->vm_exit_controls = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP1;
current_evmcs->secondary_vm_exec_control = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP1;
current_evmcs->guest_es_limit = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_cs_limit = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_ss_limit = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_ds_limit = value;
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2;
current_evmcs->guest_fs_limit = value;
struct hv_enlightened_vmcs *current_evmcs;
current_evmcs->revision_id = -1u;
current_evmcs->revision_id = EVMCS_VERSION;
current_evmcs->partition_assist_page = hv_pages->partition_assist_gpa;
current_evmcs->hv_enlightenments_control.nested_flush_hypercall = 1;
current_evmcs->hv_vm_id = 1;
current_evmcs->hv_vp_id = 1;
current_evmcs->guest_rip += 3; /* vmcall */
current_evmcs->guest_rip += 2; /* rdmsr */
current_evmcs->hv_enlightenments_control.msr_bitmap = 1;
current_evmcs->guest_rip += 2; /* rdmsr */
current_evmcs->hv_clean_fields |= HV_VMX_ENLIGHTENED_CLEAN_FIELD_MSR_BITMAP;
current_evmcs->guest_rip += 3; /* vmcall */
current_evmcs->hv_clean_fields &= ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_MSR_BITMAP;
current_evmcs->guest_rip += 2; /* rdmsr */
current_evmcs->guest_rip += 2; /* rdmsr */