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. 394endmenu 395 396menu "Boot options" 397 398config CMDLINE 399 string "Built-in kernel command line" 400 help 401 For most platforms, the arguments for the kernel's command line 402 are provided at run-time, during boot. However, there are cases 403 where either no arguments are being provided or the provided 404 arguments are insufficient or even invalid. 405 406 When that occurs, it is possible to define a built-in command 407 line here and choose how the kernel should use it later on. 408 409choice 410 prompt "Built-in command line usage" if CMDLINE != "" 411 default CMDLINE_FALLBACK 412 help 413 Choose how the kernel will handle the provided built-in command 414 line. 415 416config CMDLINE_FALLBACK 417 bool "Use bootloader kernel arguments if available" 418 help 419 Use the built-in command line as fallback in case we get nothing 420 during boot. This is the default behaviour. 421 422config CMDLINE_EXTEND 423 bool "Extend bootloader kernel arguments" 424 help 425 The command-line arguments provided during boot will be 426 appended to the built-in command line. This is useful in 427 cases where the provided arguments are insufficient and 428 you don't want to or cannot modify them. 429 430 431config CMDLINE_FORCE 432 bool "Always use the default kernel command string" 433 help 434 Always use the built-in command line, even if we get one during 435 boot. This is useful in case you need to override the provided 436 command line on systems where you don't have or want control 437 over it. 438 439endchoice 440 441config EFI_STUB 442 bool 443 444config EFI 445 bool "UEFI runtime support" 446 depends on OF 447 select LIBFDT 448 select UCS2_STRING 449 select EFI_PARAMS_FROM_FDT 450 select EFI_STUB 451 select EFI_GENERIC_STUB 452 select EFI_RUNTIME_WRAPPERS 453 select RISCV_ISA_C 454 depends on MMU 455 default y 456 help 457 This option provides support for runtime services provided 458 by UEFI firmware (such as non-volatile variables, realtime 459 clock, and platform reset). A UEFI stub is also provided to 460 allow the kernel to be booted as an EFI application. This 461 is only useful on systems that have UEFI firmware. 462 463config CC_HAVE_STACKPROTECTOR_TLS 464 def_bool $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=tp -mstack-protector-guard-offset=0) 465 466config STACKPROTECTOR_PER_TASK 467 def_bool y 468 depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_TLS 469 470endmenu 471 472config BUILTIN_DTB 473 def_bool n 474 depends on OF 475 476menu "Power management options" 477 478source "kernel/power/Kconfig" 479 480endmenu 481 482source "drivers/firmware/Kconfig" 483