Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal
[linux-3.10.git] / arch / x86 / Kconfig
index 3220d44..9195fd8 100644 (file)
@@ -7,11 +7,14 @@ config 64BIT
          Say no to build a 32-bit kernel - formerly known as i386
 
 config X86_32
-       def_bool !64BIT
+       def_bool y
+       depends on !64BIT
        select CLKSRC_I8253
+       select HAVE_UID16
 
 config X86_64
-       def_bool 64BIT
+       def_bool y
+       depends on 64BIT
        select X86_DEV_DMA_OPS
 
 ### Arch settings
@@ -36,6 +39,7 @@ config X86
        select HAVE_KRETPROBES
        select HAVE_OPTPROBES
        select HAVE_FTRACE_MCOUNT_RECORD
+       select HAVE_FENTRY if X86_64
        select HAVE_C_RECORDMCOUNT
        select HAVE_DYNAMIC_FTRACE
        select HAVE_FUNCTION_TRACER
@@ -43,6 +47,7 @@ config X86
        select HAVE_FUNCTION_GRAPH_FP_TEST
        select HAVE_FUNCTION_TRACE_MCOUNT_TEST
        select HAVE_SYSCALL_TRACEPOINTS
+       select SYSCTL_EXCEPTION_TRACE
        select HAVE_KVM
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_TRACEHOOK
@@ -60,9 +65,12 @@ config X86
        select HAVE_MIXED_BREAKPOINTS_REGS
        select PERF_EVENTS
        select HAVE_PERF_EVENTS_NMI
+       select HAVE_PERF_REGS
+       select HAVE_PERF_USER_STACK_DUMP
+       select HAVE_DEBUG_KMEMLEAK
        select ANON_INODES
-       select HAVE_ALIGNED_STRUCT_PAGE if SLUB && !M386
-       select HAVE_CMPXCHG_LOCAL if !M386
+       select HAVE_ALIGNED_STRUCT_PAGE if SLUB
+       select HAVE_CMPXCHG_LOCAL
        select HAVE_CMPXCHG_DOUBLE
        select HAVE_ARCH_KMEMCHECK
        select HAVE_USER_RETURN_NOTIFIER
@@ -70,6 +78,7 @@ config X86
        select HAVE_ARCH_JUMP_LABEL
        select HAVE_TEXT_POKE_SMP
        select HAVE_GENERIC_HARDIRQS
+       select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
        select SPARSE_IRQ
        select GENERIC_FIND_FIRST_BIT
        select GENERIC_IRQ_PROBE
@@ -79,11 +88,13 @@ config X86
        select IRQ_FORCED_THREADING
        select USE_GENERIC_SMP_HELPERS if SMP
        select HAVE_BPF_JIT if X86_64
+       select HAVE_ARCH_TRANSPARENT_HUGEPAGE
        select CLKEVT_I8253
        select ARCH_HAVE_NMI_SAFE_CMPXCHG
        select GENERIC_IOMAP
        select DCACHE_WORD_ACCESS
        select GENERIC_SMP_IDLE_THREAD
+       select ARCH_WANT_IPC_PARSE_VERSION if X86_32
        select HAVE_ARCH_SECCOMP_FILTER
        select BUILDTIME_EXTABLE_SORT
        select GENERIC_CMOS_UPDATE
@@ -94,9 +105,18 @@ config X86
        select GENERIC_TIME_VSYSCALL if X86_64
        select KTIME_SCALAR if X86_32
        select GENERIC_STRNCPY_FROM_USER
+       select GENERIC_STRNLEN_USER
+       select HAVE_CONTEXT_TRACKING if X86_64
+       select HAVE_IRQ_TIME_ACCOUNTING
+       select GENERIC_KERNEL_THREAD
+       select GENERIC_KERNEL_EXECVE
+       select MODULES_USE_ELF_REL if X86_32
+       select MODULES_USE_ELF_RELA if X86_64
+       select CLONE_BACKWARDS if X86_32
 
 config INSTRUCTION_DECODER
-       def_bool (KPROBES || PERF_EVENTS || UPROBES)
+       def_bool y
+       depends on KPROBES || PERF_EVENTS || UPROBES
 
 config OUTPUT_FORMAT
        string
@@ -124,13 +144,15 @@ config SBUS
        bool
 
 config NEED_DMA_MAP_STATE
-       def_bool (X86_64 || INTEL_IOMMU || DMA_API_DEBUG)
+       def_bool y
+       depends on X86_64 || INTEL_IOMMU || DMA_API_DEBUG
 
 config NEED_SG_DMA_LENGTH
        def_bool y
 
 config GENERIC_ISA_DMA
-       def_bool ISA_DMA_API
+       def_bool y
+       depends on ISA_DMA_API
 
 config GENERIC_BUG
        def_bool y
@@ -147,13 +169,11 @@ config GENERIC_GPIO
        bool
 
 config ARCH_MAY_HAVE_PC_FDC
-       def_bool ISA_DMA_API
-
-config RWSEM_GENERIC_SPINLOCK
-       def_bool !X86_XADD
+       def_bool y
+       depends on ISA_DMA_API
 
 config RWSEM_XCHGADD_ALGORITHM
-       def_bool X86_XADD
+       def_bool y
 
 config GENERIC_CALIBRATE_DELAY
        def_bool y
@@ -286,7 +306,7 @@ config X86_X2APIC
          If you don't know what to do here, say N.
 
 config X86_MPPARSE
-       bool "Enable MPS table" if ACPI
+       bool "Enable MPS table" if ACPI || SFI
        default y
        depends on X86_LOCAL_APIC
        ---help---
@@ -570,23 +590,18 @@ config PARAVIRT_TIME_ACCOUNTING
 
 source "arch/x86/xen/Kconfig"
 
-config KVM_CLOCK
-       bool "KVM paravirtualized clock"
-       select PARAVIRT
-       select PARAVIRT_CLOCK
-       ---help---
-         Turning on this option will allow you to run a paravirtualized clock
-         when running over the KVM hypervisor. Instead of relying on a PIT
-         (or probably other) emulation by the underlying device model, the host
-         provides the guest with timing infrastructure such as time of day, and
-         system time
-
 config KVM_GUEST
-       bool "KVM Guest support"
+       bool "KVM Guest support (including kvmclock)"
+       select PARAVIRT
        select PARAVIRT
+       select PARAVIRT_CLOCK
+       default y if PARAVIRT_GUEST
        ---help---
          This option enables various optimizations for running under the KVM
-         hypervisor.
+         hypervisor. It includes a paravirtualized clock, so that instead
+         of relying on a PIT (or probably other) emulation by the
+         underlying device model, the host provides the guest with
+         timing infrastructure such as time of day, and system time
 
 source "arch/x86/lguest/Kconfig"
 
@@ -743,13 +758,14 @@ config SWIOTLB
        def_bool y if X86_64
        ---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.
+         which don't have a hardware IOMMU. 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 IOMMU_HELPER
-       def_bool (CALGARY_IOMMU || GART_IOMMU || SWIOTLB || AMD_IOMMU)
+       def_bool y
+       depends on CALGARY_IOMMU || GART_IOMMU || SWIOTLB || AMD_IOMMU
 
 config MAXSMP
        bool "Enable Maximum number of SMP Processors and NUMA Nodes"
@@ -793,17 +809,6 @@ config SCHED_MC
          making when dealing with multi-core CPU chips at a cost of slightly
          increased overhead in some places. If unsure say N here.
 
-config IRQ_TIME_ACCOUNTING
-       bool "Fine granularity task level IRQ time accounting"
-       default n
-       ---help---
-         Select this option to enable fine granularity task irq time
-         accounting. This is done by reading a timestamp on each
-         transitions between softirq and hardirq state, so there can be a
-         small performance impact.
-
-         If in doubt, say N here.
-
 source "kernel/Kconfig.preempt"
 
 config X86_UP_APIC
@@ -868,6 +873,7 @@ config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
 
 config X86_MCE
        bool "Machine Check / overheating reporting"
+       default y
        ---help---
          Machine Check support allows the processor to notify the
          kernel if it detects a problem (e.g. overheating, data corruption).
@@ -979,25 +985,25 @@ config X86_REBOOTFIXUPS
          Say N otherwise.
 
 config MICROCODE
-       tristate "/dev/cpu/microcode - microcode support"
+       tristate "CPU microcode loading support"
        select FW_LOADER
        ---help---
+
          If you say Y here, you will be able to update the microcode on
          certain Intel and AMD processors. The Intel support is for the
-         IA32 family, e.g. Pentium Pro, Pentium II, Pentium III,
-         Pentium 4, Xeon etc. The AMD support is for family 0x10 and
-         0x11 processors, e.g. Opteron, Phenom and Turion 64 Ultra.
-         You will obviously need the actual microcode binary data itself
-         which is not shipped with the Linux kernel.
+         IA32 family, e.g. Pentium Pro, Pentium II, Pentium III, Pentium 4,
+         Xeon etc. The AMD support is for families 0x10 and later. You will
+         obviously need the actual microcode binary data itself which is not
+         shipped with the Linux kernel.
 
          This option selects the general module only, you need to select
          at least one vendor specific module as well.
 
-         To compile this driver as a module, choose M here: the
-         module will be called microcode.
+         To compile this driver as a module, choose M here: the module
+         will be called microcode.
 
 config MICROCODE_INTEL
-       bool "Intel microcode patch loading support"
+       bool "Intel microcode loading support"
        depends on MICROCODE
        default MICROCODE
        select FW_LOADER
@@ -1010,7 +1016,7 @@ config MICROCODE_INTEL
          <http://www.urbanmyth.org/microcode/>.
 
 config MICROCODE_AMD
-       bool "AMD microcode patch loading support"
+       bool "AMD microcode loading support"
        depends on MICROCODE
        select FW_LOADER
        ---help---
@@ -1090,7 +1096,7 @@ config HIGHMEM4G
 
 config HIGHMEM64G
        bool "64GB"
-       depends on !M386 && !M486
+       depends on !M486
        select X86_PAE
        ---help---
          Select this if you have a 32-bit processor and more than 4
@@ -1156,10 +1162,12 @@ config X86_PAE
          consumes more pagetable space per process.
 
 config ARCH_PHYS_ADDR_T_64BIT
-       def_bool X86_64 || X86_PAE
+       def_bool y
+       depends on X86_64 || X86_PAE
 
 config ARCH_DMA_ADDR_T_64BIT
-       def_bool X86_64 || HIGHMEM64G
+       def_bool y
+       depends on X86_64 || HIGHMEM64G
 
 config DIRECT_GBPAGES
        bool "Enable 1GB pages for kernel pagetables" if EXPERT
@@ -1282,8 +1290,8 @@ config ARCH_SELECT_MEMORY_MODEL
        depends on ARCH_SPARSEMEM_ENABLE
 
 config ARCH_MEMORY_PROBE
-       def_bool X86_64
-       depends on MEMORY_HOTPLUG
+       def_bool y
+       depends on X86_64 && MEMORY_HOTPLUG
 
 config ARCH_PROC_KCORE_TEXT
        def_bool y
@@ -1484,6 +1492,17 @@ config ARCH_RANDOM
          If supported, this is a high bandwidth, cryptographically
          secure hardware random number generator.
 
+config X86_SMAP
+       def_bool y
+       prompt "Supervisor Mode Access Prevention" if EXPERT
+       ---help---
+         Supervisor Mode Access Prevention (SMAP) is a security
+         feature in newer Intel processors.  There is a small
+         performance cost if this enabled and turned on; there is
+         also a small increase in the kernel size if this is enabled.
+
+         If unsure, say Y.
+
 config EFI
        bool "EFI runtime service support"
        depends on ACPI
@@ -1505,6 +1524,8 @@ config EFI_STUB
           This kernel feature allows a bzImage to be loaded directly
          by EFI firmware without the use of a bootloader.
 
+         See Documentation/x86/efi-stub.txt for more information.
+
 config SECCOMP
        def_bool y
        prompt "Enable seccomp to safely compute untrusted bytecode"
@@ -1522,7 +1543,7 @@ config SECCOMP
          If unsure, say Y. Only embedded should say N here.
 
 config CC_STACKPROTECTOR
-       bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
+       bool "Enable -fstack-protector buffer overflow detection"
        ---help---
          This option turns on the -fstack-protector GCC feature. This
          feature puts, at the beginning of functions, a canary value on
@@ -1673,6 +1694,50 @@ config HOTPLUG_CPU
            automatically on SMP systems. )
          Say N if you want to disable CPU hotplug.
 
+config BOOTPARAM_HOTPLUG_CPU0
+       bool "Set default setting of cpu0_hotpluggable"
+       default n
+       depends on HOTPLUG_CPU && EXPERIMENTAL
+       ---help---
+         Set whether default state of cpu0_hotpluggable is on or off.
+
+         Say Y here to enable CPU0 hotplug by default. If this switch
+         is turned on, there is no need to give cpu0_hotplug kernel
+         parameter and the CPU0 hotplug feature is enabled by default.
+
+         Please note: there are two known CPU0 dependencies if you want
+         to enable the CPU0 hotplug feature either by this switch or by
+         cpu0_hotplug kernel parameter.
+
+         First, resume from hibernate or suspend always starts from CPU0.
+         So hibernate and suspend are prevented if CPU0 is offline.
+
+         Second dependency is PIC interrupts always go to CPU0. CPU0 can not
+         offline if any interrupt can not migrate out of CPU0. There may
+         be other CPU0 dependencies.
+
+         Please make sure the dependencies are under your control before
+         you enable this feature.
+
+         Say N if you don't want to enable CPU0 hotplug feature by default.
+         You still can enable the CPU0 hotplug feature at boot by kernel
+         parameter cpu0_hotplug.
+
+config DEBUG_HOTPLUG_CPU0
+       def_bool n
+       prompt "Debug CPU0 hotplug"
+       depends on HOTPLUG_CPU && EXPERIMENTAL
+       ---help---
+         Enabling this option offlines CPU0 (if CPU0 can be offlined) as
+         soon as possible and boots up userspace with CPU0 offlined. User
+         can online CPU0 back after boot time.
+
+         To debug CPU0 hotplug, you need to enable CPU0 offline/online
+         feature by either turning on CONFIG_BOOTPARAM_HOTPLUG_CPU0 during
+         compilation or giving cpu0_hotplug kernel parameter at boot.
+
+         If unsure, say N.
+
 config COMPAT_VDSO
        def_bool y
        prompt "Compat VDSO support"
@@ -1970,7 +2035,6 @@ config PCI_MMCONFIG
 
 config PCI_CNB20LE_QUIRK
        bool "Read CNB20LE Host Bridge Windows" if EXPERT
-       default n
        depends on PCI && EXPERIMENTAL
        help
          Read the PCI windows out of the CNB20LE host bridge. This allows
@@ -2152,6 +2216,7 @@ config IA32_EMULATION
        bool "IA32 Emulation"
        depends on X86_64
        select COMPAT_BINFMT_ELF
+       select HAVE_UID16
        ---help---
          Include code to run legacy 32-bit programs under a
          64-bit kernel. You should likely turn this on, unless you're
@@ -2181,18 +2246,18 @@ config COMPAT
        depends on IA32_EMULATION || X86_X32
        select ARCH_WANT_OLD_COMPAT_IPC
 
+if COMPAT
 config COMPAT_FOR_U64_ALIGNMENT
-       def_bool COMPAT
-       depends on X86_64
+       def_bool y
 
 config SYSVIPC_COMPAT
        def_bool y
-       depends on COMPAT && SYSVIPC
+       depends on SYSVIPC
 
 config KEYS_COMPAT
-       bool
-       depends on COMPAT && KEYS
-       default y
+       def_bool y
+       depends on KEYS
+endif
 
 endmenu