Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma
[cascardo/linux.git] / arch / mips / Kconfig
index 04c5e9c..5663f41 100644 (file)
@@ -15,7 +15,7 @@ config MIPS
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_SECCOMP_FILTER
        select HAVE_ARCH_TRACEHOOK
-       select HAVE_BPF_JIT if !CPU_MICROMIPS
+       select HAVE_CBPF_JIT if !CPU_MICROMIPS
        select HAVE_FUNCTION_TRACER
        select HAVE_DYNAMIC_FTRACE
        select HAVE_FTRACE_MCOUNT_RECORD
@@ -62,6 +62,7 @@ config MIPS
        select HAVE_IRQ_TIME_ACCOUNTING
        select GENERIC_TIME_VSYSCALL
        select ARCH_CLOCKSOURCE_DATA
+       select HANDLE_DOMAIN_IRQ
 
 menu "Machine selection"
 
@@ -79,7 +80,7 @@ config MIPS_ALCHEMY
        select SYS_HAS_CPU_MIPS32_R1
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_APM_EMULATION
-       select ARCH_REQUIRE_GPIOLIB
+       select GPIOLIB
        select SYS_SUPPORTS_ZBOOT
        select COMMON_CLK
 
@@ -98,7 +99,7 @@ config AR7
        select SYS_SUPPORTS_LITTLE_ENDIAN
        select SYS_SUPPORTS_MIPS16
        select SYS_SUPPORTS_ZBOOT_UART16550
-       select ARCH_REQUIRE_GPIOLIB
+       select GPIOLIB
        select VLYNQ
        select HAVE_CLK
        help
@@ -122,11 +123,11 @@ config ATH25
 config ATH79
        bool "Atheros AR71XX/AR724X/AR913X based boards"
        select ARCH_HAS_RESET_CONTROLLER
-       select ARCH_REQUIRE_GPIOLIB
        select BOOT_RAW
        select CEVT_R4K
        select CSRC_R4K
        select DMA_NONCOHERENT
+       select GPIOLIB
        select HAVE_CLK
        select COMMON_CLK
        select CLKDEV_LOOKUP
@@ -137,7 +138,7 @@ config ATH79
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_BIG_ENDIAN
        select SYS_SUPPORTS_MIPS16
-       select SYS_SUPPORTS_ZBOOT
+       select SYS_SUPPORTS_ZBOOT_UART_PROM
        select USE_OF
        help
          Support for the Atheros AR71XX/AR724X/AR913X SoCs.
@@ -170,7 +171,6 @@ config BMIPS_GENERIC
        select USB_EHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
        select USB_OHCI_BIG_ENDIAN_DESC if CPU_BIG_ENDIAN
        select USB_OHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
-       select ARCH_WANT_OPTIONAL_GPIOLIB
        help
          Build a generic DT-based kernel image that boots on select
          BCM33xx cable modem chips, BCM63xx DSL chips, and BCM7xxx set-top
@@ -179,7 +179,6 @@ config BMIPS_GENERIC
 
 config BCM47XX
        bool "Broadcom BCM47XX based boards"
-       select ARCH_WANT_OPTIONAL_GPIOLIB
        select BOOT_RAW
        select CEVT_R4K
        select CSRC_R4K
@@ -196,6 +195,7 @@ config BCM47XX
        select GPIOLIB
        select LEDS_GPIO_REGISTER
        select BCM47XX_NVRAM
+       select BCM47XX_SPROM
        help
         Support for BCM47XX based boards
 
@@ -211,7 +211,7 @@ config BCM63XX
        select SYS_SUPPORTS_BIG_ENDIAN
        select SYS_HAS_EARLY_PRINTK
        select SWAP_IO_SPACE
-       select ARCH_REQUIRE_GPIOLIB
+       select GPIOLIB
        select HAVE_CLK
        select MIPS_L1_CACHE_SHIFT_4
        help
@@ -305,7 +305,7 @@ config MACH_INGENIC
        select SYS_SUPPORTS_ZBOOT_UART16550
        select DMA_NONCOHERENT
        select IRQ_MIPS_CPU
-       select ARCH_REQUIRE_GPIOLIB
+       select GPIOLIB
        select COMMON_CLK
        select GENERIC_IRQ_CHIP
        select BUILTIN_DTB
@@ -325,7 +325,7 @@ config LANTIQ
        select SYS_SUPPORTS_MIPS16
        select SYS_SUPPORTS_MULTITHREADING
        select SYS_HAS_EARLY_PRINTK
-       select ARCH_REQUIRE_GPIOLIB
+       select GPIOLIB
        select SWAP_IO_SPACE
        select BOOT_RAW
        select CLKDEV_LOOKUP
@@ -377,7 +377,6 @@ config MACH_LOONGSON64
 
 config MACH_PISTACHIO
        bool "IMG Pistachio SoC based boards"
-       select ARCH_REQUIRE_GPIOLIB
        select BOOT_ELF32
        select BOOT_RAW
        select CEVT_R4K
@@ -385,6 +384,7 @@ config MACH_PISTACHIO
        select COMMON_CLK
        select CSRC_R4K
        select DMA_MAYBE_COHERENT
+       select GPIOLIB
        select IRQ_MIPS_CPU
        select LIBFDT
        select MFD_SYSCON
@@ -406,13 +406,13 @@ config MACH_PISTACHIO
 
 config MACH_XILFPGA
        bool "MIPSfpga Xilinx based boards"
-       select ARCH_REQUIRE_GPIOLIB
        select BOOT_ELF32
        select BOOT_RAW
        select BUILTIN_DTB
        select CEVT_R4K
        select COMMON_CLK
        select CSRC_R4K
+       select GPIOLIB
        select IRQ_MIPS_CPU
        select LIBFDT
        select MIPS_CPU_SCACHE
@@ -473,6 +473,7 @@ config MIPS_MALTA
        select SYS_SUPPORTS_MULTITHREADING
        select SYS_SUPPORTS_SMARTMIPS
        select SYS_SUPPORTS_ZBOOT
+       select SYS_SUPPORTS_RELOCATABLE
        select USE_OF
        select ZONE_DMA32 if 64BIT
        select BUILTIN_DTB
@@ -507,6 +508,7 @@ config MIPS_SEAD3
        select MIPS_MSC
        select SYS_HAS_CPU_MIPS32_R1
        select SYS_HAS_CPU_MIPS32_R2
+       select SYS_HAS_CPU_MIPS32_R6
        select SYS_HAS_CPU_MIPS64_R1
        select SYS_HAS_EARLY_PRINTK
        select SYS_SUPPORTS_32BIT_KERNEL
@@ -516,6 +518,7 @@ config MIPS_SEAD3
        select SYS_SUPPORTS_SMARTMIPS
        select SYS_SUPPORTS_MICROMIPS
        select SYS_SUPPORTS_MIPS16
+       select SYS_SUPPORTS_RELOCATABLE
        select USB_EHCI_BIG_ENDIAN_DESC
        select USB_EHCI_BIG_ENDIAN_MMIO
        select USE_OF
@@ -536,7 +539,7 @@ config MACH_VR41XX
        select CSRC_R4K
        select SYS_HAS_CPU_VR41XX
        select SYS_SUPPORTS_MIPS16
-       select ARCH_REQUIRE_GPIOLIB
+       select GPIOLIB
 
 config NXP_STB220
        bool "NXP STB220 board"
@@ -856,7 +859,7 @@ config MIKROTIK_RB532
        select SYS_SUPPORTS_LITTLE_ENDIAN
        select SWAP_IO_SPACE
        select BOOT_RAW
-       select ARCH_REQUIRE_GPIOLIB
+       select GPIOLIB
        select MIPS_L1_CACHE_SHIFT_4
        help
          Support the Mikrotik(tm) RouterBoard 532 series,
@@ -879,7 +882,7 @@ config CAVIUM_OCTEON_SOC
        select HW_HAS_PCI
        select ZONE_DMA32
        select HOLES_IN_ZONE
-       select ARCH_REQUIRE_GPIOLIB
+       select GPIOLIB
        select LIBFDT
        select USE_OF
        select ARCH_SPARSEMEM_ENABLE
@@ -937,7 +940,7 @@ config NLM_XLP_BOARD
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_64BIT_KERNEL
        select ARCH_PHYS_ADDR_T_64BIT
-       select ARCH_REQUIRE_GPIOLIB
+       select GPIOLIB
        select SYS_SUPPORTS_BIG_ENDIAN
        select SYS_SUPPORTS_LITTLE_ENDIAN
        select SYS_SUPPORTS_HIGHMEM
@@ -1077,7 +1080,7 @@ config MIPS_CLOCK_VSYSCALL
        def_bool CSRC_R4K || CLKSRC_MIPS_GIC
 
 config GPIO_TXX9
-       select ARCH_REQUIRE_GPIOLIB
+       select GPIOLIB
        bool
 
 config FW_CFE
@@ -1155,6 +1158,13 @@ config ISA_DMA_API
 config HOLES_IN_ZONE
        bool
 
+config SYS_SUPPORTS_RELOCATABLE
+       bool
+       help
+        Selected if the platform supports relocating the kernel.
+        The platform must provide plat_get_fdt() if it selects CONFIG_USE_OF
+        to allow access to command line and entropy sources.
+
 #
 # Endianness selection.  Sufficiently obscure so many users don't know what to
 # answer,so we try hard to limit the available choices.  Also the use of a
@@ -1342,11 +1352,30 @@ config CPU_LOONGSON3
        select CPU_SUPPORTS_HUGEPAGES
        select WEAK_ORDERING
        select WEAK_REORDERING_BEYOND_LLSC
-       select ARCH_REQUIRE_GPIOLIB
+       select MIPS_PGD_C0_CONTEXT
+       select GPIOLIB
        help
                The Loongson 3 processor implements the MIPS64R2 instruction
                set with many extensions.
 
+config LOONGSON3_ENHANCEMENT
+       bool "New Loongson 3 CPU Enhancements"
+       default n
+       select CPU_MIPSR2
+       select CPU_HAS_PREFETCH
+       depends on CPU_LOONGSON3
+       help
+         New Loongson 3 CPU (since Loongson-3A R2, as opposed to Loongson-3A
+         R1, Loongson-3B R1 and Loongson-3B R2) has many enhancements, such as
+         FTLB, L1-VCache, EI/DI/Wait/Prefetch instruction, DSP/DSPv2 ASE, User
+         Local register, Read-Inhibit/Execute-Inhibit, SFB (Store Fill Buffer),
+         Fast TLB refill support, etc.
+
+         This option enable those enhancements which are not probed at run
+         time. If you want a generic kernel to run on all Loongson 3 machines,
+         please say 'N' here. If you want a high-performance kernel to run on
+         new Loongson 3 machines only, please say 'Y' here.
+
 config CPU_LOONGSON2E
        bool "Loongson 2E"
        depends on SYS_HAS_CPU_LOONGSON2E
@@ -1362,7 +1391,7 @@ config CPU_LOONGSON2F
        bool "Loongson 2F"
        depends on SYS_HAS_CPU_LOONGSON2F
        select CPU_LOONGSON2
-       select ARCH_REQUIRE_GPIOLIB
+       select GPIOLIB
        help
          The Loongson 2F processor implements the MIPS III instruction set
          with many extensions.
@@ -1375,6 +1404,8 @@ config CPU_LOONGSON1B
        bool "Loongson 1B"
        depends on SYS_HAS_CPU_LOONGSON1B
        select CPU_LOONGSON1
+       select ARCH_WANT_OPTIONAL_GPIOLIB
+       select LEDS_GPIO_REGISTER
        help
          The Loongson 1B is a 32-bit SoC, which implements the MIPS32
          release 2 instruction set.
@@ -1673,6 +1704,7 @@ config CPU_XLP
        select CPU_HAS_PREFETCH
        select CPU_MIPSR2
        select CPU_SUPPORTS_HUGEPAGES
+       select MIPS_ASID_BITS_VARIABLE
        help
          Netlogic Microsystems XLP processors.
 endchoice
@@ -1798,6 +1830,7 @@ config CPU_BMIPS4380
        select MIPS_L1_CACHE_SHIFT_6
        select SYS_SUPPORTS_SMP
        select SYS_SUPPORTS_HOTPLUG_CPU
+       select CPU_HAS_RIXI
 
 config CPU_BMIPS5000
        bool
@@ -1805,10 +1838,12 @@ config CPU_BMIPS5000
        select MIPS_L1_CACHE_SHIFT_7
        select SYS_SUPPORTS_SMP
        select SYS_SUPPORTS_HOTPLUG_CPU
+       select CPU_HAS_RIXI
 
 config SYS_HAS_CPU_LOONGSON3
        bool
        select CPU_SUPPORTS_CPUFREQ
+       select CPU_HAS_RIXI
 
 config SYS_HAS_CPU_LOONGSON2E
        bool
@@ -1961,11 +1996,15 @@ config CPU_MIPSR1
 config CPU_MIPSR2
        bool
        default y if CPU_MIPS32_R2 || CPU_MIPS64_R2 || CPU_CAVIUM_OCTEON
+       select CPU_HAS_RIXI
        select MIPS_SPRAM
 
 config CPU_MIPSR6
        bool
        default y if CPU_MIPS32_R6 || CPU_MIPS64_R6
+       select CPU_HAS_RIXI
+       select HAVE_ARCH_BITREVERSE
+       select MIPS_ASID_BITS_VARIABLE
        select MIPS_SPRAM
 
 config EVA
@@ -2042,6 +2081,16 @@ config KVM_GUEST_TIMER_FREQ
          emulation when determining guest CPU Frequency. Instead, the guest's
          timer frequency is specified directly.
 
+config MIPS_VA_BITS_48
+       bool "48 bits virtual memory"
+       depends on 64BIT
+       help
+         Support a maximum at least 48 bits of application virtual memory.
+         Default is 40 bits or less, depending on the CPU.
+         This option result in a small memory overhead for page tables.
+         This option is only supported with 16k and 64k page sizes.
+         If unsure, say N.
+
 choice
        prompt "Kernel page size"
        default PAGE_SIZE_4KB
@@ -2049,6 +2098,7 @@ choice
 config PAGE_SIZE_4KB
        bool "4kB"
        depends on !CPU_LOONGSON2 && !CPU_LOONGSON3
+       depends on !MIPS_VA_BITS_48
        help
         This option select the standard 4kB Linux page size.  On some
         R3000-family processors this is the only available page size.  Using
@@ -2058,6 +2108,7 @@ config PAGE_SIZE_4KB
 config PAGE_SIZE_8KB
        bool "8kB"
        depends on CPU_R8000 || CPU_CAVIUM_OCTEON
+       depends on !MIPS_VA_BITS_48
        help
          Using 8kB page size will result in higher performance kernel at
          the price of higher memory consumption.  This option is available
@@ -2076,6 +2127,7 @@ config PAGE_SIZE_16KB
 config PAGE_SIZE_32KB
        bool "32kB"
        depends on CPU_CAVIUM_OCTEON
+       depends on !MIPS_VA_BITS_48
        help
          Using 32kB page size will result in higher performance kernel at
          the price of higher memory consumption.  This option is available
@@ -2280,7 +2332,7 @@ config MIPS_CMP
 
 config MIPS_CPS
        bool "MIPS Coherent Processing System support"
-       depends on SYS_SUPPORTS_MIPS_CPS && !CPU_MIPSR6
+       depends on SYS_SUPPORTS_MIPS_CPS
        select MIPS_CM
        select MIPS_CPC
        select MIPS_CPS_PM if HOTPLUG_CPU
@@ -2371,6 +2423,9 @@ config CPU_HAS_WB
 config XKS01
        bool
 
+config CPU_HAS_RIXI
+       bool
+
 #
 # Vectored interrupt mode is an R2 feature
 #
@@ -2401,6 +2456,21 @@ config CPU_R4000_WORKAROUNDS
 config CPU_R4400_WORKAROUNDS
        bool
 
+config MIPS_ASID_SHIFT
+       int
+       default 6 if CPU_R3000 || CPU_TX39XX
+       default 4 if CPU_R8000
+       default 0
+
+config MIPS_ASID_BITS
+       int
+       default 0 if MIPS_ASID_BITS_VARIABLE
+       default 6 if CPU_R3000 || CPU_TX39XX
+       default 8
+
+config MIPS_ASID_BITS_VARIABLE
+       bool
+
 #
 # - Highmem only makes sense for the 32-bit kernel.
 # - The current highmem code will only work properly on physically indexed
@@ -2470,6 +2540,61 @@ config NUMA
 config SYS_SUPPORTS_NUMA
        bool
 
+config RELOCATABLE
+       bool "Relocatable kernel"
+       depends on SYS_SUPPORTS_RELOCATABLE && (CPU_MIPS32_R2 || CPU_MIPS64_R2 || CPU_MIPS32_R6 || CPU_MIPS64_R6)
+       help
+         This builds a kernel image that retains relocation information
+         so it can be loaded someplace besides the default 1MB.
+         The relocations make the kernel binary about 15% larger,
+         but are discarded at runtime
+
+config RELOCATION_TABLE_SIZE
+       hex "Relocation table size"
+       depends on RELOCATABLE
+       range 0x0 0x01000000
+       default "0x00100000"
+       ---help---
+         A table of relocation data will be appended to the kernel binary
+         and parsed at boot to fix up the relocated kernel.
+
+         This option allows the amount of space reserved for the table to be
+         adjusted, although the default of 1Mb should be ok in most cases.
+
+         The build will fail and a valid size suggested if this is too small.
+
+         If unsure, leave at the default value.
+
+config RANDOMIZE_BASE
+       bool "Randomize the address of the kernel image"
+       depends on RELOCATABLE
+       ---help---
+          Randomizes the physical and virtual address at which the
+          kernel image is loaded, as a security feature that
+          deters exploit attempts relying on knowledge of the location
+          of kernel internals.
+
+          Entropy is generated using any coprocessor 0 registers available.
+
+          The kernel will be offset by up to RANDOMIZE_BASE_MAX_OFFSET.
+
+          If unsure, say N.
+
+config RANDOMIZE_BASE_MAX_OFFSET
+       hex "Maximum kASLR offset" if EXPERT
+       depends on RANDOMIZE_BASE
+       range 0x0 0x40000000 if EVA || 64BIT
+       range 0x0 0x08000000
+       default "0x01000000"
+       ---help---
+         When kASLR is active, this provides the maximum offset that will
+         be applied to the kernel image. It should be set according to the
+         amount of physical RAM available in the target system minus
+         PHYSICAL_START and must be a power of 2.
+
+         This is limited by the size of KSEG0, 256Mb on 32-bit or 1Gb with
+         EVA or 64-bit. The default is 16Mb.
+
 config NODES_SHIFT
        int
        default "6"
@@ -2477,7 +2602,7 @@ config NODES_SHIFT
 
 config HW_PERF_EVENTS
        bool "Enable hardware performance counter support for perf events"
-       depends on PERF_EVENTS && OPROFILE=n && (CPU_MIPS32 || CPU_MIPS64 || CPU_R10000 || CPU_SB1 || CPU_CAVIUM_OCTEON || CPU_XLP || CPU_LOONGSON3)
+       depends on PERF_EVENTS && !OPROFILE && (CPU_MIPS32 || CPU_MIPS64 || CPU_R10000 || CPU_SB1 || CPU_CAVIUM_OCTEON || CPU_XLP || CPU_LOONGSON3)
        default y
        help
          Enable hardware performance counter support for perf events. If
@@ -2810,6 +2935,10 @@ choice
 
        config MIPS_CMDLINE_FROM_BOOTLOADER
                bool "Bootloader kernel arguments if available"
+
+       config MIPS_CMDLINE_BUILTIN_EXTEND
+               depends on CMDLINE_BOOL
+               bool "Extend builtin kernel arguments with bootloader arguments"
 endchoice
 
 endmenu