Merge tag 'riscv-for-linus-6.3-mw1' of git://git.kernel.org/pub/scm/linux/kernel...
[sfrench/cifs-2.6.git] / arch / riscv / Kconfig
index 9c687da7756d70f0f7382c6a500572142df464bb..c5e42cc376048dbc9d960a6275b40c983acb7618 100644 (file)
@@ -14,10 +14,11 @@ config RISCV
        def_bool y
        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
@@ -44,12 +45,14 @@ config RISCV
        select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
        select ARCH_WANT_FRAME_POINTERS
        select ARCH_WANT_GENERAL_HUGETLB
+       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
@@ -84,16 +87,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
@@ -110,10 +113,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 MODULES_USE_ELF_RELA if MODULES
@@ -137,7 +139,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
@@ -234,9 +236,9 @@ 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
@@ -351,11 +353,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.
 
@@ -400,8 +402,8 @@ config RISCV_ISA_SVPBMT
        bool "SVPBMT extension support"
        depends on 64BIT && MMU
        depends on !XIP_KERNEL
-       select RISCV_ALTERNATIVE
        default y
+       select RISCV_ALTERNATIVE
        help
           Adds support to dynamically detect the presence of the SVPBMT
           ISA-extension (Supervisor-mode: page-based memory types) and
@@ -415,20 +417,36 @@ config RISCV_ISA_SVPBMT
 
           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 !XIP_KERNEL && MMU
+       select 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
        default y
+       select RISCV_ALTERNATIVE
+       select RISCV_DMA_NONCOHERENT
        help
           Adds support to dynamically detect the presence of the ZICBOM
           extension (Cache Block Management Operations) and enable its
@@ -490,9 +508,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
@@ -503,10 +521,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
@@ -595,15 +613,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
@@ -682,8 +700,8 @@ config PORTABLE
        bool
        default !NONPORTABLE
        select EFI
-       select OF
        select MMU
+       select OF
 
 menu "Power management options"