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