2 #ifndef __KVM_X86_VMX_CAPS_H
3 #define __KVM_X86_VMX_CAPS_H
21 #define PT_MODE_SYSTEM 0
22 #define PT_MODE_HOST_GUEST 1
24 #define PMU_CAP_FW_WRITES (1ULL << 13)
25 #define PMU_CAP_LBR_FMT 0x3f
91 PIN_BASED_VMX_PREEMPTION_TIMER;
132 CPU_BASED_ACTIVATE_SECONDARY_CONTROLS;
138 CPU_BASED_ACTIVATE_TERTIARY_CONTROLS;
144 SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES;
150 SECONDARY_EXEC_ENABLE_EPT;
155 return !boot_cpu_has(X86_FEATURE_UMIP) &&
162 SECONDARY_EXEC_ENABLE_RDTSCP;
168 SECONDARY_EXEC_VIRTUALIZE_X2APIC_MODE;
174 SECONDARY_EXEC_ENABLE_VPID;
180 SECONDARY_EXEC_WBINVD_EXITING;
186 SECONDARY_EXEC_UNRESTRICTED_GUEST;
192 SECONDARY_EXEC_APIC_REGISTER_VIRT;
198 SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY;
204 SECONDARY_EXEC_PAUSE_LOOP_EXITING;
210 SECONDARY_EXEC_RDRAND_EXITING;
216 SECONDARY_EXEC_ENABLE_INVPCID;
222 SECONDARY_EXEC_ENABLE_VMFUNC;
232 SECONDARY_EXEC_SHADOW_VMCS;
238 SECONDARY_EXEC_ENCLS_EXITING;
244 SECONDARY_EXEC_RDSEED_EXITING;
255 SECONDARY_EXEC_ENABLE_XSAVES;
261 SECONDARY_EXEC_ENABLE_USR_WAIT_PAUSE;
267 SECONDARY_EXEC_TSC_SCALING;
273 SECONDARY_EXEC_BUS_LOCK_DETECTION;
326 if (ept_caps & VMX_EPT_1GB_PAGE_BIT)
328 if (ept_caps & VMX_EPT_2MB_PAGE_BIT)
395 return boot_cpu_has(X86_FEATURE_PEBS) &&
kvm_pmu_cap.pebs_ept;
401 SECONDARY_EXEC_NOTIFY_VM_EXITING;
static bool cpu_has_vmx_ept_ad_bits(void)
static bool cpu_has_vmx_rdseed(void)
static bool cpu_has_vmx_tpr_shadow(void)
static bool cpu_has_vmx_virtualize_apic_accesses(void)
static bool cpu_has_vmx_vmfunc(void)
static bool cpu_has_vmx_vpid(void)
#define PT_MODE_HOST_GUEST
static bool vmx_pt_mode_is_host_guest(void)
static bool cpu_has_vmx_ept_1g_page(void)
static bool cpu_has_vmx_unrestricted_guest(void)
static bool cpu_has_vmx_ept_execute_only(void)
static bool cpu_has_vmx_apic_register_virt(void)
static bool cpu_has_vmx_ept_2m_page(void)
static bool vmx_pebs_supported(void)
static bool cpu_has_vmx_mpx(void)
static bool cpu_has_vmx_invept_global(void)
static bool cpu_has_vmx_shadow_vmcs(void)
bool __read_mostly enable_ept_ad_bits
static bool cpu_has_vmx_virtualize_x2apic_mode(void)
static bool cpu_has_vmx_ept(void)
static bool cpu_has_vmx_virtual_intr_delivery(void)
static bool cpu_has_vmx_wbinvd_exit(void)
static bool cpu_has_vmx_xsaves(void)
static bool cpu_has_vmx_apicv(void)
static bool cpu_has_vmx_rdrand(void)
static bool cpu_has_load_ia32_efer(void)
static bool cpu_has_secondary_exec_ctrls(void)
static bool cpu_has_vmx_invept_context(void)
static bool vmx_umip_emulated(void)
bool __read_mostly enable_pml
static bool cpu_has_vmx_intel_pt(void)
static bool cpu_has_load_perf_global_ctrl(void)
static bool cpu_has_vmx_ept_4levels(void)
static bool vmx_pt_mode_is_system(void)
int __read_mostly pt_mode
static bool cpu_has_vmx_basic_inout(void)
static bool cpu_has_vmx_invvpid(void)
static bool cpu_has_vmx_invpcid(void)
static bool cpu_has_vmx_flexpriority(void)
static bool cpu_has_vmx_invvpid_individual_addr(void)
static bool cpu_has_vmx_pml(void)
static bool cpu_has_vmx_tsc_scaling(void)
static bool cpu_has_vmx_rdtscp(void)
static bool cpu_has_vmx_encls_vmexit(void)
static bool cpu_has_vmx_msr_bitmap(void)
struct vmcs_config vmcs_config __ro_after_init
static bool cpu_has_vmx_invvpid_global(void)
bool __read_mostly enable_ept
bool __read_mostly enable_vpid
static bool cpu_has_vmx_invvpid_single(void)
static bool cpu_has_vmx_preemption_timer(void)
static bool cpu_has_vmx_ept_mt_wb(void)
bool __read_mostly enable_unrestricted_guest
static bool cpu_has_notify_vmexit(void)
static bool cpu_has_virtual_nmis(void)
bool __read_mostly enable_ipiv
bool __read_mostly flexpriority_enabled
static bool cpu_has_vmx_posted_intr(void)
static bool cpu_has_vmx_ple(void)
static int ept_caps_to_lpage_level(u32 ept_caps)
static bool cpu_has_vmx_ept_5levels(void)
static bool cpu_need_tpr_shadow(struct kvm_vcpu *vcpu)
static bool cpu_has_tertiary_exec_ctrls(void)
static bool cpu_has_vmx_ipiv(void)
static bool cpu_has_vmx_waitpkg(void)
static bool cpu_has_vmx_bus_lock_detection(void)
u32 kvm_cpu_caps[NR_KVM_CPU_CAPS] __read_mostly
static bool lapic_in_kernel(struct kvm_vcpu *vcpu)
struct x86_pmu_capability __read_mostly kvm_pmu_cap
u64 cpu_based_3rd_exec_ctrl
u32 cpu_based_2nd_exec_ctrl
struct nested_vmx_msrs nested