mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge tag 'x86-core-2025-03-22' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull core x86 updates from Ingo Molnar:
"x86 CPU features support:
- Generate the <asm/cpufeaturemasks.h> header based on build config
(H. Peter Anvin, Xin Li)
- x86 CPUID parsing updates and fixes (Ahmed S. Darwish)
- Introduce the 'setcpuid=' boot parameter (Brendan Jackman)
- Enable modifying CPU bug flags with '{clear,set}puid=' (Brendan
Jackman)
- Utilize CPU-type for CPU matching (Pawan Gupta)
- Warn about unmet CPU feature dependencies (Sohil Mehta)
- Prepare for new Intel Family numbers (Sohil Mehta)
Percpu code:
- Standardize & reorganize the x86 percpu layout and related cleanups
(Brian Gerst)
- Convert the stackprotector canary to a regular percpu variable
(Brian Gerst)
- Add a percpu subsection for cache hot data (Brian Gerst)
- Unify __pcpu_op{1,2}_N() macros to __pcpu_op_N() (Uros Bizjak)
- Construct __percpu_seg_override from __percpu_seg (Uros Bizjak)
MM:
- Add support for broadcast TLB invalidation using AMD's INVLPGB
instruction (Rik van Riel)
- Rework ROX cache to avoid writable copy (Mike Rapoport)
- PAT: restore large ROX pages after fragmentation (Kirill A.
Shutemov, Mike Rapoport)
- Make memremap(MEMREMAP_WB) map memory as encrypted by default
(Kirill A. Shutemov)
- Robustify page table initialization (Kirill A. Shutemov)
- Fix flush_tlb_range() when used for zapping normal PMDs (Jann Horn)
- Clear _PAGE_DIRTY for kernel mappings when we clear _PAGE_RW
(Matthew Wilcox)
KASLR:
- x86/kaslr: Reduce KASLR entropy on most x86 systems, to support PCI
BAR space beyond the 10TiB region (CONFIG_PCI_P2PDMA=y) (Balbir
Singh)
CPU bugs:
- Implement FineIBT-BHI mitigation (Peter Zijlstra)
- speculation: Simplify and make CALL_NOSPEC consistent (Pawan Gupta)
- speculation: Add a conditional CS prefix to CALL_NOSPEC (Pawan
Gupta)
- RFDS: Exclude P-only parts from the RFDS affected list (Pawan
Gupta)
System calls:
- Break up entry/common.c (Brian Gerst)
- Move sysctls into arch/x86 (Joel Granados)
Intel LAM support updates: (Maciej Wieczor-Retman)
- selftests/lam: Move cpu_has_la57() to use cpuinfo flag
- selftests/lam: Skip test if LAM is disabled
- selftests/lam: Test get_user() LAM pointer handling
AMD SMN access updates:
- Add SMN offsets to exclusive region access (Mario Limonciello)
- Add support for debugfs access to SMN registers (Mario Limonciello)
- Have HSMP use SMN through AMD_NODE (Yazen Ghannam)
Power management updates: (Patryk Wlazlyn)
- Allow calling mwait_play_dead with an arbitrary hint
- ACPI/processor_idle: Add FFH state handling
- intel_idle: Provide the default enter_dead() handler
- Eliminate mwait_play_dead_cpuid_hint()
Build system:
- Raise the minimum GCC version to 8.1 (Brian Gerst)
- Raise the minimum LLVM version to 15.0.0 (Nathan Chancellor)
Kconfig: (Arnd Bergmann)
- Add cmpxchg8b support back to Geode CPUs
- Drop 32-bit "bigsmp" machine support
- Rework CONFIG_GENERIC_CPU compiler flags
- Drop configuration options for early 64-bit CPUs
- Remove CONFIG_HIGHMEM64G support
- Drop CONFIG_SWIOTLB for PAE
- Drop support for CONFIG_HIGHPTE
- Document CONFIG_X86_INTEL_MID as 64-bit-only
- Remove old STA2x11 support
- Only allow CONFIG_EISA for 32-bit
Headers:
- Replace __ASSEMBLY__ with __ASSEMBLER__ in UAPI and non-UAPI
headers (Thomas Huth)
Assembly code & machine code patching:
- x86/alternatives: Simplify alternative_call() interface (Josh
Poimboeuf)
- x86/alternatives: Simplify callthunk patching (Peter Zijlstra)
- KVM: VMX: Use named operands in inline asm (Josh Poimboeuf)
- x86/hyperv: Use named operands in inline asm (Josh Poimboeuf)
- x86/traps: Cleanup and robustify decode_bug() (Peter Zijlstra)
- x86/kexec: Merge x86_32 and x86_64 code using macros from
<asm/asm.h> (Uros Bizjak)
- Use named operands in inline asm (Uros Bizjak)
- Improve performance by using asm_inline() for atomic locking
instructions (Uros Bizjak)
Earlyprintk:
- Harden early_serial (Peter Zijlstra)
NMI handler:
- Add an emergency handler in nmi_desc & use it in
nmi_shootdown_cpus() (Waiman Long)
Miscellaneous fixes and cleanups:
- by Ahmed S. Darwish, Andy Shevchenko, Ard Biesheuvel, Artem
Bityutskiy, Borislav Petkov, Brendan Jackman, Brian Gerst, Dan
Carpenter, Dr. David Alan Gilbert, H. Peter Anvin, Ingo Molnar,
Josh Poimboeuf, Kevin Brodsky, Mike Rapoport, Lukas Bulwahn, Maciej
Wieczor-Retman, Max Grobecker, Patryk Wlazlyn, Pawan Gupta, Peter
Zijlstra, Philip Redkin, Qasim Ijaz, Rik van Riel, Thomas Gleixner,
Thorsten Blum, Tom Lendacky, Tony Luck, Uros Bizjak, Vitaly
Kuznetsov, Xin Li, liuye"
* tag 'x86-core-2025-03-22' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (211 commits)
zstd: Increase DYNAMIC_BMI2 GCC version cutoff from 4.8 to 11.0 to work around compiler segfault
x86/asm: Make asm export of __ref_stack_chk_guard unconditional
x86/mm: Only do broadcast flush from reclaim if pages were unmapped
perf/x86/intel, x86/cpu: Replace Pentium 4 model checks with VFM ones
perf/x86/intel, x86/cpu: Simplify Intel PMU initialization
x86/headers: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-UAPI headers
x86/headers: Replace __ASSEMBLY__ with __ASSEMBLER__ in UAPI headers
x86/locking/atomic: Improve performance by using asm_inline() for atomic locking instructions
x86/asm: Use asm_inline() instead of asm() in clwb()
x86/asm: Use CLFLUSHOPT and CLWB mnemonics in <asm/special_insns.h>
x86/hweight: Use asm_inline() instead of asm()
x86/hweight: Use ASM_CALL_CONSTRAINT in inline asm()
x86/hweight: Use named operands in inline asm()
x86/stackprotector/64: Only export __ref_stack_chk_guard on CONFIG_SMP
x86/head/64: Avoid Clang < 17 stack protector in startup code
x86/kexec: Merge x86_32 and x86_64 code using macros from <asm/asm.h>
x86/runtime-const: Add the RUNTIME_CONST_PTR assembly macro
x86/cpu/intel: Limit the non-architectural constant_tsc model checks
x86/mm/pat: Replace Intel x86_model checks with VFM ones
x86/cpu/intel: Fix fast string initialization for extended Families
...
This commit is contained in:
@@ -29,14 +29,6 @@ Below is the list of affected Intel processors [#f1]_:
|
||||
RAPTORLAKE_S 06_BFH
|
||||
=================== ============
|
||||
|
||||
As an exception to this table, Intel Xeon E family parts ALDERLAKE(06_97H) and
|
||||
RAPTORLAKE(06_B7H) codenamed Catlow are not affected. They are reported as
|
||||
vulnerable in Linux because they share the same family/model with an affected
|
||||
part. Unlike their affected counterparts, they do not enumerate RFDS_CLEAR or
|
||||
CPUID.HYBRID. This information could be used to distinguish between the
|
||||
affected and unaffected parts, but it is deemed not worth adding complexity as
|
||||
the reporting is fixed automatically when these parts enumerate RFDS_NO.
|
||||
|
||||
Mitigation
|
||||
==========
|
||||
Intel released a microcode update that enables software to clear sensitive
|
||||
|
||||
@@ -180,10 +180,6 @@ Dump-capture kernel config options (Arch Dependent, i386 and x86_64)
|
||||
1) On i386, enable high memory support under "Processor type and
|
||||
features"::
|
||||
|
||||
CONFIG_HIGHMEM64G=y
|
||||
|
||||
or::
|
||||
|
||||
CONFIG_HIGHMEM4G
|
||||
|
||||
2) With CONFIG_SMP=y, usually nr_cpus=1 need specified on the kernel
|
||||
|
||||
@@ -416,10 +416,6 @@
|
||||
Format: { quiet (default) | verbose | debug }
|
||||
Change the amount of debugging information output
|
||||
when initialising the APIC and IO-APIC components.
|
||||
For X86-32, this can also be used to specify an APIC
|
||||
driver name.
|
||||
Format: apic=driver_name
|
||||
Examples: apic=bigsmp
|
||||
|
||||
apic_extnmi= [APIC,X86,EARLY] External NMI delivery setting
|
||||
Format: { bsp (default) | all | none }
|
||||
@@ -7679,13 +7675,6 @@
|
||||
16 - SIGBUS faults
|
||||
Example: user_debug=31
|
||||
|
||||
userpte=
|
||||
[X86,EARLY] Flags controlling user PTE allocations.
|
||||
|
||||
nohigh = do not allocate PTE pages in
|
||||
HIGHMEM regardless of setting
|
||||
of CONFIG_HIGHPTE.
|
||||
|
||||
vdso= [X86,SH,SPARC]
|
||||
On X86_32, this is an alias for vdso32=. Otherwise:
|
||||
|
||||
|
||||
@@ -20,11 +20,7 @@ It has several drawbacks, though:
|
||||
features (wheel, extra buttons, touchpad mode) of the real PS/2 mouse may
|
||||
not be available.
|
||||
|
||||
2) If CONFIG_HIGHMEM64G is enabled, the PS/2 mouse emulation can cause
|
||||
system crashes, because the SMM BIOS is not expecting to be in PAE mode.
|
||||
The Intel E7505 is a typical machine where this happens.
|
||||
|
||||
3) If AMD64 64-bit mode is enabled, again system crashes often happen,
|
||||
2) If AMD64 64-bit mode is enabled, again system crashes often happen,
|
||||
because the SMM BIOS isn't expecting the CPU to be in 64-bit mode. The
|
||||
BIOS manufacturers only test with Windows, and Windows doesn't do 64-bit
|
||||
yet.
|
||||
@@ -38,11 +34,6 @@ Problem 1)
|
||||
compiled-in, too.
|
||||
|
||||
Problem 2)
|
||||
can currently only be solved by either disabling HIGHMEM64G
|
||||
in the kernel config or USB Legacy support in the BIOS. A BIOS update
|
||||
could help, but so far no such update exists.
|
||||
|
||||
Problem 3)
|
||||
is usually fixed by a BIOS update. Check the board
|
||||
manufacturers web site. If an update is not available, disable USB
|
||||
Legacy support in the BIOS. If this alone doesn't help, try also adding
|
||||
|
||||
@@ -1014,6 +1014,9 @@ CC_FLAGS_CFI := -fsanitize=kcfi
|
||||
ifdef CONFIG_CFI_ICALL_NORMALIZE_INTEGERS
|
||||
CC_FLAGS_CFI += -fsanitize-cfi-icall-experimental-normalize-integers
|
||||
endif
|
||||
ifdef CONFIG_FINEIBT_BHI
|
||||
CC_FLAGS_CFI += -fsanitize-kcfi-arity
|
||||
endif
|
||||
ifdef CONFIG_RUST
|
||||
# Always pass -Zsanitizer-cfi-normalize-integers as CONFIG_RUST selects
|
||||
# CONFIG_CFI_ICALL_NORMALIZE_INTEGERS.
|
||||
|
||||
@@ -381,7 +381,7 @@ void __iomem *ioremap_wc(resource_size_t res_cookie, size_t size);
|
||||
void iounmap(volatile void __iomem *io_addr);
|
||||
#define iounmap iounmap
|
||||
|
||||
void *arch_memremap_wb(phys_addr_t phys_addr, size_t size);
|
||||
void *arch_memremap_wb(phys_addr_t phys_addr, size_t size, unsigned long flags);
|
||||
#define arch_memremap_wb arch_memremap_wb
|
||||
|
||||
/*
|
||||
|
||||
@@ -436,7 +436,7 @@ void __arm_iomem_set_ro(void __iomem *ptr, size_t size)
|
||||
set_memory_ro((unsigned long)ptr, PAGE_ALIGN(size) / PAGE_SIZE);
|
||||
}
|
||||
|
||||
void *arch_memremap_wb(phys_addr_t phys_addr, size_t size)
|
||||
void *arch_memremap_wb(phys_addr_t phys_addr, size_t size, unsigned long flags)
|
||||
{
|
||||
return (__force void *)arch_ioremap_caller(phys_addr, size,
|
||||
MT_MEMORY_RW,
|
||||
|
||||
+1
-1
@@ -248,7 +248,7 @@ void __iomem *pci_remap_cfgspace(resource_size_t res_cookie, size_t size)
|
||||
EXPORT_SYMBOL_GPL(pci_remap_cfgspace);
|
||||
#endif
|
||||
|
||||
void *arch_memremap_wb(phys_addr_t phys_addr, size_t size)
|
||||
void *arch_memremap_wb(phys_addr_t phys_addr, size_t size, unsigned long flags)
|
||||
{
|
||||
return (void *)phys_addr;
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ __io_writes_outs(outs, u64, q, __io_pbr(), __io_paw())
|
||||
#include <asm-generic/io.h>
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
#define arch_memremap_wb(addr, size) \
|
||||
#define arch_memremap_wb(addr, size, flags) \
|
||||
((__force void *)ioremap_prot((addr), (size), _PAGE_KERNEL))
|
||||
#endif
|
||||
|
||||
|
||||
@@ -440,25 +440,24 @@ void __init arch_cpu_finalize_init(void)
|
||||
os_check_bugs();
|
||||
}
|
||||
|
||||
void apply_seal_endbr(s32 *start, s32 *end, struct module *mod)
|
||||
void apply_seal_endbr(s32 *start, s32 *end)
|
||||
{
|
||||
}
|
||||
|
||||
void apply_retpolines(s32 *start, s32 *end, struct module *mod)
|
||||
void apply_retpolines(s32 *start, s32 *end)
|
||||
{
|
||||
}
|
||||
|
||||
void apply_returns(s32 *start, s32 *end, struct module *mod)
|
||||
void apply_returns(s32 *start, s32 *end)
|
||||
{
|
||||
}
|
||||
|
||||
void apply_fineibt(s32 *start_retpoline, s32 *end_retpoline,
|
||||
s32 *start_cfi, s32 *end_cfi, struct module *mod)
|
||||
s32 *start_cfi, s32 *end_cfi)
|
||||
{
|
||||
}
|
||||
|
||||
void apply_alternatives(struct alt_instr *start, struct alt_instr *end,
|
||||
struct module *mod)
|
||||
void apply_alternatives(struct alt_instr *start, struct alt_instr *end)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
+66
-136
@@ -85,6 +85,7 @@ config X86
|
||||
select ARCH_HAS_DMA_OPS if GART_IOMMU || XEN
|
||||
select ARCH_HAS_EARLY_DEBUG if KGDB
|
||||
select ARCH_HAS_ELF_RANDOMIZE
|
||||
select ARCH_HAS_EXECMEM_ROX if X86_64
|
||||
select ARCH_HAS_FAST_MULTIPLIER
|
||||
select ARCH_HAS_FORTIFY_SOURCE
|
||||
select ARCH_HAS_GCOV_PROFILE_ALL
|
||||
@@ -132,7 +133,7 @@ config X86
|
||||
select ARCH_SUPPORTS_AUTOFDO_CLANG
|
||||
select ARCH_SUPPORTS_PROPELLER_CLANG if X86_64
|
||||
select ARCH_USE_BUILTIN_BSWAP
|
||||
select ARCH_USE_CMPXCHG_LOCKREF if X86_CMPXCHG64
|
||||
select ARCH_USE_CMPXCHG_LOCKREF if X86_CX8
|
||||
select ARCH_USE_MEMTEST
|
||||
select ARCH_USE_QUEUED_RWLOCKS
|
||||
select ARCH_USE_QUEUED_SPINLOCKS
|
||||
@@ -232,7 +233,7 @@ config X86
|
||||
select HAVE_SAMPLE_FTRACE_DIRECT_MULTI if X86_64
|
||||
select HAVE_EBPF_JIT
|
||||
select HAVE_EFFICIENT_UNALIGNED_ACCESS
|
||||
select HAVE_EISA
|
||||
select HAVE_EISA if X86_32
|
||||
select HAVE_EXIT_THREAD
|
||||
select HAVE_GUP_FAST
|
||||
select HAVE_FENTRY if X86_64 || DYNAMIC_FTRACE
|
||||
@@ -277,7 +278,7 @@ config X86
|
||||
select HAVE_PCI
|
||||
select HAVE_PERF_REGS
|
||||
select HAVE_PERF_USER_STACK_DUMP
|
||||
select MMU_GATHER_RCU_TABLE_FREE if PARAVIRT
|
||||
select MMU_GATHER_RCU_TABLE_FREE
|
||||
select MMU_GATHER_MERGE_VMAS
|
||||
select HAVE_POSIX_CPU_TIMERS_TASK_WORK
|
||||
select HAVE_REGS_AND_STACK_ACCESS_API
|
||||
@@ -285,7 +286,7 @@ config X86
|
||||
select HAVE_FUNCTION_ARG_ACCESS_API
|
||||
select HAVE_SETUP_PER_CPU_AREA
|
||||
select HAVE_SOFTIRQ_ON_OWN_STACK
|
||||
select HAVE_STACKPROTECTOR if CC_HAS_SANE_STACKPROTECTOR
|
||||
select HAVE_STACKPROTECTOR
|
||||
select HAVE_STACK_VALIDATION if HAVE_OBJTOOL
|
||||
select HAVE_STATIC_CALL
|
||||
select HAVE_STATIC_CALL_INLINE if HAVE_OBJTOOL
|
||||
@@ -426,15 +427,6 @@ config PGTABLE_LEVELS
|
||||
default 3 if X86_PAE
|
||||
default 2
|
||||
|
||||
config CC_HAS_SANE_STACKPROTECTOR
|
||||
bool
|
||||
default $(success,$(srctree)/scripts/gcc-x86_64-has-stack-protector.sh $(CC) $(CLANG_FLAGS)) if 64BIT
|
||||
default $(success,$(srctree)/scripts/gcc-x86_32-has-stack-protector.sh $(CC) $(CLANG_FLAGS))
|
||||
help
|
||||
We have to make sure stack protector is unconditionally disabled if
|
||||
the compiler produces broken code or if it does not let us control
|
||||
the segment on 32-bit kernels.
|
||||
|
||||
menu "Processor type and features"
|
||||
|
||||
config SMP
|
||||
@@ -530,12 +522,6 @@ config X86_FRED
|
||||
ring transitions and exception/interrupt handling if the
|
||||
system supports it.
|
||||
|
||||
config X86_BIGSMP
|
||||
bool "Support for big SMP systems with more than 8 CPUs"
|
||||
depends on SMP && X86_32
|
||||
help
|
||||
This option is needed for the systems that have more than 8 CPUs.
|
||||
|
||||
config X86_EXTENDED_PLATFORM
|
||||
bool "Support for extended (non-PC) x86 platforms"
|
||||
default y
|
||||
@@ -553,13 +539,12 @@ config X86_EXTENDED_PLATFORM
|
||||
AMD Elan
|
||||
RDC R-321x SoC
|
||||
SGI 320/540 (Visual Workstation)
|
||||
STA2X11-based (e.g. Northville)
|
||||
Moorestown MID devices
|
||||
|
||||
64-bit platforms (CONFIG_64BIT=y):
|
||||
Numascale NumaChip
|
||||
ScaleMP vSMP
|
||||
SGI Ultraviolet
|
||||
Merrifield/Moorefield MID devices
|
||||
|
||||
If you have one of these systems, or if you want to build a
|
||||
generic distribution kernel, say Y here - otherwise say N.
|
||||
@@ -604,8 +589,31 @@ config X86_UV
|
||||
This option is needed in order to support SGI Ultraviolet systems.
|
||||
If you don't have one of these, you should say N here.
|
||||
|
||||
# Following is an alphabetically sorted list of 32 bit extended platforms
|
||||
# Please maintain the alphabetic order if and when there are additions
|
||||
config X86_INTEL_MID
|
||||
bool "Intel Z34xx/Z35xx MID platform support"
|
||||
depends on X86_EXTENDED_PLATFORM
|
||||
depends on X86_PLATFORM_DEVICES
|
||||
depends on PCI
|
||||
depends on X86_64 || (EXPERT && PCI_GOANY)
|
||||
depends on X86_IO_APIC
|
||||
select I2C
|
||||
select DW_APB_TIMER
|
||||
select INTEL_SCU_PCI
|
||||
help
|
||||
Select to build a kernel capable of supporting 64-bit Intel MID
|
||||
(Mobile Internet Device) platform systems which do not have
|
||||
the PCI legacy interfaces.
|
||||
|
||||
The only supported devices are the 22nm Merrified (Z34xx)
|
||||
and Moorefield (Z35xx) SoC used in the Intel Edison board and
|
||||
a small number of Android devices such as the Asus Zenfone 2,
|
||||
Asus FonePad 8 and Dell Venue 7.
|
||||
|
||||
If you are building for a PC class system or non-MID tablet
|
||||
SoCs like Bay Trail (Z36xx/Z37xx), say N here.
|
||||
|
||||
Intel MID platforms are based on an Intel processor and chipset which
|
||||
consume less power than most of the x86 derivatives.
|
||||
|
||||
config X86_GOLDFISH
|
||||
bool "Goldfish (Virtual Platform)"
|
||||
@@ -615,6 +623,9 @@ config X86_GOLDFISH
|
||||
for Android development. Unless you are building for the Android
|
||||
Goldfish emulator say N here.
|
||||
|
||||
# Following is an alphabetically sorted list of 32 bit extended platforms
|
||||
# Please maintain the alphabetic order if and when there are additions
|
||||
|
||||
config X86_INTEL_CE
|
||||
bool "CE4100 TV platform"
|
||||
depends on PCI
|
||||
@@ -630,24 +641,6 @@ config X86_INTEL_CE
|
||||
This option compiles in support for the CE4100 SOC for settop
|
||||
boxes and media devices.
|
||||
|
||||
config X86_INTEL_MID
|
||||
bool "Intel MID platform support"
|
||||
depends on X86_EXTENDED_PLATFORM
|
||||
depends on X86_PLATFORM_DEVICES
|
||||
depends on PCI
|
||||
depends on X86_64 || (PCI_GOANY && X86_32)
|
||||
depends on X86_IO_APIC
|
||||
select I2C
|
||||
select DW_APB_TIMER
|
||||
select INTEL_SCU_PCI
|
||||
help
|
||||
Select to build a kernel capable of supporting Intel MID (Mobile
|
||||
Internet Device) platform systems which do not have the PCI legacy
|
||||
interfaces. If you are building for a PC class system say N here.
|
||||
|
||||
Intel MID platforms are based on an Intel processor and chipset which
|
||||
consume less power than most of the x86 derivatives.
|
||||
|
||||
config X86_INTEL_QUARK
|
||||
bool "Intel Quark platform support"
|
||||
depends on X86_32
|
||||
@@ -729,18 +722,6 @@ config X86_RDC321X
|
||||
as R-8610-(G).
|
||||
If you don't have one of these chips, you should say N here.
|
||||
|
||||
config X86_32_NON_STANDARD
|
||||
bool "Support non-standard 32-bit SMP architectures"
|
||||
depends on X86_32 && SMP
|
||||
depends on X86_EXTENDED_PLATFORM
|
||||
help
|
||||
This option compiles in the bigsmp and STA2X11 default
|
||||
subarchitectures. It is intended for a generic binary
|
||||
kernel. If you select them all, kernel will probe it one by
|
||||
one and will fallback to default.
|
||||
|
||||
# Alphabetically sorted list of Non standard 32 bit platforms
|
||||
|
||||
config X86_SUPPORTS_MEMORY_FAILURE
|
||||
def_bool y
|
||||
# MCE code calls memory_failure():
|
||||
@@ -750,19 +731,6 @@ config X86_SUPPORTS_MEMORY_FAILURE
|
||||
depends on X86_64 || !SPARSEMEM
|
||||
select ARCH_SUPPORTS_MEMORY_FAILURE
|
||||
|
||||
config STA2X11
|
||||
bool "STA2X11 Companion Chip Support"
|
||||
depends on X86_32_NON_STANDARD && PCI
|
||||
select SWIOTLB
|
||||
select MFD_STA2X11
|
||||
select GPIOLIB
|
||||
help
|
||||
This adds support for boards based on the STA2X11 IO-Hub,
|
||||
a.k.a. "ConneXt". The chip is used in place of the standard
|
||||
PC chipset, so all "standard" peripherals are missing. If this
|
||||
option is selected the kernel will still be able to boot on
|
||||
standard PC machines.
|
||||
|
||||
config X86_32_IRIS
|
||||
tristate "Eurobraille/Iris poweroff module"
|
||||
depends on X86_32
|
||||
@@ -1012,8 +980,7 @@ config NR_CPUS_RANGE_BEGIN
|
||||
config NR_CPUS_RANGE_END
|
||||
int
|
||||
depends on X86_32
|
||||
default 64 if SMP && X86_BIGSMP
|
||||
default 8 if SMP && !X86_BIGSMP
|
||||
default 8 if SMP
|
||||
default 1 if !SMP
|
||||
|
||||
config NR_CPUS_RANGE_END
|
||||
@@ -1026,7 +993,6 @@ config NR_CPUS_RANGE_END
|
||||
config NR_CPUS_DEFAULT
|
||||
int
|
||||
depends on X86_32
|
||||
default 32 if X86_BIGSMP
|
||||
default 8 if SMP
|
||||
default 1 if !SMP
|
||||
|
||||
@@ -1102,7 +1068,7 @@ config UP_LATE_INIT
|
||||
config X86_UP_APIC
|
||||
bool "Local APIC support on uniprocessors" if !PCI_MSI
|
||||
default PCI_MSI
|
||||
depends on X86_32 && !SMP && !X86_32_NON_STANDARD
|
||||
depends on X86_32 && !SMP
|
||||
help
|
||||
A local APIC (Advanced Programmable Interrupt Controller) is an
|
||||
integrated interrupt controller in the CPU. If you have a single-CPU
|
||||
@@ -1127,7 +1093,7 @@ config X86_UP_IOAPIC
|
||||
|
||||
config X86_LOCAL_APIC
|
||||
def_bool y
|
||||
depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC || PCI_MSI
|
||||
depends on X86_64 || SMP || X86_UP_APIC || PCI_MSI
|
||||
select IRQ_DOMAIN_HIERARCHY
|
||||
|
||||
config ACPI_MADT_WAKEUP
|
||||
@@ -1396,15 +1362,11 @@ config X86_CPUID
|
||||
with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
|
||||
/dev/cpu/31/cpuid.
|
||||
|
||||
choice
|
||||
prompt "High Memory Support"
|
||||
default HIGHMEM4G
|
||||
config HIGHMEM4G
|
||||
bool "High Memory Support"
|
||||
depends on X86_32
|
||||
|
||||
config NOHIGHMEM
|
||||
bool "off"
|
||||
help
|
||||
Linux can use up to 64 Gigabytes of physical memory on x86 systems.
|
||||
Linux can use up to 4 Gigabytes of physical memory on x86 systems.
|
||||
However, the address space of 32-bit x86 processors is only 4
|
||||
Gigabytes large. That means that, if you have a large amount of
|
||||
physical memory, not all of it can be "permanently mapped" by the
|
||||
@@ -1420,38 +1382,9 @@ config NOHIGHMEM
|
||||
possible.
|
||||
|
||||
If the machine has between 1 and 4 Gigabytes physical RAM, then
|
||||
answer "4GB" here.
|
||||
answer "Y" here.
|
||||
|
||||
If more than 4 Gigabytes is used then answer "64GB" here. This
|
||||
selection turns Intel PAE (Physical Address Extension) mode on.
|
||||
PAE implements 3-level paging on IA32 processors. PAE is fully
|
||||
supported by Linux, PAE mode is implemented on all recent Intel
|
||||
processors (Pentium Pro and better). NOTE: If you say "64GB" here,
|
||||
then the kernel will not boot on CPUs that don't support PAE!
|
||||
|
||||
The actual amount of total physical memory will either be
|
||||
auto detected or can be forced by using a kernel command line option
|
||||
such as "mem=256M". (Try "man bootparam" or see the documentation of
|
||||
your boot loader (lilo or loadlin) about how to pass options to the
|
||||
kernel at boot time.)
|
||||
|
||||
If unsure, say "off".
|
||||
|
||||
config HIGHMEM4G
|
||||
bool "4GB"
|
||||
help
|
||||
Select this if you have a 32-bit processor and between 1 and 4
|
||||
gigabytes of physical RAM.
|
||||
|
||||
config HIGHMEM64G
|
||||
bool "64GB"
|
||||
depends on X86_HAVE_PAE
|
||||
select X86_PAE
|
||||
help
|
||||
Select this if you have a 32-bit processor and more than 4
|
||||
gigabytes of physical RAM.
|
||||
|
||||
endchoice
|
||||
If unsure, say N.
|
||||
|
||||
choice
|
||||
prompt "Memory split" if EXPERT
|
||||
@@ -1497,14 +1430,12 @@ config PAGE_OFFSET
|
||||
depends on X86_32
|
||||
|
||||
config HIGHMEM
|
||||
def_bool y
|
||||
depends on X86_32 && (HIGHMEM64G || HIGHMEM4G)
|
||||
def_bool HIGHMEM4G
|
||||
|
||||
config X86_PAE
|
||||
bool "PAE (Physical Address Extension) Support"
|
||||
depends on X86_32 && X86_HAVE_PAE
|
||||
select PHYS_ADDR_T_64BIT
|
||||
select SWIOTLB
|
||||
help
|
||||
PAE is required for NX support, and furthermore enables
|
||||
larger swapspace support for non-overcommit purposes. It
|
||||
@@ -1574,8 +1505,7 @@ config AMD_MEM_ENCRYPT
|
||||
config NUMA
|
||||
bool "NUMA Memory Allocation and Scheduler Support"
|
||||
depends on SMP
|
||||
depends on X86_64 || (X86_32 && HIGHMEM64G && X86_BIGSMP)
|
||||
default y if X86_BIGSMP
|
||||
depends on X86_64
|
||||
select USE_PERCPU_NUMA_NODE_ID
|
||||
select OF_NUMA if OF
|
||||
help
|
||||
@@ -1588,9 +1518,6 @@ config NUMA
|
||||
For 64-bit this is recommended if the system is Intel Core i7
|
||||
(or later), AMD Opteron, or EM64T NUMA.
|
||||
|
||||
For 32-bit this is only needed if you boot a 32-bit
|
||||
kernel on a 64-bit NUMA platform.
|
||||
|
||||
Otherwise, you should say N.
|
||||
|
||||
config AMD_NUMA
|
||||
@@ -1629,7 +1556,7 @@ config ARCH_FLATMEM_ENABLE
|
||||
|
||||
config ARCH_SPARSEMEM_ENABLE
|
||||
def_bool y
|
||||
depends on X86_64 || NUMA || X86_32 || X86_32_NON_STANDARD
|
||||
depends on X86_64 || NUMA || X86_32
|
||||
select SPARSEMEM_STATIC if X86_32
|
||||
select SPARSEMEM_VMEMMAP_ENABLE if X86_64
|
||||
|
||||
@@ -1675,15 +1602,6 @@ config X86_PMEM_LEGACY
|
||||
|
||||
Say Y if unsure.
|
||||
|
||||
config HIGHPTE
|
||||
bool "Allocate 3rd-level pagetables from highmem"
|
||||
depends on HIGHMEM
|
||||
help
|
||||
The VM uses one page table entry for each page of physical memory.
|
||||
For systems with a lot of RAM, this can be wasteful of precious
|
||||
low memory. Setting this option will put user-space page table
|
||||
entries in high memory.
|
||||
|
||||
config X86_CHECK_BIOS_CORRUPTION
|
||||
bool "Check for low memory corruption"
|
||||
help
|
||||
@@ -2451,18 +2369,20 @@ config CC_HAS_NAMED_AS
|
||||
def_bool $(success,echo 'int __seg_fs fs; int __seg_gs gs;' | $(CC) -x c - -S -o /dev/null)
|
||||
depends on CC_IS_GCC
|
||||
|
||||
#
|
||||
# -fsanitize=kernel-address (KASAN) and -fsanitize=thread (KCSAN)
|
||||
# are incompatible with named address spaces with GCC < 13.3
|
||||
# (see GCC PR sanitizer/111736 and also PR sanitizer/115172).
|
||||
#
|
||||
|
||||
config CC_HAS_NAMED_AS_FIXED_SANITIZERS
|
||||
def_bool CC_IS_GCC && GCC_VERSION >= 130300
|
||||
def_bool y
|
||||
depends on !(KASAN || KCSAN) || GCC_VERSION >= 130300
|
||||
depends on !(UBSAN_BOOL && KASAN) || GCC_VERSION >= 140200
|
||||
|
||||
config USE_X86_SEG_SUPPORT
|
||||
def_bool y
|
||||
depends on CC_HAS_NAMED_AS
|
||||
#
|
||||
# -fsanitize=kernel-address (KASAN) and -fsanitize=thread
|
||||
# (KCSAN) are incompatible with named address spaces with
|
||||
# GCC < 13.3 - see GCC PR sanitizer/111736.
|
||||
#
|
||||
depends on !(KASAN || KCSAN) || CC_HAS_NAMED_AS_FIXED_SANITIZERS
|
||||
def_bool CC_HAS_NAMED_AS
|
||||
depends on CC_HAS_NAMED_AS_FIXED_SANITIZERS
|
||||
|
||||
config CC_HAS_SLS
|
||||
def_bool $(cc-option,-mharden-sls=all)
|
||||
@@ -2473,6 +2393,10 @@ config CC_HAS_RETURN_THUNK
|
||||
config CC_HAS_ENTRY_PADDING
|
||||
def_bool $(cc-option,-fpatchable-function-entry=16,16)
|
||||
|
||||
config CC_HAS_KCFI_ARITY
|
||||
def_bool $(cc-option,-fsanitize=kcfi -fsanitize-kcfi-arity)
|
||||
depends on CC_IS_CLANG && !RUST
|
||||
|
||||
config FUNCTION_PADDING_CFI
|
||||
int
|
||||
default 59 if FUNCTION_ALIGNMENT_64B
|
||||
@@ -2498,6 +2422,10 @@ config FINEIBT
|
||||
depends on X86_KERNEL_IBT && CFI_CLANG && MITIGATION_RETPOLINE
|
||||
select CALL_PADDING
|
||||
|
||||
config FINEIBT_BHI
|
||||
def_bool y
|
||||
depends on FINEIBT && CC_HAS_KCFI_ARITY
|
||||
|
||||
config HAVE_CALL_THUNKS
|
||||
def_bool y
|
||||
depends on CC_HAS_ENTRY_PADDING && MITIGATION_RETHUNK && OBJTOOL
|
||||
@@ -3202,4 +3130,6 @@ config HAVE_ATOMIC_IOMAP
|
||||
|
||||
source "arch/x86/kvm/Kconfig"
|
||||
|
||||
source "arch/x86/Kconfig.cpufeatures"
|
||||
|
||||
source "arch/x86/Kconfig.assembler"
|
||||
|
||||
+21
-84
@@ -1,9 +1,9 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Put here option for CPU selection and depending optimization
|
||||
choice
|
||||
prompt "Processor family"
|
||||
default M686 if X86_32
|
||||
default GENERIC_CPU if X86_64
|
||||
prompt "x86-32 Processor family"
|
||||
depends on X86_32
|
||||
default M686
|
||||
help
|
||||
This is the processor type of your CPU. This information is
|
||||
used for optimizing purposes. In order to compile a kernel
|
||||
@@ -31,7 +31,6 @@ choice
|
||||
- "Pentium-4" for the Intel Pentium 4 or P4-based Celeron.
|
||||
- "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
|
||||
- "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
|
||||
- "Opteron/Athlon64/Hammer/K8" for all K8 and newer AMD CPUs.
|
||||
- "Crusoe" for the Transmeta Crusoe series.
|
||||
- "Efficeon" for the Transmeta Efficeon series.
|
||||
- "Winchip-C6" for original IDT Winchip.
|
||||
@@ -42,13 +41,10 @@ choice
|
||||
- "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
|
||||
- "VIA C3-2" for VIA C3-2 "Nehemiah" (model 9 and above).
|
||||
- "VIA C7" for VIA C7.
|
||||
- "Intel P4" for the Pentium 4/Netburst microarchitecture.
|
||||
- "Core 2/newer Xeon" for all core2 and newer Intel CPUs.
|
||||
- "Intel Atom" for the Atom-microarchitecture CPUs.
|
||||
- "Generic-x86-64" for a kernel which runs on any x86-64 CPU.
|
||||
|
||||
See each option's help text for additional details. If you don't know
|
||||
what to do, choose "486".
|
||||
what to do, choose "Pentium-Pro".
|
||||
|
||||
config M486SX
|
||||
bool "486SX"
|
||||
@@ -114,11 +110,11 @@ config MPENTIUMIII
|
||||
extensions.
|
||||
|
||||
config MPENTIUMM
|
||||
bool "Pentium M"
|
||||
bool "Pentium M/Pentium Dual Core/Core Solo/Core Duo"
|
||||
depends on X86_32
|
||||
help
|
||||
Select this for Intel Pentium M (not Pentium-4 M)
|
||||
notebook chips.
|
||||
"Merom" Core Solo/Duo notebook chips
|
||||
|
||||
config MPENTIUM4
|
||||
bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/older Xeon"
|
||||
@@ -139,22 +135,10 @@ config MPENTIUM4
|
||||
-Mobile Pentium 4
|
||||
-Mobile Pentium 4 M
|
||||
-Extreme Edition (Gallatin)
|
||||
-Prescott
|
||||
-Prescott 2M
|
||||
-Cedar Mill
|
||||
-Presler
|
||||
-Smithfiled
|
||||
Xeons (Intel Xeon, Xeon MP, Xeon LV, Xeon MV) corename:
|
||||
-Foster
|
||||
-Prestonia
|
||||
-Gallatin
|
||||
-Nocona
|
||||
-Irwindale
|
||||
-Cranford
|
||||
-Potomac
|
||||
-Paxville
|
||||
-Dempsey
|
||||
|
||||
|
||||
config MK6
|
||||
bool "K6/K6-II/K6-III"
|
||||
@@ -172,13 +156,6 @@ config MK7
|
||||
some extended instructions, and passes appropriate optimization
|
||||
flags to GCC.
|
||||
|
||||
config MK8
|
||||
bool "Opteron/Athlon64/Hammer/K8"
|
||||
help
|
||||
Select this for an AMD Opteron or Athlon64 Hammer-family processor.
|
||||
Enables use of some extended instructions, and passes appropriate
|
||||
optimization flags to GCC.
|
||||
|
||||
config MCRUSOE
|
||||
bool "Crusoe"
|
||||
depends on X86_32
|
||||
@@ -258,42 +235,14 @@ config MVIAC7
|
||||
Select this for a VIA C7. Selecting this uses the correct cache
|
||||
shift and tells gcc to treat the CPU as a 686.
|
||||
|
||||
config MPSC
|
||||
bool "Intel P4 / older Netburst based Xeon"
|
||||
depends on X86_64
|
||||
help
|
||||
Optimize for Intel Pentium 4, Pentium D and older Nocona/Dempsey
|
||||
Xeon CPUs with Intel 64bit which is compatible with x86-64.
|
||||
Note that the latest Xeons (Xeon 51xx and 53xx) are not based on the
|
||||
Netburst core and shouldn't use this option. You can distinguish them
|
||||
using the cpu family field
|
||||
in /proc/cpuinfo. Family 15 is an older Xeon, Family 6 a newer one.
|
||||
|
||||
config MCORE2
|
||||
bool "Core 2/newer Xeon"
|
||||
help
|
||||
|
||||
Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and
|
||||
53xx) CPUs. You can distinguish newer from older Xeons by the CPU
|
||||
family in /proc/cpuinfo. Newer ones have 6 and older ones 15
|
||||
(not a typo)
|
||||
|
||||
config MATOM
|
||||
bool "Intel Atom"
|
||||
help
|
||||
|
||||
Select this for the Intel Atom platform. Intel Atom CPUs have an
|
||||
in-order pipelining architecture and thus can benefit from
|
||||
accordingly optimized code. Use a recent GCC with specific Atom
|
||||
support in order to fully benefit from selecting this option.
|
||||
|
||||
config GENERIC_CPU
|
||||
bool "Generic-x86-64"
|
||||
depends on X86_64
|
||||
help
|
||||
Generic x86-64 CPU.
|
||||
Run equally well on all x86-64 CPUs.
|
||||
|
||||
endchoice
|
||||
|
||||
config X86_GENERIC
|
||||
@@ -317,8 +266,8 @@ config X86_INTERNODE_CACHE_SHIFT
|
||||
|
||||
config X86_L1_CACHE_SHIFT
|
||||
int
|
||||
default "7" if MPENTIUM4 || MPSC
|
||||
default "6" if MK7 || MK8 || MPENTIUMM || MCORE2 || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
|
||||
default "7" if MPENTIUM4
|
||||
default "6" if MK7 || MPENTIUMM || MATOM || MVIAC7 || X86_GENERIC || X86_64
|
||||
default "4" if MELAN || M486SX || M486 || MGEODEGX1
|
||||
default "5" if MWINCHIP3D || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE_LX
|
||||
|
||||
@@ -336,51 +285,35 @@ config X86_ALIGNMENT_16
|
||||
|
||||
config X86_INTEL_USERCOPY
|
||||
def_bool y
|
||||
depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON || MCORE2
|
||||
depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK7 || MEFFICEON
|
||||
|
||||
config X86_USE_PPRO_CHECKSUM
|
||||
def_bool y
|
||||
depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MATOM
|
||||
|
||||
#
|
||||
# P6_NOPs are a relatively minor optimization that require a family >=
|
||||
# 6 processor, except that it is broken on certain VIA chips.
|
||||
# Furthermore, AMD chips prefer a totally different sequence of NOPs
|
||||
# (which work on all CPUs). In addition, it looks like Virtual PC
|
||||
# does not understand them.
|
||||
#
|
||||
# As a result, disallow these if we're not compiling for X86_64 (these
|
||||
# NOPs do work on all x86-64 capable chips); the list of processors in
|
||||
# the right-hand clause are the cores that benefit from this optimization.
|
||||
#
|
||||
config X86_P6_NOP
|
||||
def_bool y
|
||||
depends on X86_64
|
||||
depends on (MCORE2 || MPENTIUM4 || MPSC)
|
||||
depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MATOM
|
||||
|
||||
config X86_TSC
|
||||
def_bool y
|
||||
depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MATOM) || X86_64
|
||||
depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MATOM) || X86_64
|
||||
|
||||
config X86_HAVE_PAE
|
||||
def_bool y
|
||||
depends on MCRUSOE || MEFFICEON || MCYRIXIII || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC7 || MCORE2 || MATOM || X86_64
|
||||
depends on MCRUSOE || MEFFICEON || MCYRIXIII || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC7 || MATOM || X86_64
|
||||
|
||||
config X86_CMPXCHG64
|
||||
config X86_CX8
|
||||
def_bool y
|
||||
depends on X86_HAVE_PAE || M586TSC || M586MMX || MK6 || MK7
|
||||
depends on X86_HAVE_PAE || M586TSC || M586MMX || MK6 || MK7 || MGEODEGX1 || MGEODE_LX
|
||||
|
||||
# this should be set for all -march=.. options where the compiler
|
||||
# generates cmov.
|
||||
config X86_CMOV
|
||||
def_bool y
|
||||
depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
|
||||
depends on (MK7 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || MATOM || MGEODE_LX || X86_64)
|
||||
|
||||
config X86_MINIMUM_CPU_FAMILY
|
||||
int
|
||||
default "64" if X86_64
|
||||
default "6" if X86_32 && (MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MEFFICEON || MATOM || MCORE2 || MK7 || MK8)
|
||||
default "5" if X86_32 && X86_CMPXCHG64
|
||||
default "6" if X86_32 && (MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MEFFICEON || MATOM || MK7)
|
||||
default "5" if X86_32 && X86_CX8
|
||||
default "4"
|
||||
|
||||
config X86_DEBUGCTLMSR
|
||||
@@ -401,6 +334,10 @@ menuconfig PROCESSOR_SELECT
|
||||
This lets you choose what x86 vendor support code your kernel
|
||||
will include.
|
||||
|
||||
config BROADCAST_TLB_FLUSH
|
||||
def_bool y
|
||||
depends on CPU_SUP_AMD && 64BIT
|
||||
|
||||
config CPU_SUP_INTEL
|
||||
default y
|
||||
bool "Support Intel processors" if PROCESSOR_SELECT
|
||||
|
||||
@@ -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
|
||||
+29
-22
@@ -142,14 +142,7 @@ ifeq ($(CONFIG_X86_32),y)
|
||||
KBUILD_CFLAGS += -ffreestanding
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_STACKPROTECTOR),y)
|
||||
ifeq ($(CONFIG_SMP),y)
|
||||
KBUILD_CFLAGS += -mstack-protector-guard-reg=fs \
|
||||
-mstack-protector-guard-symbol=__ref_stack_chk_guard
|
||||
else
|
||||
KBUILD_CFLAGS += -mstack-protector-guard=global
|
||||
endif
|
||||
endif
|
||||
percpu_seg := fs
|
||||
else
|
||||
BITS := 64
|
||||
UTS_MACHINE := x86_64
|
||||
@@ -180,25 +173,24 @@ else
|
||||
# Use -mskip-rax-setup if supported.
|
||||
KBUILD_CFLAGS += $(call cc-option,-mskip-rax-setup)
|
||||
|
||||
# FIXME - should be integrated in Makefile.cpu (Makefile_32.cpu)
|
||||
cflags-$(CONFIG_MK8) += -march=k8
|
||||
cflags-$(CONFIG_MPSC) += -march=nocona
|
||||
cflags-$(CONFIG_MCORE2) += -march=core2
|
||||
cflags-$(CONFIG_MATOM) += -march=atom
|
||||
cflags-$(CONFIG_GENERIC_CPU) += -mtune=generic
|
||||
KBUILD_CFLAGS += $(cflags-y)
|
||||
|
||||
rustflags-$(CONFIG_MK8) += -Ctarget-cpu=k8
|
||||
rustflags-$(CONFIG_MPSC) += -Ctarget-cpu=nocona
|
||||
rustflags-$(CONFIG_MCORE2) += -Ctarget-cpu=core2
|
||||
rustflags-$(CONFIG_MATOM) += -Ctarget-cpu=atom
|
||||
rustflags-$(CONFIG_GENERIC_CPU) += -Ztune-cpu=generic
|
||||
KBUILD_RUSTFLAGS += $(rustflags-y)
|
||||
KBUILD_CFLAGS += -march=x86-64 -mtune=generic
|
||||
KBUILD_RUSTFLAGS += -Ctarget-cpu=x86-64 -Ztune-cpu=generic
|
||||
|
||||
KBUILD_CFLAGS += -mno-red-zone
|
||||
KBUILD_CFLAGS += -mcmodel=kernel
|
||||
KBUILD_RUSTFLAGS += -Cno-redzone=y
|
||||
KBUILD_RUSTFLAGS += -Ccode-model=kernel
|
||||
|
||||
percpu_seg := gs
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_STACKPROTECTOR),y)
|
||||
ifeq ($(CONFIG_SMP),y)
|
||||
KBUILD_CFLAGS += -mstack-protector-guard-reg=$(percpu_seg)
|
||||
KBUILD_CFLAGS += -mstack-protector-guard-symbol=__ref_stack_chk_guard
|
||||
else
|
||||
KBUILD_CFLAGS += -mstack-protector-guard=global
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
@@ -278,6 +270,21 @@ archscripts: scripts_basic
|
||||
archheaders:
|
||||
$(Q)$(MAKE) $(build)=arch/x86/entry/syscalls all
|
||||
|
||||
###
|
||||
# <asm/cpufeaturemasks.h> header generation
|
||||
|
||||
cpufeaturemasks.hdr := arch/x86/include/generated/asm/cpufeaturemasks.h
|
||||
cpufeaturemasks.awk := $(srctree)/arch/x86/tools/cpufeaturemasks.awk
|
||||
cpufeatures_hdr := $(srctree)/arch/x86/include/asm/cpufeatures.h
|
||||
targets += $(cpufeaturemasks.hdr)
|
||||
quiet_cmd_gen_featuremasks = GEN $@
|
||||
cmd_gen_featuremasks = $(AWK) -f $(cpufeaturemasks.awk) $(cpufeatures_hdr) $(KCONFIG_CONFIG) > $@
|
||||
|
||||
$(cpufeaturemasks.hdr): $(cpufeaturemasks.awk) $(cpufeatures_hdr) $(KCONFIG_CONFIG) FORCE
|
||||
$(shell mkdir -p $(dir $@))
|
||||
$(call if_changed,gen_featuremasks)
|
||||
archprepare: $(cpufeaturemasks.hdr)
|
||||
|
||||
###
|
||||
# Kernel objects
|
||||
|
||||
|
||||
@@ -24,7 +24,6 @@ cflags-$(CONFIG_MK6) += -march=k6
|
||||
# Please note, that patches that add -march=athlon-xp and friends are pointless.
|
||||
# They make zero difference whatsosever to performance at this time.
|
||||
cflags-$(CONFIG_MK7) += -march=athlon
|
||||
cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8,-march=athlon)
|
||||
cflags-$(CONFIG_MCRUSOE) += -march=i686 $(align)
|
||||
cflags-$(CONFIG_MEFFICEON) += -march=i686 $(call tune,pentium3) $(align)
|
||||
cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586)
|
||||
@@ -32,9 +31,7 @@ cflags-$(CONFIG_MWINCHIP3D) += $(call cc-option,-march=winchip2,-march=i586)
|
||||
cflags-$(CONFIG_MCYRIXIII) += $(call cc-option,-march=c3,-march=i486) $(align)
|
||||
cflags-$(CONFIG_MVIAC3_2) += $(call cc-option,-march=c3-2,-march=i686)
|
||||
cflags-$(CONFIG_MVIAC7) += -march=i686
|
||||
cflags-$(CONFIG_MCORE2) += -march=i686 $(call tune,core2)
|
||||
cflags-$(CONFIG_MATOM) += $(call cc-option,-march=atom,$(call cc-option,-march=core2,-march=i686)) \
|
||||
$(call cc-option,-mtune=atom,$(call cc-option,-mtune=generic))
|
||||
cflags-$(CONFIG_MATOM) += -march=atom
|
||||
|
||||
# AMD Elan support
|
||||
cflags-$(CONFIG_MELAN) += -march=i486
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#define STACK_SIZE 1024 /* Minimum number of bytes for stack */
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
#include <linux/stdarg.h>
|
||||
#include <linux/types.h>
|
||||
@@ -327,6 +327,6 @@ void probe_cards(int unsafe);
|
||||
/* video-vesa.c */
|
||||
void vesa_store_edid(void);
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
||||
#endif /* BOOT_BOOT_H */
|
||||
|
||||
@@ -235,7 +235,7 @@ static void handle_relocations(void *output, unsigned long output_len,
|
||||
|
||||
/*
|
||||
* Process relocations: 32 bit relocations first then 64 bit after.
|
||||
* Three sets of binary relocations are added to the end of the kernel
|
||||
* Two sets of binary relocations are added to the end of the kernel
|
||||
* before compression. Each relocation table entry is the kernel
|
||||
* address of the location which needs to be updated stored as a
|
||||
* 32-bit value which is sign extended to 64 bits.
|
||||
@@ -245,8 +245,6 @@ static void handle_relocations(void *output, unsigned long output_len,
|
||||
* kernel bits...
|
||||
* 0 - zero terminator for 64 bit relocations
|
||||
* 64 bit relocation repeated
|
||||
* 0 - zero terminator for inverse 32 bit relocations
|
||||
* 32 bit inverse relocation repeated
|
||||
* 0 - zero terminator for 32 bit relocations
|
||||
* 32 bit relocation repeated
|
||||
*
|
||||
@@ -263,16 +261,6 @@ static void handle_relocations(void *output, unsigned long output_len,
|
||||
*(uint32_t *)ptr += delta;
|
||||
}
|
||||
#ifdef CONFIG_X86_64
|
||||
while (*--reloc) {
|
||||
long extended = *reloc;
|
||||
extended += map;
|
||||
|
||||
ptr = (unsigned long)extended;
|
||||
if (ptr < min_addr || ptr > max_addr)
|
||||
error("inverse 32-bit relocation outside of kernel!\n");
|
||||
|
||||
*(int32_t *)ptr -= delta;
|
||||
}
|
||||
for (reloc--; *reloc; reloc--) {
|
||||
long extended = *reloc;
|
||||
extended += map;
|
||||
|
||||
@@ -22,10 +22,11 @@
|
||||
# include "boot.h"
|
||||
#endif
|
||||
#include <linux/types.h>
|
||||
#include <asm/cpufeaturemasks.h>
|
||||
#include <asm/intel-family.h>
|
||||
#include <asm/processor-flags.h>
|
||||
#include <asm/required-features.h>
|
||||
#include <asm/msr-index.h>
|
||||
|
||||
#include "string.h"
|
||||
#include "msr.h"
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#include "bitops.h"
|
||||
|
||||
#include <asm/processor-flags.h>
|
||||
#include <asm/required-features.h>
|
||||
#include <asm/msr-index.h>
|
||||
#include "cpuflags.h"
|
||||
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "../include/asm/required-features.h"
|
||||
#include "../include/asm/disabled-features.h"
|
||||
#include "../include/asm/cpufeatures.h"
|
||||
#include "../include/asm/vmxfeatures.h"
|
||||
#include "../kernel/cpu/capflags.c"
|
||||
@@ -23,6 +21,7 @@ int main(void)
|
||||
int i, j;
|
||||
const char *str;
|
||||
|
||||
printf("#include <asm/cpufeaturemasks.h>\n\n");
|
||||
printf("static const char x86_cap_strs[] =\n");
|
||||
|
||||
for (i = 0; i < NCAPINTS; i++) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user