Initial revision
[linux-2.6.git] / arch / xen / i386 / Kconfig
1 #
2 # For a description of the syntax of this configuration file,
3 # see Documentation/kbuild/kconfig-language.txt.
4 #
5
6 menu "X86 Processor Configuration"
7
8 config XENARCH
9         string
10         default i386
11
12 config X86
13         bool
14         default y
15
16 config MMU
17         bool
18         default y
19
20 config SBUS
21         bool
22
23 config UID16
24         bool
25         default y
26
27 config GENERIC_ISA_DMA
28         bool
29         default y
30
31 config GENERIC_IOMAP
32         bool
33         default y
34
35 choice
36         prompt "Processor family"
37         default M686
38
39 config M386
40         bool "386"
41         ---help---
42           This is the processor type of your CPU. This information is used for
43           optimizing purposes. In order to compile a kernel that can run on
44           all x86 CPU types (albeit not optimally fast), you can specify
45           "386" here.
46
47           The kernel will not necessarily run on earlier architectures than
48           the one you have chosen, e.g. a Pentium optimized kernel will run on
49           a PPro, but not necessarily on a i486.
50
51           Here are the settings recommended for greatest speed:
52           - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI
53           486DLC/DLC2, UMC 486SX-S and NexGen Nx586.  Only "386" kernels
54           will run on a 386 class machine.
55           - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or
56           SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
57           - "586" for generic Pentium CPUs lacking the TSC
58           (time stamp counter) register.
59           - "Pentium-Classic" for the Intel Pentium.
60           - "Pentium-MMX" for the Intel Pentium MMX.
61           - "Pentium-Pro" for the Intel Pentium Pro.
62           - "Pentium-II" for the Intel Pentium II or pre-Coppermine Celeron.
63           - "Pentium-III" for the Intel Pentium III or Coppermine Celeron.
64           - "Pentium-4" for the Intel Pentium 4 or P4-based Celeron.
65           - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
66           - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
67           - "Crusoe" for the Transmeta Crusoe series.
68           - "Efficeon" for the Transmeta Efficeon series.
69           - "Winchip-C6" for original IDT Winchip.
70           - "Winchip-2" for IDT Winchip 2.
71           - "Winchip-2A" for IDT Winchips with 3dNow! capabilities.
72           - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
73           - "VIA C3-2 for VIA C3-2 "Nehemiah" (model 9 and above).
74
75           If you don't know what to do, choose "386".
76
77 config M486
78         bool "486"
79         help
80           Select this for a 486 series processor, either Intel or one of the
81           compatible processors from AMD, Cyrix, IBM, or Intel.  Includes DX,
82           DX2, and DX4 variants; also SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or
83           U5S.
84
85 config M586
86         bool "586/K5/5x86/6x86/6x86MX"
87         help
88           Select this for an 586 or 686 series processor such as the AMD K5,
89           the Cyrix 5x86, 6x86 and 6x86MX.  This choice does not
90           assume the RDTSC (Read Time Stamp Counter) instruction.
91
92 config M586TSC
93         bool "Pentium-Classic"
94         help
95           Select this for a Pentium Classic processor with the RDTSC (Read
96           Time Stamp Counter) instruction for benchmarking.
97
98 config M586MMX
99         bool "Pentium-MMX"
100         help
101           Select this for a Pentium with the MMX graphics/multimedia
102           extended instructions.
103
104 config M686
105         bool "Pentium-Pro"
106         help
107           Select this for Intel Pentium Pro chips.  This enables the use of
108           Pentium Pro extended instructions, and disables the init-time guard
109           against the f00f bug found in earlier Pentiums.
110
111 config MPENTIUMII
112         bool "Pentium-II/Celeron(pre-Coppermine)"
113         help
114           Select this for Intel chips based on the Pentium-II and
115           pre-Coppermine Celeron core.  This option enables an unaligned
116           copy optimization, compiles the kernel with optimization flags
117           tailored for the chip, and applies any applicable Pentium Pro
118           optimizations.
119
120 config MPENTIUMIII
121         bool "Pentium-III/Celeron(Coppermine)/Pentium-III Xeon"
122         help
123           Select this for Intel chips based on the Pentium-III and
124           Celeron-Coppermine core.  This option enables use of some
125           extended prefetch instructions in addition to the Pentium II
126           extensions.
127
128 config MPENTIUMM
129         bool "Pentium M"
130         help
131           Select this for Intel Pentium M (not Pentium-4 M)
132           notebook chips.
133
134 config MPENTIUM4
135         bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon"
136         help
137           Select this for Intel Pentium 4 chips.  This includes the
138           Pentium 4, P4-based Celeron and Xeon, and Pentium-4 M
139           (not Pentium M) chips.  This option enables compile flags
140           optimized for the chip, uses the correct cache shift, and
141           applies any applicable Pentium III optimizations.
142
143 config MK6
144         bool "K6/K6-II/K6-III"
145         help
146           Select this for an AMD K6-family processor.  Enables use of
147           some extended instructions, and passes appropriate optimization
148           flags to GCC.
149
150 config MK7
151         bool "Athlon/Duron/K7"
152         help
153           Select this for an AMD Athlon K7-family processor.  Enables use of
154           some extended instructions, and passes appropriate optimization
155           flags to GCC.
156
157 config MK8
158         bool "Opteron/Athlon64/Hammer/K8"
159         help
160           Select this for an AMD Opteron or Athlon64 Hammer-family processor.  Enables
161           use of some extended instructions, and passes appropriate optimization
162           flags to GCC.
163
164 config MCRUSOE
165         bool "Crusoe"
166         help
167           Select this for a Transmeta Crusoe processor.  Treats the processor
168           like a 586 with TSC, and sets some GCC optimization flags (like a
169           Pentium Pro with no alignment requirements).
170
171 config MEFFICEON
172         bool "Efficeon"
173         help
174           Select this for a Transmeta Efficeon processor.
175
176 config MWINCHIPC6
177         bool "Winchip-C6"
178         help
179           Select this for an IDT Winchip C6 chip.  Linux and GCC
180           treat this chip as a 586TSC with some extended instructions
181           and alignment requirements.
182
183 config MWINCHIP2
184         bool "Winchip-2"
185         help
186           Select this for an IDT Winchip-2.  Linux and GCC
187           treat this chip as a 586TSC with some extended instructions
188           and alignment requirements.
189
190 config MWINCHIP3D
191         bool "Winchip-2A/Winchip-3"
192         help
193           Select this for an IDT Winchip-2A or 3.  Linux and GCC
194           treat this chip as a 586TSC with some extended instructions
195           and alignment reqirements.  Also enable out of order memory
196           stores for this CPU, which can increase performance of some
197           operations.
198
199 config MCYRIXIII
200         bool "CyrixIII/VIA-C3"
201         help
202           Select this for a Cyrix III or C3 chip.  Presently Linux and GCC
203           treat this chip as a generic 586. Whilst the CPU is 686 class,
204           it lacks the cmov extension which gcc assumes is present when
205           generating 686 code.
206           Note that Nehemiah (Model 9) and above will not boot with this
207           kernel due to them lacking the 3DNow! instructions used in earlier
208           incarnations of the CPU.
209
210 config MVIAC3_2
211         bool "VIA C3-2 (Nehemiah)"
212         help
213           Select this for a VIA C3 "Nehemiah". Selecting this enables usage
214           of SSE and tells gcc to treat the CPU as a 686.
215           Note, this kernel will not boot on older (pre model 9) C3s.
216
217 endchoice
218
219 config X86_GENERIC
220        bool "Generic x86 support"
221        help
222           Instead of just including optimizations for the selected
223           x86 variant (e.g. PII, Crusoe or Athlon), include some more
224           generic optimizations as well. This will make the kernel
225           perform better on x86 CPUs other than that selected.
226
227           This is really intended for distributors who need more
228           generic optimizations.
229
230 #
231 # Define implied options from the CPU selection here
232 #
233 config X86_CMPXCHG
234         bool
235         depends on !M386
236         default y
237
238 config X86_XADD
239         bool
240         depends on !M386
241         default y
242
243 config X86_L1_CACHE_SHIFT
244         int
245         default "7" if MPENTIUM4 || X86_GENERIC
246         default "4" if X86_ELAN || M486 || M386
247         default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2
248         default "6" if MK7 || MK8 || MPENTIUMM
249
250 config RWSEM_GENERIC_SPINLOCK
251         bool
252         depends on M386
253         default y
254
255 config RWSEM_XCHGADD_ALGORITHM
256         bool
257         depends on !M386
258         default y
259
260 config GENERIC_CALIBRATE_DELAY
261         bool
262         default y
263
264 config X86_PPRO_FENCE
265         bool
266         depends on M686 || M586MMX || M586TSC || M586 || M486 || M386
267         default y
268
269 config X86_F00F_BUG
270         bool
271         depends on M586MMX || M586TSC || M586 || M486 || M386
272         default y
273
274 config X86_WP_WORKS_OK
275         bool
276         depends on !M386
277         default y
278
279 config X86_INVLPG
280         bool
281         depends on !M386
282         default y
283
284 config X86_BSWAP
285         bool
286         depends on !M386
287         default y
288
289 config X86_POPAD_OK
290         bool
291         depends on !M386
292         default y
293
294 config X86_ALIGNMENT_16
295         bool
296         depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2
297         default y
298
299 config X86_GOOD_APIC
300         bool
301         depends on MK7 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || MK8 || MEFFICEON
302         default y
303
304 config X86_INTEL_USERCOPY
305         bool
306         depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON
307         default y
308
309 config X86_USE_PPRO_CHECKSUM
310         bool
311         depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MEFFICEON
312         default y
313
314 config X86_USE_3DNOW
315         bool
316         depends on MCYRIXIII || MK7
317         default y
318
319 config X86_OOSTORE
320         bool
321         depends on (MWINCHIP3D || MWINCHIP2 || MWINCHIPC6) && MTRR
322         default y
323
324 config HPET_TIMER
325         bool
326         default n
327 #config HPET_TIMER
328 #       bool "HPET Timer Support"
329 #       help
330 #         This enables the use of the HPET for the kernel's internal timer.
331 #         HPET is the next generation timer replacing legacy 8254s.
332 #         You can safely choose Y here.  However, HPET will only be
333 #         activated if the platform and the BIOS support this feature.
334 #         Otherwise the 8254 will be used for timing services.
335 #
336 #         Choose N to continue using the legacy 8254 timer.
337
338 config HPET_EMULATE_RTC
339         def_bool HPET_TIMER && RTC=y
340
341 config SMP
342         bool "Symmetric multi-processing support"
343         ---help---
344           This enables support for systems with more than one CPU. If you have
345           a system with only one CPU, like most personal computers, say N. If
346           you have a system with more than one CPU, say Y.
347
348           If you say N here, the kernel will run on single and multiprocessor
349           machines, but will use only one CPU of a multiprocessor machine. If
350           you say Y here, the kernel will run on many, but not all,
351           singleprocessor machines. On a singleprocessor machine, the kernel
352           will run faster if you say N here.
353
354           Note that if you say Y here and choose architecture "586" or
355           "Pentium" under "Processor family", the kernel will not work on 486
356           architectures. Similarly, multiprocessor kernels for the "PPro"
357           architecture may not work on all Pentium based boards.
358
359           People using multiprocessor machines who say Y here should also say
360           Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
361           Management" code will be disabled if you say Y here.
362
363           See also the <file:Documentation/smp.txt>,
364           <file:Documentation/i386/IO-APIC.txt>,
365           <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
366           <http://www.tldp.org/docs.html#howto>.
367
368           If you don't know what to do here, say N.
369
370 config NR_CPUS
371         int "Maximum number of CPUs (2-255)"
372         range 2 255
373         depends on SMP
374         default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000
375         default "8"
376         help
377           This allows you to specify the maximum number of CPUs which this
378           kernel will support.  The maximum supported value is 255 and the
379           minimum value which makes sense is 2.
380
381           This is purely to save memory - each supported CPU adds
382           approximately eight kilobytes to the kernel image.
383
384 config SCHED_SMT
385         bool "SMT (Hyperthreading) scheduler support"
386         depends on SMP
387         default off
388         help
389           SMT scheduler support improves the CPU scheduler's decision making
390           when dealing with Intel Pentium 4 chips with HyperThreading at a
391           cost of slightly increased overhead in some places. If unsure say
392           N here.
393
394 config PREEMPT
395         bool "Preemptible Kernel"
396         help
397           This option reduces the latency of the kernel when reacting to
398           real-time or interactive events by allowing a low priority process to
399           be preempted even if it is in kernel mode executing a system call.
400           This allows applications to run more reliably even when the system is
401           under load.
402
403           Say Y here if you are building a kernel for a desktop, embedded
404           or real-time system.  Say N if you are unsure.
405
406 config PREEMPT_BKL
407         bool "Preempt The Big Kernel Lock"
408         depends on PREEMPT
409         default y
410         help
411           This option reduces the latency of the kernel by making the
412           big kernel lock preemptible.
413
414           Say Y here if you are building a kernel for a desktop system.
415           Say N if you are unsure.
416
417 #config X86_TSC
418 #        bool
419 #       depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2) && !X86_NUMAQ
420 #        default y
421
422 #config X86_MCE
423 #        bool "Machine Check Exception"
424 #       depends on !X86_VOYAGER
425 #        ---help---
426 #          Machine Check Exception support allows the processor to notify the
427 #          kernel if it detects a problem (e.g. overheating, component failure).
428 #          The action the kernel takes depends on the severity of the problem,
429 #          ranging from a warning message on the console, to halting the machine.
430 #          Your processor must be a Pentium or newer to support this - check the
431 #          flags in /proc/cpuinfo for mce.  Note that some older Pentium systems
432 #          have a design flaw which leads to false MCE events - hence MCE is
433 #          disabled on all P5 processors, unless explicitly enabled with "mce"
434 #          as a boot argument.  Similarly, if MCE is built in and creates a
435 #          problem on some new non-standard machine, you can boot with "nomce"
436 #          to disable it.  MCE support simply ignores non-MCE processors like
437 #          the 386 and 486, so nearly everyone can say Y here.
438
439 #config X86_MCE_NONFATAL
440 #       tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4"
441 #        depends on X86_MCE
442 #        help
443 #          Enabling this feature starts a timer that triggers every 5 seconds which
444 #          will look at the machine check registers to see if anything happened.
445 #          Non-fatal problems automatically get corrected (but still logged).
446 #          Disable this if you don't want to see these messages.
447 #          Seeing the messages this option prints out may be indicative of dying hardware,
448 #          or out-of-spec (ie, overclocked) hardware.
449 #          This option only does something on certain CPUs.
450 #          (AMD Athlon/Duron and Intel Pentium 4)
451
452 #config X86_MCE_P4THERMAL
453 #        bool "check for P4 thermal throttling interrupt."
454 #        depends on X86_MCE && (X86_UP_APIC || SMP)
455 #        help
456 #          Enabling this feature will cause a message to be printed when the P4
457 #          enters thermal throttling.
458
459 config MICROCODE
460         tristate "/dev/cpu/microcode - Intel IA32 CPU microcode support"
461          depends on XEN_PRIVILEGED_GUEST
462         ---help---
463           If you say Y here and also to "/dev file system support" in the
464           'File systems' section, you will be able to update the microcode on
465           Intel processors in the IA32 family, e.g. Pentium Pro, Pentium II,
466           Pentium III, Pentium 4, Xeon etc.  You will obviously need the
467           actual microcode binary data itself which is not shipped with the
468           Linux kernel.
469
470           For latest news and information on obtaining all the required
471           ingredients for this driver, check:
472           <http://www.urbanmyth.org/microcode/>.
473
474           To compile this driver as a module, choose M here: the
475           module will be called microcode.
476
477 #config X86_MSR
478 #        tristate "/dev/cpu/*/msr - Model-specific register support"
479 #        help
480 #          This device gives privileged processes access to the x86
481 #          Model-Specific Registers (MSRs).  It is a character device with
482 #          major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
483 #          MSR accesses are directed to a specific CPU on multi-processor
484 #          systems.
485
486 config X86_CPUID
487         tristate "/dev/cpu/*/cpuid - CPU information support"
488         help
489           This device gives processes access to the x86 CPUID instruction to
490           be executed on a specific processor.  It is a character device
491           with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
492           /dev/cpu/31/cpuid.
493
494 source "drivers/firmware/Kconfig"
495
496 choice
497         prompt "High Memory Support"
498         default NOHIGHMEM
499
500 config NOHIGHMEM
501         bool "off"
502         ---help---
503           Linux can use up to 64 Gigabytes of physical memory on x86 systems.
504           However, the address space of 32-bit x86 processors is only 4
505           Gigabytes large. That means that, if you have a large amount of
506           physical memory, not all of it can be "permanently mapped" by the
507           kernel. The physical memory that's not permanently mapped is called
508           "high memory".
509
510           If you are compiling a kernel which will never run on a machine with
511           more than 1 Gigabyte total physical RAM, answer "off" here (default
512           choice and suitable for most users). This will result in a "3GB/1GB"
513           split: 3GB are mapped so that each process sees a 3GB virtual memory
514           space and the remaining part of the 4GB virtual memory space is used
515           by the kernel to permanently map as much physical memory as
516           possible.
517
518           If the machine has between 1 and 4 Gigabytes physical RAM, then
519           answer "4GB" here.
520
521           If more than 4 Gigabytes is used then answer "64GB" here. This
522           selection turns Intel PAE (Physical Address Extension) mode on.
523           PAE implements 3-level paging on IA32 processors. PAE is fully
524           supported by Linux, PAE mode is implemented on all recent Intel
525           processors (Pentium Pro and better). NOTE: If you say "64GB" here,
526           then the kernel will not boot on CPUs that don't support PAE!
527
528           The actual amount of total physical memory will either be
529           auto detected or can be forced by using a kernel command line option
530           such as "mem=256M". (Try "man bootparam" or see the documentation of
531           your boot loader (lilo or loadlin) about how to pass options to the
532           kernel at boot time.)
533
534           If unsure, say "off".
535
536 config HIGHMEM4G
537         bool "4GB"
538         help
539           Select this if you have a 32-bit processor and between 1 and 4
540           gigabytes of physical RAM.
541
542 #config HIGHMEM64G
543 #       bool "64GB"
544 #       help
545 #         Select this if you have a 32-bit processor and more than 4
546 #         gigabytes of physical RAM.
547
548 endchoice
549
550 config HIGHMEM
551         bool
552         depends on HIGHMEM64G || HIGHMEM4G
553         default y
554
555 config X86_PAE
556         bool
557         depends on HIGHMEM64G
558         default y
559
560 # Common NUMA Features
561 config NUMA
562         bool "Numa Memory Allocation and Scheduler Support"
563         depends on SMP && HIGHMEM64G && (X86_NUMAQ || X86_GENERICARCH || (X86_SUMMIT && ACPI))
564         default n if X86_PC
565         default y if (X86_NUMAQ || X86_SUMMIT)
566
567 # Need comments to help the hapless user trying to turn on NUMA support
568 comment "NUMA (NUMA-Q) requires SMP, 64GB highmem support"
569         depends on X86_NUMAQ && (!HIGHMEM64G || !SMP)
570
571 comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
572         depends on X86_SUMMIT && (!HIGHMEM64G || !ACPI)
573
574 config DISCONTIGMEM
575         bool
576         depends on NUMA
577         default y
578
579 config HAVE_ARCH_BOOTMEM_NODE
580         bool
581         depends on NUMA
582         default y
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 MTRR
594         bool
595         depends on XEN_PRIVILEGED_GUEST
596         default y
597
598 #config MTRR
599 #        bool "MTRR (Memory Type Range Register) support"
600 #        ---help---
601 #          On Intel P6 family processors (Pentium Pro, Pentium II and later)
602 #          the Memory Type Range Registers (MTRRs) may be used to control
603 #          processor access to memory ranges. This is most useful if you have
604 #          a video (VGA) card on a PCI or AGP bus. Enabling write-combining
605 #          allows bus write transfers to be combined into a larger transfer
606 #          before bursting over the PCI/AGP bus. This can increase performance
607 #          of image write operations 2.5 times or more. Saying Y here creates a
608 #          /proc/mtrr file which may be used to manipulate your processor's
609 #          MTRRs. Typically the X server should use this.
610 #
611 #          This code has a reasonably generic interface so that similar
612 #          control registers on other processors can be easily supported
613 #          as well:
614 #
615 #          The Cyrix 6x86, 6x86MX and M II processors have Address Range
616 #          Registers (ARRs) which provide a similar functionality to MTRRs. For
617 #          these, the ARRs are used to emulate the MTRRs.
618 #          The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
619 #          MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing
620 #          write-combining. All of these processors are supported by this code
621 #          and it makes sense to say Y here if you have one of them.
622 #
623 #          Saying Y here also fixes a problem with buggy SMP BIOSes which only
624 #          set the MTRRs for the boot CPU and not for the secondary CPUs. This
625 #          can lead to all sorts of problems, so it's good to say Y here.
626 #
627 #          You can safely say Y even if your machine doesn't have MTRRs, you'll
628 #          just add about 9 KB to your kernel.
629 #
630 #          See <file:Documentation/mtrr.txt> for more information.
631
632 config IRQBALANCE
633         bool "Enable kernel irq balancing"
634         depends on SMP && X86_IO_APIC
635         default y
636         help
637           The default yes will allow the kernel to do irq load balancing.
638           Saying no will keep the kernel from doing irq load balancing.
639
640 config HAVE_DEC_LOCK
641         bool
642         depends on (SMP || PREEMPT) && X86_CMPXCHG
643         default y
644
645 # turning this on wastes a bunch of space.
646 # Summit needs it only when NUMA is on
647 config BOOT_IOREMAP
648         bool
649         depends on (((X86_SUMMIT || X86_GENERICARCH) && NUMA) || (X86 && EFI))
650         default y
651
652 config REGPARM
653         bool "Use register arguments (EXPERIMENTAL)"
654         depends on EXPERIMENTAL
655         default n
656         help
657         Compile the kernel with -mregparm=3. This uses a different ABI
658         and passes the first three arguments of a function call in registers.
659         This will probably break binary only modules.
660
661         This feature is only enabled for gcc-3.0 and later - earlier compilers
662         generate incorrect output with certain kernel constructs when
663         -mregparm=3 is used.
664
665
666 config X86_LOCAL_APIC
667         bool
668         depends on (X86_VISWS || SMP) && !X86_VOYAGER
669         default n
670
671 if XEN_PHYSDEV_ACCESS
672
673 menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)"
674
675 config X86_VISWS_APIC
676         bool
677         depends on X86_VISWS
678         default y
679
680 #config X86_IO_APIC
681 #       bool
682 #       depends on SMP && !(X86_VISWS || X86_VOYAGER)
683 #       default y
684
685 config PCI
686         bool "PCI support" if !X86_VISWS
687         depends on !X86_VOYAGER
688         default y if X86_VISWS
689         help
690           Find out whether you have a PCI motherboard. PCI is the name of a
691           bus system, i.e. the way the CPU talks to the other stuff inside
692           your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
693           VESA. If you have PCI, say Y, otherwise N.
694
695           The PCI-HOWTO, available from
696           <http://www.tldp.org/docs.html#howto>, contains valuable
697           information about which PCI hardware does work under Linux and which
698           doesn't.
699
700 #choice
701 #       prompt "PCI access mode"
702 #       depends on PCI && !X86_VISWS
703 #       default PCI_GOANY
704 #       ---help---
705 #         On PCI systems, the BIOS can be used to detect the PCI devices and
706 #         determine their configuration. However, some old PCI motherboards
707 #         have BIOS bugs and may crash if this is done. Also, some embedded
708 #         PCI-based systems don't have any BIOS at all. Linux can also try to
709 #         detect the PCI hardware directly without using the BIOS.
710 #
711 #         With this option, you can specify how Linux should detect the
712 #         PCI devices. If you choose "BIOS", the BIOS will be used,
713 #         if you choose "Direct", the BIOS won't be used, and if you
714 #         choose "MMConfig", then PCI Express MMCONFIG will be used.
715 #         If you choose "Any", the kernel will try MMCONFIG, then the
716 #         direct access method and falls back to the BIOS if that doesn't
717 #         work. If unsure, go with the default, which is "Any".
718 #
719 #config PCI_GOBIOS
720 #       bool "BIOS"
721 #
722 #config PCI_GOMMCONFIG
723 #       bool "MMConfig"
724 #
725 #config PCI_GODIRECT
726 #       bool "Direct"
727 #
728 #config PCI_GOANY
729 #       bool "Any"
730 #
731 #endchoice
732 #
733 #config PCI_BIOS
734 #       bool
735 #       depends on !X86_VISWS && PCI && (PCI_GOBIOS || PCI_GOANY)
736 #       default y
737 #
738 #config PCI_DIRECT
739 #       bool
740 #       depends on PCI && ((PCI_GODIRECT || PCI_GOANY) || X86_VISWS)
741 #       default y
742
743 config PCI_DIRECT
744         bool
745         depends on PCI
746         default y
747
748 source "drivers/pci/pcie/Kconfig"
749
750 source "drivers/pci/Kconfig"
751
752 config ISA
753         bool "ISA support"
754         depends on !(X86_VOYAGER || X86_VISWS)
755         help
756           Find out whether you have ISA slots on your motherboard.  ISA is the
757           name of a bus system, i.e. the way the CPU talks to the other stuff
758           inside your box.  Other bus systems are PCI, EISA, MicroChannel
759           (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
760           newer boards don't support it.  If you have ISA, say Y, otherwise N.
761
762 config EISA
763         bool "EISA support"
764         depends on ISA
765         ---help---
766           The Extended Industry Standard Architecture (EISA) bus was
767           developed as an open alternative to the IBM MicroChannel bus.
768
769           The EISA bus provided some of the features of the IBM MicroChannel
770           bus while maintaining backward compatibility with cards made for
771           the older ISA bus.  The EISA bus saw limited use between 1988 and
772           1995 when it was made obsolete by the PCI bus.
773
774           Say Y here if you are building a kernel for an EISA-based machine.
775
776           Otherwise, say N.
777
778 source "drivers/eisa/Kconfig"
779
780 config MCA
781         bool "MCA support"
782         depends on !(X86_VISWS || X86_VOYAGER)
783         help
784           MicroChannel Architecture is found in some IBM PS/2 machines and
785           laptops.  It is a bus system similar to PCI or ISA. See
786           <file:Documentation/mca.txt> (and especially the web page given
787           there) before attempting to build an MCA bus kernel.
788
789 config MCA
790         depends on X86_VOYAGER
791         default y if X86_VOYAGER
792
793 source "drivers/mca/Kconfig"
794
795 config SCx200
796         tristate "NatSemi SCx200 support"
797         depends on !X86_VOYAGER
798         help
799           This provides basic support for the National Semiconductor SCx200
800           processor.  Right now this is just a driver for the GPIO pins.
801
802           If you don't know what to do here, say N.
803
804           This support is also available as a module.  If compiled as a
805           module, it will be called scx200.
806
807 source "drivers/pcmcia/Kconfig"
808
809 source "drivers/pci/hotplug/Kconfig"
810
811 endmenu
812
813 endif
814
815 menu "Kernel hacking"
816
817 config DEBUG_KERNEL
818         bool "Kernel debugging"
819         help
820           Say Y here if you are developing drivers or trying to debug and
821           identify kernel problems.
822
823 config EARLY_PRINTK
824         bool "Early printk" if EMBEDDED
825         default y
826         help
827           Write kernel log output directly into the VGA buffer or to a serial
828           port.
829
830           This is useful for kernel debugging when your machine crashes very
831           early before the console code is initialized. For normal operation
832           it is not recommended because it looks ugly and doesn't cooperate
833           with klogd/syslogd or the X server. You should normally N here,
834           unless you want to debug such a crash.
835
836 config DEBUG_STACKOVERFLOW
837         bool "Check for stack overflows"
838         depends on DEBUG_KERNEL
839
840 config DEBUG_STACK_USAGE
841         bool "Stack utilization instrumentation"
842         depends on DEBUG_KERNEL
843         help
844           Enables the display of the minimum amount of free stack which each
845           task has ever had available in the sysrq-T and sysrq-P debug output.
846
847           This option will slow down process creation somewhat.
848
849 config DEBUG_SLAB
850         bool "Debug memory allocations"
851         depends on DEBUG_KERNEL
852         help
853           Say Y here to have the kernel do limited verification on memory
854           allocation as well as poisoning memory on free to catch use of freed
855           memory.
856
857 config MAGIC_SYSRQ
858         bool "Magic SysRq key"
859         depends on DEBUG_KERNEL
860         help
861           If you say Y here, you will have some control over the system even
862           if the system crashes for example during kernel debugging (e.g., you
863           will be able to flush the buffer cache to disk, reboot the system
864           immediately or dump some status information). This is accomplished
865           by pressing various keys while holding SysRq (Alt+PrintScreen). It
866           also works on a serial console (on PC hardware at least), if you
867           send a BREAK and then within 5 seconds a command keypress. The
868           keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
869           unless you really know what this hack does.
870
871 config DEBUG_SPINLOCK
872         bool "Spinlock debugging"
873         depends on DEBUG_KERNEL
874         help
875           Say Y here and build SMP to catch missing spinlock initialization
876           and certain other kinds of spinlock errors commonly made.  This is
877           best used in conjunction with the NMI watchdog so that spinlock
878           deadlocks are also debuggable.
879
880 config DEBUG_PAGEALLOC
881         bool "Page alloc debugging"
882         depends on DEBUG_KERNEL
883         help
884           Unmap pages from the kernel linear mapping after free_pages().
885           This results in a large slowdown, but helps to find certain types
886           of memory corruptions.
887
888 config DEBUG_HIGHMEM
889         bool "Highmem debugging"
890         depends on DEBUG_KERNEL && HIGHMEM
891         help
892           This options enables addition error checking for high memory systems.
893           Disable for production systems.
894
895 config DEBUG_INFO
896         bool "Compile the kernel with debug info"
897         depends on DEBUG_KERNEL
898         help
899           If you say Y here the resulting kernel image will include
900           debugging info resulting in a larger kernel image.
901           Say Y here only if you plan to use gdb to debug the kernel.
902           If you don't debug the kernel, you can say N.
903           
904 config DEBUG_SPINLOCK_SLEEP
905         bool "Sleep-inside-spinlock checking"
906         help
907           If you say Y here, various routines which may sleep will become very
908           noisy if they are called with a spinlock held.        
909
910 config FRAME_POINTER
911         bool "Compile the kernel with frame pointers"
912         help
913           If you say Y here the resulting kernel image will be slightly larger
914           and slower, but it will give very useful debugging information.
915           If you don't debug the kernel, you can say N, but we may not be able
916           to solve problems without frame pointers.
917
918 config 4KSTACKS
919         bool "Use 4Kb for kernel stacks instead of 8Kb"
920         help
921           If you say Y here the kernel will use a 4Kb stacksize for the
922           kernel stack attached to each process/thread. This facilitates
923           running more threads on a system and also reduces the pressure
924           on the VM subsystem for higher order allocations. This option
925           will also use IRQ stacks to compensate for the reduced stackspace.
926
927 config X86_FIND_SMP_CONFIG
928         bool
929         depends on X86_LOCAL_APIC || X86_VOYAGER
930         default y
931
932 config X86_MPPARSE
933         bool
934         depends on X86_LOCAL_APIC && !X86_VISWS
935         default y
936
937 endmenu
938
939 #
940 # Use the generic interrupt handling code in kernel/irq/:
941 #
942 config GENERIC_HARDIRQS
943         bool
944         default y
945
946 config GENERIC_IRQ_PROBE
947         bool
948         default y
949
950 config X86_SMP
951         bool
952         depends on SMP && !X86_VOYAGER
953         default y
954
955 #config X86_HT
956 #       bool
957 #       depends on SMP && !(X86_VISWS || X86_VOYAGER)
958 #       default y
959
960 config X86_BIOS_REBOOT
961         bool
962         depends on !(X86_VISWS || X86_VOYAGER)
963         default y
964
965 config X86_TRAMPOLINE
966         bool
967         depends on X86_SMP || (X86_VOYAGER && SMP)
968         default y
969
970 config PC
971         bool
972         depends on X86 && !EMBEDDED
973         default y
974
975 endmenu