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