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