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