Merge branch 'master' into next
[linux-2.6-microblaze.git] / arch / riscv / Kconfig
index add528e..a8ad8eb 100644 (file)
@@ -20,6 +20,7 @@ config RISCV
        select ARCH_HAS_DEBUG_VM_PGTABLE
        select ARCH_HAS_DEBUG_VIRTUAL if MMU
        select ARCH_HAS_DEBUG_WX
+       select ARCH_HAS_FORTIFY_SOURCE
        select ARCH_HAS_GCOV_PROFILE_ALL
        select ARCH_HAS_GIGANTIC_PAGE
        select ARCH_HAS_KCOV
@@ -27,9 +28,12 @@ config RISCV
        select ARCH_HAS_PTE_SPECIAL
        select ARCH_HAS_SET_DIRECT_MAP
        select ARCH_HAS_SET_MEMORY
-       select ARCH_HAS_STRICT_KERNEL_RWX if MMU
+       select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL
+       select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL
+       select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
        select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
        select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
+       select ARCH_SUPPORTS_HUGETLBFS if MMU
        select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
        select ARCH_WANT_FRAME_POINTERS
        select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
@@ -40,6 +44,7 @@ config RISCV
        select EDAC_SUPPORT
        select GENERIC_ARCH_TOPOLOGY if SMP
        select GENERIC_ATOMIC64 if !64BIT
+       select GENERIC_CLOCKEVENTS_BROADCAST if SMP
        select GENERIC_EARLY_IOREMAP
        select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
        select GENERIC_IOREMAP
@@ -166,10 +171,6 @@ config ARCH_WANT_GENERAL_HUGETLB
 config ARCH_SUPPORTS_UPROBES
        def_bool y
 
-config SYS_SUPPORTS_HUGETLBFS
-       depends on MMU
-       def_bool y
-
 config STACKTRACE_SUPPORT
        def_bool y
 
@@ -205,6 +206,7 @@ config LOCKDEP_SUPPORT
        def_bool y
 
 source "arch/riscv/Kconfig.socs"
+source "arch/riscv/Kconfig.erratas"
 
 menu "Platform type"
 
@@ -228,7 +230,7 @@ config ARCH_RV64I
        bool "RV64I"
        select 64BIT
        select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000
-       select HAVE_DYNAMIC_FTRACE if MMU
+       select HAVE_DYNAMIC_FTRACE if MMU && $(cc-option,-fpatchable-function-entry=8)
        select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
        select HAVE_FTRACE_MCOUNT_RECORD
        select HAVE_FUNCTION_GRAPH_TRACER
@@ -387,6 +389,31 @@ config RISCV_SBI_V01
        help
          This config allows kernel to use SBI v0.1 APIs. This will be
          deprecated in future once legacy M-mode software are no longer in use.
+
+config KEXEC
+       bool "Kexec system call"
+       select KEXEC_CORE
+       select HOTPLUG_CPU if SMP
+       depends on MMU
+       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
+         but it is independent of the system firmware. And like a reboot
+         you can start any kernel with it, not just Linux.
+
+         The name comes from the similarity to the exec system call.
+
+config CRASH_DUMP
+       bool "Build kdump crash kernel"
+       help
+         Generate crash dump after being started by kexec. This should
+         be normally only set in special crash dump kernels which are
+         loaded in the main kernel with kexec-tools into a specially
+         reserved region and then later executed after a crash by
+         kdump/kexec.
+
+         For more details see Documentation/admin-guide/kdump/kdump.rst
+
 endmenu
 
 menu "Boot options"
@@ -439,7 +466,7 @@ config EFI_STUB
 
 config EFI
        bool "UEFI runtime support"
-       depends on OF
+       depends on OF && !XIP_KERNEL
        select LIBFDT
        select UCS2_STRING
        select EFI_PARAMS_FROM_FDT
@@ -463,11 +490,63 @@ config STACKPROTECTOR_PER_TASK
        def_bool y
        depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_TLS
 
+config PHYS_RAM_BASE_FIXED
+       bool "Explicitly specified physical RAM address"
+       default n
+
+config PHYS_RAM_BASE
+       hex "Platform Physical RAM address"
+       depends on PHYS_RAM_BASE_FIXED
+       default "0x80000000"
+       help
+         This is the physical address of RAM in the system. It has to be
+         explicitly specified to run early relocations of read-write data
+         from flash to RAM.
+
+config XIP_KERNEL
+       bool "Kernel Execute-In-Place from ROM"
+       depends on MMU && SPARSEMEM
+       # This prevents XIP from being enabled by all{yes,mod}config, which
+       # fail to build since XIP doesn't support large kernels.
+       depends on !COMPILE_TEST
+       select PHYS_RAM_BASE_FIXED
+       help
+         Execute-In-Place allows the kernel to run from non-volatile storage
+         directly addressable by the CPU, such as NOR flash. This saves RAM
+         space since the text section of the kernel is not loaded from flash
+         to RAM.  Read-write sections, such as the data section and stack,
+         are still copied to RAM.  The XIP kernel is not compressed since
+         it has to run directly from flash, so it will take more space to
+         store it.  The flash address used to link the kernel object files,
+         and for storing it, is configuration dependent. Therefore, if you
+         say Y here, you must know the proper physical address where to
+         store the kernel image depending on your own flash memory usage.
+
+         Also note that the make target becomes "make xipImage" rather than
+         "make zImage" or "make Image".  The final kernel binary to put in
+         ROM memory will be arch/riscv/boot/xipImage.
+
+         SPARSEMEM is required because the kernel text and rodata that are
+         flash resident are not backed by memmap, then any attempt to get
+         a struct page on those regions will trigger a fault.
+
+         If unsure, say N.
+
+config XIP_PHYS_ADDR
+       hex "XIP Kernel Physical Location"
+       depends on XIP_KERNEL
+       default "0x21000000"
+       help
+         This is the physical address in your flash memory the kernel will
+         be linked for and stored to.  This address is dependent on your
+         own flash usage.
+
 endmenu
 
 config BUILTIN_DTB
-       def_bool n
+       bool
        depends on OF
+       default y if XIP_KERNEL
 
 menu "Power management options"