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