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