2 #ifndef __KVM_X86_VMX_NESTED_H
3 #define __KVM_X86_VMX_NESTED_H
30 u32 exit_intr_info,
unsigned long exit_qualification);
35 u32 vmx_instruction_info,
bool wr,
int len, gva_t *ret);
112 MSR_IA32_VMX_MISC_VMWRITE_SHADOW_RO_FIELDS;
123 CPU_BASED_MONITOR_TRAP_FLAG;
129 SECONDARY_EXEC_SHADOW_VMCS;
140 CPU_BASED_ACTIVATE_SECONDARY_CONTROLS) &&
147 PIN_BASED_VMX_PREEMPTION_TIMER;
214 VMX_VMFUNC_EPTP_SWITCHING);
225 VM_EXIT_SAVE_VMX_PREEMPTION_TIMER;
240 PIN_BASED_EXT_INTR_MASK;
254 return ((val & fixed1) | fixed0) == val;
264 SECONDARY_EXEC_UNRESTRICTED_GUEST &&
266 fixed0 &= ~(X86_CR0_PE | X86_CR0_PG);
289 #define nested_guest_cr4_valid nested_cr4_valid
290 #define nested_host_cr4_valid nested_cr4_valid
static bool nested_cpu_has_preemption_timer(struct vmcs12 *vmcs12)
void nested_mark_vmcs12_pages_dirty(struct kvm_vcpu *vcpu)
static bool nested_cpu_has_nmi_exiting(struct vmcs12 *vmcs12)
static bool nested_cpu_has_vmfunc(struct vmcs12 *vmcs12)
static bool nested_cpu_has_pml(struct vmcs12 *vmcs12)
static bool nested_cpu_has_virt_x2apic_mode(struct vmcs12 *vmcs12)
void nested_vmx_free_vcpu(struct kvm_vcpu *vcpu)
static bool nested_cpu_supports_monitor_trap_flag(struct kvm_vcpu *vcpu)
enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu, bool from_vmentry)
static bool nested_cpu_has_save_preemption_timer(struct vmcs12 *vmcs12)
static bool nested_cpu_has_zero_length_injection(struct kvm_vcpu *vcpu)
static bool nested_cpu_has_vid(struct vmcs12 *vmcs12)
static unsigned nested_cpu_vmx_misc_cr3_count(struct kvm_vcpu *vcpu)
bool nested_vmx_reflect_vmexit(struct kvm_vcpu *vcpu)
static bool nested_cpu_has_vmwrite_any_field(struct kvm_vcpu *vcpu)
static bool nested_exit_on_intr(struct kvm_vcpu *vcpu)
static int vmx_has_valid_vmcs12(struct kvm_vcpu *vcpu)
static bool nested_cpu_has_posted_intr(struct vmcs12 *vmcs12)
static unsigned long nested_read_cr4(struct vmcs12 *fields)
void nested_vmx_hardware_unsetup(void)
void vmx_leave_nested(struct kvm_vcpu *vcpu)
static struct vmcs12 * get_vmcs12(struct kvm_vcpu *vcpu)
struct kvm_x86_nested_ops vmx_nested_ops
__init int nested_vmx_hardware_setup(int(*exit_handlers[])(struct kvm_vcpu *))
static struct vmcs12 * get_shadow_vmcs12(struct kvm_vcpu *vcpu)
static bool nested_exit_on_nmi(struct kvm_vcpu *vcpu)
static bool nested_ept_ad_enabled(struct kvm_vcpu *vcpu)
static bool nested_cpu_has_xsaves(struct vmcs12 *vmcs12)
static unsigned long nested_read_cr0(struct vmcs12 *fields)
int get_vmx_mem_address(struct kvm_vcpu *vcpu, unsigned long exit_qualification, u32 vmx_instruction_info, bool wr, int len, gva_t *ret)
static bool nested_cpu_has_vpid(struct vmcs12 *vmcs12)
bool nested_vmx_check_io_bitmaps(struct kvm_vcpu *vcpu, unsigned int port, int size)
static bool nested_cr4_valid(struct kvm_vcpu *vcpu, unsigned long val)
void nested_vmx_setup_ctls_msrs(struct vmcs_config *vmcs_conf, u32 ept_caps)
static u16 nested_get_vpid02(struct kvm_vcpu *vcpu)
static bool nested_cpu_has2(struct vmcs12 *vmcs12, u32 bit)
void nested_sync_vmcs12_to_shadow(struct kvm_vcpu *vcpu)
static bool fixed_bits_valid(u64 val, u64 fixed0, u64 fixed1)
static bool nested_cpu_has_eptp_switching(struct vmcs12 *vmcs12)
static unsigned long nested_ept_get_eptp(struct kvm_vcpu *vcpu)
static bool nested_cpu_has_encls_exit(struct vmcs12 *vmcs12)
int vmx_get_vmx_msr(struct nested_vmx_msrs *msrs, u32 msr_index, u64 *pdata)
static int nested_cpu_has_mtf(struct vmcs12 *vmcs12)
void nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 vm_exit_reason, u32 exit_intr_info, unsigned long exit_qualification)
void nested_vmx_set_vmcs_shadowing_bitmap(void)
int vmx_set_vmx_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data)
static bool nested_cpu_has_virtual_nmis(struct vmcs12 *vmcs12)
static bool nested_cpu_has_apic_reg_virt(struct vmcs12 *vmcs12)
static bool nested_cpu_has(struct vmcs12 *vmcs12, u32 bit)
static int nested_cpu_has_ept(struct vmcs12 *vmcs12)
static bool nested_cpu_has_shadow_vmcs(struct vmcs12 *vmcs12)
@ NVMX_VMENTRY_KVM_INTERNAL_ERROR
static bool nested_cpu_has_vmx_shadow_vmcs(struct kvm_vcpu *vcpu)
static bool nested_guest_cr0_valid(struct kvm_vcpu *vcpu, unsigned long val)
static bool nested_host_cr0_valid(struct kvm_vcpu *vcpu, unsigned long val)
struct vmcs12 * cached_shadow_vmcs12
struct nested_vmx_msrs msrs
struct vmcs12 * cached_vmcs12
natural_width cr0_read_shadow
u32 cpu_based_vm_exec_control
u32 secondary_vm_exec_control
natural_width cr0_guest_host_mask
natural_width cr4_guest_host_mask
u32 pin_based_vm_exec_control
natural_width cr4_read_shadow
static bool nested_vmx_is_evmptr12_set(struct vcpu_vmx *vmx)
static __always_inline struct vcpu_vmx * to_vmx(struct kvm_vcpu *vcpu)
bool __kvm_is_valid_cr4(struct kvm_vcpu *vcpu, unsigned long cr4)