ef6672455695ebfe5f6700f40fd5e5f4e3104345
[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 ZONE_DMA32
28         bool
29         default y
30
31 config LOCKDEP_SUPPORT
32         bool
33         default y
34
35 config STACKTRACE_SUPPORT
36         bool
37         default y
38
39 config SEMAPHORE_SLEEPERS
40         bool
41         default y
42
43 config MMU
44         bool
45         default y
46
47 config ISA
48         bool
49
50 config SBUS
51         bool
52
53 config RWSEM_GENERIC_SPINLOCK
54         bool
55         default y
56
57 config RWSEM_XCHGADD_ALGORITHM
58         bool
59
60 config GENERIC_HWEIGHT
61         bool
62         default y
63
64 config GENERIC_CALIBRATE_DELAY
65         bool
66         default y
67
68 config X86_CMPXCHG
69         bool
70         default y
71
72 config EARLY_PRINTK
73         bool
74         default y
75
76 config GENERIC_ISA_DMA
77         bool
78         default y
79
80 config GENERIC_IOMAP
81         bool
82         default y
83
84 config ARCH_MAY_HAVE_PC_FDC
85         bool
86         default y
87
88 config ARCH_POPULATES_NODE_MAP
89         def_bool y
90
91 config DMI
92         bool
93         default y
94
95 config AUDIT_ARCH
96         bool
97         default y
98
99 config GENERIC_BUG
100         bool
101         default y
102         depends on BUG
103
104 config ARCH_HAS_ILOG2_U32
105         bool
106         default n
107
108 config ARCH_HAS_ILOG2_U64
109         bool
110         default n
111
112 source "init/Kconfig"
113
114
115 menu "Processor type and features"
116
117 choice
118         prompt "Subarchitecture Type"
119         default X86_PC
120
121 config X86_PC
122         bool "PC-compatible"
123         help
124           Choose this option if your computer is a standard PC or compatible.
125
126 config X86_VSMP
127         bool "Support for ScaleMP vSMP"
128         depends on PCI
129          help
130           Support for ScaleMP vSMP systems.  Say 'Y' here if this kernel is
131           supposed to run on these EM64T-based machines.  Only choose this option
132           if you have one of these machines.
133
134 endchoice
135
136 choice
137         prompt "Processor family"
138         default GENERIC_CPU
139
140 config MK8
141         bool "AMD-Opteron/Athlon64"
142         help
143           Optimize for AMD Opteron/Athlon64/Hammer/K8 CPUs.
144
145 config MPSC
146        bool "Intel P4 / older Netburst based Xeon"
147        help
148           Optimize for Intel Pentium 4 and older Nocona/Dempsey Xeon CPUs
149           with Intel Extended Memory 64 Technology(EM64T). For details see
150           <http://www.intel.com/technology/64bitextensions/>.
151           Note the the latest Xeons (Xeon 51xx and 53xx) are not based on the
152           Netburst core and shouldn't use this option. You can distingush them
153           using the cpu family field
154           in /proc/cpuinfo. Family 15 is a older Xeon, Family 6 a newer one
155           (this rule only applies to system that support EM64T)
156
157 config MCORE2
158         bool "Intel Core2 / newer Xeon"
159         help
160           Optimize for Intel Core2 and newer Xeons (51xx)
161           You can distingush the newer Xeons from the older ones using
162           the cpu family field in /proc/cpuinfo. 15 is a older Xeon
163           (use CONFIG_MPSC then), 6 is a newer one. This rule only
164           applies to CPUs that support EM64T.
165
166 config GENERIC_CPU
167         bool "Generic-x86-64"
168         help
169           Generic x86-64 CPU.
170           Run equally well on all x86-64 CPUs.
171
172 endchoice
173
174 #
175 # Define implied options from the CPU selection here
176 #
177 config X86_L1_CACHE_BYTES
178         int
179         default "128" if GENERIC_CPU || MPSC
180         default "64" if MK8 || MCORE2
181
182 config X86_L1_CACHE_SHIFT
183         int
184         default "7" if GENERIC_CPU || MPSC
185         default "6" if MK8 || MCORE2
186
187 config X86_INTERNODE_CACHE_BYTES
188         int
189         default "4096" if X86_VSMP
190         default X86_L1_CACHE_BYTES if !X86_VSMP
191
192 config X86_TSC
193         bool
194         default y
195
196 config X86_GOOD_APIC
197         bool
198         default y
199
200 config MICROCODE
201         tristate "/dev/cpu/microcode - Intel CPU microcode support"
202         select FW_LOADER
203         ---help---
204           If you say Y here the 'File systems' section, you will be
205           able to update the microcode on Intel processors. You will
206           obviously need the actual microcode binary data itself which is
207           not shipped with the Linux kernel.
208
209           For latest news and information on obtaining all the required
210           ingredients for this driver, check:
211           <http://www.urbanmyth.org/microcode/>.
212
213           To compile this driver as a module, choose M here: the
214           module will be called microcode.
215           If you use modprobe or kmod you may also want to add the line
216           'alias char-major-10-184 microcode' to your /etc/modules.conf file.
217
218 config MICROCODE_OLD_INTERFACE
219         bool
220         depends on MICROCODE
221         default y
222
223 config X86_MSR
224         tristate "/dev/cpu/*/msr - Model-specific register support"
225         help
226           This device gives privileged processes access to the x86
227           Model-Specific Registers (MSRs).  It is a character device with
228           major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
229           MSR accesses are directed to a specific CPU on multi-processor
230           systems.
231
232 config X86_CPUID
233         tristate "/dev/cpu/*/cpuid - CPU information support"
234         help
235           This device gives processes access to the x86 CPUID instruction to
236           be executed on a specific processor.  It is a character device
237           with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
238           /dev/cpu/31/cpuid.
239
240 config X86_HT
241         bool
242         depends on SMP && !MK8
243         default y
244
245 config MATH_EMULATION
246         bool
247
248 config MCA
249         bool
250
251 config EISA
252         bool
253
254 config X86_IO_APIC
255         bool
256         default y
257
258 config X86_LOCAL_APIC
259         bool
260         default y
261
262 config MTRR
263         bool "MTRR (Memory Type Range Register) support"
264         ---help---
265           On Intel P6 family processors (Pentium Pro, Pentium II and later)
266           the Memory Type Range Registers (MTRRs) may be used to control
267           processor access to memory ranges. This is most useful if you have
268           a video (VGA) card on a PCI or AGP bus. Enabling write-combining
269           allows bus write transfers to be combined into a larger transfer
270           before bursting over the PCI/AGP bus. This can increase performance
271           of image write operations 2.5 times or more. Saying Y here creates a
272           /proc/mtrr file which may be used to manipulate your processor's
273           MTRRs. Typically the X server should use this.
274
275           This code has a reasonably generic interface so that similar
276           control registers on other processors can be easily supported
277           as well.
278
279           Saying Y here also fixes a problem with buggy SMP BIOSes which only
280           set the MTRRs for the boot CPU and not for the secondary CPUs. This
281           can lead to all sorts of problems, so it's good to say Y here.
282
283           Just say Y here, all x86-64 machines support MTRRs.
284
285           See <file:Documentation/mtrr.txt> for more information.
286
287 config SMP
288         bool "Symmetric multi-processing support"
289         ---help---
290           This enables support for systems with more than one CPU. If you have
291           a system with only one CPU, like most personal computers, say N. If
292           you have a system with more than one CPU, say Y.
293
294           If you say N here, the kernel will run on single and multiprocessor
295           machines, but will use only one CPU of a multiprocessor machine. If
296           you say Y here, the kernel will run on many, but not all,
297           singleprocessor machines. On a singleprocessor machine, the kernel
298           will run faster if you say N here.
299
300           If you don't know what to do here, say N.
301
302 config SCHED_SMT
303         bool "SMT (Hyperthreading) scheduler support"
304         depends on SMP
305         default n
306         help
307           SMT scheduler support improves the CPU scheduler's decision making
308           when dealing with Intel Pentium 4 chips with HyperThreading at a
309           cost of slightly increased overhead in some places. If unsure say
310           N here.
311
312 config SCHED_MC
313         bool "Multi-core scheduler support"
314         depends on SMP
315         default y
316         help
317           Multi-core scheduler support improves the CPU scheduler's decision
318           making when dealing with multi-core CPU chips at a cost of slightly
319           increased overhead in some places. If unsure say N here.
320
321 source "kernel/Kconfig.preempt"
322
323 config NUMA
324        bool "Non Uniform Memory Access (NUMA) Support"
325        depends on SMP
326        help
327          Enable NUMA (Non Uniform Memory Access) support. The kernel 
328          will try to allocate memory used by a CPU on the local memory 
329          controller of the CPU and add some more NUMA awareness to the kernel.
330          This code is recommended on all multiprocessor Opteron systems.
331          If the system is EM64T, you should say N unless your system is EM64T 
332          NUMA. 
333
334 config K8_NUMA
335        bool "Old style AMD Opteron NUMA detection"
336        depends on NUMA && PCI
337        default y
338        help
339          Enable K8 NUMA node topology detection.  You should say Y here if
340          you have a multi processor AMD K8 system. This uses an old
341          method to read the NUMA configuration directly from the builtin
342          Northbridge of Opteron. It is recommended to use X86_64_ACPI_NUMA
343          instead, which also takes priority if both are compiled in.   
344
345 config NODES_SHIFT
346         int
347         default "6"
348         depends on NEED_MULTIPLE_NODES
349
350 # Dummy CONFIG option to select ACPI_NUMA from drivers/acpi/Kconfig.
351
352 config X86_64_ACPI_NUMA
353        bool "ACPI NUMA detection"
354        depends on NUMA
355        select ACPI 
356         select PCI
357        select ACPI_NUMA
358        default y
359        help
360          Enable ACPI SRAT based node topology detection.
361
362 config NUMA_EMU
363         bool "NUMA emulation"
364         depends on NUMA
365         help
366           Enable NUMA emulation. A flat machine will be split
367           into virtual nodes when booted with "numa=fake=N", where N is the
368           number of nodes. This is only useful for debugging.
369
370 config ARCH_DISCONTIGMEM_ENABLE
371        bool
372        depends on NUMA
373        default y
374
375 config ARCH_DISCONTIGMEM_DEFAULT
376         def_bool y
377         depends on NUMA
378
379 config ARCH_SPARSEMEM_ENABLE
380         def_bool y
381         depends on (NUMA || EXPERIMENTAL)
382
383 config ARCH_MEMORY_PROBE
384         def_bool y
385         depends on MEMORY_HOTPLUG
386
387 config ARCH_FLATMEM_ENABLE
388         def_bool y
389         depends on !NUMA
390
391 source "mm/Kconfig"
392
393 config MEMORY_HOTPLUG_RESERVE
394         def_bool y
395         depends on (MEMORY_HOTPLUG && DISCONTIGMEM)
396
397 config HAVE_ARCH_EARLY_PFN_TO_NID
398         def_bool y
399         depends on NUMA
400
401 config OUT_OF_LINE_PFN_TO_PAGE
402         def_bool y
403         depends on DISCONTIGMEM
404
405 config NR_CPUS
406         int "Maximum number of CPUs (2-256)"
407         range 2 255
408         depends on SMP
409         default "8"
410         help
411           This allows you to specify the maximum number of CPUs which this
412           kernel will support. Current maximum is 256 CPUs due to
413           APIC addressing limits. Less depending on the hardware.
414
415           This is purely to save memory - each supported CPU requires
416           memory in the static kernel configuration.
417
418 config HOTPLUG_CPU
419         bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
420         depends on SMP && HOTPLUG && EXPERIMENTAL
421         help
422                 Say Y here to experiment with turning CPUs off and on.  CPUs
423                 can be controlled through /sys/devices/system/cpu/cpu#.
424                 Say N if you want to disable CPU hotplug.
425
426 config ARCH_ENABLE_MEMORY_HOTPLUG
427         def_bool y
428
429 config HPET_TIMER
430         bool
431         default y
432         help
433           Use the IA-PC HPET (High Precision Event Timer) to manage
434           time in preference to the PIT and RTC, if a HPET is
435           present.  The HPET provides a stable time base on SMP
436           systems, unlike the TSC, but it is more expensive to access,
437           as it is off-chip.  You can find the HPET spec at
438           <http://www.intel.com/hardwaredesign/hpetspec.htm>.
439
440 config HPET_EMULATE_RTC
441         bool "Provide RTC interrupt"
442         depends on HPET_TIMER && RTC=y
443
444 # Mark as embedded because too many people got it wrong.
445 # The code disables itself when not needed.
446 config IOMMU
447         bool "IOMMU support" if EMBEDDED
448         default y
449         select SWIOTLB
450         select AGP
451         depends on PCI
452         help
453           Support for full DMA access of devices with 32bit memory access only
454           on systems with more than 3GB. This is usually needed for USB,
455           sound, many IDE/SATA chipsets and some other devices.
456           Provides a driver for the AMD Athlon64/Opteron/Turion/Sempron GART
457           based IOMMU and a software bounce buffer based IOMMU used on Intel
458           systems and as fallback.
459           The code is only active when needed (enough memory and limited
460           device) unless CONFIG_IOMMU_DEBUG or iommu=force is specified
461           too.
462
463 config CALGARY_IOMMU
464         bool "IBM Calgary IOMMU support"
465         select SWIOTLB
466         depends on PCI && EXPERIMENTAL
467         help
468           Support for hardware IOMMUs in IBM's xSeries x366 and x460
469           systems. Needed to run systems with more than 3GB of memory
470           properly with 32-bit PCI devices that do not support DAC
471           (Double Address Cycle). Calgary also supports bus level
472           isolation, where all DMAs pass through the IOMMU.  This
473           prevents them from going anywhere except their intended
474           destination. This catches hard-to-find kernel bugs and
475           mis-behaving drivers and devices that do not use the DMA-API
476           properly to set up their DMA buffers.  The IOMMU can be
477           turned off at boot time with the iommu=off parameter.
478           Normally the kernel will make the right choice by itself.
479           If unsure, say Y.
480
481 config CALGARY_IOMMU_ENABLED_BY_DEFAULT
482         bool "Should Calgary be enabled by default?"
483         depends on CALGARY_IOMMU
484         help
485           Should Calgary be enabled by default? If you choose 'y', Calgary
486           will be used (if it exists). If you choose 'n', Calgary will not be
487           used even if it exists. If you choose 'n' and would like to use
488           Calgary anyway, pass 'iommu=calgary' on the kernel command line.
489           If unsure, say N.
490
491 # need this always selected by IOMMU for the VIA workaround
492 config SWIOTLB
493         bool
494
495 config X86_MCE
496         bool "Machine check support" if EMBEDDED
497         default y
498         help
499            Include a machine check error handler to report hardware errors.
500            This version will require the mcelog utility to decode some
501            machine check error logs. See
502            ftp://ftp.x86-64.org/pub/linux/tools/mcelog
503
504 config X86_MCE_INTEL
505         bool "Intel MCE features"
506         depends on X86_MCE && X86_LOCAL_APIC
507         default y
508         help
509            Additional support for intel specific MCE features such as
510            the thermal monitor.
511
512 config X86_MCE_AMD
513         bool "AMD MCE features"
514         depends on X86_MCE && X86_LOCAL_APIC
515         default y
516         help
517            Additional support for AMD specific MCE features such as
518            the DRAM Error Threshold.
519
520 config KEXEC
521         bool "kexec system call"
522         help
523           kexec is a system call that implements the ability to shutdown your
524           current kernel, and to start another kernel.  It is like a reboot
525           but it is independent of the system firmware.   And like a reboot
526           you can start any kernel with it, not just Linux.
527
528           The name comes from the similarity to the exec system call.
529
530           It is an ongoing process to be certain the hardware in a machine
531           is properly shutdown, so do not be surprised if this code does not
532           initially work for you.  It may help to enable device hotplugging
533           support.  As of this writing the exact hardware interface is
534           strongly in flux, so no good recommendation can be made.
535
536 config CRASH_DUMP
537         bool "kernel crash dumps (EXPERIMENTAL)"
538         depends on EXPERIMENTAL
539         help
540           Generate crash dump after being started by kexec.
541           This should be normally only set in special crash dump kernels
542           which are loaded in the main kernel with kexec-tools into
543           a specially reserved region and then later executed after
544           a crash by kdump/kexec. The crash dump kernel must be compiled
545           to a memory address not used by the main kernel or BIOS using
546           PHYSICAL_START.
547           For more details see Documentation/kdump/kdump.txt
548
549 config PHYSICAL_START
550         hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
551         default "0x1000000" if CRASH_DUMP
552         default "0x200000"
553         help
554           This gives the physical address where the kernel is loaded. Normally
555           for regular kernels this value is 0x200000 (2MB). But in the case
556           of kexec on panic the fail safe kernel needs to run at a different
557           address than the panic-ed kernel. This option is used to set the load
558           address for kernels used to capture crash dump on being kexec'ed
559           after panic. The default value for crash dump kernels is
560           0x1000000 (16MB). This can also be set based on the "X" value as
561           specified in the "crashkernel=YM@XM" command line boot parameter
562           passed to the panic-ed kernel. Typically this parameter is set as
563           crashkernel=64M@16M. Please take a look at
564           Documentation/kdump/kdump.txt for more details about crash dumps.
565
566           Don't change this unless you know what you are doing.
567
568 config SECCOMP
569         bool "Enable seccomp to safely compute untrusted bytecode"
570         depends on PROC_FS
571         default y
572         help
573           This kernel feature is useful for number crunching applications
574           that may need to compute untrusted bytecode during their
575           execution. By using pipes or other transports made available to
576           the process as file descriptors supporting the read/write
577           syscalls, it's possible to isolate those applications in
578           their own address space using seccomp. Once seccomp is
579           enabled via /proc/<pid>/seccomp, it cannot be disabled
580           and the task is only allowed to execute a few safe syscalls
581           defined by each seccomp mode.
582
583           If unsure, say Y. Only embedded should say N here.
584
585 config CC_STACKPROTECTOR
586         bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
587         depends on EXPERIMENTAL
588         help
589          This option turns on the -fstack-protector GCC feature. This
590           feature puts, at the beginning of critical functions, a canary
591           value on the stack just before the return address, and validates
592           the value just before actually returning.  Stack based buffer
593           overflows (that need to overwrite this return address) now also
594           overwrite the canary, which gets detected and the attack is then
595           neutralized via a kernel panic.
596
597           This feature requires gcc version 4.2 or above, or a distribution
598           gcc with the feature backported. Older versions are automatically
599           detected and for those versions, this configuration option is ignored.
600
601 config CC_STACKPROTECTOR_ALL
602         bool "Use stack-protector for all functions"
603         depends on CC_STACKPROTECTOR
604         help
605           Normally, GCC only inserts the canary value protection for
606           functions that use large-ish on-stack buffers. By enabling
607           this option, GCC will be asked to do this for ALL functions.
608
609 source kernel/Kconfig.hz
610
611 config REORDER
612         bool "Function reordering"
613         default n
614         help
615          This option enables the toolchain to reorder functions for a more 
616          optimal TLB usage. If you have pretty much any version of binutils, 
617          this can increase your kernel build time by roughly one minute.
618
619 config K8_NB
620         def_bool y
621         depends on AGP_AMD64 || IOMMU || (PCI && NUMA)
622
623 endmenu
624
625 #
626 # Use the generic interrupt handling code in kernel/irq/:
627 #
628 config GENERIC_HARDIRQS
629         bool
630         default y
631
632 config GENERIC_IRQ_PROBE
633         bool
634         default y
635
636 # we have no ISA slots, but we do have ISA-style DMA.
637 config ISA_DMA_API
638         bool
639         default y
640
641 config GENERIC_PENDING_IRQ
642         bool
643         depends on GENERIC_HARDIRQS && SMP
644         default y
645
646 menu "Power management options"
647
648 source kernel/power/Kconfig
649
650 source "drivers/acpi/Kconfig"
651
652 source "arch/x86_64/kernel/cpufreq/Kconfig"
653
654 endmenu
655
656 menu "Bus options (PCI etc.)"
657
658 config PCI
659         bool "PCI support"
660
661 # x86-64 doesn't support PCI BIOS access from long mode so always go direct.
662 config PCI_DIRECT
663         bool
664         depends on PCI
665         default y
666
667 config PCI_MMCONFIG
668         bool "Support mmconfig PCI config space access"
669         depends on PCI && ACPI
670
671 source "drivers/pci/pcie/Kconfig"
672
673 source "drivers/pci/Kconfig"
674
675 source "drivers/pcmcia/Kconfig"
676
677 source "drivers/pci/hotplug/Kconfig"
678
679 endmenu
680
681
682 menu "Executable file formats / Emulations"
683
684 source "fs/Kconfig.binfmt"
685
686 config IA32_EMULATION
687         bool "IA32 Emulation"
688         help
689           Include code to run 32-bit programs under a 64-bit kernel. You should likely
690           turn this on, unless you're 100% sure that you don't have any 32-bit programs
691           left.
692
693 config IA32_AOUT
694        tristate "IA32 a.out support"
695        depends on IA32_EMULATION
696        help
697          Support old a.out binaries in the 32bit emulation.
698
699 config COMPAT
700         bool
701         depends on IA32_EMULATION
702         default y
703
704 config SYSVIPC_COMPAT
705         bool
706         depends on COMPAT && SYSVIPC
707         default y
708
709 endmenu
710
711 source "net/Kconfig"
712
713 source drivers/Kconfig
714
715 source "drivers/firmware/Kconfig"
716
717 source fs/Kconfig
718
719 menu "Instrumentation Support"
720         depends on EXPERIMENTAL
721
722 source "arch/x86_64/oprofile/Kconfig"
723
724 config KPROBES
725         bool "Kprobes (EXPERIMENTAL)"
726         depends on KALLSYMS && EXPERIMENTAL && MODULES
727         help
728           Kprobes allows you to trap at almost any kernel address and
729           execute a callback function.  register_kprobe() establishes
730           a probepoint and specifies the callback.  Kprobes is useful
731           for kernel debugging, non-intrusive instrumentation and testing.
732           If in doubt, say "N".
733 endmenu
734
735 source "arch/x86_64/Kconfig.debug"
736
737 source "security/Kconfig"
738
739 source "crypto/Kconfig"
740
741 source "lib/Kconfig"