blob: 75fba1fc205d015d1d0f80c0980d1c8aba10da6f [file] [log] [blame]
Sam Ravnborgdaa93fa2007-11-12 20:54:30 +01001# Select 32 or 64 bit
2config 64BIT
Sam Ravnborg68409992007-11-17 15:37:31 +01003 bool "64-bit kernel" if ARCH = "x86"
David Woodhouseffee0de2012-12-20 21:51:55 +00004 default ARCH != "i386"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01005 ---help---
Sam Ravnborgdaa93fa2007-11-12 20:54:30 +01006 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
9config X86_32
Jan Beulich3120e252012-09-10 12:41:45 +010010 def_bool y
11 depends on !64BIT
Sam Ravnborgdaa93fa2007-11-12 20:54:30 +010012
13config X86_64
Jan Beulich3120e252012-09-10 12:41:45 +010014 def_bool y
15 depends on 64BIT
Sam Ravnborg1032c0b2007-11-06 21:35:08 +010016
17### Arch settings
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +010018config X86
Harvey Harrison3c2362e2008-01-30 13:31:03 +010019 def_bool y
Ingo Molnar6471b822015-06-03 10:00:13 +020020 select ACPI_LEGACY_TABLES_LOOKUP if ACPI
21 select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
22 select ANON_INODES
23 select ARCH_CLOCKSOURCE_DATA
24 select ARCH_DISCARD_MEMBLOCK
25 select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
Stephen Boyd446f24d2013-04-30 15:28:42 -070026 select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
Dan Williams21266be2015-11-19 18:19:29 -080027 select ARCH_HAS_DEVMEM_IS_ALLOWED
Ingo Molnar6471b822015-06-03 10:00:13 +020028 select ARCH_HAS_ELF_RANDOMIZE
Linus Torvalds72d93102014-09-13 11:14:53 -070029 select ARCH_HAS_FAST_MULTIPLIER
Riku Voipio957e3fa2014-12-12 16:57:44 -080030 select ARCH_HAS_GCOV_PROFILE_ALL
Dan Williams96601ad2015-08-24 18:29:38 -040031 select ARCH_HAS_PMEM_API if X86_64
Ross Zwisler67a3e8f2015-08-27 13:14:20 -060032 select ARCH_HAS_MMIO_FLUSH
Ingo Molnar6471b822015-06-03 10:00:13 +020033 select ARCH_HAS_SG_CHAIN
34 select ARCH_HAVE_NMI_SAFE_CMPXCHG
35 select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI
Mark Salter77fbbc82013-10-07 22:18:07 -040036 select ARCH_MIGHT_HAVE_PC_PARPORT
Mark Salter5e2c18c2014-01-01 11:34:16 -080037 select ARCH_MIGHT_HAVE_PC_SERIO
Ingo Molnar6471b822015-06-03 10:00:13 +020038 select ARCH_SUPPORTS_ATOMIC_RMW
Mel Gorman3b242c62015-06-30 14:57:13 -070039 select ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
Ingo Molnar6471b822015-06-03 10:00:13 +020040 select ARCH_SUPPORTS_INT128 if X86_64
41 select ARCH_SUPPORTS_NUMA_BALANCING if X86_64
42 select ARCH_USE_BUILTIN_BSWAP
43 select ARCH_USE_CMPXCHG_LOCKREF if X86_64
44 select ARCH_USE_QUEUED_RWLOCKS
45 select ARCH_USE_QUEUED_SPINLOCKS
Mel Gorman72b252a2015-09-04 15:47:32 -070046 select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH if SMP
Ingo Molnar5aaeb5c2015-07-17 12:28:12 +020047 select ARCH_WANTS_DYNAMIC_TASK_STRUCT
Ingo Molnarda4276b2009-01-07 11:05:10 +010048 select ARCH_WANT_FRAME_POINTERS
Ingo Molnar6471b822015-06-03 10:00:13 +020049 select ARCH_WANT_IPC_PARSE_VERSION if X86_32
50 select ARCH_WANT_OPTIONAL_GPIOLIB
51 select BUILDTIME_EXTABLE_SORT
52 select CLKEVT_I8253
53 select CLKSRC_I8253 if X86_32
54 select CLOCKSOURCE_VALIDATE_LAST_CYCLE
55 select CLOCKSOURCE_WATCHDOG
56 select CLONE_BACKWARDS if X86_32
57 select COMPAT_OLD_SIGACTION if IA32_EMULATION
58 select DCACHE_WORD_ACCESS
Linus Torvalds45471cd2015-06-24 19:52:06 -070059 select EDAC_ATOMIC_SCRUB
60 select EDAC_SUPPORT
Ingo Molnar6471b822015-06-03 10:00:13 +020061 select GENERIC_CLOCKEVENTS
62 select GENERIC_CLOCKEVENTS_BROADCAST if X86_64 || (X86_32 && X86_LOCAL_APIC)
63 select GENERIC_CLOCKEVENTS_MIN_ADJUST
64 select GENERIC_CMOS_UPDATE
65 select GENERIC_CPU_AUTOPROBE
66 select GENERIC_EARLY_IOREMAP
67 select GENERIC_FIND_FIRST_BIT
68 select GENERIC_IOMAP
69 select GENERIC_IRQ_PROBE
70 select GENERIC_IRQ_SHOW
71 select GENERIC_PENDING_IRQ if SMP
72 select GENERIC_SMP_IDLE_THREAD
73 select GENERIC_STRNCPY_FROM_USER
74 select GENERIC_STRNLEN_USER
75 select GENERIC_TIME_VSYSCALL
76 select HAVE_ACPI_APEI if ACPI
77 select HAVE_ACPI_APEI_NMI if ACPI
78 select HAVE_ALIGNED_STRUCT_PAGE if SLUB
79 select HAVE_AOUT if X86_32
80 select HAVE_ARCH_AUDITSYSCALL
81 select HAVE_ARCH_HUGE_VMAP if X86_64 || X86_PAE
82 select HAVE_ARCH_JUMP_LABEL
83 select HAVE_ARCH_KASAN if X86_64 && SPARSEMEM_VMEMMAP
84 select HAVE_ARCH_KGDB
85 select HAVE_ARCH_KMEMCHECK
86 select HAVE_ARCH_SECCOMP_FILTER
87 select HAVE_ARCH_SOFT_DIRTY if X86_64
88 select HAVE_ARCH_TRACEHOOK
89 select HAVE_ARCH_TRANSPARENT_HUGEPAGE
90 select HAVE_BPF_JIT if X86_64
91 select HAVE_CC_STACKPROTECTOR
92 select HAVE_CMPXCHG_DOUBLE
93 select HAVE_CMPXCHG_LOCAL
94 select HAVE_CONTEXT_TRACKING if X86_64
Josh Triplettc1bd55f2015-06-30 15:00:00 -070095 select HAVE_COPY_THREAD_TLS
Ingo Molnar6471b822015-06-03 10:00:13 +020096 select HAVE_C_RECORDMCOUNT
97 select HAVE_DEBUG_KMEMLEAK
98 select HAVE_DEBUG_STACKOVERFLOW
99 select HAVE_DMA_API_DEBUG
FUJITA Tomonori7c095e42009-06-17 16:28:12 -0700100 select HAVE_DMA_ATTRS
Akinobu Mita9c5a3622014-06-04 16:06:50 -0700101 select HAVE_DMA_CONTIGUOUS
Steven Rostedt677aa9f2008-05-17 00:01:36 -0400102 select HAVE_DYNAMIC_FTRACE
Masami Hiramatsu06aeaae2012-09-28 17:15:17 +0900103 select HAVE_DYNAMIC_FTRACE_WITH_REGS
Johannes Berg58340a02008-07-25 01:45:33 -0700104 select HAVE_EFFICIENT_UNALIGNED_ACCESS
Ingo Molnar6471b822015-06-03 10:00:13 +0200105 select HAVE_FENTRY if X86_64
106 select HAVE_FTRACE_MCOUNT_RECORD
107 select HAVE_FUNCTION_GRAPH_FP_TEST
108 select HAVE_FUNCTION_GRAPH_TRACER
109 select HAVE_FUNCTION_TRACER
110 select HAVE_GENERIC_DMA_COHERENT if X86_32
K.Prasad0067f122009-06-01 23:43:57 +0530111 select HAVE_HW_BREAKPOINT
Ingo Molnar6471b822015-06-03 10:00:13 +0200112 select HAVE_IDE
113 select HAVE_IOREMAP_PROT
114 select HAVE_IRQ_EXIT_ON_IRQ_STACK if X86_64
115 select HAVE_IRQ_TIME_ACCOUNTING
116 select HAVE_KERNEL_BZIP2
117 select HAVE_KERNEL_GZIP
118 select HAVE_KERNEL_LZ4
119 select HAVE_KERNEL_LZMA
120 select HAVE_KERNEL_LZO
121 select HAVE_KERNEL_XZ
122 select HAVE_KPROBES
123 select HAVE_KPROBES_ON_FTRACE
124 select HAVE_KRETPROBES
125 select HAVE_KVM
126 select HAVE_LIVEPATCH if X86_64
127 select HAVE_MEMBLOCK
128 select HAVE_MEMBLOCK_NODE_MAP
Frederic Weisbecker01027522010-04-11 18:55:56 +0200129 select HAVE_MIXED_BREAKPOINTS_REGS
Ingo Molnar6471b822015-06-03 10:00:13 +0200130 select HAVE_OPROFILE
131 select HAVE_OPTPROBES
132 select HAVE_PCSPKR_PLATFORM
133 select HAVE_PERF_EVENTS
Frederic Weisbeckerc01d4322010-05-15 22:57:48 +0200134 select HAVE_PERF_EVENTS_NMI
Jiri Olsac5e63192012-08-07 15:20:36 +0200135 select HAVE_PERF_REGS
Jiri Olsac5ebced2012-08-07 15:20:40 +0200136 select HAVE_PERF_USER_STACK_DUMP
Ingo Molnar6471b822015-06-03 10:00:13 +0200137 select HAVE_REGS_AND_STACK_ACCESS_API
138 select HAVE_SYSCALL_TRACEPOINTS
Brian Gerst0c3619e2015-06-22 07:55:20 -0400139 select HAVE_UID16 if X86_32 || IA32_EMULATION
Ingo Molnar6471b822015-06-03 10:00:13 +0200140 select HAVE_UNSTABLE_SCHED_CLOCK
Avi Kivity7c68af62009-09-19 09:40:22 +0300141 select HAVE_USER_RETURN_NOTIFIER
Thomas Gleixnerc01858082011-02-07 02:24:08 +0100142 select IRQ_FORCED_THREADING
Ingo Molnar6471b822015-06-03 10:00:13 +0200143 select MODULES_USE_ELF_RELA if X86_64
144 select MODULES_USE_ELF_REL if X86_32
145 select OLD_SIGACTION if X86_32
146 select OLD_SIGSUSPEND3 if X86_32 || IA32_EMULATION
147 select PERF_EVENTS
Prarit Bhargava3195ef52013-02-14 12:02:54 -0500148 select RTC_LIB
Ingo Molnar6471b822015-06-03 10:00:13 +0200149 select SPARSE_IRQ
Pranith Kumar83fe27e2014-12-05 11:24:45 -0500150 select SRCU
Ingo Molnar6471b822015-06-03 10:00:13 +0200151 select SYSCTL_EXCEPTION_TRACE
152 select USER_STACKTRACE_SUPPORT
153 select VIRT_TO_BUS
154 select X86_DEV_DMA_OPS if X86_64
155 select X86_FEATURE_NAMES if PROC_FS
Balbir Singh7d8330a2008-02-10 12:46:28 +0530156
Ingo Molnarba7e4d12009-06-06 13:58:12 +0200157config INSTRUCTION_DECODER
Jan Beulich3120e252012-09-10 12:41:45 +0100158 def_bool y
159 depends on KPROBES || PERF_EVENTS || UPROBES
Ingo Molnarba7e4d12009-06-06 13:58:12 +0200160
Peter Zijlstra7fb0f1d2014-10-24 09:12:35 +0200161config PERF_EVENTS_INTEL_UNCORE
162 def_bool y
Peter Zijlstra (Intel)ce5686d2014-10-29 11:17:04 +0100163 depends on PERF_EVENTS && CPU_SUP_INTEL && PCI
Peter Zijlstra7fb0f1d2014-10-24 09:12:35 +0200164
Linus Torvalds51b26ad2009-04-26 10:12:47 -0700165config OUTPUT_FORMAT
166 string
167 default "elf32-i386" if X86_32
168 default "elf64-x86-64" if X86_64
169
Sam Ravnborg73531902008-05-25 23:03:18 +0200170config ARCH_DEFCONFIG
Sam Ravnborgb9b39bf2008-04-29 12:48:15 +0200171 string
Sam Ravnborg73531902008-05-25 23:03:18 +0200172 default "arch/x86/configs/i386_defconfig" if X86_32
173 default "arch/x86/configs/x86_64_defconfig" if X86_64
Sam Ravnborgb9b39bf2008-04-29 12:48:15 +0200174
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100175config LOCKDEP_SUPPORT
Harvey Harrison3c2362e2008-01-30 13:31:03 +0100176 def_bool y
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100177
178config STACKTRACE_SUPPORT
Harvey Harrison3c2362e2008-01-30 13:31:03 +0100179 def_bool y
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100180
Heiko Carstensaa7d9352008-02-01 17:45:14 +0100181config HAVE_LATENCYTOP_SUPPORT
182 def_bool y
183
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100184config MMU
Harvey Harrison3c2362e2008-01-30 13:31:03 +0100185 def_bool y
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100186
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100187config SBUS
188 bool
189
FUJITA Tomonori3bc4e452010-03-10 15:23:22 -0800190config NEED_DMA_MAP_STATE
Jan Beulich3120e252012-09-10 12:41:45 +0100191 def_bool y
Konrad Rzeszutek Wilka6dfa122015-04-17 15:04:48 -0400192 depends on X86_64 || INTEL_IOMMU || DMA_API_DEBUG || SWIOTLB
FUJITA Tomonori3bc4e452010-03-10 15:23:22 -0800193
FUJITA Tomonori18e98302010-05-26 14:44:32 -0700194config NEED_SG_DMA_LENGTH
Andrew Morton4a14d842010-05-26 14:44:33 -0700195 def_bool y
FUJITA Tomonori18e98302010-05-26 14:44:32 -0700196
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100197config GENERIC_ISA_DMA
Jan Beulich3120e252012-09-10 12:41:45 +0100198 def_bool y
199 depends on ISA_DMA_API
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100200
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100201config GENERIC_BUG
Harvey Harrison3c2362e2008-01-30 13:31:03 +0100202 def_bool y
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100203 depends on BUG
Jan Beulichb93a5312008-12-16 11:40:27 +0000204 select GENERIC_BUG_RELATIVE_POINTERS if X86_64
205
206config GENERIC_BUG_RELATIVE_POINTERS
207 bool
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100208
209config GENERIC_HWEIGHT
Harvey Harrison3c2362e2008-01-30 13:31:03 +0100210 def_bool y
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100211
212config ARCH_MAY_HAVE_PC_FDC
Jan Beulich3120e252012-09-10 12:41:45 +0100213 def_bool y
214 depends on ISA_DMA_API
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100215
Sam Ravnborg1032c0b2007-11-06 21:35:08 +0100216config RWSEM_XCHGADD_ALGORITHM
Jan Beulich3120e252012-09-10 12:41:45 +0100217 def_bool y
Sam Ravnborg1032c0b2007-11-06 21:35:08 +0100218
Sam Ravnborg1032c0b2007-11-06 21:35:08 +0100219config GENERIC_CALIBRATE_DELAY
220 def_bool y
221
venkatesh.pallipadi@intel.com9a0b8412008-01-31 17:35:06 -0800222config ARCH_HAS_CPU_RELAX
223 def_bool y
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100224
Pekka Enberg1b27d052008-04-28 02:12:22 -0700225config ARCH_HAS_CACHE_LINE_SIZE
226 def_bool y
227
Mike Travisdd5af902008-01-30 13:33:32 +0100228config HAVE_SETUP_PER_CPU_AREA
Brian Gerst89c9c4c2009-01-27 12:56:48 +0900229 def_bool y
travis@sgi.comb32ef632008-01-30 13:32:51 +0100230
Tejun Heo08fc4582009-08-14 15:00:49 +0900231config NEED_PER_CPU_EMBED_FIRST_CHUNK
232 def_bool y
233
234config NEED_PER_CPU_PAGE_FIRST_CHUNK
Tejun Heo11124412009-02-20 16:29:09 +0900235 def_bool y
236
Johannes Berg801e4062007-12-08 02:12:39 +0100237config ARCH_HIBERNATION_POSSIBLE
238 def_bool y
Johannes Berg801e4062007-12-08 02:12:39 +0100239
Johannes Bergf4cb5702007-12-08 02:14:00 +0100240config ARCH_SUSPEND_POSSIBLE
241 def_bool y
Johannes Bergf4cb5702007-12-08 02:14:00 +0100242
Steve Cappercfe28c52013-04-29 14:29:48 +0100243config ARCH_WANT_HUGE_PMD_SHARE
244 def_bool y
245
Steve Capper53313b22013-04-30 08:03:42 +0100246config ARCH_WANT_GENERAL_HUGETLB
247 def_bool y
248
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100249config ZONE_DMA32
Jan Beuliche0fd24a2015-02-05 15:39:34 +0000250 def_bool y if X86_64
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100251
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100252config AUDIT_ARCH
Jan Beuliche0fd24a2015-02-05 15:39:34 +0000253 def_bool y if X86_64
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100254
Ingo Molnar765c68b2008-04-09 11:03:37 +0200255config ARCH_SUPPORTS_OPTIMIZED_INLINING
256 def_bool y
257
Akinobu Mita6a11f752009-03-31 15:23:17 -0700258config ARCH_SUPPORTS_DEBUG_PAGEALLOC
259 def_bool y
260
Andrey Ryabinind6f2d752015-07-02 12:09:38 +0300261config KASAN_SHADOW_OFFSET
262 hex
263 depends on KASAN
264 default 0xdffffc0000000000
265
Shane Wang69575d32009-09-01 18:25:07 -0700266config HAVE_INTEL_TXT
267 def_bool y
Kees Cook6ea30382012-10-02 11:16:47 -0700268 depends on INTEL_IOMMU && ACPI
Shane Wang69575d32009-09-01 18:25:07 -0700269
Sam Ravnborg6b0c3d42008-01-30 13:32:27 +0100270config X86_32_SMP
271 def_bool y
272 depends on X86_32 && SMP
273
274config X86_64_SMP
275 def_bool y
276 depends on X86_64 && SMP
277
Tejun Heoccbeed32009-02-09 22:17:40 +0900278config X86_32_LAZY_GS
279 def_bool y
Tejun Heo60a53172009-02-09 22:17:40 +0900280 depends on X86_32 && !CC_STACKPROTECTOR
Tejun Heoccbeed32009-02-09 22:17:40 +0900281
Borislav Petkovd61931d2010-03-05 17:34:46 +0100282config ARCH_HWEIGHT_CFLAGS
283 string
284 default "-fcall-saved-ecx -fcall-saved-edx" if X86_32
285 default "-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" if X86_64
286
Srikar Dronamraju2b144492012-02-09 14:56:42 +0530287config ARCH_SUPPORTS_UPROBES
288 def_bool y
289
Rob Herringd20642f2014-04-18 17:19:54 -0500290config FIX_EARLYCON_MEM
291 def_bool y
292
Kirill A. Shutemov98233362015-04-14 15:46:14 -0700293config PGTABLE_LEVELS
294 int
295 default 4 if X86_64
296 default 3 if X86_PAE
297 default 2
298
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100299source "init/Kconfig"
Matt Helsleydc52ddc2008-10-18 20:27:21 -0700300source "kernel/Kconfig.freezer"
Sam Ravnborg8d5fffb2007-11-06 23:30:30 +0100301
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100302menu "Processor type and features"
303
Randy Dunlap5ee71532012-01-16 11:57:18 -0800304config ZONE_DMA
305 bool "DMA memory allocation support" if EXPERT
306 default y
307 help
308 DMA memory allocation support allows devices with less than 32-bit
309 addressing to allocate within the first 16MB of address space.
310 Disable if no such devices will be used.
311
312 If unsure, say Y.
313
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100314config SMP
315 bool "Symmetric multi-processing support"
316 ---help---
317 This enables support for systems with more than one CPU. If you have
Robert Graffham4a474152014-01-23 15:55:29 -0800318 a system with only one CPU, say N. If you have a system with more
319 than one CPU, say Y.
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100320
Robert Graffham4a474152014-01-23 15:55:29 -0800321 If you say N here, the kernel will run on uni- and multiprocessor
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100322 machines, but will use only one CPU of a multiprocessor machine. If
323 you say Y here, the kernel will run on many, but not all,
Robert Graffham4a474152014-01-23 15:55:29 -0800324 uniprocessor machines. On a uniprocessor machine, the kernel
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100325 will run faster if you say N here.
326
327 Note that if you say Y here and choose architecture "586" or
328 "Pentium" under "Processor family", the kernel will not work on 486
329 architectures. Similarly, multiprocessor kernels for the "PPro"
330 architecture may not work on all Pentium based boards.
331
332 People using multiprocessor machines who say Y here should also say
333 Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
334 Management" code will be disabled if you say Y here.
335
Paul Bolle395cf962011-08-15 02:02:26 +0200336 See also <file:Documentation/x86/i386/IO-APIC.txt>,
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100337 <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
338 <http://www.tldp.org/docs.html#howto>.
339
340 If you don't know what to do here, say N.
341
Josh Triplett9def39be2013-10-30 08:09:45 -0700342config X86_FEATURE_NAMES
343 bool "Processor feature human-readable names" if EMBEDDED
344 default y
345 ---help---
346 This option compiles in a table of x86 feature bits and corresponding
347 names. This is required to support /proc/cpuinfo and a few kernel
348 messages. You can disable this to save space, at the expense of
349 making those few kernel messages show numeric feature bits instead.
350
351 If in doubt, say Y.
352
Yinghai Lu06cd9a72009-02-16 17:29:58 -0800353config X86_X2APIC
354 bool "Support x2apic"
Jan Kiszka19e3d602015-05-04 17:58:01 +0200355 depends on X86_LOCAL_APIC && X86_64 && (IRQ_REMAP || HYPERVISOR_GUEST)
Yinghai Lu06cd9a72009-02-16 17:29:58 -0800356 ---help---
357 This enables x2apic support on CPUs that have this feature.
358
359 This allows 32-bit apic IDs (so it can support very large systems),
360 and accesses the local apic via MSRs not via mmio.
361
Yinghai Lu06cd9a72009-02-16 17:29:58 -0800362 If you don't know what to do here, say N.
363
Yinghai Lu6695c852008-06-19 12:13:09 -0700364config X86_MPPARSE
Bin Gao6e87f9b72012-10-25 09:35:44 -0700365 bool "Enable MPS table" if ACPI || SFI
Jan Beulich7a527682008-10-30 10:38:24 +0000366 default y
Ingo Molnar5ab74722008-07-10 14:42:03 +0200367 depends on X86_LOCAL_APIC
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100368 ---help---
Yinghai Lu6695c852008-06-19 12:13:09 -0700369 For old smp systems that do not have proper acpi support. Newer systems
370 (esp with 64bit cpus) with acpi support, MADT and DSDT will override it
Yinghai Lu6695c852008-06-19 12:13:09 -0700371
Yinghai Lu26f7ef12009-01-29 14:19:22 -0800372config X86_BIGSMP
373 bool "Support for big SMP systems with more than 8 CPUs"
374 depends on X86_32 && SMP
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100375 ---help---
Yinghai Lu26f7ef12009-01-29 14:19:22 -0800376 This option is needed for the systems that have more than 8 CPUs
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100377
Jun Nakajimaddd70cf2013-01-21 17:23:09 +0000378config GOLDFISH
379 def_bool y
380 depends on X86_GOLDFISH
381
Ravikiran G Thirumalai84250912009-02-20 16:59:11 -0800382if X86_32
Ravikiran G Thirumalaic5c606d2009-02-09 18:18:14 -0800383config X86_EXTENDED_PLATFORM
384 bool "Support for extended (non-PC) x86 platforms"
385 default y
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100386 ---help---
Ingo Molnar06ac8342009-01-27 18:11:43 +0100387 If you disable this option then the kernel will only support
388 standard PC platforms. (which covers the vast majority of
389 systems out there.)
390
Ravikiran G Thirumalai84250912009-02-20 16:59:11 -0800391 If you enable this option then you'll be able to select support
392 for the following (non-PC) 32 bit x86 platforms:
Ben Hutchingscb7b8022013-06-24 01:05:25 +0100393 Goldfish (Android emulator)
Ravikiran G Thirumalai84250912009-02-20 16:59:11 -0800394 AMD Elan
Ravikiran G Thirumalai84250912009-02-20 16:59:11 -0800395 RDC R-321x SoC
396 SGI 320/540 (Visual Workstation)
Alessandro Rubini83125a32012-04-04 19:40:21 +0200397 STA2X11-based (e.g. Northville)
Thomas Gleixner3f4110a2009-08-29 14:54:20 +0200398 Moorestown MID devices
Ingo Molnar06ac8342009-01-27 18:11:43 +0100399
400 If you have one of these systems, or if you want to build a
401 generic distribution kernel, say Y here - otherwise say N.
Ravikiran G Thirumalai84250912009-02-20 16:59:11 -0800402endif
Ingo Molnar06ac8342009-01-27 18:11:43 +0100403
Ravikiran G Thirumalai84250912009-02-20 16:59:11 -0800404if X86_64
405config X86_EXTENDED_PLATFORM
406 bool "Support for extended (non-PC) x86 platforms"
407 default y
408 ---help---
409 If you disable this option then the kernel will only support
410 standard PC platforms. (which covers the vast majority of
411 systems out there.)
412
413 If you enable this option then you'll be able to select support
414 for the following (non-PC) 64 bit x86 platforms:
Steffen Persvold44b111b2011-12-06 00:07:26 +0800415 Numascale NumaChip
Ravikiran G Thirumalai84250912009-02-20 16:59:11 -0800416 ScaleMP vSMP
417 SGI Ultraviolet
418
419 If you have one of these systems, or if you want to build a
420 generic distribution kernel, say Y here - otherwise say N.
421endif
Ravikiran G Thirumalaic5c606d2009-02-09 18:18:14 -0800422# This is an alphabetically sorted list of 64 bit extended platforms
423# Please maintain the alphabetic order if and when there are additions
Steffen Persvold44b111b2011-12-06 00:07:26 +0800424config X86_NUMACHIP
425 bool "Numascale NumaChip"
426 depends on X86_64
427 depends on X86_EXTENDED_PLATFORM
428 depends on NUMA
429 depends on SMP
430 depends on X86_X2APIC
Daniel J Bluemanf9726bf2012-12-07 14:24:32 -0700431 depends on PCI_MMCONFIG
Steffen Persvold44b111b2011-12-06 00:07:26 +0800432 ---help---
433 Adds support for Numascale NumaChip large-SMP systems. Needed to
434 enable more than ~168 cores.
435 If you don't have one of these, you should say N here.
Nick Piggin03b48632009-01-20 04:36:04 +0100436
Ingo Molnar6a485652009-01-27 18:29:13 +0100437config X86_VSMP
Ravikiran G Thirumalaic5c606d2009-02-09 18:18:14 -0800438 bool "ScaleMP vSMP"
Borislav Petkov6276a072013-03-04 21:20:21 +0100439 select HYPERVISOR_GUEST
Ingo Molnar6a485652009-01-27 18:29:13 +0100440 select PARAVIRT
441 depends on X86_64 && PCI
Ravikiran G Thirumalaic5c606d2009-02-09 18:18:14 -0800442 depends on X86_EXTENDED_PLATFORM
Shai Fultheimead91d42012-04-16 10:39:35 +0300443 depends on SMP
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100444 ---help---
Ingo Molnar6a485652009-01-27 18:29:13 +0100445 Support for ScaleMP vSMP systems. Say 'Y' here if this kernel is
446 supposed to run on these EM64T-based machines. Only choose this option
447 if you have one of these machines.
448
Ravikiran G Thirumalaic5c606d2009-02-09 18:18:14 -0800449config X86_UV
450 bool "SGI Ultraviolet"
451 depends on X86_64
452 depends on X86_EXTENDED_PLATFORM
Jack Steiner54c28d22009-04-03 15:39:42 -0500453 depends on NUMA
Suresh Siddha9d6c26e2009-04-20 13:02:31 -0700454 depends on X86_X2APIC
Ingo Molnar1222e562015-05-06 06:23:59 +0200455 depends on PCI
Ravikiran G Thirumalaic5c606d2009-02-09 18:18:14 -0800456 ---help---
457 This option is needed in order to support SGI Ultraviolet systems.
458 If you don't have one of these, you should say N here.
459
460# Following is an alphabetically sorted list of 32 bit extended platforms
461# Please maintain the alphabetic order if and when there are additions
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100462
Jun Nakajimaddd70cf2013-01-21 17:23:09 +0000463config X86_GOLDFISH
464 bool "Goldfish (Virtual Platform)"
Ben Hutchingscb7b8022013-06-24 01:05:25 +0100465 depends on X86_EXTENDED_PLATFORM
Jun Nakajimaddd70cf2013-01-21 17:23:09 +0000466 ---help---
467 Enable support for the Goldfish virtual platform used primarily
468 for Android development. Unless you are building for the Android
469 Goldfish emulator say N here.
470
Thomas Gleixnerc751e172010-11-09 12:08:04 -0800471config X86_INTEL_CE
472 bool "CE4100 TV platform"
473 depends on PCI
474 depends on PCI_GODIRECT
Jiang Liu6084a6e2014-06-09 16:19:46 +0800475 depends on X86_IO_APIC
Thomas Gleixnerc751e172010-11-09 12:08:04 -0800476 depends on X86_32
477 depends on X86_EXTENDED_PLATFORM
Dirk Brandewie37bc9f52010-11-09 12:08:08 -0800478 select X86_REBOOTFIXUPS
Sebastian Andrzej Siewiorda6b7372011-02-22 21:07:37 +0100479 select OF
480 select OF_EARLY_FLATTREE
Thomas Gleixnerc751e172010-11-09 12:08:04 -0800481 ---help---
482 Select for the Intel CE media processor (CE4100) SOC.
483 This option compiles in support for the CE4100 SOC for settop
484 boxes and media devices.
485
David Cohen4cb9b002013-12-16 17:37:26 -0800486config X86_INTEL_MID
Alan Cox43605ef2011-07-12 17:49:29 +0100487 bool "Intel MID platform support"
488 depends on X86_32
489 depends on X86_EXTENDED_PLATFORM
David Cohenedc6bc72014-01-21 10:41:39 -0800490 depends on X86_PLATFORM_DEVICES
Alan Cox1ea7c672011-11-10 13:29:14 +0000491 depends on PCI
492 depends on PCI_GOANY
493 depends on X86_IO_APIC
Alan Cox7c9c3a12011-12-29 14:43:16 +0000494 select SFI
David Cohen4cb9b002013-12-16 17:37:26 -0800495 select I2C
Alan Cox7c9c3a12011-12-29 14:43:16 +0000496 select DW_APB_TIMER
Alan Cox1ea7c672011-11-10 13:29:14 +0000497 select APB_TIMER
Alan Cox1ea7c672011-11-10 13:29:14 +0000498 select INTEL_SCU_IPC
Mika Westerberg15a713d2012-01-26 17:35:05 +0000499 select MFD_INTEL_MSIC
Alan Cox1ea7c672011-11-10 13:29:14 +0000500 ---help---
David Cohen4cb9b002013-12-16 17:37:26 -0800501 Select to build a kernel capable of supporting Intel MID (Mobile
502 Internet Device) platform systems which do not have the PCI legacy
503 interfaces. If you are building for a PC class system say N here.
Alan Cox1ea7c672011-11-10 13:29:14 +0000504
David Cohen4cb9b002013-12-16 17:37:26 -0800505 Intel MID platforms are based on an Intel processor and chipset which
506 consume less power than most of the x86 derivatives.
Alan Cox43605ef2011-07-12 17:49:29 +0100507
Bryan O'Donoghue8bbc2a12015-01-30 16:29:39 +0000508config X86_INTEL_QUARK
509 bool "Intel Quark platform support"
510 depends on X86_32
511 depends on X86_EXTENDED_PLATFORM
512 depends on X86_PLATFORM_DEVICES
513 depends on X86_TSC
514 depends on PCI
515 depends on PCI_GOANY
516 depends on X86_IO_APIC
517 select IOSF_MBI
518 select INTEL_IMR
Andy Shevchenko9ab6eb52015-03-05 17:24:04 +0200519 select COMMON_CLK
Bryan O'Donoghue8bbc2a12015-01-30 16:29:39 +0000520 ---help---
521 Select to include support for Quark X1000 SoC.
522 Say Y here if you have a Quark based system such as the Arduino
523 compatible Intel Galileo.
524
Mika Westerberg3d48aab2013-01-18 13:45:59 +0000525config X86_INTEL_LPSS
526 bool "Intel Low Power Subsystem Support"
527 depends on ACPI
528 select COMMON_CLK
Mathias Nyman0f531432013-09-13 17:02:29 +0300529 select PINCTRL
Mika Westerberg3d48aab2013-01-18 13:45:59 +0000530 ---help---
531 Select to build support for Intel Low Power Subsystem such as
532 found on Intel Lynxpoint PCH. Selecting this option enables
Mathias Nyman0f531432013-09-13 17:02:29 +0300533 things like clock tree (common clock framework) and pincontrol
534 which are needed by the LPSS peripheral drivers.
Mika Westerberg3d48aab2013-01-18 13:45:59 +0000535
Ken Xue92082a82015-02-06 08:27:51 +0800536config X86_AMD_PLATFORM_DEVICE
537 bool "AMD ACPI2Platform devices support"
538 depends on ACPI
539 select COMMON_CLK
540 select PINCTRL
541 ---help---
542 Select to interpret AMD specific ACPI device to platform device
543 such as I2C, UART, GPIO found on AMD Carrizo and later chipsets.
544 I2C and UART depend on COMMON_CLK to set clock. GPIO driver is
545 implemented under PINCTRL subsystem.
546
David E. Boxced3ce72014-09-17 22:13:50 -0700547config IOSF_MBI
548 tristate "Intel SoC IOSF Sideband support for SoC platforms"
549 depends on PCI
550 ---help---
551 This option enables sideband register access support for Intel SoC
552 platforms. On these platforms the IOSF sideband is used in lieu of
553 MSR's for some register accesses, mostly but not limited to thermal
554 and power. Drivers may query the availability of this device to
555 determine if they need the sideband in order to work on these
556 platforms. The sideband is available on the following SoC products.
557 This list is not meant to be exclusive.
558 - BayTrail
559 - Braswell
560 - Quark
561
562 You should say Y if you are running a kernel on one of these SoC's.
563
David E. Boxed2226b2014-09-17 22:13:51 -0700564config IOSF_MBI_DEBUG
565 bool "Enable IOSF sideband access through debugfs"
566 depends on IOSF_MBI && DEBUG_FS
567 ---help---
568 Select this option to expose the IOSF sideband access registers (MCR,
569 MDR, MCRX) through debugfs to write and read register information from
570 different units on the SoC. This is most useful for obtaining device
571 state information for debug and analysis. As this is a general access
572 mechanism, users of this option would have specific knowledge of the
573 device they want to access.
574
575 If you don't require the option or are in doubt, say N.
576
Ravikiran G Thirumalaic5c606d2009-02-09 18:18:14 -0800577config X86_RDC321X
578 bool "RDC R-321x SoC"
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100579 depends on X86_32
Ravikiran G Thirumalaic5c606d2009-02-09 18:18:14 -0800580 depends on X86_EXTENDED_PLATFORM
581 select M486
582 select X86_REBOOTFIXUPS
583 ---help---
584 This option is needed for RDC R-321x system-on-chip, also known
585 as R-8610-(G).
586 If you don't have one of these chips, you should say N here.
587
Ingo Molnare0c7ae32009-01-27 18:43:09 +0100588config X86_32_NON_STANDARD
Ingo Molnar9c398012009-01-27 18:24:57 +0100589 bool "Support non-standard 32-bit SMP architectures"
590 depends on X86_32 && SMP
Ravikiran G Thirumalaic5c606d2009-02-09 18:18:14 -0800591 depends on X86_EXTENDED_PLATFORM
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100592 ---help---
H. Peter Anvinb5660ba2014-02-25 12:14:06 -0800593 This option compiles in the bigsmp and STA2X11 default
594 subarchitectures. It is intended for a generic binary
595 kernel. If you select them all, kernel will probe it one by
596 one and will fallback to default.
Yinghai Lud49c4282008-06-08 18:31:54 -0700597
Ravikiran G Thirumalaic5c606d2009-02-09 18:18:14 -0800598# Alphabetically sorted list of Non standard 32 bit platforms
Yinghai Lud49c4282008-06-08 18:31:54 -0700599
Linus Torvaldsd949f362009-09-26 09:35:07 -0700600config X86_SUPPORTS_MEMORY_FAILURE
Jan Beulich6fc108a2010-04-21 15:23:44 +0100601 def_bool y
Linus Torvaldsd949f362009-09-26 09:35:07 -0700602 # MCE code calls memory_failure():
603 depends on X86_MCE
604 # On 32-bit this adds too big of NODES_SHIFT and we run out of page flags:
Linus Torvaldsd949f362009-09-26 09:35:07 -0700605 # On 32-bit SPARSEMEM adds too big of SECTIONS_WIDTH:
606 depends on X86_64 || !SPARSEMEM
607 select ARCH_SUPPORTS_MEMORY_FAILURE
Linus Torvaldsd949f362009-09-26 09:35:07 -0700608
Alessandro Rubini83125a32012-04-04 19:40:21 +0200609config STA2X11
610 bool "STA2X11 Companion Chip Support"
611 depends on X86_32_NON_STANDARD && PCI
612 select X86_DEV_DMA_OPS
613 select X86_DMA_REMAP
614 select SWIOTLB
615 select MFD_STA2X11
616 select ARCH_REQUIRE_GPIOLIB
617 default n
618 ---help---
619 This adds support for boards based on the STA2X11 IO-Hub,
620 a.k.a. "ConneXt". The chip is used in place of the standard
621 PC chipset, so all "standard" peripherals are missing. If this
622 option is selected the kernel will still be able to boot on
623 standard PC machines.
624
Shérab82148d12010-09-25 06:06:57 +0200625config X86_32_IRIS
626 tristate "Eurobraille/Iris poweroff module"
627 depends on X86_32
628 ---help---
629 The Iris machines from EuroBraille do not have APM or ACPI support
630 to shut themselves down properly. A special I/O sequence is
631 needed to do so, which is what this module does at
632 kernel shutdown.
633
634 This is only for Iris machines from EuroBraille.
635
636 If unused, say N.
637
Ingo Molnarae1e9132008-11-11 09:05:16 +0100638config SCHED_OMIT_FRAME_POINTER
Harvey Harrison3c2362e2008-01-30 13:31:03 +0100639 def_bool y
640 prompt "Single-depth WCHAN output"
Ken Chena87d0912008-11-06 11:10:49 -0800641 depends on X86
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100642 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100643 Calculate simpler /proc/<PID>/wchan values. If this option
644 is disabled then wchan values will recurse back to the
645 caller function. This provides more accurate wchan values,
646 at the expense of slightly more scheduling overhead.
647
648 If in doubt, say "Y".
649
Borislav Petkov6276a072013-03-04 21:20:21 +0100650menuconfig HYPERVISOR_GUEST
651 bool "Linux guest support"
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100652 ---help---
Borislav Petkov6276a072013-03-04 21:20:21 +0100653 Say Y here to enable options for running Linux under various hyper-
654 visors. This option enables basic hypervisor detection and platform
655 setup.
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100656
Borislav Petkov6276a072013-03-04 21:20:21 +0100657 If you say N, all options in this submenu will be skipped and
658 disabled, and Linux guest support won't be built in.
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100659
Borislav Petkov6276a072013-03-04 21:20:21 +0100660if HYPERVISOR_GUEST
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100661
Eduardo Pereira Habkoste61bd942008-01-30 13:33:32 +0100662config PARAVIRT
663 bool "Enable paravirtualization code"
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100664 ---help---
Eduardo Pereira Habkoste61bd942008-01-30 13:33:32 +0100665 This changes the kernel so it can modify itself when it is run
666 under a hypervisor, potentially improving performance significantly
667 over full virtualization. However, when run without a hypervisor
668 the kernel is theoretically slower and slightly larger.
669
Borislav Petkov6276a072013-03-04 21:20:21 +0100670config PARAVIRT_DEBUG
671 bool "paravirt-ops debugging"
672 depends on PARAVIRT && DEBUG_KERNEL
673 ---help---
674 Enable to debug paravirt_ops internals. Specifically, BUG if
675 a paravirt_op is missing when it is called.
676
Jeremy Fitzhardingeb4ecc122009-05-13 17:16:55 -0700677config PARAVIRT_SPINLOCKS
678 bool "Paravirtualization layer for spinlocks"
Kees Cook6ea30382012-10-02 11:16:47 -0700679 depends on PARAVIRT && SMP
Ingo Molnar62c7a1e2015-05-11 09:47:23 +0200680 select UNINLINE_SPIN_UNLOCK if !QUEUED_SPINLOCKS
Jeremy Fitzhardingeb4ecc122009-05-13 17:16:55 -0700681 ---help---
682 Paravirtualized spinlocks allow a pvops backend to replace the
683 spinlock implementation with something virtualization-friendly
684 (for example, block the virtual CPU rather than spinning).
685
Raghavendra K T4c4e4f62013-10-21 21:35:08 +0530686 It has a minimal impact on native kernels and gives a nice performance
687 benefit on paravirtualized KVM / Xen kernels.
Jeremy Fitzhardingeb4ecc122009-05-13 17:16:55 -0700688
Raghavendra K T4c4e4f62013-10-21 21:35:08 +0530689 If you are unsure how to answer this question, answer Y.
Jeremy Fitzhardingeb4ecc122009-05-13 17:16:55 -0700690
Borislav Petkov6276a072013-03-04 21:20:21 +0100691source "arch/x86/xen/Kconfig"
692
693config KVM_GUEST
694 bool "KVM Guest support (including kvmclock)"
695 depends on PARAVIRT
696 select PARAVIRT_CLOCK
697 default y
698 ---help---
699 This option enables various optimizations for running under the KVM
700 hypervisor. It includes a paravirtualized clock, so that instead
701 of relying on a PIT (or probably other) emulation by the
702 underlying device model, the host provides the guest with
703 timing infrastructure such as time of day, and system time
704
Srivatsa Vaddagiri1e20eb82013-08-09 19:52:01 +0530705config KVM_DEBUG_FS
706 bool "Enable debug information for KVM Guests in debugfs"
707 depends on KVM_GUEST && DEBUG_FS
708 default n
709 ---help---
710 This option enables collection of various statistics for KVM guest.
711 Statistics are displayed in debugfs filesystem. Enabling this option
712 may incur significant overhead.
713
Borislav Petkov6276a072013-03-04 21:20:21 +0100714source "arch/x86/lguest/Kconfig"
715
716config PARAVIRT_TIME_ACCOUNTING
717 bool "Paravirtual steal time accounting"
718 depends on PARAVIRT
719 default n
720 ---help---
721 Select this option to enable fine granularity task steal time
722 accounting. Time spent executing other tasks in parallel with
723 the current vCPU is discounted from the vCPU power. To account for
724 that, there can be a small performance impact.
725
726 If in doubt, say N here.
727
Gerd Hoffmann7af192c2008-06-03 16:17:29 +0200728config PARAVIRT_CLOCK
729 bool
Gerd Hoffmann7af192c2008-06-03 16:17:29 +0200730
Borislav Petkov6276a072013-03-04 21:20:21 +0100731endif #HYPERVISOR_GUEST
Jeremy Fitzhardinge97349132008-06-25 00:19:14 -0400732
Yinghai Lu08677212010-02-10 01:20:20 -0800733config NO_BOOTMEM
Yinghai Lu774ea0b2010-08-25 13:39:18 -0700734 def_bool y
Yinghai Lu08677212010-02-10 01:20:20 -0800735
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100736source "arch/x86/Kconfig.cpu"
737
738config HPET_TIMER
Harvey Harrison3c2362e2008-01-30 13:31:03 +0100739 def_bool X86_64
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100740 prompt "HPET Timer Support" if X86_32
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100741 ---help---
742 Use the IA-PC HPET (High Precision Event Timer) to manage
743 time in preference to the PIT and RTC, if a HPET is
744 present.
745 HPET is the next generation timer replacing legacy 8254s.
746 The HPET provides a stable time base on SMP
747 systems, unlike the TSC, but it is more expensive to access,
748 as it is off-chip. You can find the HPET spec at
749 <http://www.intel.com/hardwaredesign/hpetspec_1.pdf>.
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100750
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100751 You can safely choose Y here. However, HPET will only be
752 activated if the platform and the BIOS support this feature.
753 Otherwise the 8254 will be used for timing services.
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100754
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100755 Choose N to continue using the legacy 8254 timer.
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100756
757config HPET_EMULATE_RTC
Harvey Harrison3c2362e2008-01-30 13:31:03 +0100758 def_bool y
Bernhard Walle9d8af782008-02-06 01:38:52 -0800759 depends on HPET_TIMER && (RTC=y || RTC=m || RTC_DRV_CMOS=m || RTC_DRV_CMOS=y)
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100760
Jacob Panbb24c472009-09-02 07:37:17 -0700761config APB_TIMER
Alan Cox933b9462011-12-17 17:43:40 +0000762 def_bool y if X86_INTEL_MID
763 prompt "Intel MID APB Timer Support" if X86_INTEL_MID
Jamie Iles06c3df42011-06-06 12:43:07 +0100764 select DW_APB_TIMER
Alan Coxa0c38322011-12-17 21:57:25 +0000765 depends on X86_INTEL_MID && SFI
Jacob Panbb24c472009-09-02 07:37:17 -0700766 help
767 APB timer is the replacement for 8254, HPET on X86 MID platforms.
768 The APBT provides a stable time base on SMP
769 systems, unlike the TSC, but it is more expensive to access,
770 as it is off-chip. APB timers are always running regardless of CPU
771 C states, they are used as per CPU clockevent device when possible.
772
David Rientjes6a108a12011-01-20 14:44:16 -0800773# Mark as expert because too many people got it wrong.
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100774# The code disables itself when not needed.
Thomas Petazzoni7ae93922008-04-28 02:14:14 -0700775config DMI
776 default y
Ard Biesheuvelcf074402014-01-23 15:54:39 -0800777 select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
David Rientjes6a108a12011-01-20 14:44:16 -0800778 bool "Enable DMI scanning" if EXPERT
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100779 ---help---
Thomas Petazzoni7ae93922008-04-28 02:14:14 -0700780 Enabled scanning of DMI to identify machine quirks. Say Y
781 here unless you have verified that your setup is not
782 affected by entries in the DMI blacklist. Required by PNP
783 BIOS code.
784
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100785config GART_IOMMU
Andi Kleen38901f12013-10-04 14:37:56 -0700786 bool "Old AMD GART IOMMU support"
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100787 select SWIOTLB
Andreas Herrmann23ac4ae2010-09-17 18:03:43 +0200788 depends on X86_64 && PCI && AMD_NB
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100789 ---help---
Ingo Molnarced3c422013-10-06 11:45:20 +0200790 Provides a driver for older AMD Athlon64/Opteron/Turion/Sempron
791 GART based hardware IOMMUs.
792
793 The GART supports full DMA access for devices with 32-bit access
794 limitations, on systems with more than 3 GB. This is usually needed
795 for USB, sound, many IDE/SATA chipsets and some other devices.
796
797 Newer systems typically have a modern AMD IOMMU, supported via
798 the CONFIG_AMD_IOMMU=y config option.
799
800 In normal configurations this driver is only active when needed:
801 there's more than 3 GB of memory and the system contains a
802 32-bit limited device.
803
804 If unsure, say Y.
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100805
806config CALGARY_IOMMU
807 bool "IBM Calgary IOMMU support"
808 select SWIOTLB
Kees Cook6ea30382012-10-02 11:16:47 -0700809 depends on X86_64 && PCI
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100810 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100811 Support for hardware IOMMUs in IBM's xSeries x366 and x460
812 systems. Needed to run systems with more than 3GB of memory
813 properly with 32-bit PCI devices that do not support DAC
814 (Double Address Cycle). Calgary also supports bus level
815 isolation, where all DMAs pass through the IOMMU. This
816 prevents them from going anywhere except their intended
817 destination. This catches hard-to-find kernel bugs and
818 mis-behaving drivers and devices that do not use the DMA-API
819 properly to set up their DMA buffers. The IOMMU can be
820 turned off at boot time with the iommu=off parameter.
821 Normally the kernel will make the right choice by itself.
822 If unsure, say Y.
823
824config CALGARY_IOMMU_ENABLED_BY_DEFAULT
Harvey Harrison3c2362e2008-01-30 13:31:03 +0100825 def_bool y
826 prompt "Should Calgary be enabled by default?"
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100827 depends on CALGARY_IOMMU
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100828 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100829 Should Calgary be enabled by default? if you choose 'y', Calgary
830 will be used (if it exists). If you choose 'n', Calgary will not be
831 used even if it exists. If you choose 'n' and would like to use
832 Calgary anyway, pass 'iommu=calgary' on the kernel command line.
833 If unsure, say Y.
834
835# need this always selected by IOMMU for the VIA workaround
836config SWIOTLB
Joerg Roedela1afd012008-11-18 12:44:21 +0100837 def_bool y if X86_64
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100838 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100839 Support for software bounce buffers used on x86-64 systems
Joe Millenbach4454d322012-09-02 17:38:20 -0700840 which don't have a hardware IOMMU. Using this PCI devices
841 which can only access 32-bits of memory can be used on systems
842 with more than 3 GB of memory.
843 If unsure, say Y.
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100844
FUJITA Tomonoria8522502008-04-29 00:59:36 -0700845config IOMMU_HELPER
Jan Beulich3120e252012-09-10 12:41:45 +0100846 def_bool y
847 depends on CALGARY_IOMMU || GART_IOMMU || SWIOTLB || AMD_IOMMU
Linus Torvaldsd25e26b2008-08-25 14:15:38 -0700848
Mike Travis1184dc22008-05-12 21:21:12 +0200849config MAXSMP
Samuel Thibaultddb0c5a2010-08-21 21:32:41 +0200850 bool "Enable Maximum number of SMP Processors and NUMA Nodes"
Kees Cook6ea30382012-10-02 11:16:47 -0700851 depends on X86_64 && SMP && DEBUG_KERNEL
Mike Travis36f51012008-12-16 17:33:51 -0800852 select CPUMASK_OFFSTACK
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100853 ---help---
Samuel Thibaultddb0c5a2010-08-21 21:32:41 +0200854 Enable maximum number of CPUS and NUMA Nodes for this architecture.
Mike Travis1184dc22008-05-12 21:21:12 +0200855 If unsure, say N.
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100856
857config NR_CPUS
Mike Travis36f51012008-12-16 17:33:51 -0800858 int "Maximum number of CPUs" if SMP && !MAXSMP
Michael K. Johnson2a3313f2009-04-21 21:44:48 -0400859 range 2 8 if SMP && X86_32 && !X86_BIGSMP
Josh Boyerbb61ccc2013-11-05 09:37:29 -0500860 range 2 512 if SMP && !MAXSMP && !CPUMASK_OFFSTACK
Josh Boyerb53b5ed2013-11-05 09:38:16 -0500861 range 2 8192 if SMP && !MAXSMP && CPUMASK_OFFSTACK && X86_64
Mike Travis78637a972008-12-16 17:34:00 -0800862 default "1" if !SMP
Josh Boyerb53b5ed2013-11-05 09:38:16 -0500863 default "8192" if MAXSMP
H. Peter Anvinb5660ba2014-02-25 12:14:06 -0800864 default "32" if SMP && X86_BIGSMP
Kirill A. Shutemovc5c19942015-05-08 13:25:45 +0300865 default "8" if SMP && X86_32
866 default "64" if SMP
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100867 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100868 This allows you to specify the maximum number of CPUs which this
Josh Boyerbb61ccc2013-11-05 09:37:29 -0500869 kernel will support. If CPUMASK_OFFSTACK is enabled, the maximum
Kirill A. Shutemovcad14bb2015-05-08 13:25:26 +0300870 supported value is 8192, otherwise the maximum value is 512. The
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100871 minimum value which makes sense is 2.
872
873 This is purely to save memory - each supported CPU adds
874 approximately eight kilobytes to the kernel image.
875
876config SCHED_SMT
877 bool "SMT (Hyperthreading) scheduler support"
Borislav Petkovc8e56d22015-06-04 18:55:25 +0200878 depends on SMP
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100879 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100880 SMT scheduler support improves the CPU scheduler's decision making
881 when dealing with Intel Pentium 4 chips with HyperThreading at a
882 cost of slightly increased overhead in some places. If unsure say
883 N here.
884
885config SCHED_MC
Harvey Harrison3c2362e2008-01-30 13:31:03 +0100886 def_bool y
887 prompt "Multi-core scheduler support"
Borislav Petkovc8e56d22015-06-04 18:55:25 +0200888 depends on SMP
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100889 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100890 Multi-core scheduler support improves the CPU scheduler's decision
891 making when dealing with multi-core CPU chips at a cost of slightly
892 increased overhead in some places. If unsure say N here.
893
894source "kernel/Kconfig.preempt"
895
Thomas Gleixner30b8b002015-01-15 21:22:39 +0000896config UP_LATE_INIT
897 def_bool y
Thomas Gleixnerba360f8872015-01-24 10:34:46 +0100898 depends on !SMP && X86_LOCAL_APIC
Thomas Gleixner30b8b002015-01-15 21:22:39 +0000899
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100900config X86_UP_APIC
Jan Beulich50849ee2015-02-05 15:31:56 +0000901 bool "Local APIC support on uniprocessors" if !PCI_MSI
902 default PCI_MSI
Bryan O'Donoghue38a1dfd2015-01-22 22:58:49 +0000903 depends on X86_32 && !SMP && !X86_32_NON_STANDARD
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100904 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100905 A local APIC (Advanced Programmable Interrupt Controller) is an
906 integrated interrupt controller in the CPU. If you have a single-CPU
907 system which has a processor with a local APIC, you can say Y here to
908 enable and use it. If you say Y here even though your machine doesn't
909 have a local APIC, then the kernel will still run with no slowdown at
910 all. The local APIC supports CPU-generated self-interrupts (timer,
911 performance counters), and the NMI watchdog which detects hard
912 lockups.
913
914config X86_UP_IOAPIC
915 bool "IO-APIC support on uniprocessors"
916 depends on X86_UP_APIC
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100917 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100918 An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an
919 SMP-capable replacement for PC-style interrupt controllers. Most
920 SMP systems and many recent uniprocessor systems have one.
921
922 If you have a single-CPU system with an IO-APIC, you can say Y here
923 to use it. If you say Y here even though your machine doesn't have
924 an IO-APIC, then the kernel will still run with no slowdown at all.
925
926config X86_LOCAL_APIC
Harvey Harrison3c2362e2008-01-30 13:31:03 +0100927 def_bool y
Thomas Petazzoni0dbc6072013-10-03 11:59:14 +0200928 depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC || PCI_MSI
Jiang Liub5dc8e62015-04-13 14:11:24 +0800929 select IRQ_DOMAIN_HIERARCHY
Jiang Liu52f518a2015-04-13 14:11:35 +0800930 select PCI_MSI_IRQ_DOMAIN if PCI_MSI
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100931
932config X86_IO_APIC
Jan Beulichb1da1e72015-02-05 15:35:21 +0000933 def_bool y
934 depends on X86_LOCAL_APIC || X86_UP_IOAPIC
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100935
Stefan Assmann41b9eb22008-07-15 13:48:55 +0200936config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
937 bool "Reroute for broken boot IRQs"
Stefan Assmann41b9eb22008-07-15 13:48:55 +0200938 depends on X86_IO_APIC
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100939 ---help---
Stefan Assmann41b9eb22008-07-15 13:48:55 +0200940 This option enables a workaround that fixes a source of
941 spurious interrupts. This is recommended when threaded
942 interrupt handling is used on systems where the generation of
943 superfluous "boot interrupts" cannot be disabled.
944
945 Some chipsets generate a legacy INTx "boot IRQ" when the IRQ
946 entry in the chipset's IO-APIC is masked (as, e.g. the RT
947 kernel does during interrupt handling). On chipsets where this
948 boot IRQ generation cannot be disabled, this workaround keeps
949 the original IRQ line masked so that only the equivalent "boot
950 IRQ" is delivered to the CPUs. The workaround also tells the
951 kernel to set up the IRQ handler on the boot IRQ line. In this
952 way only one interrupt is delivered to the kernel. Otherwise
953 the spurious second interrupt may cause the kernel to bring
954 down (vital) interrupt lines.
955
956 Only affects "broken" chipsets. Interrupt sharing may be
957 increased on these systems.
958
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100959config X86_MCE
Andi Kleenbab9bc62009-07-09 00:31:38 +0200960 bool "Machine Check / overheating reporting"
Chen, Gong648ed942015-08-12 18:29:34 +0200961 select GENERIC_ALLOCATOR
Borislav Petkove57dbaf2011-09-13 15:23:21 +0200962 default y
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100963 ---help---
Andi Kleenbab9bc62009-07-09 00:31:38 +0200964 Machine Check support allows the processor to notify the
965 kernel if it detects a problem (e.g. overheating, data corruption).
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100966 The action the kernel takes depends on the severity of the problem,
Andi Kleenbab9bc62009-07-09 00:31:38 +0200967 ranging from warning messages to halting the machine.
Andi Kleen4efc0672009-04-28 19:07:31 +0200968
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100969config X86_MCE_INTEL
Harvey Harrison3c2362e2008-01-30 13:31:03 +0100970 def_bool y
971 prompt "Intel MCE features"
Andi Kleenc1ebf832009-07-09 00:31:41 +0200972 depends on X86_MCE && X86_LOCAL_APIC
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100973 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100974 Additional support for intel specific MCE features such as
975 the thermal monitor.
976
977config X86_MCE_AMD
Harvey Harrison3c2362e2008-01-30 13:31:03 +0100978 def_bool y
979 prompt "AMD MCE features"
Andi Kleenc1ebf832009-07-09 00:31:41 +0200980 depends on X86_MCE && X86_LOCAL_APIC
Ingo Molnar8f9ca472009-02-05 16:21:53 +0100981 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +0100982 Additional support for AMD specific MCE features such as
983 the DRAM Error Threshold.
984
Andi Kleen4efc0672009-04-28 19:07:31 +0200985config X86_ANCIENT_MCE
Jan Beulich6fc108a2010-04-21 15:23:44 +0100986 bool "Support for old Pentium 5 / WinChip machine checks"
Andi Kleenc31d9632009-07-09 00:31:37 +0200987 depends on X86_32 && X86_MCE
Hidetoshi Setocd13adcc2009-05-27 16:57:31 +0900988 ---help---
989 Include support for machine check handling on old Pentium 5 or WinChip
Masanari Iida5065a702013-11-30 21:38:43 +0900990 systems. These typically need to be enabled explicitly on the command
Hidetoshi Setocd13adcc2009-05-27 16:57:31 +0900991 line.
Andi Kleen4efc0672009-04-28 19:07:31 +0200992
Andi Kleenb2762682009-02-12 13:49:31 +0100993config X86_MCE_THRESHOLD
994 depends on X86_MCE_AMD || X86_MCE_INTEL
Jan Beulich6fc108a2010-04-21 15:23:44 +0100995 def_bool y
Andi Kleenb2762682009-02-12 13:49:31 +0100996
Andi Kleenea149b32009-04-29 19:31:00 +0200997config X86_MCE_INJECT
Andi Kleenc1ebf832009-07-09 00:31:41 +0200998 depends on X86_MCE
Andi Kleenea149b32009-04-29 19:31:00 +0200999 tristate "Machine check injector support"
1000 ---help---
1001 Provide support for injecting machine checks for testing purposes.
1002 If you don't know what a machine check is and you don't do kernel
1003 QA it is safe to say n.
1004
Andi Kleen4efc0672009-04-28 19:07:31 +02001005config X86_THERMAL_VECTOR
1006 def_bool y
Andi Kleen5bb38ad2009-07-09 00:31:39 +02001007 depends on X86_MCE_INTEL
Andi Kleen4efc0672009-04-28 19:07:31 +02001008
Andy Lutomirski5aef51c2015-07-10 08:34:23 -07001009config X86_LEGACY_VM86
Ingo Molnar1e642812015-09-05 08:58:10 +02001010 bool "Legacy VM86 support"
Andy Lutomirski5aef51c2015-07-10 08:34:23 -07001011 default n
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001012 depends on X86_32
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001013 ---help---
Andy Lutomirski5aef51c2015-07-10 08:34:23 -07001014 This option allows user programs to put the CPU into V8086
1015 mode, which is an 80286-era approximation of 16-bit real mode.
1016
1017 Some very old versions of X and/or vbetool require this option
1018 for user mode setting. Similarly, DOSEMU will use it if
1019 available to accelerate real mode DOS programs. However, any
1020 recent version of DOSEMU, X, or vbetool should be fully
1021 functional even without kernel VM86 support, as they will all
Ingo Molnar1e642812015-09-05 08:58:10 +02001022 fall back to software emulation. Nevertheless, if you are using
1023 a 16-bit DOS program where 16-bit performance matters, vm86
1024 mode might be faster than emulation and you might want to
1025 enable this option.
Andy Lutomirski5aef51c2015-07-10 08:34:23 -07001026
Ingo Molnar1e642812015-09-05 08:58:10 +02001027 Note that any app that works on a 64-bit kernel is unlikely to
1028 need this option, as 64-bit kernels don't, and can't, support
1029 V8086 mode. This option is also unrelated to 16-bit protected
1030 mode and is not needed to run most 16-bit programs under Wine.
Andy Lutomirski5aef51c2015-07-10 08:34:23 -07001031
Ingo Molnar1e642812015-09-05 08:58:10 +02001032 Enabling this option increases the complexity of the kernel
1033 and slows down exception handling a tiny bit.
Andy Lutomirski5aef51c2015-07-10 08:34:23 -07001034
Ingo Molnar1e642812015-09-05 08:58:10 +02001035 If unsure, say N here.
Andy Lutomirski5aef51c2015-07-10 08:34:23 -07001036
1037config VM86
1038 bool
1039 default X86_LEGACY_VM86
H. Peter Anvin34273f42014-05-04 10:36:22 -07001040
1041config X86_16BIT
1042 bool "Enable support for 16-bit segments" if EXPERT
1043 default y
Andy Lutomirskia5b9e5a2015-07-30 14:31:34 -07001044 depends on MODIFY_LDT_SYSCALL
H. Peter Anvin34273f42014-05-04 10:36:22 -07001045 ---help---
1046 This option is required by programs like Wine to run 16-bit
1047 protected mode legacy code on x86 processors. Disabling
1048 this option saves about 300 bytes on i386, or around 6K text
1049 plus 16K runtime memory on x86-64,
1050
1051config X86_ESPFIX32
1052 def_bool y
1053 depends on X86_16BIT && X86_32
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001054
H. Peter Anvin197725d2014-05-04 10:00:49 -07001055config X86_ESPFIX64
1056 def_bool y
H. Peter Anvin34273f42014-05-04 10:36:22 -07001057 depends on X86_16BIT && X86_64
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001058
Andy Lutomirski1ad83c82014-10-29 14:33:47 -07001059config X86_VSYSCALL_EMULATION
1060 bool "Enable vsyscall emulation" if EXPERT
1061 default y
1062 depends on X86_64
1063 ---help---
1064 This enables emulation of the legacy vsyscall page. Disabling
1065 it is roughly equivalent to booting with vsyscall=none, except
1066 that it will also disable the helpful warning if a program
1067 tries to use a vsyscall. With this option set to N, offending
1068 programs will just segfault, citing addresses of the form
1069 0xffffffffff600?00.
1070
1071 This option is required by many programs built before 2013, and
1072 care should be used even with newer programs if set to N.
1073
1074 Disabling this option saves about 7K of kernel size and
1075 possibly 4K of additional runtime pagetable memory.
1076
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001077config TOSHIBA
1078 tristate "Toshiba Laptop support"
1079 depends on X86_32
1080 ---help---
1081 This adds a driver to safely access the System Management Mode of
1082 the CPU on Toshiba portables with a genuine Toshiba BIOS. It does
1083 not work on models with a Phoenix BIOS. The System Management Mode
1084 is used to set the BIOS and power saving options on Toshiba portables.
1085
1086 For information on utilities to make use of this driver see the
1087 Toshiba Linux utilities web site at:
1088 <http://www.buzzard.org.uk/toshiba/>.
1089
1090 Say Y if you intend to run this kernel on a Toshiba portable.
1091 Say N otherwise.
1092
1093config I8K
Pali Rohár039ae582015-05-14 13:16:37 +02001094 tristate "Dell i8k legacy laptop support"
Jean Delvare949a9d72011-05-25 20:43:33 +02001095 select HWMON
Pali Rohár039ae582015-05-14 13:16:37 +02001096 select SENSORS_DELL_SMM
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001097 ---help---
Pali Rohár039ae582015-05-14 13:16:37 +02001098 This option enables legacy /proc/i8k userspace interface in hwmon
1099 dell-smm-hwmon driver. Character file /proc/i8k reports bios version,
1100 temperature and allows controlling fan speeds of Dell laptops via
1101 System Management Mode. For old Dell laptops (like Dell Inspiron 8000)
1102 it reports also power and hotkey status. For fan speed control is
1103 needed userspace package i8kutils.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001104
Pali Rohár039ae582015-05-14 13:16:37 +02001105 Say Y if you intend to run this kernel on old Dell laptops or want to
1106 use userspace package i8kutils.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001107 Say N otherwise.
1108
1109config X86_REBOOTFIXUPS
Jan Beulich9ba16082008-10-15 22:01:38 -07001110 bool "Enable X86 board specific fixups for reboot"
1111 depends on X86_32
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001112 ---help---
1113 This enables chipset and/or board specific fixups to be done
1114 in order to get reboot to work correctly. This is only needed on
1115 some combinations of hardware and BIOS. The symptom, for which
1116 this config is intended, is when reboot ends with a stalled/hung
1117 system.
1118
1119 Currently, the only fixup is for the Geode machines using
Florian Fainelli5e3a77e2008-01-30 13:33:36 +01001120 CS5530A and CS5536 chipsets and the RDC R-321x SoC.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001121
1122 Say Y if you want to enable the fixup. Currently, it's safe to
1123 enable this option even if you don't need it.
1124 Say N otherwise.
1125
1126config MICROCODE
Borislav Petkov9a2bc332015-10-20 11:54:44 +02001127 bool "CPU microcode loading support"
1128 default y
Borislav Petkov80030e32013-10-13 18:36:29 +02001129 depends on CPU_SUP_AMD || CPU_SUP_INTEL
Borislav Petkovfe055892015-10-20 11:54:45 +02001130 depends on BLK_DEV_INITRD
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001131 select FW_LOADER
1132 ---help---
Borislav Petkove43f6e62012-08-01 19:17:01 +02001133
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001134 If you say Y here, you will be able to update the microcode on
Peter Oruba80cc9f12008-07-28 18:44:22 +02001135 certain Intel and AMD processors. The Intel support is for the
Borislav Petkove43f6e62012-08-01 19:17:01 +02001136 IA32 family, e.g. Pentium Pro, Pentium II, Pentium III, Pentium 4,
1137 Xeon etc. The AMD support is for families 0x10 and later. You will
1138 obviously need the actual microcode binary data itself which is not
1139 shipped with the Linux kernel.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001140
Peter Oruba8d86f392008-07-28 18:44:21 +02001141 This option selects the general module only, you need to select
1142 at least one vendor specific module as well.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001143
Borislav Petkove43f6e62012-08-01 19:17:01 +02001144 To compile this driver as a module, choose M here: the module
1145 will be called microcode.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001146
Peter Oruba8d86f392008-07-28 18:44:21 +02001147config MICROCODE_INTEL
Borislav Petkove43f6e62012-08-01 19:17:01 +02001148 bool "Intel microcode loading support"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001149 depends on MICROCODE
1150 default MICROCODE
1151 select FW_LOADER
1152 ---help---
1153 This options enables microcode patch loading support for Intel
1154 processors.
Peter Oruba8d86f392008-07-28 18:44:21 +02001155
Alanb8989db2014-01-20 18:01:56 +00001156 For the current Intel microcode data package go to
1157 <https://downloadcenter.intel.com> and search for
1158 'Linux Processor Microcode Data File'.
Peter Oruba8d86f392008-07-28 18:44:21 +02001159
Peter Oruba80cc9f12008-07-28 18:44:22 +02001160config MICROCODE_AMD
Borislav Petkove43f6e62012-08-01 19:17:01 +02001161 bool "AMD microcode loading support"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001162 depends on MICROCODE
1163 select FW_LOADER
1164 ---help---
1165 If you select this option, microcode patch loading support for AMD
1166 processors will be enabled.
Peter Oruba80cc9f12008-07-28 18:44:22 +02001167
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001168config MICROCODE_OLD_INTERFACE
Harvey Harrison3c2362e2008-01-30 13:31:03 +01001169 def_bool y
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001170 depends on MICROCODE
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001171
1172config X86_MSR
1173 tristate "/dev/cpu/*/msr - Model-specific register support"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001174 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001175 This device gives privileged processes access to the x86
1176 Model-Specific Registers (MSRs). It is a character device with
1177 major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
1178 MSR accesses are directed to a specific CPU on multi-processor
1179 systems.
1180
1181config X86_CPUID
1182 tristate "/dev/cpu/*/cpuid - CPU information support"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001183 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001184 This device gives processes access to the x86 CPUID instruction to
1185 be executed on a specific processor. It is a character device
1186 with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
1187 /dev/cpu/31/cpuid.
1188
1189choice
1190 prompt "High Memory Support"
Jan Beulich6fc108a2010-04-21 15:23:44 +01001191 default HIGHMEM4G
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001192 depends on X86_32
1193
1194config NOHIGHMEM
1195 bool "off"
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001196 ---help---
1197 Linux can use up to 64 Gigabytes of physical memory on x86 systems.
1198 However, the address space of 32-bit x86 processors is only 4
1199 Gigabytes large. That means that, if you have a large amount of
1200 physical memory, not all of it can be "permanently mapped" by the
1201 kernel. The physical memory that's not permanently mapped is called
1202 "high memory".
1203
1204 If you are compiling a kernel which will never run on a machine with
1205 more than 1 Gigabyte total physical RAM, answer "off" here (default
1206 choice and suitable for most users). This will result in a "3GB/1GB"
1207 split: 3GB are mapped so that each process sees a 3GB virtual memory
1208 space and the remaining part of the 4GB virtual memory space is used
1209 by the kernel to permanently map as much physical memory as
1210 possible.
1211
1212 If the machine has between 1 and 4 Gigabytes physical RAM, then
1213 answer "4GB" here.
1214
1215 If more than 4 Gigabytes is used then answer "64GB" here. This
1216 selection turns Intel PAE (Physical Address Extension) mode on.
1217 PAE implements 3-level paging on IA32 processors. PAE is fully
1218 supported by Linux, PAE mode is implemented on all recent Intel
1219 processors (Pentium Pro and better). NOTE: If you say "64GB" here,
1220 then the kernel will not boot on CPUs that don't support PAE!
1221
1222 The actual amount of total physical memory will either be
1223 auto detected or can be forced by using a kernel command line option
1224 such as "mem=256M". (Try "man bootparam" or see the documentation of
1225 your boot loader (lilo or loadlin) about how to pass options to the
1226 kernel at boot time.)
1227
1228 If unsure, say "off".
1229
1230config HIGHMEM4G
1231 bool "4GB"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001232 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001233 Select this if you have a 32-bit processor and between 1 and 4
1234 gigabytes of physical RAM.
1235
1236config HIGHMEM64G
1237 bool "64GB"
H. Peter Anvineb068e72012-11-28 11:50:23 -08001238 depends on !M486
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001239 select X86_PAE
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001240 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001241 Select this if you have a 32-bit processor and more than 4
1242 gigabytes of physical RAM.
1243
1244endchoice
1245
1246choice
David Rientjes6a108a12011-01-20 14:44:16 -08001247 prompt "Memory split" if EXPERT
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001248 default VMSPLIT_3G
1249 depends on X86_32
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001250 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001251 Select the desired split between kernel and user memory.
1252
1253 If the address range available to the kernel is less than the
1254 physical memory installed, the remaining memory will be available
1255 as "high memory". Accessing high memory is a little more costly
1256 than low memory, as it needs to be mapped into the kernel first.
1257 Note that increasing the kernel address space limits the range
1258 available to user programs, making the address space there
1259 tighter. Selecting anything other than the default 3G/1G split
1260 will also likely make your kernel incompatible with binary-only
1261 kernel modules.
1262
1263 If you are not absolutely sure what you are doing, leave this
1264 option alone!
1265
1266 config VMSPLIT_3G
1267 bool "3G/1G user/kernel split"
1268 config VMSPLIT_3G_OPT
1269 depends on !X86_PAE
1270 bool "3G/1G user/kernel split (for full 1G low memory)"
1271 config VMSPLIT_2G
1272 bool "2G/2G user/kernel split"
1273 config VMSPLIT_2G_OPT
1274 depends on !X86_PAE
1275 bool "2G/2G user/kernel split (for full 2G low memory)"
1276 config VMSPLIT_1G
1277 bool "1G/3G user/kernel split"
1278endchoice
1279
1280config PAGE_OFFSET
1281 hex
1282 default 0xB0000000 if VMSPLIT_3G_OPT
1283 default 0x80000000 if VMSPLIT_2G
1284 default 0x78000000 if VMSPLIT_2G_OPT
1285 default 0x40000000 if VMSPLIT_1G
1286 default 0xC0000000
1287 depends on X86_32
1288
1289config HIGHMEM
Harvey Harrison3c2362e2008-01-30 13:31:03 +01001290 def_bool y
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001291 depends on X86_32 && (HIGHMEM64G || HIGHMEM4G)
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001292
1293config X86_PAE
Jan Beulich9ba16082008-10-15 22:01:38 -07001294 bool "PAE (Physical Address Extension) Support"
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001295 depends on X86_32 && !HIGHMEM4G
Christian Melki9d99c712015-10-05 17:31:33 +02001296 select SWIOTLB
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001297 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001298 PAE is required for NX support, and furthermore enables
1299 larger swapspace support for non-overcommit purposes. It
1300 has the cost of more pagetable lookup overhead, and also
1301 consumes more pagetable space per process.
1302
Jeremy Fitzhardinge600715d2008-09-11 01:31:45 -07001303config ARCH_PHYS_ADDR_T_64BIT
Jan Beulich3120e252012-09-10 12:41:45 +01001304 def_bool y
1305 depends on X86_64 || X86_PAE
Jeremy Fitzhardinge600715d2008-09-11 01:31:45 -07001306
FUJITA Tomonori66f2b062010-10-20 15:55:35 -07001307config ARCH_DMA_ADDR_T_64BIT
Jan Beulich3120e252012-09-10 12:41:45 +01001308 def_bool y
1309 depends on X86_64 || HIGHMEM64G
FUJITA Tomonori66f2b062010-10-20 15:55:35 -07001310
Ingo Molnar10971ab2015-03-05 08:18:23 +01001311config X86_DIRECT_GBPAGES
Luis R. Rodrigueze5008ab2015-03-04 17:24:12 -08001312 def_bool y
1313 depends on X86_64 && !DEBUG_PAGEALLOC && !KMEMCHECK
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001314 ---help---
Ingo Molnar10971ab2015-03-05 08:18:23 +01001315 Certain kernel features effectively disable kernel
1316 linear 1 GB mappings (even if the CPU otherwise
1317 supports them), so don't confuse the user by printing
1318 that we have them enabled.
Nick Piggin9e899812008-10-22 12:33:16 +02001319
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001320# Common NUMA Features
1321config NUMA
KOSAKI Motohirofd51b2d2008-11-05 02:27:19 +09001322 bool "Numa Memory Allocation and Scheduler Support"
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001323 depends on SMP
H. Peter Anvinb5660ba2014-02-25 12:14:06 -08001324 depends on X86_64 || (X86_32 && HIGHMEM64G && X86_BIGSMP)
1325 default y if X86_BIGSMP
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001326 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001327 Enable NUMA (Non Uniform Memory Access) support.
KOSAKI Motohirofd51b2d2008-11-05 02:27:19 +09001328
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001329 The kernel will try to allocate memory used by a CPU on the
1330 local memory controller of the CPU and add some more
1331 NUMA awareness to the kernel.
1332
Ingo Molnarc280ea52008-11-08 13:29:45 +01001333 For 64-bit this is recommended if the system is Intel Core i7
KOSAKI Motohirofd51b2d2008-11-05 02:27:19 +09001334 (or later), AMD Opteron, or EM64T NUMA.
1335
H. Peter Anvinb5660ba2014-02-25 12:14:06 -08001336 For 32-bit this is only needed if you boot a 32-bit
David Rientjes7cf6c942014-02-11 18:11:13 -08001337 kernel on a 64-bit NUMA platform.
KOSAKI Motohirofd51b2d2008-11-05 02:27:19 +09001338
1339 Otherwise, you should say N.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001340
Hans Rosenfeldeec1d4f2010-10-29 17:14:30 +02001341config AMD_NUMA
Harvey Harrison3c2362e2008-01-30 13:31:03 +01001342 def_bool y
1343 prompt "Old style AMD Opteron NUMA detection"
Tejun Heo5da0ef92011-07-11 10:34:32 +02001344 depends on X86_64 && NUMA && PCI
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001345 ---help---
Hans Rosenfeldeec1d4f2010-10-29 17:14:30 +02001346 Enable AMD NUMA node topology detection. You should say Y here if
1347 you have a multi processor AMD system. This uses an old method to
1348 read the NUMA configuration directly from the builtin Northbridge
1349 of Opteron. It is recommended to use X86_64_ACPI_NUMA instead,
1350 which also takes priority if both are compiled in.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001351
1352config X86_64_ACPI_NUMA
Harvey Harrison3c2362e2008-01-30 13:31:03 +01001353 def_bool y
1354 prompt "ACPI NUMA detection"
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001355 depends on X86_64 && NUMA && ACPI && PCI
1356 select ACPI_NUMA
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001357 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001358 Enable ACPI SRAT based node topology detection.
1359
Suresh Siddha6ec6e0d2008-03-25 10:14:35 -07001360# Some NUMA nodes have memory ranges that span
1361# other nodes. Even though a pfn is valid and
1362# between a node's start and end pfns, it may not
1363# reside on that node. See memmap_init_zone()
1364# for details.
1365config NODES_SPAN_OTHER_NODES
1366 def_bool y
1367 depends on X86_64_ACPI_NUMA
1368
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001369config NUMA_EMU
1370 bool "NUMA emulation"
Tejun Heo1b7e03e2011-05-02 17:24:48 +02001371 depends on NUMA
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001372 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001373 Enable NUMA emulation. A flat machine will be split
1374 into virtual nodes when booted with "numa=fake=N", where N is the
1375 number of nodes. This is only useful for debugging.
1376
1377config NODES_SHIFT
Linus Torvaldsd25e26b2008-08-25 14:15:38 -07001378 int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP
David Rientjes51591e32010-03-25 15:39:27 -07001379 range 1 10
1380 default "10" if MAXSMP
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001381 default "6" if X86_64
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001382 default "3"
1383 depends on NEED_MULTIPLE_NODES
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001384 ---help---
Mike Travis1184dc22008-05-12 21:21:12 +02001385 Specify the maximum number of NUMA Nodes available on the target
Matt LaPlante692105b2009-01-26 11:12:25 +01001386 system. Increases memory reserved to accommodate various tables.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001387
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001388config ARCH_HAVE_MEMORY_PRESENT
Harvey Harrison3c2362e2008-01-30 13:31:03 +01001389 def_bool y
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001390 depends on X86_32 && DISCONTIGMEM
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001391
1392config NEED_NODE_MEMMAP_SIZE
Harvey Harrison3c2362e2008-01-30 13:31:03 +01001393 def_bool y
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001394 depends on X86_32 && (DISCONTIGMEM || SPARSEMEM)
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001395
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001396config ARCH_FLATMEM_ENABLE
1397 def_bool y
Tejun Heo3b166512011-04-01 11:15:12 +02001398 depends on X86_32 && !NUMA
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001399
1400config ARCH_DISCONTIGMEM_ENABLE
1401 def_bool y
Christoph Lameterb2632952008-01-30 13:30:47 +01001402 depends on NUMA && X86_32
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001403
1404config ARCH_DISCONTIGMEM_DEFAULT
1405 def_bool y
Christoph Lameterb2632952008-01-30 13:30:47 +01001406 depends on NUMA && X86_32
1407
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001408config ARCH_SPARSEMEM_ENABLE
1409 def_bool y
Kees Cook6ea30382012-10-02 11:16:47 -07001410 depends on X86_64 || NUMA || X86_32 || X86_32_NON_STANDARD
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001411 select SPARSEMEM_STATIC if X86_32
1412 select SPARSEMEM_VMEMMAP_ENABLE if X86_64
1413
Tejun Heo3b166512011-04-01 11:15:12 +02001414config ARCH_SPARSEMEM_DEFAULT
1415 def_bool y
1416 depends on X86_64
1417
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001418config ARCH_SELECT_MEMORY_MODEL
1419 def_bool y
Christoph Lameterb2632952008-01-30 13:30:47 +01001420 depends on ARCH_SPARSEMEM_ENABLE
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001421
1422config ARCH_MEMORY_PROBE
Toshi Kania0842b72013-07-19 11:47:48 -06001423 bool "Enable sysfs memory/probe interface"
Jan Beulich3120e252012-09-10 12:41:45 +01001424 depends on X86_64 && MEMORY_HOTPLUG
Toshi Kania0842b72013-07-19 11:47:48 -06001425 help
1426 This option enables a sysfs memory/probe interface for testing.
1427 See Documentation/memory-hotplug.txt for more information.
1428 If you are unsure how to answer this question, answer N.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001429
Tejun Heo3b166512011-04-01 11:15:12 +02001430config ARCH_PROC_KCORE_TEXT
1431 def_bool y
1432 depends on X86_64 && PROC_KCORE
1433
Avi Kivitya29815a2010-01-10 16:28:09 +02001434config ILLEGAL_POINTER_VALUE
1435 hex
1436 default 0 if X86_32
1437 default 0xdead000000000000 if X86_64
1438
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001439source "mm/Kconfig"
1440
Dan Williams7a678322015-08-19 00:34:34 -04001441config X86_PMEM_LEGACY_DEVICE
1442 bool
1443
Christoph Hellwigec776ef2015-04-01 09:12:18 +02001444config X86_PMEM_LEGACY
Dan Williams7a678322015-08-19 00:34:34 -04001445 tristate "Support non-standard NVDIMMs and ADR protected memory"
Dan Williams9f53f9f2015-06-09 15:33:45 -04001446 depends on PHYS_ADDR_T_64BIT
1447 depends on BLK_DEV
Dan Williams7a678322015-08-19 00:34:34 -04001448 select X86_PMEM_LEGACY_DEVICE
Dan Williams9f53f9f2015-06-09 15:33:45 -04001449 select LIBNVDIMM
Christoph Hellwigec776ef2015-04-01 09:12:18 +02001450 help
1451 Treat memory marked using the non-standard e820 type of 12 as used
1452 by the Intel Sandy Bridge-EP reference BIOS as protected memory.
1453 The kernel will offer these regions to the 'pmem' driver so
1454 they can be used for persistent storage.
1455
1456 Say Y if unsure.
1457
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001458config HIGHPTE
1459 bool "Allocate 3rd-level pagetables from highmem"
Jan Beulich6fc108a2010-04-21 15:23:44 +01001460 depends on HIGHMEM
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001461 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001462 The VM uses one page table entry for each page of physical memory.
1463 For systems with a lot of RAM, this can be wasteful of precious
1464 low memory. Setting this option will put user-space page table
1465 entries in high memory.
1466
Jeremy Fitzhardinge9f077872008-09-07 01:51:34 -07001467config X86_CHECK_BIOS_CORRUPTION
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001468 bool "Check for low memory corruption"
1469 ---help---
1470 Periodically check for memory corruption in low memory, which
1471 is suspected to be caused by BIOS. Even when enabled in the
1472 configuration, it is disabled at runtime. Enable it by
1473 setting "memory_corruption_check=1" on the kernel command
1474 line. By default it scans the low 64k of memory every 60
1475 seconds; see the memory_corruption_check_size and
1476 memory_corruption_check_period parameters in
1477 Documentation/kernel-parameters.txt to adjust this.
Jeremy Fitzhardinge9f077872008-09-07 01:51:34 -07001478
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001479 When enabled with the default parameters, this option has
1480 almost no overhead, as it reserves a relatively small amount
1481 of memory and scans it infrequently. It both detects corruption
1482 and prevents it from affecting the running system.
Jeremy Fitzhardinge9f077872008-09-07 01:51:34 -07001483
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001484 It is, however, intended as a diagnostic tool; if repeatable
1485 BIOS-originated corruption always affects the same memory,
1486 you can use memmap= to prevent the kernel from using that
1487 memory.
Jeremy Fitzhardinge9f077872008-09-07 01:51:34 -07001488
Jeremy Fitzhardingec885df52008-09-07 02:37:32 -07001489config X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001490 bool "Set the default setting of memory_corruption_check"
Jeremy Fitzhardingec885df52008-09-07 02:37:32 -07001491 depends on X86_CHECK_BIOS_CORRUPTION
1492 default y
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001493 ---help---
1494 Set whether the default state of memory_corruption_check is
1495 on or off.
Jeremy Fitzhardingec885df52008-09-07 02:37:32 -07001496
H. Peter Anvin9ea77bd2010-08-25 16:38:20 -07001497config X86_RESERVE_LOW
H. Peter Anvind0cd7422010-08-24 17:32:04 -07001498 int "Amount of low memory, in kilobytes, to reserve for the BIOS"
1499 default 64
1500 range 4 640
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001501 ---help---
H. Peter Anvind0cd7422010-08-24 17:32:04 -07001502 Specify the amount of low memory to reserve for the BIOS.
Ingo Molnarfc381512008-09-16 10:07:34 +02001503
H. Peter Anvind0cd7422010-08-24 17:32:04 -07001504 The first page contains BIOS data structures that the kernel
1505 must not use, so that page must always be reserved.
Ingo Molnarfc381512008-09-16 10:07:34 +02001506
H. Peter Anvind0cd7422010-08-24 17:32:04 -07001507 By default we reserve the first 64K of physical RAM, as a
1508 number of BIOSes are known to corrupt that memory range
1509 during events such as suspend/resume or monitor cable
1510 insertion, so it must not be used by the kernel.
Ingo Molnarfc381512008-09-16 10:07:34 +02001511
H. Peter Anvind0cd7422010-08-24 17:32:04 -07001512 You can set this to 4 if you are absolutely sure that you
1513 trust the BIOS to get all its memory reservations and usages
1514 right. If you know your BIOS have problems beyond the
1515 default 64K area, you can set this to 640 to avoid using the
1516 entire low memory range.
1517
1518 If you have doubts about the BIOS (e.g. suspend/resume does
1519 not work or there's kernel crashes after certain hardware
1520 hotplug events) then you might want to enable
1521 X86_CHECK_BIOS_CORRUPTION=y to allow the kernel to check
1522 typical corruption patterns.
1523
1524 Leave this to the default value of 64 if you are unsure.
Ingo Molnarfc381512008-09-16 10:07:34 +02001525
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001526config MATH_EMULATION
1527 bool
Andy Lutomirskia5b9e5a2015-07-30 14:31:34 -07001528 depends on MODIFY_LDT_SYSCALL
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001529 prompt "Math emulation" if X86_32
1530 ---help---
1531 Linux can emulate a math coprocessor (used for floating point
1532 operations) if you don't have one. 486DX and Pentium processors have
1533 a math coprocessor built in, 486SX and 386 do not, unless you added
1534 a 487DX or 387, respectively. (The messages during boot time can
1535 give you some hints here ["man dmesg"].) Everyone needs either a
1536 coprocessor or this emulation.
1537
1538 If you don't have a math coprocessor, you need to say Y here; if you
1539 say Y here even though you have a coprocessor, the coprocessor will
1540 be used nevertheless. (This behavior can be changed with the kernel
1541 command line option "no387", which comes handy if your coprocessor
1542 is broken. Try "man bootparam" or see the documentation of your boot
1543 loader (lilo or loadlin) about how to pass options to the kernel at
1544 boot time.) This means that it is a good idea to say Y here if you
1545 intend to use this kernel on different machines.
1546
1547 More information about the internals of the Linux math coprocessor
1548 emulation can be found in <file:arch/x86/math-emu/README>.
1549
1550 If you are not sure, say Y; apart from resulting in a 66 KB bigger
1551 kernel, it won't hurt.
1552
1553config MTRR
Jan Beulich6fc108a2010-04-21 15:23:44 +01001554 def_bool y
David Rientjes6a108a12011-01-20 14:44:16 -08001555 prompt "MTRR (Memory Type Range Register) support" if EXPERT
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001556 ---help---
1557 On Intel P6 family processors (Pentium Pro, Pentium II and later)
1558 the Memory Type Range Registers (MTRRs) may be used to control
1559 processor access to memory ranges. This is most useful if you have
1560 a video (VGA) card on a PCI or AGP bus. Enabling write-combining
1561 allows bus write transfers to be combined into a larger transfer
1562 before bursting over the PCI/AGP bus. This can increase performance
1563 of image write operations 2.5 times or more. Saying Y here creates a
1564 /proc/mtrr file which may be used to manipulate your processor's
1565 MTRRs. Typically the X server should use this.
1566
1567 This code has a reasonably generic interface so that similar
1568 control registers on other processors can be easily supported
1569 as well:
1570
1571 The Cyrix 6x86, 6x86MX and M II processors have Address Range
1572 Registers (ARRs) which provide a similar functionality to MTRRs. For
1573 these, the ARRs are used to emulate the MTRRs.
1574 The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
1575 MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing
1576 write-combining. All of these processors are supported by this code
1577 and it makes sense to say Y here if you have one of them.
1578
1579 Saying Y here also fixes a problem with buggy SMP BIOSes which only
1580 set the MTRRs for the boot CPU and not for the secondary CPUs. This
1581 can lead to all sorts of problems, so it's good to say Y here.
1582
1583 You can safely say Y even if your machine doesn't have MTRRs, you'll
1584 just add about 9 KB to your kernel.
1585
Randy Dunlap7225e752008-07-26 17:54:22 -07001586 See <file:Documentation/x86/mtrr.txt> for more information.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001587
Yinghai Lu95ffa242008-04-29 03:52:33 -07001588config MTRR_SANITIZER
Yinghai Lu2ffb3502008-09-30 16:29:40 -07001589 def_bool y
Yinghai Lu95ffa242008-04-29 03:52:33 -07001590 prompt "MTRR cleanup support"
1591 depends on MTRR
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001592 ---help---
Thomas Gleixneraba37282008-07-15 14:48:48 +02001593 Convert MTRR layout from continuous to discrete, so X drivers can
1594 add writeback entries.
Yinghai Lu95ffa242008-04-29 03:52:33 -07001595
Thomas Gleixneraba37282008-07-15 14:48:48 +02001596 Can be disabled with disable_mtrr_cleanup on the kernel command line.
Matt LaPlante692105b2009-01-26 11:12:25 +01001597 The largest mtrr entry size for a continuous block can be set with
Thomas Gleixneraba37282008-07-15 14:48:48 +02001598 mtrr_chunk_size.
Yinghai Lu95ffa242008-04-29 03:52:33 -07001599
Yinghai Lu2ffb3502008-09-30 16:29:40 -07001600 If unsure, say Y.
Yinghai Lu95ffa242008-04-29 03:52:33 -07001601
1602config MTRR_SANITIZER_ENABLE_DEFAULT
Yinghai Luf5098d62008-04-29 20:25:58 -07001603 int "MTRR cleanup enable value (0-1)"
1604 range 0 1
1605 default "0"
Yinghai Lu95ffa242008-04-29 03:52:33 -07001606 depends on MTRR_SANITIZER
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001607 ---help---
Yinghai Luf5098d62008-04-29 20:25:58 -07001608 Enable mtrr cleanup default value
Yinghai Lu95ffa242008-04-29 03:52:33 -07001609
Yinghai Lu12031a62008-05-02 02:40:22 -07001610config MTRR_SANITIZER_SPARE_REG_NR_DEFAULT
1611 int "MTRR cleanup spare reg num (0-7)"
1612 range 0 7
1613 default "1"
1614 depends on MTRR_SANITIZER
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001615 ---help---
Yinghai Lu12031a62008-05-02 02:40:22 -07001616 mtrr cleanup spare entries default, it can be changed via
Thomas Gleixneraba37282008-07-15 14:48:48 +02001617 mtrr_spare_reg_nr=N on the kernel command line.
Yinghai Lu12031a62008-05-02 02:40:22 -07001618
venkatesh.pallipadi@intel.com2e5d9c82008-03-18 17:00:14 -07001619config X86_PAT
Jan Beulich6fc108a2010-04-21 15:23:44 +01001620 def_bool y
David Rientjes6a108a12011-01-20 14:44:16 -08001621 prompt "x86 PAT support" if EXPERT
Ingo Molnar2a8a2712008-04-26 10:26:52 +02001622 depends on MTRR
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001623 ---help---
venkatesh.pallipadi@intel.com2e5d9c82008-03-18 17:00:14 -07001624 Use PAT attributes to setup page level cache control.
Venki Pallipadi042b78e2008-03-24 14:22:35 -07001625
venkatesh.pallipadi@intel.com2e5d9c82008-03-18 17:00:14 -07001626 PATs are the modern equivalents of MTRRs and are much more
1627 flexible than MTRRs.
1628
1629 Say N here if you see bootup problems (boot crash, boot hang,
Venki Pallipadi042b78e2008-03-24 14:22:35 -07001630 spontaneous reboots) or a non-working video driver.
venkatesh.pallipadi@intel.com2e5d9c82008-03-18 17:00:14 -07001631
1632 If unsure, say Y.
1633
Venkatesh Pallipadi46cf98c2009-07-10 09:57:37 -07001634config ARCH_USES_PG_UNCACHED
1635 def_bool y
1636 depends on X86_PAT
1637
H. Peter Anvin628c6242011-07-31 13:59:29 -07001638config ARCH_RANDOM
1639 def_bool y
1640 prompt "x86 architectural random number generator" if EXPERT
1641 ---help---
1642 Enable the x86 architectural RDRAND instruction
1643 (Intel Bull Mountain technology) to generate random numbers.
1644 If supported, this is a high bandwidth, cryptographically
1645 secure hardware random number generator.
1646
H. Peter Anvin51ae4a22012-09-21 12:43:10 -07001647config X86_SMAP
1648 def_bool y
1649 prompt "Supervisor Mode Access Prevention" if EXPERT
1650 ---help---
1651 Supervisor Mode Access Prevention (SMAP) is a security
1652 feature in newer Intel processors. There is a small
1653 performance cost if this enabled and turned on; there is
1654 also a small increase in the kernel size if this is enabled.
1655
1656 If unsure, say Y.
1657
Dave Hansen72e9b5f2014-12-12 10:38:36 -08001658config X86_INTEL_MPX
1659 prompt "Intel MPX (Memory Protection Extensions)"
1660 def_bool n
1661 depends on CPU_SUP_INTEL
1662 ---help---
1663 MPX provides hardware features that can be used in
1664 conjunction with compiler-instrumented code to check
1665 memory references. It is designed to detect buffer
1666 overflow or underflow bugs.
1667
1668 This option enables running applications which are
1669 instrumented or otherwise use MPX. It does not use MPX
1670 itself inside the kernel or to protect the kernel
1671 against bad memory references.
1672
1673 Enabling this option will make the kernel larger:
1674 ~8k of kernel text and 36 bytes of data on a 64-bit
1675 defconfig. It adds a long to the 'mm_struct' which
1676 will increase the kernel memory overhead of each
1677 process and adds some branches to paths used during
1678 exec() and munmap().
1679
1680 For details, see Documentation/x86/intel_mpx.txt
1681
1682 If unsure, say N.
1683
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001684config EFI
Jan Beulich9ba16082008-10-15 22:01:38 -07001685 bool "EFI runtime service support"
Huang, Ying5b836832008-01-30 13:31:19 +01001686 depends on ACPI
Sergey Vlasovf6ce5002013-04-16 18:31:08 +04001687 select UCS2_STRING
Ard Biesheuvel022ee6c2014-06-26 12:09:05 +02001688 select EFI_RUNTIME_WRAPPERS
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001689 ---help---
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001690 This enables the kernel to use EFI runtime services that are
1691 available (such as the EFI variable services).
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001692
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001693 This option is only useful on systems that have EFI firmware.
1694 In addition, you should use the latest ELILO loader available
1695 at <http://elilo.sourceforge.net> in order to take advantage
1696 of EFI runtime services. However, even with this option, the
1697 resultant kernel should continue to boot on existing non-EFI
1698 platforms.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001699
Matt Fleming291f3632011-12-12 21:27:52 +00001700config EFI_STUB
1701 bool "EFI stub support"
Matt Flemingb16d8c22014-08-05 00:12:19 +01001702 depends on EFI && !X86_USE_3DNOW
Matt Fleming7b2a5832014-07-11 08:45:25 +01001703 select RELOCATABLE
Matt Fleming291f3632011-12-12 21:27:52 +00001704 ---help---
1705 This kernel feature allows a bzImage to be loaded directly
1706 by EFI firmware without the use of a bootloader.
1707
Roy Franz4172fe22013-09-22 15:45:25 -07001708 See Documentation/efi-stub.txt for more information.
Matt Fleming0c759662012-03-16 12:03:13 +00001709
Matt Fleming7d453ee2014-01-10 18:52:06 +00001710config EFI_MIXED
1711 bool "EFI mixed-mode support"
1712 depends on EFI_STUB && X86_64
1713 ---help---
1714 Enabling this feature allows a 64-bit kernel to be booted
1715 on a 32-bit firmware, provided that your CPU supports 64-bit
1716 mode.
1717
1718 Note that it is not possible to boot a mixed-mode enabled
1719 kernel via the EFI boot stub - a bootloader that supports
1720 the EFI handover protocol must be used.
1721
1722 If unsure, say N.
1723
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001724config SECCOMP
Harvey Harrison3c2362e2008-01-30 13:31:03 +01001725 def_bool y
1726 prompt "Enable seccomp to safely compute untrusted bytecode"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001727 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001728 This kernel feature is useful for number crunching applications
1729 that may need to compute untrusted bytecode during their
1730 execution. By using pipes or other transports made available to
1731 the process as file descriptors supporting the read/write
1732 syscalls, it's possible to isolate those applications in
1733 their own address space using seccomp. Once seccomp is
Alexey Dobriyan9c0bbee2008-09-09 11:01:31 +04001734 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001735 and the task is only allowed to execute a few safe syscalls
1736 defined by each seccomp mode.
1737
1738 If unsure, say Y. Only embedded should say N here.
1739
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001740source kernel/Kconfig.hz
1741
1742config KEXEC
1743 bool "kexec system call"
Dave Young2965faa2015-09-09 15:38:55 -07001744 select KEXEC_CORE
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001745 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001746 kexec is a system call that implements the ability to shutdown your
1747 current kernel, and to start another kernel. It is like a reboot
1748 but it is independent of the system firmware. And like a reboot
1749 you can start any kernel with it, not just Linux.
1750
1751 The name comes from the similarity to the exec system call.
1752
1753 It is an ongoing process to be certain the hardware in a machine
1754 is properly shutdown, so do not be surprised if this code does not
Geert Uytterhoevenbf220692013-08-20 21:38:03 +02001755 initially work for you. As of this writing the exact hardware
1756 interface is strongly in flux, so no good recommendation can be
1757 made.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001758
Vivek Goyal74ca3172014-08-29 15:18:46 -07001759config KEXEC_FILE
1760 bool "kexec file based system call"
Dave Young2965faa2015-09-09 15:38:55 -07001761 select KEXEC_CORE
Vivek Goyal74ca3172014-08-29 15:18:46 -07001762 select BUILD_BIN2C
Vivek Goyal74ca3172014-08-29 15:18:46 -07001763 depends on X86_64
1764 depends on CRYPTO=y
1765 depends on CRYPTO_SHA256=y
1766 ---help---
1767 This is new version of kexec system call. This system call is
1768 file based and takes file descriptors as system call argument
1769 for kernel and initramfs as opposed to list of segments as
1770 accepted by previous system call.
1771
Vivek Goyal8e7d8382014-08-08 14:26:13 -07001772config KEXEC_VERIFY_SIG
1773 bool "Verify kernel signature during kexec_file_load() syscall"
Vivek Goyal74ca3172014-08-29 15:18:46 -07001774 depends on KEXEC_FILE
Vivek Goyal8e7d8382014-08-08 14:26:13 -07001775 ---help---
1776 This option makes kernel signature verification mandatory for
Borislav Petkovd8eb8942015-03-13 14:04:37 +01001777 the kexec_file_load() syscall.
Vivek Goyal8e7d8382014-08-08 14:26:13 -07001778
Borislav Petkovd8eb8942015-03-13 14:04:37 +01001779 In addition to that option, you need to enable signature
1780 verification for the corresponding kernel image type being
1781 loaded in order for this to work.
Vivek Goyal8e7d8382014-08-08 14:26:13 -07001782
1783config KEXEC_BZIMAGE_VERIFY_SIG
1784 bool "Enable bzImage signature verification support"
1785 depends on KEXEC_VERIFY_SIG
1786 depends on SIGNED_PE_FILE_VERIFICATION
1787 select SYSTEM_TRUSTED_KEYRING
1788 ---help---
1789 Enable bzImage signature verification support.
1790
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001791config CRASH_DUMP
Pavel Machek04b69442008-08-14 17:16:50 +02001792 bool "kernel crash dumps"
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001793 depends on X86_64 || (X86_32 && HIGHMEM)
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001794 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001795 Generate crash dump after being started by kexec.
1796 This should be normally only set in special crash dump kernels
1797 which are loaded in the main kernel with kexec-tools into
1798 a specially reserved region and then later executed after
1799 a crash by kdump/kexec. The crash dump kernel must be compiled
1800 to a memory address not used by the main kernel or BIOS using
1801 PHYSICAL_START, or it must be built as a relocatable image
1802 (CONFIG_RELOCATABLE=y).
1803 For more details see Documentation/kdump/kdump.txt
1804
Huang Ying3ab83522008-07-25 19:45:07 -07001805config KEXEC_JUMP
Kees Cook6ea30382012-10-02 11:16:47 -07001806 bool "kexec jump"
Huang Yingfee7b0d2009-03-10 10:57:16 +08001807 depends on KEXEC && HIBERNATION
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001808 ---help---
Huang Ying89081d12008-07-25 19:45:10 -07001809 Jump between original kernel and kexeced kernel and invoke
1810 code in physical address mode via KEXEC
Huang Ying3ab83522008-07-25 19:45:07 -07001811
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001812config PHYSICAL_START
David Rientjes6a108a12011-01-20 14:44:16 -08001813 hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
H. Peter Anvinceefccc2009-05-11 16:12:16 -07001814 default "0x1000000"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001815 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001816 This gives the physical address where the kernel is loaded.
1817
1818 If kernel is a not relocatable (CONFIG_RELOCATABLE=n) then
1819 bzImage will decompress itself to above physical address and
1820 run from there. Otherwise, bzImage will run from the address where
1821 it has been loaded by the boot loader and will ignore above physical
1822 address.
1823
1824 In normal kdump cases one does not have to set/change this option
1825 as now bzImage can be compiled as a completely relocatable image
1826 (CONFIG_RELOCATABLE=y) and be used to load and run from a different
1827 address. This option is mainly useful for the folks who don't want
1828 to use a bzImage for capturing the crash dump and want to use a
1829 vmlinux instead. vmlinux is not relocatable hence a kernel needs
1830 to be specifically compiled to run from a specific memory area
1831 (normally a reserved region) and this option comes handy.
1832
H. Peter Anvinceefccc2009-05-11 16:12:16 -07001833 So if you are using bzImage for capturing the crash dump,
1834 leave the value here unchanged to 0x1000000 and set
1835 CONFIG_RELOCATABLE=y. Otherwise if you plan to use vmlinux
1836 for capturing the crash dump change this value to start of
1837 the reserved region. In other words, it can be set based on
1838 the "X" value as specified in the "crashkernel=YM@XM"
1839 command line boot parameter passed to the panic-ed
1840 kernel. Please take a look at Documentation/kdump/kdump.txt
1841 for more details about crash dumps.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001842
1843 Usage of bzImage for capturing the crash dump is recommended as
1844 one does not have to build two kernels. Same kernel can be used
1845 as production kernel and capture kernel. Above option should have
1846 gone away after relocatable bzImage support is introduced. But it
1847 is present because there are users out there who continue to use
1848 vmlinux for dump capture. This option should go away down the
1849 line.
1850
1851 Don't change this unless you know what you are doing.
1852
1853config RELOCATABLE
H. Peter Anvin26717802009-05-07 14:19:34 -07001854 bool "Build a relocatable kernel"
1855 default y
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001856 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001857 This builds a kernel image that retains relocation information
1858 so it can be loaded someplace besides the default 1MB.
1859 The relocations tend to make the kernel binary about 10% larger,
1860 but are discarded at runtime.
1861
1862 One use is for the kexec on panic case where the recovery kernel
1863 must live at a different physical address than the primary
1864 kernel.
1865
1866 Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
1867 it has been loaded at and the compile time physical address
Kees Cook8ab38202013-10-10 17:18:14 -07001868 (CONFIG_PHYSICAL_START) is used as the minimum location.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001869
Kees Cook8ab38202013-10-10 17:18:14 -07001870config RANDOMIZE_BASE
1871 bool "Randomize the address of the kernel image"
1872 depends on RELOCATABLE
Kees Cook8ab38202013-10-10 17:18:14 -07001873 default n
1874 ---help---
1875 Randomizes the physical and virtual address at which the
1876 kernel image is decompressed, as a security feature that
1877 deters exploit attempts relying on knowledge of the location
1878 of kernel internals.
1879
Kees Cooka653f352013-11-11 14:28:39 -08001880 Entropy is generated using the RDRAND instruction if it is
1881 supported. If RDTSC is supported, it is used as well. If
1882 neither RDRAND nor RDTSC are supported, then randomness is
1883 read from the i8254 timer.
Kees Cook8ab38202013-10-10 17:18:14 -07001884
1885 The kernel will be offset by up to RANDOMIZE_BASE_MAX_OFFSET,
Kees Cooka653f352013-11-11 14:28:39 -08001886 and aligned according to PHYSICAL_ALIGN. Since the kernel is
1887 built using 2GiB addressing, and PHYSICAL_ALGIN must be at a
1888 minimum of 2MiB, only 10 bits of entropy is theoretically
1889 possible. At best, due to page table layouts, 64-bit can use
1890 9 bits of entropy and 32-bit uses 8 bits.
Kees Cook8ab38202013-10-10 17:18:14 -07001891
Kees Cookda2b6fb2013-12-10 12:27:45 -08001892 If unsure, say N.
1893
Kees Cook8ab38202013-10-10 17:18:14 -07001894config RANDOMIZE_BASE_MAX_OFFSET
Kees Cookda2b6fb2013-12-10 12:27:45 -08001895 hex "Maximum kASLR offset allowed" if EXPERT
Kees Cook8ab38202013-10-10 17:18:14 -07001896 depends on RANDOMIZE_BASE
Kees Cook6145cfe2013-10-10 17:18:18 -07001897 range 0x0 0x20000000 if X86_32
1898 default "0x20000000" if X86_32
1899 range 0x0 0x40000000 if X86_64
1900 default "0x40000000" if X86_64
Kees Cook8ab38202013-10-10 17:18:14 -07001901 ---help---
Kees Cookda2b6fb2013-12-10 12:27:45 -08001902 The lesser of RANDOMIZE_BASE_MAX_OFFSET and available physical
1903 memory is used to determine the maximal offset in bytes that will
1904 be applied to the kernel when kernel Address Space Layout
1905 Randomization (kASLR) is active. This must be a multiple of
1906 PHYSICAL_ALIGN.
Kees Cook6145cfe2013-10-10 17:18:18 -07001907
Kees Cookda2b6fb2013-12-10 12:27:45 -08001908 On 32-bit this is limited to 512MiB by page table layouts. The
1909 default is 512MiB.
Kees Cook6145cfe2013-10-10 17:18:18 -07001910
Kees Cookda2b6fb2013-12-10 12:27:45 -08001911 On 64-bit this is limited by how the kernel fixmap page table is
1912 positioned, so this cannot be larger than 1GiB currently. Without
1913 RANDOMIZE_BASE, there is a 512MiB to 1.5GiB split between kernel
1914 and modules. When RANDOMIZE_BASE_MAX_OFFSET is above 512MiB, the
1915 modules area will shrink to compensate, up to the current maximum
1916 1GiB to 1GiB split. The default is 1GiB.
1917
1918 If unsure, leave at the default value.
Kees Cook8ab38202013-10-10 17:18:14 -07001919
1920# Relocation on x86 needs some additional build support
H. Peter Anvin845adf72009-05-05 21:20:51 -07001921config X86_NEED_RELOCS
1922 def_bool y
Kees Cook8ab38202013-10-10 17:18:14 -07001923 depends on RANDOMIZE_BASE || (X86_32 && RELOCATABLE)
H. Peter Anvin845adf72009-05-05 21:20:51 -07001924
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001925config PHYSICAL_ALIGN
Kees Cooka0215062013-07-08 09:15:17 -07001926 hex "Alignment value to which kernel should be aligned"
Kees Cook8ab38202013-10-10 17:18:14 -07001927 default "0x200000"
Kees Cooka0215062013-07-08 09:15:17 -07001928 range 0x2000 0x1000000 if X86_32
1929 range 0x200000 0x1000000 if X86_64
Ingo Molnar8f9ca472009-02-05 16:21:53 +01001930 ---help---
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001931 This value puts the alignment restrictions on physical address
1932 where kernel is loaded and run from. Kernel is compiled for an
1933 address which meets above alignment restriction.
1934
1935 If bootloader loads the kernel at a non-aligned address and
1936 CONFIG_RELOCATABLE is set, kernel will move itself to nearest
1937 address aligned to above value and run from there.
1938
1939 If bootloader loads the kernel at a non-aligned address and
1940 CONFIG_RELOCATABLE is not set, kernel will ignore the run time
1941 load address and decompress itself to the address it has been
1942 compiled for and run from there. The address for which kernel is
1943 compiled already meets above alignment restrictions. Hence the
1944 end result is that kernel runs from a physical address meeting
1945 above alignment restrictions.
1946
Kees Cooka0215062013-07-08 09:15:17 -07001947 On 32-bit this value must be a multiple of 0x2000. On 64-bit
1948 this value must be a multiple of 0x200000.
1949
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001950 Don't change this unless you know what you are doing.
1951
1952config HOTPLUG_CPU
Dimitri Sivanich7c13e6a2008-08-11 10:46:46 -05001953 bool "Support for hot-pluggable CPUs"
Stephen Rothwell40b31362013-05-21 13:49:35 +10001954 depends on SMP
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001955 ---help---
Dimitri Sivanich7c13e6a2008-08-11 10:46:46 -05001956 Say Y here to allow turning CPUs off and on. CPUs can be
1957 controlled through /sys/devices/system/cpu.
1958 ( Note: power management support will enable this option
1959 automatically on SMP systems. )
1960 Say N if you want to disable CPU hotplug.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01001961
Fenghua Yu80aa1df2012-11-13 11:32:39 -08001962config BOOTPARAM_HOTPLUG_CPU0
1963 bool "Set default setting of cpu0_hotpluggable"
1964 default n
Kees Cook2c922cd2013-01-22 13:01:19 -08001965 depends on HOTPLUG_CPU
Fenghua Yu80aa1df2012-11-13 11:32:39 -08001966 ---help---
1967 Set whether default state of cpu0_hotpluggable is on or off.
1968
1969 Say Y here to enable CPU0 hotplug by default. If this switch
1970 is turned on, there is no need to give cpu0_hotplug kernel
1971 parameter and the CPU0 hotplug feature is enabled by default.
1972
1973 Please note: there are two known CPU0 dependencies if you want
1974 to enable the CPU0 hotplug feature either by this switch or by
1975 cpu0_hotplug kernel parameter.
1976
1977 First, resume from hibernate or suspend always starts from CPU0.
1978 So hibernate and suspend are prevented if CPU0 is offline.
1979
1980 Second dependency is PIC interrupts always go to CPU0. CPU0 can not
1981 offline if any interrupt can not migrate out of CPU0. There may
1982 be other CPU0 dependencies.
1983
1984 Please make sure the dependencies are under your control before
1985 you enable this feature.
1986
1987 Say N if you don't want to enable CPU0 hotplug feature by default.
1988 You still can enable the CPU0 hotplug feature at boot by kernel
1989 parameter cpu0_hotplug.
1990
Fenghua Yua71c8bc2012-11-13 11:32:51 -08001991config DEBUG_HOTPLUG_CPU0
1992 def_bool n
1993 prompt "Debug CPU0 hotplug"
Kees Cook2c922cd2013-01-22 13:01:19 -08001994 depends on HOTPLUG_CPU
Fenghua Yua71c8bc2012-11-13 11:32:51 -08001995 ---help---
1996 Enabling this option offlines CPU0 (if CPU0 can be offlined) as
1997 soon as possible and boots up userspace with CPU0 offlined. User
1998 can online CPU0 back after boot time.
1999
2000 To debug CPU0 hotplug, you need to enable CPU0 offline/online
2001 feature by either turning on CONFIG_BOOTPARAM_HOTPLUG_CPU0 during
2002 compilation or giving cpu0_hotplug kernel parameter at boot.
2003
2004 If unsure, say N.
2005
Sam Ravnborg506f1d02007-11-09 21:56:54 +01002006config COMPAT_VDSO
Andy Lutomirskib0b49f22014-03-13 16:01:26 -07002007 def_bool n
2008 prompt "Disable the 32-bit vDSO (needed for glibc 2.3.3)"
Roland McGrathaf65d642008-01-30 13:30:43 +01002009 depends on X86_32 || IA32_EMULATION
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002010 ---help---
Andy Lutomirskib0b49f22014-03-13 16:01:26 -07002011 Certain buggy versions of glibc will crash if they are
2012 presented with a 32-bit vDSO that is not mapped at the address
2013 indicated in its segment table.
Randy Dunlape84446d2009-11-10 15:46:52 -08002014
Andy Lutomirskib0b49f22014-03-13 16:01:26 -07002015 The bug was introduced by f866314b89d56845f55e6f365e18b31ec978ec3a
2016 and fixed by 3b3ddb4f7db98ec9e912ccdf54d35df4aa30e04a and
2017 49ad572a70b8aeb91e57483a11dd1b77e31c4468. Glibc 2.3.3 is
2018 the only released version with the bug, but OpenSUSE 9
2019 contains a buggy "glibc 2.3.2".
Sam Ravnborg506f1d02007-11-09 21:56:54 +01002020
Andy Lutomirskib0b49f22014-03-13 16:01:26 -07002021 The symptom of the bug is that everything crashes on startup, saying:
2022 dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed!
2023
2024 Saying Y here changes the default value of the vdso32 boot
2025 option from 1 to 0, which turns off the 32-bit vDSO entirely.
2026 This works around the glibc bug but hurts performance.
2027
2028 If unsure, say N: if you are compiling your own kernel, you
2029 are unlikely to be using a buggy version of glibc.
Sam Ravnborg506f1d02007-11-09 21:56:54 +01002030
Kees Cook3dc33bd2015-08-12 17:55:19 -07002031choice
2032 prompt "vsyscall table for legacy applications"
2033 depends on X86_64
2034 default LEGACY_VSYSCALL_EMULATE
2035 help
2036 Legacy user code that does not know how to find the vDSO expects
2037 to be able to issue three syscalls by calling fixed addresses in
2038 kernel space. Since this location is not randomized with ASLR,
2039 it can be used to assist security vulnerability exploitation.
2040
2041 This setting can be changed at boot time via the kernel command
2042 line parameter vsyscall=[native|emulate|none].
2043
2044 On a system with recent enough glibc (2.14 or newer) and no
2045 static binaries, you can say None without a performance penalty
2046 to improve security.
2047
2048 If unsure, select "Emulate".
2049
2050 config LEGACY_VSYSCALL_NATIVE
2051 bool "Native"
2052 help
2053 Actual executable code is located in the fixed vsyscall
2054 address mapping, implementing time() efficiently. Since
2055 this makes the mapping executable, it can be used during
2056 security vulnerability exploitation (traditionally as
2057 ROP gadgets). This configuration is not recommended.
2058
2059 config LEGACY_VSYSCALL_EMULATE
2060 bool "Emulate"
2061 help
2062 The kernel traps and emulates calls into the fixed
2063 vsyscall address mapping. This makes the mapping
2064 non-executable, but it still contains known contents,
2065 which could be used in certain rare security vulnerability
2066 exploits. This configuration is recommended when userspace
2067 still uses the vsyscall area.
2068
2069 config LEGACY_VSYSCALL_NONE
2070 bool "None"
2071 help
2072 There will be no vsyscall mapping at all. This will
2073 eliminate any risk of ASLR bypass due to the vsyscall
2074 fixed address mapping. Attempts to use the vsyscalls
2075 will be reported to dmesg, so that either old or
2076 malicious userspace programs can be identified.
2077
2078endchoice
2079
Tim Bird516cbf32008-08-12 12:52:36 -07002080config CMDLINE_BOOL
2081 bool "Built-in kernel command line"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002082 ---help---
Tim Bird516cbf32008-08-12 12:52:36 -07002083 Allow for specifying boot arguments to the kernel at
2084 build time. On some systems (e.g. embedded ones), it is
2085 necessary or convenient to provide some or all of the
2086 kernel boot arguments with the kernel itself (that is,
2087 to not rely on the boot loader to provide them.)
2088
2089 To compile command line arguments into the kernel,
2090 set this option to 'Y', then fill in the
Sébastien Hinderer69711ca2015-07-08 00:02:01 +02002091 boot arguments in CONFIG_CMDLINE.
Tim Bird516cbf32008-08-12 12:52:36 -07002092
2093 Systems with fully functional boot loaders (i.e. non-embedded)
2094 should leave this option set to 'N'.
2095
2096config CMDLINE
2097 string "Built-in kernel command string"
2098 depends on CMDLINE_BOOL
2099 default ""
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002100 ---help---
Tim Bird516cbf32008-08-12 12:52:36 -07002101 Enter arguments here that should be compiled into the kernel
2102 image and used at boot time. If the boot loader provides a
2103 command line at boot time, it is appended to this string to
2104 form the full kernel command line, when the system boots.
2105
2106 However, you can use the CONFIG_CMDLINE_OVERRIDE option to
2107 change this behavior.
2108
2109 In most cases, the command line (whether built-in or provided
2110 by the boot loader) should specify the device for the root
2111 file system.
2112
2113config CMDLINE_OVERRIDE
2114 bool "Built-in command line overrides boot loader arguments"
Tim Bird516cbf32008-08-12 12:52:36 -07002115 depends on CMDLINE_BOOL
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002116 ---help---
Tim Bird516cbf32008-08-12 12:52:36 -07002117 Set this option to 'Y' to have the kernel ignore the boot loader
2118 command line, and use ONLY the built-in command line.
2119
2120 This is used to work around broken boot loaders. This should
2121 be set to 'N' under normal conditions.
2122
Andy Lutomirskia5b9e5a2015-07-30 14:31:34 -07002123config MODIFY_LDT_SYSCALL
2124 bool "Enable the LDT (local descriptor table)" if EXPERT
2125 default y
2126 ---help---
2127 Linux can allow user programs to install a per-process x86
2128 Local Descriptor Table (LDT) using the modify_ldt(2) system
2129 call. This is required to run 16-bit or segmented code such as
2130 DOSEMU or some Wine programs. It is also used by some very old
2131 threading libraries.
2132
2133 Enabling this feature adds a small amount of overhead to
2134 context switches and increases the low-level kernel attack
2135 surface. Disabling it removes the modify_ldt(2) system call.
2136
2137 Saying 'N' here may make sense for embedded or server kernels.
2138
Seth Jenningsb700e7f2014-12-16 11:58:19 -06002139source "kernel/livepatch/Kconfig"
2140
Sam Ravnborg506f1d02007-11-09 21:56:54 +01002141endmenu
2142
2143config ARCH_ENABLE_MEMORY_HOTPLUG
2144 def_bool y
2145 depends on X86_64 || (X86_32 && HIGHMEM)
2146
Gary Hade35551052008-10-31 10:52:03 -07002147config ARCH_ENABLE_MEMORY_HOTREMOVE
2148 def_bool y
2149 depends on MEMORY_HOTPLUG
2150
Lee Schermerhorne534c7c2010-05-26 14:44:58 -07002151config USE_PERCPU_NUMA_NODE_ID
Tejun Heo645a7912011-01-23 14:37:40 +01002152 def_bool y
Lee Schermerhorne534c7c2010-05-26 14:44:58 -07002153 depends on NUMA
2154
Kirill A. Shutemov94918462013-11-14 14:31:10 -08002155config ARCH_ENABLE_SPLIT_PMD_PTLOCK
2156 def_bool y
2157 depends on X86_64 || X86_PAE
2158
Naoya Horiguchic177c812014-06-04 16:05:35 -07002159config ARCH_ENABLE_HUGEPAGE_MIGRATION
2160 def_bool y
2161 depends on X86_64 && HUGETLB_PAGE && MIGRATION
2162
Bjorn Helgaasda85f862008-11-05 13:37:27 -06002163menu "Power management and ACPI options"
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002164
2165config ARCH_HIBERNATION_HEADER
Harvey Harrison3c2362e2008-01-30 13:31:03 +01002166 def_bool y
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002167 depends on X86_64 && HIBERNATION
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002168
2169source "kernel/power/Kconfig"
2170
2171source "drivers/acpi/Kconfig"
2172
Feng Tangefafc8b2009-08-14 15:23:29 -04002173source "drivers/sfi/Kconfig"
2174
Andi Kleena6b68072008-01-30 13:32:49 +01002175config X86_APM_BOOT
Jan Beulich6fc108a2010-04-21 15:23:44 +01002176 def_bool y
Paul Bolle282e5aa2011-11-17 11:41:31 +01002177 depends on APM
Andi Kleena6b68072008-01-30 13:32:49 +01002178
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002179menuconfig APM
2180 tristate "APM (Advanced Power Management) BIOS support"
Ingo Molnarefefa6f2008-07-10 16:09:50 +02002181 depends on X86_32 && PM_SLEEP
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002182 ---help---
2183 APM is a BIOS specification for saving power using several different
2184 techniques. This is mostly useful for battery powered laptops with
2185 APM compliant BIOSes. If you say Y here, the system time will be
2186 reset after a RESUME operation, the /proc/apm device will provide
2187 battery status information, and user-space programs will receive
2188 notification of APM "events" (e.g. battery status change).
2189
2190 If you select "Y" here, you can disable actual use of the APM
2191 BIOS by passing the "apm=off" option to the kernel at boot time.
2192
2193 Note that the APM support is almost completely disabled for
2194 machines with more than one CPU.
2195
2196 In order to use APM, you will need supporting software. For location
Michael Witten2dc98fd2011-07-08 21:11:16 +00002197 and more information, read <file:Documentation/power/apm-acpi.txt>
2198 and the Battery Powered Linux mini-HOWTO, available from
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002199 <http://www.tldp.org/docs.html#howto>.
2200
2201 This driver does not spin down disk drives (see the hdparm(8)
2202 manpage ("man 8 hdparm") for that), and it doesn't turn off
2203 VESA-compliant "green" monitors.
2204
2205 This driver does not support the TI 4000M TravelMate and the ACER
2206 486/DX4/75 because they don't have compliant BIOSes. Many "green"
2207 desktop machines also don't have compliant BIOSes, and this driver
2208 may cause those machines to panic during the boot phase.
2209
2210 Generally, if you don't have a battery in your machine, there isn't
2211 much point in using this driver and you should say N. If you get
2212 random kernel OOPSes or reboots that don't seem to be related to
2213 anything, try disabling/enabling this option (or disabling/enabling
2214 APM in your BIOS).
2215
2216 Some other things you should try when experiencing seemingly random,
2217 "weird" problems:
2218
2219 1) make sure that you have enough swap space and that it is
2220 enabled.
2221 2) pass the "no-hlt" option to the kernel
2222 3) switch on floating point emulation in the kernel and pass
2223 the "no387" option to the kernel
2224 4) pass the "floppy=nodma" option to the kernel
2225 5) pass the "mem=4M" option to the kernel (thereby disabling
2226 all but the first 4 MB of RAM)
2227 6) make sure that the CPU is not over clocked.
2228 7) read the sig11 FAQ at <http://www.bitwizard.nl/sig11/>
2229 8) disable the cache from your BIOS settings
2230 9) install a fan for the video card or exchange video RAM
2231 10) install a better fan for the CPU
2232 11) exchange RAM chips
2233 12) exchange the motherboard.
2234
2235 To compile this driver as a module, choose M here: the
2236 module will be called apm.
2237
2238if APM
2239
2240config APM_IGNORE_USER_SUSPEND
2241 bool "Ignore USER SUSPEND"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002242 ---help---
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002243 This option will ignore USER SUSPEND requests. On machines with a
2244 compliant APM BIOS, you want to say N. However, on the NEC Versa M
2245 series notebooks, it is necessary to say Y because of a BIOS bug.
2246
2247config APM_DO_ENABLE
2248 bool "Enable PM at boot time"
2249 ---help---
2250 Enable APM features at boot time. From page 36 of the APM BIOS
2251 specification: "When disabled, the APM BIOS does not automatically
2252 power manage devices, enter the Standby State, enter the Suspend
2253 State, or take power saving steps in response to CPU Idle calls."
2254 This driver will make CPU Idle calls when Linux is idle (unless this
2255 feature is turned off -- see "Do CPU IDLE calls", below). This
2256 should always save battery power, but more complicated APM features
2257 will be dependent on your BIOS implementation. You may need to turn
2258 this option off if your computer hangs at boot time when using APM
2259 support, or if it beeps continuously instead of suspending. Turn
2260 this off if you have a NEC UltraLite Versa 33/C or a Toshiba
2261 T400CDT. This is off by default since most machines do fine without
2262 this feature.
2263
2264config APM_CPU_IDLE
Len Browndd8af072013-02-09 21:10:04 -05002265 depends on CPU_IDLE
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002266 bool "Make CPU Idle calls when idle"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002267 ---help---
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002268 Enable calls to APM CPU Idle/CPU Busy inside the kernel's idle loop.
2269 On some machines, this can activate improved power savings, such as
2270 a slowed CPU clock rate, when the machine is idle. These idle calls
2271 are made after the idle loop has run for some length of time (e.g.,
2272 333 mS). On some machines, this will cause a hang at boot time or
2273 whenever the CPU becomes idle. (On machines with more than one CPU,
2274 this option does nothing.)
2275
2276config APM_DISPLAY_BLANK
2277 bool "Enable console blanking using APM"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002278 ---help---
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002279 Enable console blanking using the APM. Some laptops can use this to
2280 turn off the LCD backlight when the screen blanker of the Linux
2281 virtual console blanks the screen. Note that this is only used by
2282 the virtual console screen blanker, and won't turn off the backlight
2283 when using the X Window system. This also doesn't have anything to
2284 do with your VESA-compliant power-saving monitor. Further, this
2285 option doesn't work for all laptops -- it might not turn off your
2286 backlight at all, or it might print a lot of errors to the console,
2287 especially if you are using gpm.
2288
2289config APM_ALLOW_INTS
2290 bool "Allow interrupts during APM BIOS calls"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002291 ---help---
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002292 Normally we disable external interrupts while we are making calls to
2293 the APM BIOS as a measure to lessen the effects of a badly behaving
2294 BIOS implementation. The BIOS should reenable interrupts if it
2295 needs to. Unfortunately, some BIOSes do not -- especially those in
2296 many of the newer IBM Thinkpads. If you experience hangs when you
2297 suspend, try setting this to Y. Otherwise, say N.
2298
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002299endif # APM
2300
Dave Jonesbb0a56e2011-05-19 18:51:07 -04002301source "drivers/cpufreq/Kconfig"
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002302
2303source "drivers/cpuidle/Kconfig"
2304
Andy Henroid27471fd2008-10-09 11:45:22 -07002305source "drivers/idle/Kconfig"
2306
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002307endmenu
2308
2309
2310menu "Bus options (PCI etc.)"
2311
2312config PCI
Ingo Molnar1ac97012008-05-19 14:10:14 +02002313 bool "PCI support"
Adrian Bunk1c858082008-01-30 13:32:32 +01002314 default y
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002315 ---help---
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002316 Find out whether you have a PCI motherboard. PCI is the name of a
2317 bus system, i.e. the way the CPU talks to the other stuff inside
2318 your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
2319 VESA. If you have PCI, say Y, otherwise N.
2320
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002321choice
2322 prompt "PCI access mode"
Ingo Molnarefefa6f2008-07-10 16:09:50 +02002323 depends on X86_32 && PCI
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002324 default PCI_GOANY
2325 ---help---
2326 On PCI systems, the BIOS can be used to detect the PCI devices and
2327 determine their configuration. However, some old PCI motherboards
2328 have BIOS bugs and may crash if this is done. Also, some embedded
2329 PCI-based systems don't have any BIOS at all. Linux can also try to
2330 detect the PCI hardware directly without using the BIOS.
2331
2332 With this option, you can specify how Linux should detect the
2333 PCI devices. If you choose "BIOS", the BIOS will be used,
2334 if you choose "Direct", the BIOS won't be used, and if you
2335 choose "MMConfig", then PCI Express MMCONFIG will be used.
2336 If you choose "Any", the kernel will try MMCONFIG, then the
2337 direct access method and falls back to the BIOS if that doesn't
2338 work. If unsure, go with the default, which is "Any".
2339
2340config PCI_GOBIOS
2341 bool "BIOS"
2342
2343config PCI_GOMMCONFIG
2344 bool "MMConfig"
2345
2346config PCI_GODIRECT
2347 bool "Direct"
2348
Andres Salomon3ef0e1f2008-04-29 00:59:53 -07002349config PCI_GOOLPC
Daniel Drake76fb6572010-09-23 17:28:04 +01002350 bool "OLPC XO-1"
Andres Salomon3ef0e1f2008-04-29 00:59:53 -07002351 depends on OLPC
2352
Andres Salomon2bdd1b02008-06-05 14:14:41 -07002353config PCI_GOANY
2354 bool "Any"
2355
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002356endchoice
2357
2358config PCI_BIOS
Harvey Harrison3c2362e2008-01-30 13:31:03 +01002359 def_bool y
Ingo Molnarefefa6f2008-07-10 16:09:50 +02002360 depends on X86_32 && PCI && (PCI_GOBIOS || PCI_GOANY)
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002361
2362# x86-64 doesn't support PCI BIOS access from long mode so always go direct.
2363config PCI_DIRECT
Harvey Harrison3c2362e2008-01-30 13:31:03 +01002364 def_bool y
Shaohua Li0aba4962011-05-27 14:59:39 +08002365 depends on PCI && (X86_64 || (PCI_GODIRECT || PCI_GOANY || PCI_GOOLPC || PCI_GOMMCONFIG))
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002366
2367config PCI_MMCONFIG
Harvey Harrison3c2362e2008-01-30 13:31:03 +01002368 def_bool y
Feng Tang5f0db7a2009-08-14 15:37:50 -04002369 depends on X86_32 && PCI && (ACPI || SFI) && (PCI_GOMMCONFIG || PCI_GOANY)
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002370
Andres Salomon3ef0e1f2008-04-29 00:59:53 -07002371config PCI_OLPC
Andres Salomon2bdd1b02008-06-05 14:14:41 -07002372 def_bool y
2373 depends on PCI && OLPC && (PCI_GOOLPC || PCI_GOANY)
Andres Salomon3ef0e1f2008-04-29 00:59:53 -07002374
Alex Nixonb5401a92010-03-18 16:31:34 -04002375config PCI_XEN
2376 def_bool y
2377 depends on PCI && XEN
2378 select SWIOTLB_XEN
2379
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002380config PCI_DOMAINS
Harvey Harrison3c2362e2008-01-30 13:31:03 +01002381 def_bool y
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002382 depends on PCI
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002383
2384config PCI_MMCONFIG
2385 bool "Support mmconfig PCI config space access"
2386 depends on X86_64 && PCI && ACPI
2387
Ira W. Snyder3f6ea842010-04-01 11:43:30 -07002388config PCI_CNB20LE_QUIRK
David Rientjes6a108a12011-01-20 14:44:16 -08002389 bool "Read CNB20LE Host Bridge Windows" if EXPERT
Kees Cook6ea30382012-10-02 11:16:47 -07002390 depends on PCI
Ira W. Snyder3f6ea842010-04-01 11:43:30 -07002391 help
2392 Read the PCI windows out of the CNB20LE host bridge. This allows
2393 PCI hotplug to work on systems with the CNB20LE chipset which do
2394 not have ACPI.
2395
Bjorn Helgaas64a5fed2011-01-06 10:12:30 -07002396 There's no public spec for this chipset, and this functionality
2397 is known to be incomplete.
2398
2399 You should say N unless you know you need this.
2400
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002401source "drivers/pci/pcie/Kconfig"
2402
2403source "drivers/pci/Kconfig"
2404
David Rientjes1c00f012011-03-22 16:34:59 -07002405# x86_64 have no ISA slots, but can have ISA-style DMA.
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002406config ISA_DMA_API
David Rientjes1c00f012011-03-22 16:34:59 -07002407 bool "ISA-style DMA support" if (X86_64 && EXPERT)
2408 default y
2409 help
2410 Enables ISA-style DMA support for devices requiring such controllers.
2411 If unsure, say Y.
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002412
2413if X86_32
2414
2415config ISA
2416 bool "ISA support"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002417 ---help---
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002418 Find out whether you have ISA slots on your motherboard. ISA is the
2419 name of a bus system, i.e. the way the CPU talks to the other stuff
2420 inside your box. Other bus systems are PCI, EISA, MicroChannel
2421 (MCA) or VESA. ISA is an older system, now being displaced by PCI;
2422 newer boards don't support it. If you have ISA, say Y, otherwise N.
2423
2424config EISA
2425 bool "EISA support"
2426 depends on ISA
2427 ---help---
2428 The Extended Industry Standard Architecture (EISA) bus was
2429 developed as an open alternative to the IBM MicroChannel bus.
2430
2431 The EISA bus provided some of the features of the IBM MicroChannel
2432 bus while maintaining backward compatibility with cards made for
2433 the older ISA bus. The EISA bus saw limited use between 1988 and
2434 1995 when it was made obsolete by the PCI bus.
2435
2436 Say Y here if you are building a kernel for an EISA-based machine.
2437
2438 Otherwise, say N.
2439
2440source "drivers/eisa/Kconfig"
2441
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002442config SCx200
2443 tristate "NatSemi SCx200 support"
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002444 ---help---
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002445 This provides basic support for National Semiconductor's
2446 (now AMD's) Geode processors. The driver probes for the
2447 PCI-IDs of several on-chip devices, so its a good dependency
2448 for other scx200_* drivers.
2449
2450 If compiled as a module, the driver is named scx200.
2451
2452config SCx200HR_TIMER
2453 tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
John Stultz592913e2010-07-13 17:56:20 -07002454 depends on SCx200
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002455 default y
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002456 ---help---
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002457 This driver provides a clocksource built upon the on-chip
2458 27MHz high-resolution timer. Its also a workaround for
2459 NSC Geode SC-1100's buggy TSC, which loses time when the
2460 processor goes idle (as is done by the scheduler). The
2461 other workaround is idle=poll boot option.
2462
Andres Salomon3ef0e1f2008-04-29 00:59:53 -07002463config OLPC
2464 bool "One Laptop Per Child support"
Thomas Gleixner54008972011-02-23 09:50:15 +01002465 depends on !X86_PAE
Andres Salomon3c554942009-12-14 18:00:36 -08002466 select GPIOLIB
Thomas Gleixnerdc3119e72011-02-23 10:08:31 +01002467 select OF
Daniel Drake45bb1672011-03-13 15:10:17 +00002468 select OF_PROMTREE
Grant Likelyb4e51852011-12-16 15:50:17 -07002469 select IRQ_DOMAIN
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002470 ---help---
Andres Salomon3ef0e1f2008-04-29 00:59:53 -07002471 Add support for detecting the unique features of the OLPC
2472 XO hardware.
2473
Daniel Drakea3128582011-06-25 17:34:10 +01002474config OLPC_XO1_PM
2475 bool "OLPC XO-1 Power Management"
Daniel Drake97c4cb72011-06-25 17:34:11 +01002476 depends on OLPC && MFD_CS5535 && PM_SLEEP
Daniel Drakea3128582011-06-25 17:34:10 +01002477 select MFD_CORE
Daniel Drakebf1ebf02010-10-10 10:40:32 +01002478 ---help---
Daniel Drake97c4cb72011-06-25 17:34:11 +01002479 Add support for poweroff and suspend of the OLPC XO-1 laptop.
Daniel Drakebf1ebf02010-10-10 10:40:32 +01002480
Daniel Drakecfee9592011-06-25 17:34:17 +01002481config OLPC_XO1_RTC
2482 bool "OLPC XO-1 Real Time Clock"
2483 depends on OLPC_XO1_PM && RTC_DRV_CMOS
2484 ---help---
2485 Add support for the XO-1 real time clock, which can be used as a
2486 programmable wakeup source.
2487
Daniel Drake7feda8e2011-06-25 17:34:12 +01002488config OLPC_XO1_SCI
2489 bool "OLPC XO-1 SCI extras"
Daniel Draked8d01a62011-07-24 18:33:21 +01002490 depends on OLPC && OLPC_XO1_PM
Randy Dunlaped8e47f2012-12-18 12:22:17 -08002491 depends on INPUT=y
Daniel Draked8d01a62011-07-24 18:33:21 +01002492 select POWER_SUPPLY
Daniel Drake7feda8e2011-06-25 17:34:12 +01002493 select GPIO_CS5535
2494 select MFD_CORE
2495 ---help---
2496 Add support for SCI-based features of the OLPC XO-1 laptop:
Daniel Drake7bc74b32011-06-25 17:34:14 +01002497 - EC-driven system wakeups
Daniel Drake7feda8e2011-06-25 17:34:12 +01002498 - Power button
Daniel Drake7bc74b32011-06-25 17:34:14 +01002499 - Ebook switch
Daniel Drake2cf2bae2011-06-25 17:34:15 +01002500 - Lid switch
Daniel Drakee1040ac2011-06-25 17:34:16 +01002501 - AC adapter status updates
2502 - Battery status updates
Daniel Drake7feda8e2011-06-25 17:34:12 +01002503
Daniel Drakea0f30f52011-06-25 17:34:18 +01002504config OLPC_XO15_SCI
2505 bool "OLPC XO-1.5 SCI extras"
Daniel Draked8d01a62011-07-24 18:33:21 +01002506 depends on OLPC && ACPI
2507 select POWER_SUPPLY
Daniel Drakea0f30f52011-06-25 17:34:18 +01002508 ---help---
2509 Add support for SCI-based features of the OLPC XO-1.5 laptop:
2510 - EC-driven system wakeups
2511 - AC adapter status updates
2512 - Battery status updates
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002513
Ed Wildgoosed4f3e352011-09-20 14:00:12 -07002514config ALIX
2515 bool "PCEngines ALIX System Support (LED setup)"
2516 select GPIOLIB
2517 ---help---
2518 This option enables system support for the PCEngines ALIX.
2519 At present this just sets up LEDs for GPIO control on
2520 ALIX2/3/6 boards. However, other system specific setup should
2521 get added here.
2522
2523 Note: You must still enable the drivers for GPIO and LED support
2524 (GPIO_CS5535 & LEDS_GPIO) to actually use the LEDs
2525
2526 Note: You have to set alix.force=1 for boards with Award BIOS.
2527
Philip Prindevilleda4e3302012-03-05 15:05:15 -08002528config NET5501
2529 bool "Soekris Engineering net5501 System Support (LEDS, GPIO, etc)"
2530 select GPIOLIB
2531 ---help---
2532 This option enables system support for the Soekris Engineering net5501.
2533
Philip A. Prindeville31970592012-01-14 01:45:39 -07002534config GEOS
2535 bool "Traverse Technologies GEOS System Support (LEDS, GPIO, etc)"
2536 select GPIOLIB
2537 depends on DMI
2538 ---help---
2539 This option enables system support for the Traverse Technologies GEOS.
2540
Vivien Didelot7d029122013-01-04 16:18:14 -05002541config TS5500
2542 bool "Technologic Systems TS-5500 platform support"
2543 depends on MELAN
2544 select CHECK_SIGNATURE
2545 select NEW_LEDS
2546 select LEDS_CLASS
2547 ---help---
2548 This option enables system support for the Technologic Systems TS-5500.
2549
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002550endif # X86_32
2551
Andreas Herrmann23ac4ae2010-09-17 18:03:43 +02002552config AMD_NB
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002553 def_bool y
Borislav Petkov0e152cd2010-03-12 15:43:03 +01002554 depends on CPU_SUP_AMD && PCI
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002555
2556source "drivers/pcmcia/Kconfig"
2557
2558source "drivers/pci/hotplug/Kconfig"
2559
Alexandre Bounine388b78a2011-03-23 16:43:03 -07002560config RAPIDIO
Alexandre Bouninefdf90ab2013-07-03 15:08:56 -07002561 tristate "RapidIO support"
Alexandre Bounine388b78a2011-03-23 16:43:03 -07002562 depends on PCI
2563 default n
2564 help
Alexandre Bouninefdf90ab2013-07-03 15:08:56 -07002565 If enabled this option will include drivers and the core
Alexandre Bounine388b78a2011-03-23 16:43:03 -07002566 infrastructure code to support RapidIO interconnect devices.
2567
2568source "drivers/rapidio/Kconfig"
2569
David Herrmanne3263ab2013-08-02 14:05:22 +02002570config X86_SYSFB
2571 bool "Mark VGA/VBE/EFI FB as generic system framebuffer"
2572 help
2573 Firmwares often provide initial graphics framebuffers so the BIOS,
2574 bootloader or kernel can show basic video-output during boot for
2575 user-guidance and debugging. Historically, x86 used the VESA BIOS
2576 Extensions and EFI-framebuffers for this, which are mostly limited
2577 to x86.
2578 This option, if enabled, marks VGA/VBE/EFI framebuffers as generic
2579 framebuffers so the new generic system-framebuffer drivers can be
2580 used on x86. If the framebuffer is not compatible with the generic
2581 modes, it is adverticed as fallback platform framebuffer so legacy
2582 drivers like efifb, vesafb and uvesafb can pick it up.
2583 If this option is not selected, all system framebuffers are always
2584 marked as fallback platform framebuffers as usual.
2585
2586 Note: Legacy fbdev drivers, including vesafb, efifb, uvesafb, will
2587 not be able to pick up generic system framebuffers if this option
2588 is selected. You are highly encouraged to enable simplefb as
2589 replacement if you select this option. simplefb can correctly deal
2590 with generic system framebuffers. But you should still keep vesafb
2591 and others enabled as fallback if a system framebuffer is
2592 incompatible with simplefb.
2593
2594 If unsure, say Y.
2595
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002596endmenu
2597
2598
2599menu "Executable file formats / Emulations"
2600
2601source "fs/Kconfig.binfmt"
2602
2603config IA32_EMULATION
2604 bool "IA32 Emulation"
2605 depends on X86_64
Randy Dunlapd1603992013-06-18 12:33:40 -07002606 select BINFMT_ELF
Roland McGratha97f52e2008-01-30 13:31:55 +01002607 select COMPAT_BINFMT_ELF
Brian Gerst3bead552015-06-22 07:55:19 -04002608 select ARCH_WANT_OLD_COMPAT_IPC
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002609 ---help---
H. J. Lu5fd92e62012-02-19 10:40:03 -08002610 Include code to run legacy 32-bit programs under a
2611 64-bit kernel. You should likely turn this on, unless you're
2612 100% sure that you don't have any 32-bit programs left.
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002613
2614config IA32_AOUT
Ingo Molnar8f9ca472009-02-05 16:21:53 +01002615 tristate "IA32 a.out support"
2616 depends on IA32_EMULATION
2617 ---help---
2618 Support old a.out binaries in the 32bit emulation.
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002619
H. Peter Anvin0bf62762012-02-27 14:09:10 -08002620config X86_X32
Kees Cook6ea30382012-10-02 11:16:47 -07002621 bool "x32 ABI for 64-bit mode"
Brian Gerst9b540502015-06-22 07:55:21 -04002622 depends on X86_64
H. J. Lu5fd92e62012-02-19 10:40:03 -08002623 ---help---
2624 Include code to run binaries for the x32 native 32-bit ABI
2625 for 64-bit processors. An x32 process gets access to the
2626 full 64-bit register file and wide data path while leaving
2627 pointers at 32 bits for smaller memory footprint.
2628
2629 You will need a recent binutils (2.22 or later) with
2630 elf32_x86_64 support enabled to compile a kernel with this
2631 option set.
2632
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002633config COMPAT
Harvey Harrison3c2362e2008-01-30 13:31:03 +01002634 def_bool y
H. Peter Anvin0bf62762012-02-27 14:09:10 -08002635 depends on IA32_EMULATION || X86_X32
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002636
Jan Beulich3120e252012-09-10 12:41:45 +01002637if COMPAT
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002638config COMPAT_FOR_U64_ALIGNMENT
Jan Beulich3120e252012-09-10 12:41:45 +01002639 def_bool y
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002640
2641config SYSVIPC_COMPAT
Harvey Harrison3c2362e2008-01-30 13:31:03 +01002642 def_bool y
Jan Beulich3120e252012-09-10 12:41:45 +01002643 depends on SYSVIPC
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002644
David Howellsee009e4a02011-03-07 15:06:20 +00002645config KEYS_COMPAT
Jan Beulich3120e252012-09-10 12:41:45 +01002646 def_bool y
2647 depends on KEYS
2648endif
David Howellsee009e4a02011-03-07 15:06:20 +00002649
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002650endmenu
2651
2652
Keith Packarde5beae12008-11-03 18:21:45 +01002653config HAVE_ATOMIC_IOMAP
2654 def_bool y
2655 depends on X86_32
2656
Alessandro Rubini4692d772012-04-04 19:39:58 +02002657config X86_DEV_DMA_OPS
2658 bool
Alessandro Rubini83125a32012-04-04 19:40:21 +02002659 depends on X86_64 || STA2X11
Alessandro Rubini4692d772012-04-04 19:39:58 +02002660
Alessandro Rubinif7219a52012-04-04 19:40:10 +02002661config X86_DMA_REMAP
2662 bool
Alessandro Rubini83125a32012-04-04 19:40:21 +02002663 depends on STA2X11
Alessandro Rubinif7219a52012-04-04 19:40:10 +02002664
Li, Aubrey93e5ead2014-06-30 14:08:42 +08002665config PMC_ATOM
2666 def_bool y
2667 depends on PCI
2668
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002669source "net/Kconfig"
2670
2671source "drivers/Kconfig"
2672
2673source "drivers/firmware/Kconfig"
2674
2675source "fs/Kconfig"
2676
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002677source "arch/x86/Kconfig.debug"
2678
2679source "security/Kconfig"
2680
2681source "crypto/Kconfig"
2682
Avi Kivityedf88412007-12-16 11:02:48 +02002683source "arch/x86/kvm/Kconfig"
2684
Sam Ravnborge279b6c2007-11-06 20:41:05 +01002685source "lib/Kconfig"