xref: /openbmc/linux/arch/x86/Kconfig (revision 7dd65feb)
1# x86 configuration
2mainmenu "Linux Kernel Configuration for x86"
3
4# Select 32 or 64 bit
5config 64BIT
6	bool "64-bit kernel" if ARCH = "x86"
7	default ARCH = "x86_64"
8	---help---
9	  Say yes to build a 64-bit kernel - formerly known as x86_64
10	  Say no to build a 32-bit kernel - formerly known as i386
11
12config X86_32
13	def_bool !64BIT
14
15config X86_64
16	def_bool 64BIT
17
18### Arch settings
19config X86
20	def_bool y
21	select HAVE_AOUT if X86_32
22	select HAVE_READQ
23	select HAVE_WRITEQ
24	select HAVE_UNSTABLE_SCHED_CLOCK
25	select HAVE_IDE
26	select HAVE_OPROFILE
27	select HAVE_PERF_EVENTS if (!M386 && !M486)
28	select HAVE_IOREMAP_PROT
29	select HAVE_KPROBES
30	select ARCH_WANT_OPTIONAL_GPIOLIB
31	select ARCH_WANT_FRAME_POINTERS
32	select HAVE_DMA_ATTRS
33	select HAVE_KRETPROBES
34	select HAVE_FTRACE_MCOUNT_RECORD
35	select HAVE_DYNAMIC_FTRACE
36	select HAVE_FUNCTION_TRACER
37	select HAVE_FUNCTION_GRAPH_TRACER
38	select HAVE_FUNCTION_GRAPH_FP_TEST
39	select HAVE_FUNCTION_TRACE_MCOUNT_TEST
40	select HAVE_FTRACE_NMI_ENTER if DYNAMIC_FTRACE
41	select HAVE_SYSCALL_TRACEPOINTS
42	select HAVE_KVM
43	select HAVE_ARCH_KGDB
44	select HAVE_ARCH_TRACEHOOK
45	select HAVE_GENERIC_DMA_COHERENT if X86_32
46	select HAVE_EFFICIENT_UNALIGNED_ACCESS
47	select USER_STACKTRACE_SUPPORT
48	select HAVE_DMA_API_DEBUG
49	select HAVE_KERNEL_GZIP
50	select HAVE_KERNEL_BZIP2
51	select HAVE_KERNEL_LZMA
52	select HAVE_HW_BREAKPOINT
53	select PERF_EVENTS
54	select ANON_INODES
55	select HAVE_ARCH_KMEMCHECK
56	select HAVE_USER_RETURN_NOTIFIER
57
58config OUTPUT_FORMAT
59	string
60	default "elf32-i386" if X86_32
61	default "elf64-x86-64" if X86_64
62
63config ARCH_DEFCONFIG
64	string
65	default "arch/x86/configs/i386_defconfig" if X86_32
66	default "arch/x86/configs/x86_64_defconfig" if X86_64
67
68config GENERIC_TIME
69	def_bool y
70
71config GENERIC_CMOS_UPDATE
72	def_bool y
73
74config CLOCKSOURCE_WATCHDOG
75	def_bool y
76
77config GENERIC_CLOCKEVENTS
78	def_bool y
79
80config GENERIC_CLOCKEVENTS_BROADCAST
81	def_bool y
82	depends on X86_64 || (X86_32 && X86_LOCAL_APIC)
83
84config LOCKDEP_SUPPORT
85	def_bool y
86
87config STACKTRACE_SUPPORT
88	def_bool y
89
90config HAVE_LATENCYTOP_SUPPORT
91	def_bool y
92
93config MMU
94	def_bool y
95
96config ZONE_DMA
97	def_bool y
98
99config SBUS
100	bool
101
102config GENERIC_ISA_DMA
103	def_bool y
104
105config GENERIC_IOMAP
106	def_bool y
107
108config GENERIC_BUG
109	def_bool y
110	depends on BUG
111	select GENERIC_BUG_RELATIVE_POINTERS if X86_64
112
113config GENERIC_BUG_RELATIVE_POINTERS
114	bool
115
116config GENERIC_HWEIGHT
117	def_bool y
118
119config GENERIC_GPIO
120	bool
121
122config ARCH_MAY_HAVE_PC_FDC
123	def_bool y
124
125config RWSEM_GENERIC_SPINLOCK
126	def_bool !X86_XADD
127
128config RWSEM_XCHGADD_ALGORITHM
129	def_bool X86_XADD
130
131config ARCH_HAS_CPU_IDLE_WAIT
132	def_bool y
133
134config GENERIC_CALIBRATE_DELAY
135	def_bool y
136
137config GENERIC_TIME_VSYSCALL
138	bool
139	default X86_64
140
141config ARCH_HAS_CPU_RELAX
142	def_bool y
143
144config ARCH_HAS_DEFAULT_IDLE
145	def_bool y
146
147config ARCH_HAS_CACHE_LINE_SIZE
148	def_bool y
149
150config HAVE_SETUP_PER_CPU_AREA
151	def_bool y
152
153config NEED_PER_CPU_EMBED_FIRST_CHUNK
154	def_bool y
155
156config NEED_PER_CPU_PAGE_FIRST_CHUNK
157	def_bool y
158
159config HAVE_CPUMASK_OF_CPU_MAP
160	def_bool X86_64_SMP
161
162config ARCH_HIBERNATION_POSSIBLE
163	def_bool y
164
165config ARCH_SUSPEND_POSSIBLE
166	def_bool y
167
168config ZONE_DMA32
169	bool
170	default X86_64
171
172config ARCH_POPULATES_NODE_MAP
173	def_bool y
174
175config AUDIT_ARCH
176	bool
177	default X86_64
178
179config ARCH_SUPPORTS_OPTIMIZED_INLINING
180	def_bool y
181
182config ARCH_SUPPORTS_DEBUG_PAGEALLOC
183	def_bool y
184
185config HAVE_INTEL_TXT
186	def_bool y
187	depends on EXPERIMENTAL && DMAR && ACPI
188
189# Use the generic interrupt handling code in kernel/irq/:
190config GENERIC_HARDIRQS
191	bool
192	default y
193
194config GENERIC_HARDIRQS_NO__DO_IRQ
195       def_bool y
196
197config GENERIC_IRQ_PROBE
198	bool
199	default y
200
201config GENERIC_PENDING_IRQ
202	bool
203	depends on GENERIC_HARDIRQS && SMP
204	default y
205
206config USE_GENERIC_SMP_HELPERS
207	def_bool y
208	depends on SMP
209
210config X86_32_SMP
211	def_bool y
212	depends on X86_32 && SMP
213
214config X86_64_SMP
215	def_bool y
216	depends on X86_64 && SMP
217
218config X86_HT
219	bool
220	depends on SMP
221	default y
222
223config X86_TRAMPOLINE
224	bool
225	depends on SMP || (64BIT && ACPI_SLEEP)
226	default y
227
228config X86_32_LAZY_GS
229	def_bool y
230	depends on X86_32 && !CC_STACKPROTECTOR
231
232config KTIME_SCALAR
233	def_bool X86_32
234source "init/Kconfig"
235source "kernel/Kconfig.freezer"
236
237menu "Processor type and features"
238
239source "kernel/time/Kconfig"
240
241config SMP
242	bool "Symmetric multi-processing support"
243	---help---
244	  This enables support for systems with more than one CPU. If you have
245	  a system with only one CPU, like most personal computers, say N. If
246	  you have a system with more than one CPU, say Y.
247
248	  If you say N here, the kernel will run on single and multiprocessor
249	  machines, but will use only one CPU of a multiprocessor machine. If
250	  you say Y here, the kernel will run on many, but not all,
251	  singleprocessor machines. On a singleprocessor machine, the kernel
252	  will run faster if you say N here.
253
254	  Note that if you say Y here and choose architecture "586" or
255	  "Pentium" under "Processor family", the kernel will not work on 486
256	  architectures. Similarly, multiprocessor kernels for the "PPro"
257	  architecture may not work on all Pentium based boards.
258
259	  People using multiprocessor machines who say Y here should also say
260	  Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
261	  Management" code will be disabled if you say Y here.
262
263	  See also <file:Documentation/i386/IO-APIC.txt>,
264	  <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
265	  <http://www.tldp.org/docs.html#howto>.
266
267	  If you don't know what to do here, say N.
268
269config X86_X2APIC
270	bool "Support x2apic"
271	depends on X86_LOCAL_APIC && X86_64 && INTR_REMAP
272	---help---
273	  This enables x2apic support on CPUs that have this feature.
274
275	  This allows 32-bit apic IDs (so it can support very large systems),
276	  and accesses the local apic via MSRs not via mmio.
277
278	  If you don't know what to do here, say N.
279
280config SPARSE_IRQ
281	bool "Support sparse irq numbering"
282	depends on PCI_MSI || HT_IRQ
283	---help---
284	  This enables support for sparse irqs. This is useful for distro
285	  kernels that want to define a high CONFIG_NR_CPUS value but still
286	  want to have low kernel memory footprint on smaller machines.
287
288	  ( Sparse IRQs can also be beneficial on NUMA boxes, as they spread
289	    out the irq_desc[] array in a more NUMA-friendly way. )
290
291	  If you don't know what to do here, say N.
292
293config NUMA_IRQ_DESC
294	def_bool y
295	depends on SPARSE_IRQ && NUMA
296
297config X86_MPPARSE
298	bool "Enable MPS table" if ACPI
299	default y
300	depends on X86_LOCAL_APIC
301	---help---
302	  For old smp systems that do not have proper acpi support. Newer systems
303	  (esp with 64bit cpus) with acpi support, MADT and DSDT will override it
304
305config X86_BIGSMP
306	bool "Support for big SMP systems with more than 8 CPUs"
307	depends on X86_32 && SMP
308	---help---
309	  This option is needed for the systems that have more than 8 CPUs
310
311if X86_32
312config X86_EXTENDED_PLATFORM
313	bool "Support for extended (non-PC) x86 platforms"
314	default y
315	---help---
316	  If you disable this option then the kernel will only support
317	  standard PC platforms. (which covers the vast majority of
318	  systems out there.)
319
320	  If you enable this option then you'll be able to select support
321	  for the following (non-PC) 32 bit x86 platforms:
322		AMD Elan
323		NUMAQ (IBM/Sequent)
324		RDC R-321x SoC
325		SGI 320/540 (Visual Workstation)
326		Summit/EXA (IBM x440)
327		Unisys ES7000 IA32 series
328		Moorestown MID devices
329
330	  If you have one of these systems, or if you want to build a
331	  generic distribution kernel, say Y here - otherwise say N.
332endif
333
334if X86_64
335config X86_EXTENDED_PLATFORM
336	bool "Support for extended (non-PC) x86 platforms"
337	default y
338	---help---
339	  If you disable this option then the kernel will only support
340	  standard PC platforms. (which covers the vast majority of
341	  systems out there.)
342
343	  If you enable this option then you'll be able to select support
344	  for the following (non-PC) 64 bit x86 platforms:
345		ScaleMP vSMP
346		SGI Ultraviolet
347
348	  If you have one of these systems, or if you want to build a
349	  generic distribution kernel, say Y here - otherwise say N.
350endif
351# This is an alphabetically sorted list of 64 bit extended platforms
352# Please maintain the alphabetic order if and when there are additions
353
354config X86_VSMP
355	bool "ScaleMP vSMP"
356	select PARAVIRT
357	depends on X86_64 && PCI
358	depends on X86_EXTENDED_PLATFORM
359	---help---
360	  Support for ScaleMP vSMP systems.  Say 'Y' here if this kernel is
361	  supposed to run on these EM64T-based machines.  Only choose this option
362	  if you have one of these machines.
363
364config X86_UV
365	bool "SGI Ultraviolet"
366	depends on X86_64
367	depends on X86_EXTENDED_PLATFORM
368	depends on NUMA
369	depends on X86_X2APIC
370	---help---
371	  This option is needed in order to support SGI Ultraviolet systems.
372	  If you don't have one of these, you should say N here.
373
374# Following is an alphabetically sorted list of 32 bit extended platforms
375# Please maintain the alphabetic order if and when there are additions
376
377config X86_ELAN
378	bool "AMD Elan"
379	depends on X86_32
380	depends on X86_EXTENDED_PLATFORM
381	---help---
382	  Select this for an AMD Elan processor.
383
384	  Do not use this option for K6/Athlon/Opteron processors!
385
386	  If unsure, choose "PC-compatible" instead.
387
388config X86_MRST
389       bool "Moorestown MID platform"
390	depends on X86_32
391	depends on X86_EXTENDED_PLATFORM
392	---help---
393	  Moorestown is Intel's Low Power Intel Architecture (LPIA) based Moblin
394	  Internet Device(MID) platform. Moorestown consists of two chips:
395	  Lincroft (CPU core, graphics, and memory controller) and Langwell IOH.
396	  Unlike standard x86 PCs, Moorestown does not have many legacy devices
397	  nor standard legacy replacement devices/features. e.g. Moorestown does
398	  not contain i8259, i8254, HPET, legacy BIOS, most of the io ports.
399
400config X86_RDC321X
401	bool "RDC R-321x SoC"
402	depends on X86_32
403	depends on X86_EXTENDED_PLATFORM
404	select M486
405	select X86_REBOOTFIXUPS
406	---help---
407	  This option is needed for RDC R-321x system-on-chip, also known
408	  as R-8610-(G).
409	  If you don't have one of these chips, you should say N here.
410
411config X86_32_NON_STANDARD
412	bool "Support non-standard 32-bit SMP architectures"
413	depends on X86_32 && SMP
414	depends on X86_EXTENDED_PLATFORM
415	---help---
416	  This option compiles in the NUMAQ, Summit, bigsmp, ES7000, default
417	  subarchitectures.  It is intended for a generic binary kernel.
418	  if you select them all, kernel will probe it one by one. and will
419	  fallback to default.
420
421# Alphabetically sorted list of Non standard 32 bit platforms
422
423config X86_NUMAQ
424	bool "NUMAQ (IBM/Sequent)"
425	depends on X86_32_NON_STANDARD
426	select NUMA
427	select X86_MPPARSE
428	---help---
429	  This option is used for getting Linux to run on a NUMAQ (IBM/Sequent)
430	  NUMA multiquad box. This changes the way that processors are
431	  bootstrapped, and uses Clustered Logical APIC addressing mode instead
432	  of Flat Logical.  You will need a new lynxer.elf file to flash your
433	  firmware with - send email to <Martin.Bligh@us.ibm.com>.
434
435config X86_SUPPORTS_MEMORY_FAILURE
436	bool
437	# MCE code calls memory_failure():
438	depends on X86_MCE
439	# On 32-bit this adds too big of NODES_SHIFT and we run out of page flags:
440	depends on !X86_NUMAQ
441	# On 32-bit SPARSEMEM adds too big of SECTIONS_WIDTH:
442	depends on X86_64 || !SPARSEMEM
443	select ARCH_SUPPORTS_MEMORY_FAILURE
444	default y
445
446config X86_VISWS
447	bool "SGI 320/540 (Visual Workstation)"
448	depends on X86_32 && PCI && X86_MPPARSE && PCI_GODIRECT
449	depends on X86_32_NON_STANDARD
450	---help---
451	  The SGI Visual Workstation series is an IA32-based workstation
452	  based on SGI systems chips with some legacy PC hardware attached.
453
454	  Say Y here to create a kernel to run on the SGI 320 or 540.
455
456	  A kernel compiled for the Visual Workstation will run on general
457	  PCs as well. See <file:Documentation/sgi-visws.txt> for details.
458
459config X86_SUMMIT
460	bool "Summit/EXA (IBM x440)"
461	depends on X86_32_NON_STANDARD
462	---help---
463	  This option is needed for IBM systems that use the Summit/EXA chipset.
464	  In particular, it is needed for the x440.
465
466config X86_ES7000
467	bool "Unisys ES7000 IA32 series"
468	depends on X86_32_NON_STANDARD && X86_BIGSMP
469	---help---
470	  Support for Unisys ES7000 systems.  Say 'Y' here if this kernel is
471	  supposed to run on an IA32-based Unisys ES7000 system.
472
473config SCHED_OMIT_FRAME_POINTER
474	def_bool y
475	prompt "Single-depth WCHAN output"
476	depends on X86
477	---help---
478	  Calculate simpler /proc/<PID>/wchan values. If this option
479	  is disabled then wchan values will recurse back to the
480	  caller function. This provides more accurate wchan values,
481	  at the expense of slightly more scheduling overhead.
482
483	  If in doubt, say "Y".
484
485menuconfig PARAVIRT_GUEST
486	bool "Paravirtualized guest support"
487	---help---
488	  Say Y here to get to see options related to running Linux under
489	  various hypervisors.  This option alone does not add any kernel code.
490
491	  If you say N, all options in this submenu will be skipped and disabled.
492
493if PARAVIRT_GUEST
494
495source "arch/x86/xen/Kconfig"
496
497config VMI
498	bool "VMI Guest support (DEPRECATED)"
499	select PARAVIRT
500	depends on X86_32
501	---help---
502	  VMI provides a paravirtualized interface to the VMware ESX server
503	  (it could be used by other hypervisors in theory too, but is not
504	  at the moment), by linking the kernel to a GPL-ed ROM module
505	  provided by the hypervisor.
506
507	  As of September 2009, VMware has started a phased retirement
508	  of this feature from VMware's products. Please see
509	  feature-removal-schedule.txt for details.  If you are
510	  planning to enable this option, please note that you cannot
511	  live migrate a VMI enabled VM to a future VMware product,
512	  which doesn't support VMI. So if you expect your kernel to
513	  seamlessly migrate to newer VMware products, keep this
514	  disabled.
515
516config KVM_CLOCK
517	bool "KVM paravirtualized clock"
518	select PARAVIRT
519	select PARAVIRT_CLOCK
520	---help---
521	  Turning on this option will allow you to run a paravirtualized clock
522	  when running over the KVM hypervisor. Instead of relying on a PIT
523	  (or probably other) emulation by the underlying device model, the host
524	  provides the guest with timing infrastructure such as time of day, and
525	  system time
526
527config KVM_GUEST
528	bool "KVM Guest support"
529	select PARAVIRT
530	---help---
531	  This option enables various optimizations for running under the KVM
532	  hypervisor.
533
534source "arch/x86/lguest/Kconfig"
535
536config PARAVIRT
537	bool "Enable paravirtualization code"
538	---help---
539	  This changes the kernel so it can modify itself when it is run
540	  under a hypervisor, potentially improving performance significantly
541	  over full virtualization.  However, when run without a hypervisor
542	  the kernel is theoretically slower and slightly larger.
543
544config PARAVIRT_SPINLOCKS
545	bool "Paravirtualization layer for spinlocks"
546	depends on PARAVIRT && SMP && EXPERIMENTAL
547	---help---
548	  Paravirtualized spinlocks allow a pvops backend to replace the
549	  spinlock implementation with something virtualization-friendly
550	  (for example, block the virtual CPU rather than spinning).
551
552	  Unfortunately the downside is an up to 5% performance hit on
553	  native kernels, with various workloads.
554
555	  If you are unsure how to answer this question, answer N.
556
557config PARAVIRT_CLOCK
558	bool
559	default n
560
561endif
562
563config PARAVIRT_DEBUG
564	bool "paravirt-ops debugging"
565	depends on PARAVIRT && DEBUG_KERNEL
566	---help---
567	  Enable to debug paravirt_ops internals.  Specifically, BUG if
568	  a paravirt_op is missing when it is called.
569
570config MEMTEST
571	bool "Memtest"
572	---help---
573	  This option adds a kernel parameter 'memtest', which allows memtest
574	  to be set.
575	        memtest=0, mean disabled; -- default
576	        memtest=1, mean do 1 test pattern;
577	        ...
578	        memtest=4, mean do 4 test patterns.
579	  If you are unsure how to answer this question, answer N.
580
581config X86_SUMMIT_NUMA
582	def_bool y
583	depends on X86_32 && NUMA && X86_32_NON_STANDARD
584
585config X86_CYCLONE_TIMER
586	def_bool y
587	depends on X86_32_NON_STANDARD
588
589source "arch/x86/Kconfig.cpu"
590
591config HPET_TIMER
592	def_bool X86_64
593	prompt "HPET Timer Support" if X86_32
594	---help---
595	  Use the IA-PC HPET (High Precision Event Timer) to manage
596	  time in preference to the PIT and RTC, if a HPET is
597	  present.
598	  HPET is the next generation timer replacing legacy 8254s.
599	  The HPET provides a stable time base on SMP
600	  systems, unlike the TSC, but it is more expensive to access,
601	  as it is off-chip.  You can find the HPET spec at
602	  <http://www.intel.com/hardwaredesign/hpetspec_1.pdf>.
603
604	  You can safely choose Y here.  However, HPET will only be
605	  activated if the platform and the BIOS support this feature.
606	  Otherwise the 8254 will be used for timing services.
607
608	  Choose N to continue using the legacy 8254 timer.
609
610config HPET_EMULATE_RTC
611	def_bool y
612	depends on HPET_TIMER && (RTC=y || RTC=m || RTC_DRV_CMOS=m || RTC_DRV_CMOS=y)
613
614# Mark as embedded because too many people got it wrong.
615# The code disables itself when not needed.
616config DMI
617	default y
618	bool "Enable DMI scanning" if EMBEDDED
619	---help---
620	  Enabled scanning of DMI to identify machine quirks. Say Y
621	  here unless you have verified that your setup is not
622	  affected by entries in the DMI blacklist. Required by PNP
623	  BIOS code.
624
625config GART_IOMMU
626	bool "GART IOMMU support" if EMBEDDED
627	default y
628	select SWIOTLB
629	depends on X86_64 && PCI
630	---help---
631	  Support for full DMA access of devices with 32bit memory access only
632	  on systems with more than 3GB. This is usually needed for USB,
633	  sound, many IDE/SATA chipsets and some other devices.
634	  Provides a driver for the AMD Athlon64/Opteron/Turion/Sempron GART
635	  based hardware IOMMU and a software bounce buffer based IOMMU used
636	  on Intel systems and as fallback.
637	  The code is only active when needed (enough memory and limited
638	  device) unless CONFIG_IOMMU_DEBUG or iommu=force is specified
639	  too.
640
641config CALGARY_IOMMU
642	bool "IBM Calgary IOMMU support"
643	select SWIOTLB
644	depends on X86_64 && PCI && EXPERIMENTAL
645	---help---
646	  Support for hardware IOMMUs in IBM's xSeries x366 and x460
647	  systems. Needed to run systems with more than 3GB of memory
648	  properly with 32-bit PCI devices that do not support DAC
649	  (Double Address Cycle). Calgary also supports bus level
650	  isolation, where all DMAs pass through the IOMMU.  This
651	  prevents them from going anywhere except their intended
652	  destination. This catches hard-to-find kernel bugs and
653	  mis-behaving drivers and devices that do not use the DMA-API
654	  properly to set up their DMA buffers.  The IOMMU can be
655	  turned off at boot time with the iommu=off parameter.
656	  Normally the kernel will make the right choice by itself.
657	  If unsure, say Y.
658
659config CALGARY_IOMMU_ENABLED_BY_DEFAULT
660	def_bool y
661	prompt "Should Calgary be enabled by default?"
662	depends on CALGARY_IOMMU
663	---help---
664	  Should Calgary be enabled by default? if you choose 'y', Calgary
665	  will be used (if it exists). If you choose 'n', Calgary will not be
666	  used even if it exists. If you choose 'n' and would like to use
667	  Calgary anyway, pass 'iommu=calgary' on the kernel command line.
668	  If unsure, say Y.
669
670config AMD_IOMMU
671	bool "AMD IOMMU support"
672	select SWIOTLB
673	select PCI_MSI
674	depends on X86_64 && PCI && ACPI
675	---help---
676	  With this option you can enable support for AMD IOMMU hardware in
677	  your system. An IOMMU is a hardware component which provides
678	  remapping of DMA memory accesses from devices. With an AMD IOMMU you
679	  can isolate the the DMA memory of different devices and protect the
680	  system from misbehaving device drivers or hardware.
681
682	  You can find out if your system has an AMD IOMMU if you look into
683	  your BIOS for an option to enable it or if you have an IVRS ACPI
684	  table.
685
686config AMD_IOMMU_STATS
687	bool "Export AMD IOMMU statistics to debugfs"
688	depends on AMD_IOMMU
689	select DEBUG_FS
690	---help---
691	  This option enables code in the AMD IOMMU driver to collect various
692	  statistics about whats happening in the driver and exports that
693	  information to userspace via debugfs.
694	  If unsure, say N.
695
696# need this always selected by IOMMU for the VIA workaround
697config SWIOTLB
698	def_bool y if X86_64
699	---help---
700	  Support for software bounce buffers used on x86-64 systems
701	  which don't have a hardware IOMMU (e.g. the current generation
702	  of Intel's x86-64 CPUs). Using this PCI devices which can only
703	  access 32-bits of memory can be used on systems with more than
704	  3 GB of memory. If unsure, say Y.
705
706config IOMMU_HELPER
707	def_bool (CALGARY_IOMMU || GART_IOMMU || SWIOTLB || AMD_IOMMU)
708
709config IOMMU_API
710	def_bool (AMD_IOMMU || DMAR)
711
712config MAXSMP
713	bool "Configure Maximum number of SMP Processors and NUMA Nodes"
714	depends on X86_64 && SMP && DEBUG_KERNEL && EXPERIMENTAL
715	select CPUMASK_OFFSTACK
716	default n
717	---help---
718	  Configure maximum number of CPUS and NUMA Nodes for this architecture.
719	  If unsure, say N.
720
721config NR_CPUS
722	int "Maximum number of CPUs" if SMP && !MAXSMP
723	range 2 8 if SMP && X86_32 && !X86_BIGSMP
724	range 2 512 if SMP && !MAXSMP
725	default "1" if !SMP
726	default "4096" if MAXSMP
727	default "32" if SMP && (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000)
728	default "8" if SMP
729	---help---
730	  This allows you to specify the maximum number of CPUs which this
731	  kernel will support.  The maximum supported value is 512 and the
732	  minimum value which makes sense is 2.
733
734	  This is purely to save memory - each supported CPU adds
735	  approximately eight kilobytes to the kernel image.
736
737config SCHED_SMT
738	bool "SMT (Hyperthreading) scheduler support"
739	depends on X86_HT
740	---help---
741	  SMT scheduler support improves the CPU scheduler's decision making
742	  when dealing with Intel Pentium 4 chips with HyperThreading at a
743	  cost of slightly increased overhead in some places. If unsure say
744	  N here.
745
746config SCHED_MC
747	def_bool y
748	prompt "Multi-core scheduler support"
749	depends on X86_HT
750	---help---
751	  Multi-core scheduler support improves the CPU scheduler's decision
752	  making when dealing with multi-core CPU chips at a cost of slightly
753	  increased overhead in some places. If unsure say N here.
754
755source "kernel/Kconfig.preempt"
756
757config X86_UP_APIC
758	bool "Local APIC support on uniprocessors"
759	depends on X86_32 && !SMP && !X86_32_NON_STANDARD
760	---help---
761	  A local APIC (Advanced Programmable Interrupt Controller) is an
762	  integrated interrupt controller in the CPU. If you have a single-CPU
763	  system which has a processor with a local APIC, you can say Y here to
764	  enable and use it. If you say Y here even though your machine doesn't
765	  have a local APIC, then the kernel will still run with no slowdown at
766	  all. The local APIC supports CPU-generated self-interrupts (timer,
767	  performance counters), and the NMI watchdog which detects hard
768	  lockups.
769
770config X86_UP_IOAPIC
771	bool "IO-APIC support on uniprocessors"
772	depends on X86_UP_APIC
773	---help---
774	  An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an
775	  SMP-capable replacement for PC-style interrupt controllers. Most
776	  SMP systems and many recent uniprocessor systems have one.
777
778	  If you have a single-CPU system with an IO-APIC, you can say Y here
779	  to use it. If you say Y here even though your machine doesn't have
780	  an IO-APIC, then the kernel will still run with no slowdown at all.
781
782config X86_LOCAL_APIC
783	def_bool y
784	depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC
785
786config X86_IO_APIC
787	def_bool y
788	depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC
789
790config X86_VISWS_APIC
791	def_bool y
792	depends on X86_32 && X86_VISWS
793
794config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
795	bool "Reroute for broken boot IRQs"
796	default n
797	depends on X86_IO_APIC
798	---help---
799	  This option enables a workaround that fixes a source of
800	  spurious interrupts. This is recommended when threaded
801	  interrupt handling is used on systems where the generation of
802	  superfluous "boot interrupts" cannot be disabled.
803
804	  Some chipsets generate a legacy INTx "boot IRQ" when the IRQ
805	  entry in the chipset's IO-APIC is masked (as, e.g. the RT
806	  kernel does during interrupt handling). On chipsets where this
807	  boot IRQ generation cannot be disabled, this workaround keeps
808	  the original IRQ line masked so that only the equivalent "boot
809	  IRQ" is delivered to the CPUs. The workaround also tells the
810	  kernel to set up the IRQ handler on the boot IRQ line. In this
811	  way only one interrupt is delivered to the kernel. Otherwise
812	  the spurious second interrupt may cause the kernel to bring
813	  down (vital) interrupt lines.
814
815	  Only affects "broken" chipsets. Interrupt sharing may be
816	  increased on these systems.
817
818config X86_MCE
819	bool "Machine Check / overheating reporting"
820	---help---
821	  Machine Check support allows the processor to notify the
822	  kernel if it detects a problem (e.g. overheating, data corruption).
823	  The action the kernel takes depends on the severity of the problem,
824	  ranging from warning messages to halting the machine.
825
826config X86_MCE_INTEL
827	def_bool y
828	prompt "Intel MCE features"
829	depends on X86_MCE && X86_LOCAL_APIC
830	---help---
831	   Additional support for intel specific MCE features such as
832	   the thermal monitor.
833
834config X86_MCE_AMD
835	def_bool y
836	prompt "AMD MCE features"
837	depends on X86_MCE && X86_LOCAL_APIC
838	---help---
839	   Additional support for AMD specific MCE features such as
840	   the DRAM Error Threshold.
841
842config X86_ANCIENT_MCE
843	def_bool n
844	depends on X86_32 && X86_MCE
845	prompt "Support for old Pentium 5 / WinChip machine checks"
846	---help---
847	  Include support for machine check handling on old Pentium 5 or WinChip
848	  systems. These typically need to be enabled explicitely on the command
849	  line.
850
851config X86_MCE_THRESHOLD
852	depends on X86_MCE_AMD || X86_MCE_INTEL
853	bool
854	default y
855
856config X86_MCE_INJECT
857	depends on X86_MCE
858	tristate "Machine check injector support"
859	---help---
860	  Provide support for injecting machine checks for testing purposes.
861	  If you don't know what a machine check is and you don't do kernel
862	  QA it is safe to say n.
863
864config X86_THERMAL_VECTOR
865	def_bool y
866	depends on X86_MCE_INTEL
867
868config VM86
869	bool "Enable VM86 support" if EMBEDDED
870	default y
871	depends on X86_32
872	---help---
873	  This option is required by programs like DOSEMU to run 16-bit legacy
874	  code on X86 processors. It also may be needed by software like
875	  XFree86 to initialize some video cards via BIOS. Disabling this
876	  option saves about 6k.
877
878config TOSHIBA
879	tristate "Toshiba Laptop support"
880	depends on X86_32
881	---help---
882	  This adds a driver to safely access the System Management Mode of
883	  the CPU on Toshiba portables with a genuine Toshiba BIOS. It does
884	  not work on models with a Phoenix BIOS. The System Management Mode
885	  is used to set the BIOS and power saving options on Toshiba portables.
886
887	  For information on utilities to make use of this driver see the
888	  Toshiba Linux utilities web site at:
889	  <http://www.buzzard.org.uk/toshiba/>.
890
891	  Say Y if you intend to run this kernel on a Toshiba portable.
892	  Say N otherwise.
893
894config I8K
895	tristate "Dell laptop support"
896	---help---
897	  This adds a driver to safely access the System Management Mode
898	  of the CPU on the Dell Inspiron 8000. The System Management Mode
899	  is used to read cpu temperature and cooling fan status and to
900	  control the fans on the I8K portables.
901
902	  This driver has been tested only on the Inspiron 8000 but it may
903	  also work with other Dell laptops. You can force loading on other
904	  models by passing the parameter `force=1' to the module. Use at
905	  your own risk.
906
907	  For information on utilities to make use of this driver see the
908	  I8K Linux utilities web site at:
909	  <http://people.debian.org/~dz/i8k/>
910
911	  Say Y if you intend to run this kernel on a Dell Inspiron 8000.
912	  Say N otherwise.
913
914config X86_REBOOTFIXUPS
915	bool "Enable X86 board specific fixups for reboot"
916	depends on X86_32
917	---help---
918	  This enables chipset and/or board specific fixups to be done
919	  in order to get reboot to work correctly. This is only needed on
920	  some combinations of hardware and BIOS. The symptom, for which
921	  this config is intended, is when reboot ends with a stalled/hung
922	  system.
923
924	  Currently, the only fixup is for the Geode machines using
925	  CS5530A and CS5536 chipsets and the RDC R-321x SoC.
926
927	  Say Y if you want to enable the fixup. Currently, it's safe to
928	  enable this option even if you don't need it.
929	  Say N otherwise.
930
931config MICROCODE
932	tristate "/dev/cpu/microcode - microcode support"
933	select FW_LOADER
934	---help---
935	  If you say Y here, you will be able to update the microcode on
936	  certain Intel and AMD processors. The Intel support is for the
937	  IA32 family, e.g. Pentium Pro, Pentium II, Pentium III,
938	  Pentium 4, Xeon etc. The AMD support is for family 0x10 and
939	  0x11 processors, e.g. Opteron, Phenom and Turion 64 Ultra.
940	  You will obviously need the actual microcode binary data itself
941	  which is not shipped with the Linux kernel.
942
943	  This option selects the general module only, you need to select
944	  at least one vendor specific module as well.
945
946	  To compile this driver as a module, choose M here: the
947	  module will be called microcode.
948
949config MICROCODE_INTEL
950	bool "Intel microcode patch loading support"
951	depends on MICROCODE
952	default MICROCODE
953	select FW_LOADER
954	---help---
955	  This options enables microcode patch loading support for Intel
956	  processors.
957
958	  For latest news and information on obtaining all the required
959	  Intel ingredients for this driver, check:
960	  <http://www.urbanmyth.org/microcode/>.
961
962config MICROCODE_AMD
963	bool "AMD microcode patch loading support"
964	depends on MICROCODE
965	select FW_LOADER
966	---help---
967	  If you select this option, microcode patch loading support for AMD
968	  processors will be enabled.
969
970config MICROCODE_OLD_INTERFACE
971	def_bool y
972	depends on MICROCODE
973
974config X86_MSR
975	tristate "/dev/cpu/*/msr - Model-specific register support"
976	---help---
977	  This device gives privileged processes access to the x86
978	  Model-Specific Registers (MSRs).  It is a character device with
979	  major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
980	  MSR accesses are directed to a specific CPU on multi-processor
981	  systems.
982
983config X86_CPUID
984	tristate "/dev/cpu/*/cpuid - CPU information support"
985	---help---
986	  This device gives processes access to the x86 CPUID instruction to
987	  be executed on a specific processor.  It is a character device
988	  with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
989	  /dev/cpu/31/cpuid.
990
991config X86_CPU_DEBUG
992	tristate "/sys/kernel/debug/x86/cpu/* - CPU Debug support"
993	---help---
994	  If you select this option, this will provide various x86 CPUs
995	  information through debugfs.
996
997choice
998	prompt "High Memory Support"
999	default HIGHMEM4G if !X86_NUMAQ
1000	default HIGHMEM64G if X86_NUMAQ
1001	depends on X86_32
1002
1003config NOHIGHMEM
1004	bool "off"
1005	depends on !X86_NUMAQ
1006	---help---
1007	  Linux can use up to 64 Gigabytes of physical memory on x86 systems.
1008	  However, the address space of 32-bit x86 processors is only 4
1009	  Gigabytes large. That means that, if you have a large amount of
1010	  physical memory, not all of it can be "permanently mapped" by the
1011	  kernel. The physical memory that's not permanently mapped is called
1012	  "high memory".
1013
1014	  If you are compiling a kernel which will never run on a machine with
1015	  more than 1 Gigabyte total physical RAM, answer "off" here (default
1016	  choice and suitable for most users). This will result in a "3GB/1GB"
1017	  split: 3GB are mapped so that each process sees a 3GB virtual memory
1018	  space and the remaining part of the 4GB virtual memory space is used
1019	  by the kernel to permanently map as much physical memory as
1020	  possible.
1021
1022	  If the machine has between 1 and 4 Gigabytes physical RAM, then
1023	  answer "4GB" here.
1024
1025	  If more than 4 Gigabytes is used then answer "64GB" here. This
1026	  selection turns Intel PAE (Physical Address Extension) mode on.
1027	  PAE implements 3-level paging on IA32 processors. PAE is fully
1028	  supported by Linux, PAE mode is implemented on all recent Intel
1029	  processors (Pentium Pro and better). NOTE: If you say "64GB" here,
1030	  then the kernel will not boot on CPUs that don't support PAE!
1031
1032	  The actual amount of total physical memory will either be
1033	  auto detected or can be forced by using a kernel command line option
1034	  such as "mem=256M". (Try "man bootparam" or see the documentation of
1035	  your boot loader (lilo or loadlin) about how to pass options to the
1036	  kernel at boot time.)
1037
1038	  If unsure, say "off".
1039
1040config HIGHMEM4G
1041	bool "4GB"
1042	depends on !X86_NUMAQ
1043	---help---
1044	  Select this if you have a 32-bit processor and between 1 and 4
1045	  gigabytes of physical RAM.
1046
1047config HIGHMEM64G
1048	bool "64GB"
1049	depends on !M386 && !M486
1050	select X86_PAE
1051	---help---
1052	  Select this if you have a 32-bit processor and more than 4
1053	  gigabytes of physical RAM.
1054
1055endchoice
1056
1057choice
1058	depends on EXPERIMENTAL
1059	prompt "Memory split" if EMBEDDED
1060	default VMSPLIT_3G
1061	depends on X86_32
1062	---help---
1063	  Select the desired split between kernel and user memory.
1064
1065	  If the address range available to the kernel is less than the
1066	  physical memory installed, the remaining memory will be available
1067	  as "high memory". Accessing high memory is a little more costly
1068	  than low memory, as it needs to be mapped into the kernel first.
1069	  Note that increasing the kernel address space limits the range
1070	  available to user programs, making the address space there
1071	  tighter.  Selecting anything other than the default 3G/1G split
1072	  will also likely make your kernel incompatible with binary-only
1073	  kernel modules.
1074
1075	  If you are not absolutely sure what you are doing, leave this
1076	  option alone!
1077
1078	config VMSPLIT_3G
1079		bool "3G/1G user/kernel split"
1080	config VMSPLIT_3G_OPT
1081		depends on !X86_PAE
1082		bool "3G/1G user/kernel split (for full 1G low memory)"
1083	config VMSPLIT_2G
1084		bool "2G/2G user/kernel split"
1085	config VMSPLIT_2G_OPT
1086		depends on !X86_PAE
1087		bool "2G/2G user/kernel split (for full 2G low memory)"
1088	config VMSPLIT_1G
1089		bool "1G/3G user/kernel split"
1090endchoice
1091
1092config PAGE_OFFSET
1093	hex
1094	default 0xB0000000 if VMSPLIT_3G_OPT
1095	default 0x80000000 if VMSPLIT_2G
1096	default 0x78000000 if VMSPLIT_2G_OPT
1097	default 0x40000000 if VMSPLIT_1G
1098	default 0xC0000000
1099	depends on X86_32
1100
1101config HIGHMEM
1102	def_bool y
1103	depends on X86_32 && (HIGHMEM64G || HIGHMEM4G)
1104
1105config X86_PAE
1106	bool "PAE (Physical Address Extension) Support"
1107	depends on X86_32 && !HIGHMEM4G
1108	---help---
1109	  PAE is required for NX support, and furthermore enables
1110	  larger swapspace support for non-overcommit purposes. It
1111	  has the cost of more pagetable lookup overhead, and also
1112	  consumes more pagetable space per process.
1113
1114config ARCH_PHYS_ADDR_T_64BIT
1115	def_bool X86_64 || X86_PAE
1116
1117config DIRECT_GBPAGES
1118	bool "Enable 1GB pages for kernel pagetables" if EMBEDDED
1119	default y
1120	depends on X86_64
1121	---help---
1122	  Allow the kernel linear mapping to use 1GB pages on CPUs that
1123	  support it. This can improve the kernel's performance a tiny bit by
1124	  reducing TLB pressure. If in doubt, say "Y".
1125
1126# Common NUMA Features
1127config NUMA
1128	bool "Numa Memory Allocation and Scheduler Support"
1129	depends on SMP
1130	depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP || X86_SUMMIT && ACPI) && EXPERIMENTAL)
1131	default y if (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP)
1132	---help---
1133	  Enable NUMA (Non Uniform Memory Access) support.
1134
1135	  The kernel will try to allocate memory used by a CPU on the
1136	  local memory controller of the CPU and add some more
1137	  NUMA awareness to the kernel.
1138
1139	  For 64-bit this is recommended if the system is Intel Core i7
1140	  (or later), AMD Opteron, or EM64T NUMA.
1141
1142	  For 32-bit this is only needed on (rare) 32-bit-only platforms
1143	  that support NUMA topologies, such as NUMAQ / Summit, or if you
1144	  boot a 32-bit kernel on a 64-bit NUMA platform.
1145
1146	  Otherwise, you should say N.
1147
1148comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
1149	depends on X86_32 && X86_SUMMIT && (!HIGHMEM64G || !ACPI)
1150
1151config K8_NUMA
1152	def_bool y
1153	prompt "Old style AMD Opteron NUMA detection"
1154	depends on X86_64 && NUMA && PCI
1155	---help---
1156	  Enable K8 NUMA node topology detection.  You should say Y here if
1157	  you have a multi processor AMD K8 system. This uses an old
1158	  method to read the NUMA configuration directly from the builtin
1159	  Northbridge of Opteron. It is recommended to use X86_64_ACPI_NUMA
1160	  instead, which also takes priority if both are compiled in.
1161
1162config X86_64_ACPI_NUMA
1163	def_bool y
1164	prompt "ACPI NUMA detection"
1165	depends on X86_64 && NUMA && ACPI && PCI
1166	select ACPI_NUMA
1167	---help---
1168	  Enable ACPI SRAT based node topology detection.
1169
1170# Some NUMA nodes have memory ranges that span
1171# other nodes.  Even though a pfn is valid and
1172# between a node's start and end pfns, it may not
1173# reside on that node.  See memmap_init_zone()
1174# for details.
1175config NODES_SPAN_OTHER_NODES
1176	def_bool y
1177	depends on X86_64_ACPI_NUMA
1178
1179config NUMA_EMU
1180	bool "NUMA emulation"
1181	depends on X86_64 && NUMA
1182	---help---
1183	  Enable NUMA emulation. A flat machine will be split
1184	  into virtual nodes when booted with "numa=fake=N", where N is the
1185	  number of nodes. This is only useful for debugging.
1186
1187config NODES_SHIFT
1188	int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP
1189	range 1 9
1190	default "9" if MAXSMP
1191	default "6" if X86_64
1192	default "4" if X86_NUMAQ
1193	default "3"
1194	depends on NEED_MULTIPLE_NODES
1195	---help---
1196	  Specify the maximum number of NUMA Nodes available on the target
1197	  system.  Increases memory reserved to accommodate various tables.
1198
1199config HAVE_ARCH_BOOTMEM
1200	def_bool y
1201	depends on X86_32 && NUMA
1202
1203config ARCH_HAVE_MEMORY_PRESENT
1204	def_bool y
1205	depends on X86_32 && DISCONTIGMEM
1206
1207config NEED_NODE_MEMMAP_SIZE
1208	def_bool y
1209	depends on X86_32 && (DISCONTIGMEM || SPARSEMEM)
1210
1211config HAVE_ARCH_ALLOC_REMAP
1212	def_bool y
1213	depends on X86_32 && NUMA
1214
1215config ARCH_FLATMEM_ENABLE
1216	def_bool y
1217	depends on X86_32 && ARCH_SELECT_MEMORY_MODEL && !NUMA
1218
1219config ARCH_DISCONTIGMEM_ENABLE
1220	def_bool y
1221	depends on NUMA && X86_32
1222
1223config ARCH_DISCONTIGMEM_DEFAULT
1224	def_bool y
1225	depends on NUMA && X86_32
1226
1227config ARCH_PROC_KCORE_TEXT
1228	def_bool y
1229	depends on X86_64 && PROC_KCORE
1230
1231config ARCH_SPARSEMEM_DEFAULT
1232	def_bool y
1233	depends on X86_64
1234
1235config ARCH_SPARSEMEM_ENABLE
1236	def_bool y
1237	depends on X86_64 || NUMA || (EXPERIMENTAL && X86_32) || X86_32_NON_STANDARD
1238	select SPARSEMEM_STATIC if X86_32
1239	select SPARSEMEM_VMEMMAP_ENABLE if X86_64
1240
1241config ARCH_SELECT_MEMORY_MODEL
1242	def_bool y
1243	depends on ARCH_SPARSEMEM_ENABLE
1244
1245config ARCH_MEMORY_PROBE
1246	def_bool X86_64
1247	depends on MEMORY_HOTPLUG
1248
1249source "mm/Kconfig"
1250
1251config HIGHPTE
1252	bool "Allocate 3rd-level pagetables from highmem"
1253	depends on X86_32 && (HIGHMEM4G || HIGHMEM64G)
1254	---help---
1255	  The VM uses one page table entry for each page of physical memory.
1256	  For systems with a lot of RAM, this can be wasteful of precious
1257	  low memory.  Setting this option will put user-space page table
1258	  entries in high memory.
1259
1260config X86_CHECK_BIOS_CORRUPTION
1261	bool "Check for low memory corruption"
1262	---help---
1263	  Periodically check for memory corruption in low memory, which
1264	  is suspected to be caused by BIOS.  Even when enabled in the
1265	  configuration, it is disabled at runtime.  Enable it by
1266	  setting "memory_corruption_check=1" on the kernel command
1267	  line.  By default it scans the low 64k of memory every 60
1268	  seconds; see the memory_corruption_check_size and
1269	  memory_corruption_check_period parameters in
1270	  Documentation/kernel-parameters.txt to adjust this.
1271
1272	  When enabled with the default parameters, this option has
1273	  almost no overhead, as it reserves a relatively small amount
1274	  of memory and scans it infrequently.  It both detects corruption
1275	  and prevents it from affecting the running system.
1276
1277	  It is, however, intended as a diagnostic tool; if repeatable
1278	  BIOS-originated corruption always affects the same memory,
1279	  you can use memmap= to prevent the kernel from using that
1280	  memory.
1281
1282config X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
1283	bool "Set the default setting of memory_corruption_check"
1284	depends on X86_CHECK_BIOS_CORRUPTION
1285	default y
1286	---help---
1287	  Set whether the default state of memory_corruption_check is
1288	  on or off.
1289
1290config X86_RESERVE_LOW_64K
1291	bool "Reserve low 64K of RAM on AMI/Phoenix BIOSen"
1292	default y
1293	---help---
1294	  Reserve the first 64K of physical RAM on BIOSes that are known
1295	  to potentially corrupt that memory range. A numbers of BIOSes are
1296	  known to utilize this area during suspend/resume, so it must not
1297	  be used by the kernel.
1298
1299	  Set this to N if you are absolutely sure that you trust the BIOS
1300	  to get all its memory reservations and usages right.
1301
1302	  If you have doubts about the BIOS (e.g. suspend/resume does not
1303	  work or there's kernel crashes after certain hardware hotplug
1304	  events) and it's not AMI or Phoenix, then you might want to enable
1305	  X86_CHECK_BIOS_CORRUPTION=y to allow the kernel to check typical
1306	  corruption patterns.
1307
1308	  Say Y if unsure.
1309
1310config MATH_EMULATION
1311	bool
1312	prompt "Math emulation" if X86_32
1313	---help---
1314	  Linux can emulate a math coprocessor (used for floating point
1315	  operations) if you don't have one. 486DX and Pentium processors have
1316	  a math coprocessor built in, 486SX and 386 do not, unless you added
1317	  a 487DX or 387, respectively. (The messages during boot time can
1318	  give you some hints here ["man dmesg"].) Everyone needs either a
1319	  coprocessor or this emulation.
1320
1321	  If you don't have a math coprocessor, you need to say Y here; if you
1322	  say Y here even though you have a coprocessor, the coprocessor will
1323	  be used nevertheless. (This behavior can be changed with the kernel
1324	  command line option "no387", which comes handy if your coprocessor
1325	  is broken. Try "man bootparam" or see the documentation of your boot
1326	  loader (lilo or loadlin) about how to pass options to the kernel at
1327	  boot time.) This means that it is a good idea to say Y here if you
1328	  intend to use this kernel on different machines.
1329
1330	  More information about the internals of the Linux math coprocessor
1331	  emulation can be found in <file:arch/x86/math-emu/README>.
1332
1333	  If you are not sure, say Y; apart from resulting in a 66 KB bigger
1334	  kernel, it won't hurt.
1335
1336config MTRR
1337	bool
1338	default y
1339	prompt "MTRR (Memory Type Range Register) support" if EMBEDDED
1340	---help---
1341	  On Intel P6 family processors (Pentium Pro, Pentium II and later)
1342	  the Memory Type Range Registers (MTRRs) may be used to control
1343	  processor access to memory ranges. This is most useful if you have
1344	  a video (VGA) card on a PCI or AGP bus. Enabling write-combining
1345	  allows bus write transfers to be combined into a larger transfer
1346	  before bursting over the PCI/AGP bus. This can increase performance
1347	  of image write operations 2.5 times or more. Saying Y here creates a
1348	  /proc/mtrr file which may be used to manipulate your processor's
1349	  MTRRs. Typically the X server should use this.
1350
1351	  This code has a reasonably generic interface so that similar
1352	  control registers on other processors can be easily supported
1353	  as well:
1354
1355	  The Cyrix 6x86, 6x86MX and M II processors have Address Range
1356	  Registers (ARRs) which provide a similar functionality to MTRRs. For
1357	  these, the ARRs are used to emulate the MTRRs.
1358	  The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
1359	  MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing
1360	  write-combining. All of these processors are supported by this code
1361	  and it makes sense to say Y here if you have one of them.
1362
1363	  Saying Y here also fixes a problem with buggy SMP BIOSes which only
1364	  set the MTRRs for the boot CPU and not for the secondary CPUs. This
1365	  can lead to all sorts of problems, so it's good to say Y here.
1366
1367	  You can safely say Y even if your machine doesn't have MTRRs, you'll
1368	  just add about 9 KB to your kernel.
1369
1370	  See <file:Documentation/x86/mtrr.txt> for more information.
1371
1372config MTRR_SANITIZER
1373	def_bool y
1374	prompt "MTRR cleanup support"
1375	depends on MTRR
1376	---help---
1377	  Convert MTRR layout from continuous to discrete, so X drivers can
1378	  add writeback entries.
1379
1380	  Can be disabled with disable_mtrr_cleanup on the kernel command line.
1381	  The largest mtrr entry size for a continuous block can be set with
1382	  mtrr_chunk_size.
1383
1384	  If unsure, say Y.
1385
1386config MTRR_SANITIZER_ENABLE_DEFAULT
1387	int "MTRR cleanup enable value (0-1)"
1388	range 0 1
1389	default "0"
1390	depends on MTRR_SANITIZER
1391	---help---
1392	  Enable mtrr cleanup default value
1393
1394config MTRR_SANITIZER_SPARE_REG_NR_DEFAULT
1395	int "MTRR cleanup spare reg num (0-7)"
1396	range 0 7
1397	default "1"
1398	depends on MTRR_SANITIZER
1399	---help---
1400	  mtrr cleanup spare entries default, it can be changed via
1401	  mtrr_spare_reg_nr=N on the kernel command line.
1402
1403config X86_PAT
1404	bool
1405	default y
1406	prompt "x86 PAT support" if EMBEDDED
1407	depends on MTRR
1408	---help---
1409	  Use PAT attributes to setup page level cache control.
1410
1411	  PATs are the modern equivalents of MTRRs and are much more
1412	  flexible than MTRRs.
1413
1414	  Say N here if you see bootup problems (boot crash, boot hang,
1415	  spontaneous reboots) or a non-working video driver.
1416
1417	  If unsure, say Y.
1418
1419config ARCH_USES_PG_UNCACHED
1420	def_bool y
1421	depends on X86_PAT
1422
1423config EFI
1424	bool "EFI runtime service support"
1425	depends on ACPI
1426	---help---
1427	  This enables the kernel to use EFI runtime services that are
1428	  available (such as the EFI variable services).
1429
1430	  This option is only useful on systems that have EFI firmware.
1431	  In addition, you should use the latest ELILO loader available
1432	  at <http://elilo.sourceforge.net> in order to take advantage
1433	  of EFI runtime services. However, even with this option, the
1434	  resultant kernel should continue to boot on existing non-EFI
1435	  platforms.
1436
1437config SECCOMP
1438	def_bool y
1439	prompt "Enable seccomp to safely compute untrusted bytecode"
1440	---help---
1441	  This kernel feature is useful for number crunching applications
1442	  that may need to compute untrusted bytecode during their
1443	  execution. By using pipes or other transports made available to
1444	  the process as file descriptors supporting the read/write
1445	  syscalls, it's possible to isolate those applications in
1446	  their own address space using seccomp. Once seccomp is
1447	  enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
1448	  and the task is only allowed to execute a few safe syscalls
1449	  defined by each seccomp mode.
1450
1451	  If unsure, say Y. Only embedded should say N here.
1452
1453config CC_STACKPROTECTOR
1454	bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
1455	---help---
1456	  This option turns on the -fstack-protector GCC feature. This
1457	  feature puts, at the beginning of functions, a canary value on
1458	  the stack just before the return address, and validates
1459	  the value just before actually returning.  Stack based buffer
1460	  overflows (that need to overwrite this return address) now also
1461	  overwrite the canary, which gets detected and the attack is then
1462	  neutralized via a kernel panic.
1463
1464	  This feature requires gcc version 4.2 or above, or a distribution
1465	  gcc with the feature backported. Older versions are automatically
1466	  detected and for those versions, this configuration option is
1467	  ignored. (and a warning is printed during bootup)
1468
1469source kernel/Kconfig.hz
1470
1471config KEXEC
1472	bool "kexec system call"
1473	---help---
1474	  kexec is a system call that implements the ability to shutdown your
1475	  current kernel, and to start another kernel.  It is like a reboot
1476	  but it is independent of the system firmware.   And like a reboot
1477	  you can start any kernel with it, not just Linux.
1478
1479	  The name comes from the similarity to the exec system call.
1480
1481	  It is an ongoing process to be certain the hardware in a machine
1482	  is properly shutdown, so do not be surprised if this code does not
1483	  initially work for you.  It may help to enable device hotplugging
1484	  support.  As of this writing the exact hardware interface is
1485	  strongly in flux, so no good recommendation can be made.
1486
1487config CRASH_DUMP
1488	bool "kernel crash dumps"
1489	depends on X86_64 || (X86_32 && HIGHMEM)
1490	---help---
1491	  Generate crash dump after being started by kexec.
1492	  This should be normally only set in special crash dump kernels
1493	  which are loaded in the main kernel with kexec-tools into
1494	  a specially reserved region and then later executed after
1495	  a crash by kdump/kexec. The crash dump kernel must be compiled
1496	  to a memory address not used by the main kernel or BIOS using
1497	  PHYSICAL_START, or it must be built as a relocatable image
1498	  (CONFIG_RELOCATABLE=y).
1499	  For more details see Documentation/kdump/kdump.txt
1500
1501config KEXEC_JUMP
1502	bool "kexec jump (EXPERIMENTAL)"
1503	depends on EXPERIMENTAL
1504	depends on KEXEC && HIBERNATION
1505	---help---
1506	  Jump between original kernel and kexeced kernel and invoke
1507	  code in physical address mode via KEXEC
1508
1509config PHYSICAL_START
1510	hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
1511	default "0x1000000"
1512	---help---
1513	  This gives the physical address where the kernel is loaded.
1514
1515	  If kernel is a not relocatable (CONFIG_RELOCATABLE=n) then
1516	  bzImage will decompress itself to above physical address and
1517	  run from there. Otherwise, bzImage will run from the address where
1518	  it has been loaded by the boot loader and will ignore above physical
1519	  address.
1520
1521	  In normal kdump cases one does not have to set/change this option
1522	  as now bzImage can be compiled as a completely relocatable image
1523	  (CONFIG_RELOCATABLE=y) and be used to load and run from a different
1524	  address. This option is mainly useful for the folks who don't want
1525	  to use a bzImage for capturing the crash dump and want to use a
1526	  vmlinux instead. vmlinux is not relocatable hence a kernel needs
1527	  to be specifically compiled to run from a specific memory area
1528	  (normally a reserved region) and this option comes handy.
1529
1530	  So if you are using bzImage for capturing the crash dump,
1531	  leave the value here unchanged to 0x1000000 and set
1532	  CONFIG_RELOCATABLE=y.  Otherwise if you plan to use vmlinux
1533	  for capturing the crash dump change this value to start of
1534	  the reserved region.  In other words, it can be set based on
1535	  the "X" value as specified in the "crashkernel=YM@XM"
1536	  command line boot parameter passed to the panic-ed
1537	  kernel. Please take a look at Documentation/kdump/kdump.txt
1538	  for more details about crash dumps.
1539
1540	  Usage of bzImage for capturing the crash dump is recommended as
1541	  one does not have to build two kernels. Same kernel can be used
1542	  as production kernel and capture kernel. Above option should have
1543	  gone away after relocatable bzImage support is introduced. But it
1544	  is present because there are users out there who continue to use
1545	  vmlinux for dump capture. This option should go away down the
1546	  line.
1547
1548	  Don't change this unless you know what you are doing.
1549
1550config RELOCATABLE
1551	bool "Build a relocatable kernel"
1552	default y
1553	---help---
1554	  This builds a kernel image that retains relocation information
1555	  so it can be loaded someplace besides the default 1MB.
1556	  The relocations tend to make the kernel binary about 10% larger,
1557	  but are discarded at runtime.
1558
1559	  One use is for the kexec on panic case where the recovery kernel
1560	  must live at a different physical address than the primary
1561	  kernel.
1562
1563	  Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
1564	  it has been loaded at and the compile time physical address
1565	  (CONFIG_PHYSICAL_START) is ignored.
1566
1567# Relocation on x86-32 needs some additional build support
1568config X86_NEED_RELOCS
1569	def_bool y
1570	depends on X86_32 && RELOCATABLE
1571
1572config PHYSICAL_ALIGN
1573	hex
1574	prompt "Alignment value to which kernel should be aligned" if X86_32
1575	default "0x1000000"
1576	range 0x2000 0x1000000
1577	---help---
1578	  This value puts the alignment restrictions on physical address
1579	  where kernel is loaded and run from. Kernel is compiled for an
1580	  address which meets above alignment restriction.
1581
1582	  If bootloader loads the kernel at a non-aligned address and
1583	  CONFIG_RELOCATABLE is set, kernel will move itself to nearest
1584	  address aligned to above value and run from there.
1585
1586	  If bootloader loads the kernel at a non-aligned address and
1587	  CONFIG_RELOCATABLE is not set, kernel will ignore the run time
1588	  load address and decompress itself to the address it has been
1589	  compiled for and run from there. The address for which kernel is
1590	  compiled already meets above alignment restrictions. Hence the
1591	  end result is that kernel runs from a physical address meeting
1592	  above alignment restrictions.
1593
1594	  Don't change this unless you know what you are doing.
1595
1596config HOTPLUG_CPU
1597	bool "Support for hot-pluggable CPUs"
1598	depends on SMP && HOTPLUG
1599	---help---
1600	  Say Y here to allow turning CPUs off and on. CPUs can be
1601	  controlled through /sys/devices/system/cpu.
1602	  ( Note: power management support will enable this option
1603	    automatically on SMP systems. )
1604	  Say N if you want to disable CPU hotplug.
1605
1606config COMPAT_VDSO
1607	def_bool y
1608	prompt "Compat VDSO support"
1609	depends on X86_32 || IA32_EMULATION
1610	---help---
1611	  Map the 32-bit VDSO to the predictable old-style address too.
1612
1613	  Say N here if you are running a sufficiently recent glibc
1614	  version (2.3.3 or later), to remove the high-mapped
1615	  VDSO mapping and to exclusively use the randomized VDSO.
1616
1617	  If unsure, say Y.
1618
1619config CMDLINE_BOOL
1620	bool "Built-in kernel command line"
1621	default n
1622	---help---
1623	  Allow for specifying boot arguments to the kernel at
1624	  build time.  On some systems (e.g. embedded ones), it is
1625	  necessary or convenient to provide some or all of the
1626	  kernel boot arguments with the kernel itself (that is,
1627	  to not rely on the boot loader to provide them.)
1628
1629	  To compile command line arguments into the kernel,
1630	  set this option to 'Y', then fill in the
1631	  the boot arguments in CONFIG_CMDLINE.
1632
1633	  Systems with fully functional boot loaders (i.e. non-embedded)
1634	  should leave this option set to 'N'.
1635
1636config CMDLINE
1637	string "Built-in kernel command string"
1638	depends on CMDLINE_BOOL
1639	default ""
1640	---help---
1641	  Enter arguments here that should be compiled into the kernel
1642	  image and used at boot time.  If the boot loader provides a
1643	  command line at boot time, it is appended to this string to
1644	  form the full kernel command line, when the system boots.
1645
1646	  However, you can use the CONFIG_CMDLINE_OVERRIDE option to
1647	  change this behavior.
1648
1649	  In most cases, the command line (whether built-in or provided
1650	  by the boot loader) should specify the device for the root
1651	  file system.
1652
1653config CMDLINE_OVERRIDE
1654	bool "Built-in command line overrides boot loader arguments"
1655	default n
1656	depends on CMDLINE_BOOL
1657	---help---
1658	  Set this option to 'Y' to have the kernel ignore the boot loader
1659	  command line, and use ONLY the built-in command line.
1660
1661	  This is used to work around broken boot loaders.  This should
1662	  be set to 'N' under normal conditions.
1663
1664endmenu
1665
1666config ARCH_ENABLE_MEMORY_HOTPLUG
1667	def_bool y
1668	depends on X86_64 || (X86_32 && HIGHMEM)
1669
1670config ARCH_ENABLE_MEMORY_HOTREMOVE
1671	def_bool y
1672	depends on MEMORY_HOTPLUG
1673
1674config HAVE_ARCH_EARLY_PFN_TO_NID
1675	def_bool X86_64
1676	depends on NUMA
1677
1678menu "Power management and ACPI options"
1679
1680config ARCH_HIBERNATION_HEADER
1681	def_bool y
1682	depends on X86_64 && HIBERNATION
1683
1684source "kernel/power/Kconfig"
1685
1686source "drivers/acpi/Kconfig"
1687
1688source "drivers/sfi/Kconfig"
1689
1690config X86_APM_BOOT
1691	bool
1692	default y
1693	depends on APM || APM_MODULE
1694
1695menuconfig APM
1696	tristate "APM (Advanced Power Management) BIOS support"
1697	depends on X86_32 && PM_SLEEP
1698	---help---
1699	  APM is a BIOS specification for saving power using several different
1700	  techniques. This is mostly useful for battery powered laptops with
1701	  APM compliant BIOSes. If you say Y here, the system time will be
1702	  reset after a RESUME operation, the /proc/apm device will provide
1703	  battery status information, and user-space programs will receive
1704	  notification of APM "events" (e.g. battery status change).
1705
1706	  If you select "Y" here, you can disable actual use of the APM
1707	  BIOS by passing the "apm=off" option to the kernel at boot time.
1708
1709	  Note that the APM support is almost completely disabled for
1710	  machines with more than one CPU.
1711
1712	  In order to use APM, you will need supporting software. For location
1713	  and more information, read <file:Documentation/power/pm.txt> and the
1714	  Battery Powered Linux mini-HOWTO, available from
1715	  <http://www.tldp.org/docs.html#howto>.
1716
1717	  This driver does not spin down disk drives (see the hdparm(8)
1718	  manpage ("man 8 hdparm") for that), and it doesn't turn off
1719	  VESA-compliant "green" monitors.
1720
1721	  This driver does not support the TI 4000M TravelMate and the ACER
1722	  486/DX4/75 because they don't have compliant BIOSes. Many "green"
1723	  desktop machines also don't have compliant BIOSes, and this driver
1724	  may cause those machines to panic during the boot phase.
1725
1726	  Generally, if you don't have a battery in your machine, there isn't
1727	  much point in using this driver and you should say N. If you get
1728	  random kernel OOPSes or reboots that don't seem to be related to
1729	  anything, try disabling/enabling this option (or disabling/enabling
1730	  APM in your BIOS).
1731
1732	  Some other things you should try when experiencing seemingly random,
1733	  "weird" problems:
1734
1735	  1) make sure that you have enough swap space and that it is
1736	  enabled.
1737	  2) pass the "no-hlt" option to the kernel
1738	  3) switch on floating point emulation in the kernel and pass
1739	  the "no387" option to the kernel
1740	  4) pass the "floppy=nodma" option to the kernel
1741	  5) pass the "mem=4M" option to the kernel (thereby disabling
1742	  all but the first 4 MB of RAM)
1743	  6) make sure that the CPU is not over clocked.
1744	  7) read the sig11 FAQ at <http://www.bitwizard.nl/sig11/>
1745	  8) disable the cache from your BIOS settings
1746	  9) install a fan for the video card or exchange video RAM
1747	  10) install a better fan for the CPU
1748	  11) exchange RAM chips
1749	  12) exchange the motherboard.
1750
1751	  To compile this driver as a module, choose M here: the
1752	  module will be called apm.
1753
1754if APM
1755
1756config APM_IGNORE_USER_SUSPEND
1757	bool "Ignore USER SUSPEND"
1758	---help---
1759	  This option will ignore USER SUSPEND requests. On machines with a
1760	  compliant APM BIOS, you want to say N. However, on the NEC Versa M
1761	  series notebooks, it is necessary to say Y because of a BIOS bug.
1762
1763config APM_DO_ENABLE
1764	bool "Enable PM at boot time"
1765	---help---
1766	  Enable APM features at boot time. From page 36 of the APM BIOS
1767	  specification: "When disabled, the APM BIOS does not automatically
1768	  power manage devices, enter the Standby State, enter the Suspend
1769	  State, or take power saving steps in response to CPU Idle calls."
1770	  This driver will make CPU Idle calls when Linux is idle (unless this
1771	  feature is turned off -- see "Do CPU IDLE calls", below). This
1772	  should always save battery power, but more complicated APM features
1773	  will be dependent on your BIOS implementation. You may need to turn
1774	  this option off if your computer hangs at boot time when using APM
1775	  support, or if it beeps continuously instead of suspending. Turn
1776	  this off if you have a NEC UltraLite Versa 33/C or a Toshiba
1777	  T400CDT. This is off by default since most machines do fine without
1778	  this feature.
1779
1780config APM_CPU_IDLE
1781	bool "Make CPU Idle calls when idle"
1782	---help---
1783	  Enable calls to APM CPU Idle/CPU Busy inside the kernel's idle loop.
1784	  On some machines, this can activate improved power savings, such as
1785	  a slowed CPU clock rate, when the machine is idle. These idle calls
1786	  are made after the idle loop has run for some length of time (e.g.,
1787	  333 mS). On some machines, this will cause a hang at boot time or
1788	  whenever the CPU becomes idle. (On machines with more than one CPU,
1789	  this option does nothing.)
1790
1791config APM_DISPLAY_BLANK
1792	bool "Enable console blanking using APM"
1793	---help---
1794	  Enable console blanking using the APM. Some laptops can use this to
1795	  turn off the LCD backlight when the screen blanker of the Linux
1796	  virtual console blanks the screen. Note that this is only used by
1797	  the virtual console screen blanker, and won't turn off the backlight
1798	  when using the X Window system. This also doesn't have anything to
1799	  do with your VESA-compliant power-saving monitor. Further, this
1800	  option doesn't work for all laptops -- it might not turn off your
1801	  backlight at all, or it might print a lot of errors to the console,
1802	  especially if you are using gpm.
1803
1804config APM_ALLOW_INTS
1805	bool "Allow interrupts during APM BIOS calls"
1806	---help---
1807	  Normally we disable external interrupts while we are making calls to
1808	  the APM BIOS as a measure to lessen the effects of a badly behaving
1809	  BIOS implementation.  The BIOS should reenable interrupts if it
1810	  needs to.  Unfortunately, some BIOSes do not -- especially those in
1811	  many of the newer IBM Thinkpads.  If you experience hangs when you
1812	  suspend, try setting this to Y.  Otherwise, say N.
1813
1814endif # APM
1815
1816source "arch/x86/kernel/cpu/cpufreq/Kconfig"
1817
1818source "drivers/cpuidle/Kconfig"
1819
1820source "drivers/idle/Kconfig"
1821
1822endmenu
1823
1824
1825menu "Bus options (PCI etc.)"
1826
1827config PCI
1828	bool "PCI support"
1829	default y
1830	select ARCH_SUPPORTS_MSI if (X86_LOCAL_APIC && X86_IO_APIC)
1831	---help---
1832	  Find out whether you have a PCI motherboard. PCI is the name of a
1833	  bus system, i.e. the way the CPU talks to the other stuff inside
1834	  your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
1835	  VESA. If you have PCI, say Y, otherwise N.
1836
1837choice
1838	prompt "PCI access mode"
1839	depends on X86_32 && PCI
1840	default PCI_GOANY
1841	---help---
1842	  On PCI systems, the BIOS can be used to detect the PCI devices and
1843	  determine their configuration. However, some old PCI motherboards
1844	  have BIOS bugs and may crash if this is done. Also, some embedded
1845	  PCI-based systems don't have any BIOS at all. Linux can also try to
1846	  detect the PCI hardware directly without using the BIOS.
1847
1848	  With this option, you can specify how Linux should detect the
1849	  PCI devices. If you choose "BIOS", the BIOS will be used,
1850	  if you choose "Direct", the BIOS won't be used, and if you
1851	  choose "MMConfig", then PCI Express MMCONFIG will be used.
1852	  If you choose "Any", the kernel will try MMCONFIG, then the
1853	  direct access method and falls back to the BIOS if that doesn't
1854	  work. If unsure, go with the default, which is "Any".
1855
1856config PCI_GOBIOS
1857	bool "BIOS"
1858
1859config PCI_GOMMCONFIG
1860	bool "MMConfig"
1861
1862config PCI_GODIRECT
1863	bool "Direct"
1864
1865config PCI_GOOLPC
1866	bool "OLPC"
1867	depends on OLPC
1868
1869config PCI_GOANY
1870	bool "Any"
1871
1872endchoice
1873
1874config PCI_BIOS
1875	def_bool y
1876	depends on X86_32 && PCI && (PCI_GOBIOS || PCI_GOANY)
1877
1878# x86-64 doesn't support PCI BIOS access from long mode so always go direct.
1879config PCI_DIRECT
1880	def_bool y
1881	depends on PCI && (X86_64 || (PCI_GODIRECT || PCI_GOANY || PCI_GOOLPC))
1882
1883config PCI_MMCONFIG
1884	def_bool y
1885	depends on X86_32 && PCI && (ACPI || SFI) && (PCI_GOMMCONFIG || PCI_GOANY)
1886
1887config PCI_OLPC
1888	def_bool y
1889	depends on PCI && OLPC && (PCI_GOOLPC || PCI_GOANY)
1890
1891config PCI_DOMAINS
1892	def_bool y
1893	depends on PCI
1894
1895config PCI_MMCONFIG
1896	bool "Support mmconfig PCI config space access"
1897	depends on X86_64 && PCI && ACPI
1898
1899config DMAR
1900	bool "Support for DMA Remapping Devices (EXPERIMENTAL)"
1901	depends on PCI_MSI && ACPI && EXPERIMENTAL
1902	help
1903	  DMA remapping (DMAR) devices support enables independent address
1904	  translations for Direct Memory Access (DMA) from devices.
1905	  These DMA remapping devices are reported via ACPI tables
1906	  and include PCI device scope covered by these DMA
1907	  remapping devices.
1908
1909config DMAR_DEFAULT_ON
1910	def_bool y
1911	prompt "Enable DMA Remapping Devices by default"
1912	depends on DMAR
1913	help
1914	  Selecting this option will enable a DMAR device at boot time if
1915	  one is found. If this option is not selected, DMAR support can
1916	  be enabled by passing intel_iommu=on to the kernel. It is
1917	  recommended you say N here while the DMAR code remains
1918	  experimental.
1919
1920config DMAR_BROKEN_GFX_WA
1921	def_bool n
1922	prompt "Workaround broken graphics drivers (going away soon)"
1923	depends on DMAR && BROKEN
1924	---help---
1925	  Current Graphics drivers tend to use physical address
1926	  for DMA and avoid using DMA APIs. Setting this config
1927	  option permits the IOMMU driver to set a unity map for
1928	  all the OS-visible memory. Hence the driver can continue
1929	  to use physical addresses for DMA, at least until this
1930	  option is removed in the 2.6.32 kernel.
1931
1932config DMAR_FLOPPY_WA
1933	def_bool y
1934	depends on DMAR
1935	---help---
1936	  Floppy disk drivers are known to bypass DMA API calls
1937	  thereby failing to work when IOMMU is enabled. This
1938	  workaround will setup a 1:1 mapping for the first
1939	  16MiB to make floppy (an ISA device) work.
1940
1941config INTR_REMAP
1942	bool "Support for Interrupt Remapping (EXPERIMENTAL)"
1943	depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI && EXPERIMENTAL
1944	---help---
1945	  Supports Interrupt remapping for IO-APIC and MSI devices.
1946	  To use x2apic mode in the CPU's which support x2APIC enhancements or
1947	  to support platforms with CPU's having > 8 bit APIC ID, say Y.
1948
1949source "drivers/pci/pcie/Kconfig"
1950
1951source "drivers/pci/Kconfig"
1952
1953# x86_64 have no ISA slots, but do have ISA-style DMA.
1954config ISA_DMA_API
1955	def_bool y
1956
1957if X86_32
1958
1959config ISA
1960	bool "ISA support"
1961	---help---
1962	  Find out whether you have ISA slots on your motherboard.  ISA is the
1963	  name of a bus system, i.e. the way the CPU talks to the other stuff
1964	  inside your box.  Other bus systems are PCI, EISA, MicroChannel
1965	  (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
1966	  newer boards don't support it.  If you have ISA, say Y, otherwise N.
1967
1968config EISA
1969	bool "EISA support"
1970	depends on ISA
1971	---help---
1972	  The Extended Industry Standard Architecture (EISA) bus was
1973	  developed as an open alternative to the IBM MicroChannel bus.
1974
1975	  The EISA bus provided some of the features of the IBM MicroChannel
1976	  bus while maintaining backward compatibility with cards made for
1977	  the older ISA bus.  The EISA bus saw limited use between 1988 and
1978	  1995 when it was made obsolete by the PCI bus.
1979
1980	  Say Y here if you are building a kernel for an EISA-based machine.
1981
1982	  Otherwise, say N.
1983
1984source "drivers/eisa/Kconfig"
1985
1986config MCA
1987	bool "MCA support"
1988	---help---
1989	  MicroChannel Architecture is found in some IBM PS/2 machines and
1990	  laptops.  It is a bus system similar to PCI or ISA. See
1991	  <file:Documentation/mca.txt> (and especially the web page given
1992	  there) before attempting to build an MCA bus kernel.
1993
1994source "drivers/mca/Kconfig"
1995
1996config SCx200
1997	tristate "NatSemi SCx200 support"
1998	---help---
1999	  This provides basic support for National Semiconductor's
2000	  (now AMD's) Geode processors.  The driver probes for the
2001	  PCI-IDs of several on-chip devices, so its a good dependency
2002	  for other scx200_* drivers.
2003
2004	  If compiled as a module, the driver is named scx200.
2005
2006config SCx200HR_TIMER
2007	tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
2008	depends on SCx200 && GENERIC_TIME
2009	default y
2010	---help---
2011	  This driver provides a clocksource built upon the on-chip
2012	  27MHz high-resolution timer.  Its also a workaround for
2013	  NSC Geode SC-1100's buggy TSC, which loses time when the
2014	  processor goes idle (as is done by the scheduler).  The
2015	  other workaround is idle=poll boot option.
2016
2017config OLPC
2018	bool "One Laptop Per Child support"
2019	select GPIOLIB
2020	default n
2021	---help---
2022	  Add support for detecting the unique features of the OLPC
2023	  XO hardware.
2024
2025endif # X86_32
2026
2027config K8_NB
2028	def_bool y
2029	depends on AGP_AMD64 || (X86_64 && (GART_IOMMU || (PCI && NUMA)))
2030
2031source "drivers/pcmcia/Kconfig"
2032
2033source "drivers/pci/hotplug/Kconfig"
2034
2035endmenu
2036
2037
2038menu "Executable file formats / Emulations"
2039
2040source "fs/Kconfig.binfmt"
2041
2042config IA32_EMULATION
2043	bool "IA32 Emulation"
2044	depends on X86_64
2045	select COMPAT_BINFMT_ELF
2046	---help---
2047	  Include code to run 32-bit programs under a 64-bit kernel. You should
2048	  likely turn this on, unless you're 100% sure that you don't have any
2049	  32-bit programs left.
2050
2051config IA32_AOUT
2052	tristate "IA32 a.out support"
2053	depends on IA32_EMULATION
2054	---help---
2055	  Support old a.out binaries in the 32bit emulation.
2056
2057config COMPAT
2058	def_bool y
2059	depends on IA32_EMULATION
2060
2061config COMPAT_FOR_U64_ALIGNMENT
2062	def_bool COMPAT
2063	depends on X86_64
2064
2065config SYSVIPC_COMPAT
2066	def_bool y
2067	depends on COMPAT && SYSVIPC
2068
2069endmenu
2070
2071
2072config HAVE_ATOMIC_IOMAP
2073	def_bool y
2074	depends on X86_32
2075
2076source "net/Kconfig"
2077
2078source "drivers/Kconfig"
2079
2080source "drivers/firmware/Kconfig"
2081
2082source "fs/Kconfig"
2083
2084source "arch/x86/Kconfig.debug"
2085
2086source "security/Kconfig"
2087
2088source "crypto/Kconfig"
2089
2090source "arch/x86/kvm/Kconfig"
2091
2092source "lib/Kconfig"
2093