fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / arch / x86_64 / Kconfig
index 327ed22..4142fe8 100644 (file)
@@ -24,6 +24,19 @@ config X86
        bool
        default y
 
        bool
        default y
 
+config ZONE_DMA32
+       bool
+       default y
+
+config LOCKDEP_SUPPORT
+       bool
+       default y
+
+config STACKTRACE_SUPPORT
+       bool
+       depends on !X86_64_XEN
+       default y
+
 config SEMAPHORE_SLEEPERS
        bool
        default y
 config SEMAPHORE_SLEEPERS
        bool
        default y
@@ -45,6 +58,10 @@ config RWSEM_GENERIC_SPINLOCK
 config RWSEM_XCHGADD_ALGORITHM
        bool
 
 config RWSEM_XCHGADD_ALGORITHM
        bool
 
+config GENERIC_HWEIGHT
+       bool
+       default y
+
 config GENERIC_CALIBRATE_DELAY
        bool
        default y
 config GENERIC_CALIBRATE_DELAY
        bool
        default y
@@ -69,10 +86,30 @@ config ARCH_MAY_HAVE_PC_FDC
        bool
        default y
 
        bool
        default y
 
+config ARCH_POPULATES_NODE_MAP
+       def_bool y
+
 config DMI
        bool
        default y
 
 config DMI
        bool
        default y
 
+config AUDIT_ARCH
+       bool
+       default y
+
+config GENERIC_BUG
+       bool
+       default y
+       depends on BUG
+
+config ARCH_HAS_ILOG2_U32
+       bool
+       default n
+
+config ARCH_HAS_ILOG2_U64
+       bool
+       default n
+
 source "init/Kconfig"
 
 
 source "init/Kconfig"
 
 
@@ -89,6 +126,7 @@ config X86_PC
 
 config X86_VSMP
        bool "Support for ScaleMP vSMP"
 
 config X86_VSMP
        bool "Support for ScaleMP vSMP"
+       depends on 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
         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
@@ -98,7 +136,7 @@ endchoice
 
 choice
        prompt "Processor family"
 
 choice
        prompt "Processor family"
-       default MK8
+       default GENERIC_CPU
 
 config MK8
        bool "AMD-Opteron/Athlon64"
 
 config MK8
        bool "AMD-Opteron/Athlon64"
@@ -106,34 +144,71 @@ config MK8
          Optimize for AMD Opteron/Athlon64/Hammer/K8 CPUs.
 
 config MPSC
          Optimize for AMD Opteron/Athlon64/Hammer/K8 CPUs.
 
 config MPSC
-       bool "Intel EM64T"
+       bool "Intel P4 / older Netburst based Xeon"
        help
        help
-         Optimize for Intel Pentium 4 and Xeon CPUs with Intel
-         Extended Memory 64 Technology(EM64T). For details see
+         Optimize for Intel Pentium 4 and older Nocona/Dempsey Xeon CPUs
+         with Intel Extended Memory 64 Technology(EM64T). For details see
          <http://www.intel.com/technology/64bitextensions/>.
          <http://www.intel.com/technology/64bitextensions/>.
+         Note the the latest Xeons (Xeon 51xx and 53xx) are not based on the
+          Netburst core and shouldn't use this option. You can distingush them
+         using the cpu family field
+         in /proc/cpuinfo. Family 15 is a older Xeon, Family 6 a newer one
+         (this rule only applies to system that support EM64T)
+
+config MCORE2
+       bool "Intel Core2 / newer Xeon"
+       help
+         Optimize for Intel Core2 and newer Xeons (51xx)
+         You can distingush the newer Xeons from the older ones using
+         the cpu family field in /proc/cpuinfo. 15 is a older Xeon
+         (use CONFIG_MPSC then), 6 is a newer one. This rule only
+         applies to CPUs that support EM64T.
 
 config GENERIC_CPU
        bool "Generic-x86-64"
        help
          Generic x86-64 CPU.
 
 config GENERIC_CPU
        bool "Generic-x86-64"
        help
          Generic x86-64 CPU.
+         Run equally well on all x86-64 CPUs.
 
 endchoice
 
 
 endchoice
 
+config X86_64_XEN
+       bool "Enable Xen compatible kernel"
+       select SWIOTLB
+       help
+         This option will compile a kernel compatible with Xen hypervisor
+
+config X86_NO_TSS
+       bool
+       depends on X86_64_XEN
+       default y
+
+config X86_NO_IDT
+       bool
+       depends on X86_64_XEN
+       default y
+
 #
 # Define implied options from the CPU selection here
 #
 config X86_L1_CACHE_BYTES
        int
        default "128" if GENERIC_CPU || MPSC
 #
 # Define implied options from the CPU selection here
 #
 config X86_L1_CACHE_BYTES
        int
        default "128" if GENERIC_CPU || MPSC
-       default "64" if MK8
+       default "64" if MK8 || MCORE2
 
 config X86_L1_CACHE_SHIFT
        int
        default "7" if GENERIC_CPU || MPSC
 
 config X86_L1_CACHE_SHIFT
        int
        default "7" if GENERIC_CPU || MPSC
-       default "6" if MK8
+       default "6" if MK8 || MCORE2
+
+config X86_INTERNODE_CACHE_BYTES
+       int
+       default "4096" if X86_VSMP
+       default X86_L1_CACHE_BYTES if !X86_VSMP
 
 config X86_TSC
        bool
 
 config X86_TSC
        bool
+       depends on !X86_64_XEN
        default y
 
 config X86_GOOD_APIC
        default y
 
 config X86_GOOD_APIC
@@ -142,6 +217,7 @@ config X86_GOOD_APIC
 
 config MICROCODE
        tristate "/dev/cpu/microcode - Intel CPU microcode support"
 
 config MICROCODE
        tristate "/dev/cpu/microcode - Intel CPU microcode support"
+       select FW_LOADER
        ---help---
          If you say Y here the 'File systems' section, you will be
          able to update the microcode on Intel processors. You will
        ---help---
          If you say Y here the 'File systems' section, you will be
          able to update the microcode on Intel processors. You will
@@ -157,6 +233,11 @@ config MICROCODE
          If you use modprobe or kmod you may also want to add the line
          'alias char-major-10-184 microcode' to your /etc/modules.conf file.
 
          If you use modprobe or kmod you may also want to add the line
          'alias char-major-10-184 microcode' to your /etc/modules.conf file.
 
+config MICROCODE_OLD_INTERFACE
+       bool
+       depends on MICROCODE
+       default y
+
 config X86_MSR
        tristate "/dev/cpu/*/msr - Model-specific register support"
        help
 config X86_MSR
        tristate "/dev/cpu/*/msr - Model-specific register support"
        help
@@ -176,7 +257,7 @@ config X86_CPUID
 
 config X86_HT
        bool
 
 config X86_HT
        bool
-       depends on SMP && !MK8
+       depends on SMP && !MK8 && !X86_64_XEN
        default y
 
 config MATH_EMULATION
        default y
 
 config MATH_EMULATION
@@ -190,14 +271,22 @@ config EISA
 
 config X86_IO_APIC
        bool
 
 config X86_IO_APIC
        bool
+       depends !XEN_UNPRIVILEGED_GUEST
        default y
 
        default y
 
+config X86_XEN_GENAPIC
+       bool
+       depends X86_64_XEN
+       default XEN_PRIVILEGED_GUEST || SMP
+
 config X86_LOCAL_APIC
        bool
 config X86_LOCAL_APIC
        bool
+       depends !XEN_UNPRIVILEGED_GUEST
        default y
 
 config MTRR
        bool "MTRR (Memory Type Range Register) support"
        default y
 
 config MTRR
        bool "MTRR (Memory Type Range Register) support"
+       depends on !XEN_UNPRIVILEGED_GUEST
        ---help---
          On Intel P6 family processors (Pentium Pro, Pentium II and later)
          the Memory Type Range Registers (MTRRs) may be used to control
        ---help---
          On Intel P6 family processors (Pentium Pro, Pentium II and later)
          the Memory Type Range Registers (MTRRs) may be used to control
@@ -238,7 +327,7 @@ config SMP
 
 config SCHED_SMT
        bool "SMT (Hyperthreading) scheduler support"
 
 config SCHED_SMT
        bool "SMT (Hyperthreading) scheduler support"
-       depends on SMP
+       depends on SMP && !X86_64_XEN
        default n
        help
          SMT scheduler support improves the CPU scheduler's decision making
        default n
        help
          SMT scheduler support improves the CPU scheduler's decision making
@@ -246,11 +335,20 @@ config SCHED_SMT
          cost of slightly increased overhead in some places. If unsure say
          N here.
 
          cost of slightly increased overhead in some places. If unsure say
          N here.
 
+config SCHED_MC
+       bool "Multi-core scheduler support"
+       depends on SMP && !X86_64_XEN
+       default y
+       help
+         Multi-core scheduler support improves the CPU scheduler's decision
+         making when dealing with multi-core CPU chips at a cost of slightly
+         increased overhead in some places. If unsure say N here.
+
 source "kernel/Kconfig.preempt"
 
 config NUMA
        bool "Non Uniform Memory Access (NUMA) Support"
 source "kernel/Kconfig.preempt"
 
 config NUMA
        bool "Non Uniform Memory Access (NUMA) Support"
-       depends on SMP
+       depends on SMP && !X86_64_XEN
        help
         Enable NUMA (Non Uniform Memory Access) support. The kernel 
         will try to allocate memory used by a CPU on the local memory 
        help
         Enable NUMA (Non Uniform Memory Access) support. The kernel 
         will try to allocate memory used by a CPU on the local memory 
@@ -261,21 +359,27 @@ config NUMA
 
 config K8_NUMA
        bool "Old style AMD Opteron NUMA detection"
 
 config K8_NUMA
        bool "Old style AMD Opteron NUMA detection"
-       depends on NUMA
+       depends on 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
        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 configurtion directly from the builtin
+        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.   
 
         Northbridge of Opteron. It is recommended to use X86_64_ACPI_NUMA
         instead, which also takes priority if both are compiled in.   
 
+config NODES_SHIFT
+       int
+       default "6"
+       depends on NEED_MULTIPLE_NODES
+
 # Dummy CONFIG option to select ACPI_NUMA from drivers/acpi/Kconfig.
 
 config X86_64_ACPI_NUMA
        bool "ACPI NUMA detection"
        depends on NUMA
        select ACPI 
 # Dummy CONFIG option to select ACPI_NUMA from drivers/acpi/Kconfig.
 
 config X86_64_ACPI_NUMA
        bool "ACPI NUMA detection"
        depends on NUMA
        select ACPI 
+       select PCI
        select ACPI_NUMA
        default y
        help
        select ACPI_NUMA
        default y
        help
@@ -294,18 +398,13 @@ config ARCH_DISCONTIGMEM_ENABLE
        depends on NUMA
        default y
 
        depends on NUMA
        default y
 
-
-config ARCH_DISCONTIGMEM_ENABLE
-       def_bool y
-       depends on NUMA
-
 config ARCH_DISCONTIGMEM_DEFAULT
        def_bool y
        depends on NUMA
 
 config ARCH_SPARSEMEM_ENABLE
        def_bool y
 config ARCH_DISCONTIGMEM_DEFAULT
        def_bool y
        depends on NUMA
 
 config ARCH_SPARSEMEM_ENABLE
        def_bool y
-       depends on (NUMA || EXPERIMENTAL)
+       depends on (NUMA || EXPERIMENTAL) && !X86_64_XEN
 
 config ARCH_MEMORY_PROBE
        def_bool y
 
 config ARCH_MEMORY_PROBE
        def_bool y
@@ -317,14 +416,23 @@ config ARCH_FLATMEM_ENABLE
 
 source "mm/Kconfig"
 
 
 source "mm/Kconfig"
 
+config MEMORY_HOTPLUG_RESERVE
+       def_bool y
+       depends on (MEMORY_HOTPLUG && DISCONTIGMEM)
+
 config HAVE_ARCH_EARLY_PFN_TO_NID
        def_bool y
        depends on NUMA
 
 config HAVE_ARCH_EARLY_PFN_TO_NID
        def_bool y
        depends on NUMA
 
+config OUT_OF_LINE_PFN_TO_PAGE
+       def_bool y
+       depends on DISCONTIGMEM
+
 config NR_CPUS
        int "Maximum number of CPUs (2-256)"
 config NR_CPUS
        int "Maximum number of CPUs (2-256)"
-       range 2 256
+       range 2 255
        depends on SMP
        depends on SMP
+       default "16" if X86_64_XEN
        default "8"
        help
          This allows you to specify the maximum number of CPUs which this
        default "8"
        help
          This allows you to specify the maximum number of CPUs which this
@@ -347,6 +455,7 @@ config ARCH_ENABLE_MEMORY_HOTPLUG
 
 config HPET_TIMER
        bool
 
 config HPET_TIMER
        bool
+       depends on !X86_64_XEN
        default y
        help
          Use the IA-PC HPET (High Precision Event Timer) to manage
        default y
        help
          Use the IA-PC HPET (High Precision Event Timer) to manage
@@ -360,28 +469,61 @@ config HPET_EMULATE_RTC
        bool "Provide RTC interrupt"
        depends on HPET_TIMER && RTC=y
 
        bool "Provide RTC interrupt"
        depends on HPET_TIMER && RTC=y
 
-config GART_IOMMU
-       bool "K8 GART IOMMU support"
+# Mark as embedded because too many people got it wrong.
+# The code disables itself when not needed.
+config IOMMU
+       bool "IOMMU support" if EMBEDDED
        default y
        select SWIOTLB
        default y
        select SWIOTLB
-       depends on PCI
+       select AGP
+       depends on PCI && !X86_64_XEN
+       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 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 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
        help
-         Support the IOMMU. Needed to run systems with more than 3GB of memory
-         properly with 32-bit PCI devices that do not support DAC (Double Address
-         Cycle). The IOMMU can be turned off at runtime with the iommu=off parameter.
-         Normally the kernel will take the right choice by itself.
-         This option includes a driver for the AMD Opteron/Athlon64 northbridge IOMMU
-         and a software emulation used on other systems.
+         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.
 
          If unsure, say Y.
 
-# need this always enabled with GART_IOMMU for the VIA workaround
+# need this always selected by IOMMU for the VIA workaround
 config SWIOTLB
        bool
 config SWIOTLB
        bool
-       default y
-       depends on GART_IOMMU
 
 config X86_MCE
        bool "Machine check support" if EMBEDDED
 
 config X86_MCE
        bool "Machine check support" if EMBEDDED
+       depends on !X86_64_XEN
        default y
        help
           Include a machine check error handler to report hardware errors.
        default y
        help
           Include a machine check error handler to report hardware errors.
@@ -406,15 +548,15 @@ config X86_MCE_AMD
           the DRAM Error Threshold.
 
 config KEXEC
           the DRAM Error Threshold.
 
 config KEXEC
-       bool "kexec system call (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "kexec system call"
+       depends on !X86_64_XEN
        help
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
        help
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
-         but it is indepedent of the system firmware.   And like a reboot
+         but it is independent of the system firmware.   And like a reboot
          you can start any kernel with it, not just Linux.
 
          you can start any kernel with it, not just Linux.
 
-         The name comes from the similiarity to the exec system call.
+         The name comes from the similarity to the exec system call.
 
          It is an ongoing process to be certain the hardware in a machine
          is properly shutdown, so do not be surprised if this code does not
 
          It is an ongoing process to be certain the hardware in a machine
          is properly shutdown, so do not be surprised if this code does not
@@ -426,15 +568,22 @@ config CRASH_DUMP
        bool "kernel crash dumps (EXPERIMENTAL)"
        depends on EXPERIMENTAL
        help
        bool "kernel crash dumps (EXPERIMENTAL)"
        depends on EXPERIMENTAL
        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
+          which are loaded in the main kernel with kexec-tools into
+          a specially reserved region and then later executed after
+          a crash by kdump/kexec. The crash dump kernel must be compiled
+         to a memory address not used by the main kernel or BIOS using
+         PHYSICAL_START.
+          For more details see Documentation/kdump/kdump.txt
 
 config PHYSICAL_START
        hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
        default "0x1000000" if CRASH_DUMP
 
 config PHYSICAL_START
        hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
        default "0x1000000" if CRASH_DUMP
-       default "0x100000"
+       default "0x200000"
        help
          This gives the physical address where the kernel is loaded. Normally
        help
          This gives the physical address where the kernel is loaded. Normally
-         for regular kernels this value is 0x100000 (1MB). But in the case
+         for regular kernels this value is 0x200000 (2MB). But in the case
          of kexec on panic the fail safe kernel needs to run at a different
          address than the panic-ed kernel. This option is used to set the load
          address for kernels used to capture crash dump on being kexec'ed
          of kexec on panic the fail safe kernel needs to run at a different
          address than the panic-ed kernel. This option is used to set the load
          address for kernels used to capture crash dump on being kexec'ed
@@ -464,8 +613,44 @@ 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 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 REORDER
+       bool "Function reordering"
+       default n
+       help
+         This option enables the toolchain to reorder functions for a more 
+         optimal TLB usage. If you have pretty much any version of binutils, 
+        this can increase your kernel build time by roughly one minute.
+
+config K8_NB
+       def_bool y
+       depends on AGP_AMD64 || IOMMU || (PCI && NUMA)
+
 endmenu
 
 #
 endmenu
 
 #
@@ -490,8 +675,11 @@ config GENERIC_PENDING_IRQ
        default y
 
 menu "Power management options"
        default y
 
 menu "Power management options"
+       depends on !XEN_UNPRIVILEGED_GUEST
 
 
+if !X86_64_XEN
 source kernel/power/Kconfig
 source kernel/power/Kconfig
+endif
 
 source "drivers/acpi/Kconfig"
 
 
 source "drivers/acpi/Kconfig"
 
@@ -514,15 +702,20 @@ config PCI_MMCONFIG
        bool "Support mmconfig PCI config space access"
        depends on PCI && ACPI
 
        bool "Support mmconfig PCI config space access"
        depends on PCI && ACPI
 
-config UNORDERED_IO
-       bool "Unordered IO mapping access"
-       depends on EXPERIMENTAL
-       help
-         Use unordered stores to access IO memory mappings in device drivers.
-        Still very experimental. When a driver works on IA64/ppc64/pa-risc it should
-        work with this option, but it makes the drivers behave differently
-        from i386. Requires that the driver writer used memory barriers
-        properly.
+config XEN_PCIDEV_FRONTEND
+       bool "Xen PCI Frontend"
+       depends on PCI && X86_64_XEN
+       default y
+       help
+         The PCI device frontend driver allows the kernel to import arbitrary
+         PCI devices from a PCI backend to support PCI driver domains.
+
+config XEN_PCIDEV_FE_DEBUG
+       bool "Xen PCI Frontend Debugging"
+       depends on XEN_PCIDEV_FRONTEND
+       default n
+       help
+         Enables some debug statements within the PCI Frontend.
 
 source "drivers/pci/pcie/Kconfig"
 
 
 source "drivers/pci/pcie/Kconfig"
 
@@ -579,7 +772,7 @@ source "arch/x86_64/oprofile/Kconfig"
 
 config KPROBES
        bool "Kprobes (EXPERIMENTAL)"
 
 config KPROBES
        bool "Kprobes (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && MODULES
+       depends on KALLSYMS && EXPERIMENTAL && MODULES
        help
          Kprobes allows you to trap at almost any kernel address and
          execute a callback function.  register_kprobe() establishes
        help
          Kprobes allows you to trap at almost any kernel address and
          execute a callback function.  register_kprobe() establishes
@@ -596,4 +789,6 @@ source "security/Kconfig"
 
 source "crypto/Kconfig"
 
 
 source "crypto/Kconfig"
 
+source "drivers/xen/Kconfig"
+
 source "lib/Kconfig"
 source "lib/Kconfig"