Merge tag 'dma-mapping-4.21' of git://git.infradead.org/users/hch/dma-mapping
[linux-2.6-microblaze.git] / arch / arm64 / Kconfig
index 2092080..ff92918 100644 (file)
@@ -5,7 +5,7 @@ config ARM64
        select ACPI_GTDT if ACPI
        select ACPI_IORT if ACPI
        select ACPI_REDUCED_HARDWARE_ONLY if ACPI
-       select ACPI_MCFG if ACPI
+       select ACPI_MCFG if (ACPI && PCI)
        select ACPI_SPCR_TABLE if ACPI
        select ACPI_PPTT if ACPI
        select ARCH_CLOCKSOURCE_DATA
@@ -162,7 +162,7 @@ config ARM64
        select OF
        select OF_EARLY_FLATTREE
        select OF_RESERVED_MEM
-       select PCI_ECAM if ACPI
+       select PCI_ECAM if (ACPI && PCI)
        select POWER_RESET
        select POWER_SUPPLY
        select REFCOUNT_FULL
@@ -260,6 +260,9 @@ config ZONE_DMA32
 config HAVE_GENERIC_GUP
        def_bool y
 
+config ARCH_ENABLE_MEMORY_HOTPLUG
+       def_bool y
+
 config SMP
        def_bool y
 
@@ -273,7 +276,7 @@ config PGTABLE_LEVELS
        int
        default 2 if ARM64_16K_PAGES && ARM64_VA_BITS_36
        default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42
-       default 3 if ARM64_64K_PAGES && ARM64_VA_BITS_48
+       default 3 if ARM64_64K_PAGES && (ARM64_VA_BITS_48 || ARM64_USER_VA_BITS_52)
        default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39
        default 3 if ARM64_16K_PAGES && ARM64_VA_BITS_47
        default 4 if !ARM64_64K_PAGES && ARM64_VA_BITS_48
@@ -312,9 +315,13 @@ menu "Kernel Features"
 
 menu "ARM errata workarounds via the alternatives framework"
 
+config ARM64_WORKAROUND_CLEAN_CACHE
+       def_bool n
+
 config ARM64_ERRATUM_826319
        bool "Cortex-A53: 826319: System might deadlock if a write cannot complete until read data is accepted"
        default y
+       select ARM64_WORKAROUND_CLEAN_CACHE
        help
          This option adds an alternative code sequence to work around ARM
          erratum 826319 on Cortex-A53 parts up to r0p2 with an AMBA 4 ACE or
@@ -336,6 +343,7 @@ config ARM64_ERRATUM_826319
 config ARM64_ERRATUM_827319
        bool "Cortex-A53: 827319: Data cache clean instructions might cause overlapping transactions to the interconnect"
        default y
+       select ARM64_WORKAROUND_CLEAN_CACHE
        help
          This option adds an alternative code sequence to work around ARM
          erratum 827319 on Cortex-A53 parts up to r0p2 with an AMBA 5 CHI
@@ -357,6 +365,7 @@ config ARM64_ERRATUM_827319
 config ARM64_ERRATUM_824069
        bool "Cortex-A53: 824069: Cache line might not be marked as clean after a CleanShared snoop"
        default y
+       select ARM64_WORKAROUND_CLEAN_CACHE
        help
          This option adds an alternative code sequence to work around ARM
          erratum 824069 on Cortex-A53 parts up to r0p2 when it is connected
@@ -379,6 +388,7 @@ config ARM64_ERRATUM_824069
 config ARM64_ERRATUM_819472
        bool "Cortex-A53: 819472: Store exclusive instructions might cause data corruption"
        default y
+       select ARM64_WORKAROUND_CLEAN_CACHE
        help
          This option adds an alternative code sequence to work around ARM
          erratum 819472 on Cortex-A53 parts up to r0p1 with an L2 cache
@@ -496,6 +506,36 @@ config ARM64_ERRATUM_1188873
 
          If unsure, say Y.
 
+config ARM64_ERRATUM_1165522
+       bool "Cortex-A76: Speculative AT instruction using out-of-context translation regime could cause subsequent request to generate an incorrect translation"
+       default y
+       help
+         This option adds work arounds for ARM Cortex-A76 erratum 1165522
+
+         Affected Cortex-A76 cores (r0p0, r1p0, r2p0) could end-up with
+         corrupted TLBs by speculating an AT instruction during a guest
+         context switch.
+
+         If unsure, say Y.
+
+config ARM64_ERRATUM_1286807
+       bool "Cortex-A76: Modification of the translation table for a virtual address might lead to read-after-read ordering violation"
+       default y
+       select ARM64_WORKAROUND_REPEAT_TLBI
+       help
+         This option adds workaround for ARM Cortex-A76 erratum 1286807
+
+         On the affected Cortex-A76 cores (r0p0 to r3p0), if a virtual
+         address for a cacheable mapping of a location is being
+         accessed by a core while another core is remapping the virtual
+         address to a new physical page using the recommended
+         break-before-make sequence, then under very rare circumstances
+         TLBI+DSB completes before a read using the translation being
+         invalidated has been observed by other observers. The
+         workaround repeats the TLBI+DSB operation.
+
+         If unsure, say Y.
+
 config CAVIUM_ERRATUM_22375
        bool "Cavium erratum 22375, 24313"
        default y
@@ -565,9 +605,16 @@ config QCOM_FALKOR_ERRATUM_1003
          is unchanged. Work around the erratum by invalidating the walk cache
          entries for the trampoline before entering the kernel proper.
 
+config ARM64_WORKAROUND_REPEAT_TLBI
+       bool
+       help
+         Enable the repeat TLBI workaround for Falkor erratum 1009 and
+         Cortex-A76 erratum 1286807.
+
 config QCOM_FALKOR_ERRATUM_1009
        bool "Falkor E1009: Prematurely complete a DSB after a TLBI"
        default y
+       select ARM64_WORKAROUND_REPEAT_TLBI
        help
          On Falkor v1, the CPU may prematurely complete a DSB following a
          TLBI xxIS invalidate maintenance operation. Repeat the TLBI operation
@@ -674,15 +721,43 @@ config ARM64_VA_BITS_47
 config ARM64_VA_BITS_48
        bool "48-bit"
 
+config ARM64_USER_VA_BITS_52
+       bool "52-bit (user)"
+       depends on ARM64_64K_PAGES && (ARM64_PAN || !ARM64_SW_TTBR0_PAN)
+       help
+         Enable 52-bit virtual addressing for userspace when explicitly
+         requested via a hint to mmap(). The kernel will continue to
+         use 48-bit virtual addresses for its own mappings.
+
+         NOTE: Enabling 52-bit virtual addressing in conjunction with
+         ARMv8.3 Pointer Authentication will result in the PAC being
+         reduced from 7 bits to 3 bits, which may have a significant
+         impact on its susceptibility to brute-force attacks.
+
+         If unsure, select 48-bit virtual addressing instead.
+
 endchoice
 
+config ARM64_FORCE_52BIT
+       bool "Force 52-bit virtual addresses for userspace"
+       depends on ARM64_USER_VA_BITS_52 && EXPERT
+       help
+         For systems with 52-bit userspace VAs enabled, the kernel will attempt
+         to maintain compatibility with older software by providing 48-bit VAs
+         unless a hint is supplied to mmap.
+
+         This configuration option disables the 48-bit compatibility logic, and
+         forces all userspace addresses to be 52-bit on HW that supports it. One
+         should only enable this configuration option for stress testing userspace
+         memory management code. If unsure say N here.
+
 config ARM64_VA_BITS
        int
        default 36 if ARM64_VA_BITS_36
        default 39 if ARM64_VA_BITS_39
        default 42 if ARM64_VA_BITS_42
        default 47 if ARM64_VA_BITS_47
-       default 48 if ARM64_VA_BITS_48
+       default 48 if ARM64_VA_BITS_48 || ARM64_USER_VA_BITS_52
 
 choice
        prompt "Physical address space size"
@@ -857,6 +932,39 @@ config KEXEC
          but it is independent of the system firmware.   And like a reboot
          you can start any kernel with it, not just Linux.
 
+config KEXEC_FILE
+       bool "kexec file based system call"
+       select KEXEC_CORE
+       help
+         This is new version of kexec system call. This system call is
+         file based and takes file descriptors as system call argument
+         for kernel and initramfs as opposed to list of segments as
+         accepted by previous system call.
+
+config KEXEC_VERIFY_SIG
+       bool "Verify kernel signature during kexec_file_load() syscall"
+       depends on KEXEC_FILE
+       help
+         Select this option to verify a signature with loaded kernel
+         image. If configured, any attempt of loading a image without
+         valid signature will fail.
+
+         In addition to that option, you need to enable signature
+         verification for the corresponding kernel image type being
+         loaded in order for this to work.
+
+config KEXEC_IMAGE_VERIFY_SIG
+       bool "Enable Image signature verification support"
+       default y
+       depends on KEXEC_VERIFY_SIG
+       depends on EFI && SIGNED_PE_FILE_VERIFICATION
+       help
+         Enable Image signature verification support.
+
+comment "Support for PE file signature verification disabled"
+       depends on KEXEC_VERIFY_SIG
+       depends on !EFI || !SIGNED_PE_FILE_VERIFICATION
+
 config CRASH_DUMP
        bool "Build kdump crash kernel"
        help
@@ -957,6 +1065,20 @@ config ARM64_SSBD
 
          If unsure, say Y.
 
+config RODATA_FULL_DEFAULT_ENABLED
+       bool "Apply r/o permissions of VM areas also to their linear aliases"
+       default y
+       help
+         Apply read-only attributes of VM areas to the linear alias of
+         the backing pages as well. This prevents code or read-only data
+         from being modified (inadvertently or intentionally) via another
+         mapping of the same memory page. This additional enhancement can
+         be turned off at runtime by passing rodata=[off|on] (and turned on
+         with rodata=full if this option is set to 'n')
+
+         This requires the linear region to be mapped down to pages,
+         which may adversely affect performance in some cases.
+
 menuconfig ARMV8_DEPRECATED
        bool "Emulate deprecated/obsolete ARMv8 instructions"
        depends on COMPAT
@@ -1162,6 +1284,29 @@ config ARM64_CNP
 
 endmenu
 
+menu "ARMv8.3 architectural features"
+
+config ARM64_PTR_AUTH
+       bool "Enable support for pointer authentication"
+       default y
+       help
+         Pointer authentication (part of the ARMv8.3 Extensions) provides
+         instructions for signing and authenticating pointers against secret
+         keys, which can be used to mitigate Return Oriented Programming (ROP)
+         and other attacks.
+
+         This option enables these instructions at EL0 (i.e. for userspace).
+
+         Choosing this option will cause the kernel to initialise secret keys
+         for each process at exec() time, with these keys being
+         context-switched along with the process.
+
+         The feature is detected at runtime. If the feature is not present in
+         hardware it will not be advertised to userspace nor will it be
+         enabled.
+
+endmenu
+
 config ARM64_SVE
        bool "ARM Scalable Vector Extension support"
        default y
@@ -1246,6 +1391,13 @@ config RANDOMIZE_MODULE_REGION_FULL
          a limited range that contains the [_stext, _etext] interval of the
          core kernel, so branch relocations are always in range.
 
+config CC_HAVE_STACKPROTECTOR_SYSREG
+       def_bool $(cc-option,-mstack-protector-guard=sysreg -mstack-protector-guard-reg=sp_el0 -mstack-protector-guard-offset=0)
+
+config STACKPROTECTOR_PER_TASK
+       def_bool y
+       depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_SYSREG
+
 endmenu
 
 menu "Boot options"