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