-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
- Loading branch information
H. Peter Anvin (Intel)
authored and
Ingo Molnar
committed
Mar 19, 2025
1 parent
f666c92
commit 3d37d93
Showing
2 changed files
with
203 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |