]> git.ipfire.org Git - people/arne_f/kernel.git/blob - arch/x86/Kconfig
Merge branch 'linus' into locking/core, to pick up fixes
[people/arne_f/kernel.git] / arch / x86 / Kconfig
1 # Select 32 or 64 bit
2 config 64BIT
3 bool "64-bit kernel" if ARCH = "x86"
4 default ARCH != "i386"
5 ---help---
6 Say yes to build a 64-bit kernel - formerly known as x86_64
7 Say no to build a 32-bit kernel - formerly known as i386
8
9 config X86_32
10 def_bool y
11 depends on !64BIT
12 # Options that are inherently 32-bit kernel only:
13 select ARCH_WANT_IPC_PARSE_VERSION
14 select CLKSRC_I8253
15 select CLONE_BACKWARDS
16 select HAVE_AOUT
17 select HAVE_GENERIC_DMA_COHERENT
18 select MODULES_USE_ELF_REL
19 select OLD_SIGACTION
20
21 config X86_64
22 def_bool y
23 depends on 64BIT
24 # Options that are inherently 64-bit kernel only:
25 select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA
26 select ARCH_SUPPORTS_INT128
27 select ARCH_USE_CMPXCHG_LOCKREF
28 select HAVE_ARCH_SOFT_DIRTY
29 select MODULES_USE_ELF_RELA
30 select X86_DEV_DMA_OPS
31
32 #
33 # Arch settings
34 #
35 # ( Note that options that are marked 'if X86_64' could in principle be
36 # ported to 32-bit as well. )
37 #
38 config X86
39 def_bool y
40 #
41 # Note: keep this list sorted alphabetically
42 #
43 select ACPI_LEGACY_TABLES_LOOKUP if ACPI
44 select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
45 select ANON_INODES
46 select ARCH_CLOCKSOURCE_DATA
47 select ARCH_DISCARD_MEMBLOCK
48 select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI
49 select ARCH_HAS_DEBUG_VIRTUAL
50 select ARCH_HAS_DEVMEM_IS_ALLOWED
51 select ARCH_HAS_ELF_RANDOMIZE
52 select ARCH_HAS_FAST_MULTIPLIER
53 select ARCH_HAS_FORTIFY_SOURCE
54 select ARCH_HAS_GCOV_PROFILE_ALL
55 select ARCH_HAS_KCOV if X86_64
56 select ARCH_HAS_MMIO_FLUSH
57 select ARCH_HAS_PMEM_API if X86_64
58 select ARCH_HAS_REFCOUNT
59 select ARCH_HAS_UACCESS_FLUSHCACHE if X86_64
60 select ARCH_HAS_SET_MEMORY
61 select ARCH_HAS_SG_CHAIN
62 select ARCH_HAS_STRICT_KERNEL_RWX
63 select ARCH_HAS_STRICT_MODULE_RWX
64 select ARCH_HAS_UBSAN_SANITIZE_ALL
65 select ARCH_HAS_ZONE_DEVICE if X86_64
66 select ARCH_HAVE_NMI_SAFE_CMPXCHG
67 select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI
68 select ARCH_MIGHT_HAVE_PC_PARPORT
69 select ARCH_MIGHT_HAVE_PC_SERIO
70 select ARCH_SUPPORTS_ATOMIC_RMW
71 select ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
72 select ARCH_SUPPORTS_NUMA_BALANCING if X86_64
73 select ARCH_USE_BUILTIN_BSWAP
74 select ARCH_USE_QUEUED_RWLOCKS
75 select ARCH_USE_QUEUED_SPINLOCKS
76 select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
77 select ARCH_WANT_FRAME_POINTERS
78 select ARCH_WANTS_DYNAMIC_TASK_STRUCT
79 select ARCH_WANTS_THP_SWAP if X86_64
80 select BUILDTIME_EXTABLE_SORT
81 select CLKEVT_I8253
82 select CLOCKSOURCE_VALIDATE_LAST_CYCLE
83 select CLOCKSOURCE_WATCHDOG
84 select DCACHE_WORD_ACCESS
85 select EDAC_ATOMIC_SCRUB
86 select EDAC_SUPPORT
87 select GENERIC_CLOCKEVENTS
88 select GENERIC_CLOCKEVENTS_BROADCAST if X86_64 || (X86_32 && X86_LOCAL_APIC)
89 select GENERIC_CLOCKEVENTS_MIN_ADJUST
90 select GENERIC_CMOS_UPDATE
91 select GENERIC_CPU_AUTOPROBE
92 select GENERIC_EARLY_IOREMAP
93 select GENERIC_FIND_FIRST_BIT
94 select GENERIC_IOMAP
95 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
96 select GENERIC_IRQ_MIGRATION if SMP
97 select GENERIC_IRQ_PROBE
98 select GENERIC_IRQ_SHOW
99 select GENERIC_PENDING_IRQ if SMP
100 select GENERIC_SMP_IDLE_THREAD
101 select GENERIC_STRNCPY_FROM_USER
102 select GENERIC_STRNLEN_USER
103 select GENERIC_TIME_VSYSCALL
104 select HARDLOCKUP_CHECK_TIMESTAMP if X86_64
105 select HAVE_ACPI_APEI if ACPI
106 select HAVE_ACPI_APEI_NMI if ACPI
107 select HAVE_ALIGNED_STRUCT_PAGE if SLUB
108 select HAVE_ARCH_AUDITSYSCALL
109 select HAVE_ARCH_HUGE_VMAP if X86_64 || X86_PAE
110 select HAVE_ARCH_JUMP_LABEL
111 select HAVE_ARCH_KASAN if X86_64 && SPARSEMEM_VMEMMAP
112 select HAVE_ARCH_KGDB
113 select HAVE_ARCH_KMEMCHECK
114 select HAVE_ARCH_MMAP_RND_BITS if MMU
115 select HAVE_ARCH_MMAP_RND_COMPAT_BITS if MMU && COMPAT
116 select HAVE_ARCH_COMPAT_MMAP_BASES if MMU && COMPAT
117 select HAVE_ARCH_SECCOMP_FILTER
118 select HAVE_ARCH_TRACEHOOK
119 select HAVE_ARCH_TRANSPARENT_HUGEPAGE
120 select HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD if X86_64
121 select HAVE_ARCH_VMAP_STACK if X86_64
122 select HAVE_ARCH_WITHIN_STACK_FRAMES
123 select HAVE_CC_STACKPROTECTOR
124 select HAVE_CMPXCHG_DOUBLE
125 select HAVE_CMPXCHG_LOCAL
126 select HAVE_CONTEXT_TRACKING if X86_64
127 select HAVE_COPY_THREAD_TLS
128 select HAVE_C_RECORDMCOUNT
129 select HAVE_DEBUG_KMEMLEAK
130 select HAVE_DEBUG_STACKOVERFLOW
131 select HAVE_DMA_API_DEBUG
132 select HAVE_DMA_CONTIGUOUS
133 select HAVE_DYNAMIC_FTRACE
134 select HAVE_DYNAMIC_FTRACE_WITH_REGS
135 select HAVE_EBPF_JIT if X86_64
136 select HAVE_EFFICIENT_UNALIGNED_ACCESS
137 select HAVE_EXIT_THREAD
138 select HAVE_FENTRY if X86_64 || DYNAMIC_FTRACE
139 select HAVE_FTRACE_MCOUNT_RECORD
140 select HAVE_FUNCTION_GRAPH_TRACER
141 select HAVE_FUNCTION_TRACER
142 select HAVE_GCC_PLUGINS
143 select HAVE_HW_BREAKPOINT
144 select HAVE_IDE
145 select HAVE_IOREMAP_PROT
146 select HAVE_IRQ_EXIT_ON_IRQ_STACK if X86_64
147 select HAVE_IRQ_TIME_ACCOUNTING
148 select HAVE_KERNEL_BZIP2
149 select HAVE_KERNEL_GZIP
150 select HAVE_KERNEL_LZ4
151 select HAVE_KERNEL_LZMA
152 select HAVE_KERNEL_LZO
153 select HAVE_KERNEL_XZ
154 select HAVE_KPROBES
155 select HAVE_KPROBES_ON_FTRACE
156 select HAVE_KRETPROBES
157 select HAVE_KVM
158 select HAVE_LIVEPATCH if X86_64
159 select HAVE_MEMBLOCK
160 select HAVE_MEMBLOCK_NODE_MAP
161 select HAVE_MIXED_BREAKPOINTS_REGS
162 select HAVE_NMI
163 select HAVE_OPROFILE
164 select HAVE_OPTPROBES
165 select HAVE_PCSPKR_PLATFORM
166 select HAVE_PERF_EVENTS
167 select HAVE_PERF_EVENTS_NMI
168 select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI
169 select HAVE_PERF_REGS
170 select HAVE_PERF_USER_STACK_DUMP
171 select HAVE_REGS_AND_STACK_ACCESS_API
172 select HAVE_RELIABLE_STACKTRACE if X86_64 && FRAME_POINTER && STACK_VALIDATION
173 select HAVE_STACK_VALIDATION if X86_64
174 select HAVE_SYSCALL_TRACEPOINTS
175 select HAVE_UNSTABLE_SCHED_CLOCK
176 select HAVE_USER_RETURN_NOTIFIER
177 select IRQ_FORCED_THREADING
178 select PCI_LOCKLESS_CONFIG
179 select PERF_EVENTS
180 select RTC_LIB
181 select RTC_MC146818_LIB
182 select SPARSE_IRQ
183 select SRCU
184 select SYSCTL_EXCEPTION_TRACE
185 select THREAD_INFO_IN_TASK
186 select USER_STACKTRACE_SUPPORT
187 select VIRT_TO_BUS
188 select X86_FEATURE_NAMES if PROC_FS
189
190 config INSTRUCTION_DECODER
191 def_bool y
192 depends on KPROBES || PERF_EVENTS || UPROBES
193
194 config OUTPUT_FORMAT
195 string
196 default "elf32-i386" if X86_32
197 default "elf64-x86-64" if X86_64
198
199 config ARCH_DEFCONFIG
200 string
201 default "arch/x86/configs/i386_defconfig" if X86_32
202 default "arch/x86/configs/x86_64_defconfig" if X86_64
203
204 config LOCKDEP_SUPPORT
205 def_bool y
206
207 config STACKTRACE_SUPPORT
208 def_bool y
209
210 config MMU
211 def_bool y
212
213 config ARCH_MMAP_RND_BITS_MIN
214 default 28 if 64BIT
215 default 8
216
217 config ARCH_MMAP_RND_BITS_MAX
218 default 32 if 64BIT
219 default 16
220
221 config ARCH_MMAP_RND_COMPAT_BITS_MIN
222 default 8
223
224 config ARCH_MMAP_RND_COMPAT_BITS_MAX
225 default 16
226
227 config SBUS
228 bool
229
230 config NEED_DMA_MAP_STATE
231 def_bool y
232 depends on X86_64 || INTEL_IOMMU || DMA_API_DEBUG || SWIOTLB
233
234 config NEED_SG_DMA_LENGTH
235 def_bool y
236
237 config GENERIC_ISA_DMA
238 def_bool y
239 depends on ISA_DMA_API
240
241 config GENERIC_BUG
242 def_bool y
243 depends on BUG
244 select GENERIC_BUG_RELATIVE_POINTERS if X86_64
245
246 config GENERIC_BUG_RELATIVE_POINTERS
247 bool
248
249 config GENERIC_HWEIGHT
250 def_bool y
251
252 config ARCH_MAY_HAVE_PC_FDC
253 def_bool y
254 depends on ISA_DMA_API
255
256 config RWSEM_XCHGADD_ALGORITHM
257 def_bool y
258
259 config GENERIC_CALIBRATE_DELAY
260 def_bool y
261
262 config ARCH_HAS_CPU_RELAX
263 def_bool y
264
265 config ARCH_HAS_CACHE_LINE_SIZE
266 def_bool y
267
268 config HAVE_SETUP_PER_CPU_AREA
269 def_bool y
270
271 config NEED_PER_CPU_EMBED_FIRST_CHUNK
272 def_bool y
273
274 config NEED_PER_CPU_PAGE_FIRST_CHUNK
275 def_bool y
276
277 config ARCH_HIBERNATION_POSSIBLE
278 def_bool y
279
280 config ARCH_SUSPEND_POSSIBLE
281 def_bool y
282
283 config ARCH_WANT_HUGE_PMD_SHARE
284 def_bool y
285
286 config ARCH_WANT_GENERAL_HUGETLB
287 def_bool y
288
289 config ZONE_DMA32
290 def_bool y if X86_64
291
292 config AUDIT_ARCH
293 def_bool y if X86_64
294
295 config ARCH_SUPPORTS_OPTIMIZED_INLINING
296 def_bool y
297
298 config ARCH_SUPPORTS_DEBUG_PAGEALLOC
299 def_bool y
300
301 config KASAN_SHADOW_OFFSET
302 hex
303 depends on KASAN
304 default 0xdff8000000000000 if X86_5LEVEL
305 default 0xdffffc0000000000
306
307 config HAVE_INTEL_TXT
308 def_bool y
309 depends on INTEL_IOMMU && ACPI
310
311 config X86_32_SMP
312 def_bool y
313 depends on X86_32 && SMP
314
315 config X86_64_SMP
316 def_bool y
317 depends on X86_64 && SMP
318
319 config X86_32_LAZY_GS
320 def_bool y
321 depends on X86_32 && !CC_STACKPROTECTOR
322
323 config ARCH_SUPPORTS_UPROBES
324 def_bool y
325
326 config FIX_EARLYCON_MEM
327 def_bool y
328
329 config PGTABLE_LEVELS
330 int
331 default 4 if X86_64
332 default 3 if X86_PAE
333 default 2
334
335 source "init/Kconfig"
336 source "kernel/Kconfig.freezer"
337
338 menu "Processor type and features"
339
340 config ZONE_DMA
341 bool "DMA memory allocation support" if EXPERT
342 default y
343 help
344 DMA memory allocation support allows devices with less than 32-bit
345 addressing to allocate within the first 16MB of address space.
346 Disable if no such devices will be used.
347
348 If unsure, say Y.
349
350 config SMP
351 bool "Symmetric multi-processing support"
352 ---help---
353 This enables support for systems with more than one CPU. If you have
354 a system with only one CPU, say N. If you have a system with more
355 than one CPU, say Y.
356
357 If you say N here, the kernel will run on uni- and multiprocessor
358 machines, but will use only one CPU of a multiprocessor machine. If
359 you say Y here, the kernel will run on many, but not all,
360 uniprocessor machines. On a uniprocessor machine, the kernel
361 will run faster if you say N here.
362
363 Note that if you say Y here and choose architecture "586" or
364 "Pentium" under "Processor family", the kernel will not work on 486
365 architectures. Similarly, multiprocessor kernels for the "PPro"
366 architecture may not work on all Pentium based boards.
367
368 People using multiprocessor machines who say Y here should also say
369 Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
370 Management" code will be disabled if you say Y here.
371
372 See also <file:Documentation/x86/i386/IO-APIC.txt>,
373 <file:Documentation/lockup-watchdogs.txt> and the SMP-HOWTO available at
374 <http://www.tldp.org/docs.html#howto>.
375
376 If you don't know what to do here, say N.
377
378 config X86_FEATURE_NAMES
379 bool "Processor feature human-readable names" if EMBEDDED
380 default y
381 ---help---
382 This option compiles in a table of x86 feature bits and corresponding
383 names. This is required to support /proc/cpuinfo and a few kernel
384 messages. You can disable this to save space, at the expense of
385 making those few kernel messages show numeric feature bits instead.
386
387 If in doubt, say Y.
388
389 config X86_FAST_FEATURE_TESTS
390 bool "Fast CPU feature tests" if EMBEDDED
391 default y
392 ---help---
393 Some fast-paths in the kernel depend on the capabilities of the CPU.
394 Say Y here for the kernel to patch in the appropriate code at runtime
395 based on the capabilities of the CPU. The infrastructure for patching
396 code at runtime takes up some additional space; space-constrained
397 embedded systems may wish to say N here to produce smaller, slightly
398 slower code.
399
400 config X86_X2APIC
401 bool "Support x2apic"
402 depends on X86_LOCAL_APIC && X86_64 && (IRQ_REMAP || HYPERVISOR_GUEST)
403 ---help---
404 This enables x2apic support on CPUs that have this feature.
405
406 This allows 32-bit apic IDs (so it can support very large systems),
407 and accesses the local apic via MSRs not via mmio.
408
409 If you don't know what to do here, say N.
410
411 config X86_MPPARSE
412 bool "Enable MPS table" if ACPI || SFI
413 default y
414 depends on X86_LOCAL_APIC
415 ---help---
416 For old smp systems that do not have proper acpi support. Newer systems
417 (esp with 64bit cpus) with acpi support, MADT and DSDT will override it
418
419 config X86_BIGSMP
420 bool "Support for big SMP systems with more than 8 CPUs"
421 depends on X86_32 && SMP
422 ---help---
423 This option is needed for the systems that have more than 8 CPUs
424
425 config GOLDFISH
426 def_bool y
427 depends on X86_GOLDFISH
428
429 config INTEL_RDT_A
430 bool "Intel Resource Director Technology Allocation support"
431 default n
432 depends on X86 && CPU_SUP_INTEL
433 select KERNFS
434 help
435 Select to enable resource allocation which is a sub-feature of
436 Intel Resource Director Technology(RDT). More information about
437 RDT can be found in the Intel x86 Architecture Software
438 Developer Manual.
439
440 Say N if unsure.
441
442 if X86_32
443 config X86_EXTENDED_PLATFORM
444 bool "Support for extended (non-PC) x86 platforms"
445 default y
446 ---help---
447 If you disable this option then the kernel will only support
448 standard PC platforms. (which covers the vast majority of
449 systems out there.)
450
451 If you enable this option then you'll be able to select support
452 for the following (non-PC) 32 bit x86 platforms:
453 Goldfish (Android emulator)
454 AMD Elan
455 RDC R-321x SoC
456 SGI 320/540 (Visual Workstation)
457 STA2X11-based (e.g. Northville)
458 Moorestown MID devices
459
460 If you have one of these systems, or if you want to build a
461 generic distribution kernel, say Y here - otherwise say N.
462 endif
463
464 if X86_64
465 config X86_EXTENDED_PLATFORM
466 bool "Support for extended (non-PC) x86 platforms"
467 default y
468 ---help---
469 If you disable this option then the kernel will only support
470 standard PC platforms. (which covers the vast majority of
471 systems out there.)
472
473 If you enable this option then you'll be able to select support
474 for the following (non-PC) 64 bit x86 platforms:
475 Numascale NumaChip
476 ScaleMP vSMP
477 SGI Ultraviolet
478
479 If you have one of these systems, or if you want to build a
480 generic distribution kernel, say Y here - otherwise say N.
481 endif
482 # This is an alphabetically sorted list of 64 bit extended platforms
483 # Please maintain the alphabetic order if and when there are additions
484 config X86_NUMACHIP
485 bool "Numascale NumaChip"
486 depends on X86_64
487 depends on X86_EXTENDED_PLATFORM
488 depends on NUMA
489 depends on SMP
490 depends on X86_X2APIC
491 depends on PCI_MMCONFIG
492 ---help---
493 Adds support for Numascale NumaChip large-SMP systems. Needed to
494 enable more than ~168 cores.
495 If you don't have one of these, you should say N here.
496
497 config X86_VSMP
498 bool "ScaleMP vSMP"
499 select HYPERVISOR_GUEST
500 select PARAVIRT
501 depends on X86_64 && PCI
502 depends on X86_EXTENDED_PLATFORM
503 depends on SMP
504 ---help---
505 Support for ScaleMP vSMP systems. Say 'Y' here if this kernel is
506 supposed to run on these EM64T-based machines. Only choose this option
507 if you have one of these machines.
508
509 config X86_UV
510 bool "SGI Ultraviolet"
511 depends on X86_64
512 depends on X86_EXTENDED_PLATFORM
513 depends on NUMA
514 depends on EFI
515 depends on X86_X2APIC
516 depends on PCI
517 ---help---
518 This option is needed in order to support SGI Ultraviolet systems.
519 If you don't have one of these, you should say N here.
520
521 # Following is an alphabetically sorted list of 32 bit extended platforms
522 # Please maintain the alphabetic order if and when there are additions
523
524 config X86_GOLDFISH
525 bool "Goldfish (Virtual Platform)"
526 depends on X86_EXTENDED_PLATFORM
527 ---help---
528 Enable support for the Goldfish virtual platform used primarily
529 for Android development. Unless you are building for the Android
530 Goldfish emulator say N here.
531
532 config X86_INTEL_CE
533 bool "CE4100 TV platform"
534 depends on PCI
535 depends on PCI_GODIRECT
536 depends on X86_IO_APIC
537 depends on X86_32
538 depends on X86_EXTENDED_PLATFORM
539 select X86_REBOOTFIXUPS
540 select OF
541 select OF_EARLY_FLATTREE
542 ---help---
543 Select for the Intel CE media processor (CE4100) SOC.
544 This option compiles in support for the CE4100 SOC for settop
545 boxes and media devices.
546
547 config X86_INTEL_MID
548 bool "Intel MID platform support"
549 depends on X86_EXTENDED_PLATFORM
550 depends on X86_PLATFORM_DEVICES
551 depends on PCI
552 depends on X86_64 || (PCI_GOANY && X86_32)
553 depends on X86_IO_APIC
554 select SFI
555 select I2C
556 select DW_APB_TIMER
557 select APB_TIMER
558 select INTEL_SCU_IPC
559 select MFD_INTEL_MSIC
560 ---help---
561 Select to build a kernel capable of supporting Intel MID (Mobile
562 Internet Device) platform systems which do not have the PCI legacy
563 interfaces. If you are building for a PC class system say N here.
564
565 Intel MID platforms are based on an Intel processor and chipset which
566 consume less power than most of the x86 derivatives.
567
568 config X86_INTEL_QUARK
569 bool "Intel Quark platform support"
570 depends on X86_32
571 depends on X86_EXTENDED_PLATFORM
572 depends on X86_PLATFORM_DEVICES
573 depends on X86_TSC
574 depends on PCI
575 depends on PCI_GOANY
576 depends on X86_IO_APIC
577 select IOSF_MBI
578 select INTEL_IMR
579 select COMMON_CLK
580 ---help---
581 Select to include support for Quark X1000 SoC.
582 Say Y here if you have a Quark based system such as the Arduino
583 compatible Intel Galileo.
584
585 config X86_INTEL_LPSS
586 bool "Intel Low Power Subsystem Support"
587 depends on X86 && ACPI
588 select COMMON_CLK
589 select PINCTRL
590 select IOSF_MBI
591 ---help---
592 Select to build support for Intel Low Power Subsystem such as
593 found on Intel Lynxpoint PCH. Selecting this option enables
594 things like clock tree (common clock framework) and pincontrol
595 which are needed by the LPSS peripheral drivers.
596
597 config X86_AMD_PLATFORM_DEVICE
598 bool "AMD ACPI2Platform devices support"
599 depends on ACPI
600 select COMMON_CLK
601 select PINCTRL
602 ---help---
603 Select to interpret AMD specific ACPI device to platform device
604 such as I2C, UART, GPIO found on AMD Carrizo and later chipsets.
605 I2C and UART depend on COMMON_CLK to set clock. GPIO driver is
606 implemented under PINCTRL subsystem.
607
608 config IOSF_MBI
609 tristate "Intel SoC IOSF Sideband support for SoC platforms"
610 depends on PCI
611 ---help---
612 This option enables sideband register access support for Intel SoC
613 platforms. On these platforms the IOSF sideband is used in lieu of
614 MSR's for some register accesses, mostly but not limited to thermal
615 and power. Drivers may query the availability of this device to
616 determine if they need the sideband in order to work on these
617 platforms. The sideband is available on the following SoC products.
618 This list is not meant to be exclusive.
619 - BayTrail
620 - Braswell
621 - Quark
622
623 You should say Y if you are running a kernel on one of these SoC's.
624
625 config IOSF_MBI_DEBUG
626 bool "Enable IOSF sideband access through debugfs"
627 depends on IOSF_MBI && DEBUG_FS
628 ---help---
629 Select this option to expose the IOSF sideband access registers (MCR,
630 MDR, MCRX) through debugfs to write and read register information from
631 different units on the SoC. This is most useful for obtaining device
632 state information for debug and analysis. As this is a general access
633 mechanism, users of this option would have specific knowledge of the
634 device they want to access.
635
636 If you don't require the option or are in doubt, say N.
637
638 config X86_RDC321X
639 bool "RDC R-321x SoC"
640 depends on X86_32
641 depends on X86_EXTENDED_PLATFORM
642 select M486
643 select X86_REBOOTFIXUPS
644 ---help---
645 This option is needed for RDC R-321x system-on-chip, also known
646 as R-8610-(G).
647 If you don't have one of these chips, you should say N here.
648
649 config X86_32_NON_STANDARD
650 bool "Support non-standard 32-bit SMP architectures"
651 depends on X86_32 && SMP
652 depends on X86_EXTENDED_PLATFORM
653 ---help---
654 This option compiles in the bigsmp and STA2X11 default
655 subarchitectures. It is intended for a generic binary
656 kernel. If you select them all, kernel will probe it one by
657 one and will fallback to default.
658
659 # Alphabetically sorted list of Non standard 32 bit platforms
660
661 config X86_SUPPORTS_MEMORY_FAILURE
662 def_bool y
663 # MCE code calls memory_failure():
664 depends on X86_MCE
665 # On 32-bit this adds too big of NODES_SHIFT and we run out of page flags:
666 # On 32-bit SPARSEMEM adds too big of SECTIONS_WIDTH:
667 depends on X86_64 || !SPARSEMEM
668 select ARCH_SUPPORTS_MEMORY_FAILURE
669
670 config STA2X11
671 bool "STA2X11 Companion Chip Support"
672 depends on X86_32_NON_STANDARD && PCI
673 select X86_DEV_DMA_OPS
674 select X86_DMA_REMAP
675 select SWIOTLB
676 select MFD_STA2X11
677 select GPIOLIB
678 default n
679 ---help---
680 This adds support for boards based on the STA2X11 IO-Hub,
681 a.k.a. "ConneXt". The chip is used in place of the standard
682 PC chipset, so all "standard" peripherals are missing. If this
683 option is selected the kernel will still be able to boot on
684 standard PC machines.
685
686 config X86_32_IRIS
687 tristate "Eurobraille/Iris poweroff module"
688 depends on X86_32
689 ---help---
690 The Iris machines from EuroBraille do not have APM or ACPI support
691 to shut themselves down properly. A special I/O sequence is
692 needed to do so, which is what this module does at
693 kernel shutdown.
694
695 This is only for Iris machines from EuroBraille.
696
697 If unused, say N.
698
699 config SCHED_OMIT_FRAME_POINTER
700 def_bool y
701 prompt "Single-depth WCHAN output"
702 depends on X86
703 ---help---
704 Calculate simpler /proc/<PID>/wchan values. If this option
705 is disabled then wchan values will recurse back to the
706 caller function. This provides more accurate wchan values,
707 at the expense of slightly more scheduling overhead.
708
709 If in doubt, say "Y".
710
711 menuconfig HYPERVISOR_GUEST
712 bool "Linux guest support"
713 ---help---
714 Say Y here to enable options for running Linux under various hyper-
715 visors. This option enables basic hypervisor detection and platform
716 setup.
717
718 If you say N, all options in this submenu will be skipped and
719 disabled, and Linux guest support won't be built in.
720
721 if HYPERVISOR_GUEST
722
723 config PARAVIRT
724 bool "Enable paravirtualization code"
725 ---help---
726 This changes the kernel so it can modify itself when it is run
727 under a hypervisor, potentially improving performance significantly
728 over full virtualization. However, when run without a hypervisor
729 the kernel is theoretically slower and slightly larger.
730
731 config PARAVIRT_DEBUG
732 bool "paravirt-ops debugging"
733 depends on PARAVIRT && DEBUG_KERNEL
734 ---help---
735 Enable to debug paravirt_ops internals. Specifically, BUG if
736 a paravirt_op is missing when it is called.
737
738 config PARAVIRT_SPINLOCKS
739 bool "Paravirtualization layer for spinlocks"
740 depends on PARAVIRT && SMP
741 ---help---
742 Paravirtualized spinlocks allow a pvops backend to replace the
743 spinlock implementation with something virtualization-friendly
744 (for example, block the virtual CPU rather than spinning).
745
746 It has a minimal impact on native kernels and gives a nice performance
747 benefit on paravirtualized KVM / Xen kernels.
748
749 If you are unsure how to answer this question, answer Y.
750
751 config QUEUED_LOCK_STAT
752 bool "Paravirt queued spinlock statistics"
753 depends on PARAVIRT_SPINLOCKS && DEBUG_FS
754 ---help---
755 Enable the collection of statistical data on the slowpath
756 behavior of paravirtualized queued spinlocks and report
757 them on debugfs.
758
759 source "arch/x86/xen/Kconfig"
760
761 config KVM_GUEST
762 bool "KVM Guest support (including kvmclock)"
763 depends on PARAVIRT
764 select PARAVIRT_CLOCK
765 default y
766 ---help---
767 This option enables various optimizations for running under the KVM
768 hypervisor. It includes a paravirtualized clock, so that instead
769 of relying on a PIT (or probably other) emulation by the
770 underlying device model, the host provides the guest with
771 timing infrastructure such as time of day, and system time
772
773 config KVM_DEBUG_FS
774 bool "Enable debug information for KVM Guests in debugfs"
775 depends on KVM_GUEST && DEBUG_FS
776 default n
777 ---help---
778 This option enables collection of various statistics for KVM guest.
779 Statistics are displayed in debugfs filesystem. Enabling this option
780 may incur significant overhead.
781
782 source "arch/x86/lguest/Kconfig"
783
784 config PARAVIRT_TIME_ACCOUNTING
785 bool "Paravirtual steal time accounting"
786 depends on PARAVIRT
787 default n
788 ---help---
789 Select this option to enable fine granularity task steal time
790 accounting. Time spent executing other tasks in parallel with
791 the current vCPU is discounted from the vCPU power. To account for
792 that, there can be a small performance impact.
793
794 If in doubt, say N here.
795
796 config PARAVIRT_CLOCK
797 bool
798
799 endif #HYPERVISOR_GUEST
800
801 config NO_BOOTMEM
802 def_bool y
803
804 source "arch/x86/Kconfig.cpu"
805
806 config HPET_TIMER
807 def_bool X86_64
808 prompt "HPET Timer Support" if X86_32
809 ---help---
810 Use the IA-PC HPET (High Precision Event Timer) to manage
811 time in preference to the PIT and RTC, if a HPET is
812 present.
813 HPET is the next generation timer replacing legacy 8254s.
814 The HPET provides a stable time base on SMP
815 systems, unlike the TSC, but it is more expensive to access,
816 as it is off-chip. The interface used is documented
817 in the HPET spec, revision 1.
818
819 You can safely choose Y here. However, HPET will only be
820 activated if the platform and the BIOS support this feature.
821 Otherwise the 8254 will be used for timing services.
822
823 Choose N to continue using the legacy 8254 timer.
824
825 config HPET_EMULATE_RTC
826 def_bool y
827 depends on HPET_TIMER && (RTC=y || RTC=m || RTC_DRV_CMOS=m || RTC_DRV_CMOS=y)
828
829 config APB_TIMER
830 def_bool y if X86_INTEL_MID
831 prompt "Intel MID APB Timer Support" if X86_INTEL_MID
832 select DW_APB_TIMER
833 depends on X86_INTEL_MID && SFI
834 help
835 APB timer is the replacement for 8254, HPET on X86 MID platforms.
836 The APBT provides a stable time base on SMP
837 systems, unlike the TSC, but it is more expensive to access,
838 as it is off-chip. APB timers are always running regardless of CPU
839 C states, they are used as per CPU clockevent device when possible.
840
841 # Mark as expert because too many people got it wrong.
842 # The code disables itself when not needed.
843 config DMI
844 default y
845 select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
846 bool "Enable DMI scanning" if EXPERT
847 ---help---
848 Enabled scanning of DMI to identify machine quirks. Say Y
849 here unless you have verified that your setup is not
850 affected by entries in the DMI blacklist. Required by PNP
851 BIOS code.
852
853 config GART_IOMMU
854 bool "Old AMD GART IOMMU support"
855 select SWIOTLB
856 depends on X86_64 && PCI && AMD_NB
857 ---help---
858 Provides a driver for older AMD Athlon64/Opteron/Turion/Sempron
859 GART based hardware IOMMUs.
860
861 The GART supports full DMA access for devices with 32-bit access
862 limitations, on systems with more than 3 GB. This is usually needed
863 for USB, sound, many IDE/SATA chipsets and some other devices.
864
865 Newer systems typically have a modern AMD IOMMU, supported via
866 the CONFIG_AMD_IOMMU=y config option.
867
868 In normal configurations this driver is only active when needed:
869 there's more than 3 GB of memory and the system contains a
870 32-bit limited device.
871
872 If unsure, say Y.
873
874 config CALGARY_IOMMU
875 bool "IBM Calgary IOMMU support"
876 select SWIOTLB
877 depends on X86_64 && PCI
878 ---help---
879 Support for hardware IOMMUs in IBM's xSeries x366 and x460
880 systems. Needed to run systems with more than 3GB of memory
881 properly with 32-bit PCI devices that do not support DAC
882 (Double Address Cycle). Calgary also supports bus level
883 isolation, where all DMAs pass through the IOMMU. This
884 prevents them from going anywhere except their intended
885 destination. This catches hard-to-find kernel bugs and
886 mis-behaving drivers and devices that do not use the DMA-API
887 properly to set up their DMA buffers. The IOMMU can be
888 turned off at boot time with the iommu=off parameter.
889 Normally the kernel will make the right choice by itself.
890 If unsure, say Y.
891
892 config CALGARY_IOMMU_ENABLED_BY_DEFAULT
893 def_bool y
894 prompt "Should Calgary be enabled by default?"
895 depends on CALGARY_IOMMU
896 ---help---
897 Should Calgary be enabled by default? if you choose 'y', Calgary
898 will be used (if it exists). If you choose 'n', Calgary will not be
899 used even if it exists. If you choose 'n' and would like to use
900 Calgary anyway, pass 'iommu=calgary' on the kernel command line.
901 If unsure, say Y.
902
903 # need this always selected by IOMMU for the VIA workaround
904 config SWIOTLB
905 def_bool y if X86_64
906 ---help---
907 Support for software bounce buffers used on x86-64 systems
908 which don't have a hardware IOMMU. Using this PCI devices
909 which can only access 32-bits of memory can be used on systems
910 with more than 3 GB of memory.
911 If unsure, say Y.
912
913 config IOMMU_HELPER
914 def_bool y
915 depends on CALGARY_IOMMU || GART_IOMMU || SWIOTLB || AMD_IOMMU
916
917 config MAXSMP
918 bool "Enable Maximum number of SMP Processors and NUMA Nodes"
919 depends on X86_64 && SMP && DEBUG_KERNEL
920 select CPUMASK_OFFSTACK
921 ---help---
922 Enable maximum number of CPUS and NUMA Nodes for this architecture.
923 If unsure, say N.
924
925 config NR_CPUS
926 int "Maximum number of CPUs" if SMP && !MAXSMP
927 range 2 8 if SMP && X86_32 && !X86_BIGSMP
928 range 2 512 if SMP && !MAXSMP && !CPUMASK_OFFSTACK
929 range 2 8192 if SMP && !MAXSMP && CPUMASK_OFFSTACK && X86_64
930 default "1" if !SMP
931 default "8192" if MAXSMP
932 default "32" if SMP && X86_BIGSMP
933 default "8" if SMP && X86_32
934 default "64" if SMP
935 ---help---
936 This allows you to specify the maximum number of CPUs which this
937 kernel will support. If CPUMASK_OFFSTACK is enabled, the maximum
938 supported value is 8192, otherwise the maximum value is 512. The
939 minimum value which makes sense is 2.
940
941 This is purely to save memory - each supported CPU adds
942 approximately eight kilobytes to the kernel image.
943
944 config SCHED_SMT
945 bool "SMT (Hyperthreading) scheduler support"
946 depends on SMP
947 ---help---
948 SMT scheduler support improves the CPU scheduler's decision making
949 when dealing with Intel Pentium 4 chips with HyperThreading at a
950 cost of slightly increased overhead in some places. If unsure say
951 N here.
952
953 config SCHED_MC
954 def_bool y
955 prompt "Multi-core scheduler support"
956 depends on SMP
957 ---help---
958 Multi-core scheduler support improves the CPU scheduler's decision
959 making when dealing with multi-core CPU chips at a cost of slightly
960 increased overhead in some places. If unsure say N here.
961
962 config SCHED_MC_PRIO
963 bool "CPU core priorities scheduler support"
964 depends on SCHED_MC && CPU_SUP_INTEL
965 select X86_INTEL_PSTATE
966 select CPU_FREQ
967 default y
968 ---help---
969 Intel Turbo Boost Max Technology 3.0 enabled CPUs have a
970 core ordering determined at manufacturing time, which allows
971 certain cores to reach higher turbo frequencies (when running
972 single threaded workloads) than others.
973
974 Enabling this kernel feature teaches the scheduler about
975 the TBM3 (aka ITMT) priority order of the CPU cores and adjusts the
976 scheduler's CPU selection logic accordingly, so that higher
977 overall system performance can be achieved.
978
979 This feature will have no effect on CPUs without this feature.
980
981 If unsure say Y here.
982
983 source "kernel/Kconfig.preempt"
984
985 config UP_LATE_INIT
986 def_bool y
987 depends on !SMP && X86_LOCAL_APIC
988
989 config X86_UP_APIC
990 bool "Local APIC support on uniprocessors" if !PCI_MSI
991 default PCI_MSI
992 depends on X86_32 && !SMP && !X86_32_NON_STANDARD
993 ---help---
994 A local APIC (Advanced Programmable Interrupt Controller) is an
995 integrated interrupt controller in the CPU. If you have a single-CPU
996 system which has a processor with a local APIC, you can say Y here to
997 enable and use it. If you say Y here even though your machine doesn't
998 have a local APIC, then the kernel will still run with no slowdown at
999 all. The local APIC supports CPU-generated self-interrupts (timer,
1000 performance counters), and the NMI watchdog which detects hard
1001 lockups.
1002
1003 config X86_UP_IOAPIC
1004 bool "IO-APIC support on uniprocessors"
1005 depends on X86_UP_APIC
1006 ---help---
1007 An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an
1008 SMP-capable replacement for PC-style interrupt controllers. Most
1009 SMP systems and many recent uniprocessor systems have one.
1010
1011 If you have a single-CPU system with an IO-APIC, you can say Y here
1012 to use it. If you say Y here even though your machine doesn't have
1013 an IO-APIC, then the kernel will still run with no slowdown at all.
1014
1015 config X86_LOCAL_APIC
1016 def_bool y
1017 depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC || PCI_MSI
1018 select IRQ_DOMAIN_HIERARCHY
1019 select PCI_MSI_IRQ_DOMAIN if PCI_MSI
1020
1021 config X86_IO_APIC
1022 def_bool y
1023 depends on X86_LOCAL_APIC || X86_UP_IOAPIC
1024
1025 config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
1026 bool "Reroute for broken boot IRQs"
1027 depends on X86_IO_APIC
1028 ---help---
1029 This option enables a workaround that fixes a source of
1030 spurious interrupts. This is recommended when threaded
1031 interrupt handling is used on systems where the generation of
1032 superfluous "boot interrupts" cannot be disabled.
1033
1034 Some chipsets generate a legacy INTx "boot IRQ" when the IRQ
1035 entry in the chipset's IO-APIC is masked (as, e.g. the RT
1036 kernel does during interrupt handling). On chipsets where this
1037 boot IRQ generation cannot be disabled, this workaround keeps
1038 the original IRQ line masked so that only the equivalent "boot
1039 IRQ" is delivered to the CPUs. The workaround also tells the
1040 kernel to set up the IRQ handler on the boot IRQ line. In this
1041 way only one interrupt is delivered to the kernel. Otherwise
1042 the spurious second interrupt may cause the kernel to bring
1043 down (vital) interrupt lines.
1044
1045 Only affects "broken" chipsets. Interrupt sharing may be
1046 increased on these systems.
1047
1048 config X86_MCE
1049 bool "Machine Check / overheating reporting"
1050 select GENERIC_ALLOCATOR
1051 default y
1052 ---help---
1053 Machine Check support allows the processor to notify the
1054 kernel if it detects a problem (e.g. overheating, data corruption).
1055 The action the kernel takes depends on the severity of the problem,
1056 ranging from warning messages to halting the machine.
1057
1058 config X86_MCELOG_LEGACY
1059 bool "Support for deprecated /dev/mcelog character device"
1060 depends on X86_MCE
1061 ---help---
1062 Enable support for /dev/mcelog which is needed by the old mcelog
1063 userspace logging daemon. Consider switching to the new generation
1064 rasdaemon solution.
1065
1066 config X86_MCE_INTEL
1067 def_bool y
1068 prompt "Intel MCE features"
1069 depends on X86_MCE && X86_LOCAL_APIC
1070 ---help---
1071 Additional support for intel specific MCE features such as
1072 the thermal monitor.
1073
1074 config X86_MCE_AMD
1075 def_bool y
1076 prompt "AMD MCE features"
1077 depends on X86_MCE && X86_LOCAL_APIC && AMD_NB
1078 ---help---
1079 Additional support for AMD specific MCE features such as
1080 the DRAM Error Threshold.
1081
1082 config X86_ANCIENT_MCE
1083 bool "Support for old Pentium 5 / WinChip machine checks"
1084 depends on X86_32 && X86_MCE
1085 ---help---
1086 Include support for machine check handling on old Pentium 5 or WinChip
1087 systems. These typically need to be enabled explicitly on the command
1088 line.
1089
1090 config X86_MCE_THRESHOLD
1091 depends on X86_MCE_AMD || X86_MCE_INTEL
1092 def_bool y
1093
1094 config X86_MCE_INJECT
1095 depends on X86_MCE && X86_LOCAL_APIC && DEBUG_FS
1096 tristate "Machine check injector support"
1097 ---help---
1098 Provide support for injecting machine checks for testing purposes.
1099 If you don't know what a machine check is and you don't do kernel
1100 QA it is safe to say n.
1101
1102 config X86_THERMAL_VECTOR
1103 def_bool y
1104 depends on X86_MCE_INTEL
1105
1106 source "arch/x86/events/Kconfig"
1107
1108 config X86_LEGACY_VM86
1109 bool "Legacy VM86 support"
1110 default n
1111 depends on X86_32
1112 ---help---
1113 This option allows user programs to put the CPU into V8086
1114 mode, which is an 80286-era approximation of 16-bit real mode.
1115
1116 Some very old versions of X and/or vbetool require this option
1117 for user mode setting. Similarly, DOSEMU will use it if
1118 available to accelerate real mode DOS programs. However, any
1119 recent version of DOSEMU, X, or vbetool should be fully
1120 functional even without kernel VM86 support, as they will all
1121 fall back to software emulation. Nevertheless, if you are using
1122 a 16-bit DOS program where 16-bit performance matters, vm86
1123 mode might be faster than emulation and you might want to
1124 enable this option.
1125
1126 Note that any app that works on a 64-bit kernel is unlikely to
1127 need this option, as 64-bit kernels don't, and can't, support
1128 V8086 mode. This option is also unrelated to 16-bit protected
1129 mode and is not needed to run most 16-bit programs under Wine.
1130
1131 Enabling this option increases the complexity of the kernel
1132 and slows down exception handling a tiny bit.
1133
1134 If unsure, say N here.
1135
1136 config VM86
1137 bool
1138 default X86_LEGACY_VM86
1139
1140 config X86_16BIT
1141 bool "Enable support for 16-bit segments" if EXPERT
1142 default y
1143 depends on MODIFY_LDT_SYSCALL
1144 ---help---
1145 This option is required by programs like Wine to run 16-bit
1146 protected mode legacy code on x86 processors. Disabling
1147 this option saves about 300 bytes on i386, or around 6K text
1148 plus 16K runtime memory on x86-64,
1149
1150 config X86_ESPFIX32
1151 def_bool y
1152 depends on X86_16BIT && X86_32
1153
1154 config X86_ESPFIX64
1155 def_bool y
1156 depends on X86_16BIT && X86_64
1157
1158 config X86_VSYSCALL_EMULATION
1159 bool "Enable vsyscall emulation" if EXPERT
1160 default y
1161 depends on X86_64
1162 ---help---
1163 This enables emulation of the legacy vsyscall page. Disabling
1164 it is roughly equivalent to booting with vsyscall=none, except
1165 that it will also disable the helpful warning if a program
1166 tries to use a vsyscall. With this option set to N, offending
1167 programs will just segfault, citing addresses of the form
1168 0xffffffffff600?00.
1169
1170 This option is required by many programs built before 2013, and
1171 care should be used even with newer programs if set to N.
1172
1173 Disabling this option saves about 7K of kernel size and
1174 possibly 4K of additional runtime pagetable memory.
1175
1176 config TOSHIBA
1177 tristate "Toshiba Laptop support"
1178 depends on X86_32
1179 ---help---
1180 This adds a driver to safely access the System Management Mode of
1181 the CPU on Toshiba portables with a genuine Toshiba BIOS. It does
1182 not work on models with a Phoenix BIOS. The System Management Mode
1183 is used to set the BIOS and power saving options on Toshiba portables.
1184
1185 For information on utilities to make use of this driver see the
1186 Toshiba Linux utilities web site at:
1187 <http://www.buzzard.org.uk/toshiba/>.
1188
1189 Say Y if you intend to run this kernel on a Toshiba portable.
1190 Say N otherwise.
1191
1192 config I8K
1193 tristate "Dell i8k legacy laptop support"
1194 select HWMON
1195 select SENSORS_DELL_SMM
1196 ---help---
1197 This option enables legacy /proc/i8k userspace interface in hwmon
1198 dell-smm-hwmon driver. Character file /proc/i8k reports bios version,
1199 temperature and allows controlling fan speeds of Dell laptops via
1200 System Management Mode. For old Dell laptops (like Dell Inspiron 8000)
1201 it reports also power and hotkey status. For fan speed control is
1202 needed userspace package i8kutils.
1203
1204 Say Y if you intend to run this kernel on old Dell laptops or want to
1205 use userspace package i8kutils.
1206 Say N otherwise.
1207
1208 config X86_REBOOTFIXUPS
1209 bool "Enable X86 board specific fixups for reboot"
1210 depends on X86_32
1211 ---help---
1212 This enables chipset and/or board specific fixups to be done
1213 in order to get reboot to work correctly. This is only needed on
1214 some combinations of hardware and BIOS. The symptom, for which
1215 this config is intended, is when reboot ends with a stalled/hung
1216 system.
1217
1218 Currently, the only fixup is for the Geode machines using
1219 CS5530A and CS5536 chipsets and the RDC R-321x SoC.
1220
1221 Say Y if you want to enable the fixup. Currently, it's safe to
1222 enable this option even if you don't need it.
1223 Say N otherwise.
1224
1225 config MICROCODE
1226 bool "CPU microcode loading support"
1227 default y
1228 depends on CPU_SUP_AMD || CPU_SUP_INTEL
1229 select FW_LOADER
1230 ---help---
1231 If you say Y here, you will be able to update the microcode on
1232 Intel and AMD processors. The Intel support is for the IA32 family,
1233 e.g. Pentium Pro, Pentium II, Pentium III, Pentium 4, Xeon etc. The
1234 AMD support is for families 0x10 and later. You will obviously need
1235 the actual microcode binary data itself which is not shipped with
1236 the Linux kernel.
1237
1238 The preferred method to load microcode from a detached initrd is described
1239 in Documentation/x86/early-microcode.txt. For that you need to enable
1240 CONFIG_BLK_DEV_INITRD in order for the loader to be able to scan the
1241 initrd for microcode blobs.
1242
1243 In addition, you can build-in the microcode into the kernel. For that you
1244 need to enable FIRMWARE_IN_KERNEL and add the vendor-supplied microcode
1245 to the CONFIG_EXTRA_FIRMWARE config option.
1246
1247 config MICROCODE_INTEL
1248 bool "Intel microcode loading support"
1249 depends on MICROCODE
1250 default MICROCODE
1251 select FW_LOADER
1252 ---help---
1253 This options enables microcode patch loading support for Intel
1254 processors.
1255
1256 For the current Intel microcode data package go to
1257 <https://downloadcenter.intel.com> and search for
1258 'Linux Processor Microcode Data File'.
1259
1260 config MICROCODE_AMD
1261 bool "AMD microcode loading support"
1262 depends on MICROCODE
1263 select FW_LOADER
1264 ---help---
1265 If you select this option, microcode patch loading support for AMD
1266 processors will be enabled.
1267
1268 config MICROCODE_OLD_INTERFACE
1269 def_bool y
1270 depends on MICROCODE
1271
1272 config X86_MSR
1273 tristate "/dev/cpu/*/msr - Model-specific register support"
1274 ---help---
1275 This device gives privileged processes access to the x86
1276 Model-Specific Registers (MSRs). It is a character device with
1277 major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
1278 MSR accesses are directed to a specific CPU on multi-processor
1279 systems.
1280
1281 config X86_CPUID
1282 tristate "/dev/cpu/*/cpuid - CPU information support"
1283 ---help---
1284 This device gives processes access to the x86 CPUID instruction to
1285 be executed on a specific processor. It is a character device
1286 with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
1287 /dev/cpu/31/cpuid.
1288
1289 choice
1290 prompt "High Memory Support"
1291 default HIGHMEM4G
1292 depends on X86_32
1293
1294 config NOHIGHMEM
1295 bool "off"
1296 ---help---
1297 Linux can use up to 64 Gigabytes of physical memory on x86 systems.
1298 However, the address space of 32-bit x86 processors is only 4
1299 Gigabytes large. That means that, if you have a large amount of
1300 physical memory, not all of it can be "permanently mapped" by the
1301 kernel. The physical memory that's not permanently mapped is called
1302 "high memory".
1303
1304 If you are compiling a kernel which will never run on a machine with
1305 more than 1 Gigabyte total physical RAM, answer "off" here (default
1306 choice and suitable for most users). This will result in a "3GB/1GB"
1307 split: 3GB are mapped so that each process sees a 3GB virtual memory
1308 space and the remaining part of the 4GB virtual memory space is used
1309 by the kernel to permanently map as much physical memory as
1310 possible.
1311
1312 If the machine has between 1 and 4 Gigabytes physical RAM, then
1313 answer "4GB" here.
1314
1315 If more than 4 Gigabytes is used then answer "64GB" here. This
1316 selection turns Intel PAE (Physical Address Extension) mode on.
1317 PAE implements 3-level paging on IA32 processors. PAE is fully
1318 supported by Linux, PAE mode is implemented on all recent Intel
1319 processors (Pentium Pro and better). NOTE: If you say "64GB" here,
1320 then the kernel will not boot on CPUs that don't support PAE!
1321
1322 The actual amount of total physical memory will either be
1323 auto detected or can be forced by using a kernel command line option
1324 such as "mem=256M". (Try "man bootparam" or see the documentation of
1325 your boot loader (lilo or loadlin) about how to pass options to the
1326 kernel at boot time.)
1327
1328 If unsure, say "off".
1329
1330 config HIGHMEM4G
1331 bool "4GB"
1332 ---help---
1333 Select this if you have a 32-bit processor and between 1 and 4
1334 gigabytes of physical RAM.
1335
1336 config HIGHMEM64G
1337 bool "64GB"
1338 depends on !M486
1339 select X86_PAE
1340 ---help---
1341 Select this if you have a 32-bit processor and more than 4
1342 gigabytes of physical RAM.
1343
1344 endchoice
1345
1346 choice
1347 prompt "Memory split" if EXPERT
1348 default VMSPLIT_3G
1349 depends on X86_32
1350 ---help---
1351 Select the desired split between kernel and user memory.
1352
1353 If the address range available to the kernel is less than the
1354 physical memory installed, the remaining memory will be available
1355 as "high memory". Accessing high memory is a little more costly
1356 than low memory, as it needs to be mapped into the kernel first.
1357 Note that increasing the kernel address space limits the range
1358 available to user programs, making the address space there
1359 tighter. Selecting anything other than the default 3G/1G split
1360 will also likely make your kernel incompatible with binary-only
1361 kernel modules.
1362
1363 If you are not absolutely sure what you are doing, leave this
1364 option alone!
1365
1366 config VMSPLIT_3G
1367 bool "3G/1G user/kernel split"
1368 config VMSPLIT_3G_OPT
1369 depends on !X86_PAE
1370 bool "3G/1G user/kernel split (for full 1G low memory)"
1371 config VMSPLIT_2G
1372 bool "2G/2G user/kernel split"
1373 config VMSPLIT_2G_OPT
1374 depends on !X86_PAE
1375 bool "2G/2G user/kernel split (for full 2G low memory)"
1376 config VMSPLIT_1G
1377 bool "1G/3G user/kernel split"
1378 endchoice
1379
1380 config PAGE_OFFSET
1381 hex
1382 default 0xB0000000 if VMSPLIT_3G_OPT
1383 default 0x80000000 if VMSPLIT_2G
1384 default 0x78000000 if VMSPLIT_2G_OPT
1385 default 0x40000000 if VMSPLIT_1G
1386 default 0xC0000000
1387 depends on X86_32
1388
1389 config HIGHMEM
1390 def_bool y
1391 depends on X86_32 && (HIGHMEM64G || HIGHMEM4G)
1392
1393 config X86_PAE
1394 bool "PAE (Physical Address Extension) Support"
1395 depends on X86_32 && !HIGHMEM4G
1396 select SWIOTLB
1397 ---help---
1398 PAE is required for NX support, and furthermore enables
1399 larger swapspace support for non-overcommit purposes. It
1400 has the cost of more pagetable lookup overhead, and also
1401 consumes more pagetable space per process.
1402
1403 config ARCH_PHYS_ADDR_T_64BIT
1404 def_bool y
1405 depends on X86_64 || X86_PAE
1406
1407 config ARCH_DMA_ADDR_T_64BIT
1408 def_bool y
1409 depends on X86_64 || HIGHMEM64G
1410
1411 config X86_DIRECT_GBPAGES
1412 def_bool y
1413 depends on X86_64 && !DEBUG_PAGEALLOC && !KMEMCHECK
1414 ---help---
1415 Certain kernel features effectively disable kernel
1416 linear 1 GB mappings (even if the CPU otherwise
1417 supports them), so don't confuse the user by printing
1418 that we have them enabled.
1419
1420 # Common NUMA Features
1421 config NUMA
1422 bool "Numa Memory Allocation and Scheduler Support"
1423 depends on SMP
1424 depends on X86_64 || (X86_32 && HIGHMEM64G && X86_BIGSMP)
1425 default y if X86_BIGSMP
1426 ---help---
1427 Enable NUMA (Non Uniform Memory Access) support.
1428
1429 The kernel will try to allocate memory used by a CPU on the
1430 local memory controller of the CPU and add some more
1431 NUMA awareness to the kernel.
1432
1433 For 64-bit this is recommended if the system is Intel Core i7
1434 (or later), AMD Opteron, or EM64T NUMA.
1435
1436 For 32-bit this is only needed if you boot a 32-bit
1437 kernel on a 64-bit NUMA platform.
1438
1439 Otherwise, you should say N.
1440
1441 config AMD_NUMA
1442 def_bool y
1443 prompt "Old style AMD Opteron NUMA detection"
1444 depends on X86_64 && NUMA && PCI
1445 ---help---
1446 Enable AMD NUMA node topology detection. You should say Y here if
1447 you have a multi processor AMD system. This uses an old method to
1448 read the NUMA configuration directly from the builtin Northbridge
1449 of Opteron. It is recommended to use X86_64_ACPI_NUMA instead,
1450 which also takes priority if both are compiled in.
1451
1452 config X86_64_ACPI_NUMA
1453 def_bool y
1454 prompt "ACPI NUMA detection"
1455 depends on X86_64 && NUMA && ACPI && PCI
1456 select ACPI_NUMA
1457 ---help---
1458 Enable ACPI SRAT based node topology detection.
1459
1460 # Some NUMA nodes have memory ranges that span
1461 # other nodes. Even though a pfn is valid and
1462 # between a node's start and end pfns, it may not
1463 # reside on that node. See memmap_init_zone()
1464 # for details.
1465 config NODES_SPAN_OTHER_NODES
1466 def_bool y
1467 depends on X86_64_ACPI_NUMA
1468
1469 config NUMA_EMU
1470 bool "NUMA emulation"
1471 depends on NUMA
1472 ---help---
1473 Enable NUMA emulation. A flat machine will be split
1474 into virtual nodes when booted with "numa=fake=N", where N is the
1475 number of nodes. This is only useful for debugging.
1476
1477 config NODES_SHIFT
1478 int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP
1479 range 1 10
1480 default "10" if MAXSMP
1481 default "6" if X86_64
1482 default "3"
1483 depends on NEED_MULTIPLE_NODES
1484 ---help---
1485 Specify the maximum number of NUMA Nodes available on the target
1486 system. Increases memory reserved to accommodate various tables.
1487
1488 config ARCH_HAVE_MEMORY_PRESENT
1489 def_bool y
1490 depends on X86_32 && DISCONTIGMEM
1491
1492 config NEED_NODE_MEMMAP_SIZE
1493 def_bool y
1494 depends on X86_32 && (DISCONTIGMEM || SPARSEMEM)
1495
1496 config ARCH_FLATMEM_ENABLE
1497 def_bool y
1498 depends on X86_32 && !NUMA
1499
1500 config ARCH_DISCONTIGMEM_ENABLE
1501 def_bool y
1502 depends on NUMA && X86_32
1503
1504 config ARCH_DISCONTIGMEM_DEFAULT
1505 def_bool y
1506 depends on NUMA && X86_32
1507
1508 config ARCH_SPARSEMEM_ENABLE
1509 def_bool y
1510 depends on X86_64 || NUMA || X86_32 || X86_32_NON_STANDARD
1511 select SPARSEMEM_STATIC if X86_32
1512 select SPARSEMEM_VMEMMAP_ENABLE if X86_64
1513
1514 config ARCH_SPARSEMEM_DEFAULT
1515 def_bool y
1516 depends on X86_64
1517
1518 config ARCH_SELECT_MEMORY_MODEL
1519 def_bool y
1520 depends on ARCH_SPARSEMEM_ENABLE
1521
1522 config ARCH_MEMORY_PROBE
1523 bool "Enable sysfs memory/probe interface"
1524 depends on X86_64 && MEMORY_HOTPLUG
1525 help
1526 This option enables a sysfs memory/probe interface for testing.
1527 See Documentation/memory-hotplug.txt for more information.
1528 If you are unsure how to answer this question, answer N.
1529
1530 config ARCH_PROC_KCORE_TEXT
1531 def_bool y
1532 depends on X86_64 && PROC_KCORE
1533
1534 config ILLEGAL_POINTER_VALUE
1535 hex
1536 default 0 if X86_32
1537 default 0xdead000000000000 if X86_64
1538
1539 source "mm/Kconfig"
1540
1541 config X86_PMEM_LEGACY_DEVICE
1542 bool
1543
1544 config X86_PMEM_LEGACY
1545 tristate "Support non-standard NVDIMMs and ADR protected memory"
1546 depends on PHYS_ADDR_T_64BIT
1547 depends on BLK_DEV
1548 select X86_PMEM_LEGACY_DEVICE
1549 select LIBNVDIMM
1550 help
1551 Treat memory marked using the non-standard e820 type of 12 as used
1552 by the Intel Sandy Bridge-EP reference BIOS as protected memory.
1553 The kernel will offer these regions to the 'pmem' driver so
1554 they can be used for persistent storage.
1555
1556 Say Y if unsure.
1557
1558 config HIGHPTE
1559 bool "Allocate 3rd-level pagetables from highmem"
1560 depends on HIGHMEM
1561 ---help---
1562 The VM uses one page table entry for each page of physical memory.
1563 For systems with a lot of RAM, this can be wasteful of precious
1564 low memory. Setting this option will put user-space page table
1565 entries in high memory.
1566
1567 config X86_CHECK_BIOS_CORRUPTION
1568 bool "Check for low memory corruption"
1569 ---help---
1570 Periodically check for memory corruption in low memory, which
1571 is suspected to be caused by BIOS. Even when enabled in the
1572 configuration, it is disabled at runtime. Enable it by
1573 setting "memory_corruption_check=1" on the kernel command
1574 line. By default it scans the low 64k of memory every 60
1575 seconds; see the memory_corruption_check_size and
1576 memory_corruption_check_period parameters in
1577 Documentation/admin-guide/kernel-parameters.rst to adjust this.
1578
1579 When enabled with the default parameters, this option has
1580 almost no overhead, as it reserves a relatively small amount
1581 of memory and scans it infrequently. It both detects corruption
1582 and prevents it from affecting the running system.
1583
1584 It is, however, intended as a diagnostic tool; if repeatable
1585 BIOS-originated corruption always affects the same memory,
1586 you can use memmap= to prevent the kernel from using that
1587 memory.
1588
1589 config X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
1590 bool "Set the default setting of memory_corruption_check"
1591 depends on X86_CHECK_BIOS_CORRUPTION
1592 default y
1593 ---help---
1594 Set whether the default state of memory_corruption_check is
1595 on or off.
1596
1597 config X86_RESERVE_LOW
1598 int "Amount of low memory, in kilobytes, to reserve for the BIOS"
1599 default 64
1600 range 4 640
1601 ---help---
1602 Specify the amount of low memory to reserve for the BIOS.
1603
1604 The first page contains BIOS data structures that the kernel
1605 must not use, so that page must always be reserved.
1606
1607 By default we reserve the first 64K of physical RAM, as a
1608 number of BIOSes are known to corrupt that memory range
1609 during events such as suspend/resume or monitor cable
1610 insertion, so it must not be used by the kernel.
1611
1612 You can set this to 4 if you are absolutely sure that you
1613 trust the BIOS to get all its memory reservations and usages
1614 right. If you know your BIOS have problems beyond the
1615 default 64K area, you can set this to 640 to avoid using the
1616 entire low memory range.
1617
1618 If you have doubts about the BIOS (e.g. suspend/resume does
1619 not work or there's kernel crashes after certain hardware
1620 hotplug events) then you might want to enable
1621 X86_CHECK_BIOS_CORRUPTION=y to allow the kernel to check
1622 typical corruption patterns.
1623
1624 Leave this to the default value of 64 if you are unsure.
1625
1626 config MATH_EMULATION
1627 bool
1628 depends on MODIFY_LDT_SYSCALL
1629 prompt "Math emulation" if X86_32
1630 ---help---
1631 Linux can emulate a math coprocessor (used for floating point
1632 operations) if you don't have one. 486DX and Pentium processors have
1633 a math coprocessor built in, 486SX and 386 do not, unless you added
1634 a 487DX or 387, respectively. (The messages during boot time can
1635 give you some hints here ["man dmesg"].) Everyone needs either a
1636 coprocessor or this emulation.
1637
1638 If you don't have a math coprocessor, you need to say Y here; if you
1639 say Y here even though you have a coprocessor, the coprocessor will
1640 be used nevertheless. (This behavior can be changed with the kernel
1641 command line option "no387", which comes handy if your coprocessor
1642 is broken. Try "man bootparam" or see the documentation of your boot
1643 loader (lilo or loadlin) about how to pass options to the kernel at
1644 boot time.) This means that it is a good idea to say Y here if you
1645 intend to use this kernel on different machines.
1646
1647 More information about the internals of the Linux math coprocessor
1648 emulation can be found in <file:arch/x86/math-emu/README>.
1649
1650 If you are not sure, say Y; apart from resulting in a 66 KB bigger
1651 kernel, it won't hurt.
1652
1653 config MTRR
1654 def_bool y
1655 prompt "MTRR (Memory Type Range Register) support" if EXPERT
1656 ---help---
1657 On Intel P6 family processors (Pentium Pro, Pentium II and later)
1658 the Memory Type Range Registers (MTRRs) may be used to control
1659 processor access to memory ranges. This is most useful if you have
1660 a video (VGA) card on a PCI or AGP bus. Enabling write-combining
1661 allows bus write transfers to be combined into a larger transfer
1662 before bursting over the PCI/AGP bus. This can increase performance
1663 of image write operations 2.5 times or more. Saying Y here creates a
1664 /proc/mtrr file which may be used to manipulate your processor's
1665 MTRRs. Typically the X server should use this.
1666
1667 This code has a reasonably generic interface so that similar
1668 control registers on other processors can be easily supported
1669 as well:
1670
1671 The Cyrix 6x86, 6x86MX and M II processors have Address Range
1672 Registers (ARRs) which provide a similar functionality to MTRRs. For
1673 these, the ARRs are used to emulate the MTRRs.
1674 The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
1675 MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing
1676 write-combining. All of these processors are supported by this code
1677 and it makes sense to say Y here if you have one of them.
1678
1679 Saying Y here also fixes a problem with buggy SMP BIOSes which only
1680 set the MTRRs for the boot CPU and not for the secondary CPUs. This
1681 can lead to all sorts of problems, so it's good to say Y here.
1682
1683 You can safely say Y even if your machine doesn't have MTRRs, you'll
1684 just add about 9 KB to your kernel.
1685
1686 See <file:Documentation/x86/mtrr.txt> for more information.
1687
1688 config MTRR_SANITIZER
1689 def_bool y
1690 prompt "MTRR cleanup support"
1691 depends on MTRR
1692 ---help---
1693 Convert MTRR layout from continuous to discrete, so X drivers can
1694 add writeback entries.
1695
1696 Can be disabled with disable_mtrr_cleanup on the kernel command line.
1697 The largest mtrr entry size for a continuous block can be set with
1698 mtrr_chunk_size.
1699
1700 If unsure, say Y.
1701
1702 config MTRR_SANITIZER_ENABLE_DEFAULT
1703 int "MTRR cleanup enable value (0-1)"
1704 range 0 1
1705 default "0"
1706 depends on MTRR_SANITIZER
1707 ---help---
1708 Enable mtrr cleanup default value
1709
1710 config MTRR_SANITIZER_SPARE_REG_NR_DEFAULT
1711 int "MTRR cleanup spare reg num (0-7)"
1712 range 0 7
1713 default "1"
1714 depends on MTRR_SANITIZER
1715 ---help---
1716 mtrr cleanup spare entries default, it can be changed via
1717 mtrr_spare_reg_nr=N on the kernel command line.
1718
1719 config X86_PAT
1720 def_bool y
1721 prompt "x86 PAT support" if EXPERT
1722 depends on MTRR
1723 ---help---
1724 Use PAT attributes to setup page level cache control.
1725
1726 PATs are the modern equivalents of MTRRs and are much more
1727 flexible than MTRRs.
1728
1729 Say N here if you see bootup problems (boot crash, boot hang,
1730 spontaneous reboots) or a non-working video driver.
1731
1732 If unsure, say Y.
1733
1734 config ARCH_USES_PG_UNCACHED
1735 def_bool y
1736 depends on X86_PAT
1737
1738 config ARCH_RANDOM
1739 def_bool y
1740 prompt "x86 architectural random number generator" if EXPERT
1741 ---help---
1742 Enable the x86 architectural RDRAND instruction
1743 (Intel Bull Mountain technology) to generate random numbers.
1744 If supported, this is a high bandwidth, cryptographically
1745 secure hardware random number generator.
1746
1747 config X86_SMAP
1748 def_bool y
1749 prompt "Supervisor Mode Access Prevention" if EXPERT
1750 ---help---
1751 Supervisor Mode Access Prevention (SMAP) is a security
1752 feature in newer Intel processors. There is a small
1753 performance cost if this enabled and turned on; there is
1754 also a small increase in the kernel size if this is enabled.
1755
1756 If unsure, say Y.
1757
1758 config X86_INTEL_MPX
1759 prompt "Intel MPX (Memory Protection Extensions)"
1760 def_bool n
1761 depends on CPU_SUP_INTEL
1762 ---help---
1763 MPX provides hardware features that can be used in
1764 conjunction with compiler-instrumented code to check
1765 memory references. It is designed to detect buffer
1766 overflow or underflow bugs.
1767
1768 This option enables running applications which are
1769 instrumented or otherwise use MPX. It does not use MPX
1770 itself inside the kernel or to protect the kernel
1771 against bad memory references.
1772
1773 Enabling this option will make the kernel larger:
1774 ~8k of kernel text and 36 bytes of data on a 64-bit
1775 defconfig. It adds a long to the 'mm_struct' which
1776 will increase the kernel memory overhead of each
1777 process and adds some branches to paths used during
1778 exec() and munmap().
1779
1780 For details, see Documentation/x86/intel_mpx.txt
1781
1782 If unsure, say N.
1783
1784 config X86_INTEL_MEMORY_PROTECTION_KEYS
1785 prompt "Intel Memory Protection Keys"
1786 def_bool y
1787 # Note: only available in 64-bit mode
1788 depends on CPU_SUP_INTEL && X86_64
1789 select ARCH_USES_HIGH_VMA_FLAGS
1790 select ARCH_HAS_PKEYS
1791 ---help---
1792 Memory Protection Keys provides a mechanism for enforcing
1793 page-based protections, but without requiring modification of the
1794 page tables when an application changes protection domains.
1795
1796 For details, see Documentation/x86/protection-keys.txt
1797
1798 If unsure, say y.
1799
1800 config EFI
1801 bool "EFI runtime service support"
1802 depends on ACPI
1803 select UCS2_STRING
1804 select EFI_RUNTIME_WRAPPERS
1805 ---help---
1806 This enables the kernel to use EFI runtime services that are
1807 available (such as the EFI variable services).
1808
1809 This option is only useful on systems that have EFI firmware.
1810 In addition, you should use the latest ELILO loader available
1811 at <http://elilo.sourceforge.net> in order to take advantage
1812 of EFI runtime services. However, even with this option, the
1813 resultant kernel should continue to boot on existing non-EFI
1814 platforms.
1815
1816 config EFI_STUB
1817 bool "EFI stub support"
1818 depends on EFI && !X86_USE_3DNOW
1819 select RELOCATABLE
1820 ---help---
1821 This kernel feature allows a bzImage to be loaded directly
1822 by EFI firmware without the use of a bootloader.
1823
1824 See Documentation/efi-stub.txt for more information.
1825
1826 config EFI_MIXED
1827 bool "EFI mixed-mode support"
1828 depends on EFI_STUB && X86_64
1829 ---help---
1830 Enabling this feature allows a 64-bit kernel to be booted
1831 on a 32-bit firmware, provided that your CPU supports 64-bit
1832 mode.
1833
1834 Note that it is not possible to boot a mixed-mode enabled
1835 kernel via the EFI boot stub - a bootloader that supports
1836 the EFI handover protocol must be used.
1837
1838 If unsure, say N.
1839
1840 config SECCOMP
1841 def_bool y
1842 prompt "Enable seccomp to safely compute untrusted bytecode"
1843 ---help---
1844 This kernel feature is useful for number crunching applications
1845 that may need to compute untrusted bytecode during their
1846 execution. By using pipes or other transports made available to
1847 the process as file descriptors supporting the read/write
1848 syscalls, it's possible to isolate those applications in
1849 their own address space using seccomp. Once seccomp is
1850 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
1851 and the task is only allowed to execute a few safe syscalls
1852 defined by each seccomp mode.
1853
1854 If unsure, say Y. Only embedded should say N here.
1855
1856 source kernel/Kconfig.hz
1857
1858 config KEXEC
1859 bool "kexec system call"
1860 select KEXEC_CORE
1861 ---help---
1862 kexec is a system call that implements the ability to shutdown your
1863 current kernel, and to start another kernel. It is like a reboot
1864 but it is independent of the system firmware. And like a reboot
1865 you can start any kernel with it, not just Linux.
1866
1867 The name comes from the similarity to the exec system call.
1868
1869 It is an ongoing process to be certain the hardware in a machine
1870 is properly shutdown, so do not be surprised if this code does not
1871 initially work for you. As of this writing the exact hardware
1872 interface is strongly in flux, so no good recommendation can be
1873 made.
1874
1875 config KEXEC_FILE
1876 bool "kexec file based system call"
1877 select KEXEC_CORE
1878 select BUILD_BIN2C
1879 depends on X86_64
1880 depends on CRYPTO=y
1881 depends on CRYPTO_SHA256=y
1882 ---help---
1883 This is new version of kexec system call. This system call is
1884 file based and takes file descriptors as system call argument
1885 for kernel and initramfs as opposed to list of segments as
1886 accepted by previous system call.
1887
1888 config KEXEC_VERIFY_SIG
1889 bool "Verify kernel signature during kexec_file_load() syscall"
1890 depends on KEXEC_FILE
1891 ---help---
1892 This option makes kernel signature verification mandatory for
1893 the kexec_file_load() syscall.
1894
1895 In addition to that option, you need to enable signature
1896 verification for the corresponding kernel image type being
1897 loaded in order for this to work.
1898
1899 config KEXEC_BZIMAGE_VERIFY_SIG
1900 bool "Enable bzImage signature verification support"
1901 depends on KEXEC_VERIFY_SIG
1902 depends on SIGNED_PE_FILE_VERIFICATION
1903 select SYSTEM_TRUSTED_KEYRING
1904 ---help---
1905 Enable bzImage signature verification support.
1906
1907 config CRASH_DUMP
1908 bool "kernel crash dumps"
1909 depends on X86_64 || (X86_32 && HIGHMEM)
1910 ---help---
1911 Generate crash dump after being started by kexec.
1912 This should be normally only set in special crash dump kernels
1913 which are loaded in the main kernel with kexec-tools into
1914 a specially reserved region and then later executed after
1915 a crash by kdump/kexec. The crash dump kernel must be compiled
1916 to a memory address not used by the main kernel or BIOS using
1917 PHYSICAL_START, or it must be built as a relocatable image
1918 (CONFIG_RELOCATABLE=y).
1919 For more details see Documentation/kdump/kdump.txt
1920
1921 config KEXEC_JUMP
1922 bool "kexec jump"
1923 depends on KEXEC && HIBERNATION
1924 ---help---
1925 Jump between original kernel and kexeced kernel and invoke
1926 code in physical address mode via KEXEC
1927
1928 config PHYSICAL_START
1929 hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
1930 default "0x1000000"
1931 ---help---
1932 This gives the physical address where the kernel is loaded.
1933
1934 If kernel is a not relocatable (CONFIG_RELOCATABLE=n) then
1935 bzImage will decompress itself to above physical address and
1936 run from there. Otherwise, bzImage will run from the address where
1937 it has been loaded by the boot loader and will ignore above physical
1938 address.
1939
1940 In normal kdump cases one does not have to set/change this option
1941 as now bzImage can be compiled as a completely relocatable image
1942 (CONFIG_RELOCATABLE=y) and be used to load and run from a different
1943 address. This option is mainly useful for the folks who don't want
1944 to use a bzImage for capturing the crash dump and want to use a
1945 vmlinux instead. vmlinux is not relocatable hence a kernel needs
1946 to be specifically compiled to run from a specific memory area
1947 (normally a reserved region) and this option comes handy.
1948
1949 So if you are using bzImage for capturing the crash dump,
1950 leave the value here unchanged to 0x1000000 and set
1951 CONFIG_RELOCATABLE=y. Otherwise if you plan to use vmlinux
1952 for capturing the crash dump change this value to start of
1953 the reserved region. In other words, it can be set based on
1954 the "X" value as specified in the "crashkernel=YM@XM"
1955 command line boot parameter passed to the panic-ed
1956 kernel. Please take a look at Documentation/kdump/kdump.txt
1957 for more details about crash dumps.
1958
1959 Usage of bzImage for capturing the crash dump is recommended as
1960 one does not have to build two kernels. Same kernel can be used
1961 as production kernel and capture kernel. Above option should have
1962 gone away after relocatable bzImage support is introduced. But it
1963 is present because there are users out there who continue to use
1964 vmlinux for dump capture. This option should go away down the
1965 line.
1966
1967 Don't change this unless you know what you are doing.
1968
1969 config RELOCATABLE
1970 bool "Build a relocatable kernel"
1971 default y
1972 ---help---
1973 This builds a kernel image that retains relocation information
1974 so it can be loaded someplace besides the default 1MB.
1975 The relocations tend to make the kernel binary about 10% larger,
1976 but are discarded at runtime.
1977
1978 One use is for the kexec on panic case where the recovery kernel
1979 must live at a different physical address than the primary
1980 kernel.
1981
1982 Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
1983 it has been loaded at and the compile time physical address
1984 (CONFIG_PHYSICAL_START) is used as the minimum location.
1985
1986 config RANDOMIZE_BASE
1987 bool "Randomize the address of the kernel image (KASLR)"
1988 depends on RELOCATABLE
1989 default y
1990 ---help---
1991 In support of Kernel Address Space Layout Randomization (KASLR),
1992 this randomizes the physical address at which the kernel image
1993 is decompressed and the virtual address where the kernel
1994 image is mapped, as a security feature that deters exploit
1995 attempts relying on knowledge of the location of kernel
1996 code internals.
1997
1998 On 64-bit, the kernel physical and virtual addresses are
1999 randomized separately. The physical address will be anywhere
2000 between 16MB and the top of physical memory (up to 64TB). The
2001 virtual address will be randomized from 16MB up to 1GB (9 bits
2002 of entropy). Note that this also reduces the memory space
2003 available to kernel modules from 1.5GB to 1GB.
2004
2005 On 32-bit, the kernel physical and virtual addresses are
2006 randomized together. They will be randomized from 16MB up to
2007 512MB (8 bits of entropy).
2008
2009 Entropy is generated using the RDRAND instruction if it is
2010 supported. If RDTSC is supported, its value is mixed into
2011 the entropy pool as well. If neither RDRAND nor RDTSC are
2012 supported, then entropy is read from the i8254 timer. The
2013 usable entropy is limited by the kernel being built using
2014 2GB addressing, and that PHYSICAL_ALIGN must be at a
2015 minimum of 2MB. As a result, only 10 bits of entropy are
2016 theoretically possible, but the implementations are further
2017 limited due to memory layouts.
2018
2019 If unsure, say Y.
2020
2021 # Relocation on x86 needs some additional build support
2022 config X86_NEED_RELOCS
2023 def_bool y
2024 depends on RANDOMIZE_BASE || (X86_32 && RELOCATABLE)
2025
2026 config PHYSICAL_ALIGN
2027 hex "Alignment value to which kernel should be aligned"
2028 default "0x200000"
2029 range 0x2000 0x1000000 if X86_32
2030 range 0x200000 0x1000000 if X86_64
2031 ---help---
2032 This value puts the alignment restrictions on physical address
2033 where kernel is loaded and run from. Kernel is compiled for an
2034 address which meets above alignment restriction.
2035
2036 If bootloader loads the kernel at a non-aligned address and
2037 CONFIG_RELOCATABLE is set, kernel will move itself to nearest
2038 address aligned to above value and run from there.
2039
2040 If bootloader loads the kernel at a non-aligned address and
2041 CONFIG_RELOCATABLE is not set, kernel will ignore the run time
2042 load address and decompress itself to the address it has been
2043 compiled for and run from there. The address for which kernel is
2044 compiled already meets above alignment restrictions. Hence the
2045 end result is that kernel runs from a physical address meeting
2046 above alignment restrictions.
2047
2048 On 32-bit this value must be a multiple of 0x2000. On 64-bit
2049 this value must be a multiple of 0x200000.
2050
2051 Don't change this unless you know what you are doing.
2052
2053 config RANDOMIZE_MEMORY
2054 bool "Randomize the kernel memory sections"
2055 depends on X86_64
2056 depends on RANDOMIZE_BASE
2057 default RANDOMIZE_BASE
2058 ---help---
2059 Randomizes the base virtual address of kernel memory sections
2060 (physical memory mapping, vmalloc & vmemmap). This security feature
2061 makes exploits relying on predictable memory locations less reliable.
2062
2063 The order of allocations remains unchanged. Entropy is generated in
2064 the same way as RANDOMIZE_BASE. Current implementation in the optimal
2065 configuration have in average 30,000 different possible virtual
2066 addresses for each memory section.
2067
2068 If unsure, say Y.
2069
2070 config RANDOMIZE_MEMORY_PHYSICAL_PADDING
2071 hex "Physical memory mapping padding" if EXPERT
2072 depends on RANDOMIZE_MEMORY
2073 default "0xa" if MEMORY_HOTPLUG
2074 default "0x0"
2075 range 0x1 0x40 if MEMORY_HOTPLUG
2076 range 0x0 0x40
2077 ---help---
2078 Define the padding in terabytes added to the existing physical
2079 memory size during kernel memory randomization. It is useful
2080 for memory hotplug support but reduces the entropy available for
2081 address randomization.
2082
2083 If unsure, leave at the default value.
2084
2085 config HOTPLUG_CPU
2086 bool "Support for hot-pluggable CPUs"
2087 depends on SMP
2088 ---help---
2089 Say Y here to allow turning CPUs off and on. CPUs can be
2090 controlled through /sys/devices/system/cpu.
2091 ( Note: power management support will enable this option
2092 automatically on SMP systems. )
2093 Say N if you want to disable CPU hotplug.
2094
2095 config BOOTPARAM_HOTPLUG_CPU0
2096 bool "Set default setting of cpu0_hotpluggable"
2097 default n
2098 depends on HOTPLUG_CPU
2099 ---help---
2100 Set whether default state of cpu0_hotpluggable is on or off.
2101
2102 Say Y here to enable CPU0 hotplug by default. If this switch
2103 is turned on, there is no need to give cpu0_hotplug kernel
2104 parameter and the CPU0 hotplug feature is enabled by default.
2105
2106 Please note: there are two known CPU0 dependencies if you want
2107 to enable the CPU0 hotplug feature either by this switch or by
2108 cpu0_hotplug kernel parameter.
2109
2110 First, resume from hibernate or suspend always starts from CPU0.
2111 So hibernate and suspend are prevented if CPU0 is offline.
2112
2113 Second dependency is PIC interrupts always go to CPU0. CPU0 can not
2114 offline if any interrupt can not migrate out of CPU0. There may
2115 be other CPU0 dependencies.
2116
2117 Please make sure the dependencies are under your control before
2118 you enable this feature.
2119
2120 Say N if you don't want to enable CPU0 hotplug feature by default.
2121 You still can enable the CPU0 hotplug feature at boot by kernel
2122 parameter cpu0_hotplug.
2123
2124 config DEBUG_HOTPLUG_CPU0
2125 def_bool n
2126 prompt "Debug CPU0 hotplug"
2127 depends on HOTPLUG_CPU
2128 ---help---
2129 Enabling this option offlines CPU0 (if CPU0 can be offlined) as
2130 soon as possible and boots up userspace with CPU0 offlined. User
2131 can online CPU0 back after boot time.
2132
2133 To debug CPU0 hotplug, you need to enable CPU0 offline/online
2134 feature by either turning on CONFIG_BOOTPARAM_HOTPLUG_CPU0 during
2135 compilation or giving cpu0_hotplug kernel parameter at boot.
2136
2137 If unsure, say N.
2138
2139 config COMPAT_VDSO
2140 def_bool n
2141 prompt "Disable the 32-bit vDSO (needed for glibc 2.3.3)"
2142 depends on COMPAT_32
2143 ---help---
2144 Certain buggy versions of glibc will crash if they are
2145 presented with a 32-bit vDSO that is not mapped at the address
2146 indicated in its segment table.
2147
2148 The bug was introduced by f866314b89d56845f55e6f365e18b31ec978ec3a
2149 and fixed by 3b3ddb4f7db98ec9e912ccdf54d35df4aa30e04a and
2150 49ad572a70b8aeb91e57483a11dd1b77e31c4468. Glibc 2.3.3 is
2151 the only released version with the bug, but OpenSUSE 9
2152 contains a buggy "glibc 2.3.2".
2153
2154 The symptom of the bug is that everything crashes on startup, saying:
2155 dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed!
2156
2157 Saying Y here changes the default value of the vdso32 boot
2158 option from 1 to 0, which turns off the 32-bit vDSO entirely.
2159 This works around the glibc bug but hurts performance.
2160
2161 If unsure, say N: if you are compiling your own kernel, you
2162 are unlikely to be using a buggy version of glibc.
2163
2164 choice
2165 prompt "vsyscall table for legacy applications"
2166 depends on X86_64
2167 default LEGACY_VSYSCALL_EMULATE
2168 help
2169 Legacy user code that does not know how to find the vDSO expects
2170 to be able to issue three syscalls by calling fixed addresses in
2171 kernel space. Since this location is not randomized with ASLR,
2172 it can be used to assist security vulnerability exploitation.
2173
2174 This setting can be changed at boot time via the kernel command
2175 line parameter vsyscall=[native|emulate|none].
2176
2177 On a system with recent enough glibc (2.14 or newer) and no
2178 static binaries, you can say None without a performance penalty
2179 to improve security.
2180
2181 If unsure, select "Emulate".
2182
2183 config LEGACY_VSYSCALL_NATIVE
2184 bool "Native"
2185 help
2186 Actual executable code is located in the fixed vsyscall
2187 address mapping, implementing time() efficiently. Since
2188 this makes the mapping executable, it can be used during
2189 security vulnerability exploitation (traditionally as
2190 ROP gadgets). This configuration is not recommended.
2191
2192 config LEGACY_VSYSCALL_EMULATE
2193 bool "Emulate"
2194 help
2195 The kernel traps and emulates calls into the fixed
2196 vsyscall address mapping. This makes the mapping
2197 non-executable, but it still contains known contents,
2198 which could be used in certain rare security vulnerability
2199 exploits. This configuration is recommended when userspace
2200 still uses the vsyscall area.
2201
2202 config LEGACY_VSYSCALL_NONE
2203 bool "None"
2204 help
2205 There will be no vsyscall mapping at all. This will
2206 eliminate any risk of ASLR bypass due to the vsyscall
2207 fixed address mapping. Attempts to use the vsyscalls
2208 will be reported to dmesg, so that either old or
2209 malicious userspace programs can be identified.
2210
2211 endchoice
2212
2213 config CMDLINE_BOOL
2214 bool "Built-in kernel command line"
2215 ---help---
2216 Allow for specifying boot arguments to the kernel at
2217 build time. On some systems (e.g. embedded ones), it is
2218 necessary or convenient to provide some or all of the
2219 kernel boot arguments with the kernel itself (that is,
2220 to not rely on the boot loader to provide them.)
2221
2222 To compile command line arguments into the kernel,
2223 set this option to 'Y', then fill in the
2224 boot arguments in CONFIG_CMDLINE.
2225
2226 Systems with fully functional boot loaders (i.e. non-embedded)
2227 should leave this option set to 'N'.
2228
2229 config CMDLINE
2230 string "Built-in kernel command string"
2231 depends on CMDLINE_BOOL
2232 default ""
2233 ---help---
2234 Enter arguments here that should be compiled into the kernel
2235 image and used at boot time. If the boot loader provides a
2236 command line at boot time, it is appended to this string to
2237 form the full kernel command line, when the system boots.
2238
2239 However, you can use the CONFIG_CMDLINE_OVERRIDE option to
2240 change this behavior.
2241
2242 In most cases, the command line (whether built-in or provided
2243 by the boot loader) should specify the device for the root
2244 file system.
2245
2246 config CMDLINE_OVERRIDE
2247 bool "Built-in command line overrides boot loader arguments"
2248 depends on CMDLINE_BOOL
2249 ---help---
2250 Set this option to 'Y' to have the kernel ignore the boot loader
2251 command line, and use ONLY the built-in command line.
2252
2253 This is used to work around broken boot loaders. This should
2254 be set to 'N' under normal conditions.
2255
2256 config MODIFY_LDT_SYSCALL
2257 bool "Enable the LDT (local descriptor table)" if EXPERT
2258 default y
2259 ---help---
2260 Linux can allow user programs to install a per-process x86
2261 Local Descriptor Table (LDT) using the modify_ldt(2) system
2262 call. This is required to run 16-bit or segmented code such as
2263 DOSEMU or some Wine programs. It is also used by some very old
2264 threading libraries.
2265
2266 Enabling this feature adds a small amount of overhead to
2267 context switches and increases the low-level kernel attack
2268 surface. Disabling it removes the modify_ldt(2) system call.
2269
2270 Saying 'N' here may make sense for embedded or server kernels.
2271
2272 source "kernel/livepatch/Kconfig"
2273
2274 endmenu
2275
2276 config ARCH_ENABLE_MEMORY_HOTPLUG
2277 def_bool y
2278 depends on X86_64 || (X86_32 && HIGHMEM)
2279
2280 config ARCH_ENABLE_MEMORY_HOTREMOVE
2281 def_bool y
2282 depends on MEMORY_HOTPLUG
2283
2284 config USE_PERCPU_NUMA_NODE_ID
2285 def_bool y
2286 depends on NUMA
2287
2288 config ARCH_ENABLE_SPLIT_PMD_PTLOCK
2289 def_bool y
2290 depends on X86_64 || X86_PAE
2291
2292 config ARCH_ENABLE_HUGEPAGE_MIGRATION
2293 def_bool y
2294 depends on X86_64 && HUGETLB_PAGE && MIGRATION
2295
2296 menu "Power management and ACPI options"
2297
2298 config ARCH_HIBERNATION_HEADER
2299 def_bool y
2300 depends on X86_64 && HIBERNATION
2301
2302 source "kernel/power/Kconfig"
2303
2304 source "drivers/acpi/Kconfig"
2305
2306 source "drivers/sfi/Kconfig"
2307
2308 config X86_APM_BOOT
2309 def_bool y
2310 depends on APM
2311
2312 menuconfig APM
2313 tristate "APM (Advanced Power Management) BIOS support"
2314 depends on X86_32 && PM_SLEEP
2315 ---help---
2316 APM is a BIOS specification for saving power using several different
2317 techniques. This is mostly useful for battery powered laptops with
2318 APM compliant BIOSes. If you say Y here, the system time will be
2319 reset after a RESUME operation, the /proc/apm device will provide
2320 battery status information, and user-space programs will receive
2321 notification of APM "events" (e.g. battery status change).
2322
2323 If you select "Y" here, you can disable actual use of the APM
2324 BIOS by passing the "apm=off" option to the kernel at boot time.
2325
2326 Note that the APM support is almost completely disabled for
2327 machines with more than one CPU.
2328
2329 In order to use APM, you will need supporting software. For location
2330 and more information, read <file:Documentation/power/apm-acpi.txt>
2331 and the Battery Powered Linux mini-HOWTO, available from
2332 <http://www.tldp.org/docs.html#howto>.
2333
2334 This driver does not spin down disk drives (see the hdparm(8)
2335 manpage ("man 8 hdparm") for that), and it doesn't turn off
2336 VESA-compliant "green" monitors.
2337
2338 This driver does not support the TI 4000M TravelMate and the ACER
2339 486/DX4/75 because they don't have compliant BIOSes. Many "green"
2340 desktop machines also don't have compliant BIOSes, and this driver
2341 may cause those machines to panic during the boot phase.
2342
2343 Generally, if you don't have a battery in your machine, there isn't
2344 much point in using this driver and you should say N. If you get
2345 random kernel OOPSes or reboots that don't seem to be related to
2346 anything, try disabling/enabling this option (or disabling/enabling
2347 APM in your BIOS).
2348
2349 Some other things you should try when experiencing seemingly random,
2350 "weird" problems:
2351
2352 1) make sure that you have enough swap space and that it is
2353 enabled.
2354 2) pass the "no-hlt" option to the kernel
2355 3) switch on floating point emulation in the kernel and pass
2356 the "no387" option to the kernel
2357 4) pass the "floppy=nodma" option to the kernel
2358 5) pass the "mem=4M" option to the kernel (thereby disabling
2359 all but the first 4 MB of RAM)
2360 6) make sure that the CPU is not over clocked.
2361 7) read the sig11 FAQ at <http://www.bitwizard.nl/sig11/>
2362 8) disable the cache from your BIOS settings
2363 9) install a fan for the video card or exchange video RAM
2364 10) install a better fan for the CPU
2365 11) exchange RAM chips
2366 12) exchange the motherboard.
2367
2368 To compile this driver as a module, choose M here: the
2369 module will be called apm.
2370
2371 if APM
2372
2373 config APM_IGNORE_USER_SUSPEND
2374 bool "Ignore USER SUSPEND"
2375 ---help---
2376 This option will ignore USER SUSPEND requests. On machines with a
2377 compliant APM BIOS, you want to say N. However, on the NEC Versa M
2378 series notebooks, it is necessary to say Y because of a BIOS bug.
2379
2380 config APM_DO_ENABLE
2381 bool "Enable PM at boot time"
2382 ---help---
2383 Enable APM features at boot time. From page 36 of the APM BIOS
2384 specification: "When disabled, the APM BIOS does not automatically
2385 power manage devices, enter the Standby State, enter the Suspend
2386 State, or take power saving steps in response to CPU Idle calls."
2387 This driver will make CPU Idle calls when Linux is idle (unless this
2388 feature is turned off -- see "Do CPU IDLE calls", below). This
2389 should always save battery power, but more complicated APM features
2390 will be dependent on your BIOS implementation. You may need to turn
2391 this option off if your computer hangs at boot time when using APM
2392 support, or if it beeps continuously instead of suspending. Turn
2393 this off if you have a NEC UltraLite Versa 33/C or a Toshiba
2394 T400CDT. This is off by default since most machines do fine without
2395 this feature.
2396
2397 config APM_CPU_IDLE
2398 depends on CPU_IDLE
2399 bool "Make CPU Idle calls when idle"
2400 ---help---
2401 Enable calls to APM CPU Idle/CPU Busy inside the kernel's idle loop.
2402 On some machines, this can activate improved power savings, such as
2403 a slowed CPU clock rate, when the machine is idle. These idle calls
2404 are made after the idle loop has run for some length of time (e.g.,
2405 333 mS). On some machines, this will cause a hang at boot time or
2406 whenever the CPU becomes idle. (On machines with more than one CPU,
2407 this option does nothing.)
2408
2409 config APM_DISPLAY_BLANK
2410 bool "Enable console blanking using APM"
2411 ---help---
2412 Enable console blanking using the APM. Some laptops can use this to
2413 turn off the LCD backlight when the screen blanker of the Linux
2414 virtual console blanks the screen. Note that this is only used by
2415 the virtual console screen blanker, and won't turn off the backlight
2416 when using the X Window system. This also doesn't have anything to
2417 do with your VESA-compliant power-saving monitor. Further, this
2418 option doesn't work for all laptops -- it might not turn off your
2419 backlight at all, or it might print a lot of errors to the console,
2420 especially if you are using gpm.
2421
2422 config APM_ALLOW_INTS
2423 bool "Allow interrupts during APM BIOS calls"
2424 ---help---
2425 Normally we disable external interrupts while we are making calls to
2426 the APM BIOS as a measure to lessen the effects of a badly behaving
2427 BIOS implementation. The BIOS should reenable interrupts if it
2428 needs to. Unfortunately, some BIOSes do not -- especially those in
2429 many of the newer IBM Thinkpads. If you experience hangs when you
2430 suspend, try setting this to Y. Otherwise, say N.
2431
2432 endif # APM
2433
2434 source "drivers/cpufreq/Kconfig"
2435
2436 source "drivers/cpuidle/Kconfig"
2437
2438 source "drivers/idle/Kconfig"
2439
2440 endmenu
2441
2442
2443 menu "Bus options (PCI etc.)"
2444
2445 config PCI
2446 bool "PCI support"
2447 default y
2448 ---help---
2449 Find out whether you have a PCI motherboard. PCI is the name of a
2450 bus system, i.e. the way the CPU talks to the other stuff inside
2451 your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
2452 VESA. If you have PCI, say Y, otherwise N.
2453
2454 choice
2455 prompt "PCI access mode"
2456 depends on X86_32 && PCI
2457 default PCI_GOANY
2458 ---help---
2459 On PCI systems, the BIOS can be used to detect the PCI devices and
2460 determine their configuration. However, some old PCI motherboards
2461 have BIOS bugs and may crash if this is done. Also, some embedded
2462 PCI-based systems don't have any BIOS at all. Linux can also try to
2463 detect the PCI hardware directly without using the BIOS.
2464
2465 With this option, you can specify how Linux should detect the
2466 PCI devices. If you choose "BIOS", the BIOS will be used,
2467 if you choose "Direct", the BIOS won't be used, and if you
2468 choose "MMConfig", then PCI Express MMCONFIG will be used.
2469 If you choose "Any", the kernel will try MMCONFIG, then the
2470 direct access method and falls back to the BIOS if that doesn't
2471 work. If unsure, go with the default, which is "Any".
2472
2473 config PCI_GOBIOS
2474 bool "BIOS"
2475
2476 config PCI_GOMMCONFIG
2477 bool "MMConfig"
2478
2479 config PCI_GODIRECT
2480 bool "Direct"
2481
2482 config PCI_GOOLPC
2483 bool "OLPC XO-1"
2484 depends on OLPC
2485
2486 config PCI_GOANY
2487 bool "Any"
2488
2489 endchoice
2490
2491 config PCI_BIOS
2492 def_bool y
2493 depends on X86_32 && PCI && (PCI_GOBIOS || PCI_GOANY)
2494
2495 # x86-64 doesn't support PCI BIOS access from long mode so always go direct.
2496 config PCI_DIRECT
2497 def_bool y
2498 depends on PCI && (X86_64 || (PCI_GODIRECT || PCI_GOANY || PCI_GOOLPC || PCI_GOMMCONFIG))
2499
2500 config PCI_MMCONFIG
2501 def_bool y
2502 depends on X86_32 && PCI && (ACPI || SFI) && (PCI_GOMMCONFIG || PCI_GOANY)
2503
2504 config PCI_OLPC
2505 def_bool y
2506 depends on PCI && OLPC && (PCI_GOOLPC || PCI_GOANY)
2507
2508 config PCI_XEN
2509 def_bool y
2510 depends on PCI && XEN
2511 select SWIOTLB_XEN
2512
2513 config PCI_DOMAINS
2514 def_bool y
2515 depends on PCI
2516
2517 config PCI_MMCONFIG
2518 bool "Support mmconfig PCI config space access"
2519 depends on X86_64 && PCI && ACPI
2520
2521 config PCI_CNB20LE_QUIRK
2522 bool "Read CNB20LE Host Bridge Windows" if EXPERT
2523 depends on PCI
2524 help
2525 Read the PCI windows out of the CNB20LE host bridge. This allows
2526 PCI hotplug to work on systems with the CNB20LE chipset which do
2527 not have ACPI.
2528
2529 There's no public spec for this chipset, and this functionality
2530 is known to be incomplete.
2531
2532 You should say N unless you know you need this.
2533
2534 source "drivers/pci/Kconfig"
2535
2536 config ISA_BUS
2537 bool "ISA-style bus support on modern systems" if EXPERT
2538 select ISA_BUS_API
2539 help
2540 Enables ISA-style drivers on modern systems. This is necessary to
2541 support PC/104 devices on X86_64 platforms.
2542
2543 If unsure, say N.
2544
2545 # x86_64 have no ISA slots, but can have ISA-style DMA.
2546 config ISA_DMA_API
2547 bool "ISA-style DMA support" if (X86_64 && EXPERT)
2548 default y
2549 help
2550 Enables ISA-style DMA support for devices requiring such controllers.
2551 If unsure, say Y.
2552
2553 if X86_32
2554
2555 config ISA
2556 bool "ISA support"
2557 ---help---
2558 Find out whether you have ISA slots on your motherboard. ISA is the
2559 name of a bus system, i.e. the way the CPU talks to the other stuff
2560 inside your box. Other bus systems are PCI, EISA, MicroChannel
2561 (MCA) or VESA. ISA is an older system, now being displaced by PCI;
2562 newer boards don't support it. If you have ISA, say Y, otherwise N.
2563
2564 config EISA
2565 bool "EISA support"
2566 depends on ISA
2567 ---help---
2568 The Extended Industry Standard Architecture (EISA) bus was
2569 developed as an open alternative to the IBM MicroChannel bus.
2570
2571 The EISA bus provided some of the features of the IBM MicroChannel
2572 bus while maintaining backward compatibility with cards made for
2573 the older ISA bus. The EISA bus saw limited use between 1988 and
2574 1995 when it was made obsolete by the PCI bus.
2575
2576 Say Y here if you are building a kernel for an EISA-based machine.
2577
2578 Otherwise, say N.
2579
2580 source "drivers/eisa/Kconfig"
2581
2582 config SCx200
2583 tristate "NatSemi SCx200 support"
2584 ---help---
2585 This provides basic support for National Semiconductor's
2586 (now AMD's) Geode processors. The driver probes for the
2587 PCI-IDs of several on-chip devices, so its a good dependency
2588 for other scx200_* drivers.
2589
2590 If compiled as a module, the driver is named scx200.
2591
2592 config SCx200HR_TIMER
2593 tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
2594 depends on SCx200
2595 default y
2596 ---help---
2597 This driver provides a clocksource built upon the on-chip
2598 27MHz high-resolution timer. Its also a workaround for
2599 NSC Geode SC-1100's buggy TSC, which loses time when the
2600 processor goes idle (as is done by the scheduler). The
2601 other workaround is idle=poll boot option.
2602
2603 config OLPC
2604 bool "One Laptop Per Child support"
2605 depends on !X86_PAE
2606 select GPIOLIB
2607 select OF
2608 select OF_PROMTREE
2609 select IRQ_DOMAIN
2610 ---help---
2611 Add support for detecting the unique features of the OLPC
2612 XO hardware.
2613
2614 config OLPC_XO1_PM
2615 bool "OLPC XO-1 Power Management"
2616 depends on OLPC && MFD_CS5535 && PM_SLEEP
2617 select MFD_CORE
2618 ---help---
2619 Add support for poweroff and suspend of the OLPC XO-1 laptop.
2620
2621 config OLPC_XO1_RTC
2622 bool "OLPC XO-1 Real Time Clock"
2623 depends on OLPC_XO1_PM && RTC_DRV_CMOS
2624 ---help---
2625 Add support for the XO-1 real time clock, which can be used as a
2626 programmable wakeup source.
2627
2628 config OLPC_XO1_SCI
2629 bool "OLPC XO-1 SCI extras"
2630 depends on OLPC && OLPC_XO1_PM
2631 depends on INPUT=y
2632 select POWER_SUPPLY
2633 select GPIO_CS5535
2634 select MFD_CORE
2635 ---help---
2636 Add support for SCI-based features of the OLPC XO-1 laptop:
2637 - EC-driven system wakeups
2638 - Power button
2639 - Ebook switch
2640 - Lid switch
2641 - AC adapter status updates
2642 - Battery status updates
2643
2644 config OLPC_XO15_SCI
2645 bool "OLPC XO-1.5 SCI extras"
2646 depends on OLPC && ACPI
2647 select POWER_SUPPLY
2648 ---help---
2649 Add support for SCI-based features of the OLPC XO-1.5 laptop:
2650 - EC-driven system wakeups
2651 - AC adapter status updates
2652 - Battery status updates
2653
2654 config ALIX
2655 bool "PCEngines ALIX System Support (LED setup)"
2656 select GPIOLIB
2657 ---help---
2658 This option enables system support for the PCEngines ALIX.
2659 At present this just sets up LEDs for GPIO control on
2660 ALIX2/3/6 boards. However, other system specific setup should
2661 get added here.
2662
2663 Note: You must still enable the drivers for GPIO and LED support
2664 (GPIO_CS5535 & LEDS_GPIO) to actually use the LEDs
2665
2666 Note: You have to set alix.force=1 for boards with Award BIOS.
2667
2668 config NET5501
2669 bool "Soekris Engineering net5501 System Support (LEDS, GPIO, etc)"
2670 select GPIOLIB
2671 ---help---
2672 This option enables system support for the Soekris Engineering net5501.
2673
2674 config GEOS
2675 bool "Traverse Technologies GEOS System Support (LEDS, GPIO, etc)"
2676 select GPIOLIB
2677 depends on DMI
2678 ---help---
2679 This option enables system support for the Traverse Technologies GEOS.
2680
2681 config TS5500
2682 bool "Technologic Systems TS-5500 platform support"
2683 depends on MELAN
2684 select CHECK_SIGNATURE
2685 select NEW_LEDS
2686 select LEDS_CLASS
2687 ---help---
2688 This option enables system support for the Technologic Systems TS-5500.
2689
2690 endif # X86_32
2691
2692 config AMD_NB
2693 def_bool y
2694 depends on CPU_SUP_AMD && PCI
2695
2696 source "drivers/pcmcia/Kconfig"
2697
2698 config RAPIDIO
2699 tristate "RapidIO support"
2700 depends on PCI
2701 default n
2702 help
2703 If enabled this option will include drivers and the core
2704 infrastructure code to support RapidIO interconnect devices.
2705
2706 source "drivers/rapidio/Kconfig"
2707
2708 config X86_SYSFB
2709 bool "Mark VGA/VBE/EFI FB as generic system framebuffer"
2710 help
2711 Firmwares often provide initial graphics framebuffers so the BIOS,
2712 bootloader or kernel can show basic video-output during boot for
2713 user-guidance and debugging. Historically, x86 used the VESA BIOS
2714 Extensions and EFI-framebuffers for this, which are mostly limited
2715 to x86.
2716 This option, if enabled, marks VGA/VBE/EFI framebuffers as generic
2717 framebuffers so the new generic system-framebuffer drivers can be
2718 used on x86. If the framebuffer is not compatible with the generic
2719 modes, it is adverticed as fallback platform framebuffer so legacy
2720 drivers like efifb, vesafb and uvesafb can pick it up.
2721 If this option is not selected, all system framebuffers are always
2722 marked as fallback platform framebuffers as usual.
2723
2724 Note: Legacy fbdev drivers, including vesafb, efifb, uvesafb, will
2725 not be able to pick up generic system framebuffers if this option
2726 is selected. You are highly encouraged to enable simplefb as
2727 replacement if you select this option. simplefb can correctly deal
2728 with generic system framebuffers. But you should still keep vesafb
2729 and others enabled as fallback if a system framebuffer is
2730 incompatible with simplefb.
2731
2732 If unsure, say Y.
2733
2734 endmenu
2735
2736
2737 menu "Executable file formats / Emulations"
2738
2739 source "fs/Kconfig.binfmt"
2740
2741 config IA32_EMULATION
2742 bool "IA32 Emulation"
2743 depends on X86_64
2744 select ARCH_WANT_OLD_COMPAT_IPC
2745 select BINFMT_ELF
2746 select COMPAT_BINFMT_ELF
2747 select COMPAT_OLD_SIGACTION
2748 ---help---
2749 Include code to run legacy 32-bit programs under a
2750 64-bit kernel. You should likely turn this on, unless you're
2751 100% sure that you don't have any 32-bit programs left.
2752
2753 config IA32_AOUT
2754 tristate "IA32 a.out support"
2755 depends on IA32_EMULATION
2756 ---help---
2757 Support old a.out binaries in the 32bit emulation.
2758
2759 config X86_X32
2760 bool "x32 ABI for 64-bit mode"
2761 depends on X86_64
2762 ---help---
2763 Include code to run binaries for the x32 native 32-bit ABI
2764 for 64-bit processors. An x32 process gets access to the
2765 full 64-bit register file and wide data path while leaving
2766 pointers at 32 bits for smaller memory footprint.
2767
2768 You will need a recent binutils (2.22 or later) with
2769 elf32_x86_64 support enabled to compile a kernel with this
2770 option set.
2771
2772 config COMPAT_32
2773 def_bool y
2774 depends on IA32_EMULATION || X86_32
2775 select HAVE_UID16
2776 select OLD_SIGSUSPEND3
2777
2778 config COMPAT
2779 def_bool y
2780 depends on IA32_EMULATION || X86_X32
2781
2782 if COMPAT
2783 config COMPAT_FOR_U64_ALIGNMENT
2784 def_bool y
2785
2786 config SYSVIPC_COMPAT
2787 def_bool y
2788 depends on SYSVIPC
2789 endif
2790
2791 endmenu
2792
2793
2794 config HAVE_ATOMIC_IOMAP
2795 def_bool y
2796 depends on X86_32
2797
2798 config X86_DEV_DMA_OPS
2799 bool
2800 depends on X86_64 || STA2X11
2801
2802 config X86_DMA_REMAP
2803 bool
2804 depends on STA2X11
2805
2806 config HAVE_GENERIC_GUP
2807 def_bool y
2808
2809 source "net/Kconfig"
2810
2811 source "drivers/Kconfig"
2812
2813 source "drivers/firmware/Kconfig"
2814
2815 source "fs/Kconfig"
2816
2817 source "arch/x86/Kconfig.debug"
2818
2819 source "security/Kconfig"
2820
2821 source "crypto/Kconfig"
2822
2823 source "arch/x86/kvm/Kconfig"
2824
2825 source "lib/Kconfig"