aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/Kconfig6
-rw-r--r--arch/x86/Kconfig.i386215
2 files changed, 198 insertions, 23 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index e741fc772da5..9fbb049950d1 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -353,11 +353,11 @@ config GEODE_MFGPT_TIMER
353 MFGPTs have a better resolution and max interval than the 353 MFGPTs have a better resolution and max interval than the
354 generic PIT, and are suitable for use as high-res timers. 354 generic PIT, and are suitable for use as high-res timers.
355 355
356endif # X86_32
357
356config K8_NB 358config K8_NB
357 def_bool y 359 def_bool y
358 depends on AGP_AMD64 360 depends on AGP_AMD64 || (X86_64 && (GART_IOMMU || (PCI && NUMA)))
359
360endif # X86_32
361 361
362source "drivers/pcmcia/Kconfig" 362source "drivers/pcmcia/Kconfig"
363 363
diff --git a/arch/x86/Kconfig.i386 b/arch/x86/Kconfig.i386
index 174b9092b46f..3be76720e896 100644
--- a/arch/x86/Kconfig.i386
+++ b/arch/x86/Kconfig.i386
@@ -218,6 +218,14 @@ config X86_ES7000
218 Only choose this option if you have such a system, otherwise you 218 Only choose this option if you have such a system, otherwise you
219 should say N here. 219 should say N here.
220 220
221config X86_VSMP
222 bool "Support for ScaleMP vSMP"
223 depends on X86_64 && PCI
224 help
225 Support for ScaleMP vSMP systems. Say 'Y' here if this kernel is
226 supposed to run on these EM64T-based machines. Only choose this option
227 if you have one of these machines.
228
221endchoice 229endchoice
222 230
223config SCHED_NO_NO_OMIT_FRAME_POINTER 231config SCHED_NO_NO_OMIT_FRAME_POINTER
@@ -299,20 +307,87 @@ source "arch/x86/Kconfig.cpu"
299config HPET_TIMER 307config HPET_TIMER
300 bool 308 bool
301 prompt "HPET Timer Support" if X86_32 309 prompt "HPET Timer Support" if X86_32
310 default X86_64
302 help 311 help
303 This enables the use of the HPET for the kernel's internal timer. 312 Use the IA-PC HPET (High Precision Event Timer) to manage
304 HPET is the next generation timer replacing legacy 8254s. 313 time in preference to the PIT and RTC, if a HPET is
305 You can safely choose Y here. However, HPET will only be 314 present.
306 activated if the platform and the BIOS support this feature. 315 HPET is the next generation timer replacing legacy 8254s.
307 Otherwise the 8254 will be used for timing services. 316 The HPET provides a stable time base on SMP
317 systems, unlike the TSC, but it is more expensive to access,
318 as it is off-chip. You can find the HPET spec at
319 <http://www.intel.com/hardwaredesign/hpetspec.htm>.
320
321 You can safely choose Y here. However, HPET will only be
322 activated if the platform and the BIOS support this feature.
323 Otherwise the 8254 will be used for timing services.
308 324
309 Choose N to continue using the legacy 8254 timer. 325 Choose N to continue using the legacy 8254 timer.
310 326
311config HPET_EMULATE_RTC 327config HPET_EMULATE_RTC
312 bool 328 bool
313 depends on HPET_TIMER && RTC=y 329 depends on HPET_TIMER && RTC=y
314 default y 330 default y
315 331
332# Mark as embedded because too many people got it wrong.
333# The code disables itself when not needed.
334config GART_IOMMU
335 bool "GART IOMMU support" if EMBEDDED
336 default y
337 select SWIOTLB
338 select AGP
339 depends on X86_64 && PCI
340 help
341 Support for full DMA access of devices with 32bit memory access only
342 on systems with more than 3GB. This is usually needed for USB,
343 sound, many IDE/SATA chipsets and some other devices.
344 Provides a driver for the AMD Athlon64/Opteron/Turion/Sempron GART
345 based hardware IOMMU and a software bounce buffer based IOMMU used
346 on Intel systems and as fallback.
347 The code is only active when needed (enough memory and limited
348 device) unless CONFIG_IOMMU_DEBUG or iommu=force is specified
349 too.
350
351config CALGARY_IOMMU
352 bool "IBM Calgary IOMMU support"
353 select SWIOTLB
354 depends on X86_64 && PCI && EXPERIMENTAL
355 help
356 Support for hardware IOMMUs in IBM's xSeries x366 and x460
357 systems. Needed to run systems with more than 3GB of memory
358 properly with 32-bit PCI devices that do not support DAC
359 (Double Address Cycle). Calgary also supports bus level
360 isolation, where all DMAs pass through the IOMMU. This
361 prevents them from going anywhere except their intended
362 destination. This catches hard-to-find kernel bugs and
363 mis-behaving drivers and devices that do not use the DMA-API
364 properly to set up their DMA buffers. The IOMMU can be
365 turned off at boot time with the iommu=off parameter.
366 Normally the kernel will make the right choice by itself.
367 If unsure, say Y.
368
369config CALGARY_IOMMU_ENABLED_BY_DEFAULT
370 bool "Should Calgary be enabled by default?"
371 default y
372 depends on CALGARY_IOMMU
373 help
374 Should Calgary be enabled by default? if you choose 'y', Calgary
375 will be used (if it exists). If you choose 'n', Calgary will not be
376 used even if it exists. If you choose 'n' and would like to use
377 Calgary anyway, pass 'iommu=calgary' on the kernel command line.
378 If unsure, say Y.
379
380# need this always selected by IOMMU for the VIA workaround
381config SWIOTLB
382 bool
383 help
384 Support for software bounce buffers used on x86-64 systems
385 which don't have a hardware IOMMU (e.g. the current generation
386 of Intel's x86-64 CPUs). Using this PCI devices which can only
387 access 32-bits of memory can be used on systems with more than
388 3 GB of memory. If unsure, say Y.
389
390
316config NR_CPUS 391config NR_CPUS
317 int "Maximum number of CPUs (2-255)" 392 int "Maximum number of CPUs (2-255)"
318 range 2 255 393 range 2 255
@@ -329,7 +404,7 @@ config NR_CPUS
329 404
330config SCHED_SMT 405config SCHED_SMT
331 bool "SMT (Hyperthreading) scheduler support" 406 bool "SMT (Hyperthreading) scheduler support"
332 depends on X86_HT 407 depends on (X86_64 && SMP) || (X86_32 && X86_HT)
333 help 408 help
334 SMT scheduler support improves the CPU scheduler's decision making 409 SMT scheduler support improves the CPU scheduler's decision making
335 when dealing with Intel Pentium 4 chips with HyperThreading at a 410 when dealing with Intel Pentium 4 chips with HyperThreading at a
@@ -338,7 +413,7 @@ config SCHED_SMT
338 413
339config SCHED_MC 414config SCHED_MC
340 bool "Multi-core scheduler support" 415 bool "Multi-core scheduler support"
341 depends on X86_HT 416 depends on (X86_64 && SMP) || (X86_32 && X86_HT)
342 default y 417 default y
343 help 418 help
344 Multi-core scheduler support improves the CPU scheduler's decision 419 Multi-core scheduler support improves the CPU scheduler's decision
@@ -374,12 +449,12 @@ config X86_UP_IOAPIC
374 449
375config X86_LOCAL_APIC 450config X86_LOCAL_APIC
376 bool 451 bool
377 depends on X86_32 && (X86_UP_APIC || ((X86_VISWS || SMP) && !X86_VOYAGER) || X86_GENERICARCH) 452 depends on X86_64 || (X86_32 && (X86_UP_APIC || ((X86_VISWS || SMP) && !X86_VOYAGER) || X86_GENERICARCH))
378 default y 453 default y
379 454
380config X86_IO_APIC 455config X86_IO_APIC
381 bool 456 bool
382 depends on X86_32 && (X86_UP_IOAPIC || (SMP && !(X86_VISWS || X86_VOYAGER)) || X86_GENERICARCH) 457 depends on X86_64 || (X86_32 && (X86_UP_IOAPIC || (SMP && !(X86_VISWS || X86_VOYAGER)) || X86_GENERICARCH))
383 default y 458 default y
384 459
385config X86_VISWS_APIC 460config X86_VISWS_APIC
@@ -404,6 +479,22 @@ config X86_MCE
404 to disable it. MCE support simply ignores non-MCE processors like 479 to disable it. MCE support simply ignores non-MCE processors like
405 the 386 and 486, so nearly everyone can say Y here. 480 the 386 and 486, so nearly everyone can say Y here.
406 481
482config X86_MCE_INTEL
483 bool "Intel MCE features"
484 depends on X86_64 && X86_MCE && X86_LOCAL_APIC
485 default y
486 help
487 Additional support for intel specific MCE features such as
488 the thermal monitor.
489
490config X86_MCE_AMD
491 bool "AMD MCE features"
492 depends on X86_64 && X86_MCE && X86_LOCAL_APIC
493 default y
494 help
495 Additional support for AMD specific MCE features such as
496 the DRAM Error Threshold.
497
407config X86_MCE_NONFATAL 498config X86_MCE_NONFATAL
408 tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4" 499 tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4"
409 depends on X86_32 && X86_MCE 500 depends on X86_32 && X86_MCE
@@ -651,19 +742,55 @@ config X86_PAE
651# Common NUMA Features 742# Common NUMA Features
652config NUMA 743config NUMA
653 bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)" 744 bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)"
654 depends on X86_32 && SMP && HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT || X86_GENERICARCH) && ACPI) && EXPERIMENTAL 745 depends on SMP
746 depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT || X86_GENERICARCH) && ACPI) && EXPERIMENTAL)
655 default n if X86_PC 747 default n if X86_PC
656 default y if (X86_NUMAQ || X86_SUMMIT) 748 default y if (X86_NUMAQ || X86_SUMMIT)
657 help 749 help
658 NUMA support for i386. This is currently highly experimental 750 Enable NUMA (Non Uniform Memory Access) support.
659 and should be only used for kernel development. It might also 751 The kernel will try to allocate memory used by a CPU on the
660 cause boot failures. 752 local memory controller of the CPU and add some more
753 NUMA awareness to the kernel.
754
755 For i386 this is currently highly experimental and should be only
756 used for kernel development. It might also cause boot failures.
757 For x86_64 this is recommended on all multiprocessor Opteron systems.
758 If the system is EM64T, you should say N unless your system is
759 EM64T NUMA.
661 760
662comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI" 761comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
663 depends on X86_32 && X86_SUMMIT && (!HIGHMEM64G || !ACPI) 762 depends on X86_32 && X86_SUMMIT && (!HIGHMEM64G || !ACPI)
664 763
764config K8_NUMA
765 bool "Old style AMD Opteron NUMA detection"
766 depends on X86_64 && NUMA && PCI
767 default y
768 help
769 Enable K8 NUMA node topology detection. You should say Y here if
770 you have a multi processor AMD K8 system. This uses an old
771 method to read the NUMA configuration directly from the builtin
772 Northbridge of Opteron. It is recommended to use X86_64_ACPI_NUMA
773 instead, which also takes priority if both are compiled in.
774
775config X86_64_ACPI_NUMA
776 bool "ACPI NUMA detection"
777 depends on X86_64 && NUMA && ACPI && PCI
778 select ACPI_NUMA
779 default y
780 help
781 Enable ACPI SRAT based node topology detection.
782
783config NUMA_EMU
784 bool "NUMA emulation"
785 depends on X86_64 && NUMA
786 help
787 Enable NUMA emulation. A flat machine will be split
788 into virtual nodes when booted with "numa=fake=N", where N is the
789 number of nodes. This is only useful for debugging.
790
665config NODES_SHIFT 791config NODES_SHIFT
666 int 792 int
793 default "6" if X86_64
667 default "4" if X86_NUMAQ 794 default "4" if X86_NUMAQ
668 default "3" 795 default "3"
669 depends on NEED_MULTIPLE_NODES 796 depends on NEED_MULTIPLE_NODES
@@ -690,7 +817,7 @@ config HAVE_ARCH_ALLOC_REMAP
690 817
691config ARCH_FLATMEM_ENABLE 818config ARCH_FLATMEM_ENABLE
692 def_bool y 819 def_bool y
693 depends on X86_32 && ARCH_SELECT_MEMORY_MODEL && X86_PC 820 depends on (X86_32 && ARCH_SELECT_MEMORY_MODEL && X86_PC) || (X86_64 && !NUMA)
694 821
695config ARCH_DISCONTIGMEM_ENABLE 822config ARCH_DISCONTIGMEM_ENABLE
696 def_bool y 823 def_bool y
@@ -702,8 +829,9 @@ config ARCH_DISCONTIGMEM_DEFAULT
702 829
703config ARCH_SPARSEMEM_ENABLE 830config ARCH_SPARSEMEM_ENABLE
704 def_bool y 831 def_bool y
705 depends on (NUMA || (X86_PC && EXPERIMENTAL)) 832 depends on NUMA || (EXPERIMENTAL && (X86_PC || X86_64))
706 select SPARSEMEM_STATIC if X86_32 833 select SPARSEMEM_STATIC if X86_32
834 select SPARSEMEM_VMEMMAP_ENABLE if X86_64
707 835
708config ARCH_SELECT_MEMORY_MODEL 836config ARCH_SELECT_MEMORY_MODEL
709 def_bool y 837 def_bool y
@@ -712,6 +840,10 @@ config ARCH_SELECT_MEMORY_MODEL
712config ARCH_POPULATES_NODE_MAP 840config ARCH_POPULATES_NODE_MAP
713 def_bool y 841 def_bool y
714 842
843config ARCH_MEMORY_PROBE
844 def_bool X86_64
845 depends on MEMORY_HOTPLUG
846
715source "mm/Kconfig" 847source "mm/Kconfig"
716 848
717config HIGHPTE 849config HIGHPTE
@@ -833,6 +965,30 @@ config SECCOMP
833 965
834 If unsure, say Y. Only embedded should say N here. 966 If unsure, say Y. Only embedded should say N here.
835 967
968config CC_STACKPROTECTOR
969 bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
970 depends on X86_64 && EXPERIMENTAL
971 help
972 This option turns on the -fstack-protector GCC feature. This
973 feature puts, at the beginning of critical functions, a canary
974 value on the stack just before the return address, and validates
975 the value just before actually returning. Stack based buffer
976 overflows (that need to overwrite this return address) now also
977 overwrite the canary, which gets detected and the attack is then
978 neutralized via a kernel panic.
979
980 This feature requires gcc version 4.2 or above, or a distribution
981 gcc with the feature backported. Older versions are automatically
982 detected and for those versions, this configuration option is ignored.
983
984config CC_STACKPROTECTOR_ALL
985 bool "Use stack-protector for all functions"
986 depends on CC_STACKPROTECTOR
987 help
988 Normally, GCC only inserts the canary value protection for
989 functions that use large-ish on-stack buffers. By enabling
990 this option, GCC will be asked to do this for ALL functions.
991
836source kernel/Kconfig.hz 992source kernel/Kconfig.hz
837 993
838config KEXEC 994config KEXEC
@@ -854,7 +1010,7 @@ config KEXEC
854config CRASH_DUMP 1010config CRASH_DUMP
855 bool "kernel crash dumps (EXPERIMENTAL)" 1011 bool "kernel crash dumps (EXPERIMENTAL)"
856 depends on EXPERIMENTAL 1012 depends on EXPERIMENTAL
857 depends on HIGHMEM 1013 depends on X86_64 || (X86_32 && HIGHMEM)
858 help 1014 help
859 Generate crash dump after being started by kexec. 1015 Generate crash dump after being started by kexec.
860 This should be normally only set in special crash dump kernels 1016 This should be normally only set in special crash dump kernels
@@ -869,6 +1025,7 @@ config CRASH_DUMP
869config PHYSICAL_START 1025config PHYSICAL_START
870 hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP) 1026 hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
871 default "0x1000000" if X86_NUMAQ 1027 default "0x1000000" if X86_NUMAQ
1028 default "0x200000" if X86_64
872 default "0x100000" 1029 default "0x100000"
873 help 1030 help
874 This gives the physical address where the kernel is loaded. 1031 This gives the physical address where the kernel is loaded.
@@ -921,10 +1078,15 @@ config RELOCATABLE
921 must live at a different physical address than the primary 1078 must live at a different physical address than the primary
922 kernel. 1079 kernel.
923 1080
1081 Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
1082 it has been loaded at and the compile time physical address
1083 (CONFIG_PHYSICAL_START) is ignored.
1084
924config PHYSICAL_ALIGN 1085config PHYSICAL_ALIGN
925 hex 1086 hex
926 prompt "Alignment value to which kernel should be aligned" if X86_32 1087 prompt "Alignment value to which kernel should be aligned" if X86_32
927 default "0x100000" 1088 default "0x100000" if X86_32
1089 default "0x200000" if X86_64
928 range 0x2000 0x400000 1090 range 0x2000 0x400000
929 help 1091 help
930 This value puts the alignment restrictions on physical address 1092 This value puts the alignment restrictions on physical address
@@ -952,6 +1114,8 @@ config HOTPLUG_CPU
952 Say Y here to experiment with turning CPUs off and on, and to 1114 Say Y here to experiment with turning CPUs off and on, and to
953 enable suspend on SMP systems. CPUs can be controlled through 1115 enable suspend on SMP systems. CPUs can be controlled through
954 /sys/devices/system/cpu. 1116 /sys/devices/system/cpu.
1117 Say N if you want to disable CPU hotplug and don't need to
1118 suspend.
955 1119
956config COMPAT_VDSO 1120config COMPAT_VDSO
957 bool "Compat VDSO support" 1121 bool "Compat VDSO support"
@@ -970,8 +1134,19 @@ endmenu
970 1134
971config ARCH_ENABLE_MEMORY_HOTPLUG 1135config ARCH_ENABLE_MEMORY_HOTPLUG
972 def_bool y 1136 def_bool y
973 depends on HIGHMEM 1137 depends on X86_64 || (X86_32 && HIGHMEM)
1138
1139config MEMORY_HOTPLUG_RESERVE
1140 def_bool X86_64
1141 depends on (MEMORY_HOTPLUG && DISCONTIGMEM)
1142
1143config HAVE_ARCH_EARLY_PFN_TO_NID
1144 def_bool X86_64
1145 depends on NUMA
974 1146
1147config OUT_OF_LINE_PFN_TO_PAGE
1148 def_bool X86_64
1149 depends on DISCONTIGMEM
975 1150
976# 1151#
977# Use the generic interrupt handling code in kernel/irq/: 1152# Use the generic interrupt handling code in kernel/irq/:
@@ -996,7 +1171,7 @@ config X86_SMP
996 1171
997config X86_HT 1172config X86_HT
998 bool 1173 bool
999 depends on SMP && !(X86_VISWS || X86_VOYAGER) 1174 depends on SMP && !(X86_VISWS || X86_VOYAGER || MK8)
1000 default y 1175 default y
1001 1176
1002config X86_BIOS_REBOOT 1177config X86_BIOS_REBOOT