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