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