1# SPDX-License-Identifier: GPL-2.0-only 2# 3# For a description of the syntax of this configuration file, 4# see Documentation/kbuild/kconfig-language.rst. 5# 6 7config 64BIT 8 bool 9 10config 32BIT 11 bool 12 13config RISCV 14 def_bool y 15 select ARCH_CLOCKSOURCE_INIT 16 select ARCH_HAS_BINFMT_FLAT 17 select ARCH_HAS_DEBUG_VIRTUAL if MMU 18 select ARCH_HAS_DEBUG_WX 19 select ARCH_HAS_GCOV_PROFILE_ALL 20 select ARCH_HAS_GIGANTIC_PAGE 21 select ARCH_HAS_MMIOWB 22 select ARCH_HAS_PTE_SPECIAL 23 select ARCH_HAS_SET_DIRECT_MAP 24 select ARCH_HAS_SET_MEMORY 25 select ARCH_HAS_STRICT_KERNEL_RWX if MMU 26 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU 27 select ARCH_WANT_FRAME_POINTERS 28 select ARCH_WANT_HUGE_PMD_SHARE if 64BIT 29 select CLONE_BACKWARDS 30 select COMMON_CLK 31 select EDAC_SUPPORT 32 select GENERIC_ARCH_TOPOLOGY if SMP 33 select GENERIC_ATOMIC64 if !64BIT 34 select GENERIC_CLOCKEVENTS 35 select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO 36 select GENERIC_IOREMAP 37 select GENERIC_IRQ_MULTI_HANDLER 38 select GENERIC_IRQ_SHOW 39 select GENERIC_PCI_IOMAP 40 select GENERIC_PTDUMP if MMU 41 select GENERIC_SCHED_CLOCK 42 select GENERIC_SMP_IDLE_THREAD 43 select GENERIC_STRNCPY_FROM_USER if MMU 44 select GENERIC_STRNLEN_USER if MMU 45 select GENERIC_TIME_VSYSCALL if MMU && 64BIT 46 select HANDLE_DOMAIN_IRQ 47 select HAVE_ARCH_AUDITSYSCALL 48 select HAVE_ARCH_KASAN if MMU && 64BIT 49 select HAVE_ARCH_KGDB 50 select HAVE_ARCH_KGDB_QXFER_PKT 51 select HAVE_ARCH_MMAP_RND_BITS if MMU 52 select HAVE_ARCH_SECCOMP_FILTER 53 select HAVE_ARCH_TRACEHOOK 54 select HAVE_ASM_MODVERSIONS 55 select HAVE_COPY_THREAD_TLS 56 select HAVE_DMA_CONTIGUOUS if MMU 57 select HAVE_EBPF_JIT if MMU 58 select HAVE_FUTEX_CMPXCHG if FUTEX 59 select HAVE_GENERIC_VDSO if MMU && 64BIT 60 select HAVE_PCI 61 select HAVE_PERF_EVENTS 62 select HAVE_PERF_REGS 63 select HAVE_PERF_USER_STACK_DUMP 64 select HAVE_SYSCALL_TRACEPOINTS 65 select IRQ_DOMAIN 66 select MODULES_USE_ELF_RELA if MODULES 67 select MODULE_SECTIONS if MODULES 68 select OF 69 select OF_EARLY_FLATTREE 70 select OF_IRQ 71 select PCI_DOMAINS_GENERIC if PCI 72 select PCI_MSI if PCI 73 select RISCV_INTC 74 select RISCV_TIMER 75 select SPARSEMEM_STATIC if 32BIT 76 select SPARSE_IRQ 77 select SYSCTL_EXCEPTION_TRACE 78 select THREAD_INFO_IN_TASK 79 80config ARCH_MMAP_RND_BITS_MIN 81 default 18 if 64BIT 82 default 8 83 84# max bits determined by the following formula: 85# VA_BITS - PAGE_SHIFT - 3 86config ARCH_MMAP_RND_BITS_MAX 87 default 24 if 64BIT # SV39 based 88 default 17 89 90# set if we run in machine mode, cleared if we run in supervisor mode 91config RISCV_M_MODE 92 bool 93 default !MMU 94 95# set if we are running in S-mode and can use SBI calls 96config RISCV_SBI 97 bool 98 depends on !RISCV_M_MODE 99 default y 100 101config MMU 102 bool "MMU-based Paged Memory Management Support" 103 default y 104 help 105 Select if you want MMU-based virtualised addressing space 106 support by paged memory management. If unsure, say 'Y'. 107 108config ZONE_DMA32 109 bool 110 default y if 64BIT 111 112config VA_BITS 113 int 114 default 32 if 32BIT 115 default 39 if 64BIT 116 117config PA_BITS 118 int 119 default 34 if 32BIT 120 default 56 if 64BIT 121 122config PAGE_OFFSET 123 hex 124 default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB 125 default 0x80000000 if 64BIT && !MMU 126 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB 127 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB 128 129config ARCH_FLATMEM_ENABLE 130 def_bool y 131 132config ARCH_SPARSEMEM_ENABLE 133 def_bool y 134 depends on MMU 135 select SPARSEMEM_VMEMMAP_ENABLE 136 137config ARCH_SELECT_MEMORY_MODEL 138 def_bool ARCH_SPARSEMEM_ENABLE 139 140config ARCH_WANT_GENERAL_HUGETLB 141 def_bool y 142 143config ARCH_SUPPORTS_DEBUG_PAGEALLOC 144 def_bool y 145 146config SYS_SUPPORTS_HUGETLBFS 147 depends on MMU 148 def_bool y 149 150config STACKTRACE_SUPPORT 151 def_bool y 152 153config TRACE_IRQFLAGS_SUPPORT 154 def_bool y 155 156config GENERIC_BUG 157 def_bool y 158 depends on BUG 159 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT 160 161config GENERIC_BUG_RELATIVE_POINTERS 162 bool 163 164config GENERIC_CALIBRATE_DELAY 165 def_bool y 166 167config GENERIC_CSUM 168 def_bool y 169 170config GENERIC_HWEIGHT 171 def_bool y 172 173config FIX_EARLYCON_MEM 174 def_bool MMU 175 176config PGTABLE_LEVELS 177 int 178 default 3 if 64BIT 179 default 2 180 181source "arch/riscv/Kconfig.socs" 182 183menu "Platform type" 184 185choice 186 prompt "Base ISA" 187 default ARCH_RV64I 188 help 189 This selects the base ISA that this kernel will target and must match 190 the target platform. 191 192config ARCH_RV32I 193 bool "RV32I" 194 select 32BIT 195 select GENERIC_LIB_ASHLDI3 196 select GENERIC_LIB_ASHRDI3 197 select GENERIC_LIB_LSHRDI3 198 select GENERIC_LIB_UCMPDI2 199 select MMU 200 201config ARCH_RV64I 202 bool "RV64I" 203 select 64BIT 204 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000 205 select HAVE_DYNAMIC_FTRACE if MMU 206 select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE 207 select HAVE_FTRACE_MCOUNT_RECORD 208 select HAVE_FUNCTION_GRAPH_TRACER 209 select HAVE_FUNCTION_TRACER 210 select SWIOTLB if MMU 211 212endchoice 213 214# We must be able to map all physical memory into the kernel, but the compiler 215# is still a bit more efficient when generating code if it's setup in a manner 216# such that it can only map 2GiB of memory. 217choice 218 prompt "Kernel Code Model" 219 default CMODEL_MEDLOW if 32BIT 220 default CMODEL_MEDANY if 64BIT 221 222 config CMODEL_MEDLOW 223 bool "medium low code model" 224 config CMODEL_MEDANY 225 bool "medium any code model" 226endchoice 227 228config MODULE_SECTIONS 229 bool 230 select HAVE_MOD_ARCH_SPECIFIC 231 232choice 233 prompt "Maximum Physical Memory" 234 default MAXPHYSMEM_2GB if 32BIT 235 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW 236 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY 237 238 config MAXPHYSMEM_2GB 239 bool "2GiB" 240 config MAXPHYSMEM_128GB 241 depends on 64BIT && CMODEL_MEDANY 242 bool "128GiB" 243endchoice 244 245 246config SMP 247 bool "Symmetric Multi-Processing" 248 help 249 This enables support for systems with more than one CPU. If 250 you say N here, the kernel will run on single and 251 multiprocessor machines, but will use only one CPU of a 252 multiprocessor machine. If you say Y here, the kernel will run 253 on many, but not all, single processor machines. On a single 254 processor machine, the kernel will run faster if you say N 255 here. 256 257 If you don't know what to do here, say N. 258 259config NR_CPUS 260 int "Maximum number of CPUs (2-32)" 261 range 2 32 262 depends on SMP 263 default "8" 264 265config HOTPLUG_CPU 266 bool "Support for hot-pluggable CPUs" 267 depends on SMP 268 select GENERIC_IRQ_MIGRATION 269 help 270 271 Say Y here to experiment with turning CPUs off and on. CPUs 272 can be controlled through /sys/devices/system/cpu. 273 274 Say N if you want to disable CPU hotplug. 275 276choice 277 prompt "CPU Tuning" 278 default TUNE_GENERIC 279 280config TUNE_GENERIC 281 bool "generic" 282 283endchoice 284 285config RISCV_ISA_C 286 bool "Emit compressed instructions when building Linux" 287 default y 288 help 289 Adds "C" to the ISA subsets that the toolchain is allowed to emit 290 when building Linux, which results in compressed instructions in the 291 Linux binary. 292 293 If you don't know what to do here, say Y. 294 295menu "supported PMU type" 296 depends on PERF_EVENTS 297 298config RISCV_BASE_PMU 299 bool "Base Performance Monitoring Unit" 300 def_bool y 301 help 302 A base PMU that serves as a reference implementation and has limited 303 feature of perf. It can run on any RISC-V machines so serves as the 304 fallback, but this option can also be disable to reduce kernel size. 305 306endmenu 307 308config FPU 309 bool "FPU support" 310 default y 311 help 312 Say N here if you want to disable all floating-point related procedure 313 in the kernel. 314 315 If you don't know what to do here, say Y. 316 317endmenu 318 319menu "Kernel features" 320 321source "kernel/Kconfig.hz" 322 323config SECCOMP 324 bool "Enable seccomp to safely compute untrusted bytecode" 325 help 326 This kernel feature is useful for number crunching applications 327 that may need to compute untrusted bytecode during their 328 execution. By using pipes or other transports made available to 329 the process as file descriptors supporting the read/write 330 syscalls, it's possible to isolate those applications in 331 their own address space using seccomp. Once seccomp is 332 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled 333 and the task is only allowed to execute a few safe syscalls 334 defined by each seccomp mode. 335 336config RISCV_SBI_V01 337 bool "SBI v0.1 support" 338 default y 339 depends on RISCV_SBI 340 help 341 This config allows kernel to use SBI v0.1 APIs. This will be 342 deprecated in future once legacy M-mode software are no longer in use. 343endmenu 344 345menu "Boot options" 346 347config CMDLINE 348 string "Built-in kernel command line" 349 help 350 For most platforms, the arguments for the kernel's command line 351 are provided at run-time, during boot. However, there are cases 352 where either no arguments are being provided or the provided 353 arguments are insufficient or even invalid. 354 355 When that occurs, it is possible to define a built-in command 356 line here and choose how the kernel should use it later on. 357 358choice 359 prompt "Built-in command line usage" if CMDLINE != "" 360 default CMDLINE_FALLBACK 361 help 362 Choose how the kernel will handle the provided built-in command 363 line. 364 365config CMDLINE_FALLBACK 366 bool "Use bootloader kernel arguments if available" 367 help 368 Use the built-in command line as fallback in case we get nothing 369 during boot. This is the default behaviour. 370 371config CMDLINE_EXTEND 372 bool "Extend bootloader kernel arguments" 373 help 374 The command-line arguments provided during boot will be 375 appended to the built-in command line. This is useful in 376 cases where the provided arguments are insufficient and 377 you don't want to or cannot modify them. 378 379 380config CMDLINE_FORCE 381 bool "Always use the default kernel command string" 382 help 383 Always use the built-in command line, even if we get one during 384 boot. This is useful in case you need to override the provided 385 command line on systems where you don't have or want control 386 over it. 387 388endchoice 389 390endmenu 391 392config BUILTIN_DTB 393 def_bool n 394 depends on RISCV_M_MODE 395 depends on OF 396 397menu "Power management options" 398 399source "kernel/power/Kconfig" 400 401endmenu 402