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