mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-04-13 09:59:31 +00:00
x86/cpufeatures: Add {REQUIRED,DISABLED} feature configs
Required and disabled feature masks completely rely on build configs, i.e., once a build config is fixed, so are the feature masks. To prepare for auto-generating the <asm/cpufeaturemasks.h> header with required and disabled feature masks based on a build config, add feature Kconfig items: - X86_REQUIRED_FEATURE_x - X86_DISABLED_FEATURE_x each of which may be set to "y" if and only if its preconditions from current build config are met. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com> Signed-off-by: Xin Li (Intel) <xin@zytor.com> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://lore.kernel.org/r/20250228082338.73859-3-xin@zytor.com
This commit is contained in:
parent
f666c92090
commit
3d37d9396e
2 changed files with 203 additions and 0 deletions
|
@ -3130,4 +3130,6 @@ config HAVE_ATOMIC_IOMAP
|
|||
|
||||
source "arch/x86/kvm/Kconfig"
|
||||
|
||||
source "arch/x86/Kconfig.cpufeatures"
|
||||
|
||||
source "arch/x86/Kconfig.assembler"
|
||||
|
|
201
arch/x86/Kconfig.cpufeatures
Normal file
201
arch/x86/Kconfig.cpufeatures
Normal file
|
@ -0,0 +1,201 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
#
|
||||
# x86 feature bits (see arch/x86/include/asm/cpufeatures.h) that are
|
||||
# either REQUIRED to be enabled, or DISABLED (always ignored) for this
|
||||
# particular compile-time configuration. The tests for these features
|
||||
# are turned into compile-time constants via the generated
|
||||
# <asm/cpufeaturemasks.h>.
|
||||
#
|
||||
# The naming of these variables *must* match asm/cpufeatures.h, e.g.,
|
||||
# X86_FEATURE_ALWAYS <==> X86_REQUIRED_FEATURE_ALWAYS
|
||||
# X86_FEATURE_FRED <==> X86_DISABLED_FEATURE_FRED
|
||||
#
|
||||
# And these REQUIRED and DISABLED config options are manipulated in an
|
||||
# AWK script as the following example:
|
||||
#
|
||||
# +----------------------+
|
||||
# | X86_FRED = y ? |
|
||||
# +----------------------+
|
||||
# / \
|
||||
# Y / \ N
|
||||
# +-------------------------------------+ +-------------------------------+
|
||||
# | X86_DISABLED_FEATURE_FRED undefined | | X86_DISABLED_FEATURE_FRED = y |
|
||||
# +-------------------------------------+ +-------------------------------+
|
||||
# |
|
||||
# |
|
||||
# +-------------------------------------------+ |
|
||||
# | X86_FEATURE_FRED: feature word 12, bit 17 | ---->|
|
||||
# +-------------------------------------------+ |
|
||||
# |
|
||||
# |
|
||||
# +-------------------------------+
|
||||
# | set bit 17 of DISABLED_MASK12 |
|
||||
# +-------------------------------+
|
||||
#
|
||||
|
||||
config X86_REQUIRED_FEATURE_ALWAYS
|
||||
def_bool y
|
||||
|
||||
config X86_REQUIRED_FEATURE_NOPL
|
||||
def_bool y
|
||||
depends on X86_64 || X86_P6_NOP
|
||||
|
||||
config X86_REQUIRED_FEATURE_CX8
|
||||
def_bool y
|
||||
depends on X86_CX8
|
||||
|
||||
# this should be set for all -march=.. options where the compiler
|
||||
# generates cmov.
|
||||
config X86_REQUIRED_FEATURE_CMOV
|
||||
def_bool y
|
||||
depends on X86_CMOV
|
||||
|
||||
# this should be set for all -march= options where the compiler
|
||||
# generates movbe.
|
||||
config X86_REQUIRED_FEATURE_MOVBE
|
||||
def_bool y
|
||||
depends on MATOM
|
||||
|
||||
config X86_REQUIRED_FEATURE_CPUID
|
||||
def_bool y
|
||||
depends on X86_64
|
||||
|
||||
config X86_REQUIRED_FEATURE_UP
|
||||
def_bool y
|
||||
depends on !SMP
|
||||
|
||||
config X86_REQUIRED_FEATURE_FPU
|
||||
def_bool y
|
||||
depends on !MATH_EMULATION
|
||||
|
||||
config X86_REQUIRED_FEATURE_PAE
|
||||
def_bool y
|
||||
depends on X86_64 || X86_PAE
|
||||
|
||||
config X86_REQUIRED_FEATURE_PSE
|
||||
def_bool y
|
||||
depends on X86_64 && !PARAVIRT_XXL
|
||||
|
||||
config X86_REQUIRED_FEATURE_PGE
|
||||
def_bool y
|
||||
depends on X86_64 && !PARAVIRT_XXL
|
||||
|
||||
config X86_REQUIRED_FEATURE_MSR
|
||||
def_bool y
|
||||
depends on X86_64
|
||||
|
||||
config X86_REQUIRED_FEATURE_FXSR
|
||||
def_bool y
|
||||
depends on X86_64
|
||||
|
||||
config X86_REQUIRED_FEATURE_XMM
|
||||
def_bool y
|
||||
depends on X86_64
|
||||
|
||||
config X86_REQUIRED_FEATURE_XMM2
|
||||
def_bool y
|
||||
depends on X86_64
|
||||
|
||||
config X86_REQUIRED_FEATURE_LM
|
||||
def_bool y
|
||||
depends on X86_64
|
||||
|
||||
config X86_DISABLED_FEATURE_UMIP
|
||||
def_bool y
|
||||
depends on !X86_UMIP
|
||||
|
||||
config X86_DISABLED_FEATURE_VME
|
||||
def_bool y
|
||||
depends on X86_64
|
||||
|
||||
config X86_DISABLED_FEATURE_K6_MTRR
|
||||
def_bool y
|
||||
depends on X86_64
|
||||
|
||||
config X86_DISABLED_FEATURE_CYRIX_ARR
|
||||
def_bool y
|
||||
depends on X86_64
|
||||
|
||||
config X86_DISABLED_FEATURE_CENTAUR_MCR
|
||||
def_bool y
|
||||
depends on X86_64
|
||||
|
||||
config X86_DISABLED_FEATURE_PCID
|
||||
def_bool y
|
||||
depends on !X86_64
|
||||
|
||||
config X86_DISABLED_FEATURE_PKU
|
||||
def_bool y
|
||||
depends on !X86_INTEL_MEMORY_PROTECTION_KEYS
|
||||
|
||||
config X86_DISABLED_FEATURE_OSPKE
|
||||
def_bool y
|
||||
depends on !X86_INTEL_MEMORY_PROTECTION_KEYS
|
||||
|
||||
config X86_DISABLED_FEATURE_LA57
|
||||
def_bool y
|
||||
depends on !X86_5LEVEL
|
||||
|
||||
config X86_DISABLED_FEATURE_PTI
|
||||
def_bool y
|
||||
depends on !MITIGATION_PAGE_TABLE_ISOLATION
|
||||
|
||||
config X86_DISABLED_FEATURE_RETPOLINE
|
||||
def_bool y
|
||||
depends on !MITIGATION_RETPOLINE
|
||||
|
||||
config X86_DISABLED_FEATURE_RETPOLINE_LFENCE
|
||||
def_bool y
|
||||
depends on !MITIGATION_RETPOLINE
|
||||
|
||||
config X86_DISABLED_FEATURE_RETHUNK
|
||||
def_bool y
|
||||
depends on !MITIGATION_RETHUNK
|
||||
|
||||
config X86_DISABLED_FEATURE_UNRET
|
||||
def_bool y
|
||||
depends on !MITIGATION_UNRET_ENTRY
|
||||
|
||||
config X86_DISABLED_FEATURE_CALL_DEPTH
|
||||
def_bool y
|
||||
depends on !MITIGATION_CALL_DEPTH_TRACKING
|
||||
|
||||
config X86_DISABLED_FEATURE_LAM
|
||||
def_bool y
|
||||
depends on !ADDRESS_MASKING
|
||||
|
||||
config X86_DISABLED_FEATURE_ENQCMD
|
||||
def_bool y
|
||||
depends on !INTEL_IOMMU_SVM
|
||||
|
||||
config X86_DISABLED_FEATURE_SGX
|
||||
def_bool y
|
||||
depends on !X86_SGX
|
||||
|
||||
config X86_DISABLED_FEATURE_XENPV
|
||||
def_bool y
|
||||
depends on !XEN_PV
|
||||
|
||||
config X86_DISABLED_FEATURE_TDX_GUEST
|
||||
def_bool y
|
||||
depends on !INTEL_TDX_GUEST
|
||||
|
||||
config X86_DISABLED_FEATURE_USER_SHSTK
|
||||
def_bool y
|
||||
depends on !X86_USER_SHADOW_STACK
|
||||
|
||||
config X86_DISABLED_FEATURE_IBT
|
||||
def_bool y
|
||||
depends on !X86_KERNEL_IBT
|
||||
|
||||
config X86_DISABLED_FEATURE_FRED
|
||||
def_bool y
|
||||
depends on !X86_FRED
|
||||
|
||||
config X86_DISABLED_FEATURE_SEV_SNP
|
||||
def_bool y
|
||||
depends on !KVM_AMD_SEV
|
||||
|
||||
config X86_DISABLED_FEATURE_INVLPGB
|
||||
def_bool y
|
||||
depends on !BROADCAST_TLB_FLUSH
|
Loading…
Add table
Reference in a new issue