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 select SPARSEMEM_VMEMMAP_ENABLE 125 126config ARCH_SELECT_MEMORY_MODEL 127 def_bool ARCH_SPARSEMEM_ENABLE 128 129config ARCH_WANT_GENERAL_HUGETLB 130 def_bool y 131 132config SYS_SUPPORTS_HUGETLBFS 133 def_bool y 134 135config STACKTRACE_SUPPORT 136 def_bool y 137 138config TRACE_IRQFLAGS_SUPPORT 139 def_bool y 140 141config GENERIC_BUG 142 def_bool y 143 depends on BUG 144 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT 145 146config GENERIC_BUG_RELATIVE_POINTERS 147 bool 148 149config GENERIC_CALIBRATE_DELAY 150 def_bool y 151 152config GENERIC_CSUM 153 def_bool y 154 155config GENERIC_HWEIGHT 156 def_bool y 157 158config FIX_EARLYCON_MEM 159 def_bool MMU 160 161config PGTABLE_LEVELS 162 int 163 default 3 if 64BIT 164 default 2 165 166source "arch/riscv/Kconfig.socs" 167 168menu "Platform type" 169 170choice 171 prompt "Base ISA" 172 default ARCH_RV64I 173 help 174 This selects the base ISA that this kernel will target and must match 175 the target platform. 176 177config ARCH_RV32I 178 bool "RV32I" 179 select 32BIT 180 select GENERIC_LIB_ASHLDI3 181 select GENERIC_LIB_ASHRDI3 182 select GENERIC_LIB_LSHRDI3 183 select GENERIC_LIB_UCMPDI2 184 select MMU 185 186config ARCH_RV64I 187 bool "RV64I" 188 select 64BIT 189 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000 190 select HAVE_FUNCTION_TRACER 191 select HAVE_FUNCTION_GRAPH_TRACER 192 select HAVE_FTRACE_MCOUNT_RECORD 193 select HAVE_DYNAMIC_FTRACE if MMU 194 select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE 195 select SWIOTLB if MMU 196 197endchoice 198 199# We must be able to map all physical memory into the kernel, but the compiler 200# is still a bit more efficient when generating code if it's setup in a manner 201# such that it can only map 2GiB of memory. 202choice 203 prompt "Kernel Code Model" 204 default CMODEL_MEDLOW if 32BIT 205 default CMODEL_MEDANY if 64BIT 206 207 config CMODEL_MEDLOW 208 bool "medium low code model" 209 config CMODEL_MEDANY 210 bool "medium any code model" 211endchoice 212 213config MODULE_SECTIONS 214 bool 215 select HAVE_MOD_ARCH_SPECIFIC 216 217choice 218 prompt "Maximum Physical Memory" 219 default MAXPHYSMEM_2GB if 32BIT 220 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW 221 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY 222 223 config MAXPHYSMEM_2GB 224 bool "2GiB" 225 config MAXPHYSMEM_128GB 226 depends on 64BIT && CMODEL_MEDANY 227 bool "128GiB" 228endchoice 229 230 231config SMP 232 bool "Symmetric Multi-Processing" 233 help 234 This enables support for systems with more than one CPU. If 235 you say N here, the kernel will run on single and 236 multiprocessor machines, but will use only one CPU of a 237 multiprocessor machine. If you say Y here, the kernel will run 238 on many, but not all, single processor machines. On a single 239 processor machine, the kernel will run faster if you say N 240 here. 241 242 If you don't know what to do here, say N. 243 244config NR_CPUS 245 int "Maximum number of CPUs (2-32)" 246 range 2 32 247 depends on SMP 248 default "8" 249 250choice 251 prompt "CPU Tuning" 252 default TUNE_GENERIC 253 254config TUNE_GENERIC 255 bool "generic" 256 257endchoice 258 259config RISCV_ISA_C 260 bool "Emit compressed instructions when building Linux" 261 default y 262 help 263 Adds "C" to the ISA subsets that the toolchain is allowed to emit 264 when building Linux, which results in compressed instructions in the 265 Linux binary. 266 267 If you don't know what to do here, say Y. 268 269menu "supported PMU type" 270 depends on PERF_EVENTS 271 272config RISCV_BASE_PMU 273 bool "Base Performance Monitoring Unit" 274 def_bool y 275 help 276 A base PMU that serves as a reference implementation and has limited 277 feature of perf. It can run on any RISC-V machines so serves as the 278 fallback, but this option can also be disable to reduce kernel size. 279 280endmenu 281 282config FPU 283 bool "FPU support" 284 default y 285 help 286 Say N here if you want to disable all floating-point related procedure 287 in the kernel. 288 289 If you don't know what to do here, say Y. 290 291endmenu 292 293menu "Kernel features" 294 295source "kernel/Kconfig.hz" 296 297config SECCOMP 298 bool "Enable seccomp to safely compute untrusted bytecode" 299 help 300 This kernel feature is useful for number crunching applications 301 that may need to compute untrusted bytecode during their 302 execution. By using pipes or other transports made available to 303 the process as file descriptors supporting the read/write 304 syscalls, it's possible to isolate those applications in 305 their own address space using seccomp. Once seccomp is 306 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled 307 and the task is only allowed to execute a few safe syscalls 308 defined by each seccomp mode. 309 310endmenu 311 312menu "Boot options" 313 314config CMDLINE 315 string "Built-in kernel command line" 316 help 317 For most platforms, the arguments for the kernel's command line 318 are provided at run-time, during boot. However, there are cases 319 where either no arguments are being provided or the provided 320 arguments are insufficient or even invalid. 321 322 When that occurs, it is possible to define a built-in command 323 line here and choose how the kernel should use it later on. 324 325choice 326 prompt "Built-in command line usage" if CMDLINE != "" 327 default CMDLINE_FALLBACK 328 help 329 Choose how the kernel will handle the provided built-in command 330 line. 331 332config CMDLINE_FALLBACK 333 bool "Use bootloader kernel arguments if available" 334 help 335 Use the built-in command line as fallback in case we get nothing 336 during boot. This is the default behaviour. 337 338config CMDLINE_EXTEND 339 bool "Extend bootloader kernel arguments" 340 help 341 The command-line arguments provided during boot will be 342 appended to the built-in command line. This is useful in 343 cases where the provided arguments are insufficient and 344 you don't want to or cannot modify them. 345 346 347config CMDLINE_FORCE 348 bool "Always use the default kernel command string" 349 help 350 Always use the built-in command line, even if we get one during 351 boot. This is useful in case you need to override the provided 352 command line on systems where you don't have or want control 353 over it. 354 355endchoice 356 357endmenu 358 359menu "Power management options" 360 361source "kernel/power/Kconfig" 362 363endmenu 364