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