]>
Commit | Line | Data |
---|---|---|
ec8f24b7 | 1 | # SPDX-License-Identifier: GPL-2.0-only |
fbe934d6 PD |
2 | # |
3 | # For a description of the syntax of this configuration file, | |
cd238eff | 4 | # see Documentation/kbuild/kconfig-language.rst. |
fbe934d6 PD |
5 | # |
6 | ||
c3e4ed01 CH |
7 | config 64BIT |
8 | bool | |
9 | ||
10 | config 32BIT | |
11 | bool | |
12 | ||
fbe934d6 PD |
13 | config RISCV |
14 | def_bool y | |
ad5d1122 | 15 | select ARCH_CLOCKSOURCE_INIT |
c24a1967 | 16 | select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION |
5a7ac592 | 17 | select ARCH_ENABLE_SPLIT_PMD_PTLOCK if PGTABLE_LEVELS > 2 |
ad97f9df | 18 | select ARCH_HAS_BINFMT_FLAT |
fdecfea0 | 19 | select ARCH_HAS_CURRENT_STACK_POINTER |
925ac7b6 | 20 | select ARCH_HAS_DEBUG_VM_PGTABLE |
e8c7ef7d | 21 | select ARCH_HAS_DEBUG_VIRTUAL if MMU |
b422d28b | 22 | select ARCH_HAS_DEBUG_WX |
95301414 | 23 | select ARCH_HAS_FORTIFY_SOURCE |
e8c7ef7d PD |
24 | select ARCH_HAS_GCOV_PROFILE_ALL |
25 | select ARCH_HAS_GIGANTIC_PAGE | |
20d38f7c | 26 | select ARCH_HAS_KCOV |
e8c7ef7d | 27 | select ARCH_HAS_MMIOWB |
a49ab905 | 28 | select ARCH_HAS_PMEM_API |
e8c7ef7d | 29 | select ARCH_HAS_PTE_SPECIAL |
10cc3278 MR |
30 | select ARCH_HAS_SET_DIRECT_MAP if MMU |
31 | select ARCH_HAS_SET_MEMORY if MMU | |
44c92257 VW |
32 | select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL |
33 | select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL | |
2f100585 | 34 | select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST |
8341dcfb | 35 | select ARCH_HAS_UBSAN_SANITIZE_ALL |
fc0c769f VC |
36 | select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX |
37 | select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT | |
7f85b04b JZ |
38 | select ARCH_STACKWALK |
39 | select ARCH_SUPPORTS_ATOMIC_RMW | |
40 | select ARCH_SUPPORTS_DEBUG_PAGEALLOC if MMU | |
855f9a8e | 41 | select ARCH_SUPPORTS_HUGETLBFS if MMU |
34c0a5b0 | 42 | select ARCH_SUPPORTS_PAGE_TABLE_CHECK if MMU |
97a03108 | 43 | select ARCH_USE_MEMTEST |
c9c0b0ba | 44 | select ARCH_USE_QUEUED_RWLOCKS |
e8c7ef7d | 45 | select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU |
fbe934d6 | 46 | select ARCH_WANT_FRAME_POINTERS |
07431506 | 47 | select ARCH_WANT_GENERAL_HUGETLB |
e8c7ef7d | 48 | select ARCH_WANT_HUGE_PMD_SHARE if 64BIT |
87f81e66 | 49 | select ARCH_WANTS_THP_SWAP if HAVE_ARCH_TRANSPARENT_HUGEPAGE |
09accc3a | 50 | select BINFMT_FLAT_NO_DATA_START_OFFSET if !MMU |
54fed35f | 51 | select BUILDTIME_TABLE_SORT if MMU |
fbe934d6 | 52 | select CLONE_BACKWARDS |
d5be89a8 | 53 | select CLINT_TIMER if !MMU |
fbe934d6 | 54 | select COMMON_CLK |
f6e64b66 | 55 | select CPU_PM if CPU_IDLE |
e8c7ef7d | 56 | select EDAC_SUPPORT |
fbd92809 | 57 | select GENERIC_ARCH_TOPOLOGY |
e8c7ef7d | 58 | select GENERIC_ATOMIC64 if !64BIT |
2f100585 | 59 | select GENERIC_CLOCKEVENTS_BROADCAST if SMP |
6262f661 | 60 | select GENERIC_EARLY_IOREMAP |
ad5d1122 | 61 | select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO |
bcf11b5e | 62 | select GENERIC_IDLE_POLL_SETUP |
8350229f | 63 | select GENERIC_IOREMAP if MMU |
e8c7ef7d | 64 | select GENERIC_IRQ_MULTI_HANDLER |
fbe934d6 | 65 | select GENERIC_IRQ_SHOW |
ecd4916c | 66 | select GENERIC_IRQ_SHOW_LEVEL |
78ed473c | 67 | select GENERIC_LIB_DEVMEM_IS_ALLOWED |
fbe934d6 | 68 | select GENERIC_PCI_IOMAP |
e8c7ef7d | 69 | select GENERIC_PTDUMP if MMU |
9b9afe4a | 70 | select GENERIC_SCHED_CLOCK |
e8c7ef7d | 71 | select GENERIC_SMP_IDLE_THREAD |
ad5d1122 | 72 | select GENERIC_TIME_VSYSCALL if MMU && 64BIT |
dffe11e2 | 73 | select GENERIC_VDSO_TIME_NS if HAVE_GENERIC_VDSO |
c45fc916 | 74 | select HARDIRQS_SW_RESEND |
efe75c49 | 75 | select HAVE_ARCH_AUDITSYSCALL |
be79afc7 | 76 | select HAVE_ARCH_HUGE_VMALLOC if HAVE_ARCH_HUGE_VMAP |
310f541a | 77 | select HAVE_ARCH_HUGE_VMAP if MMU && 64BIT && !XIP_KERNEL |
42e0e0b4 JZ |
78 | select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL |
79 | select HAVE_ARCH_JUMP_LABEL_RELATIVE if !XIP_KERNEL | |
e8c7ef7d | 80 | select HAVE_ARCH_KASAN if MMU && 64BIT |
e178d670 | 81 | select HAVE_ARCH_KASAN_VMALLOC if MMU && 64BIT |
47513f24 | 82 | select HAVE_ARCH_KFENCE if MMU && 64BIT |
42e0e0b4 | 83 | select HAVE_ARCH_KGDB if !XIP_KERNEL |
e8c7ef7d PD |
84 | select HAVE_ARCH_KGDB_QXFER_PKT |
85 | select HAVE_ARCH_MMAP_RND_BITS if MMU | |
9be84592 | 86 | select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT |
5340627e | 87 | select HAVE_ARCH_SECCOMP_FILTER |
e8c7ef7d | 88 | select HAVE_ARCH_TRACEHOOK |
9b76d71f | 89 | select HAVE_ARCH_TRANSPARENT_HUGEPAGE if 64BIT && MMU |
d062a79b | 90 | select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE |
13e47beb | 91 | select HAVE_ARCH_THREAD_STRUCT_WHITELIST |
31da94c2 | 92 | select HAVE_ARCH_VMAP_STACK if MMU && 64BIT |
2ff2b7ec | 93 | select HAVE_ASM_MODVERSIONS |
24a9c541 | 94 | select HAVE_CONTEXT_TRACKING_USER |
cbb3d91d | 95 | select HAVE_DEBUG_KMEMLEAK |
6bd33e1e | 96 | select HAVE_DMA_CONTIGUOUS if MMU |
e8c7ef7d | 97 | select HAVE_EBPF_JIT if MMU |
ee55ff80 | 98 | select HAVE_FUNCTION_ERROR_INJECTION |
20d38f7c | 99 | select HAVE_GCC_PLUGINS |
ad5d1122 | 100 | select HAVE_GENERIC_VDSO if MMU && 64BIT |
31564b8b | 101 | select HAVE_IRQ_TIME_ACCOUNTING |
42e0e0b4 JZ |
102 | select HAVE_KPROBES if !XIP_KERNEL |
103 | select HAVE_KPROBES_ON_FTRACE if !XIP_KERNEL | |
104 | select HAVE_KRETPROBES if !XIP_KERNEL | |
b57c2f12 | 105 | select HAVE_RETHOOK if !XIP_KERNEL |
3332f419 JZ |
106 | select HAVE_MOVE_PMD |
107 | select HAVE_MOVE_PUD | |
e8c7ef7d | 108 | select HAVE_PCI |
178e9fc4 | 109 | select HAVE_PERF_EVENTS |
98a93b0b MH |
110 | select HAVE_PERF_REGS |
111 | select HAVE_PERF_USER_STACK_DUMP | |
b60ca697 | 112 | select HAVE_POSIX_CPU_TIMERS_TASK_WORK |
dcdc7a53 | 113 | select HAVE_REGS_AND_STACK_ACCESS_API |
70eee556 | 114 | select HAVE_FUNCTION_ARG_ACCESS_API |
f2c9699f | 115 | select HAVE_STACKPROTECTOR |
5aeb1b36 | 116 | select HAVE_SYSCALL_TRACEPOINTS |
93917ad5 | 117 | select HAVE_RSEQ |
fbe934d6 | 118 | select IRQ_DOMAIN |
8165c6ae | 119 | select IRQ_FORCED_THREADING |
fbe934d6 | 120 | select MODULES_USE_ELF_RELA if MODULES |
2cffc956 | 121 | select MODULE_SECTIONS if MODULES |
e8c7ef7d | 122 | select OF |
1631ba12 | 123 | select OF_DMA_DEFAULT_COHERENT |
e8c7ef7d PD |
124 | select OF_EARLY_FLATTREE |
125 | select OF_IRQ | |
2eac9c2d | 126 | select PCI_DOMAINS_GENERIC if PCI |
eb01d42a | 127 | select PCI_MSI if PCI |
e71ee06e | 128 | select RISCV_INTC |
2bc3fc87 | 129 | select RISCV_TIMER if RISCV_SBI |
bf3d7b1d | 130 | select SIFIVE_PLIC |
e8c7ef7d PD |
131 | select SPARSE_IRQ |
132 | select SYSCTL_EXCEPTION_TRACE | |
133 | select THREAD_INFO_IN_TASK | |
4aae683f | 134 | select TRACE_IRQFLAGS_SUPPORT |
11129e8e | 135 | select UACCESS_MEMCPY if !MMU |
63703f37 | 136 | select ZONE_DMA32 if 64BIT |
f32b4b46 JI |
137 | select HAVE_DYNAMIC_FTRACE if !XIP_KERNEL && MMU && $(cc-option,-fpatchable-function-entry=8) |
138 | select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE | |
139 | select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL | |
140 | select HAVE_FUNCTION_GRAPH_TRACER | |
141 | select HAVE_FUNCTION_TRACER if !XIP_KERNEL | |
54c95a11 AG |
142 | |
143 | config ARCH_MMAP_RND_BITS_MIN | |
144 | default 18 if 64BIT | |
145 | default 8 | |
146 | ||
9be84592 GR |
147 | config ARCH_MMAP_RND_COMPAT_BITS_MIN |
148 | default 8 | |
149 | ||
54c95a11 AG |
150 | # max bits determined by the following formula: |
151 | # VA_BITS - PAGE_SHIFT - 3 | |
152 | config ARCH_MMAP_RND_BITS_MAX | |
153 | default 24 if 64BIT # SV39 based | |
154 | default 17 | |
fbe934d6 | 155 | |
9be84592 GR |
156 | config ARCH_MMAP_RND_COMPAT_BITS_MAX |
157 | default 17 | |
158 | ||
a4c3733d CH |
159 | # set if we run in machine mode, cleared if we run in supervisor mode |
160 | config RISCV_M_MODE | |
161 | bool | |
6bd33e1e | 162 | default !MMU |
a4c3733d | 163 | |
eded8bc6 DLM |
164 | # set if we are running in S-mode and can use SBI calls |
165 | config RISCV_SBI | |
166 | bool | |
167 | depends on !RISCV_M_MODE | |
168 | default y | |
169 | ||
fbe934d6 | 170 | config MMU |
6bd33e1e CH |
171 | bool "MMU-based Paged Memory Management Support" |
172 | default y | |
173 | help | |
174 | Select if you want MMU-based virtualised addressing space | |
175 | support by paged memory management. If unsure, say 'Y'. | |
fbe934d6 | 176 | |
fbe934d6 PD |
177 | config PAGE_OFFSET |
178 | hex | |
db1503d3 | 179 | default 0xC0000000 if 32BIT |
6bd33e1e | 180 | default 0x80000000 if 64BIT && !MMU |
011f09d1 | 181 | default 0xff60000000000000 if 64BIT |
fbe934d6 | 182 | |
54c5639d AG |
183 | config KASAN_SHADOW_OFFSET |
184 | hex | |
185 | depends on KASAN_GENERIC | |
f7ae0233 | 186 | default 0xdfffffff00000000 if 64BIT |
54c5639d AG |
187 | default 0xffffffff if 32BIT |
188 | ||
d95f1a54 | 189 | config ARCH_FLATMEM_ENABLE |
4f0e8eef | 190 | def_bool !NUMA |
d95f1a54 LG |
191 | |
192 | config ARCH_SPARSEMEM_ENABLE | |
193 | def_bool y | |
aa273420 | 194 | depends on MMU |
199fc6b8 | 195 | select SPARSEMEM_STATIC if 32BIT && SPARSEMEM |
a5406a7f | 196 | select SPARSEMEM_VMEMMAP_ENABLE if 64BIT |
d95f1a54 LG |
197 | |
198 | config ARCH_SELECT_MEMORY_MODEL | |
199 | def_bool ARCH_SPARSEMEM_ENABLE | |
200 | ||
74784081 GR |
201 | config ARCH_SUPPORTS_UPROBES |
202 | def_bool y | |
203 | ||
fbe934d6 PD |
204 | config STACKTRACE_SUPPORT |
205 | def_bool y | |
206 | ||
fbe934d6 PD |
207 | config GENERIC_BUG |
208 | def_bool y | |
209 | depends on BUG | |
210 | select GENERIC_BUG_RELATIVE_POINTERS if 64BIT | |
211 | ||
212 | config GENERIC_BUG_RELATIVE_POINTERS | |
213 | bool | |
214 | ||
215 | config GENERIC_CALIBRATE_DELAY | |
216 | def_bool y | |
217 | ||
218 | config GENERIC_CSUM | |
219 | def_bool y | |
220 | ||
221 | config GENERIC_HWEIGHT | |
222 | def_bool y | |
223 | ||
f2c17aab | 224 | config FIX_EARLYCON_MEM |
0312a3d4 | 225 | def_bool MMU |
f2c17aab | 226 | |
fbe934d6 PD |
227 | config PGTABLE_LEVELS |
228 | int | |
011f09d1 | 229 | default 5 if 64BIT |
fbe934d6 PD |
230 | default 2 |
231 | ||
3c469798 GR |
232 | config LOCKDEP_SUPPORT |
233 | def_bool y | |
234 | ||
1631ba12 HS |
235 | config RISCV_DMA_NONCOHERENT |
236 | bool | |
237 | select ARCH_HAS_DMA_PREP_COHERENT | |
238 | select ARCH_HAS_SYNC_DMA_FOR_DEVICE | |
239 | select ARCH_HAS_SYNC_DMA_FOR_CPU | |
240 | select ARCH_HAS_SETUP_DMA_OPS | |
241 | select DMA_DIRECT_REMAP | |
242 | ||
5ac43ab2 AJ |
243 | config AS_HAS_INSN |
244 | def_bool $(as-instr,.insn r 51$(comma) 0$(comma) 0$(comma) t0$(comma) t0$(comma) zero) | |
245 | ||
0cbb8a32 | 246 | source "arch/riscv/Kconfig.socs" |
6f4eea90 | 247 | source "arch/riscv/Kconfig.erratas" |
0cbb8a32 | 248 | |
fbe934d6 PD |
249 | menu "Platform type" |
250 | ||
44c1e84a PD |
251 | config NONPORTABLE |
252 | bool "Allow configurations that result in non-portable kernels" | |
253 | help | |
254 | RISC-V kernel binaries are compatible between all known systems | |
255 | whenever possible, but there are some use cases that can only be | |
256 | satisfied by configurations that result in kernel binaries that are | |
257 | not portable between systems. | |
258 | ||
259 | Selecting N does not guarantee kernels will be portable to all known | |
260 | systems. Selecting any of the options guarded by NONPORTABLE will | |
261 | result in kernel binaries that are unlikely to be portable between | |
262 | systems. | |
263 | ||
264 | If unsure, say N. | |
265 | ||
fbe934d6 PD |
266 | choice |
267 | prompt "Base ISA" | |
268 | default ARCH_RV64I | |
269 | help | |
86cca81a | 270 | This selects the base ISA that this kernel will target and must match |
fbe934d6 PD |
271 | the target platform. |
272 | ||
273 | config ARCH_RV32I | |
274 | bool "RV32I" | |
44c1e84a | 275 | depends on NONPORTABLE |
fbe934d6 | 276 | select 32BIT |
e3d59805 MR |
277 | select GENERIC_LIB_ASHLDI3 |
278 | select GENERIC_LIB_ASHRDI3 | |
279 | select GENERIC_LIB_LSHRDI3 | |
8f79125d | 280 | select GENERIC_LIB_UCMPDI2 |
6bd33e1e | 281 | select MMU |
fbe934d6 PD |
282 | |
283 | config ARCH_RV64I | |
284 | bool "RV64I" | |
fbe934d6 | 285 | select 64BIT |
d2075895 | 286 | select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 |
6bd33e1e | 287 | select SWIOTLB if MMU |
fbe934d6 PD |
288 | |
289 | endchoice | |
290 | ||
291 | # We must be able to map all physical memory into the kernel, but the compiler | |
292 | # is still a bit more efficient when generating code if it's setup in a manner | |
293 | # such that it can only map 2GiB of memory. | |
294 | choice | |
295 | prompt "Kernel Code Model" | |
296 | default CMODEL_MEDLOW if 32BIT | |
297 | default CMODEL_MEDANY if 64BIT | |
298 | ||
299 | config CMODEL_MEDLOW | |
300 | bool "medium low code model" | |
301 | config CMODEL_MEDANY | |
302 | bool "medium any code model" | |
303 | endchoice | |
304 | ||
ab1ef68e ZL |
305 | config MODULE_SECTIONS |
306 | bool | |
307 | select HAVE_MOD_ARCH_SPECIFIC | |
308 | ||
fbe934d6 PD |
309 | config SMP |
310 | bool "Symmetric Multi-Processing" | |
311 | help | |
312 | This enables support for systems with more than one CPU. If | |
313 | you say N here, the kernel will run on single and | |
314 | multiprocessor machines, but will use only one CPU of a | |
315 | multiprocessor machine. If you say Y here, the kernel will run | |
316 | on many, but not all, single processor machines. On a single | |
317 | processor machine, the kernel will run faster if you say N | |
318 | here. | |
319 | ||
320 | If you don't know what to do here, say N. | |
321 | ||
322 | config NR_CPUS | |
e623715f | 323 | int "Maximum number of CPUs (2-512)" |
fbe934d6 | 324 | depends on SMP |
1d6b5ed4 SH |
325 | range 2 512 if !RISCV_SBI_V01 |
326 | range 2 32 if RISCV_SBI_V01 && 32BIT | |
327 | range 2 64 if RISCV_SBI_V01 && 64BIT | |
e623715f AP |
328 | default "32" if 32BIT |
329 | default "64" if 64BIT | |
fbe934d6 | 330 | |
f1e58583 AP |
331 | config HOTPLUG_CPU |
332 | bool "Support for hot-pluggable CPUs" | |
333 | depends on SMP | |
334 | select GENERIC_IRQ_MIGRATION | |
335 | help | |
336 | ||
337 | Say Y here to experiment with turning CPUs off and on. CPUs | |
338 | can be controlled through /sys/devices/system/cpu. | |
339 | ||
340 | Say N if you want to disable CPU hotplug. | |
341 | ||
fbe934d6 PD |
342 | choice |
343 | prompt "CPU Tuning" | |
344 | default TUNE_GENERIC | |
345 | ||
346 | config TUNE_GENERIC | |
347 | bool "generic" | |
348 | ||
349 | endchoice | |
350 | ||
4f0e8eef AP |
351 | # Common NUMA Features |
352 | config NUMA | |
353 | bool "NUMA Memory Allocation and Scheduler Support" | |
1adbc294 | 354 | depends on SMP && MMU |
4f0e8eef AP |
355 | select GENERIC_ARCH_NUMA |
356 | select OF_NUMA | |
357 | select ARCH_SUPPORTS_NUMA_BALANCING | |
7ecd19cf KW |
358 | select USE_PERCPU_NUMA_NODE_ID |
359 | select NEED_PER_CPU_EMBED_FIRST_CHUNK | |
4f0e8eef AP |
360 | help |
361 | Enable NUMA (Non-Uniform Memory Access) support. | |
362 | ||
363 | The kernel will try to allocate memory used by a CPU on the | |
364 | local memory of the CPU and add some more NUMA awareness to the kernel. | |
365 | ||
366 | config NODES_SHIFT | |
367 | int "Maximum NUMA Nodes (as a power of 2)" | |
368 | range 1 10 | |
369 | default "2" | |
a9ee6cf5 | 370 | depends on NUMA |
4f0e8eef AP |
371 | help |
372 | Specify the maximum number of NUMA Nodes available on the target | |
373 | system. Increases memory reserved to accommodate various tables. | |
374 | ||
e64f737a HS |
375 | config RISCV_ALTERNATIVE |
376 | bool | |
377 | depends on !XIP_KERNEL | |
378 | help | |
379 | This Kconfig allows the kernel to automatically patch the | |
380 | errata required by the execution platform at run time. The | |
381 | code patching is performed once in the boot stages. It means | |
382 | that the overhead from this mechanism is just taken once. | |
383 | ||
a35707c3 HS |
384 | config RISCV_ALTERNATIVE_EARLY |
385 | bool | |
386 | depends on RISCV_ALTERNATIVE | |
387 | help | |
388 | Allows early patching of the kernel for special errata | |
389 | ||
fbe934d6 PD |
390 | config RISCV_ISA_C |
391 | bool "Emit compressed instructions when building Linux" | |
392 | default y | |
393 | help | |
2f66a3d0 JH |
394 | Adds "C" to the ISA subsets that the toolchain is allowed to emit |
395 | when building Linux, which results in compressed instructions in the | |
396 | Linux binary. | |
fbe934d6 | 397 | |
2f66a3d0 | 398 | If you don't know what to do here, say Y. |
fbe934d6 | 399 | |
ff689fd2 HS |
400 | config RISCV_ISA_SVPBMT |
401 | bool "SVPBMT extension support" | |
402 | depends on 64BIT && MMU | |
225e47ea | 403 | depends on !XIP_KERNEL |
ff689fd2 HS |
404 | select RISCV_ALTERNATIVE |
405 | default y | |
406 | help | |
924cbb8c HS |
407 | Adds support to dynamically detect the presence of the SVPBMT |
408 | ISA-extension (Supervisor-mode: page-based memory types) and | |
409 | enable its usage. | |
410 | ||
411 | The memory type for a page contains a combination of attributes | |
412 | that indicate the cacheability, idempotency, and ordering | |
413 | properties for access to that page. | |
ff689fd2 HS |
414 | |
415 | The SVPBMT extension is only available on 64Bit cpus. | |
416 | ||
417 | If you don't know what to do here, say Y. | |
418 | ||
b8c86872 | 419 | config TOOLCHAIN_HAS_ZICBOM |
1631ba12 | 420 | bool |
b8c86872 CD |
421 | default y |
422 | depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zicbom) | |
423 | depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zicbom) | |
424 | depends on LLD_VERSION >= 150000 || LD_VERSION >= 23800 | |
1631ba12 HS |
425 | |
426 | config RISCV_ISA_ZICBOM | |
427 | bool "Zicbom extension support for non-coherent DMA operation" | |
b8c86872 | 428 | depends on TOOLCHAIN_HAS_ZICBOM |
3aefb2ee | 429 | depends on !XIP_KERNEL && MMU |
1631ba12 HS |
430 | select RISCV_DMA_NONCOHERENT |
431 | select RISCV_ALTERNATIVE | |
432 | default y | |
433 | help | |
434 | Adds support to dynamically detect the presence of the ZICBOM | |
435 | extension (Cache Block Management Operations) and enable its | |
436 | usage. | |
437 | ||
438 | The Zicbom extension can be used to handle for example | |
439 | non-coherent DMA support on devices that need it. | |
440 | ||
441 | If you don't know what to do here, say Y. | |
442 | ||
aae538cd CD |
443 | config TOOLCHAIN_HAS_ZIHINTPAUSE |
444 | bool | |
445 | default y | |
446 | depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zihintpause) | |
447 | depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zihintpause) | |
448 | depends on LLD_VERSION >= 150000 || LD_VERSION >= 23600 | |
449 | ||
9671f706 AK |
450 | config FPU |
451 | bool "FPU support" | |
452 | default y | |
453 | help | |
454 | Say N here if you want to disable all floating-point related procedure | |
455 | in the kernel. | |
456 | ||
457 | If you don't know what to do here, say Y. | |
458 | ||
2f66a3d0 | 459 | endmenu # "Platform type" |
fbe934d6 | 460 | |
aef53f97 | 461 | menu "Kernel features" |
fbe934d6 | 462 | |
fbe934d6 PD |
463 | source "kernel/Kconfig.hz" |
464 | ||
efca1398 AP |
465 | config RISCV_SBI_V01 |
466 | bool "SBI v0.1 support" | |
efca1398 AP |
467 | depends on RISCV_SBI |
468 | help | |
469 | This config allows kernel to use SBI v0.1 APIs. This will be | |
470 | deprecated in future once legacy M-mode software are no longer in use. | |
fba8a867 | 471 | |
2ffc48fc AP |
472 | config RISCV_BOOT_SPINWAIT |
473 | bool "Spinwait booting method" | |
474 | depends on SMP | |
77d707a3 | 475 | default y if RISCV_SBI_V01 || RISCV_M_MODE |
2ffc48fc AP |
476 | help |
477 | This enables support for booting Linux via spinwait method. In the | |
478 | spinwait method, all cores randomly jump to Linux. One of the cores | |
479 | gets chosen via lottery and all other keep spinning on a percpu | |
480 | variable. This method cannot support CPU hotplug and sparse hartid | |
481 | scheme. It should be only enabled for M-mode Linux or platforms relying | |
482 | on older firmware without SBI HSM extension. All other platforms should | |
483 | rely on ordered booting via SBI HSM extension which gets chosen | |
484 | dynamically at runtime if the firmware supports it. | |
485 | ||
77d707a3 PD |
486 | Since spinwait is incompatible with sparse hart IDs, it requires |
487 | NR_CPUS be large enough to contain the physical hart ID of the first | |
488 | hart to enter Linux. | |
489 | ||
490 | If unsure what to do here, say N. | |
491 | ||
fba8a867 NK |
492 | config KEXEC |
493 | bool "Kexec system call" | |
494 | select KEXEC_CORE | |
495 | select HOTPLUG_CPU if SMP | |
496 | depends on MMU | |
497 | help | |
498 | kexec is a system call that implements the ability to shutdown your | |
499 | current kernel, and to start another kernel. It is like a reboot | |
500 | but it is independent of the system firmware. And like a reboot | |
501 | you can start any kernel with it, not just Linux. | |
502 | ||
503 | The name comes from the similarity to the exec system call. | |
504 | ||
6261586e LC |
505 | config KEXEC_FILE |
506 | bool "kexec file based systmem call" | |
507 | select KEXEC_CORE | |
508 | select KEXEC_ELF | |
509 | select HAVE_IMA_KEXEC if IMA | |
c528ef08 | 510 | depends on 64BIT && MMU |
6261586e LC |
511 | help |
512 | This is new version of kexec system call. This system call is | |
513 | file based and takes file descriptors as system call argument | |
514 | for kernel and initramfs as opposed to list of segments as | |
515 | accepted by previous system call. | |
516 | ||
517 | If you don't know what to do here, say Y. | |
518 | ||
736e30af LZ |
519 | config ARCH_HAS_KEXEC_PURGATORY |
520 | def_bool KEXEC_FILE | |
736e30af LZ |
521 | depends on CRYPTO=y |
522 | depends on CRYPTO_SHA256=y | |
523 | ||
56409750 NK |
524 | config CRASH_DUMP |
525 | bool "Build kdump crash kernel" | |
526 | help | |
527 | Generate crash dump after being started by kexec. This should | |
528 | be normally only set in special crash dump kernels which are | |
529 | loaded in the main kernel with kexec-tools into a specially | |
530 | reserved region and then later executed after a crash by | |
531 | kdump/kexec. | |
532 | ||
533 | For more details see Documentation/admin-guide/kdump/kdump.rst | |
fba8a867 | 534 | |
9be84592 GR |
535 | config COMPAT |
536 | bool "Kernel support for 32-bit U-mode" | |
537 | default 64BIT | |
538 | depends on 64BIT && MMU | |
539 | help | |
540 | This option enables support for a 32-bit U-mode running under a 64-bit | |
541 | kernel at S-mode. riscv32-specific components such as system calls, | |
542 | the user helper functions (vdso), signal rt_frame functions and the | |
543 | ptrace interface are handled appropriately by the kernel. | |
544 | ||
545 | If you want to execute 32-bit userspace applications, say Y. | |
546 | ||
2f66a3d0 | 547 | endmenu # "Kernel features" |
fbe934d6 | 548 | |
aef53f97 NK |
549 | menu "Boot options" |
550 | ||
3aed8c43 NK |
551 | config CMDLINE |
552 | string "Built-in kernel command line" | |
aef53f97 | 553 | help |
3aed8c43 NK |
554 | For most platforms, the arguments for the kernel's command line |
555 | are provided at run-time, during boot. However, there are cases | |
556 | where either no arguments are being provided or the provided | |
557 | arguments are insufficient or even invalid. | |
aef53f97 | 558 | |
3aed8c43 NK |
559 | When that occurs, it is possible to define a built-in command |
560 | line here and choose how the kernel should use it later on. | |
aef53f97 | 561 | |
3aed8c43 NK |
562 | choice |
563 | prompt "Built-in command line usage" if CMDLINE != "" | |
564 | default CMDLINE_FALLBACK | |
565 | help | |
566 | Choose how the kernel will handle the provided built-in command | |
567 | line. | |
aef53f97 | 568 | |
3aed8c43 NK |
569 | config CMDLINE_FALLBACK |
570 | bool "Use bootloader kernel arguments if available" | |
aef53f97 | 571 | help |
3aed8c43 NK |
572 | Use the built-in command line as fallback in case we get nothing |
573 | during boot. This is the default behaviour. | |
574 | ||
575 | config CMDLINE_EXTEND | |
576 | bool "Extend bootloader kernel arguments" | |
577 | help | |
578 | The command-line arguments provided during boot will be | |
579 | appended to the built-in command line. This is useful in | |
580 | cases where the provided arguments are insufficient and | |
581 | you don't want to or cannot modify them. | |
582 | ||
aef53f97 | 583 | config CMDLINE_FORCE |
3aed8c43 | 584 | bool "Always use the default kernel command string" |
aef53f97 | 585 | help |
3aed8c43 NK |
586 | Always use the built-in command line, even if we get one during |
587 | boot. This is useful in case you need to override the provided | |
588 | command line on systems where you don't have or want control | |
589 | over it. | |
aef53f97 | 590 | |
3aed8c43 | 591 | endchoice |
aef53f97 | 592 | |
d7071743 AP |
593 | config EFI_STUB |
594 | bool | |
595 | ||
596 | config EFI | |
597 | bool "UEFI runtime support" | |
44c92257 | 598 | depends on OF && !XIP_KERNEL |
d7071743 AP |
599 | select LIBFDT |
600 | select UCS2_STRING | |
601 | select EFI_PARAMS_FROM_FDT | |
602 | select EFI_STUB | |
603 | select EFI_GENERIC_STUB | |
b91540d5 | 604 | select EFI_RUNTIME_WRAPPERS |
d7071743 | 605 | select RISCV_ISA_C |
b91540d5 | 606 | depends on MMU |
d7071743 AP |
607 | default y |
608 | help | |
609 | This option provides support for runtime services provided | |
610 | by UEFI firmware (such as non-volatile variables, realtime | |
611 | clock, and platform reset). A UEFI stub is also provided to | |
612 | allow the kernel to be booted as an EFI application. This | |
613 | is only useful on systems that have UEFI firmware. | |
614 | ||
fea2fed2 GR |
615 | config CC_HAVE_STACKPROTECTOR_TLS |
616 | def_bool $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=tp -mstack-protector-guard-offset=0) | |
617 | ||
618 | config STACKPROTECTOR_PER_TASK | |
619 | def_bool y | |
595b893e | 620 | depends on !RANDSTRUCT |
fea2fed2 GR |
621 | depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_TLS |
622 | ||
867432be AG |
623 | config PHYS_RAM_BASE_FIXED |
624 | bool "Explicitly specified physical RAM address" | |
44c1e84a | 625 | depends on NONPORTABLE |
867432be AG |
626 | default n |
627 | ||
44c92257 VW |
628 | config PHYS_RAM_BASE |
629 | hex "Platform Physical RAM address" | |
867432be | 630 | depends on PHYS_RAM_BASE_FIXED |
44c92257 VW |
631 | default "0x80000000" |
632 | help | |
633 | This is the physical address of RAM in the system. It has to be | |
634 | explicitly specified to run early relocations of read-write data | |
635 | from flash to RAM. | |
636 | ||
637 | config XIP_KERNEL | |
638 | bool "Kernel Execute-In-Place from ROM" | |
44c1e84a | 639 | depends on MMU && SPARSEMEM && NONPORTABLE |
44c92257 VW |
640 | # This prevents XIP from being enabled by all{yes,mod}config, which |
641 | # fail to build since XIP doesn't support large kernels. | |
642 | depends on !COMPILE_TEST | |
867432be | 643 | select PHYS_RAM_BASE_FIXED |
44c92257 VW |
644 | help |
645 | Execute-In-Place allows the kernel to run from non-volatile storage | |
646 | directly addressable by the CPU, such as NOR flash. This saves RAM | |
647 | space since the text section of the kernel is not loaded from flash | |
648 | to RAM. Read-write sections, such as the data section and stack, | |
649 | are still copied to RAM. The XIP kernel is not compressed since | |
650 | it has to run directly from flash, so it will take more space to | |
651 | store it. The flash address used to link the kernel object files, | |
652 | and for storing it, is configuration dependent. Therefore, if you | |
653 | say Y here, you must know the proper physical address where to | |
654 | store the kernel image depending on your own flash memory usage. | |
655 | ||
656 | Also note that the make target becomes "make xipImage" rather than | |
657 | "make zImage" or "make Image". The final kernel binary to put in | |
658 | ROM memory will be arch/riscv/boot/xipImage. | |
659 | ||
660 | SPARSEMEM is required because the kernel text and rodata that are | |
661 | flash resident are not backed by memmap, then any attempt to get | |
662 | a struct page on those regions will trigger a fault. | |
663 | ||
664 | If unsure, say N. | |
665 | ||
666 | config XIP_PHYS_ADDR | |
667 | hex "XIP Kernel Physical Location" | |
668 | depends on XIP_KERNEL | |
669 | default "0x21000000" | |
670 | help | |
671 | This is the physical address in your flash memory the kernel will | |
672 | be linked for and stored to. This address is dependent on your | |
673 | own flash usage. | |
674 | ||
2f66a3d0 | 675 | endmenu # "Boot options" |
aef53f97 | 676 | |
2d268251 | 677 | config BUILTIN_DTB |
44c92257 | 678 | bool |
44c1e84a | 679 | depends on OF && NONPORTABLE |
44c92257 | 680 | default y if XIP_KERNEL |
2d268251 | 681 | |
44c1e84a PD |
682 | config PORTABLE |
683 | bool | |
684 | default !NONPORTABLE | |
685 | select EFI | |
686 | select OF | |
687 | select MMU | |
688 | ||
fbe934d6 PD |
689 | menu "Power management options" |
690 | ||
8636a1f9 | 691 | source "kernel/power/Kconfig" |
fbe934d6 | 692 | |
2f66a3d0 | 693 | endmenu # "Power management options" |
d7071743 | 694 | |
f6e64b66 AP |
695 | menu "CPU Power Management" |
696 | ||
697 | source "drivers/cpuidle/Kconfig" | |
698 | ||
effae0e3 LP |
699 | source "drivers/cpufreq/Kconfig" |
700 | ||
2f66a3d0 | 701 | endmenu # "CPU Power Management" |
f6e64b66 | 702 | |
99cdc6c1 | 703 | source "arch/riscv/kvm/Kconfig" |