Merge tag 'mpx-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/daveh...
[platform/kernel/linux-rpi.git] / arch / x86 / Kconfig
index 1c25ca1..90288ab 100644 (file)
@@ -24,7 +24,7 @@ config X86_64
        depends on 64BIT
        # Options that are inherently 64-bit kernel only:
        select ARCH_HAS_GIGANTIC_PAGE
-       select ARCH_SUPPORTS_INT128
+       select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
        select ARCH_USE_CMPXCHG_LOCKREF
        select HAVE_ARCH_SOFT_DIRTY
        select MODULES_USE_ELF_RELA
@@ -73,7 +73,6 @@ config X86
        select ARCH_HAS_PMEM_API                if X86_64
        select ARCH_HAS_PTE_DEVMAP              if X86_64
        select ARCH_HAS_PTE_SPECIAL
-       select ARCH_HAS_REFCOUNT
        select ARCH_HAS_UACCESS_FLUSHCACHE      if X86_64
        select ARCH_HAS_UACCESS_MCSAFE          if X86_64 && X86_MCE
        select ARCH_HAS_SET_MEMORY
@@ -94,10 +93,11 @@ config X86
        select ARCH_USE_QUEUED_RWLOCKS
        select ARCH_USE_QUEUED_SPINLOCKS
        select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
+       select ARCH_WANT_DEFAULT_BPF_JIT        if X86_64
        select ARCH_WANTS_DYNAMIC_TASK_STRUCT
        select ARCH_WANT_HUGE_PMD_SHARE
        select ARCH_WANTS_THP_SWAP              if X86_64
-       select BUILDTIME_EXTABLE_SORT
+       select BUILDTIME_TABLE_SORT
        select CLKEVT_I8253
        select CLOCKSOURCE_VALIDATE_LAST_CYCLE
        select CLOCKSOURCE_WATCHDOG
@@ -125,6 +125,7 @@ config X86
        select GENERIC_STRNLEN_USER
        select GENERIC_TIME_VSYSCALL
        select GENERIC_GETTIMEOFDAY
+       select GENERIC_VDSO_TIME_NS
        select GUP_GET_PTE_LOW_HIGH             if X86_PAE
        select HARDLOCKUP_CHECK_TIMESTAMP       if X86_64
        select HAVE_ACPI_APEI                   if ACPI
@@ -135,6 +136,7 @@ config X86
        select HAVE_ARCH_JUMP_LABEL
        select HAVE_ARCH_JUMP_LABEL_RELATIVE
        select HAVE_ARCH_KASAN                  if X86_64
+       select HAVE_ARCH_KASAN_VMALLOC          if X86_64
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_MMAP_RND_BITS          if MMU
        select HAVE_ARCH_MMAP_RND_COMPAT_BITS   if MMU && COMPAT
@@ -158,6 +160,7 @@ config X86
        select HAVE_DMA_CONTIGUOUS
        select HAVE_DYNAMIC_FTRACE
        select HAVE_DYNAMIC_FTRACE_WITH_REGS
+       select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
        select HAVE_EBPF_JIT
        select HAVE_EFFICIENT_UNALIGNED_ACCESS
        select HAVE_EISA
@@ -438,8 +441,8 @@ config X86_MPPARSE
          (esp with 64bit cpus) with acpi support, MADT and DSDT will override it
 
 config GOLDFISH
-       def_bool y
-       depends on X86_GOLDFISH
+       def_bool y
+       depends on X86_GOLDFISH
 
 config RETPOLINE
        bool "Avoid speculative indirect branches in kernel"
@@ -455,6 +458,7 @@ config X86_CPU_RESCTRL
        bool "x86 CPU resource control support"
        depends on X86 && (CPU_SUP_INTEL || CPU_SUP_AMD)
        select KERNFS
+       select PROC_CPU_RESCTRL         if PROC_FS
        help
          Enable x86 CPU resource control support.
 
@@ -476,7 +480,7 @@ config X86_BIGSMP
        bool "Support for big SMP systems with more than 8 CPUs"
        depends on SMP
        ---help---
-         This option is needed for the systems that have more than 8 CPUs
+         This option is needed for the systems that have more than 8 CPUs.
 
 config X86_EXTENDED_PLATFORM
        bool "Support for extended (non-PC) x86 platforms"
@@ -560,9 +564,9 @@ config X86_UV
 # Please maintain the alphabetic order if and when there are additions
 
 config X86_GOLDFISH
-       bool "Goldfish (Virtual Platform)"
-       depends on X86_EXTENDED_PLATFORM
-       ---help---
+       bool "Goldfish (Virtual Platform)"
+       depends on X86_EXTENDED_PLATFORM
+       ---help---
         Enable support for the Goldfish virtual platform used primarily
         for Android development. Unless you are building for the Android
         Goldfish emulator say N here.
@@ -708,7 +712,6 @@ config X86_SUPPORTS_MEMORY_FAILURE
 config STA2X11
        bool "STA2X11 Companion Chip Support"
        depends on X86_32_NON_STANDARD && PCI
-       select ARCH_HAS_PHYS_TO_DMA
        select SWIOTLB
        select MFD_STA2X11
        select GPIOLIB
@@ -806,9 +809,9 @@ config KVM_GUEST
          timing infrastructure such as time of day, and system time
 
 config ARCH_CPUIDLE_HALTPOLL
-        def_bool n
-        prompt "Disable host haltpoll when loading haltpoll driver"
-        help
+       def_bool n
+       prompt "Disable host haltpoll when loading haltpoll driver"
+       help
          If virtualized under KVM, disable host haltpoll.
 
 config PVH
@@ -887,16 +890,16 @@ config HPET_EMULATE_RTC
        depends on HPET_TIMER && (RTC=y || RTC=m || RTC_DRV_CMOS=m || RTC_DRV_CMOS=y)
 
 config APB_TIMER
-       def_bool y if X86_INTEL_MID
-       prompt "Intel MID APB Timer Support" if X86_INTEL_MID
-       select DW_APB_TIMER
-       depends on X86_INTEL_MID && SFI
-       help
-         APB timer is the replacement for 8254, HPET on X86 MID platforms.
-         The APBT provides a stable time base on SMP
-         systems, unlike the TSC, but it is more expensive to access,
-         as it is off-chip. APB timers are always running regardless of CPU
-         C states, they are used as per CPU clockevent device when possible.
+       def_bool y if X86_INTEL_MID
+       prompt "Intel MID APB Timer Support" if X86_INTEL_MID
+       select DW_APB_TIMER
+       depends on X86_INTEL_MID && SFI
+       help
+        APB timer is the replacement for 8254, HPET on X86 MID platforms.
+        The APBT provides a stable time base on SMP
+        systems, unlike the TSC, but it is more expensive to access,
+        as it is off-chip. APB timers are always running regardless of CPU
+        C states, they are used as per CPU clockevent device when possible.
 
 # Mark as expert because too many people got it wrong.
 # The code disables itself when not needed.
@@ -932,36 +935,6 @@ config GART_IOMMU
 
          If unsure, say Y.
 
-config CALGARY_IOMMU
-       bool "IBM Calgary IOMMU support"
-       select IOMMU_HELPER
-       select SWIOTLB
-       depends on X86_64 && PCI
-       ---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
-       def_bool y
-       prompt "Should Calgary be enabled by default?"
-       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.
-
 config MAXSMP
        bool "Enable Maximum number of SMP Processors and NUMA Nodes"
        depends on X86_64 && SMP && DEBUG_KERNEL
@@ -1000,8 +973,8 @@ config NR_CPUS_RANGE_END
 config NR_CPUS_RANGE_END
        int
        depends on X86_64
-       default 8192 if  SMP && ( MAXSMP ||  CPUMASK_OFFSTACK)
-       default  512 if  SMP && (!MAXSMP && !CPUMASK_OFFSTACK)
+       default 8192 if  SMP && CPUMASK_OFFSTACK
+       default  512 if  SMP && !CPUMASK_OFFSTACK
        default    1 if !SMP
 
 config NR_CPUS_DEFAULT
@@ -1065,8 +1038,8 @@ config SCHED_MC_PRIO
          If unsure say Y here.
 
 config UP_LATE_INIT
-       def_bool y
-       depends on !SMP && X86_LOCAL_APIC
+       def_bool y
+       depends on !SMP && X86_LOCAL_APIC
 
 config X86_UP_APIC
        bool "Local APIC support on uniprocessors" if !PCI_MSI
@@ -1215,8 +1188,8 @@ config X86_LEGACY_VM86
          If unsure, say N here.
 
 config VM86
-       bool
-       default X86_LEGACY_VM86
+       bool
+       default X86_LEGACY_VM86
 
 config X86_16BIT
        bool "Enable support for 16-bit segments" if EXPERT
@@ -1237,10 +1210,10 @@ config X86_ESPFIX64
        depends on X86_16BIT && X86_64
 
 config X86_VSYSCALL_EMULATION
-       bool "Enable vsyscall emulation" if EXPERT
-       default y
-       depends on X86_64
-       ---help---
+       bool "Enable vsyscall emulation" if EXPERT
+       default y
+       depends on X86_64
+       ---help---
         This enables emulation of the legacy vsyscall page.  Disabling
         it is roughly equivalent to booting with vsyscall=none, except
         that it will also disable the helpful warning if a program
@@ -1254,6 +1227,24 @@ config X86_VSYSCALL_EMULATION
         Disabling this option saves about 7K of kernel size and
         possibly 4K of additional runtime pagetable memory.
 
+config X86_IOPL_IOPERM
+       bool "IOPERM and IOPL Emulation"
+       default y
+       ---help---
+         This enables the ioperm() and iopl() syscalls which are necessary
+         for legacy applications.
+
+         Legacy IOPL support is an overbroad mechanism which allows user
+         space aside of accessing all 65536 I/O ports also to disable
+         interrupts. To gain this access the caller needs CAP_SYS_RAWIO
+         capabilities and permission from potentially active security
+         modules.
+
+         The emulation restricts the functionality of the syscall to
+         only allowing the full range I/O port access, but prevents the
+         ability to disable interrupts from user space which would be
+         granted if the hardware IOPL mechanism would be used.
+
 config TOSHIBA
        tristate "Toshiba Laptop support"
        depends on X86_32
@@ -1492,6 +1483,7 @@ config X86_PAE
 
 config X86_5LEVEL
        bool "Enable 5-level page tables support"
+       default y
        select DYNAMIC_MEMORY_LAYOUT
        select SPARSEMEM_VMEMMAP
        depends on X86_64
@@ -1523,7 +1515,7 @@ config X86_CPA_STATISTICS
        bool "Enable statistic for Change Page Attribute"
        depends on DEBUG_FS
        ---help---
-         Expose statistics about the Change Page Attribute mechanims, which
+         Expose statistics about the Change Page Attribute mechanism, which
          helps to determine the effectiveness of preserving large and huge
          page mappings when mapping protections are changed.
 
@@ -1554,12 +1546,12 @@ config AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
 
 # Common NUMA Features
 config NUMA
-       bool "Numa Memory Allocation and Scheduler Support"
+       bool "NUMA Memory Allocation and Scheduler Support"
        depends on SMP
        depends on X86_64 || (X86_32 && HIGHMEM64G && X86_BIGSMP)
        default y if X86_BIGSMP
        ---help---
-         Enable NUMA (Non Uniform Memory Access) support.
+         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
@@ -1659,9 +1651,9 @@ config ARCH_PROC_KCORE_TEXT
        depends on X86_64 && PROC_KCORE
 
 config ILLEGAL_POINTER_VALUE
-       hex
-       default 0 if X86_32
-       default 0xdead000000000000 if X86_64
+       hex
+       default 0 if X86_32
+       default 0xdead000000000000 if X86_64
 
 config X86_PMEM_LEGACY_DEVICE
        bool
@@ -1751,7 +1743,7 @@ config X86_RESERVE_LOW
 config MATH_EMULATION
        bool
        depends on MODIFY_LDT_SYSCALL
-       prompt "Math emulation" if X86_32
+       prompt "Math emulation" if X86_32 && (M486SX || MELAN)
        ---help---
          Linux can emulate a math coprocessor (used for floating point
          operations) if you don't have one. 486DX and Pentium processors have
@@ -1880,16 +1872,16 @@ config X86_SMAP
 
          If unsure, say Y.
 
-config X86_INTEL_UMIP
+config X86_UMIP
        def_bool y
-       depends on CPU_SUP_INTEL
-       prompt "Intel User Mode Instruction Prevention" if EXPERT
+       depends on CPU_SUP_INTEL || CPU_SUP_AMD
+       prompt "User Mode Instruction Prevention" if EXPERT
        ---help---
-         The User Mode Instruction Prevention (UMIP) is a security
-         feature in newer Intel processors. If enabled, a general
-         protection fault is issued if the SGDT, SLDT, SIDT, SMSW
-         or STR instructions are executed in user mode. These instructions
-         unnecessarily expose information about the hardware state.
+         User Mode Instruction Prevention (UMIP) is a security feature in
+         some x86 processors. If enabled, a general protection fault is
+         issued if the SGDT, SLDT, SIDT, SMSW or STR instructions are
+         executed in user mode. These instructions unnecessarily expose
+         information about the hardware state.
 
          The vast majority of applications do not use these instructions.
          For the very few that do, software emulation is provided in
@@ -1974,11 +1966,12 @@ config EFI
          platforms.
 
 config EFI_STUB
-       bool "EFI stub support"
-       depends on EFI && !X86_USE_3DNOW
-       select RELOCATABLE
-       ---help---
-          This kernel feature allows a bzImage to be loaded directly
+       bool "EFI stub support"
+       depends on EFI && !X86_USE_3DNOW
+       depends on $(cc-option,-mabi=ms) || X86_32
+       select RELOCATABLE
+       ---help---
+         This kernel feature allows a bzImage to be loaded directly
          by EFI firmware without the use of a bootloader.
 
          See Documentation/admin-guide/efi-stub.rst for more information.