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