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