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_CLOCKEVENTS 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 91config ARCH_MMAP_RND_BITS_MIN 92 default 18 if 64BIT 93 default 8 94 95# max bits determined by the following formula: 96# VA_BITS - PAGE_SHIFT - 3 97config ARCH_MMAP_RND_BITS_MAX 98 default 24 if 64BIT # SV39 based 99 default 17 100 101# set if we run in machine mode, cleared if we run in supervisor mode 102config RISCV_M_MODE 103 bool 104 default !MMU 105 106# set if we are running in S-mode and can use SBI calls 107config RISCV_SBI 108 bool 109 depends on !RISCV_M_MODE 110 default y 111 112config MMU 113 bool "MMU-based Paged Memory Management Support" 114 default y 115 help 116 Select if you want MMU-based virtualised addressing space 117 support by paged memory management. If unsure, say 'Y'. 118 119config ZONE_DMA32 120 bool 121 default y if 64BIT 122 123config VA_BITS 124 int 125 default 32 if 32BIT 126 default 39 if 64BIT 127 128config PA_BITS 129 int 130 default 34 if 32BIT 131 default 56 if 64BIT 132 133config PAGE_OFFSET 134 hex 135 default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB 136 default 0x80000000 if 64BIT && !MMU 137 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB 138 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB 139 140config ARCH_FLATMEM_ENABLE 141 def_bool y 142 143config ARCH_SPARSEMEM_ENABLE 144 def_bool y 145 depends on MMU 146 select SPARSEMEM_VMEMMAP_ENABLE 147 148config ARCH_SELECT_MEMORY_MODEL 149 def_bool ARCH_SPARSEMEM_ENABLE 150 151config ARCH_WANT_GENERAL_HUGETLB 152 def_bool y 153 154config ARCH_SUPPORTS_DEBUG_PAGEALLOC 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 SECCOMP 338 bool "Enable seccomp to safely compute untrusted bytecode" 339 help 340 This kernel feature is useful for number crunching applications 341 that may need to compute untrusted bytecode during their 342 execution. By using pipes or other transports made available to 343 the process as file descriptors supporting the read/write 344 syscalls, it's possible to isolate those applications in 345 their own address space using seccomp. Once seccomp is 346 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled 347 and the task is only allowed to execute a few safe syscalls 348 defined by each seccomp mode. 349 350config RISCV_SBI_V01 351 bool "SBI v0.1 support" 352 default y 353 depends on RISCV_SBI 354 help 355 This config allows kernel to use SBI v0.1 APIs. This will be 356 deprecated in future once legacy M-mode software are no longer in use. 357endmenu 358 359menu "Boot options" 360 361config CMDLINE 362 string "Built-in kernel command line" 363 help 364 For most platforms, the arguments for the kernel's command line 365 are provided at run-time, during boot. However, there are cases 366 where either no arguments are being provided or the provided 367 arguments are insufficient or even invalid. 368 369 When that occurs, it is possible to define a built-in command 370 line here and choose how the kernel should use it later on. 371 372choice 373 prompt "Built-in command line usage" if CMDLINE != "" 374 default CMDLINE_FALLBACK 375 help 376 Choose how the kernel will handle the provided built-in command 377 line. 378 379config CMDLINE_FALLBACK 380 bool "Use bootloader kernel arguments if available" 381 help 382 Use the built-in command line as fallback in case we get nothing 383 during boot. This is the default behaviour. 384 385config CMDLINE_EXTEND 386 bool "Extend bootloader kernel arguments" 387 help 388 The command-line arguments provided during boot will be 389 appended to the built-in command line. This is useful in 390 cases where the provided arguments are insufficient and 391 you don't want to or cannot modify them. 392 393 394config CMDLINE_FORCE 395 bool "Always use the default kernel command string" 396 help 397 Always use the built-in command line, even if we get one during 398 boot. This is useful in case you need to override the provided 399 command line on systems where you don't have or want control 400 over it. 401 402endchoice 403 404endmenu 405 406config BUILTIN_DTB 407 def_bool n 408 depends on RISCV_M_MODE 409 depends on OF 410 411menu "Power management options" 412 413source "kernel/power/Kconfig" 414 415endmenu 416