x86: add X86_64 dependency to x86_64 specific symbols in Kconfig.x86_64
[linux-2.6/btrfs-unstable.git] / arch / x86 / Kconfig.x86_64
blob36bb856f5a3fa83596883255f5f730601eaca1ac
2 # For a description of the syntax of this configuration file,
3 # see Documentation/kbuild/kconfig-language.txt.
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.
10 mainmenu "Linux Kernel Configuration"
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/>.
20 config 64BIT
21         def_bool X86_64
23 config X86
24         bool
25         default y
27 config GENERIC_TIME
28         bool
29         default y
31 config GENERIC_TIME_VSYSCALL
32         bool
33         default y
35 config GENERIC_CMOS_UPDATE
36         bool
37         default y
39 config CLOCKSOURCE_WATCHDOG
40         bool
41         default y
43 config GENERIC_CLOCKEVENTS
44         bool
45         default y
47 config GENERIC_CLOCKEVENTS_BROADCAST
48         bool
49         default y
51 config ZONE_DMA32
52         bool
53         default y
55 config LOCKDEP_SUPPORT
56         bool
57         default y
59 config STACKTRACE_SUPPORT
60         bool
61         default y
63 config SEMAPHORE_SLEEPERS
64         bool
65         default y
67 config MMU
68         bool
69         default y
71 config ZONE_DMA
72         bool
73         default y
75 config ISA
76         bool
78 config SBUS
79         bool
81 config GENERIC_HWEIGHT
82         bool
83         default y
85 config GENERIC_ISA_DMA
86         bool
87         default y
89 config GENERIC_IOMAP
90         bool
91         default y
93 config ARCH_MAY_HAVE_PC_FDC
94         bool
95         default y
97 config ARCH_POPULATES_NODE_MAP
98         def_bool y
100 config DMI
101         bool
102         default y
104 config AUDIT_ARCH
105         bool
106         default y
108 config GENERIC_BUG
109         bool
110         default y
111         depends on BUG
114 source "init/Kconfig"
117 menu "Processor type and features"
119 source "kernel/time/Kconfig"
121 choice
122         prompt "Subarchitecture Type"
123         default X86_PC
125 config X86_PC
126         bool "PC-compatible"
127         help
128           Choose this option if your computer is a standard PC or compatible.
130 config X86_VSMP
131         bool "Support for ScaleMP vSMP"
132         depends on X86_64 && PCI
133          help
134           Support for ScaleMP vSMP systems.  Say 'Y' here if this kernel is
135           supposed to run on these EM64T-based machines.  Only choose this option
136           if you have one of these machines.
138 endchoice
140 source "arch/x86/Kconfig.cpu"
142 config MICROCODE
143         tristate "/dev/cpu/microcode - Intel CPU microcode support"
144         select FW_LOADER
145         ---help---
146           If you say Y here the 'File systems' section, you will be
147           able to update the microcode on Intel processors. You will
148           obviously need the actual microcode binary data itself which is
149           not shipped with the Linux kernel.
151           For latest news and information on obtaining all the required
152           ingredients for this driver, check:
153           <http://www.urbanmyth.org/microcode/>.
155           To compile this driver as a module, choose M here: the
156           module will be called microcode.
157           If you use modprobe or kmod you may also want to add the line
158           'alias char-major-10-184 microcode' to your /etc/modules.conf file.
160 config MICROCODE_OLD_INTERFACE
161         bool
162         depends on MICROCODE
163         default y
165 config X86_MSR
166         tristate "/dev/cpu/*/msr - Model-specific register support"
167         help
168           This device gives privileged processes access to the x86
169           Model-Specific Registers (MSRs).  It is a character device with
170           major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
171           MSR accesses are directed to a specific CPU on multi-processor
172           systems.
174 config X86_CPUID
175         tristate "/dev/cpu/*/cpuid - CPU information support"
176         help
177           This device gives processes access to the x86 CPUID instruction to
178           be executed on a specific processor.  It is a character device
179           with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
180           /dev/cpu/31/cpuid.
182 config X86_HT
183         bool
184         depends on SMP && !MK8
185         default y
187 config MATH_EMULATION
188         bool
190 config MCA
191         bool
193 config EISA
194         bool
196 config X86_IO_APIC
197         bool
198         default y
200 config X86_LOCAL_APIC
201         bool
202         default y
204 config MTRR
205         bool "MTRR (Memory Type Range Register) support"
206         ---help---
207           On Intel P6 family processors (Pentium Pro, Pentium II and later)
208           the Memory Type Range Registers (MTRRs) may be used to control
209           processor access to memory ranges. This is most useful if you have
210           a video (VGA) card on a PCI or AGP bus. Enabling write-combining
211           allows bus write transfers to be combined into a larger transfer
212           before bursting over the PCI/AGP bus. This can increase performance
213           of image write operations 2.5 times or more. Saying Y here creates a
214           /proc/mtrr file which may be used to manipulate your processor's
215           MTRRs. Typically the X server should use this.
217           This code has a reasonably generic interface so that similar
218           control registers on other processors can be easily supported
219           as well.
221           Saying Y here also fixes a problem with buggy SMP BIOSes which only
222           set the MTRRs for the boot CPU and not for the secondary CPUs. This
223           can lead to all sorts of problems, so it's good to say Y here.
225           Just say Y here, all x86-64 machines support MTRRs.
227           See <file:Documentation/mtrr.txt> for more information.
229 config SMP
230         bool "Symmetric multi-processing support"
231         ---help---
232           This enables support for systems with more than one CPU. If you have
233           a system with only one CPU, like most personal computers, say N. If
234           you have a system with more than one CPU, say Y.
236           If you say N here, the kernel will run on single and multiprocessor
237           machines, but will use only one CPU of a multiprocessor machine. If
238           you say Y here, the kernel will run on many, but not all,
239           singleprocessor machines. On a singleprocessor machine, the kernel
240           will run faster if you say N here.
242           If you don't know what to do here, say N.
244 config SCHED_SMT
245         bool "SMT (Hyperthreading) scheduler support"
246         depends on SMP
247         default n
248         help
249           SMT scheduler support improves the CPU scheduler's decision making
250           when dealing with Intel Pentium 4 chips with HyperThreading at a
251           cost of slightly increased overhead in some places. If unsure say
252           N here.
254 config SCHED_MC
255         bool "Multi-core scheduler support"
256         depends on SMP
257         default y
258         help
259           Multi-core scheduler support improves the CPU scheduler's decision
260           making when dealing with multi-core CPU chips at a cost of slightly
261           increased overhead in some places. If unsure say N here.
263 source "kernel/Kconfig.preempt"
265 config NUMA
266        bool "Non Uniform Memory Access (NUMA) Support"
267        depends on SMP
268        help
269          Enable NUMA (Non Uniform Memory Access) support. The kernel 
270          will try to allocate memory used by a CPU on the local memory 
271          controller of the CPU and add some more NUMA awareness to the kernel.
272          This code is recommended on all multiprocessor Opteron systems.
273          If the system is EM64T, you should say N unless your system is EM64T 
274          NUMA. 
276 config K8_NUMA
277        bool "Old style AMD Opteron NUMA detection"
278        depends on X86_64 && NUMA && PCI
279        default y
280        help
281          Enable K8 NUMA node topology detection.  You should say Y here if
282          you have a multi processor AMD K8 system. This uses an old
283          method to read the NUMA configuration directly from the builtin
284          Northbridge of Opteron. It is recommended to use X86_64_ACPI_NUMA
285          instead, which also takes priority if both are compiled in.   
287 config NODES_SHIFT
288         int
289         default "6" if X86_64
290         depends on NEED_MULTIPLE_NODES
292 # Dummy CONFIG option to select ACPI_NUMA from drivers/acpi/Kconfig.
294 config X86_64_ACPI_NUMA
295        bool "ACPI NUMA detection"
296        depends on X86_64 && NUMA
297        select ACPI 
298         select PCI
299        select ACPI_NUMA
300        default y
301        help
302          Enable ACPI SRAT based node topology detection.
304 config NUMA_EMU
305         bool "NUMA emulation"
306         depends on X86_64 && NUMA
307         help
308           Enable NUMA emulation. A flat machine will be split
309           into virtual nodes when booted with "numa=fake=N", where N is the
310           number of nodes. This is only useful for debugging.
312 config ARCH_DISCONTIGMEM_ENABLE
313        bool
314        depends on NUMA
315        default y
317 config ARCH_DISCONTIGMEM_DEFAULT
318         def_bool y
319         depends on NUMA
321 config ARCH_SPARSEMEM_ENABLE
322         def_bool y
323         depends on (NUMA || EXPERIMENTAL)
324         select SPARSEMEM_VMEMMAP_ENABLE
326 config ARCH_MEMORY_PROBE
327         def_bool X86_64
328         depends on MEMORY_HOTPLUG
330 config ARCH_FLATMEM_ENABLE
331         def_bool y
332         depends on !NUMA
334 source "mm/Kconfig"
336 config MEMORY_HOTPLUG_RESERVE
337         def_bool X86_64
338         depends on (MEMORY_HOTPLUG && DISCONTIGMEM)
340 config HAVE_ARCH_EARLY_PFN_TO_NID
341         def_bool X86_64
342         depends on NUMA
344 config OUT_OF_LINE_PFN_TO_PAGE
345         def_bool X86_64
346         depends on DISCONTIGMEM
348 config NR_CPUS
349         int "Maximum number of CPUs (2-255)"
350         range 2 255
351         depends on SMP
352         default "8"
353         help
354           This allows you to specify the maximum number of CPUs which this
355           kernel will support. Current maximum is 255 CPUs due to
356           APIC addressing limits. Less depending on the hardware.
358           This is purely to save memory - each supported CPU requires
359           memory in the static kernel configuration.
361 config PHYSICAL_ALIGN
362         hex
363         default "0x200000" if X86_64
365 config HOTPLUG_CPU
366         bool "Support for suspend on SMP and hot-pluggable CPUs (EXPERIMENTAL)"
367         depends on SMP && HOTPLUG && EXPERIMENTAL
368         help
369                 Say Y here to experiment with turning CPUs off and on.  CPUs
370                 can be controlled through /sys/devices/system/cpu/cpu#.
371                 This is also required for suspend/hibernation on SMP systems.
373                 Say N if you want to disable CPU hotplug and don't need to
374                 suspend.
376 config ARCH_ENABLE_MEMORY_HOTPLUG
377         def_bool y
379 config HPET_TIMER
380         bool
381         default y
382         help
383           Use the IA-PC HPET (High Precision Event Timer) to manage
384           time in preference to the PIT and RTC, if a HPET is
385           present.  The HPET provides a stable time base on SMP
386           systems, unlike the TSC, but it is more expensive to access,
387           as it is off-chip.  You can find the HPET spec at
388           <http://www.intel.com/hardwaredesign/hpetspec.htm>.
390 config HPET_EMULATE_RTC
391         bool
392         depends on HPET_TIMER && RTC=y
393         default y
395 # Mark as embedded because too many people got it wrong.
396 # The code disables itself when not needed.
397 config GART_IOMMU
398         bool "GART IOMMU support" if EMBEDDED
399         default y
400         select SWIOTLB
401         select AGP
402         depends on X86_64 && PCI
403         help
404           Support for full DMA access of devices with 32bit memory access only
405           on systems with more than 3GB. This is usually needed for USB,
406           sound, many IDE/SATA chipsets and some other devices.
407           Provides a driver for the AMD Athlon64/Opteron/Turion/Sempron GART
408           based hardware IOMMU and a software bounce buffer based IOMMU used
409           on Intel systems and as fallback.
410           The code is only active when needed (enough memory and limited
411           device) unless CONFIG_IOMMU_DEBUG or iommu=force is specified
412           too.
414 config CALGARY_IOMMU
415         bool "IBM Calgary IOMMU support"
416         select SWIOTLB
417         depends on X86_64 && PCI && EXPERIMENTAL
418         help
419           Support for hardware IOMMUs in IBM's xSeries x366 and x460
420           systems. Needed to run systems with more than 3GB of memory
421           properly with 32-bit PCI devices that do not support DAC
422           (Double Address Cycle). Calgary also supports bus level
423           isolation, where all DMAs pass through the IOMMU.  This
424           prevents them from going anywhere except their intended
425           destination. This catches hard-to-find kernel bugs and
426           mis-behaving drivers and devices that do not use the DMA-API
427           properly to set up their DMA buffers.  The IOMMU can be
428           turned off at boot time with the iommu=off parameter.
429           Normally the kernel will make the right choice by itself.
430           If unsure, say Y.
432 config CALGARY_IOMMU_ENABLED_BY_DEFAULT
433         bool "Should Calgary be enabled by default?"
434         default y
435         depends on CALGARY_IOMMU
436         help
437           Should Calgary be enabled by default? if you choose 'y', Calgary
438           will be used (if it exists). If you choose 'n', Calgary will not be
439           used even if it exists. If you choose 'n' and would like to use
440           Calgary anyway, pass 'iommu=calgary' on the kernel command line.
441           If unsure, say Y.
443 # need this always selected by IOMMU for the VIA workaround
444 config SWIOTLB
445         bool
446         help
447           Support for software bounce buffers used on x86-64 systems
448           which don't have a hardware IOMMU (e.g. the current generation
449           of Intel's x86-64 CPUs). Using this PCI devices which can only
450           access 32-bits of memory can be used on systems with more than
451           3 GB of memory. If unsure, say Y.
453 config X86_MCE
454         bool "Machine check support" if EMBEDDED
455         default y
456         help
457            Include a machine check error handler to report hardware errors.
458            This version will require the mcelog utility to decode some
459            machine check error logs. See
460            ftp://ftp.x86-64.org/pub/linux/tools/mcelog
462 config X86_MCE_INTEL
463         bool "Intel MCE features"
464         depends on X86_64 && X86_MCE && X86_LOCAL_APIC
465         default y
466         help
467            Additional support for intel specific MCE features such as
468            the thermal monitor.
470 config X86_MCE_AMD
471         bool "AMD MCE features"
472         depends on X86_64 && X86_MCE && X86_LOCAL_APIC
473         default y
474         help
475            Additional support for AMD specific MCE features such as
476            the DRAM Error Threshold.
478 config KEXEC
479         bool "kexec system call"
480         help
481           kexec is a system call that implements the ability to shutdown your
482           current kernel, and to start another kernel.  It is like a reboot
483           but it is independent of the system firmware.   And like a reboot
484           you can start any kernel with it, not just Linux.
486           The name comes from the similarity to the exec system call.
488           It is an ongoing process to be certain the hardware in a machine
489           is properly shutdown, so do not be surprised if this code does not
490           initially work for you.  It may help to enable device hotplugging
491           support.  As of this writing the exact hardware interface is
492           strongly in flux, so no good recommendation can be made.
494 config CRASH_DUMP
495         bool "kernel crash dumps (EXPERIMENTAL)"
496         depends on EXPERIMENTAL
497         help
498           Generate crash dump after being started by kexec.
499           This should be normally only set in special crash dump kernels
500           which are loaded in the main kernel with kexec-tools into
501           a specially reserved region and then later executed after
502           a crash by kdump/kexec. The crash dump kernel must be compiled
503           to a memory address not used by the main kernel or BIOS using
504           PHYSICAL_START, or it must be built as a relocatable image
505           (CONFIG_RELOCATABLE=y).
506           For more details see Documentation/kdump/kdump.txt
508 config RELOCATABLE
509         bool "Build a relocatable kernel (EXPERIMENTAL)"
510         depends on EXPERIMENTAL
511         help
512           Builds a relocatable kernel. This enables loading and running
513           a kernel binary from a different physical address than it has
514           been compiled for.
516           One use is for the kexec on panic case where the recovery kernel
517           must live at a different physical address than the primary
518           kernel.
520           Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
521           it has been loaded at and the compile time physical address
522           (CONFIG_PHYSICAL_START) is ignored.
524 config PHYSICAL_START
525         hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
526         default "0x200000"
527         help
528           This gives the physical address where the kernel is loaded. It
529           should be aligned to 2MB boundary.
531           If kernel is a not relocatable (CONFIG_RELOCATABLE=n) then
532           bzImage will decompress itself to above physical address and
533           run from there. Otherwise, bzImage will run from the address where
534           it has been loaded by the boot loader and will ignore above physical
535           address.
537           In normal kdump cases one does not have to set/change this option
538           as now bzImage can be compiled as a completely relocatable image
539           (CONFIG_RELOCATABLE=y) and be used to load and run from a different
540           address. This option is mainly useful for the folks who don't want
541           to use a bzImage for capturing the crash dump and want to use a
542           vmlinux instead.
544           So if you are using bzImage for capturing the crash dump, leave
545           the value here unchanged to 0x200000 and set CONFIG_RELOCATABLE=y.
546           Otherwise if you plan to use vmlinux for capturing the crash dump
547           change this value to start of the reserved region (Typically 16MB
548           0x1000000). In other words, it can be set based on the "X" value as
549           specified in the "crashkernel=YM@XM" command line boot parameter
550           passed to the panic-ed kernel. Typically this parameter is set as
551           crashkernel=64M@16M. Please take a look at
552           Documentation/kdump/kdump.txt for more details about crash dumps.
554           Usage of bzImage for capturing the crash dump is advantageous as
555           one does not have to build two kernels. Same kernel can be used
556           as production kernel and capture kernel.
558           Don't change this unless you know what you are doing.
560 config SECCOMP
561         bool "Enable seccomp to safely compute untrusted bytecode"
562         depends on PROC_FS
563         default y
564         help
565           This kernel feature is useful for number crunching applications
566           that may need to compute untrusted bytecode during their
567           execution. By using pipes or other transports made available to
568           the process as file descriptors supporting the read/write
569           syscalls, it's possible to isolate those applications in
570           their own address space using seccomp. Once seccomp is
571           enabled via /proc/<pid>/seccomp, it cannot be disabled
572           and the task is only allowed to execute a few safe syscalls
573           defined by each seccomp mode.
575           If unsure, say Y. Only embedded should say N here.
577 config CC_STACKPROTECTOR
578         bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
579         depends on X86_64 && EXPERIMENTAL
580         help
581          This option turns on the -fstack-protector GCC feature. This
582           feature puts, at the beginning of critical functions, a canary
583           value on the stack just before the return address, and validates
584           the value just before actually returning.  Stack based buffer
585           overflows (that need to overwrite this return address) now also
586           overwrite the canary, which gets detected and the attack is then
587           neutralized via a kernel panic.
589           This feature requires gcc version 4.2 or above, or a distribution
590           gcc with the feature backported. Older versions are automatically
591           detected and for those versions, this configuration option is ignored.
593 config CC_STACKPROTECTOR_ALL
594         bool "Use stack-protector for all functions"
595         depends on CC_STACKPROTECTOR
596         help
597           Normally, GCC only inserts the canary value protection for
598           functions that use large-ish on-stack buffers. By enabling
599           this option, GCC will be asked to do this for ALL functions.
601 source kernel/Kconfig.hz
603 config K8_NB
604         def_bool X86_64
605         depends on AGP_AMD64 || GART_IOMMU || (PCI && NUMA)
607 endmenu
610 # Use the generic interrupt handling code in kernel/irq/:
612 config GENERIC_HARDIRQS
613         bool
614         default y
616 config GENERIC_IRQ_PROBE
617         bool
618         default y
620 config GENERIC_PENDING_IRQ
621         bool
622         depends on GENERIC_HARDIRQS && SMP
623         default y
625 source "arch/x86/Kconfig"