Merge branch 'drm-patches' of master.kernel.org:/pub/scm/linux/kernel/git/airlied...
[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         default y
484         depends on CALGARY_IOMMU
485         help
486           Should Calgary be enabled by default? if you choose 'y', Calgary
487           will be used (if it exists). If you choose 'n', Calgary will not be
488           used even if it exists. If you choose 'n' and would like to use
489           Calgary anyway, pass 'iommu=calgary' on the kernel command line.
490           If unsure, say Y.
491
492 # need this always selected by IOMMU for the VIA workaround
493 config SWIOTLB
494         bool
495
496 config X86_MCE
497         bool "Machine check support" if EMBEDDED
498         default y
499         help
500            Include a machine check error handler to report hardware errors.
501            This version will require the mcelog utility to decode some
502            machine check error logs. See
503            ftp://ftp.x86-64.org/pub/linux/tools/mcelog
504
505 config X86_MCE_INTEL
506         bool "Intel MCE features"
507         depends on X86_MCE && X86_LOCAL_APIC
508         default y
509         help
510            Additional support for intel specific MCE features such as
511            the thermal monitor.
512
513 config X86_MCE_AMD
514         bool "AMD MCE features"
515         depends on X86_MCE && X86_LOCAL_APIC
516         default y
517         help
518            Additional support for AMD specific MCE features such as
519            the DRAM Error Threshold.
520
521 config KEXEC
522         bool "kexec system call"
523         help
524           kexec is a system call that implements the ability to shutdown your
525           current kernel, and to start another kernel.  It is like a reboot
526           but it is independent of the system firmware.   And like a reboot
527           you can start any kernel with it, not just Linux.
528
529           The name comes from the similarity to the exec system call.
530
531           It is an ongoing process to be certain the hardware in a machine
532           is properly shutdown, so do not be surprised if this code does not
533           initially work for you.  It may help to enable device hotplugging
534           support.  As of this writing the exact hardware interface is
535           strongly in flux, so no good recommendation can be made.
536
537 config CRASH_DUMP
538         bool "kernel crash dumps (EXPERIMENTAL)"
539         depends on EXPERIMENTAL
540         help
541           Generate crash dump after being started by kexec.
542           This should be normally only set in special crash dump kernels
543           which are loaded in the main kernel with kexec-tools into
544           a specially reserved region and then later executed after
545           a crash by kdump/kexec. The crash dump kernel must be compiled
546           to a memory address not used by the main kernel or BIOS using
547           PHYSICAL_START.
548           For more details see Documentation/kdump/kdump.txt
549
550 config PHYSICAL_START
551         hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
552         default "0x1000000" if CRASH_DUMP
553         default "0x200000"
554         help
555           This gives the physical address where the kernel is loaded. Normally
556           for regular kernels this value is 0x200000 (2MB). But in the case
557           of kexec on panic the fail safe kernel needs to run at a different
558           address than the panic-ed kernel. This option is used to set the load
559           address for kernels used to capture crash dump on being kexec'ed
560           after panic. The default value for crash dump kernels is
561           0x1000000 (16MB). This can also be set based on the "X" value as
562           specified in the "crashkernel=YM@XM" command line boot parameter
563           passed to the panic-ed kernel. Typically this parameter is set as
564           crashkernel=64M@16M. Please take a look at
565           Documentation/kdump/kdump.txt for more details about crash dumps.
566
567           Don't change this unless you know what you are doing.
568
569 config SECCOMP
570         bool "Enable seccomp to safely compute untrusted bytecode"
571         depends on PROC_FS
572         default y
573         help
574           This kernel feature is useful for number crunching applications
575           that may need to compute untrusted bytecode during their
576           execution. By using pipes or other transports made available to
577           the process as file descriptors supporting the read/write
578           syscalls, it's possible to isolate those applications in
579           their own address space using seccomp. Once seccomp is
580           enabled via /proc/<pid>/seccomp, it cannot be disabled
581           and the task is only allowed to execute a few safe syscalls
582           defined by each seccomp mode.
583
584           If unsure, say Y. Only embedded should say N here.
585
586 config CC_STACKPROTECTOR
587         bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
588         depends on EXPERIMENTAL
589         help
590          This option turns on the -fstack-protector GCC feature. This
591           feature puts, at the beginning of critical functions, a canary
592           value on the stack just before the return address, and validates
593           the value just before actually returning.  Stack based buffer
594           overflows (that need to overwrite this return address) now also
595           overwrite the canary, which gets detected and the attack is then
596           neutralized via a kernel panic.
597
598           This feature requires gcc version 4.2 or above, or a distribution
599           gcc with the feature backported. Older versions are automatically
600           detected and for those versions, this configuration option is ignored.
601
602 config CC_STACKPROTECTOR_ALL
603         bool "Use stack-protector for all functions"
604         depends on CC_STACKPROTECTOR
605         help
606           Normally, GCC only inserts the canary value protection for
607           functions that use large-ish on-stack buffers. By enabling
608           this option, GCC will be asked to do this for ALL functions.
609
610 source kernel/Kconfig.hz
611
612 config REORDER
613         bool "Function reordering"
614         default n
615         help
616          This option enables the toolchain to reorder functions for a more 
617          optimal TLB usage. If you have pretty much any version of binutils, 
618          this can increase your kernel build time by roughly one minute.
619
620 config K8_NB
621         def_bool y
622         depends on AGP_AMD64 || IOMMU || (PCI && NUMA)
623
624 endmenu
625
626 #
627 # Use the generic interrupt handling code in kernel/irq/:
628 #
629 config GENERIC_HARDIRQS
630         bool
631         default y
632
633 config GENERIC_IRQ_PROBE
634         bool
635         default y
636
637 # we have no ISA slots, but we do have ISA-style DMA.
638 config ISA_DMA_API
639         bool
640         default y
641
642 config GENERIC_PENDING_IRQ
643         bool
644         depends on GENERIC_HARDIRQS && SMP
645         default y
646
647 menu "Power management options"
648
649 source kernel/power/Kconfig
650
651 source "drivers/acpi/Kconfig"
652
653 source "arch/x86_64/kernel/cpufreq/Kconfig"
654
655 endmenu
656
657 menu "Bus options (PCI etc.)"
658
659 config PCI
660         bool "PCI support"
661
662 # x86-64 doesn't support PCI BIOS access from long mode so always go direct.
663 config PCI_DIRECT
664         bool
665         depends on PCI
666         default y
667
668 config PCI_MMCONFIG
669         bool "Support mmconfig PCI config space access"
670         depends on PCI && ACPI
671
672 source "drivers/pci/pcie/Kconfig"
673
674 source "drivers/pci/Kconfig"
675
676 source "drivers/pcmcia/Kconfig"
677
678 source "drivers/pci/hotplug/Kconfig"
679
680 endmenu
681
682
683 menu "Executable file formats / Emulations"
684
685 source "fs/Kconfig.binfmt"
686
687 config IA32_EMULATION
688         bool "IA32 Emulation"
689         help
690           Include code to run 32-bit programs under a 64-bit kernel. You should likely
691           turn this on, unless you're 100% sure that you don't have any 32-bit programs
692           left.
693
694 config IA32_AOUT
695        tristate "IA32 a.out support"
696        depends on IA32_EMULATION
697        help
698          Support old a.out binaries in the 32bit emulation.
699
700 config COMPAT
701         bool
702         depends on IA32_EMULATION
703         default y
704
705 config SYSVIPC_COMPAT
706         bool
707         depends on COMPAT && SYSVIPC
708         default y
709
710 endmenu
711
712 source "net/Kconfig"
713
714 source drivers/Kconfig
715
716 source "drivers/firmware/Kconfig"
717
718 source fs/Kconfig
719
720 menu "Instrumentation Support"
721         depends on EXPERIMENTAL
722
723 source "arch/x86_64/oprofile/Kconfig"
724
725 config KPROBES
726         bool "Kprobes (EXPERIMENTAL)"
727         depends on KALLSYMS && EXPERIMENTAL && MODULES
728         help
729           Kprobes allows you to trap at almost any kernel address and
730           execute a callback function.  register_kprobe() establishes
731           a probepoint and specifies the callback.  Kprobes is useful
732           for kernel debugging, non-intrusive instrumentation and testing.
733           If in doubt, say "N".
734 endmenu
735
736 source "arch/x86_64/Kconfig.debug"
737
738 source "security/Kconfig"
739
740 source "crypto/Kconfig"
741
742 source "lib/Kconfig"