Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-for-linus-2.6
[sfrench/cifs-2.6.git] / arch / x86_64 / Kconfig
1 #
2 # For a description of the syntax of this configuration file,
3 # see Documentation/kbuild/kconfig-language.txt.
4 #
5 # Note: ISA is disabled and will hopefully never be enabled.
6 # If you managed to buy an ISA x86-64 box you'll have to fix all the
7 # ISA drivers you need yourself.
8 #
9
10 mainmenu "Linux Kernel Configuration"
11
12 config X86_64
13         bool
14         default y
15         help
16           Port to the x86-64 architecture. x86-64 is a 64-bit extension to the
17           classical 32-bit x86 architecture. For details see
18           <http://www.x86-64.org/>.
19
20 config 64BIT
21         def_bool y
22
23 config X86
24         bool
25         default y
26
27 config SEMAPHORE_SLEEPERS
28         bool
29         default y
30
31 config MMU
32         bool
33         default y
34
35 config ISA
36         bool
37
38 config SBUS
39         bool
40
41 config RWSEM_GENERIC_SPINLOCK
42         bool
43         default y
44
45 config RWSEM_XCHGADD_ALGORITHM
46         bool
47
48 config GENERIC_CALIBRATE_DELAY
49         bool
50         default y
51
52 config X86_CMPXCHG
53         bool
54         default y
55
56 config EARLY_PRINTK
57         bool
58         default y
59
60 config GENERIC_ISA_DMA
61         bool
62         default y
63
64 config GENERIC_IOMAP
65         bool
66         default y
67
68 config ARCH_MAY_HAVE_PC_FDC
69         bool
70         default y
71
72 source "init/Kconfig"
73
74
75 menu "Processor type and features"
76
77 choice
78         prompt "Processor family"
79         default MK8
80
81 config MK8
82         bool "AMD-Opteron/Athlon64"
83         help
84           Optimize for AMD Opteron/Athlon64/Hammer/K8 CPUs.
85
86 config MPSC
87        bool "Intel EM64T"
88        help
89           Optimize for Intel Pentium 4 and Xeon CPUs with Intel
90           Extended Memory 64 Technology(EM64T). For details see
91           <http://www.intel.com/technology/64bitextensions/>.
92
93 config GENERIC_CPU
94         bool "Generic-x86-64"
95         help
96           Generic x86-64 CPU.
97
98 endchoice
99
100 #
101 # Define implied options from the CPU selection here
102 #
103 config X86_L1_CACHE_BYTES
104         int
105         default "128" if GENERIC_CPU || MPSC
106         default "64" if MK8
107
108 config X86_L1_CACHE_SHIFT
109         int
110         default "7" if GENERIC_CPU || MPSC
111         default "6" if MK8
112
113 config X86_TSC
114         bool
115         default y
116
117 config X86_GOOD_APIC
118         bool
119         default y
120
121 config MICROCODE
122         tristate "/dev/cpu/microcode - Intel CPU microcode support"
123         ---help---
124           If you say Y here the 'File systems' section, you will be
125           able to update the microcode on Intel processors. You will
126           obviously need the actual microcode binary data itself which is
127           not shipped with the Linux kernel.
128
129           For latest news and information on obtaining all the required
130           ingredients for this driver, check:
131           <http://www.urbanmyth.org/microcode/>.
132
133           To compile this driver as a module, choose M here: the
134           module will be called microcode.
135           If you use modprobe or kmod you may also want to add the line
136           'alias char-major-10-184 microcode' to your /etc/modules.conf file.
137
138 config X86_MSR
139         tristate "/dev/cpu/*/msr - Model-specific register support"
140         help
141           This device gives privileged processes access to the x86
142           Model-Specific Registers (MSRs).  It is a character device with
143           major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
144           MSR accesses are directed to a specific CPU on multi-processor
145           systems.
146
147 config X86_CPUID
148         tristate "/dev/cpu/*/cpuid - CPU information support"
149         help
150           This device gives processes access to the x86 CPUID instruction to
151           be executed on a specific processor.  It is a character device
152           with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
153           /dev/cpu/31/cpuid.
154
155 # disable it for opteron optimized builds because it pulls in ACPI_BOOT
156 config X86_HT
157         bool
158         depends on SMP && !MK8
159         default y
160
161 config MATH_EMULATION
162         bool
163
164 config MCA
165         bool
166
167 config EISA
168         bool
169
170 config X86_IO_APIC
171         bool
172         default y
173
174 config X86_LOCAL_APIC
175         bool
176         default y
177
178 config MTRR
179         bool "MTRR (Memory Type Range Register) support"
180         ---help---
181           On Intel P6 family processors (Pentium Pro, Pentium II and later)
182           the Memory Type Range Registers (MTRRs) may be used to control
183           processor access to memory ranges. This is most useful if you have
184           a video (VGA) card on a PCI or AGP bus. Enabling write-combining
185           allows bus write transfers to be combined into a larger transfer
186           before bursting over the PCI/AGP bus. This can increase performance
187           of image write operations 2.5 times or more. Saying Y here creates a
188           /proc/mtrr file which may be used to manipulate your processor's
189           MTRRs. Typically the X server should use this.
190
191           This code has a reasonably generic interface so that similar
192           control registers on other processors can be easily supported
193           as well.
194
195           Saying Y here also fixes a problem with buggy SMP BIOSes which only
196           set the MTRRs for the boot CPU and not for the secondary CPUs. This
197           can lead to all sorts of problems, so it's good to say Y here.
198
199           Just say Y here, all x86-64 machines support MTRRs.
200
201           See <file:Documentation/mtrr.txt> for more information.
202
203 config SMP
204         bool "Symmetric multi-processing support"
205         ---help---
206           This enables support for systems with more than one CPU. If you have
207           a system with only one CPU, like most personal computers, say N. If
208           you have a system with more than one CPU, say Y.
209
210           If you say N here, the kernel will run on single and multiprocessor
211           machines, but will use only one CPU of a multiprocessor machine. If
212           you say Y here, the kernel will run on many, but not all,
213           singleprocessor machines. On a singleprocessor machine, the kernel
214           will run faster if you say N here.
215
216           If you don't know what to do here, say N.
217
218 config SCHED_SMT
219         bool "SMT (Hyperthreading) scheduler support"
220         depends on SMP
221         default n
222         help
223           SMT scheduler support improves the CPU scheduler's decision making
224           when dealing with Intel Pentium 4 chips with HyperThreading at a
225           cost of slightly increased overhead in some places. If unsure say
226           N here.
227
228 source "kernel/Kconfig.preempt"
229
230 config K8_NUMA
231        bool "K8 NUMA support"
232        select NUMA
233        depends on SMP
234        help
235           Enable NUMA (Non Unified Memory Architecture) support for
236           AMD Opteron Multiprocessor systems. The kernel will try to allocate
237           memory used by a CPU on the local memory controller of the CPU
238           and add some more NUMA awareness to the kernel.
239           This code is recommended on all multiprocessor Opteron systems
240           and normally doesn't hurt on others.
241
242 config NUMA_EMU
243         bool "NUMA emulation support"
244         select NUMA
245         depends on SMP
246         help
247           Enable NUMA emulation. A flat machine will be split
248           into virtual nodes when booted with "numa=fake=N", where N is the
249           number of nodes. This is only useful for debugging.
250
251 config ARCH_DISCONTIGMEM_ENABLE
252        bool
253        depends on NUMA
254        default y
255
256 config NUMA
257        bool
258        default n
259
260 config ARCH_DISCONTIGMEM_ENABLE
261         def_bool y
262         depends on NUMA
263
264 config ARCH_DISCONTIGMEM_DEFAULT
265         def_bool y
266         depends on NUMA
267
268 config ARCH_SPARSEMEM_ENABLE
269         def_bool y
270         depends on NUMA
271
272 config ARCH_FLATMEM_ENABLE
273         def_bool y
274         depends on !NUMA
275
276 source "mm/Kconfig"
277
278 config HAVE_ARCH_EARLY_PFN_TO_NID
279         def_bool y
280
281 config HAVE_DEC_LOCK
282         bool
283         depends on SMP
284         default y
285
286 config NR_CPUS
287         int "Maximum number of CPUs (2-256)"
288         range 2 256
289         depends on SMP
290         default "8"
291         help
292           This allows you to specify the maximum number of CPUs which this
293           kernel will support. Current maximum is 256 CPUs due to
294           APIC addressing limits. Less depending on the hardware.
295
296           This is purely to save memory - each supported CPU requires
297           memory in the static kernel configuration.
298
299 config HOTPLUG_CPU
300         bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
301         depends on SMP && HOTPLUG && EXPERIMENTAL
302         help
303                 Say Y here to experiment with turning CPUs off and on.  CPUs
304                 can be controlled through /sys/devices/system/cpu/cpu#.
305                 Say N if you want to disable CPU hotplug.
306
307
308 config HPET_TIMER
309         bool
310         default y
311         help
312           Use the IA-PC HPET (High Precision Event Timer) to manage
313           time in preference to the PIT and RTC, if a HPET is
314           present.  The HPET provides a stable time base on SMP
315           systems, unlike the TSC, but it is more expensive to access,
316           as it is off-chip.  You can find the HPET spec at
317           <http://www.intel.com/labs/platcomp/hpet/hpetspec.htm>.
318
319 config X86_PM_TIMER
320         bool "PM timer"
321         depends on ACPI
322         default y
323         help
324           Support the ACPI PM timer for time keeping. This is slow,
325           but is useful on some chipsets without HPET on systems with more
326           than one CPU. On a single processor or single socket multi core
327           system it is normally not required.
328           When the PM timer is active 64bit vsyscalls are disabled
329           and should not be enabled (/proc/sys/kernel/vsyscall64 should
330           not be changed).
331           The kernel selects the PM timer only as a last resort, so it is
332           useful to enable just in case.
333
334 config HPET_EMULATE_RTC
335         bool "Provide RTC interrupt"
336         depends on HPET_TIMER && RTC=y
337
338 config GART_IOMMU
339         bool "IOMMU support"
340         default y
341         depends on PCI
342         help
343           Support the IOMMU. Needed to run systems with more than 3GB of memory
344           properly with 32-bit PCI devices that do not support DAC (Double Address
345           Cycle). The IOMMU can be turned off at runtime with the iommu=off parameter.
346           Normally the kernel will take the right choice by itself.
347           This option includes a driver for the AMD Opteron/Athlon64 IOMMU
348           and a software emulation used on some other systems.
349           If unsure, say Y.
350
351 # need this always enabled with GART_IOMMU for the VIA workaround
352 config SWIOTLB
353        bool
354        depends on GART_IOMMU
355        default y
356
357 config DUMMY_IOMMU
358         bool
359         depends on !GART_IOMMU && !SWIOTLB
360         default y
361         help
362           Don't use IOMMU code. This will cause problems when you have more than 4GB
363           of memory and any 32-bit devices. Don't turn on unless you know what you
364           are doing.
365
366 config X86_MCE
367         bool "Machine check support" if EMBEDDED
368         default y
369         help
370            Include a machine check error handler to report hardware errors.
371            This version will require the mcelog utility to decode some
372            machine check error logs. See
373            ftp://ftp.x86-64.org/pub/linux/tools/mcelog
374
375 config X86_MCE_INTEL
376         bool "Intel MCE features"
377         depends on X86_MCE && X86_LOCAL_APIC
378         default y
379         help
380            Additional support for intel specific MCE features such as
381            the thermal monitor.
382
383 config PHYSICAL_START
384         hex "Physical address where the kernel is loaded" if EMBEDDED
385         default "0x100000"
386         help
387           This gives the physical address where the kernel is loaded.
388           Primarily used in the case of kexec on panic where the
389           fail safe kernel needs to run at a different address than
390           the panic-ed kernel.
391
392           Don't change this unless you know what you are doing.
393
394 config KEXEC
395         bool "kexec system call (EXPERIMENTAL)"
396         depends on EXPERIMENTAL
397         help
398           kexec is a system call that implements the ability to shutdown your
399           current kernel, and to start another kernel.  It is like a reboot
400           but it is indepedent of the system firmware.   And like a reboot
401           you can start any kernel with it, not just Linux.
402
403           The name comes from the similiarity to the exec system call.
404
405           It is an ongoing process to be certain the hardware in a machine
406           is properly shutdown, so do not be surprised if this code does not
407           initially work for you.  It may help to enable device hotplugging
408           support.  As of this writing the exact hardware interface is
409           strongly in flux, so no good recommendation can be made.
410
411 config SECCOMP
412         bool "Enable seccomp to safely compute untrusted bytecode"
413         depends on PROC_FS
414         default y
415         help
416           This kernel feature is useful for number crunching applications
417           that may need to compute untrusted bytecode during their
418           execution. By using pipes or other transports made available to
419           the process as file descriptors supporting the read/write
420           syscalls, it's possible to isolate those applications in
421           their own address space using seccomp. Once seccomp is
422           enabled via /proc/<pid>/seccomp, it cannot be disabled
423           and the task is only allowed to execute a few safe syscalls
424           defined by each seccomp mode.
425
426           If unsure, say Y. Only embedded should say N here.
427
428 source kernel/Kconfig.hz
429
430 endmenu
431
432 #
433 # Use the generic interrupt handling code in kernel/irq/:
434 #
435 config GENERIC_HARDIRQS
436         bool
437         default y
438
439 config GENERIC_IRQ_PROBE
440         bool
441         default y
442
443 # we have no ISA slots, but we do have ISA-style DMA.
444 config ISA_DMA_API
445         bool
446         default y
447
448 config GENERIC_PENDING_IRQ
449         bool
450         depends on GENERIC_HARDIRQS && SMP
451         default y
452
453 menu "Power management options"
454
455 source kernel/power/Kconfig
456
457 source "drivers/acpi/Kconfig"
458
459 source "arch/x86_64/kernel/cpufreq/Kconfig"
460
461 endmenu
462
463 menu "Bus options (PCI etc.)"
464
465 config PCI
466         bool "PCI support"
467
468 # x86-64 doesn't support PCI BIOS access from long mode so always go direct.
469 config PCI_DIRECT
470         bool
471         depends on PCI
472         default y
473
474 config PCI_MMCONFIG
475         bool "Support mmconfig PCI config space access"
476         depends on PCI && ACPI
477         select ACPI_BOOT
478
479 config UNORDERED_IO
480        bool "Unordered IO mapping access"
481        depends on EXPERIMENTAL
482        help
483          Use unordered stores to access IO memory mappings in device drivers.
484          Still very experimental. When a driver works on IA64/ppc64/pa-risc it should
485          work with this option, but it makes the drivers behave differently
486          from i386. Requires that the driver writer used memory barriers
487          properly.
488
489 source "drivers/pci/pcie/Kconfig"
490
491 source "drivers/pci/Kconfig"
492
493 source "drivers/pcmcia/Kconfig"
494
495 source "drivers/pci/hotplug/Kconfig"
496
497 endmenu
498
499
500 menu "Executable file formats / Emulations"
501
502 source "fs/Kconfig.binfmt"
503
504 config IA32_EMULATION
505         bool "IA32 Emulation"
506         help
507           Include code to run 32-bit programs under a 64-bit kernel. You should likely
508           turn this on, unless you're 100% sure that you don't have any 32-bit programs
509           left.
510
511 config IA32_AOUT
512        bool "IA32 a.out support"
513        depends on IA32_EMULATION
514        help
515          Support old a.out binaries in the 32bit emulation.
516
517 config COMPAT
518         bool
519         depends on IA32_EMULATION
520         default y
521
522 config SYSVIPC_COMPAT
523         bool
524         depends on COMPAT && SYSVIPC
525         default y
526
527 config UID16
528         bool
529         depends on IA32_EMULATION
530         default y
531
532 endmenu
533
534 source "net/Kconfig"
535
536 source drivers/Kconfig
537
538 source "drivers/firmware/Kconfig"
539
540 source fs/Kconfig
541
542 source "arch/x86_64/oprofile/Kconfig"
543
544 source "arch/x86_64/Kconfig.debug"
545
546 source "security/Kconfig"
547
548 source "crypto/Kconfig"
549
550 source "lib/Kconfig"