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_SUPPORTS_ATOMIC_RMW 17 select ARCH_SUPPORTS_DEBUG_PAGEALLOC if MMU 18 select ARCH_STACKWALK 19 select ARCH_HAS_BINFMT_FLAT 20 select ARCH_HAS_DEBUG_VM_PGTABLE 21 select ARCH_HAS_DEBUG_VIRTUAL if MMU 22 select ARCH_HAS_DEBUG_WX 23 select ARCH_HAS_GCOV_PROFILE_ALL 24 select ARCH_HAS_GIGANTIC_PAGE 25 select ARCH_HAS_KCOV 26 select ARCH_HAS_MMIOWB 27 select ARCH_HAS_PTE_SPECIAL 28 select ARCH_HAS_SET_DIRECT_MAP 29 select ARCH_HAS_SET_MEMORY 30 select ARCH_HAS_STRICT_KERNEL_RWX if MMU 31 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX 32 select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT 33 select ARCH_SUPPORTS_HUGETLBFS if MMU 34 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU 35 select ARCH_WANT_FRAME_POINTERS 36 select ARCH_WANT_HUGE_PMD_SHARE if 64BIT 37 select CLONE_BACKWARDS 38 select CLINT_TIMER if !MMU 39 select COMMON_CLK 40 select EDAC_SUPPORT 41 select GENERIC_ARCH_TOPOLOGY if SMP 42 select GENERIC_ATOMIC64 if !64BIT 43 select GENERIC_EARLY_IOREMAP 44 select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO 45 select GENERIC_IOREMAP 46 select GENERIC_IRQ_MULTI_HANDLER 47 select GENERIC_IRQ_SHOW 48 select GENERIC_LIB_DEVMEM_IS_ALLOWED 49 select GENERIC_PCI_IOMAP 50 select GENERIC_PTDUMP if MMU 51 select GENERIC_SCHED_CLOCK 52 select GENERIC_SMP_IDLE_THREAD 53 select GENERIC_STRNCPY_FROM_USER if MMU 54 select GENERIC_STRNLEN_USER if MMU 55 select GENERIC_TIME_VSYSCALL if MMU && 64BIT 56 select HANDLE_DOMAIN_IRQ 57 select HAVE_ARCH_AUDITSYSCALL 58 select HAVE_ARCH_JUMP_LABEL 59 select HAVE_ARCH_JUMP_LABEL_RELATIVE 60 select HAVE_ARCH_KASAN if MMU && 64BIT 61 select HAVE_ARCH_KASAN_VMALLOC if MMU && 64BIT 62 select HAVE_ARCH_KGDB 63 select HAVE_ARCH_KGDB_QXFER_PKT 64 select HAVE_ARCH_MMAP_RND_BITS if MMU 65 select HAVE_ARCH_SECCOMP_FILTER 66 select HAVE_ARCH_TRACEHOOK 67 select HAVE_ASM_MODVERSIONS 68 select HAVE_CONTEXT_TRACKING 69 select HAVE_DEBUG_KMEMLEAK 70 select HAVE_DMA_CONTIGUOUS if MMU 71 select HAVE_EBPF_JIT if MMU 72 select HAVE_FUNCTION_ERROR_INJECTION 73 select HAVE_FUTEX_CMPXCHG if FUTEX 74 select HAVE_GCC_PLUGINS 75 select HAVE_GENERIC_VDSO if MMU && 64BIT 76 select HAVE_IRQ_TIME_ACCOUNTING 77 select HAVE_KPROBES 78 select HAVE_KPROBES_ON_FTRACE 79 select HAVE_KRETPROBES 80 select HAVE_PCI 81 select HAVE_PERF_EVENTS 82 select HAVE_PERF_REGS 83 select HAVE_PERF_USER_STACK_DUMP 84 select HAVE_REGS_AND_STACK_ACCESS_API 85 select HAVE_STACKPROTECTOR 86 select HAVE_SYSCALL_TRACEPOINTS 87 select IRQ_DOMAIN 88 select MODULES_USE_ELF_RELA if MODULES 89 select MODULE_SECTIONS if MODULES 90 select OF 91 select OF_EARLY_FLATTREE 92 select OF_IRQ 93 select PCI_DOMAINS_GENERIC if PCI 94 select PCI_MSI if PCI 95 select RISCV_INTC 96 select RISCV_TIMER if RISCV_SBI 97 select SPARSE_IRQ 98 select SYSCTL_EXCEPTION_TRACE 99 select THREAD_INFO_IN_TASK 100 select UACCESS_MEMCPY if !MMU 101 102config ARCH_MMAP_RND_BITS_MIN 103 default 18 if 64BIT 104 default 8 105 106# max bits determined by the following formula: 107# VA_BITS - PAGE_SHIFT - 3 108config ARCH_MMAP_RND_BITS_MAX 109 default 24 if 64BIT # SV39 based 110 default 17 111 112# set if we run in machine mode, cleared if we run in supervisor mode 113config RISCV_M_MODE 114 bool 115 default !MMU 116 117# set if we are running in S-mode and can use SBI calls 118config RISCV_SBI 119 bool 120 depends on !RISCV_M_MODE 121 default y 122 123config MMU 124 bool "MMU-based Paged Memory Management Support" 125 default y 126 help 127 Select if you want MMU-based virtualised addressing space 128 support by paged memory management. If unsure, say 'Y'. 129 130config ZONE_DMA32 131 bool 132 default y if 64BIT 133 134config VA_BITS 135 int 136 default 32 if 32BIT 137 default 39 if 64BIT 138 139config PA_BITS 140 int 141 default 34 if 32BIT 142 default 56 if 64BIT 143 144config PAGE_OFFSET 145 hex 146 default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB 147 default 0x80000000 if 64BIT && !MMU 148 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB 149 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB 150 151config ARCH_FLATMEM_ENABLE 152 def_bool !NUMA 153 154config ARCH_SPARSEMEM_ENABLE 155 def_bool y 156 depends on MMU 157 select SPARSEMEM_STATIC if 32BIT && SPARSEMEM 158 select SPARSEMEM_VMEMMAP_ENABLE if 64BIT 159 160config ARCH_SELECT_MEMORY_MODEL 161 def_bool ARCH_SPARSEMEM_ENABLE 162 163config ARCH_WANT_GENERAL_HUGETLB 164 def_bool y 165 166config ARCH_SUPPORTS_UPROBES 167 def_bool y 168 169config STACKTRACE_SUPPORT 170 def_bool y 171 172config TRACE_IRQFLAGS_SUPPORT 173 def_bool y 174 175config GENERIC_BUG 176 def_bool y 177 depends on BUG 178 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT 179 180config GENERIC_BUG_RELATIVE_POINTERS 181 bool 182 183config GENERIC_CALIBRATE_DELAY 184 def_bool y 185 186config GENERIC_CSUM 187 def_bool y 188 189config GENERIC_HWEIGHT 190 def_bool y 191 192config FIX_EARLYCON_MEM 193 def_bool MMU 194 195config PGTABLE_LEVELS 196 int 197 default 3 if 64BIT 198 default 2 199 200config LOCKDEP_SUPPORT 201 def_bool y 202 203source "arch/riscv/Kconfig.socs" 204 205menu "Platform type" 206 207choice 208 prompt "Base ISA" 209 default ARCH_RV64I 210 help 211 This selects the base ISA that this kernel will target and must match 212 the target platform. 213 214config ARCH_RV32I 215 bool "RV32I" 216 select 32BIT 217 select GENERIC_LIB_ASHLDI3 218 select GENERIC_LIB_ASHRDI3 219 select GENERIC_LIB_LSHRDI3 220 select GENERIC_LIB_UCMPDI2 221 select MMU 222 223config ARCH_RV64I 224 bool "RV64I" 225 select 64BIT 226 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000 227 select HAVE_DYNAMIC_FTRACE if MMU 228 select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE 229 select HAVE_FTRACE_MCOUNT_RECORD 230 select HAVE_FUNCTION_GRAPH_TRACER 231 select HAVE_FUNCTION_TRACER 232 select SWIOTLB if MMU 233 234endchoice 235 236# We must be able to map all physical memory into the kernel, but the compiler 237# is still a bit more efficient when generating code if it's setup in a manner 238# such that it can only map 2GiB of memory. 239choice 240 prompt "Kernel Code Model" 241 default CMODEL_MEDLOW if 32BIT 242 default CMODEL_MEDANY if 64BIT 243 244 config CMODEL_MEDLOW 245 bool "medium low code model" 246 config CMODEL_MEDANY 247 bool "medium any code model" 248endchoice 249 250config MODULE_SECTIONS 251 bool 252 select HAVE_MOD_ARCH_SPECIFIC 253 254choice 255 prompt "Maximum Physical Memory" 256 default MAXPHYSMEM_1GB if 32BIT 257 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW 258 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY 259 260 config MAXPHYSMEM_1GB 261 depends on 32BIT 262 bool "1GiB" 263 config MAXPHYSMEM_2GB 264 depends on 64BIT && CMODEL_MEDLOW 265 bool "2GiB" 266 config MAXPHYSMEM_128GB 267 depends on 64BIT && CMODEL_MEDANY 268 bool "128GiB" 269endchoice 270 271 272config SMP 273 bool "Symmetric Multi-Processing" 274 help 275 This enables support for systems with more than one CPU. If 276 you say N here, the kernel will run on single and 277 multiprocessor machines, but will use only one CPU of a 278 multiprocessor machine. If you say Y here, the kernel will run 279 on many, but not all, single processor machines. On a single 280 processor machine, the kernel will run faster if you say N 281 here. 282 283 If you don't know what to do here, say N. 284 285config NR_CPUS 286 int "Maximum number of CPUs (2-32)" 287 range 2 32 288 depends on SMP 289 default "8" 290 291config HOTPLUG_CPU 292 bool "Support for hot-pluggable CPUs" 293 depends on SMP 294 select GENERIC_IRQ_MIGRATION 295 help 296 297 Say Y here to experiment with turning CPUs off and on. CPUs 298 can be controlled through /sys/devices/system/cpu. 299 300 Say N if you want to disable CPU hotplug. 301 302choice 303 prompt "CPU Tuning" 304 default TUNE_GENERIC 305 306config TUNE_GENERIC 307 bool "generic" 308 309endchoice 310 311# Common NUMA Features 312config NUMA 313 bool "NUMA Memory Allocation and Scheduler Support" 314 depends on SMP && MMU 315 select GENERIC_ARCH_NUMA 316 select OF_NUMA 317 select ARCH_SUPPORTS_NUMA_BALANCING 318 help 319 Enable NUMA (Non-Uniform Memory Access) support. 320 321 The kernel will try to allocate memory used by a CPU on the 322 local memory of the CPU and add some more NUMA awareness to the kernel. 323 324config NODES_SHIFT 325 int "Maximum NUMA Nodes (as a power of 2)" 326 range 1 10 327 default "2" 328 depends on NEED_MULTIPLE_NODES 329 help 330 Specify the maximum number of NUMA Nodes available on the target 331 system. Increases memory reserved to accommodate various tables. 332 333config USE_PERCPU_NUMA_NODE_ID 334 def_bool y 335 depends on NUMA 336 337config NEED_PER_CPU_EMBED_FIRST_CHUNK 338 def_bool y 339 depends on NUMA 340 341config RISCV_ISA_C 342 bool "Emit compressed instructions when building Linux" 343 default y 344 help 345 Adds "C" to the ISA subsets that the toolchain is allowed to emit 346 when building Linux, which results in compressed instructions in the 347 Linux binary. 348 349 If you don't know what to do here, say Y. 350 351menu "supported PMU type" 352 depends on PERF_EVENTS 353 354config RISCV_BASE_PMU 355 bool "Base Performance Monitoring Unit" 356 def_bool y 357 help 358 A base PMU that serves as a reference implementation and has limited 359 feature of perf. It can run on any RISC-V machines so serves as the 360 fallback, but this option can also be disable to reduce kernel size. 361 362endmenu 363 364config FPU 365 bool "FPU support" 366 default y 367 help 368 Say N here if you want to disable all floating-point related procedure 369 in the kernel. 370 371 If you don't know what to do here, say Y. 372 373endmenu 374 375menu "Kernel features" 376 377source "kernel/Kconfig.hz" 378 379config RISCV_SBI_V01 380 bool "SBI v0.1 support" 381 default y 382 depends on RISCV_SBI 383 help 384 This config allows kernel to use SBI v0.1 APIs. This will be 385 deprecated in future once legacy M-mode software are no longer in use. 386endmenu 387 388menu "Boot options" 389 390config CMDLINE 391 string "Built-in kernel command line" 392 help 393 For most platforms, the arguments for the kernel's command line 394 are provided at run-time, during boot. However, there are cases 395 where either no arguments are being provided or the provided 396 arguments are insufficient or even invalid. 397 398 When that occurs, it is possible to define a built-in command 399 line here and choose how the kernel should use it later on. 400 401choice 402 prompt "Built-in command line usage" if CMDLINE != "" 403 default CMDLINE_FALLBACK 404 help 405 Choose how the kernel will handle the provided built-in command 406 line. 407 408config CMDLINE_FALLBACK 409 bool "Use bootloader kernel arguments if available" 410 help 411 Use the built-in command line as fallback in case we get nothing 412 during boot. This is the default behaviour. 413 414config CMDLINE_EXTEND 415 bool "Extend bootloader kernel arguments" 416 help 417 The command-line arguments provided during boot will be 418 appended to the built-in command line. This is useful in 419 cases where the provided arguments are insufficient and 420 you don't want to or cannot modify them. 421 422 423config CMDLINE_FORCE 424 bool "Always use the default kernel command string" 425 help 426 Always use the built-in command line, even if we get one during 427 boot. This is useful in case you need to override the provided 428 command line on systems where you don't have or want control 429 over it. 430 431endchoice 432 433config EFI_STUB 434 bool 435 436config EFI 437 bool "UEFI runtime support" 438 depends on OF 439 select LIBFDT 440 select UCS2_STRING 441 select EFI_PARAMS_FROM_FDT 442 select EFI_STUB 443 select EFI_GENERIC_STUB 444 select EFI_RUNTIME_WRAPPERS 445 select RISCV_ISA_C 446 depends on MMU 447 default y 448 help 449 This option provides support for runtime services provided 450 by UEFI firmware (such as non-volatile variables, realtime 451 clock, and platform reset). A UEFI stub is also provided to 452 allow the kernel to be booted as an EFI application. This 453 is only useful on systems that have UEFI firmware. 454 455config CC_HAVE_STACKPROTECTOR_TLS 456 def_bool $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=tp -mstack-protector-guard-offset=0) 457 458config STACKPROTECTOR_PER_TASK 459 def_bool y 460 depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_TLS 461 462endmenu 463 464config BUILTIN_DTB 465 def_bool n 466 depends on OF 467 468menu "Power management options" 469 470source "kernel/power/Kconfig" 471 472endmenu 473 474source "drivers/firmware/Kconfig" 475