|
@@ -218,6 +218,14 @@ config X86_ES7000
|
|
Only choose this option if you have such a system, otherwise you
|
|
Only choose this option if you have such a system, otherwise you
|
|
should say N here.
|
|
should say N here.
|
|
|
|
|
|
|
|
+config X86_VSMP
|
|
|
|
+ bool "Support for ScaleMP vSMP"
|
|
|
|
+ depends on X86_64 && PCI
|
|
|
|
+ help
|
|
|
|
+ Support for ScaleMP vSMP systems. Say 'Y' here if this kernel is
|
|
|
|
+ supposed to run on these EM64T-based machines. Only choose this option
|
|
|
|
+ if you have one of these machines.
|
|
|
|
+
|
|
endchoice
|
|
endchoice
|
|
|
|
|
|
config SCHED_NO_NO_OMIT_FRAME_POINTER
|
|
config SCHED_NO_NO_OMIT_FRAME_POINTER
|
|
@@ -299,20 +307,87 @@ source "arch/x86/Kconfig.cpu"
|
|
config HPET_TIMER
|
|
config HPET_TIMER
|
|
bool
|
|
bool
|
|
prompt "HPET Timer Support" if X86_32
|
|
prompt "HPET Timer Support" if X86_32
|
|
|
|
+ default X86_64
|
|
help
|
|
help
|
|
- This enables the use of the HPET for the kernel's internal timer.
|
|
|
|
- HPET is the next generation timer replacing legacy 8254s.
|
|
|
|
- You can safely choose Y here. However, HPET will only be
|
|
|
|
- activated if the platform and the BIOS support this feature.
|
|
|
|
- Otherwise the 8254 will be used for timing services.
|
|
|
|
|
|
+ Use the IA-PC HPET (High Precision Event Timer) to manage
|
|
|
|
+ time in preference to the PIT and RTC, if a HPET is
|
|
|
|
+ present.
|
|
|
|
+ HPET is the next generation timer replacing legacy 8254s.
|
|
|
|
+ The HPET provides a stable time base on SMP
|
|
|
|
+ systems, unlike the TSC, but it is more expensive to access,
|
|
|
|
+ as it is off-chip. You can find the HPET spec at
|
|
|
|
+ <http://www.intel.com/hardwaredesign/hpetspec.htm>.
|
|
|
|
+
|
|
|
|
+ You can safely choose Y here. However, HPET will only be
|
|
|
|
+ activated if the platform and the BIOS support this feature.
|
|
|
|
+ Otherwise the 8254 will be used for timing services.
|
|
|
|
|
|
- Choose N to continue using the legacy 8254 timer.
|
|
|
|
|
|
+ Choose N to continue using the legacy 8254 timer.
|
|
|
|
|
|
config HPET_EMULATE_RTC
|
|
config HPET_EMULATE_RTC
|
|
bool
|
|
bool
|
|
depends on HPET_TIMER && RTC=y
|
|
depends on HPET_TIMER && RTC=y
|
|
default y
|
|
default y
|
|
|
|
|
|
|
|
+# Mark as embedded because too many people got it wrong.
|
|
|
|
+# The code disables itself when not needed.
|
|
|
|
+config GART_IOMMU
|
|
|
|
+ bool "GART IOMMU support" if EMBEDDED
|
|
|
|
+ default y
|
|
|
|
+ select SWIOTLB
|
|
|
|
+ select AGP
|
|
|
|
+ depends on X86_64 && PCI
|
|
|
|
+ help
|
|
|
|
+ Support for full DMA access of devices with 32bit memory access only
|
|
|
|
+ on systems with more than 3GB. This is usually needed for USB,
|
|
|
|
+ sound, many IDE/SATA chipsets and some other devices.
|
|
|
|
+ Provides a driver for the AMD Athlon64/Opteron/Turion/Sempron GART
|
|
|
|
+ based hardware IOMMU and a software bounce buffer based IOMMU used
|
|
|
|
+ on Intel systems and as fallback.
|
|
|
|
+ The code is only active when needed (enough memory and limited
|
|
|
|
+ device) unless CONFIG_IOMMU_DEBUG or iommu=force is specified
|
|
|
|
+ too.
|
|
|
|
+
|
|
|
|
+config CALGARY_IOMMU
|
|
|
|
+ bool "IBM Calgary IOMMU support"
|
|
|
|
+ select SWIOTLB
|
|
|
|
+ depends on X86_64 && PCI && EXPERIMENTAL
|
|
|
|
+ help
|
|
|
|
+ Support for hardware IOMMUs in IBM's xSeries x366 and x460
|
|
|
|
+ systems. Needed to run systems with more than 3GB of memory
|
|
|
|
+ properly with 32-bit PCI devices that do not support DAC
|
|
|
|
+ (Double Address Cycle). Calgary also supports bus level
|
|
|
|
+ isolation, where all DMAs pass through the IOMMU. This
|
|
|
|
+ prevents them from going anywhere except their intended
|
|
|
|
+ destination. This catches hard-to-find kernel bugs and
|
|
|
|
+ mis-behaving drivers and devices that do not use the DMA-API
|
|
|
|
+ properly to set up their DMA buffers. The IOMMU can be
|
|
|
|
+ turned off at boot time with the iommu=off parameter.
|
|
|
|
+ Normally the kernel will make the right choice by itself.
|
|
|
|
+ If unsure, say Y.
|
|
|
|
+
|
|
|
|
+config CALGARY_IOMMU_ENABLED_BY_DEFAULT
|
|
|
|
+ bool "Should Calgary be enabled by default?"
|
|
|
|
+ default y
|
|
|
|
+ depends on CALGARY_IOMMU
|
|
|
|
+ help
|
|
|
|
+ Should Calgary be enabled by default? if you choose 'y', Calgary
|
|
|
|
+ will be used (if it exists). If you choose 'n', Calgary will not be
|
|
|
|
+ used even if it exists. If you choose 'n' and would like to use
|
|
|
|
+ Calgary anyway, pass 'iommu=calgary' on the kernel command line.
|
|
|
|
+ If unsure, say Y.
|
|
|
|
+
|
|
|
|
+# need this always selected by IOMMU for the VIA workaround
|
|
|
|
+config SWIOTLB
|
|
|
|
+ bool
|
|
|
|
+ help
|
|
|
|
+ Support for software bounce buffers used on x86-64 systems
|
|
|
|
+ which don't have a hardware IOMMU (e.g. the current generation
|
|
|
|
+ of Intel's x86-64 CPUs). Using this PCI devices which can only
|
|
|
|
+ access 32-bits of memory can be used on systems with more than
|
|
|
|
+ 3 GB of memory. If unsure, say Y.
|
|
|
|
+
|
|
|
|
+
|
|
config NR_CPUS
|
|
config NR_CPUS
|
|
int "Maximum number of CPUs (2-255)"
|
|
int "Maximum number of CPUs (2-255)"
|
|
range 2 255
|
|
range 2 255
|
|
@@ -329,7 +404,7 @@ config NR_CPUS
|
|
|
|
|
|
config SCHED_SMT
|
|
config SCHED_SMT
|
|
bool "SMT (Hyperthreading) scheduler support"
|
|
bool "SMT (Hyperthreading) scheduler support"
|
|
- depends on X86_HT
|
|
|
|
|
|
+ depends on (X86_64 && SMP) || (X86_32 && X86_HT)
|
|
help
|
|
help
|
|
SMT scheduler support improves the CPU scheduler's decision making
|
|
SMT scheduler support improves the CPU scheduler's decision making
|
|
when dealing with Intel Pentium 4 chips with HyperThreading at a
|
|
when dealing with Intel Pentium 4 chips with HyperThreading at a
|
|
@@ -338,7 +413,7 @@ config SCHED_SMT
|
|
|
|
|
|
config SCHED_MC
|
|
config SCHED_MC
|
|
bool "Multi-core scheduler support"
|
|
bool "Multi-core scheduler support"
|
|
- depends on X86_HT
|
|
|
|
|
|
+ depends on (X86_64 && SMP) || (X86_32 && X86_HT)
|
|
default y
|
|
default y
|
|
help
|
|
help
|
|
Multi-core scheduler support improves the CPU scheduler's decision
|
|
Multi-core scheduler support improves the CPU scheduler's decision
|
|
@@ -374,12 +449,12 @@ config X86_UP_IOAPIC
|
|
|
|
|
|
config X86_LOCAL_APIC
|
|
config X86_LOCAL_APIC
|
|
bool
|
|
bool
|
|
- depends on X86_32 && (X86_UP_APIC || ((X86_VISWS || SMP) && !X86_VOYAGER) || X86_GENERICARCH)
|
|
|
|
|
|
+ depends on X86_64 || (X86_32 && (X86_UP_APIC || ((X86_VISWS || SMP) && !X86_VOYAGER) || X86_GENERICARCH))
|
|
default y
|
|
default y
|
|
|
|
|
|
config X86_IO_APIC
|
|
config X86_IO_APIC
|
|
bool
|
|
bool
|
|
- depends on X86_32 && (X86_UP_IOAPIC || (SMP && !(X86_VISWS || X86_VOYAGER)) || X86_GENERICARCH)
|
|
|
|
|
|
+ depends on X86_64 || (X86_32 && (X86_UP_IOAPIC || (SMP && !(X86_VISWS || X86_VOYAGER)) || X86_GENERICARCH))
|
|
default y
|
|
default y
|
|
|
|
|
|
config X86_VISWS_APIC
|
|
config X86_VISWS_APIC
|
|
@@ -404,6 +479,22 @@ config X86_MCE
|
|
to disable it. MCE support simply ignores non-MCE processors like
|
|
to disable it. MCE support simply ignores non-MCE processors like
|
|
the 386 and 486, so nearly everyone can say Y here.
|
|
the 386 and 486, so nearly everyone can say Y here.
|
|
|
|
|
|
|
|
+config X86_MCE_INTEL
|
|
|
|
+ bool "Intel MCE features"
|
|
|
|
+ depends on X86_64 && X86_MCE && X86_LOCAL_APIC
|
|
|
|
+ default y
|
|
|
|
+ help
|
|
|
|
+ Additional support for intel specific MCE features such as
|
|
|
|
+ the thermal monitor.
|
|
|
|
+
|
|
|
|
+config X86_MCE_AMD
|
|
|
|
+ bool "AMD MCE features"
|
|
|
|
+ depends on X86_64 && X86_MCE && X86_LOCAL_APIC
|
|
|
|
+ default y
|
|
|
|
+ help
|
|
|
|
+ Additional support for AMD specific MCE features such as
|
|
|
|
+ the DRAM Error Threshold.
|
|
|
|
+
|
|
config X86_MCE_NONFATAL
|
|
config X86_MCE_NONFATAL
|
|
tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4"
|
|
tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4"
|
|
depends on X86_32 && X86_MCE
|
|
depends on X86_32 && X86_MCE
|
|
@@ -651,19 +742,55 @@ config X86_PAE
|
|
# Common NUMA Features
|
|
# Common NUMA Features
|
|
config NUMA
|
|
config NUMA
|
|
bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)"
|
|
bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)"
|
|
- depends on X86_32 && SMP && HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT || X86_GENERICARCH) && ACPI) && EXPERIMENTAL
|
|
|
|
|
|
+ depends on SMP
|
|
|
|
+ depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT || X86_GENERICARCH) && ACPI) && EXPERIMENTAL)
|
|
default n if X86_PC
|
|
default n if X86_PC
|
|
default y if (X86_NUMAQ || X86_SUMMIT)
|
|
default y if (X86_NUMAQ || X86_SUMMIT)
|
|
help
|
|
help
|
|
- NUMA support for i386. This is currently highly experimental
|
|
|
|
- and should be only used for kernel development. It might also
|
|
|
|
- cause boot failures.
|
|
|
|
|
|
+ Enable NUMA (Non Uniform Memory Access) support.
|
|
|
|
+ The kernel will try to allocate memory used by a CPU on the
|
|
|
|
+ local memory controller of the CPU and add some more
|
|
|
|
+ NUMA awareness to the kernel.
|
|
|
|
+
|
|
|
|
+ For i386 this is currently highly experimental and should be only
|
|
|
|
+ used for kernel development. It might also cause boot failures.
|
|
|
|
+ For x86_64 this is recommended on all multiprocessor Opteron systems.
|
|
|
|
+ If the system is EM64T, you should say N unless your system is
|
|
|
|
+ EM64T NUMA.
|
|
|
|
|
|
comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
|
|
comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
|
|
depends on X86_32 && X86_SUMMIT && (!HIGHMEM64G || !ACPI)
|
|
depends on X86_32 && X86_SUMMIT && (!HIGHMEM64G || !ACPI)
|
|
|
|
|
|
|
|
+config K8_NUMA
|
|
|
|
+ bool "Old style AMD Opteron NUMA detection"
|
|
|
|
+ depends on X86_64 && NUMA && PCI
|
|
|
|
+ default y
|
|
|
|
+ help
|
|
|
|
+ Enable K8 NUMA node topology detection. You should say Y here if
|
|
|
|
+ you have a multi processor AMD K8 system. This uses an old
|
|
|
|
+ method to read the NUMA configuration directly from the builtin
|
|
|
|
+ Northbridge of Opteron. It is recommended to use X86_64_ACPI_NUMA
|
|
|
|
+ instead, which also takes priority if both are compiled in.
|
|
|
|
+
|
|
|
|
+config X86_64_ACPI_NUMA
|
|
|
|
+ bool "ACPI NUMA detection"
|
|
|
|
+ depends on X86_64 && NUMA && ACPI && PCI
|
|
|
|
+ select ACPI_NUMA
|
|
|
|
+ default y
|
|
|
|
+ help
|
|
|
|
+ Enable ACPI SRAT based node topology detection.
|
|
|
|
+
|
|
|
|
+config NUMA_EMU
|
|
|
|
+ bool "NUMA emulation"
|
|
|
|
+ depends on X86_64 && NUMA
|
|
|
|
+ help
|
|
|
|
+ Enable NUMA emulation. A flat machine will be split
|
|
|
|
+ into virtual nodes when booted with "numa=fake=N", where N is the
|
|
|
|
+ number of nodes. This is only useful for debugging.
|
|
|
|
+
|
|
config NODES_SHIFT
|
|
config NODES_SHIFT
|
|
int
|
|
int
|
|
|
|
+ default "6" if X86_64
|
|
default "4" if X86_NUMAQ
|
|
default "4" if X86_NUMAQ
|
|
default "3"
|
|
default "3"
|
|
depends on NEED_MULTIPLE_NODES
|
|
depends on NEED_MULTIPLE_NODES
|
|
@@ -690,7 +817,7 @@ config HAVE_ARCH_ALLOC_REMAP
|
|
|
|
|
|
config ARCH_FLATMEM_ENABLE
|
|
config ARCH_FLATMEM_ENABLE
|
|
def_bool y
|
|
def_bool y
|
|
- depends on X86_32 && ARCH_SELECT_MEMORY_MODEL && X86_PC
|
|
|
|
|
|
+ depends on (X86_32 && ARCH_SELECT_MEMORY_MODEL && X86_PC) || (X86_64 && !NUMA)
|
|
|
|
|
|
config ARCH_DISCONTIGMEM_ENABLE
|
|
config ARCH_DISCONTIGMEM_ENABLE
|
|
def_bool y
|
|
def_bool y
|
|
@@ -702,8 +829,9 @@ config ARCH_DISCONTIGMEM_DEFAULT
|
|
|
|
|
|
config ARCH_SPARSEMEM_ENABLE
|
|
config ARCH_SPARSEMEM_ENABLE
|
|
def_bool y
|
|
def_bool y
|
|
- depends on (NUMA || (X86_PC && EXPERIMENTAL))
|
|
|
|
|
|
+ depends on NUMA || (EXPERIMENTAL && (X86_PC || X86_64))
|
|
select SPARSEMEM_STATIC if X86_32
|
|
select SPARSEMEM_STATIC if X86_32
|
|
|
|
+ select SPARSEMEM_VMEMMAP_ENABLE if X86_64
|
|
|
|
|
|
config ARCH_SELECT_MEMORY_MODEL
|
|
config ARCH_SELECT_MEMORY_MODEL
|
|
def_bool y
|
|
def_bool y
|
|
@@ -712,6 +840,10 @@ config ARCH_SELECT_MEMORY_MODEL
|
|
config ARCH_POPULATES_NODE_MAP
|
|
config ARCH_POPULATES_NODE_MAP
|
|
def_bool y
|
|
def_bool y
|
|
|
|
|
|
|
|
+config ARCH_MEMORY_PROBE
|
|
|
|
+ def_bool X86_64
|
|
|
|
+ depends on MEMORY_HOTPLUG
|
|
|
|
+
|
|
source "mm/Kconfig"
|
|
source "mm/Kconfig"
|
|
|
|
|
|
config HIGHPTE
|
|
config HIGHPTE
|
|
@@ -833,6 +965,30 @@ config SECCOMP
|
|
|
|
|
|
If unsure, say Y. Only embedded should say N here.
|
|
If unsure, say Y. Only embedded should say N here.
|
|
|
|
|
|
|
|
+config CC_STACKPROTECTOR
|
|
|
|
+ bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
|
|
|
|
+ depends on X86_64 && EXPERIMENTAL
|
|
|
|
+ help
|
|
|
|
+ This option turns on the -fstack-protector GCC feature. This
|
|
|
|
+ feature puts, at the beginning of critical functions, a canary
|
|
|
|
+ value on the stack just before the return address, and validates
|
|
|
|
+ the value just before actually returning. Stack based buffer
|
|
|
|
+ overflows (that need to overwrite this return address) now also
|
|
|
|
+ overwrite the canary, which gets detected and the attack is then
|
|
|
|
+ neutralized via a kernel panic.
|
|
|
|
+
|
|
|
|
+ This feature requires gcc version 4.2 or above, or a distribution
|
|
|
|
+ gcc with the feature backported. Older versions are automatically
|
|
|
|
+ detected and for those versions, this configuration option is ignored.
|
|
|
|
+
|
|
|
|
+config CC_STACKPROTECTOR_ALL
|
|
|
|
+ bool "Use stack-protector for all functions"
|
|
|
|
+ depends on CC_STACKPROTECTOR
|
|
|
|
+ help
|
|
|
|
+ Normally, GCC only inserts the canary value protection for
|
|
|
|
+ functions that use large-ish on-stack buffers. By enabling
|
|
|
|
+ this option, GCC will be asked to do this for ALL functions.
|
|
|
|
+
|
|
source kernel/Kconfig.hz
|
|
source kernel/Kconfig.hz
|
|
|
|
|
|
config KEXEC
|
|
config KEXEC
|
|
@@ -854,7 +1010,7 @@ config KEXEC
|
|
config CRASH_DUMP
|
|
config CRASH_DUMP
|
|
bool "kernel crash dumps (EXPERIMENTAL)"
|
|
bool "kernel crash dumps (EXPERIMENTAL)"
|
|
depends on EXPERIMENTAL
|
|
depends on EXPERIMENTAL
|
|
- depends on HIGHMEM
|
|
|
|
|
|
+ depends on X86_64 || (X86_32 && HIGHMEM)
|
|
help
|
|
help
|
|
Generate crash dump after being started by kexec.
|
|
Generate crash dump after being started by kexec.
|
|
This should be normally only set in special crash dump kernels
|
|
This should be normally only set in special crash dump kernels
|
|
@@ -869,6 +1025,7 @@ config CRASH_DUMP
|
|
config PHYSICAL_START
|
|
config PHYSICAL_START
|
|
hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
|
|
hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
|
|
default "0x1000000" if X86_NUMAQ
|
|
default "0x1000000" if X86_NUMAQ
|
|
|
|
+ default "0x200000" if X86_64
|
|
default "0x100000"
|
|
default "0x100000"
|
|
help
|
|
help
|
|
This gives the physical address where the kernel is loaded.
|
|
This gives the physical address where the kernel is loaded.
|
|
@@ -921,10 +1078,15 @@ config RELOCATABLE
|
|
must live at a different physical address than the primary
|
|
must live at a different physical address than the primary
|
|
kernel.
|
|
kernel.
|
|
|
|
|
|
|
|
+ Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
|
|
|
|
+ it has been loaded at and the compile time physical address
|
|
|
|
+ (CONFIG_PHYSICAL_START) is ignored.
|
|
|
|
+
|
|
config PHYSICAL_ALIGN
|
|
config PHYSICAL_ALIGN
|
|
hex
|
|
hex
|
|
prompt "Alignment value to which kernel should be aligned" if X86_32
|
|
prompt "Alignment value to which kernel should be aligned" if X86_32
|
|
- default "0x100000"
|
|
|
|
|
|
+ default "0x100000" if X86_32
|
|
|
|
+ default "0x200000" if X86_64
|
|
range 0x2000 0x400000
|
|
range 0x2000 0x400000
|
|
help
|
|
help
|
|
This value puts the alignment restrictions on physical address
|
|
This value puts the alignment restrictions on physical address
|
|
@@ -952,6 +1114,8 @@ config HOTPLUG_CPU
|
|
Say Y here to experiment with turning CPUs off and on, and to
|
|
Say Y here to experiment with turning CPUs off and on, and to
|
|
enable suspend on SMP systems. CPUs can be controlled through
|
|
enable suspend on SMP systems. CPUs can be controlled through
|
|
/sys/devices/system/cpu.
|
|
/sys/devices/system/cpu.
|
|
|
|
+ Say N if you want to disable CPU hotplug and don't need to
|
|
|
|
+ suspend.
|
|
|
|
|
|
config COMPAT_VDSO
|
|
config COMPAT_VDSO
|
|
bool "Compat VDSO support"
|
|
bool "Compat VDSO support"
|
|
@@ -970,8 +1134,19 @@ endmenu
|
|
|
|
|
|
config ARCH_ENABLE_MEMORY_HOTPLUG
|
|
config ARCH_ENABLE_MEMORY_HOTPLUG
|
|
def_bool y
|
|
def_bool y
|
|
- depends on HIGHMEM
|
|
|
|
|
|
+ depends on X86_64 || (X86_32 && HIGHMEM)
|
|
|
|
+
|
|
|
|
+config MEMORY_HOTPLUG_RESERVE
|
|
|
|
+ def_bool X86_64
|
|
|
|
+ depends on (MEMORY_HOTPLUG && DISCONTIGMEM)
|
|
|
|
+
|
|
|
|
+config HAVE_ARCH_EARLY_PFN_TO_NID
|
|
|
|
+ def_bool X86_64
|
|
|
|
+ depends on NUMA
|
|
|
|
|
|
|
|
+config OUT_OF_LINE_PFN_TO_PAGE
|
|
|
|
+ def_bool X86_64
|
|
|
|
+ depends on DISCONTIGMEM
|
|
|
|
|
|
#
|
|
#
|
|
# Use the generic interrupt handling code in kernel/irq/:
|
|
# Use the generic interrupt handling code in kernel/irq/:
|
|
@@ -996,7 +1171,7 @@ config X86_SMP
|
|
|
|
|
|
config X86_HT
|
|
config X86_HT
|
|
bool
|
|
bool
|
|
- depends on SMP && !(X86_VISWS || X86_VOYAGER)
|
|
|
|
|
|
+ depends on SMP && !(X86_VISWS || X86_VOYAGER || MK8)
|
|
default y
|
|
default y
|
|
|
|
|
|
config X86_BIOS_REBOOT
|
|
config X86_BIOS_REBOOT
|