| # SPDX-License-Identifier: GPL-2.0-only | |
| # | |
| # For a description of the syntax of this configuration file, | |
| # see Documentation/kbuild/kconfig-language.rst. | |
| # | |
| config 64BIT | |
| bool | |
| config 32BIT | |
| bool | |
| config RISCV | |
| def_bool y | |
| select ARCH_CLOCKSOURCE_INIT | |
| select ARCH_SUPPORTS_ATOMIC_RMW | |
| select ARCH_SUPPORTS_DEBUG_PAGEALLOC if MMU | |
| select ARCH_STACKWALK | |
| select ARCH_HAS_BINFMT_FLAT | |
| select ARCH_HAS_DEBUG_VM_PGTABLE | |
| select ARCH_HAS_DEBUG_VIRTUAL if MMU | |
| select ARCH_HAS_DEBUG_WX | |
| select ARCH_HAS_GCOV_PROFILE_ALL | |
| select ARCH_HAS_GIGANTIC_PAGE | |
| select ARCH_HAS_KCOV | |
| select ARCH_HAS_MMIOWB | |
| 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_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX | |
| select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT | |
| select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU | |
| select ARCH_WANT_FRAME_POINTERS | |
| select ARCH_WANT_HUGE_PMD_SHARE if 64BIT | |
| select CLONE_BACKWARDS | |
| select CLINT_TIMER if !MMU | |
| select COMMON_CLK | |
| select EDAC_SUPPORT | |
| select GENERIC_ARCH_TOPOLOGY if SMP | |
| select GENERIC_ATOMIC64 if !64BIT | |
| select GENERIC_EARLY_IOREMAP | |
| select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO | |
| select GENERIC_IOREMAP | |
| select GENERIC_IRQ_MULTI_HANDLER | |
| select GENERIC_IRQ_SHOW | |
| select GENERIC_LIB_DEVMEM_IS_ALLOWED | |
| select GENERIC_PCI_IOMAP | |
| select GENERIC_PTDUMP if MMU | |
| select GENERIC_SCHED_CLOCK | |
| select GENERIC_SMP_IDLE_THREAD | |
| select GENERIC_STRNCPY_FROM_USER if MMU | |
| select GENERIC_STRNLEN_USER if MMU | |
| select GENERIC_TIME_VSYSCALL if MMU && 64BIT | |
| select HANDLE_DOMAIN_IRQ | |
| select HAVE_ARCH_AUDITSYSCALL | |
| select HAVE_ARCH_JUMP_LABEL | |
| select HAVE_ARCH_JUMP_LABEL_RELATIVE | |
| select HAVE_ARCH_KASAN if MMU && 64BIT | |
| select HAVE_ARCH_KASAN_VMALLOC if MMU && 64BIT | |
| select HAVE_ARCH_KGDB | |
| select HAVE_ARCH_KGDB_QXFER_PKT | |
| select HAVE_ARCH_MMAP_RND_BITS if MMU | |
| select HAVE_ARCH_SECCOMP_FILTER | |
| select HAVE_ARCH_TRACEHOOK | |
| select HAVE_ASM_MODVERSIONS | |
| select HAVE_CONTEXT_TRACKING | |
| select HAVE_DEBUG_KMEMLEAK | |
| select HAVE_DMA_CONTIGUOUS if MMU | |
| select HAVE_EBPF_JIT if MMU | |
| select HAVE_FUNCTION_ERROR_INJECTION | |
| select HAVE_FUTEX_CMPXCHG if FUTEX | |
| select HAVE_GCC_PLUGINS | |
| select HAVE_GENERIC_VDSO if MMU && 64BIT | |
| select HAVE_IRQ_TIME_ACCOUNTING | |
| select HAVE_KPROBES | |
| select HAVE_KPROBES_ON_FTRACE | |
| select HAVE_KRETPROBES | |
| select HAVE_PCI | |
| select HAVE_PERF_EVENTS | |
| select HAVE_PERF_REGS | |
| select HAVE_PERF_USER_STACK_DUMP | |
| select HAVE_REGS_AND_STACK_ACCESS_API | |
| select HAVE_STACKPROTECTOR | |
| select HAVE_SYSCALL_TRACEPOINTS | |
| select IRQ_DOMAIN | |
| select MODULES_USE_ELF_RELA if MODULES | |
| select MODULE_SECTIONS if MODULES | |
| select OF | |
| select OF_EARLY_FLATTREE | |
| select OF_IRQ | |
| select PCI_DOMAINS_GENERIC if PCI | |
| select PCI_MSI if PCI | |
| select RISCV_INTC | |
| select RISCV_TIMER if RISCV_SBI | |
| select SPARSEMEM_STATIC if 32BIT | |
| select SPARSE_IRQ | |
| select SYSCTL_EXCEPTION_TRACE | |
| select THREAD_INFO_IN_TASK | |
| select UACCESS_MEMCPY if !MMU | |
| config ARCH_MMAP_RND_BITS_MIN | |
| default 18 if 64BIT | |
| default 8 | |
| # max bits determined by the following formula: | |
| # VA_BITS - PAGE_SHIFT - 3 | |
| config ARCH_MMAP_RND_BITS_MAX | |
| default 24 if 64BIT # SV39 based | |
| default 17 | |
| # set if we run in machine mode, cleared if we run in supervisor mode | |
| config RISCV_M_MODE | |
| bool | |
| default !MMU | |
| # set if we are running in S-mode and can use SBI calls | |
| config RISCV_SBI | |
| bool | |
| depends on !RISCV_M_MODE | |
| default y | |
| config MMU | |
| bool "MMU-based Paged Memory Management Support" | |
| default y | |
| help | |
| Select if you want MMU-based virtualised addressing space | |
| support by paged memory management. If unsure, say 'Y'. | |
| config ZONE_DMA32 | |
| bool | |
| default y if 64BIT | |
| config VA_BITS | |
| int | |
| default 32 if 32BIT | |
| default 39 if 64BIT | |
| config PA_BITS | |
| int | |
| default 34 if 32BIT | |
| default 56 if 64BIT | |
| config PAGE_OFFSET | |
| hex | |
| default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB | |
| default 0x80000000 if 64BIT && !MMU | |
| default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB | |
| default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB | |
| config ARCH_FLATMEM_ENABLE | |
| def_bool !NUMA | |
| config ARCH_SPARSEMEM_ENABLE | |
| def_bool y | |
| depends on MMU | |
| select SPARSEMEM_VMEMMAP_ENABLE | |
| config ARCH_SELECT_MEMORY_MODEL | |
| def_bool ARCH_SPARSEMEM_ENABLE | |
| config ARCH_WANT_GENERAL_HUGETLB | |
| def_bool y | |
| config ARCH_SUPPORTS_UPROBES | |
| def_bool y | |
| config SYS_SUPPORTS_HUGETLBFS | |
| depends on MMU | |
| def_bool y | |
| config STACKTRACE_SUPPORT | |
| def_bool y | |
| config TRACE_IRQFLAGS_SUPPORT | |
| def_bool y | |
| config GENERIC_BUG | |
| def_bool y | |
| depends on BUG | |
| select GENERIC_BUG_RELATIVE_POINTERS if 64BIT | |
| config GENERIC_BUG_RELATIVE_POINTERS | |
| bool | |
| config GENERIC_CALIBRATE_DELAY | |
| def_bool y | |
| config GENERIC_CSUM | |
| def_bool y | |
| config GENERIC_HWEIGHT | |
| def_bool y | |
| config FIX_EARLYCON_MEM | |
| def_bool MMU | |
| config PGTABLE_LEVELS | |
| int | |
| default 3 if 64BIT | |
| default 2 | |
| config LOCKDEP_SUPPORT | |
| def_bool y | |
| source "arch/riscv/Kconfig.socs" | |
| menu "Platform type" | |
| choice | |
| prompt "Base ISA" | |
| default ARCH_RV64I | |
| help | |
| This selects the base ISA that this kernel will target and must match | |
| the target platform. | |
| config ARCH_RV32I | |
| bool "RV32I" | |
| select 32BIT | |
| select GENERIC_LIB_ASHLDI3 | |
| select GENERIC_LIB_ASHRDI3 | |
| select GENERIC_LIB_LSHRDI3 | |
| select GENERIC_LIB_UCMPDI2 | |
| select MMU | |
| 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_WITH_REGS if HAVE_DYNAMIC_FTRACE | |
| select HAVE_FTRACE_MCOUNT_RECORD | |
| select HAVE_FUNCTION_GRAPH_TRACER | |
| select HAVE_FUNCTION_TRACER | |
| select SWIOTLB if MMU | |
| endchoice | |
| # We must be able to map all physical memory into the kernel, but the compiler | |
| # is still a bit more efficient when generating code if it's setup in a manner | |
| # such that it can only map 2GiB of memory. | |
| choice | |
| prompt "Kernel Code Model" | |
| default CMODEL_MEDLOW if 32BIT | |
| default CMODEL_MEDANY if 64BIT | |
| config CMODEL_MEDLOW | |
| bool "medium low code model" | |
| config CMODEL_MEDANY | |
| bool "medium any code model" | |
| endchoice | |
| config MODULE_SECTIONS | |
| bool | |
| select HAVE_MOD_ARCH_SPECIFIC | |
| choice | |
| prompt "Maximum Physical Memory" | |
| default MAXPHYSMEM_1GB if 32BIT | |
| default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW | |
| default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY | |
| config MAXPHYSMEM_1GB | |
| depends on 32BIT | |
| bool "1GiB" | |
| config MAXPHYSMEM_2GB | |
| depends on 64BIT && CMODEL_MEDLOW | |
| bool "2GiB" | |
| config MAXPHYSMEM_128GB | |
| depends on 64BIT && CMODEL_MEDANY | |
| bool "128GiB" | |
| endchoice | |
| 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 NR_CPUS | |
| int "Maximum number of CPUs (2-32)" | |
| range 2 32 | |
| depends on SMP | |
| default "8" | |
| config HOTPLUG_CPU | |
| bool "Support for hot-pluggable CPUs" | |
| depends on SMP | |
| select GENERIC_IRQ_MIGRATION | |
| help | |
| Say Y here to experiment with turning CPUs off and on. CPUs | |
| can be controlled through /sys/devices/system/cpu. | |
| Say N if you want to disable CPU hotplug. | |
| choice | |
| prompt "CPU Tuning" | |
| default TUNE_GENERIC | |
| config TUNE_GENERIC | |
| bool "generic" | |
| endchoice | |
| # Common NUMA Features | |
| config NUMA | |
| bool "NUMA Memory Allocation and Scheduler Support" | |
| depends on SMP | |
| select GENERIC_ARCH_NUMA | |
| select OF_NUMA | |
| select ARCH_SUPPORTS_NUMA_BALANCING | |
| help | |
| Enable NUMA (Non-Uniform Memory Access) support. | |
| The kernel will try to allocate memory used by a CPU on the | |
| local memory of the CPU and add some more NUMA awareness to the kernel. | |
| config NODES_SHIFT | |
| int "Maximum NUMA Nodes (as a power of 2)" | |
| range 1 10 | |
| default "2" | |
| depends on NEED_MULTIPLE_NODES | |
| help | |
| Specify the maximum number of NUMA Nodes available on the target | |
| system. Increases memory reserved to accommodate various tables. | |
| config USE_PERCPU_NUMA_NODE_ID | |
| def_bool y | |
| depends on NUMA | |
| config NEED_PER_CPU_EMBED_FIRST_CHUNK | |
| def_bool y | |
| depends on NUMA | |
| config RISCV_ISA_C | |
| bool "Emit compressed instructions when building Linux" | |
| default y | |
| help | |
| Adds "C" to the ISA subsets that the toolchain is allowed to emit | |
| when building Linux, which results in compressed instructions in the | |
| Linux binary. | |
| If you don't know what to do here, say Y. | |
| menu "supported PMU type" | |
| depends on PERF_EVENTS | |
| config RISCV_BASE_PMU | |
| bool "Base Performance Monitoring Unit" | |
| def_bool y | |
| help | |
| A base PMU that serves as a reference implementation and has limited | |
| feature of perf. It can run on any RISC-V machines so serves as the | |
| fallback, but this option can also be disable to reduce kernel size. | |
| endmenu | |
| config FPU | |
| bool "FPU support" | |
| default y | |
| help | |
| Say N here if you want to disable all floating-point related procedure | |
| in the kernel. | |
| If you don't know what to do here, say Y. | |
| endmenu | |
| menu "Kernel features" | |
| source "kernel/Kconfig.hz" | |
| config RISCV_SBI_V01 | |
| bool "SBI v0.1 support" | |
| default y | |
| depends on RISCV_SBI | |
| 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. | |
| endmenu | |
| menu "Boot options" | |
| config CMDLINE | |
| string "Built-in kernel command line" | |
| help | |
| For most platforms, the arguments for the kernel's command line | |
| are provided at run-time, during boot. However, there are cases | |
| where either no arguments are being provided or the provided | |
| arguments are insufficient or even invalid. | |
| When that occurs, it is possible to define a built-in command | |
| line here and choose how the kernel should use it later on. | |
| choice | |
| prompt "Built-in command line usage" if CMDLINE != "" | |
| default CMDLINE_FALLBACK | |
| help | |
| Choose how the kernel will handle the provided built-in command | |
| line. | |
| config CMDLINE_FALLBACK | |
| bool "Use bootloader kernel arguments if available" | |
| help | |
| Use the built-in command line as fallback in case we get nothing | |
| during boot. This is the default behaviour. | |
| config CMDLINE_EXTEND | |
| bool "Extend bootloader kernel arguments" | |
| help | |
| The command-line arguments provided during boot will be | |
| appended to the built-in command line. This is useful in | |
| cases where the provided arguments are insufficient and | |
| you don't want to or cannot modify them. | |
| config CMDLINE_FORCE | |
| bool "Always use the default kernel command string" | |
| help | |
| Always use the built-in command line, even if we get one during | |
| boot. This is useful in case you need to override the provided | |
| command line on systems where you don't have or want control | |
| over it. | |
| endchoice | |
| config EFI_STUB | |
| bool | |
| config EFI | |
| bool "UEFI runtime support" | |
| depends on OF | |
| select LIBFDT | |
| select UCS2_STRING | |
| select EFI_PARAMS_FROM_FDT | |
| select EFI_STUB | |
| select EFI_GENERIC_STUB | |
| select EFI_RUNTIME_WRAPPERS | |
| select RISCV_ISA_C | |
| depends on MMU | |
| default y | |
| help | |
| This option provides support for runtime services provided | |
| by UEFI firmware (such as non-volatile variables, realtime | |
| clock, and platform reset). A UEFI stub is also provided to | |
| allow the kernel to be booted as an EFI application. This | |
| is only useful on systems that have UEFI firmware. | |
| config CC_HAVE_STACKPROTECTOR_TLS | |
| def_bool $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=tp -mstack-protector-guard-offset=0) | |
| config STACKPROTECTOR_PER_TASK | |
| def_bool y | |
| depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_TLS | |
| endmenu | |
| config BUILTIN_DTB | |
| def_bool n | |
| depends on OF | |
| menu "Power management options" | |
| source "kernel/power/Kconfig" | |
| endmenu | |
| source "drivers/firmware/Kconfig" |