瀏覽代碼

x86: copy x86_64 specific Kconfig symbols to Kconfig.i386

No functional changes.
A prepatory step towards full unification.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Sam Ravnborg 17 年之前
父節點
當前提交
bc0120fdb4
共有 2 個文件被更改,包括 198 次插入23 次删除
  1. 3 3
      arch/x86/Kconfig
  2. 195 20
      arch/x86/Kconfig.i386

+ 3 - 3
arch/x86/Kconfig

@@ -353,11 +353,11 @@ config GEODE_MFGPT_TIMER
 	  MFGPTs have a better resolution and max interval than the
 	  MFGPTs have a better resolution and max interval than the
 	  generic PIT, and are suitable for use as high-res timers.
 	  generic PIT, and are suitable for use as high-res timers.
 
 
+endif # X86_32
+
 config K8_NB
 config K8_NB
 	def_bool y
 	def_bool y
-	depends on AGP_AMD64
-
-endif # X86_32
+	depends on AGP_AMD64 || (X86_64 && (GART_IOMMU || (PCI && NUMA)))
 
 
 source "drivers/pcmcia/Kconfig"
 source "drivers/pcmcia/Kconfig"
 
 

+ 195 - 20
arch/x86/Kconfig.i386

@@ -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