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 30 select GENERIC_STRNLEN_USER 31 select GENERIC_SMP_IDLE_THREAD 32 select GENERIC_ATOMIC64 if !64BIT 33 select HAVE_ARCH_AUDITSYSCALL 34 select HAVE_ASM_MODVERSIONS 35 select HAVE_MEMBLOCK_NODE_MAP 36 select HAVE_DMA_CONTIGUOUS 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 GENERIC_IRQ_MULTI_HANDLER 54 select GENERIC_ARCH_TOPOLOGY if SMP 55 select ARCH_HAS_PTE_SPECIAL 56 select ARCH_HAS_MMIOWB 57 select HAVE_EBPF_JIT if 64BIT 58 select EDAC_SUPPORT 59 select ARCH_HAS_GIGANTIC_PAGE 60 select ARCH_WANT_HUGE_PMD_SHARE if 64BIT 61 select SPARSEMEM_STATIC if 32BIT 62 63config MMU 64 def_bool y 65 66config ZONE_DMA32 67 bool 68 default y if 64BIT 69 70config VA_BITS 71 int 72 default 32 if 32BIT 73 default 39 if 64BIT 74 75config PA_BITS 76 int 77 default 34 if 32BIT 78 default 56 if 64BIT 79 80config PAGE_OFFSET 81 hex 82 default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB 83 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB 84 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB 85 86config ARCH_FLATMEM_ENABLE 87 def_bool y 88 89config ARCH_SPARSEMEM_ENABLE 90 def_bool y 91 select SPARSEMEM_VMEMMAP_ENABLE 92 93config ARCH_SELECT_MEMORY_MODEL 94 def_bool ARCH_SPARSEMEM_ENABLE 95 96config ARCH_WANT_GENERAL_HUGETLB 97 def_bool y 98 99config SYS_SUPPORTS_HUGETLBFS 100 def_bool y 101 102config STACKTRACE_SUPPORT 103 def_bool y 104 105config TRACE_IRQFLAGS_SUPPORT 106 def_bool y 107 108config GENERIC_BUG 109 def_bool y 110 depends on BUG 111 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT 112 113config GENERIC_BUG_RELATIVE_POINTERS 114 bool 115 116config GENERIC_CALIBRATE_DELAY 117 def_bool y 118 119config GENERIC_CSUM 120 def_bool y 121 122config GENERIC_HWEIGHT 123 def_bool y 124 125config FIX_EARLYCON_MEM 126 def_bool y 127 128config PGTABLE_LEVELS 129 int 130 default 3 if 64BIT 131 default 2 132 133source "arch/riscv/Kconfig.socs" 134 135menu "Platform type" 136 137choice 138 prompt "Base ISA" 139 default ARCH_RV64I 140 help 141 This selects the base ISA that this kernel will target and must match 142 the target platform. 143 144config ARCH_RV32I 145 bool "RV32I" 146 select 32BIT 147 select GENERIC_LIB_ASHLDI3 148 select GENERIC_LIB_ASHRDI3 149 select GENERIC_LIB_LSHRDI3 150 select GENERIC_LIB_UCMPDI2 151 152config ARCH_RV64I 153 bool "RV64I" 154 select 64BIT 155 select ARCH_SUPPORTS_INT128 if GCC_VERSION >= 50000 156 select HAVE_FUNCTION_TRACER 157 select HAVE_FUNCTION_GRAPH_TRACER 158 select HAVE_FTRACE_MCOUNT_RECORD 159 select HAVE_DYNAMIC_FTRACE 160 select HAVE_DYNAMIC_FTRACE_WITH_REGS 161 select SWIOTLB 162 163endchoice 164 165# We must be able to map all physical memory into the kernel, but the compiler 166# is still a bit more efficient when generating code if it's setup in a manner 167# such that it can only map 2GiB of memory. 168choice 169 prompt "Kernel Code Model" 170 default CMODEL_MEDLOW if 32BIT 171 default CMODEL_MEDANY if 64BIT 172 173 config CMODEL_MEDLOW 174 bool "medium low code model" 175 config CMODEL_MEDANY 176 bool "medium any code model" 177endchoice 178 179config MODULE_SECTIONS 180 bool 181 select HAVE_MOD_ARCH_SPECIFIC 182 183choice 184 prompt "Maximum Physical Memory" 185 default MAXPHYSMEM_2GB if 32BIT 186 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW 187 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY 188 189 config MAXPHYSMEM_2GB 190 bool "2GiB" 191 config MAXPHYSMEM_128GB 192 depends on 64BIT && CMODEL_MEDANY 193 bool "128GiB" 194endchoice 195 196 197config SMP 198 bool "Symmetric Multi-Processing" 199 help 200 This enables support for systems with more than one CPU. If 201 you say N here, the kernel will run on single and 202 multiprocessor machines, but will use only one CPU of a 203 multiprocessor machine. If you say Y here, the kernel will run 204 on many, but not all, single processor machines. On a single 205 processor machine, the kernel will run faster if you say N 206 here. 207 208 If you don't know what to do here, say N. 209 210config NR_CPUS 211 int "Maximum number of CPUs (2-32)" 212 range 2 32 213 depends on SMP 214 default "8" 215 216choice 217 prompt "CPU Tuning" 218 default TUNE_GENERIC 219 220config TUNE_GENERIC 221 bool "generic" 222 223endchoice 224 225config RISCV_ISA_C 226 bool "Emit compressed instructions when building Linux" 227 default y 228 help 229 Adds "C" to the ISA subsets that the toolchain is allowed to emit 230 when building Linux, which results in compressed instructions in the 231 Linux binary. 232 233 If you don't know what to do here, say Y. 234 235menu "supported PMU type" 236 depends on PERF_EVENTS 237 238config RISCV_BASE_PMU 239 bool "Base Performance Monitoring Unit" 240 def_bool y 241 help 242 A base PMU that serves as a reference implementation and has limited 243 feature of perf. It can run on any RISC-V machines so serves as the 244 fallback, but this option can also be disable to reduce kernel size. 245 246endmenu 247 248config FPU 249 bool "FPU support" 250 default y 251 help 252 Say N here if you want to disable all floating-point related procedure 253 in the kernel. 254 255 If you don't know what to do here, say Y. 256 257endmenu 258 259menu "Kernel features" 260 261source "kernel/Kconfig.hz" 262 263endmenu 264 265menu "Boot options" 266 267config CMDLINE 268 string "Built-in kernel command line" 269 help 270 For most platforms, the arguments for the kernel's command line 271 are provided at run-time, during boot. However, there are cases 272 where either no arguments are being provided or the provided 273 arguments are insufficient or even invalid. 274 275 When that occurs, it is possible to define a built-in command 276 line here and choose how the kernel should use it later on. 277 278choice 279 prompt "Built-in command line usage" if CMDLINE != "" 280 default CMDLINE_FALLBACK 281 help 282 Choose how the kernel will handle the provided built-in command 283 line. 284 285config CMDLINE_FALLBACK 286 bool "Use bootloader kernel arguments if available" 287 help 288 Use the built-in command line as fallback in case we get nothing 289 during boot. This is the default behaviour. 290 291config CMDLINE_EXTEND 292 bool "Extend bootloader kernel arguments" 293 help 294 The command-line arguments provided during boot will be 295 appended to the built-in command line. This is useful in 296 cases where the provided arguments are insufficient and 297 you don't want to or cannot modify them. 298 299 300config CMDLINE_FORCE 301 bool "Always use the default kernel command string" 302 help 303 Always use the built-in command line, even if we get one during 304 boot. This is useful in case you need to override the provided 305 command line on systems where you don't have or want control 306 over it. 307 308endchoice 309 310endmenu 311 312menu "Power management options" 313 314source "kernel/power/Kconfig" 315 316endmenu 317