@@ -298,69 +298,99 @@ extern u64 vmx_ept_vpid_cap;
#define VMX_TSC_MULTIPLIER_MAX 0xffffffffffffffffULL
#define cpu_has_wbinvd_exiting \
- (vmx_secondary_exec_control & SECONDARY_EXEC_WBINVD_EXITING)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_WBINVD_EXITING)
#define cpu_has_vmx_virtualize_apic_accesses \
- (vmx_secondary_exec_control & SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES)
#define cpu_has_vmx_tpr_shadow \
- (vmx_cpu_based_exec_control & CPU_BASED_TPR_SHADOW)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_cpu_based_exec_control & CPU_BASED_TPR_SHADOW)
#define cpu_has_vmx_vnmi \
- (vmx_pin_based_exec_control & PIN_BASED_VIRTUAL_NMIS)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_pin_based_exec_control & PIN_BASED_VIRTUAL_NMIS)
#define cpu_has_vmx_msr_bitmap \
- (vmx_cpu_based_exec_control & CPU_BASED_ACTIVATE_MSR_BITMAP)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_cpu_based_exec_control & CPU_BASED_ACTIVATE_MSR_BITMAP)
#define cpu_has_vmx_secondary_exec_control \
- (vmx_cpu_based_exec_control & CPU_BASED_ACTIVATE_SECONDARY_CONTROLS)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_cpu_based_exec_control & CPU_BASED_ACTIVATE_SECONDARY_CONTROLS)
#define cpu_has_vmx_tertiary_exec_control \
- (vmx_cpu_based_exec_control & CPU_BASED_ACTIVATE_TERTIARY_CONTROLS)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_cpu_based_exec_control & CPU_BASED_ACTIVATE_TERTIARY_CONTROLS)
#define cpu_has_vmx_ept \
- (vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_EPT)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_EPT)
#define cpu_has_vmx_dt_exiting \
- (vmx_secondary_exec_control & SECONDARY_EXEC_DESCRIPTOR_TABLE_EXITING)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_DESCRIPTOR_TABLE_EXITING)
#define cpu_has_vmx_rdtscp \
- (vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_RDTSCP)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_RDTSCP)
#define cpu_has_vmx_vpid \
- (vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_VPID)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_VPID)
#define cpu_has_monitor_trap_flag \
- (vmx_cpu_based_exec_control & CPU_BASED_MONITOR_TRAP_FLAG)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_cpu_based_exec_control & CPU_BASED_MONITOR_TRAP_FLAG)
#define cpu_has_vmx_pat \
- (vmx_vmentry_control & VM_ENTRY_LOAD_GUEST_PAT)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_vmentry_control & VM_ENTRY_LOAD_GUEST_PAT)
#define cpu_has_vmx_efer \
- (vmx_vmentry_control & VM_ENTRY_LOAD_GUEST_EFER)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_vmentry_control & VM_ENTRY_LOAD_GUEST_EFER)
#define cpu_has_vmx_unrestricted_guest \
- (vmx_secondary_exec_control & SECONDARY_EXEC_UNRESTRICTED_GUEST)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_UNRESTRICTED_GUEST)
#define vmx_unrestricted_guest(v) \
((v)->arch.hvm.vmx.secondary_exec_control & \
SECONDARY_EXEC_UNRESTRICTED_GUEST)
#define cpu_has_vmx_ple \
- (vmx_secondary_exec_control & SECONDARY_EXEC_PAUSE_LOOP_EXITING)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_PAUSE_LOOP_EXITING)
#define cpu_has_vmx_invpcid \
- (vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_INVPCID)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_INVPCID)
#define cpu_has_vmx_apic_reg_virt \
- (vmx_secondary_exec_control & SECONDARY_EXEC_APIC_REGISTER_VIRT)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_APIC_REGISTER_VIRT)
#define cpu_has_vmx_virtual_intr_delivery \
- (vmx_secondary_exec_control & SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY)
#define cpu_has_vmx_virtualize_x2apic_mode \
- (vmx_secondary_exec_control & SECONDARY_EXEC_VIRTUALIZE_X2APIC_MODE)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_VIRTUALIZE_X2APIC_MODE)
#define cpu_has_vmx_posted_intr_processing \
- (vmx_pin_based_exec_control & PIN_BASED_POSTED_INTERRUPT)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_pin_based_exec_control & PIN_BASED_POSTED_INTERRUPT)
#define cpu_has_vmx_vmcs_shadowing \
- (vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_VMCS_SHADOWING)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_VMCS_SHADOWING)
#define cpu_has_vmx_vmfunc \
- (vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_VM_FUNCTIONS)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_VM_FUNCTIONS)
#define cpu_has_vmx_virt_exceptions \
- (vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_VIRT_EXCEPTIONS)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_VIRT_EXCEPTIONS)
#define cpu_has_vmx_pml \
- (vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_PML)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_PML)
#define cpu_has_vmx_mpx \
- ((vmx_vmexit_control & VM_EXIT_CLEAR_BNDCFGS) && \
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ (vmx_vmexit_control & VM_EXIT_CLEAR_BNDCFGS) && \
(vmx_vmentry_control & VM_ENTRY_LOAD_BNDCFGS))
#define cpu_has_vmx_xsaves \
- (vmx_secondary_exec_control & SECONDARY_EXEC_XSAVES)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_XSAVES)
#define cpu_has_vmx_tsc_scaling \
- (vmx_secondary_exec_control & SECONDARY_EXEC_TSC_SCALING)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_TSC_SCALING)
#define cpu_has_vmx_bus_lock_detection \
- (vmx_secondary_exec_control & SECONDARY_EXEC_BUS_LOCK_DETECTION)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_BUS_LOCK_DETECTION)
#define cpu_has_vmx_notify_vm_exiting \
- (vmx_secondary_exec_control & SECONDARY_EXEC_NOTIFY_VM_EXITING)
+ (IS_ENABLED(CONFIG_INTEL_VMX) && \
+ vmx_secondary_exec_control & SECONDARY_EXEC_NOTIFY_VM_EXITING)
#define VMCS_RID_TYPE_MASK 0x80000000U