Merge patch series "RISC-V kasan rework"
[linux-2.6-block.git] / arch / riscv / Kconfig
index 0f226d3261caa65e5ec8515469f80353dc452f11..716e9480495dc8294bf03c2835257c7690be8b65 100644 (file)
@@ -12,13 +12,13 @@ config 32BIT
 
 config RISCV
        def_bool y
-       select ARCH_CLOCKSOURCE_INIT
        select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION
        select ARCH_ENABLE_SPLIT_PMD_PTLOCK if PGTABLE_LEVELS > 2
+       select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE
        select ARCH_HAS_BINFMT_FLAT
        select ARCH_HAS_CURRENT_STACK_POINTER
-       select ARCH_HAS_DEBUG_VM_PGTABLE
        select ARCH_HAS_DEBUG_VIRTUAL if MMU
+       select ARCH_HAS_DEBUG_VM_PGTABLE
        select ARCH_HAS_DEBUG_WX
        select ARCH_HAS_FORTIFY_SOURCE
        select ARCH_HAS_GCOV_PROFILE_ALL
@@ -33,6 +33,7 @@ config RISCV
        select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL
        select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
        select ARCH_HAS_UBSAN_SANITIZE_ALL
+       select ARCH_HAS_VDSO_DATA
        select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
        select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
        select ARCH_STACKWALK
@@ -44,13 +45,15 @@ config RISCV
        select ARCH_USE_QUEUED_RWLOCKS
        select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
        select ARCH_WANT_FRAME_POINTERS
-       select ARCH_WANT_GENERAL_HUGETLB
+       select ARCH_WANT_GENERAL_HUGETLB if !RISCV_ISA_SVNAPOT
+       select ARCH_WANT_HUGETLB_PAGE_OPTIMIZE_VMEMMAP
        select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
+       select ARCH_WANT_LD_ORPHAN_WARN if !XIP_KERNEL
        select ARCH_WANTS_THP_SWAP if HAVE_ARCH_TRANSPARENT_HUGEPAGE
        select BINFMT_FLAT_NO_DATA_START_OFFSET if !MMU
        select BUILDTIME_TABLE_SORT if MMU
-       select CLONE_BACKWARDS
        select CLINT_TIMER if !MMU
+       select CLONE_BACKWARDS
        select COMMON_CLK
        select CPU_PM if CPU_IDLE
        select EDAC_SUPPORT
@@ -58,6 +61,7 @@ config RISCV
        select GENERIC_ATOMIC64 if !64BIT
        select GENERIC_CLOCKEVENTS_BROADCAST if SMP
        select GENERIC_EARLY_IOREMAP
+       select GENERIC_ENTRY
        select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
        select GENERIC_IDLE_POLL_SETUP
        select GENERIC_IOREMAP if MMU
@@ -85,16 +89,16 @@ config RISCV
        select HAVE_ARCH_MMAP_RND_BITS if MMU
        select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
        select HAVE_ARCH_SECCOMP_FILTER
+       select HAVE_ARCH_THREAD_STRUCT_WHITELIST
        select HAVE_ARCH_TRACEHOOK
        select HAVE_ARCH_TRANSPARENT_HUGEPAGE if 64BIT && MMU
-       select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE
-       select HAVE_ARCH_THREAD_STRUCT_WHITELIST
        select HAVE_ARCH_VMAP_STACK if MMU && 64BIT
        select HAVE_ASM_MODVERSIONS
        select HAVE_CONTEXT_TRACKING_USER
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DMA_CONTIGUOUS if MMU
        select HAVE_EBPF_JIT if MMU
+       select HAVE_FUNCTION_ARG_ACCESS_API
        select HAVE_FUNCTION_ERROR_INJECTION
        select HAVE_GCC_PLUGINS
        select HAVE_GENERIC_VDSO if MMU && 64BIT
@@ -111,10 +115,9 @@ config RISCV
        select HAVE_PERF_USER_STACK_DUMP
        select HAVE_POSIX_CPU_TIMERS_TASK_WORK
        select HAVE_REGS_AND_STACK_ACCESS_API
-       select HAVE_FUNCTION_ARG_ACCESS_API
+       select HAVE_RSEQ
        select HAVE_STACKPROTECTOR
        select HAVE_SYSCALL_TRACEPOINTS
-       select HAVE_RSEQ
        select IRQ_DOMAIN
        select IRQ_FORCED_THREADING
        select KASAN_VMALLOC if KASAN
@@ -126,6 +129,7 @@ config RISCV
        select OF_IRQ
        select PCI_DOMAINS_GENERIC if PCI
        select PCI_MSI if PCI
+       select RISCV_ALTERNATIVE if !XIP_KERNEL
        select RISCV_INTC
        select RISCV_TIMER if RISCV_SBI
        select SIFIVE_PLIC
@@ -139,7 +143,7 @@ config RISCV
        select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
        select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL
        select HAVE_FUNCTION_GRAPH_TRACER
-       select HAVE_FUNCTION_TRACER if !XIP_KERNEL
+       select HAVE_FUNCTION_TRACER if !XIP_KERNEL && !PREEMPTION
 
 config ARCH_MMAP_RND_BITS_MIN
        default 18 if 64BIT
@@ -177,8 +181,8 @@ config MMU
 
 config PAGE_OFFSET
        hex
-       default 0xC0000000 if 32BIT
-       default 0x80000000 if 64BIT && !MMU
+       default 0xC0000000 if 32BIT && MMU
+       default 0x80000000 if !MMU
        default 0xff60000000000000 if 64BIT
 
 config KASAN_SHADOW_OFFSET
@@ -236,16 +240,16 @@ config LOCKDEP_SUPPORT
 config RISCV_DMA_NONCOHERENT
        bool
        select ARCH_HAS_DMA_PREP_COHERENT
-       select ARCH_HAS_SYNC_DMA_FOR_DEVICE
-       select ARCH_HAS_SYNC_DMA_FOR_CPU
        select ARCH_HAS_SETUP_DMA_OPS
+       select ARCH_HAS_SYNC_DMA_FOR_CPU
+       select ARCH_HAS_SYNC_DMA_FOR_DEVICE
        select DMA_DIRECT_REMAP
 
 config AS_HAS_INSN
        def_bool $(as-instr,.insn r 51$(comma) 0$(comma) 0$(comma) t0$(comma) t0$(comma) zero)
 
 source "arch/riscv/Kconfig.socs"
-source "arch/riscv/Kconfig.erratas"
+source "arch/riscv/Kconfig.errata"
 
 menu "Platform type"
 
@@ -279,7 +283,6 @@ config ARCH_RV32I
        select GENERIC_LIB_ASHRDI3
        select GENERIC_LIB_LSHRDI3
        select GENERIC_LIB_UCMPDI2
-       select MMU
 
 config ARCH_RV64I
        bool "RV64I"
@@ -320,6 +323,14 @@ config SMP
 
          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
+         increased overhead in some places. If unsure say N here.
+
 config NR_CPUS
        int "Maximum number of CPUs (2-512)"
        depends on SMP
@@ -353,11 +364,11 @@ endchoice
 config NUMA
        bool "NUMA Memory Allocation and Scheduler Support"
        depends on SMP && MMU
+       select ARCH_SUPPORTS_NUMA_BALANCING
        select GENERIC_ARCH_NUMA
+       select NEED_PER_CPU_EMBED_FIRST_CHUNK
        select OF_NUMA
-       select ARCH_SUPPORTS_NUMA_BALANCING
        select USE_PERCPU_NUMA_NODE_ID
-       select NEED_PER_CPU_EMBED_FIRST_CHUNK
        help
          Enable NUMA (Non-Uniform Memory Access) support.
 
@@ -378,9 +389,9 @@ config RISCV_ALTERNATIVE
        depends on !XIP_KERNEL
        help
          This Kconfig allows the kernel to automatically patch the
-         errata required by the execution platform at run time. The
-         code patching is performed once in the boot stages. It means
-         that the overhead from this mechanism is just taken once.
+         erratum or cpufeature required by the execution platform at run
+         time. The code patching overhead is minimal, as it's only done
+         once at boot and once on each module load.
 
 config RISCV_ALTERNATIVE_EARLY
        bool
@@ -398,14 +409,32 @@ config RISCV_ISA_C
 
          If you don't know what to do here, say Y.
 
+config RISCV_ISA_SVNAPOT
+       bool "Svnapot extension support for supervisor mode NAPOT pages"
+       depends on 64BIT && MMU
+       depends on RISCV_ALTERNATIVE
+       default y
+       help
+         Allow kernel to detect the Svnapot ISA-extension dynamically at boot
+         time and enable its usage.
+
+         The Svnapot extension is used to mark contiguous PTEs as a range
+         of contiguous virtual-to-physical translations for a naturally
+         aligned power-of-2 (NAPOT) granularity larger than the base 4KB page
+         size. When HUGETLBFS is also selected this option unconditionally
+         allocates some memory for each NAPOT page size supported by the kernel.
+         When optimizing for low memory consumption and for platforms without
+         the Svnapot extension, it may be better to say N here.
+
+         If you don't know what to do here, say Y.
+
 config RISCV_ISA_SVPBMT
-       bool "SVPBMT extension support"
+       bool "Svpbmt extension support for supervisor mode page-based memory types"
        depends on 64BIT && MMU
-       depends on !XIP_KERNEL
-       select RISCV_ALTERNATIVE
+       depends on RISCV_ALTERNATIVE
        default y
        help
-          Adds support to dynamically detect the presence of the SVPBMT
+          Adds support to dynamically detect the presence of the Svpbmt
           ISA-extension (Supervisor-mode: page-based memory types) and
           enable its usage.
 
@@ -413,24 +442,40 @@ config RISCV_ISA_SVPBMT
           that indicate the cacheability, idempotency, and ordering
           properties for access to that page.
 
-          The SVPBMT extension is only available on 64Bit cpus.
+          The Svpbmt extension is only available on 64-bit cpus.
 
           If you don't know what to do here, say Y.
 
-config TOOLCHAIN_HAS_ZICBOM
+config TOOLCHAIN_HAS_ZBB
        bool
        default y
-       depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zicbom)
-       depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zicbom)
-       depends on LLD_VERSION >= 150000 || LD_VERSION >= 23800
+       depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zbb)
+       depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbb)
+       depends on LLD_VERSION >= 150000 || LD_VERSION >= 23900
+       depends on AS_IS_GNU
+
+config RISCV_ISA_ZBB
+       bool "Zbb extension support for bit manipulation instructions"
+       depends on TOOLCHAIN_HAS_ZBB
+       depends on MMU
+       depends on RISCV_ALTERNATIVE
+       default y
+       help
+          Adds support to dynamically detect the presence of the ZBB
+          extension (basic bit manipulation) and enable its usage.
+
+          The Zbb extension provides instructions to accelerate a number
+          of bit-specific operations (count bit population, sign extending,
+          bitrotation, etc).
+
+          If you don't know what to do here, say Y.
 
 config RISCV_ISA_ZICBOM
        bool "Zicbom extension support for non-coherent DMA operation"
-       depends on TOOLCHAIN_HAS_ZICBOM
-       depends on !XIP_KERNEL && MMU
-       select RISCV_DMA_NONCOHERENT
-       select RISCV_ALTERNATIVE
+       depends on MMU
+       depends on RISCV_ALTERNATIVE
        default y
+       select RISCV_DMA_NONCOHERENT
        help
           Adds support to dynamically detect the presence of the ZICBOM
           extension (Cache Block Management Operations) and enable its
@@ -441,6 +486,19 @@ config RISCV_ISA_ZICBOM
 
           If you don't know what to do here, say Y.
 
+config RISCV_ISA_ZICBOZ
+       bool "Zicboz extension support for faster zeroing of memory"
+       depends on MMU
+       depends on RISCV_ALTERNATIVE
+       default y
+       help
+          Enable the use of the Zicboz extension (cbo.zero instruction)
+          when available.
+
+          The Zicboz extension is used for faster zeroing of memory.
+
+          If you don't know what to do here, say Y.
+
 config TOOLCHAIN_HAS_ZIHINTPAUSE
        bool
        default y
@@ -492,9 +550,9 @@ config RISCV_BOOT_SPINWAIT
 
 config KEXEC
        bool "Kexec system call"
-       select KEXEC_CORE
-       select HOTPLUG_CPU if SMP
        depends on MMU
+       select HOTPLUG_CPU if SMP
+       select KEXEC_CORE
        help
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel. It is like a reboot
@@ -505,10 +563,10 @@ config KEXEC
 
 config KEXEC_FILE
        bool "kexec file based systmem call"
+       depends on 64BIT && MMU
+       select HAVE_IMA_KEXEC if IMA
        select KEXEC_CORE
        select KEXEC_ELF
-       select HAVE_IMA_KEXEC if IMA
-       depends on 64BIT && MMU
        help
          This is new version of kexec system call. This system call is
          file based and takes file descriptors as system call argument
@@ -597,15 +655,15 @@ config EFI_STUB
 config EFI
        bool "UEFI runtime support"
        depends on OF && !XIP_KERNEL
-       select LIBFDT
-       select UCS2_STRING
-       select EFI_PARAMS_FROM_FDT
-       select EFI_STUB
+       depends on MMU
+       default y
        select EFI_GENERIC_STUB
+       select EFI_PARAMS_FROM_FDT
        select EFI_RUNTIME_WRAPPERS
+       select EFI_STUB
+       select LIBFDT
        select RISCV_ISA_C
-       depends on MMU
-       default y
+       select UCS2_STRING
        help
          This option provides support for runtime services provided
          by UEFI firmware (such as non-volatile variables, realtime
@@ -684,8 +742,8 @@ config PORTABLE
        bool
        default !NONPORTABLE
        select EFI
-       select OF
        select MMU
+       select OF
 
 menu "Power management options"