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