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