Files
linux-net/arch/x86/Kconfig.cpufeatures
H. Peter Anvin f49ecf5e11 x86/cpufeature: Replace X86_FEATURE_SYSENTER32 with X86_FEATURE_SYSFAST32
In most cases, the use of "fast 32-bit system call" depends either on
X86_FEATURE_SEP or X86_FEATURE_SYSENTER32 || X86_FEATURE_SYSCALL32.
However, nearly all the logic for both is identical.

Define X86_FEATURE_SYSFAST32 which indicates that *either* SYSENTER32 or
SYSCALL32 should be used, for either 32- or 64-bit kernels.  This
defaults to SYSENTER; use SYSCALL if the SYSCALL32 bit is also set.

As this removes ALL existing uses of X86_FEATURE_SYSENTER32, which is
a kernel-only synthetic feature bit, simply remove it and replace it
with X86_FEATURE_SYSFAST32.

This leaves an unused alternative for a true 32-bit kernel, but that
should really not matter in any way.

The clearing of X86_FEATURE_SYSCALL32 can be removed once the patches
for automatically clearing disabled features has been merged.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Link: https://patch.msgid.link/20251216212606.1325678-10-hpa@zytor.com
2026-01-13 16:37:58 -08:00

210 lines
5.0 KiB
Plaintext

# 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_SYSFAST32
def_bool y
depends on X86_64 && !X86_FRED
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_SYSCALL32
def_bool y
depends on !X86_64
config X86_DISABLED_FEATURE_PCID
def_bool y
depends on !X86_64
config X86_DISABLED_FEATURE_LASS
def_bool y
depends on X86_32
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_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