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