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 8ef8513..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,50 +1872,22 @@ 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
          specific cases in protected and virtual-8086 modes. Emulated
          results are dummy.
 
-config X86_INTEL_MPX
-       prompt "Intel MPX (Memory Protection Extensions)"
-       def_bool n
-       # Note: only available in 64-bit mode due to VMA flags shortage
-       depends on CPU_SUP_INTEL && X86_64
-       select ARCH_USES_HIGH_VMA_FLAGS
-       ---help---
-         MPX provides hardware features that can be used in
-         conjunction with compiler-instrumented code to check
-         memory references.  It is designed to detect buffer
-         overflow or underflow bugs.
-
-         This option enables running applications which are
-         instrumented or otherwise use MPX.  It does not use MPX
-         itself inside the kernel or to protect the kernel
-         against bad memory references.
-
-         Enabling this option will make the kernel larger:
-         ~8k of kernel text and 36 bytes of data on a 64-bit
-         defconfig.  It adds a long to the 'mm_struct' which
-         will increase the kernel memory overhead of each
-         process and adds some branches to paths used during
-         exec() and munmap().
-
-         For details, see Documentation/x86/intel_mpx.rst
-
-         If unsure, say N.
-
 config X86_INTEL_MEMORY_PROTECTION_KEYS
        prompt "Intel Memory Protection Keys"
        def_bool y
@@ -2002,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.