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_VIRTUAL if MMU 19 select ARCH_HAS_DEBUG_WX 20 select ARCH_HAS_GCOV_PROFILE_ALL 21 select ARCH_HAS_GIGANTIC_PAGE 22 select ARCH_HAS_KCOV 23 select ARCH_HAS_MMIOWB 24 select ARCH_HAS_PTE_SPECIAL 25 select ARCH_HAS_SET_DIRECT_MAP 26 select ARCH_HAS_SET_MEMORY 27 select ARCH_HAS_STRICT_KERNEL_RWX if MMU 28 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU 29 select ARCH_WANT_FRAME_POINTERS 30 select ARCH_WANT_HUGE_PMD_SHARE if 64BIT 31 select CLONE_BACKWARDS 32 select COMMON_CLK 33 select EDAC_SUPPORT 34 select GENERIC_ARCH_TOPOLOGY if SMP 35 select GENERIC_ATOMIC64 if !64BIT 36 select GENERIC_CLOCKEVENTS 37 select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO 38 select GENERIC_IOREMAP 39 select GENERIC_IRQ_MULTI_HANDLER 40 select GENERIC_IRQ_SHOW 41 select GENERIC_PCI_IOMAP 42 select GENERIC_PTDUMP if MMU 43 select GENERIC_SCHED_CLOCK 44 select GENERIC_SMP_IDLE_THREAD 45 select GENERIC_STRNCPY_FROM_USER if MMU 46 select GENERIC_STRNLEN_USER if MMU 47 select GENERIC_TIME_VSYSCALL if MMU && 64BIT 48 select HANDLE_DOMAIN_IRQ 49 select HAVE_ARCH_AUDITSYSCALL 50 select HAVE_ARCH_KASAN if MMU && 64BIT 51 select HAVE_ARCH_KGDB 52 select HAVE_ARCH_KGDB_QXFER_PKT 53 select HAVE_ARCH_MMAP_RND_BITS if MMU 54 select HAVE_ARCH_SECCOMP_FILTER 55 select HAVE_ARCH_TRACEHOOK 56 select HAVE_ASM_MODVERSIONS 57 select HAVE_CONTEXT_TRACKING 58 select HAVE_COPY_THREAD_TLS 59 select HAVE_DMA_CONTIGUOUS if MMU 60 select HAVE_EBPF_JIT if MMU 61 select HAVE_FUTEX_CMPXCHG if FUTEX 62 select HAVE_GCC_PLUGINS 63 select HAVE_GENERIC_VDSO if MMU && 64BIT 64 select HAVE_PCI 65 select HAVE_PERF_EVENTS 66 select HAVE_PERF_REGS 67 select HAVE_PERF_USER_STACK_DUMP 68 select HAVE_SYSCALL_TRACEPOINTS 69 select IRQ_DOMAIN 70 select MODULES_USE_ELF_RELA if MODULES 71 select MODULE_SECTIONS if MODULES 72 select OF 73 select OF_EARLY_FLATTREE 74 select OF_IRQ 75 select PCI_DOMAINS_GENERIC if PCI 76 select PCI_MSI if PCI 77 select RISCV_INTC 78 select RISCV_TIMER 79 select SPARSEMEM_STATIC if 32BIT 80 select SPARSE_IRQ 81 select SYSCTL_EXCEPTION_TRACE 82 select THREAD_INFO_IN_TASK 83 84config ARCH_MMAP_RND_BITS_MIN 85 default 18 if 64BIT 86 default 8 87 88# max bits determined by the following formula: 89# VA_BITS - PAGE_SHIFT - 3 90config ARCH_MMAP_RND_BITS_MAX 91 default 24 if 64BIT # SV39 based 92 default 17 93 94# set if we run in machine mode, cleared if we run in supervisor mode 95config RISCV_M_MODE 96 bool 97 default !MMU 98 99# set if we are running in S-mode and can use SBI calls 100config RISCV_SBI 101 bool 102 depends on !RISCV_M_MODE 103 default y 104 105config MMU 106 bool "MMU-based Paged Memory Management Support" 107 default y 108 help 109 Select if you want MMU-based virtualised addressing space 110 support by paged memory management. If unsure, say 'Y'. 111 112config ZONE_DMA32 113 bool 114 default y if 64BIT 115 116config VA_BITS 117 int 118 default 32 if 32BIT 119 default 39 if 64BIT 120 121config PA_BITS 122 int 123 default 34 if 32BIT 124 default 56 if 64BIT 125 126config PAGE_OFFSET 127 hex 128 default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB 129 default 0x80000000 if 64BIT && !MMU 130 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB 131 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB 132 133config ARCH_FLATMEM_ENABLE 134 def_bool y 135 136config ARCH_SPARSEMEM_ENABLE 137 def_bool y 138 depends on MMU 139 select SPARSEMEM_VMEMMAP_ENABLE 140 141config ARCH_SELECT_MEMORY_MODEL 142 def_bool ARCH_SPARSEMEM_ENABLE 143 144config ARCH_WANT_GENERAL_HUGETLB 145 def_bool y 146 147config ARCH_SUPPORTS_DEBUG_PAGEALLOC 148 def_bool y 149 150config SYS_SUPPORTS_HUGETLBFS 151 depends on MMU 152 def_bool y 153 154config STACKTRACE_SUPPORT 155 def_bool y 156 157config TRACE_IRQFLAGS_SUPPORT 158 def_bool y 159 160config GENERIC_BUG 161 def_bool y 162 depends on BUG 163 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT 164 165config GENERIC_BUG_RELATIVE_POINTERS 166 bool 167 168config GENERIC_CALIBRATE_DELAY 169 def_bool y 170 171config GENERIC_CSUM 172 def_bool y 173 174config GENERIC_HWEIGHT 175 def_bool y 176 177config FIX_EARLYCON_MEM 178 def_bool MMU 179 180config PGTABLE_LEVELS 181 int 182 default 3 if 64BIT 183 default 2 184 185config LOCKDEP_SUPPORT 186 def_bool y 187 188source "arch/riscv/Kconfig.socs" 189 190menu "Platform type" 191 192choice 193 prompt "Base ISA" 194 default ARCH_RV64I 195 help 196 This selects the base ISA that this kernel will target and must match 197 the target platform. 198 199config ARCH_RV32I 200 bool "RV32I" 201 select 32BIT 202 select GENERIC_LIB_ASHLDI3 203 select GENERIC_LIB_ASHRDI3 204 select GENERIC_LIB_LSHRDI3 205 select GENERIC_LIB_UCMPDI2 206 select MMU 207 208config ARCH_RV64I 209 bool "RV64I" 210 select 64BIT 211 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000 212 select HAVE_DYNAMIC_FTRACE if MMU 213 select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE 214 select HAVE_FTRACE_MCOUNT_RECORD 215 select HAVE_FUNCTION_GRAPH_TRACER 216 select HAVE_FUNCTION_TRACER 217 select SWIOTLB if MMU 218 219endchoice 220 221# We must be able to map all physical memory into the kernel, but the compiler 222# is still a bit more efficient when generating code if it's setup in a manner 223# such that it can only map 2GiB of memory. 224choice 225 prompt "Kernel Code Model" 226 default CMODEL_MEDLOW if 32BIT 227 default CMODEL_MEDANY if 64BIT 228 229 config CMODEL_MEDLOW 230 bool "medium low code model" 231 config CMODEL_MEDANY 232 bool "medium any code model" 233endchoice 234 235config MODULE_SECTIONS 236 bool 237 select HAVE_MOD_ARCH_SPECIFIC 238 239choice 240 prompt "Maximum Physical Memory" 241 default MAXPHYSMEM_2GB if 32BIT 242 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW 243 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY 244 245 config MAXPHYSMEM_2GB 246 bool "2GiB" 247 config MAXPHYSMEM_128GB 248 depends on 64BIT && CMODEL_MEDANY 249 bool "128GiB" 250endchoice 251 252 253config SMP 254 bool "Symmetric Multi-Processing" 255 help 256 This enables support for systems with more than one CPU. If 257 you say N here, the kernel will run on single and 258 multiprocessor machines, but will use only one CPU of a 259 multiprocessor machine. If you say Y here, the kernel will run 260 on many, but not all, single processor machines. On a single 261 processor machine, the kernel will run faster if you say N 262 here. 263 264 If you don't know what to do here, say N. 265 266config NR_CPUS 267 int "Maximum number of CPUs (2-32)" 268 range 2 32 269 depends on SMP 270 default "8" 271 272config HOTPLUG_CPU 273 bool "Support for hot-pluggable CPUs" 274 depends on SMP 275 select GENERIC_IRQ_MIGRATION 276 help 277 278 Say Y here to experiment with turning CPUs off and on. CPUs 279 can be controlled through /sys/devices/system/cpu. 280 281 Say N if you want to disable CPU hotplug. 282 283choice 284 prompt "CPU Tuning" 285 default TUNE_GENERIC 286 287config TUNE_GENERIC 288 bool "generic" 289 290endchoice 291 292config RISCV_ISA_C 293 bool "Emit compressed instructions when building Linux" 294 default y 295 help 296 Adds "C" to the ISA subsets that the toolchain is allowed to emit 297 when building Linux, which results in compressed instructions in the 298 Linux binary. 299 300 If you don't know what to do here, say Y. 301 302menu "supported PMU type" 303 depends on PERF_EVENTS 304 305config RISCV_BASE_PMU 306 bool "Base Performance Monitoring Unit" 307 def_bool y 308 help 309 A base PMU that serves as a reference implementation and has limited 310 feature of perf. It can run on any RISC-V machines so serves as the 311 fallback, but this option can also be disable to reduce kernel size. 312 313endmenu 314 315config FPU 316 bool "FPU support" 317 default y 318 help 319 Say N here if you want to disable all floating-point related procedure 320 in the kernel. 321 322 If you don't know what to do here, say Y. 323 324endmenu 325 326menu "Kernel features" 327 328source "kernel/Kconfig.hz" 329 330config SECCOMP 331 bool "Enable seccomp to safely compute untrusted bytecode" 332 help 333 This kernel feature is useful for number crunching applications 334 that may need to compute untrusted bytecode during their 335 execution. By using pipes or other transports made available to 336 the process as file descriptors supporting the read/write 337 syscalls, it's possible to isolate those applications in 338 their own address space using seccomp. Once seccomp is 339 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled 340 and the task is only allowed to execute a few safe syscalls 341 defined by each seccomp mode. 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 397endmenu 398 399config BUILTIN_DTB 400 def_bool n 401 depends on RISCV_M_MODE 402 depends on OF 403 404menu "Power management options" 405 406source "kernel/power/Kconfig" 407 408endmenu 409