Linux 2.6.22-rc3
[linux-2.6/next.git] / arch / i386 / Kconfig
blob8770a5d0b1433fbad255d0de00bb8b21fecfb592
2 # For a description of the syntax of this configuration file,
3 # see Documentation/kbuild/kconfig-language.txt.
6 mainmenu "Linux Kernel Configuration"
8 config X86_32
9         bool
10         default y
11         help
12           This is Linux's home port.  Linux was originally native to the Intel
13           386, and runs on all the later x86 processors including the Intel
14           486, 586, Pentiums, and various instruction-set-compatible chips by
15           AMD, Cyrix, and others.
17 config GENERIC_TIME
18         bool
19         default y
21 config CLOCKSOURCE_WATCHDOG
22         bool
23         default y
25 config GENERIC_CLOCKEVENTS
26         bool
27         default y
29 config GENERIC_CLOCKEVENTS_BROADCAST
30         bool
31         default y
32         depends on X86_LOCAL_APIC
34 config LOCKDEP_SUPPORT
35         bool
36         default y
38 config STACKTRACE_SUPPORT
39         bool
40         default y
42 config SEMAPHORE_SLEEPERS
43         bool
44         default y
46 config X86
47         bool
48         default y
50 config MMU
51         bool
52         default y
54 config ZONE_DMA
55         bool
56         default y
58 config QUICKLIST
59         bool
60         default y
62 config SBUS
63         bool
65 config GENERIC_ISA_DMA
66         bool
67         default y
69 config GENERIC_IOMAP
70         bool
71         default y
73 config GENERIC_BUG
74         bool
75         default y
76         depends on BUG
78 config GENERIC_HWEIGHT
79         bool
80         default y
82 config ARCH_MAY_HAVE_PC_FDC
83         bool
84         default y
86 config DMI
87         bool
88         default y
90 source "init/Kconfig"
92 menu "Processor type and features"
94 source "kernel/time/Kconfig"
96 config SMP
97         bool "Symmetric multi-processing support"
98         ---help---
99           This enables support for systems with more than one CPU. If you have
100           a system with only one CPU, like most personal computers, say N. If
101           you have a system with more than one CPU, say Y.
103           If you say N here, the kernel will run on single and multiprocessor
104           machines, but will use only one CPU of a multiprocessor machine. If
105           you say Y here, the kernel will run on many, but not all,
106           singleprocessor machines. On a singleprocessor machine, the kernel
107           will run faster if you say N here.
109           Note that if you say Y here and choose architecture "586" or
110           "Pentium" under "Processor family", the kernel will not work on 486
111           architectures. Similarly, multiprocessor kernels for the "PPro"
112           architecture may not work on all Pentium based boards.
114           People using multiprocessor machines who say Y here should also say
115           Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
116           Management" code will be disabled if you say Y here.
118           See also the <file:Documentation/smp.txt>,
119           <file:Documentation/i386/IO-APIC.txt>,
120           <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
121           <http://www.tldp.org/docs.html#howto>.
123           If you don't know what to do here, say N.
125 choice
126         prompt "Subarchitecture Type"
127         default X86_PC
129 config X86_PC
130         bool "PC-compatible"
131         help
132           Choose this option if your computer is a standard PC or compatible.
134 config X86_ELAN
135         bool "AMD Elan"
136         help
137           Select this for an AMD Elan processor.
139           Do not use this option for K6/Athlon/Opteron processors!
141           If unsure, choose "PC-compatible" instead.
143 config X86_VOYAGER
144         bool "Voyager (NCR)"
145         help
146           Voyager is an MCA-based 32-way capable SMP architecture proprietary
147           to NCR Corp.  Machine classes 345x/35xx/4100/51xx are Voyager-based.
149           *** WARNING ***
151           If you do not specifically know you have a Voyager based machine,
152           say N here, otherwise the kernel you build will not be bootable.
154 config X86_NUMAQ
155         bool "NUMAQ (IBM/Sequent)"
156         select SMP
157         select NUMA
158         help
159           This option is used for getting Linux to run on a (IBM/Sequent) NUMA
160           multiquad box. This changes the way that processors are bootstrapped,
161           and uses Clustered Logical APIC addressing mode instead of Flat Logical.
162           You will need a new lynxer.elf file to flash your firmware with - send
163           email to <Martin.Bligh@us.ibm.com>.
165 config X86_SUMMIT
166         bool "Summit/EXA (IBM x440)"
167         depends on SMP
168         help
169           This option is needed for IBM systems that use the Summit/EXA chipset.
170           In particular, it is needed for the x440.
172           If you don't have one of these computers, you should say N here.
173           If you want to build a NUMA kernel, you must select ACPI.
175 config X86_BIGSMP
176         bool "Support for other sub-arch SMP systems with more than 8 CPUs"
177         depends on SMP
178         help
179           This option is needed for the systems that have more than 8 CPUs
180           and if the system is not of any sub-arch type above.
182           If you don't have such a system, you should say N here.
184 config X86_VISWS
185         bool "SGI 320/540 (Visual Workstation)"
186         help
187           The SGI Visual Workstation series is an IA32-based workstation
188           based on SGI systems chips with some legacy PC hardware attached.
190           Say Y here to create a kernel to run on the SGI 320 or 540.
192           A kernel compiled for the Visual Workstation will not run on PCs
193           and vice versa. See <file:Documentation/sgi-visws.txt> for details.
195 config X86_GENERICARCH
196        bool "Generic architecture (Summit, bigsmp, ES7000, default)"
197        help
198           This option compiles in the Summit, bigsmp, ES7000, default subarchitectures.
199           It is intended for a generic binary kernel.
200           If you want a NUMA kernel, select ACPI.   We need SRAT for NUMA.
202 config X86_ES7000
203         bool "Support for Unisys ES7000 IA32 series"
204         depends on SMP
205         help
206           Support for Unisys ES7000 systems.  Say 'Y' here if this kernel is
207           supposed to run on an IA32-based Unisys ES7000 system.
208           Only choose this option if you have such a system, otherwise you
209           should say N here.
211 endchoice
213 config PARAVIRT
214         bool "Paravirtualization support (EXPERIMENTAL)"
215         depends on EXPERIMENTAL
216         depends on !(X86_VISWS || X86_VOYAGER)
217         help
218           Paravirtualization is a way of running multiple instances of
219           Linux on the same machine, under a hypervisor.  This option
220           changes the kernel so it can modify itself when it is run
221           under a hypervisor, improving performance significantly.
222           However, when run without a hypervisor the kernel is
223           theoretically slower.  If in doubt, say N.
225 config VMI
226         bool "VMI Paravirt-ops support"
227         depends on PARAVIRT
228         help
229           VMI provides a paravirtualized interface to the VMware ESX server
230           (it could be used by other hypervisors in theory too, but is not
231           at the moment), by linking the kernel to a GPL-ed ROM module
232           provided by the hypervisor.
234 config ACPI_SRAT
235         bool
236         default y
237         depends on ACPI && NUMA && (X86_SUMMIT || X86_GENERICARCH)
238         select ACPI_NUMA
240 config HAVE_ARCH_PARSE_SRAT
241        bool
242        default y
243        depends on ACPI_SRAT
245 config X86_SUMMIT_NUMA
246         bool
247         default y
248         depends on NUMA && (X86_SUMMIT || X86_GENERICARCH)
250 config X86_CYCLONE_TIMER
251         bool
252         default y
253         depends on X86_SUMMIT || X86_GENERICARCH
255 config ES7000_CLUSTERED_APIC
256         bool
257         default y
258         depends on SMP && X86_ES7000 && MPENTIUMIII
260 source "arch/i386/Kconfig.cpu"
262 config HPET_TIMER
263         bool "HPET Timer Support"
264         help
265           This enables the use of the HPET for the kernel's internal timer.
266           HPET is the next generation timer replacing legacy 8254s.
267           You can safely choose Y here.  However, HPET will only be
268           activated if the platform and the BIOS support this feature.
269           Otherwise the 8254 will be used for timing services.
271           Choose N to continue using the legacy 8254 timer.
273 config HPET_EMULATE_RTC
274         bool
275         depends on HPET_TIMER && RTC=y
276         default y
278 config NR_CPUS
279         int "Maximum number of CPUs (2-255)"
280         range 2 255
281         depends on SMP
282         default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000
283         default "8"
284         help
285           This allows you to specify the maximum number of CPUs which this
286           kernel will support.  The maximum supported value is 255 and the
287           minimum value which makes sense is 2.
289           This is purely to save memory - each supported CPU adds
290           approximately eight kilobytes to the kernel image.
292 config SCHED_SMT
293         bool "SMT (Hyperthreading) scheduler support"
294         depends on X86_HT
295         help
296           SMT scheduler support improves the CPU scheduler's decision making
297           when dealing with Intel Pentium 4 chips with HyperThreading at a
298           cost of slightly increased overhead in some places. If unsure say
299           N here.
301 config SCHED_MC
302         bool "Multi-core scheduler support"
303         depends on X86_HT
304         default y
305         help
306           Multi-core scheduler support improves the CPU scheduler's decision
307           making when dealing with multi-core CPU chips at a cost of slightly
308           increased overhead in some places. If unsure say N here.
310 source "kernel/Kconfig.preempt"
312 config X86_UP_APIC
313         bool "Local APIC support on uniprocessors"
314         depends on !SMP && !(X86_VISWS || X86_VOYAGER || X86_GENERICARCH)
315         help
316           A local APIC (Advanced Programmable Interrupt Controller) is an
317           integrated interrupt controller in the CPU. If you have a single-CPU
318           system which has a processor with a local APIC, you can say Y here to
319           enable and use it. If you say Y here even though your machine doesn't
320           have a local APIC, then the kernel will still run with no slowdown at
321           all. The local APIC supports CPU-generated self-interrupts (timer,
322           performance counters), and the NMI watchdog which detects hard
323           lockups.
325 config X86_UP_IOAPIC
326         bool "IO-APIC support on uniprocessors"
327         depends on X86_UP_APIC
328         help
329           An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an
330           SMP-capable replacement for PC-style interrupt controllers. Most
331           SMP systems and many recent uniprocessor systems have one.
333           If you have a single-CPU system with an IO-APIC, you can say Y here
334           to use it. If you say Y here even though your machine doesn't have
335           an IO-APIC, then the kernel will still run with no slowdown at all.
337 config X86_LOCAL_APIC
338         bool
339         depends on X86_UP_APIC || ((X86_VISWS || SMP) && !X86_VOYAGER) || X86_GENERICARCH
340         default y
342 config X86_IO_APIC
343         bool
344         depends on X86_UP_IOAPIC || (SMP && !(X86_VISWS || X86_VOYAGER)) || X86_GENERICARCH
345         default y
347 config X86_VISWS_APIC
348         bool
349         depends on X86_VISWS
350         default y
352 config X86_MCE
353         bool "Machine Check Exception"
354         depends on !X86_VOYAGER
355         ---help---
356           Machine Check Exception support allows the processor to notify the
357           kernel if it detects a problem (e.g. overheating, component failure).
358           The action the kernel takes depends on the severity of the problem,
359           ranging from a warning message on the console, to halting the machine.
360           Your processor must be a Pentium or newer to support this - check the
361           flags in /proc/cpuinfo for mce.  Note that some older Pentium systems
362           have a design flaw which leads to false MCE events - hence MCE is
363           disabled on all P5 processors, unless explicitly enabled with "mce"
364           as a boot argument.  Similarly, if MCE is built in and creates a
365           problem on some new non-standard machine, you can boot with "nomce"
366           to disable it.  MCE support simply ignores non-MCE processors like
367           the 386 and 486, so nearly everyone can say Y here.
369 config X86_MCE_NONFATAL
370         tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4"
371         depends on X86_MCE
372         help
373           Enabling this feature starts a timer that triggers every 5 seconds which
374           will look at the machine check registers to see if anything happened.
375           Non-fatal problems automatically get corrected (but still logged).
376           Disable this if you don't want to see these messages.
377           Seeing the messages this option prints out may be indicative of dying hardware,
378           or out-of-spec (ie, overclocked) hardware.
379           This option only does something on certain CPUs.
380           (AMD Athlon/Duron and Intel Pentium 4)
382 config X86_MCE_P4THERMAL
383         bool "check for P4 thermal throttling interrupt."
384         depends on X86_MCE && (X86_UP_APIC || SMP) && !X86_VISWS
385         help
386           Enabling this feature will cause a message to be printed when the P4
387           enters thermal throttling.
389 config VM86
390         default y
391         bool "Enable VM86 support" if EMBEDDED
392         help
393           This option is required by programs like DOSEMU to run 16-bit legacy
394           code on X86 processors. It also may be needed by software like
395           XFree86 to initialize some video cards via BIOS. Disabling this
396           option saves about 6k.
398 config TOSHIBA
399         tristate "Toshiba Laptop support"
400         ---help---
401           This adds a driver to safely access the System Management Mode of
402           the CPU on Toshiba portables with a genuine Toshiba BIOS. It does
403           not work on models with a Phoenix BIOS. The System Management Mode
404           is used to set the BIOS and power saving options on Toshiba portables.
406           For information on utilities to make use of this driver see the
407           Toshiba Linux utilities web site at:
408           <http://www.buzzard.org.uk/toshiba/>.
410           Say Y if you intend to run this kernel on a Toshiba portable.
411           Say N otherwise.
413 config I8K
414         tristate "Dell laptop support"
415         ---help---
416           This adds a driver to safely access the System Management Mode
417           of the CPU on the Dell Inspiron 8000. The System Management Mode
418           is used to read cpu temperature and cooling fan status and to
419           control the fans on the I8K portables.
421           This driver has been tested only on the Inspiron 8000 but it may
422           also work with other Dell laptops. You can force loading on other
423           models by passing the parameter `force=1' to the module. Use at
424           your own risk.
426           For information on utilities to make use of this driver see the
427           I8K Linux utilities web site at:
428           <http://people.debian.org/~dz/i8k/>
430           Say Y if you intend to run this kernel on a Dell Inspiron 8000.
431           Say N otherwise.
433 config X86_REBOOTFIXUPS
434         bool "Enable X86 board specific fixups for reboot"
435         depends on X86
436         default n
437         ---help---
438           This enables chipset and/or board specific fixups to be done
439           in order to get reboot to work correctly. This is only needed on
440           some combinations of hardware and BIOS. The symptom, for which
441           this config is intended, is when reboot ends with a stalled/hung
442           system.
444           Currently, the only fixup is for the Geode GX1/CS5530A/TROM2.1.
445           combination.
447           Say Y if you want to enable the fixup. Currently, it's safe to
448           enable this option even if you don't need it.
449           Say N otherwise.
451 config MICROCODE
452         tristate "/dev/cpu/microcode - Intel IA32 CPU microcode support"
453         select FW_LOADER
454         ---help---
455           If you say Y here and also to "/dev file system support" in the
456           'File systems' section, you will be able to update the microcode on
457           Intel processors in the IA32 family, e.g. Pentium Pro, Pentium II,
458           Pentium III, Pentium 4, Xeon etc.  You will obviously need the
459           actual microcode binary data itself which is not shipped with the
460           Linux kernel.
462           For latest news and information on obtaining all the required
463           ingredients for this driver, check:
464           <http://www.urbanmyth.org/microcode/>.
466           To compile this driver as a module, choose M here: the
467           module will be called microcode.
469 config MICROCODE_OLD_INTERFACE
470         bool
471         depends on MICROCODE
472         default y
474 config X86_MSR
475         tristate "/dev/cpu/*/msr - Model-specific register support"
476         help
477           This device gives privileged processes access to the x86
478           Model-Specific Registers (MSRs).  It is a character device with
479           major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
480           MSR accesses are directed to a specific CPU on multi-processor
481           systems.
483 config X86_CPUID
484         tristate "/dev/cpu/*/cpuid - CPU information support"
485         help
486           This device gives processes access to the x86 CPUID instruction to
487           be executed on a specific processor.  It is a character device
488           with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
489           /dev/cpu/31/cpuid.
491 source "drivers/firmware/Kconfig"
493 choice
494         prompt "High Memory Support"
495         default HIGHMEM4G if !X86_NUMAQ
496         default HIGHMEM64G if X86_NUMAQ
498 config NOHIGHMEM
499         bool "off"
500         depends on !X86_NUMAQ
501         ---help---
502           Linux can use up to 64 Gigabytes of physical memory on x86 systems.
503           However, the address space of 32-bit x86 processors is only 4
504           Gigabytes large. That means that, if you have a large amount of
505           physical memory, not all of it can be "permanently mapped" by the
506           kernel. The physical memory that's not permanently mapped is called
507           "high memory".
509           If you are compiling a kernel which will never run on a machine with
510           more than 1 Gigabyte total physical RAM, answer "off" here (default
511           choice and suitable for most users). This will result in a "3GB/1GB"
512           split: 3GB are mapped so that each process sees a 3GB virtual memory
513           space and the remaining part of the 4GB virtual memory space is used
514           by the kernel to permanently map as much physical memory as
515           possible.
517           If the machine has between 1 and 4 Gigabytes physical RAM, then
518           answer "4GB" here.
520           If more than 4 Gigabytes is used then answer "64GB" here. This
521           selection turns Intel PAE (Physical Address Extension) mode on.
522           PAE implements 3-level paging on IA32 processors. PAE is fully
523           supported by Linux, PAE mode is implemented on all recent Intel
524           processors (Pentium Pro and better). NOTE: If you say "64GB" here,
525           then the kernel will not boot on CPUs that don't support PAE!
527           The actual amount of total physical memory will either be
528           auto detected or can be forced by using a kernel command line option
529           such as "mem=256M". (Try "man bootparam" or see the documentation of
530           your boot loader (lilo or loadlin) about how to pass options to the
531           kernel at boot time.)
533           If unsure, say "off".
535 config HIGHMEM4G
536         bool "4GB"
537         depends on !X86_NUMAQ
538         help
539           Select this if you have a 32-bit processor and between 1 and 4
540           gigabytes of physical RAM.
542 config HIGHMEM64G
543         bool "64GB"
544         depends on X86_CMPXCHG64
545         help
546           Select this if you have a 32-bit processor and more than 4
547           gigabytes of physical RAM.
549 endchoice
551 choice
552         depends on EXPERIMENTAL
553         prompt "Memory split" if EMBEDDED
554         default VMSPLIT_3G
555         help
556           Select the desired split between kernel and user memory.
558           If the address range available to the kernel is less than the
559           physical memory installed, the remaining memory will be available
560           as "high memory". Accessing high memory is a little more costly
561           than low memory, as it needs to be mapped into the kernel first.
562           Note that increasing the kernel address space limits the range
563           available to user programs, making the address space there
564           tighter.  Selecting anything other than the default 3G/1G split
565           will also likely make your kernel incompatible with binary-only
566           kernel modules.
568           If you are not absolutely sure what you are doing, leave this
569           option alone!
571         config VMSPLIT_3G
572                 bool "3G/1G user/kernel split"
573         config VMSPLIT_3G_OPT
574                 depends on !HIGHMEM
575                 bool "3G/1G user/kernel split (for full 1G low memory)"
576         config VMSPLIT_2G
577                 bool "2G/2G user/kernel split"
578         config VMSPLIT_2G_OPT
579                 depends on !HIGHMEM
580                 bool "2G/2G user/kernel split (for full 2G low memory)"
581         config VMSPLIT_1G
582                 bool "1G/3G user/kernel split"
583 endchoice
585 config PAGE_OFFSET
586         hex
587         default 0xB0000000 if VMSPLIT_3G_OPT
588         default 0x80000000 if VMSPLIT_2G
589         default 0x78000000 if VMSPLIT_2G_OPT
590         default 0x40000000 if VMSPLIT_1G
591         default 0xC0000000
593 config HIGHMEM
594         bool
595         depends on HIGHMEM64G || HIGHMEM4G
596         default y
598 config X86_PAE
599         bool
600         depends on HIGHMEM64G
601         default y
602         select RESOURCES_64BIT
604 # Common NUMA Features
605 config NUMA
606         bool "Numa Memory Allocation and Scheduler Support"
607         depends on SMP && HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT || X86_GENERICARCH) && ACPI)
608         default n if X86_PC
609         default y if (X86_NUMAQ || X86_SUMMIT)
611 comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
612         depends on X86_SUMMIT && (!HIGHMEM64G || !ACPI)
614 config NODES_SHIFT
615         int
616         default "4" if X86_NUMAQ
617         default "3"
618         depends on NEED_MULTIPLE_NODES
620 config HAVE_ARCH_BOOTMEM_NODE
621         bool
622         depends on NUMA
623         default y
625 config ARCH_HAVE_MEMORY_PRESENT
626         bool
627         depends on DISCONTIGMEM
628         default y
630 config NEED_NODE_MEMMAP_SIZE
631         bool
632         depends on DISCONTIGMEM || SPARSEMEM
633         default y
635 config HAVE_ARCH_ALLOC_REMAP
636         bool
637         depends on NUMA
638         default y
640 config ARCH_FLATMEM_ENABLE
641         def_bool y
642         depends on (ARCH_SELECT_MEMORY_MODEL && X86_PC)
644 config ARCH_DISCONTIGMEM_ENABLE
645         def_bool y
646         depends on NUMA
648 config ARCH_DISCONTIGMEM_DEFAULT
649         def_bool y
650         depends on NUMA
652 config ARCH_SPARSEMEM_ENABLE
653         def_bool y
654         depends on (NUMA || (X86_PC && EXPERIMENTAL))
655         select SPARSEMEM_STATIC
657 config ARCH_SELECT_MEMORY_MODEL
658         def_bool y
659         depends on ARCH_SPARSEMEM_ENABLE
661 config ARCH_POPULATES_NODE_MAP
662         def_bool y
664 source "mm/Kconfig"
666 config HIGHPTE
667         bool "Allocate 3rd-level pagetables from highmem"
668         depends on HIGHMEM4G || HIGHMEM64G
669         help
670           The VM uses one page table entry for each page of physical memory.
671           For systems with a lot of RAM, this can be wasteful of precious
672           low memory.  Setting this option will put user-space page table
673           entries in high memory.
675 config MATH_EMULATION
676         bool "Math emulation"
677         ---help---
678           Linux can emulate a math coprocessor (used for floating point
679           operations) if you don't have one. 486DX and Pentium processors have
680           a math coprocessor built in, 486SX and 386 do not, unless you added
681           a 487DX or 387, respectively. (The messages during boot time can
682           give you some hints here ["man dmesg"].) Everyone needs either a
683           coprocessor or this emulation.
685           If you don't have a math coprocessor, you need to say Y here; if you
686           say Y here even though you have a coprocessor, the coprocessor will
687           be used nevertheless. (This behavior can be changed with the kernel
688           command line option "no387", which comes handy if your coprocessor
689           is broken. Try "man bootparam" or see the documentation of your boot
690           loader (lilo or loadlin) about how to pass options to the kernel at
691           boot time.) This means that it is a good idea to say Y here if you
692           intend to use this kernel on different machines.
694           More information about the internals of the Linux math coprocessor
695           emulation can be found in <file:arch/i386/math-emu/README>.
697           If you are not sure, say Y; apart from resulting in a 66 KB bigger
698           kernel, it won't hurt.
700 config MTRR
701         bool "MTRR (Memory Type Range Register) support"
702         ---help---
703           On Intel P6 family processors (Pentium Pro, Pentium II and later)
704           the Memory Type Range Registers (MTRRs) may be used to control
705           processor access to memory ranges. This is most useful if you have
706           a video (VGA) card on a PCI or AGP bus. Enabling write-combining
707           allows bus write transfers to be combined into a larger transfer
708           before bursting over the PCI/AGP bus. This can increase performance
709           of image write operations 2.5 times or more. Saying Y here creates a
710           /proc/mtrr file which may be used to manipulate your processor's
711           MTRRs. Typically the X server should use this.
713           This code has a reasonably generic interface so that similar
714           control registers on other processors can be easily supported
715           as well:
717           The Cyrix 6x86, 6x86MX and M II processors have Address Range
718           Registers (ARRs) which provide a similar functionality to MTRRs. For
719           these, the ARRs are used to emulate the MTRRs.
720           The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
721           MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing
722           write-combining. All of these processors are supported by this code
723           and it makes sense to say Y here if you have one of them.
725           Saying Y here also fixes a problem with buggy SMP BIOSes which only
726           set the MTRRs for the boot CPU and not for the secondary CPUs. This
727           can lead to all sorts of problems, so it's good to say Y here.
729           You can safely say Y even if your machine doesn't have MTRRs, you'll
730           just add about 9 KB to your kernel.
732           See <file:Documentation/mtrr.txt> for more information.
734 config EFI
735         bool "Boot from EFI support"
736         depends on ACPI
737         default n
738         ---help---
739         This enables the kernel to boot on EFI platforms using
740         system configuration information passed to it from the firmware.
741         This also enables the kernel to use any EFI runtime services that are
742         available (such as the EFI variable services).
744         This option is only useful on systems that have EFI firmware
745         and will result in a kernel image that is ~8k larger.  In addition,
746         you must use the latest ELILO loader available at
747         <http://elilo.sourceforge.net> in order to take advantage of
748         kernel initialization using EFI information (neither GRUB nor LILO know
749         anything about EFI).  However, even with this option, the resultant
750         kernel should continue to boot on existing non-EFI platforms.
752 config IRQBALANCE
753         bool "Enable kernel irq balancing"
754         depends on SMP && X86_IO_APIC
755         default y
756         help
757           The default yes will allow the kernel to do irq load balancing.
758           Saying no will keep the kernel from doing irq load balancing.
760 # turning this on wastes a bunch of space.
761 # Summit needs it only when NUMA is on
762 config BOOT_IOREMAP
763         bool
764         depends on (((X86_SUMMIT || X86_GENERICARCH) && NUMA) || (X86 && EFI))
765         default y
767 config SECCOMP
768         bool "Enable seccomp to safely compute untrusted bytecode"
769         depends on PROC_FS
770         default y
771         help
772           This kernel feature is useful for number crunching applications
773           that may need to compute untrusted bytecode during their
774           execution. By using pipes or other transports made available to
775           the process as file descriptors supporting the read/write
776           syscalls, it's possible to isolate those applications in
777           their own address space using seccomp. Once seccomp is
778           enabled via /proc/<pid>/seccomp, it cannot be disabled
779           and the task is only allowed to execute a few safe syscalls
780           defined by each seccomp mode.
782           If unsure, say Y. Only embedded should say N here.
784 source kernel/Kconfig.hz
786 config KEXEC
787         bool "kexec system call"
788         help
789           kexec is a system call that implements the ability to shutdown your
790           current kernel, and to start another kernel.  It is like a reboot
791           but it is independent of the system firmware.   And like a reboot
792           you can start any kernel with it, not just Linux.
794           The name comes from the similarity to the exec system call.
796           It is an ongoing process to be certain the hardware in a machine
797           is properly shutdown, so do not be surprised if this code does not
798           initially work for you.  It may help to enable device hotplugging
799           support.  As of this writing the exact hardware interface is
800           strongly in flux, so no good recommendation can be made.
802 config CRASH_DUMP
803         bool "kernel crash dumps (EXPERIMENTAL)"
804         depends on EXPERIMENTAL
805         depends on HIGHMEM
806         help
807           Generate crash dump after being started by kexec.
808           This should be normally only set in special crash dump kernels
809           which are loaded in the main kernel with kexec-tools into
810           a specially reserved region and then later executed after
811           a crash by kdump/kexec. The crash dump kernel must be compiled
812           to a memory address not used by the main kernel or BIOS using
813           PHYSICAL_START.
814           For more details see Documentation/kdump/kdump.txt
816 config PHYSICAL_START
817         hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
818         default "0x100000"
819         help
820           This gives the physical address where the kernel is loaded.
822           If kernel is a not relocatable (CONFIG_RELOCATABLE=n) then
823           bzImage will decompress itself to above physical address and
824           run from there. Otherwise, bzImage will run from the address where
825           it has been loaded by the boot loader and will ignore above physical
826           address.
828           In normal kdump cases one does not have to set/change this option
829           as now bzImage can be compiled as a completely relocatable image
830           (CONFIG_RELOCATABLE=y) and be used to load and run from a different
831           address. This option is mainly useful for the folks who don't want
832           to use a bzImage for capturing the crash dump and want to use a
833           vmlinux instead. vmlinux is not relocatable hence a kernel needs
834           to be specifically compiled to run from a specific memory area
835           (normally a reserved region) and this option comes handy.
837           So if you are using bzImage for capturing the crash dump, leave
838           the value here unchanged to 0x100000 and set CONFIG_RELOCATABLE=y.
839           Otherwise if you plan to use vmlinux for capturing the crash dump
840           change this value to start of the reserved region (Typically 16MB
841           0x1000000). In other words, it can be set based on the "X" value as
842           specified in the "crashkernel=YM@XM" command line boot parameter
843           passed to the panic-ed kernel. Typically this parameter is set as
844           crashkernel=64M@16M. Please take a look at
845           Documentation/kdump/kdump.txt for more details about crash dumps.
847           Usage of bzImage for capturing the crash dump is recommended as
848           one does not have to build two kernels. Same kernel can be used
849           as production kernel and capture kernel. Above option should have
850           gone away after relocatable bzImage support is introduced. But it
851           is present because there are users out there who continue to use
852           vmlinux for dump capture. This option should go away down the
853           line.
855           Don't change this unless you know what you are doing.
857 config RELOCATABLE
858         bool "Build a relocatable kernel(EXPERIMENTAL)"
859         depends on EXPERIMENTAL
860         help
861           This builds a kernel image that retains relocation information
862           so it can be loaded someplace besides the default 1MB.
863           The relocations tend to make the kernel binary about 10% larger,
864           but are discarded at runtime.
866           One use is for the kexec on panic case where the recovery kernel
867           must live at a different physical address than the primary
868           kernel.
870 config PHYSICAL_ALIGN
871         hex "Alignment value to which kernel should be aligned"
872         default "0x100000"
873         range 0x2000 0x400000
874         help
875           This value puts the alignment restrictions on physical address
876           where kernel is loaded and run from. Kernel is compiled for an
877           address which meets above alignment restriction.
879           If bootloader loads the kernel at a non-aligned address and
880           CONFIG_RELOCATABLE is set, kernel will move itself to nearest
881           address aligned to above value and run from there.
883           If bootloader loads the kernel at a non-aligned address and
884           CONFIG_RELOCATABLE is not set, kernel will ignore the run time
885           load address and decompress itself to the address it has been
886           compiled for and run from there. The address for which kernel is
887           compiled already meets above alignment restrictions. Hence the
888           end result is that kernel runs from a physical address meeting
889           above alignment restrictions.
891           Don't change this unless you know what you are doing.
893 config HOTPLUG_CPU
894         bool "Support for suspend on SMP and hot-pluggable CPUs (EXPERIMENTAL)"
895         depends on SMP && HOTPLUG && EXPERIMENTAL && !X86_VOYAGER
896         ---help---
897           Say Y here to experiment with turning CPUs off and on, and to
898           enable suspend on SMP systems. CPUs can be controlled through
899           /sys/devices/system/cpu.
901 config COMPAT_VDSO
902         bool "Compat VDSO support"
903         default y
904         help
905           Map the VDSO to the predictable old-style address too.
906         ---help---
907           Say N here if you are running a sufficiently recent glibc
908           version (2.3.3 or later), to remove the high-mapped
909           VDSO mapping and to exclusively use the randomized VDSO.
911           If unsure, say Y.
913 endmenu
915 config ARCH_ENABLE_MEMORY_HOTPLUG
916         def_bool y
917         depends on HIGHMEM
919 menu "Power management options (ACPI, APM)"
920         depends on !X86_VOYAGER
922 source kernel/power/Kconfig
924 source "drivers/acpi/Kconfig"
926 menuconfig APM
927         tristate "APM (Advanced Power Management) BIOS support"
928         depends on PM && !X86_VISWS
929         ---help---
930           APM is a BIOS specification for saving power using several different
931           techniques. This is mostly useful for battery powered laptops with
932           APM compliant BIOSes. If you say Y here, the system time will be
933           reset after a RESUME operation, the /proc/apm device will provide
934           battery status information, and user-space programs will receive
935           notification of APM "events" (e.g. battery status change).
937           If you select "Y" here, you can disable actual use of the APM
938           BIOS by passing the "apm=off" option to the kernel at boot time.
940           Note that the APM support is almost completely disabled for
941           machines with more than one CPU.
943           In order to use APM, you will need supporting software. For location
944           and more information, read <file:Documentation/pm.txt> and the
945           Battery Powered Linux mini-HOWTO, available from
946           <http://www.tldp.org/docs.html#howto>.
948           This driver does not spin down disk drives (see the hdparm(8)
949           manpage ("man 8 hdparm") for that), and it doesn't turn off
950           VESA-compliant "green" monitors.
952           This driver does not support the TI 4000M TravelMate and the ACER
953           486/DX4/75 because they don't have compliant BIOSes. Many "green"
954           desktop machines also don't have compliant BIOSes, and this driver
955           may cause those machines to panic during the boot phase.
957           Generally, if you don't have a battery in your machine, there isn't
958           much point in using this driver and you should say N. If you get
959           random kernel OOPSes or reboots that don't seem to be related to
960           anything, try disabling/enabling this option (or disabling/enabling
961           APM in your BIOS).
963           Some other things you should try when experiencing seemingly random,
964           "weird" problems:
966           1) make sure that you have enough swap space and that it is
967           enabled.
968           2) pass the "no-hlt" option to the kernel
969           3) switch on floating point emulation in the kernel and pass
970           the "no387" option to the kernel
971           4) pass the "floppy=nodma" option to the kernel
972           5) pass the "mem=4M" option to the kernel (thereby disabling
973           all but the first 4 MB of RAM)
974           6) make sure that the CPU is not over clocked.
975           7) read the sig11 FAQ at <http://www.bitwizard.nl/sig11/>
976           8) disable the cache from your BIOS settings
977           9) install a fan for the video card or exchange video RAM
978           10) install a better fan for the CPU
979           11) exchange RAM chips
980           12) exchange the motherboard.
982           To compile this driver as a module, choose M here: the
983           module will be called apm.
985 if APM
987 config APM_IGNORE_USER_SUSPEND
988         bool "Ignore USER SUSPEND"
989         help
990           This option will ignore USER SUSPEND requests. On machines with a
991           compliant APM BIOS, you want to say N. However, on the NEC Versa M
992           series notebooks, it is necessary to say Y because of a BIOS bug.
994 config APM_DO_ENABLE
995         bool "Enable PM at boot time"
996         ---help---
997           Enable APM features at boot time. From page 36 of the APM BIOS
998           specification: "When disabled, the APM BIOS does not automatically
999           power manage devices, enter the Standby State, enter the Suspend
1000           State, or take power saving steps in response to CPU Idle calls."
1001           This driver will make CPU Idle calls when Linux is idle (unless this
1002           feature is turned off -- see "Do CPU IDLE calls", below). This
1003           should always save battery power, but more complicated APM features
1004           will be dependent on your BIOS implementation. You may need to turn
1005           this option off if your computer hangs at boot time when using APM
1006           support, or if it beeps continuously instead of suspending. Turn
1007           this off if you have a NEC UltraLite Versa 33/C or a Toshiba
1008           T400CDT. This is off by default since most machines do fine without
1009           this feature.
1011 config APM_CPU_IDLE
1012         bool "Make CPU Idle calls when idle"
1013         help
1014           Enable calls to APM CPU Idle/CPU Busy inside the kernel's idle loop.
1015           On some machines, this can activate improved power savings, such as
1016           a slowed CPU clock rate, when the machine is idle. These idle calls
1017           are made after the idle loop has run for some length of time (e.g.,
1018           333 mS). On some machines, this will cause a hang at boot time or
1019           whenever the CPU becomes idle. (On machines with more than one CPU,
1020           this option does nothing.)
1022 config APM_DISPLAY_BLANK
1023         bool "Enable console blanking using APM"
1024         help
1025           Enable console blanking using the APM. Some laptops can use this to
1026           turn off the LCD backlight when the screen blanker of the Linux
1027           virtual console blanks the screen. Note that this is only used by
1028           the virtual console screen blanker, and won't turn off the backlight
1029           when using the X Window system. This also doesn't have anything to
1030           do with your VESA-compliant power-saving monitor. Further, this
1031           option doesn't work for all laptops -- it might not turn off your
1032           backlight at all, or it might print a lot of errors to the console,
1033           especially if you are using gpm.
1035 config APM_ALLOW_INTS
1036         bool "Allow interrupts during APM BIOS calls"
1037         help
1038           Normally we disable external interrupts while we are making calls to
1039           the APM BIOS as a measure to lessen the effects of a badly behaving
1040           BIOS implementation.  The BIOS should reenable interrupts if it
1041           needs to.  Unfortunately, some BIOSes do not -- especially those in
1042           many of the newer IBM Thinkpads.  If you experience hangs when you
1043           suspend, try setting this to Y.  Otherwise, say N.
1045 config APM_REAL_MODE_POWER_OFF
1046         bool "Use real mode APM BIOS call to power off"
1047         help
1048           Use real mode APM BIOS calls to switch off the computer. This is
1049           a work-around for a number of buggy BIOSes. Switch this option on if
1050           your computer crashes instead of powering off properly.
1052 endif # APM
1054 source "arch/i386/kernel/cpu/cpufreq/Kconfig"
1056 endmenu
1058 menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)"
1060 config PCI
1061         bool "PCI support" if !X86_VISWS
1062         depends on !X86_VOYAGER
1063         default y if X86_VISWS
1064         select ARCH_SUPPORTS_MSI if (X86_LOCAL_APIC && X86_IO_APIC)
1065         help
1066           Find out whether you have a PCI motherboard. PCI is the name of a
1067           bus system, i.e. the way the CPU talks to the other stuff inside
1068           your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
1069           VESA. If you have PCI, say Y, otherwise N.
1071           The PCI-HOWTO, available from
1072           <http://www.tldp.org/docs.html#howto>, contains valuable
1073           information about which PCI hardware does work under Linux and which
1074           doesn't.
1076 choice
1077         prompt "PCI access mode"
1078         depends on PCI && !X86_VISWS
1079         default PCI_GOANY
1080         ---help---
1081           On PCI systems, the BIOS can be used to detect the PCI devices and
1082           determine their configuration. However, some old PCI motherboards
1083           have BIOS bugs and may crash if this is done. Also, some embedded
1084           PCI-based systems don't have any BIOS at all. Linux can also try to
1085           detect the PCI hardware directly without using the BIOS.
1087           With this option, you can specify how Linux should detect the
1088           PCI devices. If you choose "BIOS", the BIOS will be used,
1089           if you choose "Direct", the BIOS won't be used, and if you
1090           choose "MMConfig", then PCI Express MMCONFIG will be used.
1091           If you choose "Any", the kernel will try MMCONFIG, then the
1092           direct access method and falls back to the BIOS if that doesn't
1093           work. If unsure, go with the default, which is "Any".
1095 config PCI_GOBIOS
1096         bool "BIOS"
1098 config PCI_GOMMCONFIG
1099         bool "MMConfig"
1101 config PCI_GODIRECT
1102         bool "Direct"
1104 config PCI_GOANY
1105         bool "Any"
1107 endchoice
1109 config PCI_BIOS
1110         bool
1111         depends on !X86_VISWS && PCI && (PCI_GOBIOS || PCI_GOANY)
1112         default y
1114 config PCI_DIRECT
1115         bool
1116         depends on PCI && ((PCI_GODIRECT || PCI_GOANY) || X86_VISWS)
1117         default y
1119 config PCI_MMCONFIG
1120         bool
1121         depends on PCI && ACPI && (PCI_GOMMCONFIG || PCI_GOANY)
1122         default y
1124 source "drivers/pci/pcie/Kconfig"
1126 source "drivers/pci/Kconfig"
1128 config ISA_DMA_API
1129         bool
1130         default y
1132 config ISA
1133         bool "ISA support"
1134         depends on !(X86_VOYAGER || X86_VISWS)
1135         help
1136           Find out whether you have ISA slots on your motherboard.  ISA is the
1137           name of a bus system, i.e. the way the CPU talks to the other stuff
1138           inside your box.  Other bus systems are PCI, EISA, MicroChannel
1139           (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
1140           newer boards don't support it.  If you have ISA, say Y, otherwise N.
1142 config EISA
1143         bool "EISA support"
1144         depends on ISA
1145         ---help---
1146           The Extended Industry Standard Architecture (EISA) bus was
1147           developed as an open alternative to the IBM MicroChannel bus.
1149           The EISA bus provided some of the features of the IBM MicroChannel
1150           bus while maintaining backward compatibility with cards made for
1151           the older ISA bus.  The EISA bus saw limited use between 1988 and
1152           1995 when it was made obsolete by the PCI bus.
1154           Say Y here if you are building a kernel for an EISA-based machine.
1156           Otherwise, say N.
1158 source "drivers/eisa/Kconfig"
1160 config MCA
1161         bool "MCA support" if !(X86_VISWS || X86_VOYAGER)
1162         default y if X86_VOYAGER
1163         help
1164           MicroChannel Architecture is found in some IBM PS/2 machines and
1165           laptops.  It is a bus system similar to PCI or ISA. See
1166           <file:Documentation/mca.txt> (and especially the web page given
1167           there) before attempting to build an MCA bus kernel.
1169 source "drivers/mca/Kconfig"
1171 config SCx200
1172         tristate "NatSemi SCx200 support"
1173         depends on !X86_VOYAGER
1174         help
1175           This provides basic support for National Semiconductor's
1176           (now AMD's) Geode processors.  The driver probes for the
1177           PCI-IDs of several on-chip devices, so its a good dependency
1178           for other scx200_* drivers.
1180           If compiled as a module, the driver is named scx200.
1182 config SCx200HR_TIMER
1183         tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
1184         depends on SCx200 && GENERIC_TIME
1185         default y
1186         help
1187           This driver provides a clocksource built upon the on-chip
1188           27MHz high-resolution timer.  Its also a workaround for
1189           NSC Geode SC-1100's buggy TSC, which loses time when the
1190           processor goes idle (as is done by the scheduler).  The
1191           other workaround is idle=poll boot option.
1193 config K8_NB
1194         def_bool y
1195         depends on AGP_AMD64
1197 source "drivers/pcmcia/Kconfig"
1199 source "drivers/pci/hotplug/Kconfig"
1201 endmenu
1203 menu "Executable file formats"
1205 source "fs/Kconfig.binfmt"
1207 endmenu
1209 source "net/Kconfig"
1211 source "drivers/Kconfig"
1213 source "fs/Kconfig"
1215 menu "Instrumentation Support"
1216         depends on EXPERIMENTAL
1218 source "arch/i386/oprofile/Kconfig"
1220 config KPROBES
1221         bool "Kprobes (EXPERIMENTAL)"
1222         depends on KALLSYMS && EXPERIMENTAL && MODULES
1223         help
1224           Kprobes allows you to trap at almost any kernel address and
1225           execute a callback function.  register_kprobe() establishes
1226           a probepoint and specifies the callback.  Kprobes is useful
1227           for kernel debugging, non-intrusive instrumentation and testing.
1228           If in doubt, say "N".
1229 endmenu
1231 source "arch/i386/Kconfig.debug"
1233 source "security/Kconfig"
1235 source "crypto/Kconfig"
1237 source "lib/Kconfig"
1240 # Use the generic interrupt handling code in kernel/irq/:
1242 config GENERIC_HARDIRQS
1243         bool
1244         default y
1246 config GENERIC_IRQ_PROBE
1247         bool
1248         default y
1250 config GENERIC_PENDING_IRQ
1251         bool
1252         depends on GENERIC_HARDIRQS && SMP
1253         default y
1255 config X86_SMP
1256         bool
1257         depends on SMP && !X86_VOYAGER
1258         default y
1260 config X86_HT
1261         bool
1262         depends on SMP && !(X86_VISWS || X86_VOYAGER)
1263         default y
1265 config X86_BIOS_REBOOT
1266         bool
1267         depends on !(X86_VISWS || X86_VOYAGER)
1268         default y
1270 config X86_TRAMPOLINE
1271         bool
1272         depends on X86_SMP || (X86_VOYAGER && SMP)
1273         default y
1275 config KTIME_SCALAR
1276         bool
1277         default y