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