]> Git Repo - linux.git/blob - arch/x86/Kconfig
ethtool: Veto some operations during firmware flashing process
[linux.git] / arch / x86 / Kconfig
1 # SPDX-License-Identifier: GPL-2.0
2 # Select 32 or 64 bit
3 config 64BIT
4         bool "64-bit kernel" if "$(ARCH)" = "x86"
5         default "$(ARCH)" != "i386"
6         help
7           Say yes to build a 64-bit kernel - formerly known as x86_64
8           Say no to build a 32-bit kernel - formerly known as i386
9
10 config X86_32
11         def_bool y
12         depends on !64BIT
13         # Options that are inherently 32-bit kernel only:
14         select ARCH_WANT_IPC_PARSE_VERSION
15         select CLKSRC_I8253
16         select CLONE_BACKWARDS
17         select GENERIC_VDSO_32
18         select HAVE_DEBUG_STACKOVERFLOW
19         select KMAP_LOCAL
20         select MODULES_USE_ELF_REL
21         select OLD_SIGACTION
22         select ARCH_SPLIT_ARG64
23
24 config X86_64
25         def_bool y
26         depends on 64BIT
27         # Options that are inherently 64-bit kernel only:
28         select ARCH_HAS_GIGANTIC_PAGE
29         select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
30         select ARCH_SUPPORTS_PER_VMA_LOCK
31         select HAVE_ARCH_SOFT_DIRTY
32         select MODULES_USE_ELF_RELA
33         select NEED_DMA_MAP_STATE
34         select SWIOTLB
35         select ARCH_HAS_ELFCORE_COMPAT
36         select ZONE_DMA32
37         select EXECMEM if DYNAMIC_FTRACE
38
39 config FORCE_DYNAMIC_FTRACE
40         def_bool y
41         depends on X86_32
42         depends on FUNCTION_TRACER
43         select DYNAMIC_FTRACE
44         help
45           We keep the static function tracing (!DYNAMIC_FTRACE) around
46           in order to test the non static function tracing in the
47           generic code, as other architectures still use it. But we
48           only need to keep it around for x86_64. No need to keep it
49           for x86_32. For x86_32, force DYNAMIC_FTRACE.
50 #
51 # Arch settings
52 #
53 # ( Note that options that are marked 'if X86_64' could in principle be
54 #   ported to 32-bit as well. )
55 #
56 config X86
57         def_bool y
58         #
59         # Note: keep this list sorted alphabetically
60         #
61         select ACPI_LEGACY_TABLES_LOOKUP        if ACPI
62         select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
63         select ACPI_HOTPLUG_CPU                 if ACPI_PROCESSOR && HOTPLUG_CPU
64         select ARCH_32BIT_OFF_T                 if X86_32
65         select ARCH_CLOCKSOURCE_INIT
66         select ARCH_CONFIGURES_CPU_MITIGATIONS
67         select ARCH_CORRECT_STACKTRACE_ON_KRETPROBE
68         select ARCH_ENABLE_HUGEPAGE_MIGRATION if X86_64 && HUGETLB_PAGE && MIGRATION
69         select ARCH_ENABLE_MEMORY_HOTPLUG if X86_64
70         select ARCH_ENABLE_MEMORY_HOTREMOVE if MEMORY_HOTPLUG
71         select ARCH_ENABLE_SPLIT_PMD_PTLOCK if (PGTABLE_LEVELS > 2) && (X86_64 || X86_PAE)
72         select ARCH_ENABLE_THP_MIGRATION if X86_64 && TRANSPARENT_HUGEPAGE
73         select ARCH_HAS_ACPI_TABLE_UPGRADE      if ACPI
74         select ARCH_HAS_CACHE_LINE_SIZE
75         select ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION
76         select ARCH_HAS_CPU_FINALIZE_INIT
77         select ARCH_HAS_CPU_PASID               if IOMMU_SVA
78         select ARCH_HAS_CURRENT_STACK_POINTER
79         select ARCH_HAS_DEBUG_VIRTUAL
80         select ARCH_HAS_DEBUG_VM_PGTABLE        if !X86_PAE
81         select ARCH_HAS_DEVMEM_IS_ALLOWED
82         select ARCH_HAS_EARLY_DEBUG             if KGDB
83         select ARCH_HAS_ELF_RANDOMIZE
84         select ARCH_HAS_FAST_MULTIPLIER
85         select ARCH_HAS_FORTIFY_SOURCE
86         select ARCH_HAS_GCOV_PROFILE_ALL
87         select ARCH_HAS_KCOV                    if X86_64
88         select ARCH_HAS_KERNEL_FPU_SUPPORT
89         select ARCH_HAS_MEM_ENCRYPT
90         select ARCH_HAS_MEMBARRIER_SYNC_CORE
91         select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS
92         select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
93         select ARCH_HAS_PMEM_API                if X86_64
94         select ARCH_HAS_PTE_DEVMAP              if X86_64
95         select ARCH_HAS_PTE_SPECIAL
96         select ARCH_HAS_HW_PTE_YOUNG
97         select ARCH_HAS_NONLEAF_PMD_YOUNG       if PGTABLE_LEVELS > 2
98         select ARCH_HAS_UACCESS_FLUSHCACHE      if X86_64
99         select ARCH_HAS_COPY_MC                 if X86_64
100         select ARCH_HAS_SET_MEMORY
101         select ARCH_HAS_SET_DIRECT_MAP
102         select ARCH_HAS_STRICT_KERNEL_RWX
103         select ARCH_HAS_STRICT_MODULE_RWX
104         select ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
105         select ARCH_HAS_SYSCALL_WRAPPER
106         select ARCH_HAS_UBSAN
107         select ARCH_HAS_DEBUG_WX
108         select ARCH_HAS_ZONE_DMA_SET if EXPERT
109         select ARCH_HAVE_NMI_SAFE_CMPXCHG
110         select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE
111         select ARCH_MIGHT_HAVE_ACPI_PDC         if ACPI
112         select ARCH_MIGHT_HAVE_PC_PARPORT
113         select ARCH_MIGHT_HAVE_PC_SERIO
114         select ARCH_STACKWALK
115         select ARCH_SUPPORTS_ACPI
116         select ARCH_SUPPORTS_ATOMIC_RMW
117         select ARCH_SUPPORTS_DEBUG_PAGEALLOC
118         select ARCH_SUPPORTS_PAGE_TABLE_CHECK   if X86_64
119         select ARCH_SUPPORTS_NUMA_BALANCING     if X86_64
120         select ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP       if NR_CPUS <= 4096
121         select ARCH_SUPPORTS_CFI_CLANG          if X86_64
122         select ARCH_USES_CFI_TRAPS              if X86_64 && CFI_CLANG
123         select ARCH_SUPPORTS_LTO_CLANG
124         select ARCH_SUPPORTS_LTO_CLANG_THIN
125         select ARCH_USE_BUILTIN_BSWAP
126         select ARCH_USE_CMPXCHG_LOCKREF         if X86_CMPXCHG64
127         select ARCH_USE_MEMTEST
128         select ARCH_USE_QUEUED_RWLOCKS
129         select ARCH_USE_QUEUED_SPINLOCKS
130         select ARCH_USE_SYM_ANNOTATIONS
131         select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
132         select ARCH_WANT_DEFAULT_BPF_JIT        if X86_64
133         select ARCH_WANTS_DYNAMIC_TASK_STRUCT
134         select ARCH_WANTS_NO_INSTR
135         select ARCH_WANT_GENERAL_HUGETLB
136         select ARCH_WANT_HUGE_PMD_SHARE
137         select ARCH_WANT_LD_ORPHAN_WARN
138         select ARCH_WANT_OPTIMIZE_DAX_VMEMMAP   if X86_64
139         select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP       if X86_64
140         select ARCH_WANTS_THP_SWAP              if X86_64
141         select ARCH_HAS_PARANOID_L1D_FLUSH
142         select BUILDTIME_TABLE_SORT
143         select CLKEVT_I8253
144         select CLOCKSOURCE_VALIDATE_LAST_CYCLE
145         select CLOCKSOURCE_WATCHDOG
146         # Word-size accesses may read uninitialized data past the trailing \0
147         # in strings and cause false KMSAN reports.
148         select DCACHE_WORD_ACCESS               if !KMSAN
149         select DYNAMIC_SIGFRAME
150         select EDAC_ATOMIC_SCRUB
151         select EDAC_SUPPORT
152         select GENERIC_CLOCKEVENTS_BROADCAST    if X86_64 || (X86_32 && X86_LOCAL_APIC)
153         select GENERIC_CLOCKEVENTS_BROADCAST_IDLE       if GENERIC_CLOCKEVENTS_BROADCAST
154         select GENERIC_CLOCKEVENTS_MIN_ADJUST
155         select GENERIC_CMOS_UPDATE
156         select GENERIC_CPU_AUTOPROBE
157         select GENERIC_CPU_DEVICES
158         select GENERIC_CPU_VULNERABILITIES
159         select GENERIC_EARLY_IOREMAP
160         select GENERIC_ENTRY
161         select GENERIC_IOMAP
162         select GENERIC_IRQ_EFFECTIVE_AFF_MASK   if SMP
163         select GENERIC_IRQ_MATRIX_ALLOCATOR     if X86_LOCAL_APIC
164         select GENERIC_IRQ_MIGRATION            if SMP
165         select GENERIC_IRQ_PROBE
166         select GENERIC_IRQ_RESERVATION_MODE
167         select GENERIC_IRQ_SHOW
168         select GENERIC_PENDING_IRQ              if SMP
169         select GENERIC_PTDUMP
170         select GENERIC_SMP_IDLE_THREAD
171         select GENERIC_TIME_VSYSCALL
172         select GENERIC_GETTIMEOFDAY
173         select GENERIC_VDSO_TIME_NS
174         select GENERIC_VDSO_OVERFLOW_PROTECT
175         select GUP_GET_PXX_LOW_HIGH             if X86_PAE
176         select HARDIRQS_SW_RESEND
177         select HARDLOCKUP_CHECK_TIMESTAMP       if X86_64
178         select HAS_IOPORT
179         select HAVE_ACPI_APEI                   if ACPI
180         select HAVE_ACPI_APEI_NMI               if ACPI
181         select HAVE_ALIGNED_STRUCT_PAGE
182         select HAVE_ARCH_AUDITSYSCALL
183         select HAVE_ARCH_HUGE_VMAP              if X86_64 || X86_PAE
184         select HAVE_ARCH_HUGE_VMALLOC           if X86_64
185         select HAVE_ARCH_JUMP_LABEL
186         select HAVE_ARCH_JUMP_LABEL_RELATIVE
187         select HAVE_ARCH_KASAN                  if X86_64
188         select HAVE_ARCH_KASAN_VMALLOC          if X86_64
189         select HAVE_ARCH_KFENCE
190         select HAVE_ARCH_KMSAN                  if X86_64
191         select HAVE_ARCH_KGDB
192         select HAVE_ARCH_MMAP_RND_BITS          if MMU
193         select HAVE_ARCH_MMAP_RND_COMPAT_BITS   if MMU && COMPAT
194         select HAVE_ARCH_COMPAT_MMAP_BASES      if MMU && COMPAT
195         select HAVE_ARCH_PREL32_RELOCATIONS
196         select HAVE_ARCH_SECCOMP_FILTER
197         select HAVE_ARCH_THREAD_STRUCT_WHITELIST
198         select HAVE_ARCH_STACKLEAK
199         select HAVE_ARCH_TRACEHOOK
200         select HAVE_ARCH_TRANSPARENT_HUGEPAGE
201         select HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD if X86_64
202         select HAVE_ARCH_USERFAULTFD_WP         if X86_64 && USERFAULTFD
203         select HAVE_ARCH_USERFAULTFD_MINOR      if X86_64 && USERFAULTFD
204         select HAVE_ARCH_VMAP_STACK             if X86_64
205         select HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET
206         select HAVE_ARCH_WITHIN_STACK_FRAMES
207         select HAVE_ASM_MODVERSIONS
208         select HAVE_CMPXCHG_DOUBLE
209         select HAVE_CMPXCHG_LOCAL
210         select HAVE_CONTEXT_TRACKING_USER               if X86_64
211         select HAVE_CONTEXT_TRACKING_USER_OFFSTACK      if HAVE_CONTEXT_TRACKING_USER
212         select HAVE_C_RECORDMCOUNT
213         select HAVE_OBJTOOL_MCOUNT              if HAVE_OBJTOOL
214         select HAVE_OBJTOOL_NOP_MCOUNT          if HAVE_OBJTOOL_MCOUNT
215         select HAVE_BUILDTIME_MCOUNT_SORT
216         select HAVE_DEBUG_KMEMLEAK
217         select HAVE_DMA_CONTIGUOUS
218         select HAVE_DYNAMIC_FTRACE
219         select HAVE_DYNAMIC_FTRACE_WITH_REGS
220         select HAVE_DYNAMIC_FTRACE_WITH_ARGS    if X86_64
221         select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
222         select HAVE_SAMPLE_FTRACE_DIRECT        if X86_64
223         select HAVE_SAMPLE_FTRACE_DIRECT_MULTI  if X86_64
224         select HAVE_EBPF_JIT
225         select HAVE_EFFICIENT_UNALIGNED_ACCESS
226         select HAVE_EISA
227         select HAVE_EXIT_THREAD
228         select HAVE_GUP_FAST
229         select HAVE_FENTRY                      if X86_64 || DYNAMIC_FTRACE
230         select HAVE_FTRACE_MCOUNT_RECORD
231         select HAVE_FUNCTION_GRAPH_RETVAL       if HAVE_FUNCTION_GRAPH_TRACER
232         select HAVE_FUNCTION_GRAPH_TRACER       if X86_32 || (X86_64 && DYNAMIC_FTRACE)
233         select HAVE_FUNCTION_TRACER
234         select HAVE_GCC_PLUGINS
235         select HAVE_HW_BREAKPOINT
236         select HAVE_IOREMAP_PROT
237         select HAVE_IRQ_EXIT_ON_IRQ_STACK       if X86_64
238         select HAVE_IRQ_TIME_ACCOUNTING
239         select HAVE_JUMP_LABEL_HACK             if HAVE_OBJTOOL
240         select HAVE_KERNEL_BZIP2
241         select HAVE_KERNEL_GZIP
242         select HAVE_KERNEL_LZ4
243         select HAVE_KERNEL_LZMA
244         select HAVE_KERNEL_LZO
245         select HAVE_KERNEL_XZ
246         select HAVE_KERNEL_ZSTD
247         select HAVE_KPROBES
248         select HAVE_KPROBES_ON_FTRACE
249         select HAVE_FUNCTION_ERROR_INJECTION
250         select HAVE_KRETPROBES
251         select HAVE_RETHOOK
252         select HAVE_LIVEPATCH                   if X86_64
253         select HAVE_MIXED_BREAKPOINTS_REGS
254         select HAVE_MOD_ARCH_SPECIFIC
255         select HAVE_MOVE_PMD
256         select HAVE_MOVE_PUD
257         select HAVE_NOINSTR_HACK                if HAVE_OBJTOOL
258         select HAVE_NMI
259         select HAVE_NOINSTR_VALIDATION          if HAVE_OBJTOOL
260         select HAVE_OBJTOOL                     if X86_64
261         select HAVE_OPTPROBES
262         select HAVE_PAGE_SIZE_4KB
263         select HAVE_PCSPKR_PLATFORM
264         select HAVE_PERF_EVENTS
265         select HAVE_PERF_EVENTS_NMI
266         select HAVE_HARDLOCKUP_DETECTOR_PERF    if PERF_EVENTS && HAVE_PERF_EVENTS_NMI
267         select HAVE_PCI
268         select HAVE_PERF_REGS
269         select HAVE_PERF_USER_STACK_DUMP
270         select MMU_GATHER_RCU_TABLE_FREE        if PARAVIRT
271         select MMU_GATHER_MERGE_VMAS
272         select HAVE_POSIX_CPU_TIMERS_TASK_WORK
273         select HAVE_REGS_AND_STACK_ACCESS_API
274         select HAVE_RELIABLE_STACKTRACE         if UNWINDER_ORC || STACK_VALIDATION
275         select HAVE_FUNCTION_ARG_ACCESS_API
276         select HAVE_SETUP_PER_CPU_AREA
277         select HAVE_SOFTIRQ_ON_OWN_STACK
278         select HAVE_STACKPROTECTOR              if CC_HAS_SANE_STACKPROTECTOR
279         select HAVE_STACK_VALIDATION            if HAVE_OBJTOOL
280         select HAVE_STATIC_CALL
281         select HAVE_STATIC_CALL_INLINE          if HAVE_OBJTOOL
282         select HAVE_PREEMPT_DYNAMIC_CALL
283         select HAVE_RSEQ
284         select HAVE_RUST                        if X86_64
285         select HAVE_SYSCALL_TRACEPOINTS
286         select HAVE_UACCESS_VALIDATION          if HAVE_OBJTOOL
287         select HAVE_UNSTABLE_SCHED_CLOCK
288         select HAVE_USER_RETURN_NOTIFIER
289         select HAVE_GENERIC_VDSO
290         select HOTPLUG_PARALLEL                 if SMP && X86_64
291         select HOTPLUG_SMT                      if SMP
292         select HOTPLUG_SPLIT_STARTUP            if SMP && X86_32
293         select IRQ_FORCED_THREADING
294         select LOCK_MM_AND_FIND_VMA
295         select NEED_PER_CPU_EMBED_FIRST_CHUNK
296         select NEED_PER_CPU_PAGE_FIRST_CHUNK
297         select NEED_SG_DMA_LENGTH
298         select PCI_DOMAINS                      if PCI
299         select PCI_LOCKLESS_CONFIG              if PCI
300         select PERF_EVENTS
301         select RTC_LIB
302         select RTC_MC146818_LIB
303         select SPARSE_IRQ
304         select SYSCTL_EXCEPTION_TRACE
305         select THREAD_INFO_IN_TASK
306         select TRACE_IRQFLAGS_SUPPORT
307         select TRACE_IRQFLAGS_NMI_SUPPORT
308         select USER_STACKTRACE_SUPPORT
309         select HAVE_ARCH_KCSAN                  if X86_64
310         select PROC_PID_ARCH_STATUS             if PROC_FS
311         select HAVE_ARCH_NODE_DEV_GROUP         if X86_SGX
312         select FUNCTION_ALIGNMENT_16B           if X86_64 || X86_ALIGNMENT_16
313         select FUNCTION_ALIGNMENT_4B
314         imply IMA_SECURE_AND_OR_TRUSTED_BOOT    if EFI
315         select HAVE_DYNAMIC_FTRACE_NO_PATCHABLE
316
317 config INSTRUCTION_DECODER
318         def_bool y
319         depends on KPROBES || PERF_EVENTS || UPROBES
320
321 config OUTPUT_FORMAT
322         string
323         default "elf32-i386" if X86_32
324         default "elf64-x86-64" if X86_64
325
326 config LOCKDEP_SUPPORT
327         def_bool y
328
329 config STACKTRACE_SUPPORT
330         def_bool y
331
332 config MMU
333         def_bool y
334
335 config ARCH_MMAP_RND_BITS_MIN
336         default 28 if 64BIT
337         default 8
338
339 config ARCH_MMAP_RND_BITS_MAX
340         default 32 if 64BIT
341         default 16
342
343 config ARCH_MMAP_RND_COMPAT_BITS_MIN
344         default 8
345
346 config ARCH_MMAP_RND_COMPAT_BITS_MAX
347         default 16
348
349 config SBUS
350         bool
351
352 config GENERIC_ISA_DMA
353         def_bool y
354         depends on ISA_DMA_API
355
356 config GENERIC_CSUM
357         bool
358         default y if KMSAN || KASAN
359
360 config GENERIC_BUG
361         def_bool y
362         depends on BUG
363         select GENERIC_BUG_RELATIVE_POINTERS if X86_64
364
365 config GENERIC_BUG_RELATIVE_POINTERS
366         bool
367
368 config ARCH_MAY_HAVE_PC_FDC
369         def_bool y
370         depends on ISA_DMA_API
371
372 config GENERIC_CALIBRATE_DELAY
373         def_bool y
374
375 config ARCH_HAS_CPU_RELAX
376         def_bool y
377
378 config ARCH_HIBERNATION_POSSIBLE
379         def_bool y
380
381 config ARCH_SUSPEND_POSSIBLE
382         def_bool y
383
384 config AUDIT_ARCH
385         def_bool y if X86_64
386
387 config KASAN_SHADOW_OFFSET
388         hex
389         depends on KASAN
390         default 0xdffffc0000000000
391
392 config HAVE_INTEL_TXT
393         def_bool y
394         depends on INTEL_IOMMU && ACPI
395
396 config X86_64_SMP
397         def_bool y
398         depends on X86_64 && SMP
399
400 config ARCH_SUPPORTS_UPROBES
401         def_bool y
402
403 config FIX_EARLYCON_MEM
404         def_bool y
405
406 config DYNAMIC_PHYSICAL_MASK
407         bool
408
409 config PGTABLE_LEVELS
410         int
411         default 5 if X86_5LEVEL
412         default 4 if X86_64
413         default 3 if X86_PAE
414         default 2
415
416 config CC_HAS_SANE_STACKPROTECTOR
417         bool
418         default $(success,$(srctree)/scripts/gcc-x86_64-has-stack-protector.sh $(CC) $(CLANG_FLAGS)) if 64BIT
419         default $(success,$(srctree)/scripts/gcc-x86_32-has-stack-protector.sh $(CC) $(CLANG_FLAGS))
420         help
421           We have to make sure stack protector is unconditionally disabled if
422           the compiler produces broken code or if it does not let us control
423           the segment on 32-bit kernels.
424
425 menu "Processor type and features"
426
427 config SMP
428         bool "Symmetric multi-processing support"
429         help
430           This enables support for systems with more than one CPU. If you have
431           a system with only one CPU, say N. If you have a system with more
432           than one CPU, say Y.
433
434           If you say N here, the kernel will run on uni- and multiprocessor
435           machines, but will use only one CPU of a multiprocessor machine. If
436           you say Y here, the kernel will run on many, but not all,
437           uniprocessor machines. On a uniprocessor machine, the kernel
438           will run faster if you say N here.
439
440           Note that if you say Y here and choose architecture "586" or
441           "Pentium" under "Processor family", the kernel will not work on 486
442           architectures. Similarly, multiprocessor kernels for the "PPro"
443           architecture may not work on all Pentium based boards.
444
445           People using multiprocessor machines who say Y here should also say
446           Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
447           Management" code will be disabled if you say Y here.
448
449           See also <file:Documentation/arch/x86/i386/IO-APIC.rst>,
450           <file:Documentation/admin-guide/lockup-watchdogs.rst> and the SMP-HOWTO available at
451           <http://www.tldp.org/docs.html#howto>.
452
453           If you don't know what to do here, say N.
454
455 config X86_X2APIC
456         bool "Support x2apic"
457         depends on X86_LOCAL_APIC && X86_64 && (IRQ_REMAP || HYPERVISOR_GUEST)
458         help
459           This enables x2apic support on CPUs that have this feature.
460
461           This allows 32-bit apic IDs (so it can support very large systems),
462           and accesses the local apic via MSRs not via mmio.
463
464           Some Intel systems circa 2022 and later are locked into x2APIC mode
465           and can not fall back to the legacy APIC modes if SGX or TDX are
466           enabled in the BIOS. They will boot with very reduced functionality
467           without enabling this option.
468
469           If you don't know what to do here, say N.
470
471 config X86_POSTED_MSI
472         bool "Enable MSI and MSI-x delivery by posted interrupts"
473         depends on X86_64 && IRQ_REMAP
474         help
475           This enables MSIs that are under interrupt remapping to be delivered as
476           posted interrupts to the host kernel. Interrupt throughput can
477           potentially be improved by coalescing CPU notifications during high
478           frequency bursts.
479
480           If you don't know what to do here, say N.
481
482 config X86_MPPARSE
483         bool "Enable MPS table" if ACPI
484         default y
485         depends on X86_LOCAL_APIC
486         help
487           For old smp systems that do not have proper acpi support. Newer systems
488           (esp with 64bit cpus) with acpi support, MADT and DSDT will override it
489
490 config X86_CPU_RESCTRL
491         bool "x86 CPU resource control support"
492         depends on X86 && (CPU_SUP_INTEL || CPU_SUP_AMD)
493         select KERNFS
494         select PROC_CPU_RESCTRL         if PROC_FS
495         help
496           Enable x86 CPU resource control support.
497
498           Provide support for the allocation and monitoring of system resources
499           usage by the CPU.
500
501           Intel calls this Intel Resource Director Technology
502           (Intel(R) RDT). More information about RDT can be found in the
503           Intel x86 Architecture Software Developer Manual.
504
505           AMD calls this AMD Platform Quality of Service (AMD QoS).
506           More information about AMD QoS can be found in the AMD64 Technology
507           Platform Quality of Service Extensions manual.
508
509           Say N if unsure.
510
511 config X86_FRED
512         bool "Flexible Return and Event Delivery"
513         depends on X86_64
514         help
515           When enabled, try to use Flexible Return and Event Delivery
516           instead of the legacy SYSCALL/SYSENTER/IDT architecture for
517           ring transitions and exception/interrupt handling if the
518           system supports it.
519
520 config X86_BIGSMP
521         bool "Support for big SMP systems with more than 8 CPUs"
522         depends on SMP && X86_32
523         help
524           This option is needed for the systems that have more than 8 CPUs.
525
526 config X86_EXTENDED_PLATFORM
527         bool "Support for extended (non-PC) x86 platforms"
528         default y
529         help
530           If you disable this option then the kernel will only support
531           standard PC platforms. (which covers the vast majority of
532           systems out there.)
533
534           If you enable this option then you'll be able to select support
535           for the following non-PC x86 platforms, depending on the value of
536           CONFIG_64BIT.
537
538           32-bit platforms (CONFIG_64BIT=n):
539                 Goldfish (Android emulator)
540                 AMD Elan
541                 RDC R-321x SoC
542                 SGI 320/540 (Visual Workstation)
543                 STA2X11-based (e.g. Northville)
544                 Moorestown MID devices
545
546           64-bit platforms (CONFIG_64BIT=y):
547                 Numascale NumaChip
548                 ScaleMP vSMP
549                 SGI Ultraviolet
550
551           If you have one of these systems, or if you want to build a
552           generic distribution kernel, say Y here - otherwise say N.
553
554 # This is an alphabetically sorted list of 64 bit extended platforms
555 # Please maintain the alphabetic order if and when there are additions
556 config X86_NUMACHIP
557         bool "Numascale NumaChip"
558         depends on X86_64
559         depends on X86_EXTENDED_PLATFORM
560         depends on NUMA
561         depends on SMP
562         depends on X86_X2APIC
563         depends on PCI_MMCONFIG
564         help
565           Adds support for Numascale NumaChip large-SMP systems. Needed to
566           enable more than ~168 cores.
567           If you don't have one of these, you should say N here.
568
569 config X86_VSMP
570         bool "ScaleMP vSMP"
571         select HYPERVISOR_GUEST
572         select PARAVIRT
573         depends on X86_64 && PCI
574         depends on X86_EXTENDED_PLATFORM
575         depends on SMP
576         help
577           Support for ScaleMP vSMP systems.  Say 'Y' here if this kernel is
578           supposed to run on these EM64T-based machines.  Only choose this option
579           if you have one of these machines.
580
581 config X86_UV
582         bool "SGI Ultraviolet"
583         depends on X86_64
584         depends on X86_EXTENDED_PLATFORM
585         depends on NUMA
586         depends on EFI
587         depends on KEXEC_CORE
588         depends on X86_X2APIC
589         depends on PCI
590         help
591           This option is needed in order to support SGI Ultraviolet systems.
592           If you don't have one of these, you should say N here.
593
594 # Following is an alphabetically sorted list of 32 bit extended platforms
595 # Please maintain the alphabetic order if and when there are additions
596
597 config X86_GOLDFISH
598         bool "Goldfish (Virtual Platform)"
599         depends on X86_EXTENDED_PLATFORM
600         help
601           Enable support for the Goldfish virtual platform used primarily
602           for Android development. Unless you are building for the Android
603           Goldfish emulator say N here.
604
605 config X86_INTEL_CE
606         bool "CE4100 TV platform"
607         depends on PCI
608         depends on PCI_GODIRECT
609         depends on X86_IO_APIC
610         depends on X86_32
611         depends on X86_EXTENDED_PLATFORM
612         select X86_REBOOTFIXUPS
613         select OF
614         select OF_EARLY_FLATTREE
615         help
616           Select for the Intel CE media processor (CE4100) SOC.
617           This option compiles in support for the CE4100 SOC for settop
618           boxes and media devices.
619
620 config X86_INTEL_MID
621         bool "Intel MID platform support"
622         depends on X86_EXTENDED_PLATFORM
623         depends on X86_PLATFORM_DEVICES
624         depends on PCI
625         depends on X86_64 || (PCI_GOANY && X86_32)
626         depends on X86_IO_APIC
627         select I2C
628         select DW_APB_TIMER
629         select INTEL_SCU_PCI
630         help
631           Select to build a kernel capable of supporting Intel MID (Mobile
632           Internet Device) platform systems which do not have the PCI legacy
633           interfaces. If you are building for a PC class system say N here.
634
635           Intel MID platforms are based on an Intel processor and chipset which
636           consume less power than most of the x86 derivatives.
637
638 config X86_INTEL_QUARK
639         bool "Intel Quark platform support"
640         depends on X86_32
641         depends on X86_EXTENDED_PLATFORM
642         depends on X86_PLATFORM_DEVICES
643         depends on X86_TSC
644         depends on PCI
645         depends on PCI_GOANY
646         depends on X86_IO_APIC
647         select IOSF_MBI
648         select INTEL_IMR
649         select COMMON_CLK
650         help
651           Select to include support for Quark X1000 SoC.
652           Say Y here if you have a Quark based system such as the Arduino
653           compatible Intel Galileo.
654
655 config X86_INTEL_LPSS
656         bool "Intel Low Power Subsystem Support"
657         depends on X86 && ACPI && PCI
658         select COMMON_CLK
659         select PINCTRL
660         select IOSF_MBI
661         help
662           Select to build support for Intel Low Power Subsystem such as
663           found on Intel Lynxpoint PCH. Selecting this option enables
664           things like clock tree (common clock framework) and pincontrol
665           which are needed by the LPSS peripheral drivers.
666
667 config X86_AMD_PLATFORM_DEVICE
668         bool "AMD ACPI2Platform devices support"
669         depends on ACPI
670         select COMMON_CLK
671         select PINCTRL
672         help
673           Select to interpret AMD specific ACPI device to platform device
674           such as I2C, UART, GPIO found on AMD Carrizo and later chipsets.
675           I2C and UART depend on COMMON_CLK to set clock. GPIO driver is
676           implemented under PINCTRL subsystem.
677
678 config IOSF_MBI
679         tristate "Intel SoC IOSF Sideband support for SoC platforms"
680         depends on PCI
681         help
682           This option enables sideband register access support for Intel SoC
683           platforms. On these platforms the IOSF sideband is used in lieu of
684           MSR's for some register accesses, mostly but not limited to thermal
685           and power. Drivers may query the availability of this device to
686           determine if they need the sideband in order to work on these
687           platforms. The sideband is available on the following SoC products.
688           This list is not meant to be exclusive.
689            - BayTrail
690            - Braswell
691            - Quark
692
693           You should say Y if you are running a kernel on one of these SoC's.
694
695 config IOSF_MBI_DEBUG
696         bool "Enable IOSF sideband access through debugfs"
697         depends on IOSF_MBI && DEBUG_FS
698         help
699           Select this option to expose the IOSF sideband access registers (MCR,
700           MDR, MCRX) through debugfs to write and read register information from
701           different units on the SoC. This is most useful for obtaining device
702           state information for debug and analysis. As this is a general access
703           mechanism, users of this option would have specific knowledge of the
704           device they want to access.
705
706           If you don't require the option or are in doubt, say N.
707
708 config X86_RDC321X
709         bool "RDC R-321x SoC"
710         depends on X86_32
711         depends on X86_EXTENDED_PLATFORM
712         select M486
713         select X86_REBOOTFIXUPS
714         help
715           This option is needed for RDC R-321x system-on-chip, also known
716           as R-8610-(G).
717           If you don't have one of these chips, you should say N here.
718
719 config X86_32_NON_STANDARD
720         bool "Support non-standard 32-bit SMP architectures"
721         depends on X86_32 && SMP
722         depends on X86_EXTENDED_PLATFORM
723         help
724           This option compiles in the bigsmp and STA2X11 default
725           subarchitectures.  It is intended for a generic binary
726           kernel. If you select them all, kernel will probe it one by
727           one and will fallback to default.
728
729 # Alphabetically sorted list of Non standard 32 bit platforms
730
731 config X86_SUPPORTS_MEMORY_FAILURE
732         def_bool y
733         # MCE code calls memory_failure():
734         depends on X86_MCE
735         # On 32-bit this adds too big of NODES_SHIFT and we run out of page flags:
736         # On 32-bit SPARSEMEM adds too big of SECTIONS_WIDTH:
737         depends on X86_64 || !SPARSEMEM
738         select ARCH_SUPPORTS_MEMORY_FAILURE
739
740 config STA2X11
741         bool "STA2X11 Companion Chip Support"
742         depends on X86_32_NON_STANDARD && PCI
743         select SWIOTLB
744         select MFD_STA2X11
745         select GPIOLIB
746         help
747           This adds support for boards based on the STA2X11 IO-Hub,
748           a.k.a. "ConneXt". The chip is used in place of the standard
749           PC chipset, so all "standard" peripherals are missing. If this
750           option is selected the kernel will still be able to boot on
751           standard PC machines.
752
753 config X86_32_IRIS
754         tristate "Eurobraille/Iris poweroff module"
755         depends on X86_32
756         help
757           The Iris machines from EuroBraille do not have APM or ACPI support
758           to shut themselves down properly.  A special I/O sequence is
759           needed to do so, which is what this module does at
760           kernel shutdown.
761
762           This is only for Iris machines from EuroBraille.
763
764           If unused, say N.
765
766 config SCHED_OMIT_FRAME_POINTER
767         def_bool y
768         prompt "Single-depth WCHAN output"
769         depends on X86
770         help
771           Calculate simpler /proc/<PID>/wchan values. If this option
772           is disabled then wchan values will recurse back to the
773           caller function. This provides more accurate wchan values,
774           at the expense of slightly more scheduling overhead.
775
776           If in doubt, say "Y".
777
778 menuconfig HYPERVISOR_GUEST
779         bool "Linux guest support"
780         help
781           Say Y here to enable options for running Linux under various hyper-
782           visors. This option enables basic hypervisor detection and platform
783           setup.
784
785           If you say N, all options in this submenu will be skipped and
786           disabled, and Linux guest support won't be built in.
787
788 if HYPERVISOR_GUEST
789
790 config PARAVIRT
791         bool "Enable paravirtualization code"
792         depends on HAVE_STATIC_CALL
793         help
794           This changes the kernel so it can modify itself when it is run
795           under a hypervisor, potentially improving performance significantly
796           over full virtualization.  However, when run without a hypervisor
797           the kernel is theoretically slower and slightly larger.
798
799 config PARAVIRT_XXL
800         bool
801
802 config PARAVIRT_DEBUG
803         bool "paravirt-ops debugging"
804         depends on PARAVIRT && DEBUG_KERNEL
805         help
806           Enable to debug paravirt_ops internals.  Specifically, BUG if
807           a paravirt_op is missing when it is called.
808
809 config PARAVIRT_SPINLOCKS
810         bool "Paravirtualization layer for spinlocks"
811         depends on PARAVIRT && SMP
812         help
813           Paravirtualized spinlocks allow a pvops backend to replace the
814           spinlock implementation with something virtualization-friendly
815           (for example, block the virtual CPU rather than spinning).
816
817           It has a minimal impact on native kernels and gives a nice performance
818           benefit on paravirtualized KVM / Xen kernels.
819
820           If you are unsure how to answer this question, answer Y.
821
822 config X86_HV_CALLBACK_VECTOR
823         def_bool n
824
825 source "arch/x86/xen/Kconfig"
826
827 config KVM_GUEST
828         bool "KVM Guest support (including kvmclock)"
829         depends on PARAVIRT
830         select PARAVIRT_CLOCK
831         select ARCH_CPUIDLE_HALTPOLL
832         select X86_HV_CALLBACK_VECTOR
833         default y
834         help
835           This option enables various optimizations for running under the KVM
836           hypervisor. It includes a paravirtualized clock, so that instead
837           of relying on a PIT (or probably other) emulation by the
838           underlying device model, the host provides the guest with
839           timing infrastructure such as time of day, and system time
840
841 config ARCH_CPUIDLE_HALTPOLL
842         def_bool n
843         prompt "Disable host haltpoll when loading haltpoll driver"
844         help
845           If virtualized under KVM, disable host haltpoll.
846
847 config PVH
848         bool "Support for running PVH guests"
849         help
850           This option enables the PVH entry point for guest virtual machines
851           as specified in the x86/HVM direct boot ABI.
852
853 config PARAVIRT_TIME_ACCOUNTING
854         bool "Paravirtual steal time accounting"
855         depends on PARAVIRT
856         help
857           Select this option to enable fine granularity task steal time
858           accounting. Time spent executing other tasks in parallel with
859           the current vCPU is discounted from the vCPU power. To account for
860           that, there can be a small performance impact.
861
862           If in doubt, say N here.
863
864 config PARAVIRT_CLOCK
865         bool
866
867 config JAILHOUSE_GUEST
868         bool "Jailhouse non-root cell support"
869         depends on X86_64 && PCI
870         select X86_PM_TIMER
871         help
872           This option allows to run Linux as guest in a Jailhouse non-root
873           cell. You can leave this option disabled if you only want to start
874           Jailhouse and run Linux afterwards in the root cell.
875
876 config ACRN_GUEST
877         bool "ACRN Guest support"
878         depends on X86_64
879         select X86_HV_CALLBACK_VECTOR
880         help
881           This option allows to run Linux as guest in the ACRN hypervisor. ACRN is
882           a flexible, lightweight reference open-source hypervisor, built with
883           real-time and safety-criticality in mind. It is built for embedded
884           IOT with small footprint and real-time features. More details can be
885           found in https://projectacrn.org/.
886
887 config INTEL_TDX_GUEST
888         bool "Intel TDX (Trust Domain Extensions) - Guest Support"
889         depends on X86_64 && CPU_SUP_INTEL
890         depends on X86_X2APIC
891         depends on EFI_STUB
892         select ARCH_HAS_CC_PLATFORM
893         select X86_MEM_ENCRYPT
894         select X86_MCE
895         select UNACCEPTED_MEMORY
896         help
897           Support running as a guest under Intel TDX.  Without this support,
898           the guest kernel can not boot or run under TDX.
899           TDX includes memory encryption and integrity capabilities
900           which protect the confidentiality and integrity of guest
901           memory contents and CPU state. TDX guests are protected from
902           some attacks from the VMM.
903
904 endif # HYPERVISOR_GUEST
905
906 source "arch/x86/Kconfig.cpu"
907
908 config HPET_TIMER
909         def_bool X86_64
910         prompt "HPET Timer Support" if X86_32
911         help
912           Use the IA-PC HPET (High Precision Event Timer) to manage
913           time in preference to the PIT and RTC, if a HPET is
914           present.
915           HPET is the next generation timer replacing legacy 8254s.
916           The HPET provides a stable time base on SMP
917           systems, unlike the TSC, but it is more expensive to access,
918           as it is off-chip.  The interface used is documented
919           in the HPET spec, revision 1.
920
921           You can safely choose Y here.  However, HPET will only be
922           activated if the platform and the BIOS support this feature.
923           Otherwise the 8254 will be used for timing services.
924
925           Choose N to continue using the legacy 8254 timer.
926
927 config HPET_EMULATE_RTC
928         def_bool y
929         depends on HPET_TIMER && (RTC_DRV_CMOS=m || RTC_DRV_CMOS=y)
930
931 # Mark as expert because too many people got it wrong.
932 # The code disables itself when not needed.
933 config DMI
934         default y
935         select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
936         bool "Enable DMI scanning" if EXPERT
937         help
938           Enabled scanning of DMI to identify machine quirks. Say Y
939           here unless you have verified that your setup is not
940           affected by entries in the DMI blacklist. Required by PNP
941           BIOS code.
942
943 config GART_IOMMU
944         bool "Old AMD GART IOMMU support"
945         select DMA_OPS
946         select IOMMU_HELPER
947         select SWIOTLB
948         depends on X86_64 && PCI && AMD_NB
949         help
950           Provides a driver for older AMD Athlon64/Opteron/Turion/Sempron
951           GART based hardware IOMMUs.
952
953           The GART supports full DMA access for devices with 32-bit access
954           limitations, on systems with more than 3 GB. This is usually needed
955           for USB, sound, many IDE/SATA chipsets and some other devices.
956
957           Newer systems typically have a modern AMD IOMMU, supported via
958           the CONFIG_AMD_IOMMU=y config option.
959
960           In normal configurations this driver is only active when needed:
961           there's more than 3 GB of memory and the system contains a
962           32-bit limited device.
963
964           If unsure, say Y.
965
966 config BOOT_VESA_SUPPORT
967         bool
968         help
969           If true, at least one selected framebuffer driver can take advantage
970           of VESA video modes set at an early boot stage via the vga= parameter.
971
972 config MAXSMP
973         bool "Enable Maximum number of SMP Processors and NUMA Nodes"
974         depends on X86_64 && SMP && DEBUG_KERNEL
975         select CPUMASK_OFFSTACK
976         help
977           Enable maximum number of CPUS and NUMA Nodes for this architecture.
978           If unsure, say N.
979
980 #
981 # The maximum number of CPUs supported:
982 #
983 # The main config value is NR_CPUS, which defaults to NR_CPUS_DEFAULT,
984 # and which can be configured interactively in the
985 # [NR_CPUS_RANGE_BEGIN ... NR_CPUS_RANGE_END] range.
986 #
987 # The ranges are different on 32-bit and 64-bit kernels, depending on
988 # hardware capabilities and scalability features of the kernel.
989 #
990 # ( If MAXSMP is enabled we just use the highest possible value and disable
991 #   interactive configuration. )
992 #
993
994 config NR_CPUS_RANGE_BEGIN
995         int
996         default NR_CPUS_RANGE_END if MAXSMP
997         default    1 if !SMP
998         default    2
999
1000 config NR_CPUS_RANGE_END
1001         int
1002         depends on X86_32
1003         default   64 if  SMP &&  X86_BIGSMP
1004         default    8 if  SMP && !X86_BIGSMP
1005         default    1 if !SMP
1006
1007 config NR_CPUS_RANGE_END
1008         int
1009         depends on X86_64
1010         default 8192 if  SMP && CPUMASK_OFFSTACK
1011         default  512 if  SMP && !CPUMASK_OFFSTACK
1012         default    1 if !SMP
1013
1014 config NR_CPUS_DEFAULT
1015         int
1016         depends on X86_32
1017         default   32 if  X86_BIGSMP
1018         default    8 if  SMP
1019         default    1 if !SMP
1020
1021 config NR_CPUS_DEFAULT
1022         int
1023         depends on X86_64
1024         default 8192 if  MAXSMP
1025         default   64 if  SMP
1026         default    1 if !SMP
1027
1028 config NR_CPUS
1029         int "Maximum number of CPUs" if SMP && !MAXSMP
1030         range NR_CPUS_RANGE_BEGIN NR_CPUS_RANGE_END
1031         default NR_CPUS_DEFAULT
1032         help
1033           This allows you to specify the maximum number of CPUs which this
1034           kernel will support.  If CPUMASK_OFFSTACK is enabled, the maximum
1035           supported value is 8192, otherwise the maximum value is 512.  The
1036           minimum value which makes sense is 2.
1037
1038           This is purely to save memory: each supported CPU adds about 8KB
1039           to the kernel image.
1040
1041 config SCHED_CLUSTER
1042         bool "Cluster scheduler support"
1043         depends on SMP
1044         default y
1045         help
1046           Cluster scheduler support improves the CPU scheduler's decision
1047           making when dealing with machines that have clusters of CPUs.
1048           Cluster usually means a couple of CPUs which are placed closely
1049           by sharing mid-level caches, last-level cache tags or internal
1050           busses.
1051
1052 config SCHED_SMT
1053         def_bool y if SMP
1054
1055 config SCHED_MC
1056         def_bool y
1057         prompt "Multi-core scheduler support"
1058         depends on SMP
1059         help
1060           Multi-core scheduler support improves the CPU scheduler's decision
1061           making when dealing with multi-core CPU chips at a cost of slightly
1062           increased overhead in some places. If unsure say N here.
1063
1064 config SCHED_MC_PRIO
1065         bool "CPU core priorities scheduler support"
1066         depends on SCHED_MC
1067         select X86_INTEL_PSTATE if CPU_SUP_INTEL
1068         select X86_AMD_PSTATE if CPU_SUP_AMD && ACPI
1069         select CPU_FREQ
1070         default y
1071         help
1072           Intel Turbo Boost Max Technology 3.0 enabled CPUs have a
1073           core ordering determined at manufacturing time, which allows
1074           certain cores to reach higher turbo frequencies (when running
1075           single threaded workloads) than others.
1076
1077           Enabling this kernel feature teaches the scheduler about
1078           the TBM3 (aka ITMT) priority order of the CPU cores and adjusts the
1079           scheduler's CPU selection logic accordingly, so that higher
1080           overall system performance can be achieved.
1081
1082           This feature will have no effect on CPUs without this feature.
1083
1084           If unsure say Y here.
1085
1086 config UP_LATE_INIT
1087         def_bool y
1088         depends on !SMP && X86_LOCAL_APIC
1089
1090 config X86_UP_APIC
1091         bool "Local APIC support on uniprocessors" if !PCI_MSI
1092         default PCI_MSI
1093         depends on X86_32 && !SMP && !X86_32_NON_STANDARD
1094         help
1095           A local APIC (Advanced Programmable Interrupt Controller) is an
1096           integrated interrupt controller in the CPU. If you have a single-CPU
1097           system which has a processor with a local APIC, you can say Y here to
1098           enable and use it. If you say Y here even though your machine doesn't
1099           have a local APIC, then the kernel will still run with no slowdown at
1100           all. The local APIC supports CPU-generated self-interrupts (timer,
1101           performance counters), and the NMI watchdog which detects hard
1102           lockups.
1103
1104 config X86_UP_IOAPIC
1105         bool "IO-APIC support on uniprocessors"
1106         depends on X86_UP_APIC
1107         help
1108           An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an
1109           SMP-capable replacement for PC-style interrupt controllers. Most
1110           SMP systems and many recent uniprocessor systems have one.
1111
1112           If you have a single-CPU system with an IO-APIC, you can say Y here
1113           to use it. If you say Y here even though your machine doesn't have
1114           an IO-APIC, then the kernel will still run with no slowdown at all.
1115
1116 config X86_LOCAL_APIC
1117         def_bool y
1118         depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC || PCI_MSI
1119         select IRQ_DOMAIN_HIERARCHY
1120
1121 config X86_IO_APIC
1122         def_bool y
1123         depends on X86_LOCAL_APIC || X86_UP_IOAPIC
1124
1125 config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
1126         bool "Reroute for broken boot IRQs"
1127         depends on X86_IO_APIC
1128         help
1129           This option enables a workaround that fixes a source of
1130           spurious interrupts. This is recommended when threaded
1131           interrupt handling is used on systems where the generation of
1132           superfluous "boot interrupts" cannot be disabled.
1133
1134           Some chipsets generate a legacy INTx "boot IRQ" when the IRQ
1135           entry in the chipset's IO-APIC is masked (as, e.g. the RT
1136           kernel does during interrupt handling). On chipsets where this
1137           boot IRQ generation cannot be disabled, this workaround keeps
1138           the original IRQ line masked so that only the equivalent "boot
1139           IRQ" is delivered to the CPUs. The workaround also tells the
1140           kernel to set up the IRQ handler on the boot IRQ line. In this
1141           way only one interrupt is delivered to the kernel. Otherwise
1142           the spurious second interrupt may cause the kernel to bring
1143           down (vital) interrupt lines.
1144
1145           Only affects "broken" chipsets. Interrupt sharing may be
1146           increased on these systems.
1147
1148 config X86_MCE
1149         bool "Machine Check / overheating reporting"
1150         select GENERIC_ALLOCATOR
1151         default y
1152         help
1153           Machine Check support allows the processor to notify the
1154           kernel if it detects a problem (e.g. overheating, data corruption).
1155           The action the kernel takes depends on the severity of the problem,
1156           ranging from warning messages to halting the machine.
1157
1158 config X86_MCELOG_LEGACY
1159         bool "Support for deprecated /dev/mcelog character device"
1160         depends on X86_MCE
1161         help
1162           Enable support for /dev/mcelog which is needed by the old mcelog
1163           userspace logging daemon. Consider switching to the new generation
1164           rasdaemon solution.
1165
1166 config X86_MCE_INTEL
1167         def_bool y
1168         prompt "Intel MCE features"
1169         depends on X86_MCE && X86_LOCAL_APIC
1170         help
1171           Additional support for intel specific MCE features such as
1172           the thermal monitor.
1173
1174 config X86_MCE_AMD
1175         def_bool y
1176         prompt "AMD MCE features"
1177         depends on X86_MCE && X86_LOCAL_APIC && AMD_NB
1178         help
1179           Additional support for AMD specific MCE features such as
1180           the DRAM Error Threshold.
1181
1182 config X86_ANCIENT_MCE
1183         bool "Support for old Pentium 5 / WinChip machine checks"
1184         depends on X86_32 && X86_MCE
1185         help
1186           Include support for machine check handling on old Pentium 5 or WinChip
1187           systems. These typically need to be enabled explicitly on the command
1188           line.
1189
1190 config X86_MCE_THRESHOLD
1191         depends on X86_MCE_AMD || X86_MCE_INTEL
1192         def_bool y
1193
1194 config X86_MCE_INJECT
1195         depends on X86_MCE && X86_LOCAL_APIC && DEBUG_FS
1196         tristate "Machine check injector support"
1197         help
1198           Provide support for injecting machine checks for testing purposes.
1199           If you don't know what a machine check is and you don't do kernel
1200           QA it is safe to say n.
1201
1202 source "arch/x86/events/Kconfig"
1203
1204 config X86_LEGACY_VM86
1205         bool "Legacy VM86 support"
1206         depends on X86_32
1207         help
1208           This option allows user programs to put the CPU into V8086
1209           mode, which is an 80286-era approximation of 16-bit real mode.
1210
1211           Some very old versions of X and/or vbetool require this option
1212           for user mode setting.  Similarly, DOSEMU will use it if
1213           available to accelerate real mode DOS programs.  However, any
1214           recent version of DOSEMU, X, or vbetool should be fully
1215           functional even without kernel VM86 support, as they will all
1216           fall back to software emulation. Nevertheless, if you are using
1217           a 16-bit DOS program where 16-bit performance matters, vm86
1218           mode might be faster than emulation and you might want to
1219           enable this option.
1220
1221           Note that any app that works on a 64-bit kernel is unlikely to
1222           need this option, as 64-bit kernels don't, and can't, support
1223           V8086 mode. This option is also unrelated to 16-bit protected
1224           mode and is not needed to run most 16-bit programs under Wine.
1225
1226           Enabling this option increases the complexity of the kernel
1227           and slows down exception handling a tiny bit.
1228
1229           If unsure, say N here.
1230
1231 config VM86
1232         bool
1233         default X86_LEGACY_VM86
1234
1235 config X86_16BIT
1236         bool "Enable support for 16-bit segments" if EXPERT
1237         default y
1238         depends on MODIFY_LDT_SYSCALL
1239         help
1240           This option is required by programs like Wine to run 16-bit
1241           protected mode legacy code on x86 processors.  Disabling
1242           this option saves about 300 bytes on i386, or around 6K text
1243           plus 16K runtime memory on x86-64,
1244
1245 config X86_ESPFIX32
1246         def_bool y
1247         depends on X86_16BIT && X86_32
1248
1249 config X86_ESPFIX64
1250         def_bool y
1251         depends on X86_16BIT && X86_64
1252
1253 config X86_VSYSCALL_EMULATION
1254         bool "Enable vsyscall emulation" if EXPERT
1255         default y
1256         depends on X86_64
1257         help
1258           This enables emulation of the legacy vsyscall page.  Disabling
1259           it is roughly equivalent to booting with vsyscall=none, except
1260           that it will also disable the helpful warning if a program
1261           tries to use a vsyscall.  With this option set to N, offending
1262           programs will just segfault, citing addresses of the form
1263           0xffffffffff600?00.
1264
1265           This option is required by many programs built before 2013, and
1266           care should be used even with newer programs if set to N.
1267
1268           Disabling this option saves about 7K of kernel size and
1269           possibly 4K of additional runtime pagetable memory.
1270
1271 config X86_IOPL_IOPERM
1272         bool "IOPERM and IOPL Emulation"
1273         default y
1274         help
1275           This enables the ioperm() and iopl() syscalls which are necessary
1276           for legacy applications.
1277
1278           Legacy IOPL support is an overbroad mechanism which allows user
1279           space aside of accessing all 65536 I/O ports also to disable
1280           interrupts. To gain this access the caller needs CAP_SYS_RAWIO
1281           capabilities and permission from potentially active security
1282           modules.
1283
1284           The emulation restricts the functionality of the syscall to
1285           only allowing the full range I/O port access, but prevents the
1286           ability to disable interrupts from user space which would be
1287           granted if the hardware IOPL mechanism would be used.
1288
1289 config TOSHIBA
1290         tristate "Toshiba Laptop support"
1291         depends on X86_32
1292         help
1293           This adds a driver to safely access the System Management Mode of
1294           the CPU on Toshiba portables with a genuine Toshiba BIOS. It does
1295           not work on models with a Phoenix BIOS. The System Management Mode
1296           is used to set the BIOS and power saving options on Toshiba portables.
1297
1298           For information on utilities to make use of this driver see the
1299           Toshiba Linux utilities web site at:
1300           <http://www.buzzard.org.uk/toshiba/>.
1301
1302           Say Y if you intend to run this kernel on a Toshiba portable.
1303           Say N otherwise.
1304
1305 config X86_REBOOTFIXUPS
1306         bool "Enable X86 board specific fixups for reboot"
1307         depends on X86_32
1308         help
1309           This enables chipset and/or board specific fixups to be done
1310           in order to get reboot to work correctly. This is only needed on
1311           some combinations of hardware and BIOS. The symptom, for which
1312           this config is intended, is when reboot ends with a stalled/hung
1313           system.
1314
1315           Currently, the only fixup is for the Geode machines using
1316           CS5530A and CS5536 chipsets and the RDC R-321x SoC.
1317
1318           Say Y if you want to enable the fixup. Currently, it's safe to
1319           enable this option even if you don't need it.
1320           Say N otherwise.
1321
1322 config MICROCODE
1323         def_bool y
1324         depends on CPU_SUP_AMD || CPU_SUP_INTEL
1325
1326 config MICROCODE_INITRD32
1327         def_bool y
1328         depends on MICROCODE && X86_32 && BLK_DEV_INITRD
1329
1330 config MICROCODE_LATE_LOADING
1331         bool "Late microcode loading (DANGEROUS)"
1332         default n
1333         depends on MICROCODE && SMP
1334         help
1335           Loading microcode late, when the system is up and executing instructions
1336           is a tricky business and should be avoided if possible. Just the sequence
1337           of synchronizing all cores and SMT threads is one fragile dance which does
1338           not guarantee that cores might not softlock after the loading. Therefore,
1339           use this at your own risk. Late loading taints the kernel unless the
1340           microcode header indicates that it is safe for late loading via the
1341           minimal revision check. This minimal revision check can be enforced on
1342           the kernel command line with "microcode.minrev=Y".
1343
1344 config MICROCODE_LATE_FORCE_MINREV
1345         bool "Enforce late microcode loading minimal revision check"
1346         default n
1347         depends on MICROCODE_LATE_LOADING
1348         help
1349           To prevent that users load microcode late which modifies already
1350           in use features, newer microcode patches have a minimum revision field
1351           in the microcode header, which tells the kernel which minimum
1352           revision must be active in the CPU to safely load that new microcode
1353           late into the running system. If disabled the check will not
1354           be enforced but the kernel will be tainted when the minimal
1355           revision check fails.
1356
1357           This minimal revision check can also be controlled via the
1358           "microcode.minrev" parameter on the kernel command line.
1359
1360           If unsure say Y.
1361
1362 config X86_MSR
1363         tristate "/dev/cpu/*/msr - Model-specific register support"
1364         help
1365           This device gives privileged processes access to the x86
1366           Model-Specific Registers (MSRs).  It is a character device with
1367           major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
1368           MSR accesses are directed to a specific CPU on multi-processor
1369           systems.
1370
1371 config X86_CPUID
1372         tristate "/dev/cpu/*/cpuid - CPU information support"
1373         help
1374           This device gives processes access to the x86 CPUID instruction to
1375           be executed on a specific processor.  It is a character device
1376           with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
1377           /dev/cpu/31/cpuid.
1378
1379 choice
1380         prompt "High Memory Support"
1381         default HIGHMEM4G
1382         depends on X86_32
1383
1384 config NOHIGHMEM
1385         bool "off"
1386         help
1387           Linux can use up to 64 Gigabytes of physical memory on x86 systems.
1388           However, the address space of 32-bit x86 processors is only 4
1389           Gigabytes large. That means that, if you have a large amount of
1390           physical memory, not all of it can be "permanently mapped" by the
1391           kernel. The physical memory that's not permanently mapped is called
1392           "high memory".
1393
1394           If you are compiling a kernel which will never run on a machine with
1395           more than 1 Gigabyte total physical RAM, answer "off" here (default
1396           choice and suitable for most users). This will result in a "3GB/1GB"
1397           split: 3GB are mapped so that each process sees a 3GB virtual memory
1398           space and the remaining part of the 4GB virtual memory space is used
1399           by the kernel to permanently map as much physical memory as
1400           possible.
1401
1402           If the machine has between 1 and 4 Gigabytes physical RAM, then
1403           answer "4GB" here.
1404
1405           If more than 4 Gigabytes is used then answer "64GB" here. This
1406           selection turns Intel PAE (Physical Address Extension) mode on.
1407           PAE implements 3-level paging on IA32 processors. PAE is fully
1408           supported by Linux, PAE mode is implemented on all recent Intel
1409           processors (Pentium Pro and better). NOTE: If you say "64GB" here,
1410           then the kernel will not boot on CPUs that don't support PAE!
1411
1412           The actual amount of total physical memory will either be
1413           auto detected or can be forced by using a kernel command line option
1414           such as "mem=256M". (Try "man bootparam" or see the documentation of
1415           your boot loader (lilo or loadlin) about how to pass options to the
1416           kernel at boot time.)
1417
1418           If unsure, say "off".
1419
1420 config HIGHMEM4G
1421         bool "4GB"
1422         help
1423           Select this if you have a 32-bit processor and between 1 and 4
1424           gigabytes of physical RAM.
1425
1426 config HIGHMEM64G
1427         bool "64GB"
1428         depends on X86_HAVE_PAE
1429         select X86_PAE
1430         help
1431           Select this if you have a 32-bit processor and more than 4
1432           gigabytes of physical RAM.
1433
1434 endchoice
1435
1436 choice
1437         prompt "Memory split" if EXPERT
1438         default VMSPLIT_3G
1439         depends on X86_32
1440         help
1441           Select the desired split between kernel and user memory.
1442
1443           If the address range available to the kernel is less than the
1444           physical memory installed, the remaining memory will be available
1445           as "high memory". Accessing high memory is a little more costly
1446           than low memory, as it needs to be mapped into the kernel first.
1447           Note that increasing the kernel address space limits the range
1448           available to user programs, making the address space there
1449           tighter.  Selecting anything other than the default 3G/1G split
1450           will also likely make your kernel incompatible with binary-only
1451           kernel modules.
1452
1453           If you are not absolutely sure what you are doing, leave this
1454           option alone!
1455
1456         config VMSPLIT_3G
1457                 bool "3G/1G user/kernel split"
1458         config VMSPLIT_3G_OPT
1459                 depends on !X86_PAE
1460                 bool "3G/1G user/kernel split (for full 1G low memory)"
1461         config VMSPLIT_2G
1462                 bool "2G/2G user/kernel split"
1463         config VMSPLIT_2G_OPT
1464                 depends on !X86_PAE
1465                 bool "2G/2G user/kernel split (for full 2G low memory)"
1466         config VMSPLIT_1G
1467                 bool "1G/3G user/kernel split"
1468 endchoice
1469
1470 config PAGE_OFFSET
1471         hex
1472         default 0xB0000000 if VMSPLIT_3G_OPT
1473         default 0x80000000 if VMSPLIT_2G
1474         default 0x78000000 if VMSPLIT_2G_OPT
1475         default 0x40000000 if VMSPLIT_1G
1476         default 0xC0000000
1477         depends on X86_32
1478
1479 config HIGHMEM
1480         def_bool y
1481         depends on X86_32 && (HIGHMEM64G || HIGHMEM4G)
1482
1483 config X86_PAE
1484         bool "PAE (Physical Address Extension) Support"
1485         depends on X86_32 && X86_HAVE_PAE
1486         select PHYS_ADDR_T_64BIT
1487         select SWIOTLB
1488         help
1489           PAE is required for NX support, and furthermore enables
1490           larger swapspace support for non-overcommit purposes. It
1491           has the cost of more pagetable lookup overhead, and also
1492           consumes more pagetable space per process.
1493
1494 config X86_5LEVEL
1495         bool "Enable 5-level page tables support"
1496         default y
1497         select DYNAMIC_MEMORY_LAYOUT
1498         select SPARSEMEM_VMEMMAP
1499         depends on X86_64
1500         help
1501           5-level paging enables access to larger address space:
1502           up to 128 PiB of virtual address space and 4 PiB of
1503           physical address space.
1504
1505           It will be supported by future Intel CPUs.
1506
1507           A kernel with the option enabled can be booted on machines that
1508           support 4- or 5-level paging.
1509
1510           See Documentation/arch/x86/x86_64/5level-paging.rst for more
1511           information.
1512
1513           Say N if unsure.
1514
1515 config X86_DIRECT_GBPAGES
1516         def_bool y
1517         depends on X86_64
1518         help
1519           Certain kernel features effectively disable kernel
1520           linear 1 GB mappings (even if the CPU otherwise
1521           supports them), so don't confuse the user by printing
1522           that we have them enabled.
1523
1524 config X86_CPA_STATISTICS
1525         bool "Enable statistic for Change Page Attribute"
1526         depends on DEBUG_FS
1527         help
1528           Expose statistics about the Change Page Attribute mechanism, which
1529           helps to determine the effectiveness of preserving large and huge
1530           page mappings when mapping protections are changed.
1531
1532 config X86_MEM_ENCRYPT
1533         select ARCH_HAS_FORCE_DMA_UNENCRYPTED
1534         select DYNAMIC_PHYSICAL_MASK
1535         def_bool n
1536
1537 config AMD_MEM_ENCRYPT
1538         bool "AMD Secure Memory Encryption (SME) support"
1539         depends on X86_64 && CPU_SUP_AMD
1540         depends on EFI_STUB
1541         select DMA_COHERENT_POOL
1542         select ARCH_USE_MEMREMAP_PROT
1543         select INSTRUCTION_DECODER
1544         select ARCH_HAS_CC_PLATFORM
1545         select X86_MEM_ENCRYPT
1546         select UNACCEPTED_MEMORY
1547         help
1548           Say yes to enable support for the encryption of system memory.
1549           This requires an AMD processor that supports Secure Memory
1550           Encryption (SME).
1551
1552 # Common NUMA Features
1553 config NUMA
1554         bool "NUMA Memory Allocation and Scheduler Support"
1555         depends on SMP
1556         depends on X86_64 || (X86_32 && HIGHMEM64G && X86_BIGSMP)
1557         default y if X86_BIGSMP
1558         select USE_PERCPU_NUMA_NODE_ID
1559         select OF_NUMA if OF
1560         help
1561           Enable NUMA (Non-Uniform Memory Access) support.
1562
1563           The kernel will try to allocate memory used by a CPU on the
1564           local memory controller of the CPU and add some more
1565           NUMA awareness to the kernel.
1566
1567           For 64-bit this is recommended if the system is Intel Core i7
1568           (or later), AMD Opteron, or EM64T NUMA.
1569
1570           For 32-bit this is only needed if you boot a 32-bit
1571           kernel on a 64-bit NUMA platform.
1572
1573           Otherwise, you should say N.
1574
1575 config AMD_NUMA
1576         def_bool y
1577         prompt "Old style AMD Opteron NUMA detection"
1578         depends on X86_64 && NUMA && PCI
1579         help
1580           Enable AMD NUMA node topology detection.  You should say Y here if
1581           you have a multi processor AMD system. This uses an old method to
1582           read the NUMA configuration directly from the builtin Northbridge
1583           of Opteron. It is recommended to use X86_64_ACPI_NUMA instead,
1584           which also takes priority if both are compiled in.
1585
1586 config X86_64_ACPI_NUMA
1587         def_bool y
1588         prompt "ACPI NUMA detection"
1589         depends on X86_64 && NUMA && ACPI && PCI
1590         select ACPI_NUMA
1591         help
1592           Enable ACPI SRAT based node topology detection.
1593
1594 config NUMA_EMU
1595         bool "NUMA emulation"
1596         depends on NUMA
1597         help
1598           Enable NUMA emulation. A flat machine will be split
1599           into virtual nodes when booted with "numa=fake=N", where N is the
1600           number of nodes. This is only useful for debugging.
1601
1602 config NODES_SHIFT
1603         int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP
1604         range 1 10
1605         default "10" if MAXSMP
1606         default "6" if X86_64
1607         default "3"
1608         depends on NUMA
1609         help
1610           Specify the maximum number of NUMA Nodes available on the target
1611           system.  Increases memory reserved to accommodate various tables.
1612
1613 config ARCH_FLATMEM_ENABLE
1614         def_bool y
1615         depends on X86_32 && !NUMA
1616
1617 config ARCH_SPARSEMEM_ENABLE
1618         def_bool y
1619         depends on X86_64 || NUMA || X86_32 || X86_32_NON_STANDARD
1620         select SPARSEMEM_STATIC if X86_32
1621         select SPARSEMEM_VMEMMAP_ENABLE if X86_64
1622
1623 config ARCH_SPARSEMEM_DEFAULT
1624         def_bool X86_64 || (NUMA && X86_32)
1625
1626 config ARCH_SELECT_MEMORY_MODEL
1627         def_bool y
1628         depends on ARCH_SPARSEMEM_ENABLE && ARCH_FLATMEM_ENABLE
1629
1630 config ARCH_MEMORY_PROBE
1631         bool "Enable sysfs memory/probe interface"
1632         depends on MEMORY_HOTPLUG
1633         help
1634           This option enables a sysfs memory/probe interface for testing.
1635           See Documentation/admin-guide/mm/memory-hotplug.rst for more information.
1636           If you are unsure how to answer this question, answer N.
1637
1638 config ARCH_PROC_KCORE_TEXT
1639         def_bool y
1640         depends on X86_64 && PROC_KCORE
1641
1642 config ILLEGAL_POINTER_VALUE
1643         hex
1644         default 0 if X86_32
1645         default 0xdead000000000000 if X86_64
1646
1647 config X86_PMEM_LEGACY_DEVICE
1648         bool
1649
1650 config X86_PMEM_LEGACY
1651         tristate "Support non-standard NVDIMMs and ADR protected memory"
1652         depends on PHYS_ADDR_T_64BIT
1653         depends on BLK_DEV
1654         select X86_PMEM_LEGACY_DEVICE
1655         select NUMA_KEEP_MEMINFO if NUMA
1656         select LIBNVDIMM
1657         help
1658           Treat memory marked using the non-standard e820 type of 12 as used
1659           by the Intel Sandy Bridge-EP reference BIOS as protected memory.
1660           The kernel will offer these regions to the 'pmem' driver so
1661           they can be used for persistent storage.
1662
1663           Say Y if unsure.
1664
1665 config HIGHPTE
1666         bool "Allocate 3rd-level pagetables from highmem"
1667         depends on HIGHMEM
1668         help
1669           The VM uses one page table entry for each page of physical memory.
1670           For systems with a lot of RAM, this can be wasteful of precious
1671           low memory.  Setting this option will put user-space page table
1672           entries in high memory.
1673
1674 config X86_CHECK_BIOS_CORRUPTION
1675         bool "Check for low memory corruption"
1676         help
1677           Periodically check for memory corruption in low memory, which
1678           is suspected to be caused by BIOS.  Even when enabled in the
1679           configuration, it is disabled at runtime.  Enable it by
1680           setting "memory_corruption_check=1" on the kernel command
1681           line.  By default it scans the low 64k of memory every 60
1682           seconds; see the memory_corruption_check_size and
1683           memory_corruption_check_period parameters in
1684           Documentation/admin-guide/kernel-parameters.rst to adjust this.
1685
1686           When enabled with the default parameters, this option has
1687           almost no overhead, as it reserves a relatively small amount
1688           of memory and scans it infrequently.  It both detects corruption
1689           and prevents it from affecting the running system.
1690
1691           It is, however, intended as a diagnostic tool; if repeatable
1692           BIOS-originated corruption always affects the same memory,
1693           you can use memmap= to prevent the kernel from using that
1694           memory.
1695
1696 config X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
1697         bool "Set the default setting of memory_corruption_check"
1698         depends on X86_CHECK_BIOS_CORRUPTION
1699         default y
1700         help
1701           Set whether the default state of memory_corruption_check is
1702           on or off.
1703
1704 config MATH_EMULATION
1705         bool
1706         depends on MODIFY_LDT_SYSCALL
1707         prompt "Math emulation" if X86_32 && (M486SX || MELAN)
1708         help
1709           Linux can emulate a math coprocessor (used for floating point
1710           operations) if you don't have one. 486DX and Pentium processors have
1711           a math coprocessor built in, 486SX and 386 do not, unless you added
1712           a 487DX or 387, respectively. (The messages during boot time can
1713           give you some hints here ["man dmesg"].) Everyone needs either a
1714           coprocessor or this emulation.
1715
1716           If you don't have a math coprocessor, you need to say Y here; if you
1717           say Y here even though you have a coprocessor, the coprocessor will
1718           be used nevertheless. (This behavior can be changed with the kernel
1719           command line option "no387", which comes handy if your coprocessor
1720           is broken. Try "man bootparam" or see the documentation of your boot
1721           loader (lilo or loadlin) about how to pass options to the kernel at
1722           boot time.) This means that it is a good idea to say Y here if you
1723           intend to use this kernel on different machines.
1724
1725           More information about the internals of the Linux math coprocessor
1726           emulation can be found in <file:arch/x86/math-emu/README>.
1727
1728           If you are not sure, say Y; apart from resulting in a 66 KB bigger
1729           kernel, it won't hurt.
1730
1731 config MTRR
1732         def_bool y
1733         prompt "MTRR (Memory Type Range Register) support" if EXPERT
1734         help
1735           On Intel P6 family processors (Pentium Pro, Pentium II and later)
1736           the Memory Type Range Registers (MTRRs) may be used to control
1737           processor access to memory ranges. This is most useful if you have
1738           a video (VGA) card on a PCI or AGP bus. Enabling write-combining
1739           allows bus write transfers to be combined into a larger transfer
1740           before bursting over the PCI/AGP bus. This can increase performance
1741           of image write operations 2.5 times or more. Saying Y here creates a
1742           /proc/mtrr file which may be used to manipulate your processor's
1743           MTRRs. Typically the X server should use this.
1744
1745           This code has a reasonably generic interface so that similar
1746           control registers on other processors can be easily supported
1747           as well:
1748
1749           The Cyrix 6x86, 6x86MX and M II processors have Address Range
1750           Registers (ARRs) which provide a similar functionality to MTRRs. For
1751           these, the ARRs are used to emulate the MTRRs.
1752           The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
1753           MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing
1754           write-combining. All of these processors are supported by this code
1755           and it makes sense to say Y here if you have one of them.
1756
1757           Saying Y here also fixes a problem with buggy SMP BIOSes which only
1758           set the MTRRs for the boot CPU and not for the secondary CPUs. This
1759           can lead to all sorts of problems, so it's good to say Y here.
1760
1761           You can safely say Y even if your machine doesn't have MTRRs, you'll
1762           just add about 9 KB to your kernel.
1763
1764           See <file:Documentation/arch/x86/mtrr.rst> for more information.
1765
1766 config MTRR_SANITIZER
1767         def_bool y
1768         prompt "MTRR cleanup support"
1769         depends on MTRR
1770         help
1771           Convert MTRR layout from continuous to discrete, so X drivers can
1772           add writeback entries.
1773
1774           Can be disabled with disable_mtrr_cleanup on the kernel command line.
1775           The largest mtrr entry size for a continuous block can be set with
1776           mtrr_chunk_size.
1777
1778           If unsure, say Y.
1779
1780 config MTRR_SANITIZER_ENABLE_DEFAULT
1781         int "MTRR cleanup enable value (0-1)"
1782         range 0 1
1783         default "0"
1784         depends on MTRR_SANITIZER
1785         help
1786           Enable mtrr cleanup default value
1787
1788 config MTRR_SANITIZER_SPARE_REG_NR_DEFAULT
1789         int "MTRR cleanup spare reg num (0-7)"
1790         range 0 7
1791         default "1"
1792         depends on MTRR_SANITIZER
1793         help
1794           mtrr cleanup spare entries default, it can be changed via
1795           mtrr_spare_reg_nr=N on the kernel command line.
1796
1797 config X86_PAT
1798         def_bool y
1799         prompt "x86 PAT support" if EXPERT
1800         depends on MTRR
1801         help
1802           Use PAT attributes to setup page level cache control.
1803
1804           PATs are the modern equivalents of MTRRs and are much more
1805           flexible than MTRRs.
1806
1807           Say N here if you see bootup problems (boot crash, boot hang,
1808           spontaneous reboots) or a non-working video driver.
1809
1810           If unsure, say Y.
1811
1812 config ARCH_USES_PG_UNCACHED
1813         def_bool y
1814         depends on X86_PAT
1815
1816 config X86_UMIP
1817         def_bool y
1818         prompt "User Mode Instruction Prevention" if EXPERT
1819         help
1820           User Mode Instruction Prevention (UMIP) is a security feature in
1821           some x86 processors. If enabled, a general protection fault is
1822           issued if the SGDT, SLDT, SIDT, SMSW or STR instructions are
1823           executed in user mode. These instructions unnecessarily expose
1824           information about the hardware state.
1825
1826           The vast majority of applications do not use these instructions.
1827           For the very few that do, software emulation is provided in
1828           specific cases in protected and virtual-8086 modes. Emulated
1829           results are dummy.
1830
1831 config CC_HAS_IBT
1832         # GCC >= 9 and binutils >= 2.29
1833         # Retpoline check to work around https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93654
1834         # Clang/LLVM >= 14
1835         # https://github.com/llvm/llvm-project/commit/e0b89df2e0f0130881bf6c39bf31d7f6aac00e0f
1836         # https://github.com/llvm/llvm-project/commit/dfcf69770bc522b9e411c66454934a37c1f35332
1837         def_bool ((CC_IS_GCC && $(cc-option, -fcf-protection=branch -mindirect-branch-register)) || \
1838                   (CC_IS_CLANG && CLANG_VERSION >= 140000)) && \
1839                   $(as-instr,endbr64)
1840
1841 config X86_CET
1842         def_bool n
1843         help
1844           CET features configured (Shadow stack or IBT)
1845
1846 config X86_KERNEL_IBT
1847         prompt "Indirect Branch Tracking"
1848         def_bool y
1849         depends on X86_64 && CC_HAS_IBT && HAVE_OBJTOOL
1850         # https://github.com/llvm/llvm-project/commit/9d7001eba9c4cb311e03cd8cdc231f9e579f2d0f
1851         depends on !LD_IS_LLD || LLD_VERSION >= 140000
1852         select OBJTOOL
1853         select X86_CET
1854         help
1855           Build the kernel with support for Indirect Branch Tracking, a
1856           hardware support course-grain forward-edge Control Flow Integrity
1857           protection. It enforces that all indirect calls must land on
1858           an ENDBR instruction, as such, the compiler will instrument the
1859           code with them to make this happen.
1860
1861           In addition to building the kernel with IBT, seal all functions that
1862           are not indirect call targets, avoiding them ever becoming one.
1863
1864           This requires LTO like objtool runs and will slow down the build. It
1865           does significantly reduce the number of ENDBR instructions in the
1866           kernel image.
1867
1868 config X86_INTEL_MEMORY_PROTECTION_KEYS
1869         prompt "Memory Protection Keys"
1870         def_bool y
1871         # Note: only available in 64-bit mode
1872         depends on X86_64 && (CPU_SUP_INTEL || CPU_SUP_AMD)
1873         select ARCH_USES_HIGH_VMA_FLAGS
1874         select ARCH_HAS_PKEYS
1875         help
1876           Memory Protection Keys provides a mechanism for enforcing
1877           page-based protections, but without requiring modification of the
1878           page tables when an application changes protection domains.
1879
1880           For details, see Documentation/core-api/protection-keys.rst
1881
1882           If unsure, say y.
1883
1884 choice
1885         prompt "TSX enable mode"
1886         depends on CPU_SUP_INTEL
1887         default X86_INTEL_TSX_MODE_OFF
1888         help
1889           Intel's TSX (Transactional Synchronization Extensions) feature
1890           allows to optimize locking protocols through lock elision which
1891           can lead to a noticeable performance boost.
1892
1893           On the other hand it has been shown that TSX can be exploited
1894           to form side channel attacks (e.g. TAA) and chances are there
1895           will be more of those attacks discovered in the future.
1896
1897           Therefore TSX is not enabled by default (aka tsx=off). An admin
1898           might override this decision by tsx=on the command line parameter.
1899           Even with TSX enabled, the kernel will attempt to enable the best
1900           possible TAA mitigation setting depending on the microcode available
1901           for the particular machine.
1902
1903           This option allows to set the default tsx mode between tsx=on, =off
1904           and =auto. See Documentation/admin-guide/kernel-parameters.txt for more
1905           details.
1906
1907           Say off if not sure, auto if TSX is in use but it should be used on safe
1908           platforms or on if TSX is in use and the security aspect of tsx is not
1909           relevant.
1910
1911 config X86_INTEL_TSX_MODE_OFF
1912         bool "off"
1913         help
1914           TSX is disabled if possible - equals to tsx=off command line parameter.
1915
1916 config X86_INTEL_TSX_MODE_ON
1917         bool "on"
1918         help
1919           TSX is always enabled on TSX capable HW - equals the tsx=on command
1920           line parameter.
1921
1922 config X86_INTEL_TSX_MODE_AUTO
1923         bool "auto"
1924         help
1925           TSX is enabled on TSX capable HW that is believed to be safe against
1926           side channel attacks- equals the tsx=auto command line parameter.
1927 endchoice
1928
1929 config X86_SGX
1930         bool "Software Guard eXtensions (SGX)"
1931         depends on X86_64 && CPU_SUP_INTEL && X86_X2APIC
1932         depends on CRYPTO=y
1933         depends on CRYPTO_SHA256=y
1934         select MMU_NOTIFIER
1935         select NUMA_KEEP_MEMINFO if NUMA
1936         select XARRAY_MULTI
1937         help
1938           Intel(R) Software Guard eXtensions (SGX) is a set of CPU instructions
1939           that can be used by applications to set aside private regions of code
1940           and data, referred to as enclaves. An enclave's private memory can
1941           only be accessed by code running within the enclave. Accesses from
1942           outside the enclave, including other enclaves, are disallowed by
1943           hardware.
1944
1945           If unsure, say N.
1946
1947 config X86_USER_SHADOW_STACK
1948         bool "X86 userspace shadow stack"
1949         depends on AS_WRUSS
1950         depends on X86_64
1951         select ARCH_USES_HIGH_VMA_FLAGS
1952         select X86_CET
1953         help
1954           Shadow stack protection is a hardware feature that detects function
1955           return address corruption.  This helps mitigate ROP attacks.
1956           Applications must be enabled to use it, and old userspace does not
1957           get protection "for free".
1958
1959           CPUs supporting shadow stacks were first released in 2020.
1960
1961           See Documentation/arch/x86/shstk.rst for more information.
1962
1963           If unsure, say N.
1964
1965 config INTEL_TDX_HOST
1966         bool "Intel Trust Domain Extensions (TDX) host support"
1967         depends on CPU_SUP_INTEL
1968         depends on X86_64
1969         depends on KVM_INTEL
1970         depends on X86_X2APIC
1971         select ARCH_KEEP_MEMBLOCK
1972         depends on CONTIG_ALLOC
1973         depends on !KEXEC_CORE
1974         depends on X86_MCE
1975         help
1976           Intel Trust Domain Extensions (TDX) protects guest VMs from malicious
1977           host and certain physical attacks.  This option enables necessary TDX
1978           support in the host kernel to run confidential VMs.
1979
1980           If unsure, say N.
1981
1982 config EFI
1983         bool "EFI runtime service support"
1984         depends on ACPI
1985         select UCS2_STRING
1986         select EFI_RUNTIME_WRAPPERS
1987         select ARCH_USE_MEMREMAP_PROT
1988         select EFI_RUNTIME_MAP if KEXEC_CORE
1989         help
1990           This enables the kernel to use EFI runtime services that are
1991           available (such as the EFI variable services).
1992
1993           This option is only useful on systems that have EFI firmware.
1994           In addition, you should use the latest ELILO loader available
1995           at <http://elilo.sourceforge.net> in order to take advantage
1996           of EFI runtime services. However, even with this option, the
1997           resultant kernel should continue to boot on existing non-EFI
1998           platforms.
1999
2000 config EFI_STUB
2001         bool "EFI stub support"
2002         depends on EFI
2003         select RELOCATABLE
2004         help
2005           This kernel feature allows a bzImage to be loaded directly
2006           by EFI firmware without the use of a bootloader.
2007
2008           See Documentation/admin-guide/efi-stub.rst for more information.
2009
2010 config EFI_HANDOVER_PROTOCOL
2011         bool "EFI handover protocol (DEPRECATED)"
2012         depends on EFI_STUB
2013         default y
2014         help
2015           Select this in order to include support for the deprecated EFI
2016           handover protocol, which defines alternative entry points into the
2017           EFI stub.  This is a practice that has no basis in the UEFI
2018           specification, and requires a priori knowledge on the part of the
2019           bootloader about Linux/x86 specific ways of passing the command line
2020           and initrd, and where in memory those assets may be loaded.
2021
2022           If in doubt, say Y. Even though the corresponding support is not
2023           present in upstream GRUB or other bootloaders, most distros build
2024           GRUB with numerous downstream patches applied, and may rely on the
2025           handover protocol as as result.
2026
2027 config EFI_MIXED
2028         bool "EFI mixed-mode support"
2029         depends on EFI_STUB && X86_64
2030         help
2031           Enabling this feature allows a 64-bit kernel to be booted
2032           on a 32-bit firmware, provided that your CPU supports 64-bit
2033           mode.
2034
2035           Note that it is not possible to boot a mixed-mode enabled
2036           kernel via the EFI boot stub - a bootloader that supports
2037           the EFI handover protocol must be used.
2038
2039           If unsure, say N.
2040
2041 config EFI_FAKE_MEMMAP
2042         bool "Enable EFI fake memory map"
2043         depends on EFI
2044         help
2045           Saying Y here will enable "efi_fake_mem" boot option.  By specifying
2046           this parameter, you can add arbitrary attribute to specific memory
2047           range by updating original (firmware provided) EFI memmap.  This is
2048           useful for debugging of EFI memmap related feature, e.g., Address
2049           Range Mirroring feature.
2050
2051 config EFI_MAX_FAKE_MEM
2052         int "maximum allowable number of ranges in efi_fake_mem boot option"
2053         depends on EFI_FAKE_MEMMAP
2054         range 1 128
2055         default 8
2056         help
2057           Maximum allowable number of ranges in efi_fake_mem boot option.
2058           Ranges can be set up to this value using comma-separated list.
2059           The default value is 8.
2060
2061 config EFI_RUNTIME_MAP
2062         bool "Export EFI runtime maps to sysfs" if EXPERT
2063         depends on EFI
2064         help
2065           Export EFI runtime memory regions to /sys/firmware/efi/runtime-map.
2066           That memory map is required by the 2nd kernel to set up EFI virtual
2067           mappings after kexec, but can also be used for debugging purposes.
2068
2069           See also Documentation/ABI/testing/sysfs-firmware-efi-runtime-map.
2070
2071 source "kernel/Kconfig.hz"
2072
2073 config ARCH_SUPPORTS_KEXEC
2074         def_bool y
2075
2076 config ARCH_SUPPORTS_KEXEC_FILE
2077         def_bool X86_64
2078
2079 config ARCH_SELECTS_KEXEC_FILE
2080         def_bool y
2081         depends on KEXEC_FILE
2082         select HAVE_IMA_KEXEC if IMA
2083
2084 config ARCH_SUPPORTS_KEXEC_PURGATORY
2085         def_bool y
2086
2087 config ARCH_SUPPORTS_KEXEC_SIG
2088         def_bool y
2089
2090 config ARCH_SUPPORTS_KEXEC_SIG_FORCE
2091         def_bool y
2092
2093 config ARCH_SUPPORTS_KEXEC_BZIMAGE_VERIFY_SIG
2094         def_bool y
2095
2096 config ARCH_SUPPORTS_KEXEC_JUMP
2097         def_bool y
2098
2099 config ARCH_SUPPORTS_CRASH_DUMP
2100         def_bool X86_64 || (X86_32 && HIGHMEM)
2101
2102 config ARCH_SUPPORTS_CRASH_HOTPLUG
2103         def_bool y
2104
2105 config ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION
2106         def_bool CRASH_RESERVE
2107
2108 config PHYSICAL_START
2109         hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
2110         default "0x1000000"
2111         help
2112           This gives the physical address where the kernel is loaded.
2113
2114           If the kernel is not relocatable (CONFIG_RELOCATABLE=n) then bzImage
2115           will decompress itself to above physical address and run from there.
2116           Otherwise, bzImage will run from the address where it has been loaded
2117           by the boot loader. The only exception is if it is loaded below the
2118           above physical address, in which case it will relocate itself there.
2119
2120           In normal kdump cases one does not have to set/change this option
2121           as now bzImage can be compiled as a completely relocatable image
2122           (CONFIG_RELOCATABLE=y) and be used to load and run from a different
2123           address. This option is mainly useful for the folks who don't want
2124           to use a bzImage for capturing the crash dump and want to use a
2125           vmlinux instead. vmlinux is not relocatable hence a kernel needs
2126           to be specifically compiled to run from a specific memory area
2127           (normally a reserved region) and this option comes handy.
2128
2129           So if you are using bzImage for capturing the crash dump,
2130           leave the value here unchanged to 0x1000000 and set
2131           CONFIG_RELOCATABLE=y.  Otherwise if you plan to use vmlinux
2132           for capturing the crash dump change this value to start of
2133           the reserved region.  In other words, it can be set based on
2134           the "X" value as specified in the "crashkernel=YM@XM"
2135           command line boot parameter passed to the panic-ed
2136           kernel. Please take a look at Documentation/admin-guide/kdump/kdump.rst
2137           for more details about crash dumps.
2138
2139           Usage of bzImage for capturing the crash dump is recommended as
2140           one does not have to build two kernels. Same kernel can be used
2141           as production kernel and capture kernel. Above option should have
2142           gone away after relocatable bzImage support is introduced. But it
2143           is present because there are users out there who continue to use
2144           vmlinux for dump capture. This option should go away down the
2145           line.
2146
2147           Don't change this unless you know what you are doing.
2148
2149 config RELOCATABLE
2150         bool "Build a relocatable kernel"
2151         default y
2152         help
2153           This builds a kernel image that retains relocation information
2154           so it can be loaded someplace besides the default 1MB.
2155           The relocations tend to make the kernel binary about 10% larger,
2156           but are discarded at runtime.
2157
2158           One use is for the kexec on panic case where the recovery kernel
2159           must live at a different physical address than the primary
2160           kernel.
2161
2162           Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
2163           it has been loaded at and the compile time physical address
2164           (CONFIG_PHYSICAL_START) is used as the minimum location.
2165
2166 config RANDOMIZE_BASE
2167         bool "Randomize the address of the kernel image (KASLR)"
2168         depends on RELOCATABLE
2169         default y
2170         help
2171           In support of Kernel Address Space Layout Randomization (KASLR),
2172           this randomizes the physical address at which the kernel image
2173           is decompressed and the virtual address where the kernel
2174           image is mapped, as a security feature that deters exploit
2175           attempts relying on knowledge of the location of kernel
2176           code internals.
2177
2178           On 64-bit, the kernel physical and virtual addresses are
2179           randomized separately. The physical address will be anywhere
2180           between 16MB and the top of physical memory (up to 64TB). The
2181           virtual address will be randomized from 16MB up to 1GB (9 bits
2182           of entropy). Note that this also reduces the memory space
2183           available to kernel modules from 1.5GB to 1GB.
2184
2185           On 32-bit, the kernel physical and virtual addresses are
2186           randomized together. They will be randomized from 16MB up to
2187           512MB (8 bits of entropy).
2188
2189           Entropy is generated using the RDRAND instruction if it is
2190           supported. If RDTSC is supported, its value is mixed into
2191           the entropy pool as well. If neither RDRAND nor RDTSC are
2192           supported, then entropy is read from the i8254 timer. The
2193           usable entropy is limited by the kernel being built using
2194           2GB addressing, and that PHYSICAL_ALIGN must be at a
2195           minimum of 2MB. As a result, only 10 bits of entropy are
2196           theoretically possible, but the implementations are further
2197           limited due to memory layouts.
2198
2199           If unsure, say Y.
2200
2201 # Relocation on x86 needs some additional build support
2202 config X86_NEED_RELOCS
2203         def_bool y
2204         depends on RANDOMIZE_BASE || (X86_32 && RELOCATABLE)
2205
2206 config PHYSICAL_ALIGN
2207         hex "Alignment value to which kernel should be aligned"
2208         default "0x200000"
2209         range 0x2000 0x1000000 if X86_32
2210         range 0x200000 0x1000000 if X86_64
2211         help
2212           This value puts the alignment restrictions on physical address
2213           where kernel is loaded and run from. Kernel is compiled for an
2214           address which meets above alignment restriction.
2215
2216           If bootloader loads the kernel at a non-aligned address and
2217           CONFIG_RELOCATABLE is set, kernel will move itself to nearest
2218           address aligned to above value and run from there.
2219
2220           If bootloader loads the kernel at a non-aligned address and
2221           CONFIG_RELOCATABLE is not set, kernel will ignore the run time
2222           load address and decompress itself to the address it has been
2223           compiled for and run from there. The address for which kernel is
2224           compiled already meets above alignment restrictions. Hence the
2225           end result is that kernel runs from a physical address meeting
2226           above alignment restrictions.
2227
2228           On 32-bit this value must be a multiple of 0x2000. On 64-bit
2229           this value must be a multiple of 0x200000.
2230
2231           Don't change this unless you know what you are doing.
2232
2233 config DYNAMIC_MEMORY_LAYOUT
2234         bool
2235         help
2236           This option makes base addresses of vmalloc and vmemmap as well as
2237           __PAGE_OFFSET movable during boot.
2238
2239 config RANDOMIZE_MEMORY
2240         bool "Randomize the kernel memory sections"
2241         depends on X86_64
2242         depends on RANDOMIZE_BASE
2243         select DYNAMIC_MEMORY_LAYOUT
2244         default RANDOMIZE_BASE
2245         help
2246           Randomizes the base virtual address of kernel memory sections
2247           (physical memory mapping, vmalloc & vmemmap). This security feature
2248           makes exploits relying on predictable memory locations less reliable.
2249
2250           The order of allocations remains unchanged. Entropy is generated in
2251           the same way as RANDOMIZE_BASE. Current implementation in the optimal
2252           configuration have in average 30,000 different possible virtual
2253           addresses for each memory section.
2254
2255           If unsure, say Y.
2256
2257 config RANDOMIZE_MEMORY_PHYSICAL_PADDING
2258         hex "Physical memory mapping padding" if EXPERT
2259         depends on RANDOMIZE_MEMORY
2260         default "0xa" if MEMORY_HOTPLUG
2261         default "0x0"
2262         range 0x1 0x40 if MEMORY_HOTPLUG
2263         range 0x0 0x40
2264         help
2265           Define the padding in terabytes added to the existing physical
2266           memory size during kernel memory randomization. It is useful
2267           for memory hotplug support but reduces the entropy available for
2268           address randomization.
2269
2270           If unsure, leave at the default value.
2271
2272 config ADDRESS_MASKING
2273         bool "Linear Address Masking support"
2274         depends on X86_64
2275         help
2276           Linear Address Masking (LAM) modifies the checking that is applied
2277           to 64-bit linear addresses, allowing software to use of the
2278           untranslated address bits for metadata.
2279
2280           The capability can be used for efficient address sanitizers (ASAN)
2281           implementation and for optimizations in JITs.
2282
2283 config HOTPLUG_CPU
2284         def_bool y
2285         depends on SMP
2286
2287 config COMPAT_VDSO
2288         def_bool n
2289         prompt "Disable the 32-bit vDSO (needed for glibc 2.3.3)"
2290         depends on COMPAT_32
2291         help
2292           Certain buggy versions of glibc will crash if they are
2293           presented with a 32-bit vDSO that is not mapped at the address
2294           indicated in its segment table.
2295
2296           The bug was introduced by f866314b89d56845f55e6f365e18b31ec978ec3a
2297           and fixed by 3b3ddb4f7db98ec9e912ccdf54d35df4aa30e04a and
2298           49ad572a70b8aeb91e57483a11dd1b77e31c4468.  Glibc 2.3.3 is
2299           the only released version with the bug, but OpenSUSE 9
2300           contains a buggy "glibc 2.3.2".
2301
2302           The symptom of the bug is that everything crashes on startup, saying:
2303           dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed!
2304
2305           Saying Y here changes the default value of the vdso32 boot
2306           option from 1 to 0, which turns off the 32-bit vDSO entirely.
2307           This works around the glibc bug but hurts performance.
2308
2309           If unsure, say N: if you are compiling your own kernel, you
2310           are unlikely to be using a buggy version of glibc.
2311
2312 choice
2313         prompt "vsyscall table for legacy applications"
2314         depends on X86_64
2315         default LEGACY_VSYSCALL_XONLY
2316         help
2317           Legacy user code that does not know how to find the vDSO expects
2318           to be able to issue three syscalls by calling fixed addresses in
2319           kernel space. Since this location is not randomized with ASLR,
2320           it can be used to assist security vulnerability exploitation.
2321
2322           This setting can be changed at boot time via the kernel command
2323           line parameter vsyscall=[emulate|xonly|none].  Emulate mode
2324           is deprecated and can only be enabled using the kernel command
2325           line.
2326
2327           On a system with recent enough glibc (2.14 or newer) and no
2328           static binaries, you can say None without a performance penalty
2329           to improve security.
2330
2331           If unsure, select "Emulate execution only".
2332
2333         config LEGACY_VSYSCALL_XONLY
2334                 bool "Emulate execution only"
2335                 help
2336                   The kernel traps and emulates calls into the fixed vsyscall
2337                   address mapping and does not allow reads.  This
2338                   configuration is recommended when userspace might use the
2339                   legacy vsyscall area but support for legacy binary
2340                   instrumentation of legacy code is not needed.  It mitigates
2341                   certain uses of the vsyscall area as an ASLR-bypassing
2342                   buffer.
2343
2344         config LEGACY_VSYSCALL_NONE
2345                 bool "None"
2346                 help
2347                   There will be no vsyscall mapping at all. This will
2348                   eliminate any risk of ASLR bypass due to the vsyscall
2349                   fixed address mapping. Attempts to use the vsyscalls
2350                   will be reported to dmesg, so that either old or
2351                   malicious userspace programs can be identified.
2352
2353 endchoice
2354
2355 config CMDLINE_BOOL
2356         bool "Built-in kernel command line"
2357         help
2358           Allow for specifying boot arguments to the kernel at
2359           build time.  On some systems (e.g. embedded ones), it is
2360           necessary or convenient to provide some or all of the
2361           kernel boot arguments with the kernel itself (that is,
2362           to not rely on the boot loader to provide them.)
2363
2364           To compile command line arguments into the kernel,
2365           set this option to 'Y', then fill in the
2366           boot arguments in CONFIG_CMDLINE.
2367
2368           Systems with fully functional boot loaders (i.e. non-embedded)
2369           should leave this option set to 'N'.
2370
2371 config CMDLINE
2372         string "Built-in kernel command string"
2373         depends on CMDLINE_BOOL
2374         default ""
2375         help
2376           Enter arguments here that should be compiled into the kernel
2377           image and used at boot time.  If the boot loader provides a
2378           command line at boot time, it is appended to this string to
2379           form the full kernel command line, when the system boots.
2380
2381           However, you can use the CONFIG_CMDLINE_OVERRIDE option to
2382           change this behavior.
2383
2384           In most cases, the command line (whether built-in or provided
2385           by the boot loader) should specify the device for the root
2386           file system.
2387
2388 config CMDLINE_OVERRIDE
2389         bool "Built-in command line overrides boot loader arguments"
2390         depends on CMDLINE_BOOL && CMDLINE != ""
2391         help
2392           Set this option to 'Y' to have the kernel ignore the boot loader
2393           command line, and use ONLY the built-in command line.
2394
2395           This is used to work around broken boot loaders.  This should
2396           be set to 'N' under normal conditions.
2397
2398 config MODIFY_LDT_SYSCALL
2399         bool "Enable the LDT (local descriptor table)" if EXPERT
2400         default y
2401         help
2402           Linux can allow user programs to install a per-process x86
2403           Local Descriptor Table (LDT) using the modify_ldt(2) system
2404           call.  This is required to run 16-bit or segmented code such as
2405           DOSEMU or some Wine programs.  It is also used by some very old
2406           threading libraries.
2407
2408           Enabling this feature adds a small amount of overhead to
2409           context switches and increases the low-level kernel attack
2410           surface.  Disabling it removes the modify_ldt(2) system call.
2411
2412           Saying 'N' here may make sense for embedded or server kernels.
2413
2414 config STRICT_SIGALTSTACK_SIZE
2415         bool "Enforce strict size checking for sigaltstack"
2416         depends on DYNAMIC_SIGFRAME
2417         help
2418           For historical reasons MINSIGSTKSZ is a constant which became
2419           already too small with AVX512 support. Add a mechanism to
2420           enforce strict checking of the sigaltstack size against the
2421           real size of the FPU frame. This option enables the check
2422           by default. It can also be controlled via the kernel command
2423           line option 'strict_sas_size' independent of this config
2424           switch. Enabling it might break existing applications which
2425           allocate a too small sigaltstack but 'work' because they
2426           never get a signal delivered.
2427
2428           Say 'N' unless you want to really enforce this check.
2429
2430 source "kernel/livepatch/Kconfig"
2431
2432 endmenu
2433
2434 config CC_HAS_NAMED_AS
2435         def_bool CC_IS_GCC && GCC_VERSION >= 90100
2436
2437 config CC_HAS_NAMED_AS_FIXED_SANITIZERS
2438         def_bool CC_IS_GCC && GCC_VERSION >= 130300
2439
2440 config USE_X86_SEG_SUPPORT
2441         def_bool y
2442         depends on CC_HAS_NAMED_AS
2443         #
2444         # -fsanitize=kernel-address (KASAN) and -fsanitize=thread
2445         # (KCSAN) are incompatible with named address spaces with
2446         # GCC < 13.3 - see GCC PR sanitizer/111736.
2447         #
2448         depends on !(KASAN || KCSAN) || CC_HAS_NAMED_AS_FIXED_SANITIZERS
2449
2450 config CC_HAS_SLS
2451         def_bool $(cc-option,-mharden-sls=all)
2452
2453 config CC_HAS_RETURN_THUNK
2454         def_bool $(cc-option,-mfunction-return=thunk-extern)
2455
2456 config CC_HAS_ENTRY_PADDING
2457         def_bool $(cc-option,-fpatchable-function-entry=16,16)
2458
2459 config FUNCTION_PADDING_CFI
2460         int
2461         default 59 if FUNCTION_ALIGNMENT_64B
2462         default 27 if FUNCTION_ALIGNMENT_32B
2463         default 11 if FUNCTION_ALIGNMENT_16B
2464         default  3 if FUNCTION_ALIGNMENT_8B
2465         default  0
2466
2467 # Basically: FUNCTION_ALIGNMENT - 5*CFI_CLANG
2468 # except Kconfig can't do arithmetic :/
2469 config FUNCTION_PADDING_BYTES
2470         int
2471         default FUNCTION_PADDING_CFI if CFI_CLANG
2472         default FUNCTION_ALIGNMENT
2473
2474 config CALL_PADDING
2475         def_bool n
2476         depends on CC_HAS_ENTRY_PADDING && OBJTOOL
2477         select FUNCTION_ALIGNMENT_16B
2478
2479 config FINEIBT
2480         def_bool y
2481         depends on X86_KERNEL_IBT && CFI_CLANG && MITIGATION_RETPOLINE
2482         select CALL_PADDING
2483
2484 config HAVE_CALL_THUNKS
2485         def_bool y
2486         depends on CC_HAS_ENTRY_PADDING && MITIGATION_RETHUNK && OBJTOOL
2487
2488 config CALL_THUNKS
2489         def_bool n
2490         select CALL_PADDING
2491
2492 config PREFIX_SYMBOLS
2493         def_bool y
2494         depends on CALL_PADDING && !CFI_CLANG
2495
2496 menuconfig CPU_MITIGATIONS
2497         bool "Mitigations for CPU vulnerabilities"
2498         default y
2499         help
2500           Say Y here to enable options which enable mitigations for hardware
2501           vulnerabilities (usually related to speculative execution).
2502           Mitigations can be disabled or restricted to SMT systems at runtime
2503           via the "mitigations" kernel parameter.
2504
2505           If you say N, all mitigations will be disabled.  This CANNOT be
2506           overridden at runtime.
2507
2508           Say 'Y', unless you really know what you are doing.
2509
2510 if CPU_MITIGATIONS
2511
2512 config MITIGATION_PAGE_TABLE_ISOLATION
2513         bool "Remove the kernel mapping in user mode"
2514         default y
2515         depends on (X86_64 || X86_PAE)
2516         help
2517           This feature reduces the number of hardware side channels by
2518           ensuring that the majority of kernel addresses are not mapped
2519           into userspace.
2520
2521           See Documentation/arch/x86/pti.rst for more details.
2522
2523 config MITIGATION_RETPOLINE
2524         bool "Avoid speculative indirect branches in kernel"
2525         select OBJTOOL if HAVE_OBJTOOL
2526         default y
2527         help
2528           Compile kernel with the retpoline compiler options to guard against
2529           kernel-to-user data leaks by avoiding speculative indirect
2530           branches. Requires a compiler with -mindirect-branch=thunk-extern
2531           support for full protection. The kernel may run slower.
2532
2533 config MITIGATION_RETHUNK
2534         bool "Enable return-thunks"
2535         depends on MITIGATION_RETPOLINE && CC_HAS_RETURN_THUNK
2536         select OBJTOOL if HAVE_OBJTOOL
2537         default y if X86_64
2538         help
2539           Compile the kernel with the return-thunks compiler option to guard
2540           against kernel-to-user data leaks by avoiding return speculation.
2541           Requires a compiler with -mfunction-return=thunk-extern
2542           support for full protection. The kernel may run slower.
2543
2544 config MITIGATION_UNRET_ENTRY
2545         bool "Enable UNRET on kernel entry"
2546         depends on CPU_SUP_AMD && MITIGATION_RETHUNK && X86_64
2547         default y
2548         help
2549           Compile the kernel with support for the retbleed=unret mitigation.
2550
2551 config MITIGATION_CALL_DEPTH_TRACKING
2552         bool "Mitigate RSB underflow with call depth tracking"
2553         depends on CPU_SUP_INTEL && HAVE_CALL_THUNKS
2554         select HAVE_DYNAMIC_FTRACE_NO_PATCHABLE
2555         select CALL_THUNKS
2556         default y
2557         help
2558           Compile the kernel with call depth tracking to mitigate the Intel
2559           SKL Return-Speculation-Buffer (RSB) underflow issue. The
2560           mitigation is off by default and needs to be enabled on the
2561           kernel command line via the retbleed=stuff option. For
2562           non-affected systems the overhead of this option is marginal as
2563           the call depth tracking is using run-time generated call thunks
2564           in a compiler generated padding area and call patching. This
2565           increases text size by ~5%. For non affected systems this space
2566           is unused. On affected SKL systems this results in a significant
2567           performance gain over the IBRS mitigation.
2568
2569 config CALL_THUNKS_DEBUG
2570         bool "Enable call thunks and call depth tracking debugging"
2571         depends on MITIGATION_CALL_DEPTH_TRACKING
2572         select FUNCTION_ALIGNMENT_32B
2573         default n
2574         help
2575           Enable call/ret counters for imbalance detection and build in
2576           a noisy dmesg about callthunks generation and call patching for
2577           trouble shooting. The debug prints need to be enabled on the
2578           kernel command line with 'debug-callthunks'.
2579           Only enable this when you are debugging call thunks as this
2580           creates a noticeable runtime overhead. If unsure say N.
2581
2582 config MITIGATION_IBPB_ENTRY
2583         bool "Enable IBPB on kernel entry"
2584         depends on CPU_SUP_AMD && X86_64
2585         default y
2586         help
2587           Compile the kernel with support for the retbleed=ibpb mitigation.
2588
2589 config MITIGATION_IBRS_ENTRY
2590         bool "Enable IBRS on kernel entry"
2591         depends on CPU_SUP_INTEL && X86_64
2592         default y
2593         help
2594           Compile the kernel with support for the spectre_v2=ibrs mitigation.
2595           This mitigates both spectre_v2 and retbleed at great cost to
2596           performance.
2597
2598 config MITIGATION_SRSO
2599         bool "Mitigate speculative RAS overflow on AMD"
2600         depends on CPU_SUP_AMD && X86_64 && MITIGATION_RETHUNK
2601         default y
2602         help
2603           Enable the SRSO mitigation needed on AMD Zen1-4 machines.
2604
2605 config MITIGATION_SLS
2606         bool "Mitigate Straight-Line-Speculation"
2607         depends on CC_HAS_SLS && X86_64
2608         select OBJTOOL if HAVE_OBJTOOL
2609         default n
2610         help
2611           Compile the kernel with straight-line-speculation options to guard
2612           against straight line speculation. The kernel image might be slightly
2613           larger.
2614
2615 config MITIGATION_GDS_FORCE
2616         bool "Force GDS Mitigation"
2617         depends on CPU_SUP_INTEL
2618         default n
2619         help
2620           Gather Data Sampling (GDS) is a hardware vulnerability which allows
2621           unprivileged speculative access to data which was previously stored in
2622           vector registers.
2623
2624           This option is equivalent to setting gather_data_sampling=force on the
2625           command line. The microcode mitigation is used if present, otherwise
2626           AVX is disabled as a mitigation. On affected systems that are missing
2627           the microcode any userspace code that unconditionally uses AVX will
2628           break with this option set.
2629
2630           Setting this option on systems not vulnerable to GDS has no effect.
2631
2632           If in doubt, say N.
2633
2634 config MITIGATION_RFDS
2635         bool "RFDS Mitigation"
2636         depends on CPU_SUP_INTEL
2637         default y
2638         help
2639           Enable mitigation for Register File Data Sampling (RFDS) by default.
2640           RFDS is a hardware vulnerability which affects Intel Atom CPUs. It
2641           allows unprivileged speculative access to stale data previously
2642           stored in floating point, vector and integer registers.
2643           See also <file:Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst>
2644
2645 config MITIGATION_SPECTRE_BHI
2646         bool "Mitigate Spectre-BHB (Branch History Injection)"
2647         depends on CPU_SUP_INTEL
2648         default y
2649         help
2650           Enable BHI mitigations. BHI attacks are a form of Spectre V2 attacks
2651           where the branch history buffer is poisoned to speculatively steer
2652           indirect branches.
2653           See <file:Documentation/admin-guide/hw-vuln/spectre.rst>
2654
2655 endif
2656
2657 config ARCH_HAS_ADD_PAGES
2658         def_bool y
2659         depends on ARCH_ENABLE_MEMORY_HOTPLUG
2660
2661 menu "Power management and ACPI options"
2662
2663 config ARCH_HIBERNATION_HEADER
2664         def_bool y
2665         depends on HIBERNATION
2666
2667 source "kernel/power/Kconfig"
2668
2669 source "drivers/acpi/Kconfig"
2670
2671 config X86_APM_BOOT
2672         def_bool y
2673         depends on APM
2674
2675 menuconfig APM
2676         tristate "APM (Advanced Power Management) BIOS support"
2677         depends on X86_32 && PM_SLEEP
2678         help
2679           APM is a BIOS specification for saving power using several different
2680           techniques. This is mostly useful for battery powered laptops with
2681           APM compliant BIOSes. If you say Y here, the system time will be
2682           reset after a RESUME operation, the /proc/apm device will provide
2683           battery status information, and user-space programs will receive
2684           notification of APM "events" (e.g. battery status change).
2685
2686           If you select "Y" here, you can disable actual use of the APM
2687           BIOS by passing the "apm=off" option to the kernel at boot time.
2688
2689           Note that the APM support is almost completely disabled for
2690           machines with more than one CPU.
2691
2692           In order to use APM, you will need supporting software. For location
2693           and more information, read <file:Documentation/power/apm-acpi.rst>
2694           and the Battery Powered Linux mini-HOWTO, available from
2695           <http://www.tldp.org/docs.html#howto>.
2696
2697           This driver does not spin down disk drives (see the hdparm(8)
2698           manpage ("man 8 hdparm") for that), and it doesn't turn off
2699           VESA-compliant "green" monitors.
2700
2701           This driver does not support the TI 4000M TravelMate and the ACER
2702           486/DX4/75 because they don't have compliant BIOSes. Many "green"
2703           desktop machines also don't have compliant BIOSes, and this driver
2704           may cause those machines to panic during the boot phase.
2705
2706           Generally, if you don't have a battery in your machine, there isn't
2707           much point in using this driver and you should say N. If you get
2708           random kernel OOPSes or reboots that don't seem to be related to
2709           anything, try disabling/enabling this option (or disabling/enabling
2710           APM in your BIOS).
2711
2712           Some other things you should try when experiencing seemingly random,
2713           "weird" problems:
2714
2715           1) make sure that you have enough swap space and that it is
2716           enabled.
2717           2) pass the "idle=poll" option to the kernel
2718           3) switch on floating point emulation in the kernel and pass
2719           the "no387" option to the kernel
2720           4) pass the "floppy=nodma" option to the kernel
2721           5) pass the "mem=4M" option to the kernel (thereby disabling
2722           all but the first 4 MB of RAM)
2723           6) make sure that the CPU is not over clocked.
2724           7) read the sig11 FAQ at <http://www.bitwizard.nl/sig11/>
2725           8) disable the cache from your BIOS settings
2726           9) install a fan for the video card or exchange video RAM
2727           10) install a better fan for the CPU
2728           11) exchange RAM chips
2729           12) exchange the motherboard.
2730
2731           To compile this driver as a module, choose M here: the
2732           module will be called apm.
2733
2734 if APM
2735
2736 config APM_IGNORE_USER_SUSPEND
2737         bool "Ignore USER SUSPEND"
2738         help
2739           This option will ignore USER SUSPEND requests. On machines with a
2740           compliant APM BIOS, you want to say N. However, on the NEC Versa M
2741           series notebooks, it is necessary to say Y because of a BIOS bug.
2742
2743 config APM_DO_ENABLE
2744         bool "Enable PM at boot time"
2745         help
2746           Enable APM features at boot time. From page 36 of the APM BIOS
2747           specification: "When disabled, the APM BIOS does not automatically
2748           power manage devices, enter the Standby State, enter the Suspend
2749           State, or take power saving steps in response to CPU Idle calls."
2750           This driver will make CPU Idle calls when Linux is idle (unless this
2751           feature is turned off -- see "Do CPU IDLE calls", below). This
2752           should always save battery power, but more complicated APM features
2753           will be dependent on your BIOS implementation. You may need to turn
2754           this option off if your computer hangs at boot time when using APM
2755           support, or if it beeps continuously instead of suspending. Turn
2756           this off if you have a NEC UltraLite Versa 33/C or a Toshiba
2757           T400CDT. This is off by default since most machines do fine without
2758           this feature.
2759
2760 config APM_CPU_IDLE
2761         depends on CPU_IDLE
2762         bool "Make CPU Idle calls when idle"
2763         help
2764           Enable calls to APM CPU Idle/CPU Busy inside the kernel's idle loop.
2765           On some machines, this can activate improved power savings, such as
2766           a slowed CPU clock rate, when the machine is idle. These idle calls
2767           are made after the idle loop has run for some length of time (e.g.,
2768           333 mS). On some machines, this will cause a hang at boot time or
2769           whenever the CPU becomes idle. (On machines with more than one CPU,
2770           this option does nothing.)
2771
2772 config APM_DISPLAY_BLANK
2773         bool "Enable console blanking using APM"
2774         help
2775           Enable console blanking using the APM. Some laptops can use this to
2776           turn off the LCD backlight when the screen blanker of the Linux
2777           virtual console blanks the screen. Note that this is only used by
2778           the virtual console screen blanker, and won't turn off the backlight
2779           when using the X Window system. This also doesn't have anything to
2780           do with your VESA-compliant power-saving monitor. Further, this
2781           option doesn't work for all laptops -- it might not turn off your
2782           backlight at all, or it might print a lot of errors to the console,
2783           especially if you are using gpm.
2784
2785 config APM_ALLOW_INTS
2786         bool "Allow interrupts during APM BIOS calls"
2787         help
2788           Normally we disable external interrupts while we are making calls to
2789           the APM BIOS as a measure to lessen the effects of a badly behaving
2790           BIOS implementation.  The BIOS should reenable interrupts if it
2791           needs to.  Unfortunately, some BIOSes do not -- especially those in
2792           many of the newer IBM Thinkpads.  If you experience hangs when you
2793           suspend, try setting this to Y.  Otherwise, say N.
2794
2795 endif # APM
2796
2797 source "drivers/cpufreq/Kconfig"
2798
2799 source "drivers/cpuidle/Kconfig"
2800
2801 source "drivers/idle/Kconfig"
2802
2803 endmenu
2804
2805 menu "Bus options (PCI etc.)"
2806
2807 choice
2808         prompt "PCI access mode"
2809         depends on X86_32 && PCI
2810         default PCI_GOANY
2811         help
2812           On PCI systems, the BIOS can be used to detect the PCI devices and
2813           determine their configuration. However, some old PCI motherboards
2814           have BIOS bugs and may crash if this is done. Also, some embedded
2815           PCI-based systems don't have any BIOS at all. Linux can also try to
2816           detect the PCI hardware directly without using the BIOS.
2817
2818           With this option, you can specify how Linux should detect the
2819           PCI devices. If you choose "BIOS", the BIOS will be used,
2820           if you choose "Direct", the BIOS won't be used, and if you
2821           choose "MMConfig", then PCI Express MMCONFIG will be used.
2822           If you choose "Any", the kernel will try MMCONFIG, then the
2823           direct access method and falls back to the BIOS if that doesn't
2824           work. If unsure, go with the default, which is "Any".
2825
2826 config PCI_GOBIOS
2827         bool "BIOS"
2828
2829 config PCI_GOMMCONFIG
2830         bool "MMConfig"
2831
2832 config PCI_GODIRECT
2833         bool "Direct"
2834
2835 config PCI_GOOLPC
2836         bool "OLPC XO-1"
2837         depends on OLPC
2838
2839 config PCI_GOANY
2840         bool "Any"
2841
2842 endchoice
2843
2844 config PCI_BIOS
2845         def_bool y
2846         depends on X86_32 && PCI && (PCI_GOBIOS || PCI_GOANY)
2847
2848 # x86-64 doesn't support PCI BIOS access from long mode so always go direct.
2849 config PCI_DIRECT
2850         def_bool y
2851         depends on PCI && (X86_64 || (PCI_GODIRECT || PCI_GOANY || PCI_GOOLPC || PCI_GOMMCONFIG))
2852
2853 config PCI_MMCONFIG
2854         bool "Support mmconfig PCI config space access" if X86_64
2855         default y
2856         depends on PCI && (ACPI || JAILHOUSE_GUEST)
2857         depends on X86_64 || (PCI_GOANY || PCI_GOMMCONFIG)
2858
2859 config PCI_OLPC
2860         def_bool y
2861         depends on PCI && OLPC && (PCI_GOOLPC || PCI_GOANY)
2862
2863 config PCI_XEN
2864         def_bool y
2865         depends on PCI && XEN
2866
2867 config MMCONF_FAM10H
2868         def_bool y
2869         depends on X86_64 && PCI_MMCONFIG && ACPI
2870
2871 config PCI_CNB20LE_QUIRK
2872         bool "Read CNB20LE Host Bridge Windows" if EXPERT
2873         depends on PCI
2874         help
2875           Read the PCI windows out of the CNB20LE host bridge. This allows
2876           PCI hotplug to work on systems with the CNB20LE chipset which do
2877           not have ACPI.
2878
2879           There's no public spec for this chipset, and this functionality
2880           is known to be incomplete.
2881
2882           You should say N unless you know you need this.
2883
2884 config ISA_BUS
2885         bool "ISA bus support on modern systems" if EXPERT
2886         help
2887           Expose ISA bus device drivers and options available for selection and
2888           configuration. Enable this option if your target machine has an ISA
2889           bus. ISA is an older system, displaced by PCI and newer bus
2890           architectures -- if your target machine is modern, it probably does
2891           not have an ISA bus.
2892
2893           If unsure, say N.
2894
2895 # x86_64 have no ISA slots, but can have ISA-style DMA.
2896 config ISA_DMA_API
2897         bool "ISA-style DMA support" if (X86_64 && EXPERT)
2898         default y
2899         help
2900           Enables ISA-style DMA support for devices requiring such controllers.
2901           If unsure, say Y.
2902
2903 if X86_32
2904
2905 config ISA
2906         bool "ISA support"
2907         help
2908           Find out whether you have ISA slots on your motherboard.  ISA is the
2909           name of a bus system, i.e. the way the CPU talks to the other stuff
2910           inside your box.  Other bus systems are PCI, EISA, MicroChannel
2911           (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
2912           newer boards don't support it.  If you have ISA, say Y, otherwise N.
2913
2914 config SCx200
2915         tristate "NatSemi SCx200 support"
2916         help
2917           This provides basic support for National Semiconductor's
2918           (now AMD's) Geode processors.  The driver probes for the
2919           PCI-IDs of several on-chip devices, so its a good dependency
2920           for other scx200_* drivers.
2921
2922           If compiled as a module, the driver is named scx200.
2923
2924 config SCx200HR_TIMER
2925         tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
2926         depends on SCx200
2927         default y
2928         help
2929           This driver provides a clocksource built upon the on-chip
2930           27MHz high-resolution timer.  Its also a workaround for
2931           NSC Geode SC-1100's buggy TSC, which loses time when the
2932           processor goes idle (as is done by the scheduler).  The
2933           other workaround is idle=poll boot option.
2934
2935 config OLPC
2936         bool "One Laptop Per Child support"
2937         depends on !X86_PAE
2938         select GPIOLIB
2939         select OF
2940         select OF_PROMTREE
2941         select IRQ_DOMAIN
2942         select OLPC_EC
2943         help
2944           Add support for detecting the unique features of the OLPC
2945           XO hardware.
2946
2947 config OLPC_XO1_PM
2948         bool "OLPC XO-1 Power Management"
2949         depends on OLPC && MFD_CS5535=y && PM_SLEEP
2950         help
2951           Add support for poweroff and suspend of the OLPC XO-1 laptop.
2952
2953 config OLPC_XO1_RTC
2954         bool "OLPC XO-1 Real Time Clock"
2955         depends on OLPC_XO1_PM && RTC_DRV_CMOS
2956         help
2957           Add support for the XO-1 real time clock, which can be used as a
2958           programmable wakeup source.
2959
2960 config OLPC_XO1_SCI
2961         bool "OLPC XO-1 SCI extras"
2962         depends on OLPC && OLPC_XO1_PM && GPIO_CS5535=y
2963         depends on INPUT=y
2964         select POWER_SUPPLY
2965         help
2966           Add support for SCI-based features of the OLPC XO-1 laptop:
2967            - EC-driven system wakeups
2968            - Power button
2969            - Ebook switch
2970            - Lid switch
2971            - AC adapter status updates
2972            - Battery status updates
2973
2974 config OLPC_XO15_SCI
2975         bool "OLPC XO-1.5 SCI extras"
2976         depends on OLPC && ACPI
2977         select POWER_SUPPLY
2978         help
2979           Add support for SCI-based features of the OLPC XO-1.5 laptop:
2980            - EC-driven system wakeups
2981            - AC adapter status updates
2982            - Battery status updates
2983
2984 config ALIX
2985         bool "PCEngines ALIX System Support (LED setup)"
2986         select GPIOLIB
2987         help
2988           This option enables system support for the PCEngines ALIX.
2989           At present this just sets up LEDs for GPIO control on
2990           ALIX2/3/6 boards.  However, other system specific setup should
2991           get added here.
2992
2993           Note: You must still enable the drivers for GPIO and LED support
2994           (GPIO_CS5535 & LEDS_GPIO) to actually use the LEDs
2995
2996           Note: You have to set alix.force=1 for boards with Award BIOS.
2997
2998 config NET5501
2999         bool "Soekris Engineering net5501 System Support (LEDS, GPIO, etc)"
3000         select GPIOLIB
3001         help
3002           This option enables system support for the Soekris Engineering net5501.
3003
3004 config GEOS
3005         bool "Traverse Technologies GEOS System Support (LEDS, GPIO, etc)"
3006         select GPIOLIB
3007         depends on DMI
3008         help
3009           This option enables system support for the Traverse Technologies GEOS.
3010
3011 config TS5500
3012         bool "Technologic Systems TS-5500 platform support"
3013         depends on MELAN
3014         select CHECK_SIGNATURE
3015         select NEW_LEDS
3016         select LEDS_CLASS
3017         help
3018           This option enables system support for the Technologic Systems TS-5500.
3019
3020 endif # X86_32
3021
3022 config AMD_NB
3023         def_bool y
3024         depends on CPU_SUP_AMD && PCI
3025
3026 endmenu
3027
3028 menu "Binary Emulations"
3029
3030 config IA32_EMULATION
3031         bool "IA32 Emulation"
3032         depends on X86_64
3033         select ARCH_WANT_OLD_COMPAT_IPC
3034         select BINFMT_ELF
3035         select COMPAT_OLD_SIGACTION
3036         help
3037           Include code to run legacy 32-bit programs under a
3038           64-bit kernel. You should likely turn this on, unless you're
3039           100% sure that you don't have any 32-bit programs left.
3040
3041 config IA32_EMULATION_DEFAULT_DISABLED
3042         bool "IA32 emulation disabled by default"
3043         default n
3044         depends on IA32_EMULATION
3045         help
3046           Make IA32 emulation disabled by default. This prevents loading 32-bit
3047           processes and access to 32-bit syscalls. If unsure, leave it to its
3048           default value.
3049
3050 config X86_X32_ABI
3051         bool "x32 ABI for 64-bit mode"
3052         depends on X86_64
3053         # llvm-objcopy does not convert x86_64 .note.gnu.property or
3054         # compressed debug sections to x86_x32 properly:
3055         # https://github.com/ClangBuiltLinux/linux/issues/514
3056         # https://github.com/ClangBuiltLinux/linux/issues/1141
3057         depends on $(success,$(OBJCOPY) --version | head -n1 | grep -qv llvm)
3058         help
3059           Include code to run binaries for the x32 native 32-bit ABI
3060           for 64-bit processors.  An x32 process gets access to the
3061           full 64-bit register file and wide data path while leaving
3062           pointers at 32 bits for smaller memory footprint.
3063
3064 config COMPAT_32
3065         def_bool y
3066         depends on IA32_EMULATION || X86_32
3067         select HAVE_UID16
3068         select OLD_SIGSUSPEND3
3069
3070 config COMPAT
3071         def_bool y
3072         depends on IA32_EMULATION || X86_X32_ABI
3073
3074 config COMPAT_FOR_U64_ALIGNMENT
3075         def_bool y
3076         depends on COMPAT
3077
3078 endmenu
3079
3080 config HAVE_ATOMIC_IOMAP
3081         def_bool y
3082         depends on X86_32
3083
3084 source "arch/x86/kvm/Kconfig"
3085
3086 source "arch/x86/Kconfig.assembler"
This page took 0.208093 seconds and 4 git commands to generate.