diff options
-rw-r--r-- | arch/x86/Kconfig | 6 | ||||
-rw-r--r-- | arch/x86/Kconfig.i386 | 215 |
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 | ||
356 | endif # X86_32 | ||
357 | |||
356 | config K8_NB | 358 | config 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 | |||
360 | endif # X86_32 | ||
361 | 361 | ||
362 | source "drivers/pcmcia/Kconfig" | 362 | source "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 | ||
221 | config 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 | |||
221 | endchoice | 229 | endchoice |
222 | 230 | ||
223 | config SCHED_NO_NO_OMIT_FRAME_POINTER | 231 | config SCHED_NO_NO_OMIT_FRAME_POINTER |
@@ -299,20 +307,87 @@ source "arch/x86/Kconfig.cpu" | |||
299 | config HPET_TIMER | 307 | config 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 | ||
311 | config HPET_EMULATE_RTC | 327 | config 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. | ||
334 | config 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 | |||
351 | config 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 | |||
369 | config 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 | ||
381 | config 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 | |||
316 | config NR_CPUS | 391 | config 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 | ||
330 | config SCHED_SMT | 405 | config 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 | ||
339 | config SCHED_MC | 414 | config 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 | ||
375 | config X86_LOCAL_APIC | 450 | config 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 | ||
380 | config X86_IO_APIC | 455 | config 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 | ||
385 | config X86_VISWS_APIC | 460 | config 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 | ||
482 | config 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 | |||
490 | config 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 | |||
407 | config X86_MCE_NONFATAL | 498 | config 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 |
652 | config NUMA | 743 | config 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 | ||
662 | comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI" | 761 | comment "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 | ||
764 | config 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 | |||
775 | config 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 | |||
783 | config 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 | |||
665 | config NODES_SHIFT | 791 | config 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 | ||
691 | config ARCH_FLATMEM_ENABLE | 818 | config 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 | ||
695 | config ARCH_DISCONTIGMEM_ENABLE | 822 | config ARCH_DISCONTIGMEM_ENABLE |
696 | def_bool y | 823 | def_bool y |
@@ -702,8 +829,9 @@ config ARCH_DISCONTIGMEM_DEFAULT | |||
702 | 829 | ||
703 | config ARCH_SPARSEMEM_ENABLE | 830 | config 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 | ||
708 | config ARCH_SELECT_MEMORY_MODEL | 836 | config ARCH_SELECT_MEMORY_MODEL |
709 | def_bool y | 837 | def_bool y |
@@ -712,6 +840,10 @@ config ARCH_SELECT_MEMORY_MODEL | |||
712 | config ARCH_POPULATES_NODE_MAP | 840 | config ARCH_POPULATES_NODE_MAP |
713 | def_bool y | 841 | def_bool y |
714 | 842 | ||
843 | config ARCH_MEMORY_PROBE | ||
844 | def_bool X86_64 | ||
845 | depends on MEMORY_HOTPLUG | ||
846 | |||
715 | source "mm/Kconfig" | 847 | source "mm/Kconfig" |
716 | 848 | ||
717 | config HIGHPTE | 849 | config 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 | ||
968 | config 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 | |||
984 | config 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 | |||
836 | source kernel/Kconfig.hz | 992 | source kernel/Kconfig.hz |
837 | 993 | ||
838 | config KEXEC | 994 | config KEXEC |
@@ -854,7 +1010,7 @@ config KEXEC | |||
854 | config CRASH_DUMP | 1010 | config 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 | |||
869 | config PHYSICAL_START | 1025 | config 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 | |||
924 | config PHYSICAL_ALIGN | 1085 | config 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 | ||
956 | config COMPAT_VDSO | 1120 | config COMPAT_VDSO |
957 | bool "Compat VDSO support" | 1121 | bool "Compat VDSO support" |
@@ -970,8 +1134,19 @@ endmenu | |||
970 | 1134 | ||
971 | config ARCH_ENABLE_MEMORY_HOTPLUG | 1135 | config 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 | |||
1139 | config MEMORY_HOTPLUG_RESERVE | ||
1140 | def_bool X86_64 | ||
1141 | depends on (MEMORY_HOTPLUG && DISCONTIGMEM) | ||
1142 | |||
1143 | config HAVE_ARCH_EARLY_PFN_TO_NID | ||
1144 | def_bool X86_64 | ||
1145 | depends on NUMA | ||
974 | 1146 | ||
1147 | config 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 | ||
997 | config X86_HT | 1172 | config 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 | ||
1002 | config X86_BIOS_REBOOT | 1177 | config X86_BIOS_REBOOT |