linux/arch/x86/include/asm/vmxfeatures.h

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_VMXFEATURES_H
#define _ASM_X86_VMXFEATURES_H

/*
 * Defines VMX CPU feature bits
 */
#define NVMXINTS

/*
 * Note: If the comment begins with a quoted string, that string is used
 * in /proc/cpuinfo instead of the macro name.  Otherwise, this feature bit
 * is not displayed in /proc/cpuinfo at all.
 */

/* Pin-Based VM-Execution Controls, EPT/VPID, APIC and VM-Functions, word 0 */
#define VMX_FEATURE_INTR_EXITING
#define VMX_FEATURE_NMI_EXITING
#define VMX_FEATURE_VIRTUAL_NMIS
#define VMX_FEATURE_PREEMPTION_TIMER
#define VMX_FEATURE_POSTED_INTR

/* EPT/VPID features, scattered to bits 16-23 */
#define VMX_FEATURE_INVVPID
#define VMX_FEATURE_EPT_EXECUTE_ONLY
#define VMX_FEATURE_EPT_AD
#define VMX_FEATURE_EPT_1GB
#define VMX_FEATURE_EPT_5LEVEL

/* Aggregated APIC features 24-27 */
#define VMX_FEATURE_FLEXPRIORITY
#define VMX_FEATURE_APICV

/* VM-Functions, shifted to bits 28-31 */
#define VMX_FEATURE_EPTP_SWITCHING

/* Primary Processor-Based VM-Execution Controls, word 1 */
#define VMX_FEATURE_INTR_WINDOW_EXITING
#define VMX_FEATURE_USE_TSC_OFFSETTING
#define VMX_FEATURE_HLT_EXITING
#define VMX_FEATURE_INVLPG_EXITING
#define VMX_FEATURE_MWAIT_EXITING
#define VMX_FEATURE_RDPMC_EXITING
#define VMX_FEATURE_RDTSC_EXITING
#define VMX_FEATURE_CR3_LOAD_EXITING
#define VMX_FEATURE_CR3_STORE_EXITING
#define VMX_FEATURE_TERTIARY_CONTROLS
#define VMX_FEATURE_CR8_LOAD_EXITING
#define VMX_FEATURE_CR8_STORE_EXITING
#define VMX_FEATURE_VIRTUAL_TPR
#define VMX_FEATURE_NMI_WINDOW_EXITING
#define VMX_FEATURE_MOV_DR_EXITING
#define VMX_FEATURE_UNCOND_IO_EXITING
#define VMX_FEATURE_USE_IO_BITMAPS
#define VMX_FEATURE_MONITOR_TRAP_FLAG
#define VMX_FEATURE_USE_MSR_BITMAPS
#define VMX_FEATURE_MONITOR_EXITING
#define VMX_FEATURE_PAUSE_EXITING
#define VMX_FEATURE_SEC_CONTROLS

/* Secondary Processor-Based VM-Execution Controls, word 2 */
#define VMX_FEATURE_VIRT_APIC_ACCESSES
#define VMX_FEATURE_EPT
#define VMX_FEATURE_DESC_EXITING
#define VMX_FEATURE_RDTSCP
#define VMX_FEATURE_VIRTUAL_X2APIC
#define VMX_FEATURE_VPID
#define VMX_FEATURE_WBINVD_EXITING
#define VMX_FEATURE_UNRESTRICTED_GUEST
#define VMX_FEATURE_APIC_REGISTER_VIRT
#define VMX_FEATURE_VIRT_INTR_DELIVERY
#define VMX_FEATURE_PAUSE_LOOP_EXITING
#define VMX_FEATURE_RDRAND_EXITING
#define VMX_FEATURE_INVPCID
#define VMX_FEATURE_VMFUNC
#define VMX_FEATURE_SHADOW_VMCS
#define VMX_FEATURE_ENCLS_EXITING
#define VMX_FEATURE_RDSEED_EXITING
#define VMX_FEATURE_PAGE_MOD_LOGGING
#define VMX_FEATURE_EPT_VIOLATION_VE
#define VMX_FEATURE_PT_CONCEAL_VMX
#define VMX_FEATURE_XSAVES
#define VMX_FEATURE_MODE_BASED_EPT_EXEC
#define VMX_FEATURE_PT_USE_GPA
#define VMX_FEATURE_TSC_SCALING
#define VMX_FEATURE_USR_WAIT_PAUSE
#define VMX_FEATURE_ENCLV_EXITING
#define VMX_FEATURE_BUS_LOCK_DETECTION
#define VMX_FEATURE_NOTIFY_VM_EXITING

/* Tertiary Processor-Based VM-Execution Controls, word 3 */
#define VMX_FEATURE_IPI_VIRT
#endif /* _ASM_X86_VMXFEATURES_H */