Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
[firefly-linux-kernel-4.4.55.git] / arch / arm64 / Kconfig
index 318175f62c24d0ec4df68a555d02f2bd2a920cfc..7d95663c0160bd2575199e3836570e46fb4a158d 100644 (file)
@@ -20,6 +20,7 @@ config ARM64
        select ARM_GIC_V2M if PCI_MSI
        select ARM_GIC_V3
        select ARM_GIC_V3_ITS if PCI_MSI
+       select ARM_PSCI_FW
        select BUILDTIME_EXTABLE_SORT
        select CLONE_BACKWARDS
        select COMMON_CLK
@@ -28,7 +29,7 @@ config ARM64
        select EDAC_SUPPORT
        select GENERIC_ALLOCATOR
        select GENERIC_CLOCKEVENTS
-       select GENERIC_CLOCKEVENTS_BROADCAST if SMP
+       select GENERIC_CLOCKEVENTS_BROADCAST
        select GENERIC_CPU_AUTOPROBE
        select GENERIC_EARLY_IOREMAP
        select GENERIC_IRQ_PROBE
@@ -53,6 +54,7 @@ config ARM64
        select HAVE_C_RECORDMCOUNT
        select HAVE_CC_STACKPROTECTOR
        select HAVE_CMPXCHG_DOUBLE
+       select HAVE_CMPXCHG_LOCAL
        select HAVE_DEBUG_BUGVERBOSE
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DMA_API_DEBUG
@@ -104,6 +106,10 @@ config NO_IOPORT_MAP
 config STACKTRACE_SUPPORT
        def_bool y
 
+config ILLEGAL_POINTER_VALUE
+       hex
+       default 0xdead000000000000
+
 config LOCKDEP_SUPPORT
        def_bool y
 
@@ -113,6 +119,14 @@ config TRACE_IRQFLAGS_SUPPORT
 config RWSEM_XCHGADD_ALGORITHM
        def_bool y
 
+config GENERIC_BUG
+       def_bool y
+       depends on BUG
+
+config GENERIC_BUG_RELATIVE_POINTERS
+       def_bool y
+       depends on GENERIC_BUG
+
 config GENERIC_HWEIGHT
        def_bool y
 
@@ -137,6 +151,9 @@ config NEED_DMA_MAP_STATE
 config NEED_SG_DMA_LENGTH
        def_bool y
 
+config SMP
+       def_bool y
+
 config SWIOTLB
        def_bool y
 
@@ -160,110 +177,7 @@ source "init/Kconfig"
 
 source "kernel/Kconfig.freezer"
 
-menu "Platform selection"
-
-config ARCH_EXYNOS
-       bool
-       help
-         This enables support for Samsung Exynos SoC family
-
-config ARCH_EXYNOS7
-       bool "ARMv8 based Samsung Exynos7"
-       select ARCH_EXYNOS
-       select COMMON_CLK_SAMSUNG
-       select HAVE_S3C2410_WATCHDOG if WATCHDOG
-       select HAVE_S3C_RTC if RTC_CLASS
-       select PINCTRL
-       select PINCTRL_EXYNOS
-
-       help
-         This enables support for Samsung Exynos7 SoC family
-
-config ARCH_FSL_LS2085A
-       bool "Freescale LS2085A SOC"
-       help
-         This enables support for Freescale LS2085A SOC.
-
-config ARCH_HISI
-       bool "Hisilicon SoC Family"
-       help
-         This enables support for Hisilicon ARMv8 SoC family
-
-config ARCH_MEDIATEK
-       bool "Mediatek MT65xx & MT81xx ARMv8 SoC"
-       select ARM_GIC
-       select PINCTRL
-       help
-         Support for Mediatek MT65xx & MT81xx ARMv8 SoCs
-
-config ARCH_QCOM
-       bool "Qualcomm Platforms"
-       select PINCTRL
-       help
-         This enables support for the ARMv8 based Qualcomm chipsets.
-
-config ARCH_SEATTLE
-       bool "AMD Seattle SoC Family"
-       help
-         This enables support for AMD Seattle SOC Family
-
-config ARCH_TEGRA
-       bool "NVIDIA Tegra SoC Family"
-       select ARCH_HAS_RESET_CONTROLLER
-       select ARCH_REQUIRE_GPIOLIB
-       select CLKDEV_LOOKUP
-       select CLKSRC_MMIO
-       select CLKSRC_OF
-       select GENERIC_CLOCKEVENTS
-       select HAVE_CLK
-       select PINCTRL
-       select RESET_CONTROLLER
-       help
-         This enables support for the NVIDIA Tegra SoC family.
-
-config ARCH_TEGRA_132_SOC
-       bool "NVIDIA Tegra132 SoC"
-       depends on ARCH_TEGRA
-       select PINCTRL_TEGRA124
-       select USB_ULPI if USB_PHY
-       select USB_ULPI_VIEWPORT if USB_PHY
-       help
-         Enable support for NVIDIA Tegra132 SoC, based on the Denver
-         ARMv8 CPU.  The Tegra132 SoC is similar to the Tegra124 SoC,
-         but contains an NVIDIA Denver CPU complex in place of
-         Tegra124's "4+1" Cortex-A15 CPU complex.
-
-config ARCH_SPRD
-       bool "Spreadtrum SoC platform"
-       help
-         Support for Spreadtrum ARM based SoCs
-
-config ARCH_THUNDER
-       bool "Cavium Inc. Thunder SoC Family"
-       help
-         This enables support for Cavium's Thunder Family of SoCs.
-
-config ARCH_VEXPRESS
-       bool "ARMv8 software model (Versatile Express)"
-       select ARCH_REQUIRE_GPIOLIB
-       select COMMON_CLK_VERSATILE
-       select POWER_RESET_VEXPRESS
-       select VEXPRESS_CONFIG
-       help
-         This enables support for the ARMv8 software model (Versatile
-         Express).
-
-config ARCH_XGENE
-       bool "AppliedMicro X-Gene SOC Family"
-       help
-         This enables support for AppliedMicro X-Gene SOC Family
-
-config ARCH_ZYNQMP
-       bool "Xilinx ZynqMP Family"
-       help
-         This enables support for Xilinx ZynqMP Family
-
-endmenu
+source "arch/arm64/Kconfig.platforms"
 
 menu "Bus support"
 
@@ -474,22 +388,8 @@ config CPU_BIG_ENDIAN
        help
          Say Y if you plan on running a kernel in big-endian mode.
 
-config SMP
-       bool "Symmetric Multi-Processing"
-       help
-         This enables support for systems with more than one CPU.  If
-         you say N here, the kernel will run on single and
-         multiprocessor machines, but will use only one CPU of a
-         multiprocessor machine. If you say Y here, the kernel will run
-         on many, but not all, single processor machines. On a single
-         processor machine, the kernel will run faster if you say N
-         here.
-
-         If you don't know what to do here, say N.
-
 config SCHED_MC
        bool "Multi-core scheduler support"
-       depends on SMP
        help
          Multi-core scheduler support improves the CPU scheduler's decision
          making when dealing with multi-core CPU chips at a cost of slightly
@@ -497,7 +397,6 @@ config SCHED_MC
 
 config SCHED_SMT
        bool "SMT scheduler support"
-       depends on SMP
        help
          Improves the CPU scheduler's decision making when dealing with
          MultiThreading at a cost of slightly increased overhead in some
@@ -506,23 +405,17 @@ config SCHED_SMT
 config NR_CPUS
        int "Maximum number of CPUs (2-4096)"
        range 2 4096
-       depends on SMP
        # These have to remain sorted largest to smallest
        default "64"
 
 config HOTPLUG_CPU
        bool "Support for hot-pluggable CPUs"
-       depends on SMP
        help
          Say Y here to experiment with turning CPUs off and on.  CPUs
          can be controlled through /sys/devices/system/cpu.
 
 source kernel/Kconfig.preempt
 
-config UP_LATE_INIT
-       def_bool y
-       depends on !SMP
-
 config HZ
        int
        default 100
@@ -664,6 +557,53 @@ config SETEND_EMULATION
          If unsure, say Y
 endif
 
+menu "ARMv8.1 architectural features"
+
+config ARM64_HW_AFDBM
+       bool "Support for hardware updates of the Access and Dirty page flags"
+       default y
+       help
+         The ARMv8.1 architecture extensions introduce support for
+         hardware updates of the access and dirty information in page
+         table entries. When enabled in TCR_EL1 (HA and HD bits) on
+         capable processors, accesses to pages with PTE_AF cleared will
+         set this bit instead of raising an access flag fault.
+         Similarly, writes to read-only pages with the DBM bit set will
+         clear the read-only bit (AP[2]) instead of raising a
+         permission fault.
+
+         Kernels built with this configuration option enabled continue
+         to work on pre-ARMv8.1 hardware and the performance impact is
+         minimal. If unsure, say Y.
+
+config ARM64_PAN
+       bool "Enable support for Privileged Access Never (PAN)"
+       default y
+       help
+        Privileged Access Never (PAN; part of the ARMv8.1 Extensions)
+        prevents the kernel or hypervisor from accessing user-space (EL0)
+        memory directly.
+
+        Choosing this option will cause any unprotected (not using
+        copy_to_user et al) memory access to fail with a permission fault.
+
+        The feature is detected at runtime, and will remain as a 'nop'
+        instruction if the cpu does not implement the feature.
+
+config ARM64_LSE_ATOMICS
+       bool "Atomic instructions"
+       help
+         As part of the Large System Extensions, ARMv8.1 introduces new
+         atomic instructions that are designed specifically to scale in
+         very large systems.
+
+         Say Y here to make use of these instructions for the in-kernel
+         atomic routines. This incurs a small overhead on CPUs that do
+         not support these instructions and requires the kernel to be
+         built with binutils >= 2.25.
+
+endmenu
+
 endmenu
 
 menu "Boot options"