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