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 | |
a91a9ffb S |
15 | select ACPI_GENERIC_GSI if ACPI |
16 | select ACPI_REDUCED_HARDWARE_ONLY if ACPI | |
c00a60d6 | 17 | select ARCH_DMA_DEFAULT_COHERENT |
c24a1967 | 18 | select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION |
5a7ac592 | 19 | select ARCH_ENABLE_SPLIT_PMD_PTLOCK if PGTABLE_LEVELS > 2 |
5f365c13 | 20 | select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE |
ad97f9df | 21 | select ARCH_HAS_BINFMT_FLAT |
fdecfea0 | 22 | select ARCH_HAS_CURRENT_STACK_POINTER |
e8c7ef7d | 23 | select ARCH_HAS_DEBUG_VIRTUAL if MMU |
5f365c13 | 24 | select ARCH_HAS_DEBUG_VM_PGTABLE |
b422d28b | 25 | select ARCH_HAS_DEBUG_WX |
95301414 | 26 | select ARCH_HAS_FORTIFY_SOURCE |
e8c7ef7d PD |
27 | select ARCH_HAS_GCOV_PROFILE_ALL |
28 | select ARCH_HAS_GIGANTIC_PAGE | |
20d38f7c | 29 | select ARCH_HAS_KCOV |
e8c7ef7d | 30 | select ARCH_HAS_MMIOWB |
99a670b2 | 31 | select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE |
a49ab905 | 32 | select ARCH_HAS_PMEM_API |
e8c7ef7d | 33 | select ARCH_HAS_PTE_SPECIAL |
10cc3278 MR |
34 | select ARCH_HAS_SET_DIRECT_MAP if MMU |
35 | select ARCH_HAS_SET_MEMORY if MMU | |
44c92257 VW |
36 | select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL |
37 | select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL | |
08d0ce30 | 38 | select ARCH_HAS_SYSCALL_WRAPPER |
2f100585 | 39 | select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST |
8341dcfb | 40 | select ARCH_HAS_UBSAN_SANITIZE_ALL |
aa5af0aa | 41 | select ARCH_HAS_VDSO_DATA |
e8065df5 | 42 | select ARCH_KEEP_MEMBLOCK if ACPI |
fc0c769f VC |
43 | select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX |
44 | select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT | |
7f85b04b JZ |
45 | select ARCH_STACKWALK |
46 | select ARCH_SUPPORTS_ATOMIC_RMW | |
74f8fc31 | 47 | select ARCH_SUPPORTS_CFI_CLANG |
7f85b04b | 48 | select ARCH_SUPPORTS_DEBUG_PAGEALLOC if MMU |
855f9a8e | 49 | select ARCH_SUPPORTS_HUGETLBFS if MMU |
34c0a5b0 | 50 | select ARCH_SUPPORTS_PAGE_TABLE_CHECK if MMU |
648321fa | 51 | select ARCH_SUPPORTS_PER_VMA_LOCK if MMU |
d1584d79 | 52 | select ARCH_SUPPORTS_SHADOW_CALL_STACK if HAVE_SHADOW_CALL_STACK |
97a03108 | 53 | select ARCH_USE_MEMTEST |
c9c0b0ba | 54 | select ARCH_USE_QUEUED_RWLOCKS |
af0ead42 | 55 | select ARCH_USES_CFI_TRAPS if CFI_CLANG |
54d7431a | 56 | select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH if SMP && MMU |
e8c7ef7d | 57 | select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU |
fbe934d6 | 58 | select ARCH_WANT_FRAME_POINTERS |
82a1a1f3 | 59 | select ARCH_WANT_GENERAL_HUGETLB if !RISCV_ISA_SVNAPOT |
e8c7ef7d | 60 | select ARCH_WANT_HUGE_PMD_SHARE if 64BIT |
f4b71bff | 61 | select ARCH_WANT_LD_ORPHAN_WARN if !XIP_KERNEL |
0b6f1582 | 62 | select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP |
cfbc4f81 | 63 | select ARCH_WANTS_NO_INSTR |
87f81e66 | 64 | select ARCH_WANTS_THP_SWAP if HAVE_ARCH_TRANSPARENT_HUGEPAGE |
09accc3a | 65 | select BINFMT_FLAT_NO_DATA_START_OFFSET if !MMU |
54fed35f | 66 | select BUILDTIME_TABLE_SORT if MMU |
d5be89a8 | 67 | select CLINT_TIMER if !MMU |
5f365c13 | 68 | select CLONE_BACKWARDS |
fbe934d6 | 69 | select COMMON_CLK |
4dc4af9c | 70 | select CPU_PM if CPU_IDLE || HIBERNATION || SUSPEND |
e8c7ef7d | 71 | select EDAC_SUPPORT |
9f944d2e | 72 | select FRAME_POINTER if PERF_EVENTS || (FUNCTION_TRACER && !DYNAMIC_FTRACE) |
b546d636 | 73 | select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY if DYNAMIC_FTRACE |
fbd92809 | 74 | select GENERIC_ARCH_TOPOLOGY |
e8c7ef7d | 75 | select GENERIC_ATOMIC64 if !64BIT |
2f100585 | 76 | select GENERIC_CLOCKEVENTS_BROADCAST if SMP |
96cf2036 | 77 | select GENERIC_CPU_DEVICES |
6262f661 | 78 | select GENERIC_EARLY_IOREMAP |
f0bddf50 | 79 | select GENERIC_ENTRY |
ad5d1122 | 80 | select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO |
bcf11b5e | 81 | select GENERIC_IDLE_POLL_SETUP |
8350229f | 82 | select GENERIC_IOREMAP if MMU |
832f15f4 AP |
83 | select GENERIC_IRQ_IPI if SMP |
84 | select GENERIC_IRQ_IPI_MUX if SMP | |
e8c7ef7d | 85 | select GENERIC_IRQ_MULTI_HANDLER |
fbe934d6 | 86 | select GENERIC_IRQ_SHOW |
ecd4916c | 87 | select GENERIC_IRQ_SHOW_LEVEL |
78ed473c | 88 | select GENERIC_LIB_DEVMEM_IS_ALLOWED |
fbe934d6 | 89 | select GENERIC_PCI_IOMAP |
e8c7ef7d | 90 | select GENERIC_PTDUMP if MMU |
9b9afe4a | 91 | select GENERIC_SCHED_CLOCK |
e8c7ef7d | 92 | select GENERIC_SMP_IDLE_THREAD |
ad5d1122 | 93 | select GENERIC_TIME_VSYSCALL if MMU && 64BIT |
dffe11e2 | 94 | select GENERIC_VDSO_TIME_NS if HAVE_GENERIC_VDSO |
c45fc916 | 95 | select HARDIRQS_SW_RESEND |
fcbfe812 | 96 | select HAS_IOPORT if MMU |
efe75c49 | 97 | select HAVE_ARCH_AUDITSYSCALL |
be79afc7 | 98 | select HAVE_ARCH_HUGE_VMALLOC if HAVE_ARCH_HUGE_VMAP |
310f541a | 99 | select HAVE_ARCH_HUGE_VMAP if MMU && 64BIT && !XIP_KERNEL |
42e0e0b4 JZ |
100 | select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL |
101 | select HAVE_ARCH_JUMP_LABEL_RELATIVE if !XIP_KERNEL | |
e8c7ef7d | 102 | select HAVE_ARCH_KASAN if MMU && 64BIT |
e178d670 | 103 | select HAVE_ARCH_KASAN_VMALLOC if MMU && 64BIT |
47513f24 | 104 | select HAVE_ARCH_KFENCE if MMU && 64BIT |
42e0e0b4 | 105 | select HAVE_ARCH_KGDB if !XIP_KERNEL |
e8c7ef7d PD |
106 | select HAVE_ARCH_KGDB_QXFER_PKT |
107 | select HAVE_ARCH_MMAP_RND_BITS if MMU | |
9be84592 | 108 | select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT |
5340627e | 109 | select HAVE_ARCH_SECCOMP_FILTER |
5f365c13 | 110 | select HAVE_ARCH_THREAD_STRUCT_WHITELIST |
e8c7ef7d | 111 | select HAVE_ARCH_TRACEHOOK |
9b76d71f | 112 | select HAVE_ARCH_TRANSPARENT_HUGEPAGE if 64BIT && MMU |
a2492ca8 | 113 | select HAVE_ARCH_USERFAULTFD_MINOR if 64BIT && USERFAULTFD |
31da94c2 | 114 | select HAVE_ARCH_VMAP_STACK if MMU && 64BIT |
2ff2b7ec | 115 | select HAVE_ASM_MODVERSIONS |
24a9c541 | 116 | select HAVE_CONTEXT_TRACKING_USER |
cbb3d91d | 117 | select HAVE_DEBUG_KMEMLEAK |
6bd33e1e | 118 | select HAVE_DMA_CONTIGUOUS if MMU |
ab7fa6b0 | 119 | select HAVE_DYNAMIC_FTRACE if !XIP_KERNEL && MMU && (CLANG_SUPPORTS_DYNAMIC_FTRACE || GCC_SUPPORTS_DYNAMIC_FTRACE) |
196c79f1 | 120 | select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS |
ab7fa6b0 JZ |
121 | select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE |
122 | select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL | |
123 | select HAVE_FUNCTION_GRAPH_TRACER | |
4f6b6c2b | 124 | select HAVE_FUNCTION_GRAPH_RETVAL if HAVE_FUNCTION_GRAPH_TRACER |
ab7fa6b0 | 125 | select HAVE_FUNCTION_TRACER if !XIP_KERNEL && !PREEMPTION |
e8c7ef7d | 126 | select HAVE_EBPF_JIT if MMU |
5f365c13 | 127 | select HAVE_FUNCTION_ARG_ACCESS_API |
ee55ff80 | 128 | select HAVE_FUNCTION_ERROR_INJECTION |
20d38f7c | 129 | select HAVE_GCC_PLUGINS |
ad5d1122 | 130 | select HAVE_GENERIC_VDSO if MMU && 64BIT |
31564b8b | 131 | select HAVE_IRQ_TIME_ACCOUNTING |
42e0e0b4 JZ |
132 | select HAVE_KPROBES if !XIP_KERNEL |
133 | select HAVE_KPROBES_ON_FTRACE if !XIP_KERNEL | |
134 | select HAVE_KRETPROBES if !XIP_KERNEL | |
f7584322 ND |
135 | # https://github.com/ClangBuiltLinux/linux/issues/1881 |
136 | select HAVE_LD_DEAD_CODE_DATA_ELIMINATION if !LD_IS_LLD | |
3332f419 JZ |
137 | select HAVE_MOVE_PMD |
138 | select HAVE_MOVE_PUD | |
5394f1e9 | 139 | select HAVE_PAGE_SIZE_4KB |
e8c7ef7d | 140 | select HAVE_PCI |
178e9fc4 | 141 | select HAVE_PERF_EVENTS |
98a93b0b MH |
142 | select HAVE_PERF_REGS |
143 | select HAVE_PERF_USER_STACK_DUMP | |
b60ca697 | 144 | select HAVE_POSIX_CPU_TIMERS_TASK_WORK |
4e90d052 | 145 | select HAVE_PREEMPT_DYNAMIC_KEY if !XIP_KERNEL |
dcdc7a53 | 146 | select HAVE_REGS_AND_STACK_ACCESS_API |
ab7fa6b0 | 147 | select HAVE_RETHOOK if !XIP_KERNEL |
5f365c13 | 148 | select HAVE_RSEQ |
629291dd SS |
149 | select HAVE_SAMPLE_FTRACE_DIRECT |
150 | select HAVE_SAMPLE_FTRACE_DIRECT_MULTI | |
f2c9699f | 151 | select HAVE_STACKPROTECTOR |
5aeb1b36 | 152 | select HAVE_SYSCALL_TRACEPOINTS |
72b11aa7 | 153 | select HOTPLUG_CORE_SYNC_DEAD if HOTPLUG_CPU |
fbe934d6 | 154 | select IRQ_DOMAIN |
8165c6ae | 155 | select IRQ_FORCED_THREADING |
864046c5 | 156 | select KASAN_VMALLOC if KASAN |
7267ef7b | 157 | select LOCK_MM_AND_FIND_VMA |
fbe934d6 | 158 | select MODULES_USE_ELF_RELA if MODULES |
2cffc956 | 159 | select MODULE_SECTIONS if MODULES |
e8c7ef7d PD |
160 | select OF |
161 | select OF_EARLY_FLATTREE | |
162 | select OF_IRQ | |
2eac9c2d | 163 | select PCI_DOMAINS_GENERIC if PCI |
eb01d42a | 164 | select PCI_MSI if PCI |
1ee7fc3f | 165 | select RISCV_ALTERNATIVE if !XIP_KERNEL |
e71ee06e | 166 | select RISCV_INTC |
2bc3fc87 | 167 | select RISCV_TIMER if RISCV_SBI |
bf3d7b1d | 168 | select SIFIVE_PLIC |
e8c7ef7d PD |
169 | select SPARSE_IRQ |
170 | select SYSCTL_EXCEPTION_TRACE | |
171 | select THREAD_INFO_IN_TASK | |
4aae683f | 172 | select TRACE_IRQFLAGS_SUPPORT |
11129e8e | 173 | select UACCESS_MEMCPY if !MMU |
63703f37 | 174 | select ZONE_DMA32 if 64BIT |
54c95a11 | 175 | |
b3d6bdfe NC |
176 | config CLANG_SUPPORTS_DYNAMIC_FTRACE |
177 | def_bool CC_IS_CLANG | |
178 | # https://github.com/llvm/llvm-project/commit/6ab8927931851bb42b2c93a00801dc499d7d9b1e | |
179 | depends on CLANG_VERSION >= 130000 | |
180 | # https://github.com/ClangBuiltLinux/linux/issues/1817 | |
181 | depends on AS_IS_GNU || (AS_IS_LLVM && (LD_IS_LLD || LD_VERSION >= 23600)) | |
182 | ||
183 | config GCC_SUPPORTS_DYNAMIC_FTRACE | |
184 | def_bool CC_IS_GCC | |
185 | depends on $(cc-option,-fpatchable-function-entry=8) | |
186 | ||
d1584d79 ST |
187 | config HAVE_SHADOW_CALL_STACK |
188 | def_bool $(cc-option,-fsanitize=shadow-call-stack) | |
189 | # https://github.com/riscv-non-isa/riscv-elf-psabi-doc/commit/a484e843e6eeb51f0cb7b8819e50da6d2444d769 | |
190 | depends on $(ld-option,--no-relax-gp) | |
191 | ||
55b71d2c NC |
192 | config RISCV_USE_LINKER_RELAXATION |
193 | def_bool y | |
194 | # https://github.com/llvm/llvm-project/commit/6611d58f5bbcbec77262d392e2923e1d680f6985 | |
195 | depends on !LD_IS_LLD || LLD_VERSION >= 150000 | |
196 | ||
ae84ff9a NC |
197 | # https://github.com/llvm/llvm-project/commit/bbc0f99f3bc96f1db16f649fc21dd18e5b0918f6 |
198 | config ARCH_HAS_BROKEN_DWARF5 | |
199 | def_bool y | |
200 | depends on RISCV_USE_LINKER_RELAXATION | |
201 | # https://github.com/llvm/llvm-project/commit/1df5ea29b43690b6622db2cad7b745607ca4de6a | |
202 | depends on AS_IS_LLVM && AS_VERSION < 180000 | |
203 | # https://github.com/llvm/llvm-project/commit/7ffabb61a5569444b5ac9322e22e5471cc5e4a77 | |
204 | depends on LD_IS_LLD && LLD_VERSION < 180000 | |
205 | ||
54c95a11 AG |
206 | config ARCH_MMAP_RND_BITS_MIN |
207 | default 18 if 64BIT | |
208 | default 8 | |
209 | ||
9be84592 GR |
210 | config ARCH_MMAP_RND_COMPAT_BITS_MIN |
211 | default 8 | |
212 | ||
54c95a11 AG |
213 | # max bits determined by the following formula: |
214 | # VA_BITS - PAGE_SHIFT - 3 | |
215 | config ARCH_MMAP_RND_BITS_MAX | |
216 | default 24 if 64BIT # SV39 based | |
217 | default 17 | |
fbe934d6 | 218 | |
9be84592 GR |
219 | config ARCH_MMAP_RND_COMPAT_BITS_MAX |
220 | default 17 | |
221 | ||
a4c3733d CH |
222 | # set if we run in machine mode, cleared if we run in supervisor mode |
223 | config RISCV_M_MODE | |
224 | bool | |
6bd33e1e | 225 | default !MMU |
a4c3733d | 226 | |
eded8bc6 DLM |
227 | # set if we are running in S-mode and can use SBI calls |
228 | config RISCV_SBI | |
229 | bool | |
230 | depends on !RISCV_M_MODE | |
231 | default y | |
232 | ||
fbe934d6 | 233 | config MMU |
6bd33e1e CH |
234 | bool "MMU-based Paged Memory Management Support" |
235 | default y | |
236 | help | |
237 | Select if you want MMU-based virtualised addressing space | |
238 | support by paged memory management. If unsure, say 'Y'. | |
fbe934d6 | 239 | |
fbe934d6 PD |
240 | config PAGE_OFFSET |
241 | hex | |
b5e2c507 YG |
242 | default 0xC0000000 if 32BIT && MMU |
243 | default 0x80000000 if !MMU | |
011f09d1 | 244 | default 0xff60000000000000 if 64BIT |
fbe934d6 | 245 | |
54c5639d AG |
246 | config KASAN_SHADOW_OFFSET |
247 | hex | |
248 | depends on KASAN_GENERIC | |
f7ae0233 | 249 | default 0xdfffffff00000000 if 64BIT |
54c5639d AG |
250 | default 0xffffffff if 32BIT |
251 | ||
d95f1a54 | 252 | config ARCH_FLATMEM_ENABLE |
4f0e8eef | 253 | def_bool !NUMA |
d95f1a54 LG |
254 | |
255 | config ARCH_SPARSEMEM_ENABLE | |
256 | def_bool y | |
aa273420 | 257 | depends on MMU |
199fc6b8 | 258 | select SPARSEMEM_STATIC if 32BIT && SPARSEMEM |
a5406a7f | 259 | select SPARSEMEM_VMEMMAP_ENABLE if 64BIT |
d95f1a54 LG |
260 | |
261 | config ARCH_SELECT_MEMORY_MODEL | |
262 | def_bool ARCH_SPARSEMEM_ENABLE | |
263 | ||
74784081 GR |
264 | config ARCH_SUPPORTS_UPROBES |
265 | def_bool y | |
266 | ||
fbe934d6 PD |
267 | config STACKTRACE_SUPPORT |
268 | def_bool y | |
269 | ||
fbe934d6 PD |
270 | config GENERIC_BUG |
271 | def_bool y | |
272 | depends on BUG | |
273 | select GENERIC_BUG_RELATIVE_POINTERS if 64BIT | |
274 | ||
275 | config GENERIC_BUG_RELATIVE_POINTERS | |
276 | bool | |
277 | ||
278 | config GENERIC_CALIBRATE_DELAY | |
279 | def_bool y | |
280 | ||
281 | config GENERIC_CSUM | |
282 | def_bool y | |
283 | ||
284 | config GENERIC_HWEIGHT | |
285 | def_bool y | |
286 | ||
f2c17aab | 287 | config FIX_EARLYCON_MEM |
0312a3d4 | 288 | def_bool MMU |
f2c17aab | 289 | |
fbe934d6 PD |
290 | config PGTABLE_LEVELS |
291 | int | |
011f09d1 | 292 | default 5 if 64BIT |
fbe934d6 PD |
293 | default 2 |
294 | ||
3c469798 GR |
295 | config LOCKDEP_SUPPORT |
296 | def_bool y | |
297 | ||
1631ba12 HS |
298 | config RISCV_DMA_NONCOHERENT |
299 | bool | |
300 | select ARCH_HAS_DMA_PREP_COHERENT | |
1631ba12 | 301 | select ARCH_HAS_SETUP_DMA_OPS |
5f365c13 CD |
302 | select ARCH_HAS_SYNC_DMA_FOR_CPU |
303 | select ARCH_HAS_SYNC_DMA_FOR_DEVICE | |
f51f7a0f | 304 | select DMA_BOUNCE_UNALIGNED_KMALLOC if SWIOTLB |
1631ba12 | 305 | |
b79f300c LP |
306 | config RISCV_NONSTANDARD_CACHE_OPS |
307 | bool | |
b79f300c LP |
308 | help |
309 | This enables function pointer support for non-standard noncoherent | |
310 | systems to handle cache management. | |
311 | ||
5ac43ab2 AJ |
312 | config AS_HAS_INSN |
313 | def_bool $(as-instr,.insn r 51$(comma) 0$(comma) 0$(comma) t0$(comma) t0$(comma) zero) | |
314 | ||
e4bb020f AC |
315 | config AS_HAS_OPTION_ARCH |
316 | # https://reviews.llvm.org/D123515 | |
317 | def_bool y | |
318 | depends on $(as-instr, .option arch$(comma) +m) | |
319 | depends on !$(as-instr, .option arch$(comma) -i) | |
320 | ||
0cbb8a32 | 321 | source "arch/riscv/Kconfig.socs" |
a3d095ac | 322 | source "arch/riscv/Kconfig.errata" |
0cbb8a32 | 323 | |
fbe934d6 PD |
324 | menu "Platform type" |
325 | ||
44c1e84a PD |
326 | config NONPORTABLE |
327 | bool "Allow configurations that result in non-portable kernels" | |
328 | help | |
329 | RISC-V kernel binaries are compatible between all known systems | |
330 | whenever possible, but there are some use cases that can only be | |
331 | satisfied by configurations that result in kernel binaries that are | |
332 | not portable between systems. | |
333 | ||
334 | Selecting N does not guarantee kernels will be portable to all known | |
335 | systems. Selecting any of the options guarded by NONPORTABLE will | |
336 | result in kernel binaries that are unlikely to be portable between | |
337 | systems. | |
338 | ||
339 | If unsure, say N. | |
340 | ||
fbe934d6 PD |
341 | choice |
342 | prompt "Base ISA" | |
343 | default ARCH_RV64I | |
344 | help | |
86cca81a | 345 | This selects the base ISA that this kernel will target and must match |
fbe934d6 PD |
346 | the target platform. |
347 | ||
348 | config ARCH_RV32I | |
349 | bool "RV32I" | |
44c1e84a | 350 | depends on NONPORTABLE |
fbe934d6 | 351 | select 32BIT |
e3d59805 MR |
352 | select GENERIC_LIB_ASHLDI3 |
353 | select GENERIC_LIB_ASHRDI3 | |
354 | select GENERIC_LIB_LSHRDI3 | |
8f79125d | 355 | select GENERIC_LIB_UCMPDI2 |
fbe934d6 PD |
356 | |
357 | config ARCH_RV64I | |
358 | bool "RV64I" | |
fbe934d6 | 359 | select 64BIT |
d2075895 | 360 | select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 |
6bd33e1e | 361 | select SWIOTLB if MMU |
fbe934d6 PD |
362 | |
363 | endchoice | |
364 | ||
365 | # We must be able to map all physical memory into the kernel, but the compiler | |
366 | # is still a bit more efficient when generating code if it's setup in a manner | |
367 | # such that it can only map 2GiB of memory. | |
368 | choice | |
369 | prompt "Kernel Code Model" | |
370 | default CMODEL_MEDLOW if 32BIT | |
371 | default CMODEL_MEDANY if 64BIT | |
372 | ||
373 | config CMODEL_MEDLOW | |
374 | bool "medium low code model" | |
375 | config CMODEL_MEDANY | |
376 | bool "medium any code model" | |
377 | endchoice | |
378 | ||
ab1ef68e ZL |
379 | config MODULE_SECTIONS |
380 | bool | |
381 | select HAVE_MOD_ARCH_SPECIFIC | |
382 | ||
fbe934d6 PD |
383 | config SMP |
384 | bool "Symmetric Multi-Processing" | |
385 | help | |
386 | This enables support for systems with more than one CPU. If | |
387 | you say N here, the kernel will run on single and | |
388 | multiprocessor machines, but will use only one CPU of a | |
389 | multiprocessor machine. If you say Y here, the kernel will run | |
390 | on many, but not all, single processor machines. On a single | |
391 | processor machine, the kernel will run faster if you say N | |
392 | here. | |
393 | ||
394 | If you don't know what to do here, say N. | |
395 | ||
8bf7b3b6 SS |
396 | config SCHED_MC |
397 | bool "Multi-core scheduler support" | |
398 | depends on SMP | |
399 | help | |
400 | Multi-core scheduler support improves the CPU scheduler's decision | |
401 | making when dealing with multi-core CPU chips at a cost of slightly | |
402 | increased overhead in some places. If unsure say N here. | |
403 | ||
fbe934d6 | 404 | config NR_CPUS |
e623715f | 405 | int "Maximum number of CPUs (2-512)" |
fbe934d6 | 406 | depends on SMP |
1d6b5ed4 SH |
407 | range 2 512 if !RISCV_SBI_V01 |
408 | range 2 32 if RISCV_SBI_V01 && 32BIT | |
409 | range 2 64 if RISCV_SBI_V01 && 64BIT | |
e623715f AP |
410 | default "32" if 32BIT |
411 | default "64" if 64BIT | |
fbe934d6 | 412 | |
f1e58583 AP |
413 | config HOTPLUG_CPU |
414 | bool "Support for hot-pluggable CPUs" | |
415 | depends on SMP | |
416 | select GENERIC_IRQ_MIGRATION | |
417 | help | |
418 | ||
419 | Say Y here to experiment with turning CPUs off and on. CPUs | |
420 | can be controlled through /sys/devices/system/cpu. | |
421 | ||
422 | Say N if you want to disable CPU hotplug. | |
423 | ||
fbe934d6 PD |
424 | choice |
425 | prompt "CPU Tuning" | |
426 | default TUNE_GENERIC | |
427 | ||
428 | config TUNE_GENERIC | |
429 | bool "generic" | |
430 | ||
431 | endchoice | |
432 | ||
4f0e8eef AP |
433 | # Common NUMA Features |
434 | config NUMA | |
435 | bool "NUMA Memory Allocation and Scheduler Support" | |
1adbc294 | 436 | depends on SMP && MMU |
5f365c13 | 437 | select ARCH_SUPPORTS_NUMA_BALANCING |
4f0e8eef | 438 | select GENERIC_ARCH_NUMA |
6b9f29b8 | 439 | select HAVE_SETUP_PER_CPU_AREA |
5f365c13 | 440 | select NEED_PER_CPU_EMBED_FIRST_CHUNK |
6b9f29b8 | 441 | select NEED_PER_CPU_PAGE_FIRST_CHUNK |
4f0e8eef | 442 | select OF_NUMA |
7ecd19cf | 443 | select USE_PERCPU_NUMA_NODE_ID |
4f0e8eef AP |
444 | help |
445 | Enable NUMA (Non-Uniform Memory Access) support. | |
446 | ||
447 | The kernel will try to allocate memory used by a CPU on the | |
448 | local memory of the CPU and add some more NUMA awareness to the kernel. | |
449 | ||
450 | config NODES_SHIFT | |
451 | int "Maximum NUMA Nodes (as a power of 2)" | |
452 | range 1 10 | |
453 | default "2" | |
a9ee6cf5 | 454 | depends on NUMA |
4f0e8eef AP |
455 | help |
456 | Specify the maximum number of NUMA Nodes available on the target | |
457 | system. Increases memory reserved to accommodate various tables. | |
458 | ||
e64f737a HS |
459 | config RISCV_ALTERNATIVE |
460 | bool | |
461 | depends on !XIP_KERNEL | |
462 | help | |
463 | This Kconfig allows the kernel to automatically patch the | |
ff19a8de AJ |
464 | erratum or cpufeature required by the execution platform at run |
465 | time. The code patching overhead is minimal, as it's only done | |
466 | once at boot and once on each module load. | |
e64f737a | 467 | |
a35707c3 HS |
468 | config RISCV_ALTERNATIVE_EARLY |
469 | bool | |
470 | depends on RISCV_ALTERNATIVE | |
471 | help | |
472 | Allows early patching of the kernel for special errata | |
473 | ||
fbe934d6 PD |
474 | config RISCV_ISA_C |
475 | bool "Emit compressed instructions when building Linux" | |
476 | default y | |
477 | help | |
2f66a3d0 JH |
478 | Adds "C" to the ISA subsets that the toolchain is allowed to emit |
479 | when building Linux, which results in compressed instructions in the | |
480 | Linux binary. | |
fbe934d6 | 481 | |
2f66a3d0 | 482 | If you don't know what to do here, say Y. |
fbe934d6 | 483 | |
23ad288a | 484 | config RISCV_ISA_SVNAPOT |
5464912c | 485 | bool "Svnapot extension support for supervisor mode NAPOT pages" |
23ad288a | 486 | depends on 64BIT && MMU |
d34a6b71 | 487 | depends on RISCV_ALTERNATIVE |
23ad288a | 488 | default y |
23ad288a | 489 | help |
5464912c | 490 | Allow kernel to detect the Svnapot ISA-extension dynamically at boot |
23ad288a QP |
491 | time and enable its usage. |
492 | ||
5464912c | 493 | The Svnapot extension is used to mark contiguous PTEs as a range |
23ad288a QP |
494 | of contiguous virtual-to-physical translations for a naturally |
495 | aligned power-of-2 (NAPOT) granularity larger than the base 4KB page | |
496 | size. When HUGETLBFS is also selected this option unconditionally | |
497 | allocates some memory for each NAPOT page size supported by the kernel. | |
498 | When optimizing for low memory consumption and for platforms without | |
5464912c | 499 | the Svnapot extension, it may be better to say N here. |
23ad288a QP |
500 | |
501 | If you don't know what to do here, say Y. | |
502 | ||
ff689fd2 | 503 | config RISCV_ISA_SVPBMT |
5464912c | 504 | bool "Svpbmt extension support for supervisor mode page-based memory types" |
ff689fd2 | 505 | depends on 64BIT && MMU |
1ee7fc3f | 506 | depends on RISCV_ALTERNATIVE |
ff689fd2 HS |
507 | default y |
508 | help | |
5464912c | 509 | Adds support to dynamically detect the presence of the Svpbmt |
924cbb8c HS |
510 | ISA-extension (Supervisor-mode: page-based memory types) and |
511 | enable its usage. | |
512 | ||
513 | The memory type for a page contains a combination of attributes | |
514 | that indicate the cacheability, idempotency, and ordering | |
515 | properties for access to that page. | |
ff689fd2 | 516 | |
5464912c | 517 | The Svpbmt extension is only available on 64-bit cpus. |
ff689fd2 HS |
518 | |
519 | If you don't know what to do here, say Y. | |
520 | ||
fa8e7cce GR |
521 | config TOOLCHAIN_HAS_V |
522 | bool | |
523 | default y | |
524 | depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64iv) | |
525 | depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32iv) | |
526 | depends on LLD_VERSION >= 140000 || LD_VERSION >= 23800 | |
527 | depends on AS_HAS_OPTION_ARCH | |
528 | ||
529 | config RISCV_ISA_V | |
530 | bool "VECTOR extension support" | |
531 | depends on TOOLCHAIN_HAS_V | |
532 | depends on FPU | |
533 | select DYNAMIC_SIGFRAME | |
534 | default y | |
535 | help | |
536 | Say N here if you want to disable all vector related procedure | |
537 | in the kernel. | |
538 | ||
539 | If you don't know what to do here, say Y. | |
540 | ||
541 | config RISCV_ISA_V_DEFAULT_ENABLE | |
542 | bool "Enable userspace Vector by default" | |
543 | depends on RISCV_ISA_V | |
544 | default y | |
545 | help | |
546 | Say Y here if you want to enable Vector in userspace by default. | |
547 | Otherwise, userspace has to make explicit prctl() call to enable | |
548 | Vector, or enable it via the sysctl interface. | |
549 | ||
550 | If you don't know what to do here, say Y. | |
551 | ||
c2a658d4 AC |
552 | config RISCV_ISA_V_UCOPY_THRESHOLD |
553 | int "Threshold size for vectorized user copies" | |
554 | depends on RISCV_ISA_V | |
555 | default 768 | |
556 | help | |
557 | Prefer using vectorized copy_to_user()/copy_from_user() when the | |
558 | workload size exceeds this value. | |
559 | ||
2080ff94 AC |
560 | config RISCV_ISA_V_PREEMPTIVE |
561 | bool "Run kernel-mode Vector with kernel preemption" | |
562 | depends on PREEMPTION | |
563 | depends on RISCV_ISA_V | |
564 | default y | |
565 | help | |
566 | Usually, in-kernel SIMD routines are run with preemption disabled. | |
567 | Functions which envoke long running SIMD thus must yield core's | |
568 | vector unit to prevent blocking other tasks for too long. | |
569 | ||
570 | This config allows kernel to run SIMD without explicitly disable | |
571 | preemption. Enabling this config will result in higher memory | |
572 | consumption due to the allocation of per-task's kernel Vector context. | |
573 | ||
b6fcdb19 | 574 | config TOOLCHAIN_HAS_ZBB |
1631ba12 | 575 | bool |
b8c86872 | 576 | default y |
b6fcdb19 HS |
577 | depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zbb) |
578 | depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbb) | |
579 | depends on LLD_VERSION >= 150000 || LD_VERSION >= 23900 | |
e4bb020f | 580 | depends on AS_HAS_OPTION_ARCH |
b6fcdb19 HS |
581 | |
582 | config RISCV_ISA_ZBB | |
583 | bool "Zbb extension support for bit manipulation instructions" | |
584 | depends on TOOLCHAIN_HAS_ZBB | |
1ee7fc3f CD |
585 | depends on MMU |
586 | depends on RISCV_ALTERNATIVE | |
b6fcdb19 HS |
587 | default y |
588 | help | |
589 | Adds support to dynamically detect the presence of the ZBB | |
590 | extension (basic bit manipulation) and enable its usage. | |
591 | ||
592 | The Zbb extension provides instructions to accelerate a number | |
593 | of bit-specific operations (count bit population, sign extending, | |
594 | bitrotation, etc). | |
595 | ||
596 | If you don't know what to do here, say Y. | |
1631ba12 HS |
597 | |
598 | config RISCV_ISA_ZICBOM | |
599 | bool "Zicbom extension support for non-coherent DMA operation" | |
1ee7fc3f CD |
600 | depends on MMU |
601 | depends on RISCV_ALTERNATIVE | |
1631ba12 | 602 | default y |
5f365c13 | 603 | select RISCV_DMA_NONCOHERENT |
381cae16 | 604 | select DMA_DIRECT_REMAP |
1631ba12 HS |
605 | help |
606 | Adds support to dynamically detect the presence of the ZICBOM | |
607 | extension (Cache Block Management Operations) and enable its | |
608 | usage. | |
609 | ||
610 | The Zicbom extension can be used to handle for example | |
611 | non-coherent DMA support on devices that need it. | |
612 | ||
613 | If you don't know what to do here, say Y. | |
614 | ||
ab0f7746 AJ |
615 | config RISCV_ISA_ZICBOZ |
616 | bool "Zicboz extension support for faster zeroing of memory" | |
d34a6b71 CD |
617 | depends on MMU |
618 | depends on RISCV_ALTERNATIVE | |
ab0f7746 AJ |
619 | default y |
620 | help | |
5464912c | 621 | Enable the use of the Zicboz extension (cbo.zero instruction) |
ab0f7746 AJ |
622 | when available. |
623 | ||
624 | The Zicboz extension is used for faster zeroing of memory. | |
625 | ||
626 | If you don't know what to do here, say Y. | |
627 | ||
aae538cd CD |
628 | config TOOLCHAIN_HAS_ZIHINTPAUSE |
629 | bool | |
630 | default y | |
631 | depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zihintpause) | |
632 | depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zihintpause) | |
633 | depends on LLD_VERSION >= 150000 || LD_VERSION >= 23600 | |
634 | ||
e89c2e81 NC |
635 | config TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI |
636 | def_bool y | |
637 | # https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=aed44286efa8ae8717a77d94b51ac3614e2ca6dc | |
ca09f772 MX |
638 | # https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=98416dbb0a62579d4a7a4a76bab51b5b52fec2cd |
639 | depends on AS_IS_GNU && AS_VERSION >= 23600 | |
e89c2e81 | 640 | help |
ca09f772 MX |
641 | Binutils-2.38 and GCC-12.1.0 bumped the default ISA spec to the newer |
642 | 20191213 version, which moves some instructions from the I extension to | |
643 | the Zicsr and Zifencei extensions. This requires explicitly specifying | |
644 | Zicsr and Zifencei when binutils >= 2.38 or GCC >= 12.1.0. Zicsr | |
645 | and Zifencei are supported in binutils from version 2.36 onwards. | |
646 | To make life easier, and avoid forcing toolchains that default to a | |
647 | newer ISA spec to version 2.2, relax the check to binutils >= 2.36. | |
ef21fa7c MX |
648 | For clang < 17 or GCC < 11.3.0, for which this is not possible or need |
649 | special treatment, this is dealt with in TOOLCHAIN_NEEDS_OLD_ISA_SPEC. | |
e89c2e81 NC |
650 | |
651 | config TOOLCHAIN_NEEDS_OLD_ISA_SPEC | |
652 | def_bool y | |
653 | depends on TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI | |
654 | # https://github.com/llvm/llvm-project/commit/22e199e6afb1263c943c0c0d4498694e15bf8a16 | |
ef21fa7c MX |
655 | # https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=d29f5d6ab513c52fd872f532c492e35ae9fd6671 |
656 | depends on (CC_IS_CLANG && CLANG_VERSION < 170000) || (CC_IS_GCC && GCC_VERSION < 110300) | |
e89c2e81 | 657 | help |
ca09f772 MX |
658 | Certain versions of clang and GCC do not support zicsr and zifencei via |
659 | -march. This option causes an older ISA spec compatible with these older | |
660 | versions of clang and GCC to be passed to GAS, which has the same result | |
661 | as passing zicsr and zifencei to -march. | |
e89c2e81 | 662 | |
9671f706 AK |
663 | config FPU |
664 | bool "FPU support" | |
665 | default y | |
666 | help | |
667 | Say N here if you want to disable all floating-point related procedure | |
668 | in the kernel. | |
669 | ||
670 | If you don't know what to do here, say Y. | |
671 | ||
163e76cc | 672 | config IRQ_STACKS |
dd69d07a | 673 | bool "Independent irq & softirq stacks" if EXPERT |
163e76cc GR |
674 | default y |
675 | select HAVE_IRQ_EXIT_ON_IRQ_STACK | |
dd69d07a | 676 | select HAVE_SOFTIRQ_ON_OWN_STACK |
163e76cc | 677 | help |
dd69d07a GR |
678 | Add independent irq & softirq stacks for percpu to prevent kernel stack |
679 | overflows. We may save some memory footprint by disabling IRQ_STACKS. | |
163e76cc | 680 | |
a7555f6b GR |
681 | config THREAD_SIZE_ORDER |
682 | int "Kernel stack size (in power-of-two numbers of page size)" if VMAP_STACK && EXPERT | |
683 | range 0 4 | |
684 | default 1 if 32BIT && !KASAN | |
685 | default 3 if 64BIT && KASAN | |
686 | default 2 | |
687 | help | |
688 | Specify the Pages of thread stack size (from 4KB to 64KB), which also | |
689 | affects irq stack size, which is equal to thread stack size. | |
690 | ||
7c832321 CL |
691 | config RISCV_MISALIGNED |
692 | bool "Support misaligned load/store traps for kernel and userspace" | |
bc38f613 | 693 | select SYSCTL_ARCH_UNALIGN_ALLOW |
7c832321 CL |
694 | default y |
695 | help | |
696 | Say Y here if you want the kernel to embed support for misaligned | |
697 | load/store for both kernel and userspace. When disable, misaligned | |
698 | accesses will generate SIGBUS in userspace and panic in kernel. | |
699 | ||
b6da6cbe JZ |
700 | config RISCV_EFFICIENT_UNALIGNED_ACCESS |
701 | bool "Assume the CPU supports fast unaligned memory accesses" | |
702 | depends on NONPORTABLE | |
d0fdc20b | 703 | select DCACHE_WORD_ACCESS if MMU |
b6da6cbe JZ |
704 | select HAVE_EFFICIENT_UNALIGNED_ACCESS |
705 | help | |
706 | Say Y here if you want the kernel to assume that the CPU supports | |
707 | efficient unaligned memory accesses. When enabled, this option | |
708 | improves the performance of the kernel on such CPUs. However, the | |
709 | kernel will run much more slowly, or will not be able to run at all, | |
710 | on CPUs that do not support efficient unaligned memory accesses. | |
711 | ||
712 | If unsure what to do here, say N. | |
713 | ||
2f66a3d0 | 714 | endmenu # "Platform type" |
fbe934d6 | 715 | |
aef53f97 | 716 | menu "Kernel features" |
fbe934d6 | 717 | |
fbe934d6 PD |
718 | source "kernel/Kconfig.hz" |
719 | ||
efca1398 AP |
720 | config RISCV_SBI_V01 |
721 | bool "SBI v0.1 support" | |
efca1398 AP |
722 | depends on RISCV_SBI |
723 | help | |
724 | This config allows kernel to use SBI v0.1 APIs. This will be | |
725 | deprecated in future once legacy M-mode software are no longer in use. | |
fba8a867 | 726 | |
2ffc48fc AP |
727 | config RISCV_BOOT_SPINWAIT |
728 | bool "Spinwait booting method" | |
729 | depends on SMP | |
77d707a3 | 730 | default y if RISCV_SBI_V01 || RISCV_M_MODE |
2ffc48fc AP |
731 | help |
732 | This enables support for booting Linux via spinwait method. In the | |
733 | spinwait method, all cores randomly jump to Linux. One of the cores | |
734 | gets chosen via lottery and all other keep spinning on a percpu | |
735 | variable. This method cannot support CPU hotplug and sparse hartid | |
736 | scheme. It should be only enabled for M-mode Linux or platforms relying | |
737 | on older firmware without SBI HSM extension. All other platforms should | |
738 | rely on ordered booting via SBI HSM extension which gets chosen | |
739 | dynamically at runtime if the firmware supports it. | |
740 | ||
77d707a3 PD |
741 | Since spinwait is incompatible with sparse hart IDs, it requires |
742 | NR_CPUS be large enough to contain the physical hart ID of the first | |
743 | hart to enter Linux. | |
744 | ||
745 | If unsure what to do here, say N. | |
746 | ||
1f0d6efe | 747 | config ARCH_SUPPORTS_KEXEC |
c41bd251 | 748 | def_bool y |
1f0d6efe ED |
749 | |
750 | config ARCH_SELECTS_KEXEC | |
751 | def_bool y | |
752 | depends on KEXEC | |
5f365c13 | 753 | select HOTPLUG_CPU if SMP |
fba8a867 | 754 | |
1f0d6efe | 755 | config ARCH_SUPPORTS_KEXEC_FILE |
c41bd251 | 756 | def_bool 64BIT |
fba8a867 | 757 | |
1f0d6efe ED |
758 | config ARCH_SELECTS_KEXEC_FILE |
759 | def_bool y | |
760 | depends on KEXEC_FILE | |
5f365c13 | 761 | select HAVE_IMA_KEXEC if IMA |
6261586e | 762 | select KEXEC_ELF |
6261586e | 763 | |
e6265fe7 | 764 | config ARCH_SUPPORTS_KEXEC_PURGATORY |
c1ad12ee | 765 | def_bool ARCH_SUPPORTS_KEXEC_FILE |
736e30af | 766 | |
1f0d6efe ED |
767 | config ARCH_SUPPORTS_CRASH_DUMP |
768 | def_bool y | |
fba8a867 | 769 | |
39365395 BH |
770 | config ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION |
771 | def_bool CRASH_CORE | |
772 | ||
9be84592 GR |
773 | config COMPAT |
774 | bool "Kernel support for 32-bit U-mode" | |
775 | default 64BIT | |
776 | depends on 64BIT && MMU | |
777 | help | |
778 | This option enables support for a 32-bit U-mode running under a 64-bit | |
779 | kernel at S-mode. riscv32-specific components such as system calls, | |
780 | the user helper functions (vdso), signal rt_frame functions and the | |
781 | ptrace interface are handled appropriately by the kernel. | |
782 | ||
783 | If you want to execute 32-bit userspace applications, say Y. | |
784 | ||
fdf68acc AJ |
785 | config PARAVIRT |
786 | bool "Enable paravirtualization code" | |
787 | depends on RISCV_SBI | |
788 | help | |
789 | This changes the kernel so it can modify itself when it is run | |
790 | under a hypervisor, potentially improving performance significantly | |
791 | over full virtualization. | |
792 | ||
793 | config PARAVIRT_TIME_ACCOUNTING | |
794 | bool "Paravirtual steal time accounting" | |
795 | depends on PARAVIRT | |
796 | help | |
797 | Select this option to enable fine granularity task steal time | |
798 | accounting. Time spent executing other tasks in parallel with | |
799 | the current vCPU is discounted from the vCPU power. To account for | |
800 | that, there can be a small performance impact. | |
801 | ||
802 | If in doubt, say N here. | |
803 | ||
39b33072 AG |
804 | config RELOCATABLE |
805 | bool "Build a relocatable kernel" | |
806 | depends on MMU && 64BIT && !XIP_KERNEL | |
807 | help | |
808 | This builds a kernel as a Position Independent Executable (PIE), | |
809 | which retains all relocation metadata required to relocate the | |
810 | kernel binary at runtime to a different virtual address than the | |
811 | address it was linked at. | |
812 | Since RISCV uses the RELA relocation format, this requires a | |
813 | relocation pass at runtime even if the kernel is loaded at the | |
814 | same address it was linked at. | |
815 | ||
816 | If unsure, say N. | |
817 | ||
84fe419d AG |
818 | config RANDOMIZE_BASE |
819 | bool "Randomize the address of the kernel image" | |
820 | select RELOCATABLE | |
821 | depends on MMU && 64BIT && !XIP_KERNEL | |
822 | help | |
823 | Randomizes the virtual address at which the kernel image is | |
824 | loaded, as a security feature that deters exploit attempts | |
825 | relying on knowledge of the location of kernel internals. | |
826 | ||
827 | It is the bootloader's job to provide entropy, by passing a | |
828 | random u64 value in /chosen/kaslr-seed at kernel entry. | |
829 | ||
830 | When booting via the UEFI stub, it will invoke the firmware's | |
831 | EFI_RNG_PROTOCOL implementation (if available) to supply entropy | |
832 | to the kernel proper. In addition, it will randomise the physical | |
833 | location of the kernel Image as well. | |
834 | ||
835 | If unsure, say N. | |
836 | ||
2f66a3d0 | 837 | endmenu # "Kernel features" |
fbe934d6 | 838 | |
aef53f97 NK |
839 | menu "Boot options" |
840 | ||
3aed8c43 NK |
841 | config CMDLINE |
842 | string "Built-in kernel command line" | |
aef53f97 | 843 | help |
3aed8c43 NK |
844 | For most platforms, the arguments for the kernel's command line |
845 | are provided at run-time, during boot. However, there are cases | |
846 | where either no arguments are being provided or the provided | |
847 | arguments are insufficient or even invalid. | |
aef53f97 | 848 | |
3aed8c43 NK |
849 | When that occurs, it is possible to define a built-in command |
850 | line here and choose how the kernel should use it later on. | |
aef53f97 | 851 | |
3aed8c43 NK |
852 | choice |
853 | prompt "Built-in command line usage" if CMDLINE != "" | |
854 | default CMDLINE_FALLBACK | |
855 | help | |
856 | Choose how the kernel will handle the provided built-in command | |
857 | line. | |
aef53f97 | 858 | |
3aed8c43 NK |
859 | config CMDLINE_FALLBACK |
860 | bool "Use bootloader kernel arguments if available" | |
aef53f97 | 861 | help |
3aed8c43 NK |
862 | Use the built-in command line as fallback in case we get nothing |
863 | during boot. This is the default behaviour. | |
864 | ||
865 | config CMDLINE_EXTEND | |
866 | bool "Extend bootloader kernel arguments" | |
867 | help | |
868 | The command-line arguments provided during boot will be | |
869 | appended to the built-in command line. This is useful in | |
870 | cases where the provided arguments are insufficient and | |
871 | you don't want to or cannot modify them. | |
872 | ||
aef53f97 | 873 | config CMDLINE_FORCE |
3aed8c43 | 874 | bool "Always use the default kernel command string" |
aef53f97 | 875 | help |
3aed8c43 NK |
876 | Always use the built-in command line, even if we get one during |
877 | boot. This is useful in case you need to override the provided | |
878 | command line on systems where you don't have or want control | |
879 | over it. | |
aef53f97 | 880 | |
3aed8c43 | 881 | endchoice |
aef53f97 | 882 | |
d7071743 AP |
883 | config EFI_STUB |
884 | bool | |
885 | ||
886 | config EFI | |
887 | bool "UEFI runtime support" | |
44c92257 | 888 | depends on OF && !XIP_KERNEL |
5f365c13 CD |
889 | depends on MMU |
890 | default y | |
a91a9ffb | 891 | select ARCH_SUPPORTS_ACPI if 64BIT |
d7071743 | 892 | select EFI_GENERIC_STUB |
5f365c13 | 893 | select EFI_PARAMS_FROM_FDT |
b91540d5 | 894 | select EFI_RUNTIME_WRAPPERS |
5f365c13 CD |
895 | select EFI_STUB |
896 | select LIBFDT | |
d7071743 | 897 | select RISCV_ISA_C |
5f365c13 | 898 | select UCS2_STRING |
d7071743 AP |
899 | help |
900 | This option provides support for runtime services provided | |
901 | by UEFI firmware (such as non-volatile variables, realtime | |
902 | clock, and platform reset). A UEFI stub is also provided to | |
903 | allow the kernel to be booted as an EFI application. This | |
904 | is only useful on systems that have UEFI firmware. | |
905 | ||
fea2fed2 GR |
906 | config CC_HAVE_STACKPROTECTOR_TLS |
907 | def_bool $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=tp -mstack-protector-guard-offset=0) | |
908 | ||
909 | config STACKPROTECTOR_PER_TASK | |
910 | def_bool y | |
595b893e | 911 | depends on !RANDSTRUCT |
fea2fed2 GR |
912 | depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_TLS |
913 | ||
867432be AG |
914 | config PHYS_RAM_BASE_FIXED |
915 | bool "Explicitly specified physical RAM address" | |
44c1e84a | 916 | depends on NONPORTABLE |
867432be AG |
917 | default n |
918 | ||
44c92257 VW |
919 | config PHYS_RAM_BASE |
920 | hex "Platform Physical RAM address" | |
867432be | 921 | depends on PHYS_RAM_BASE_FIXED |
44c92257 VW |
922 | default "0x80000000" |
923 | help | |
924 | This is the physical address of RAM in the system. It has to be | |
925 | explicitly specified to run early relocations of read-write data | |
926 | from flash to RAM. | |
927 | ||
928 | config XIP_KERNEL | |
929 | bool "Kernel Execute-In-Place from ROM" | |
44c1e84a | 930 | depends on MMU && SPARSEMEM && NONPORTABLE |
44c92257 VW |
931 | # This prevents XIP from being enabled by all{yes,mod}config, which |
932 | # fail to build since XIP doesn't support large kernels. | |
933 | depends on !COMPILE_TEST | |
867432be | 934 | select PHYS_RAM_BASE_FIXED |
44c92257 VW |
935 | help |
936 | Execute-In-Place allows the kernel to run from non-volatile storage | |
937 | directly addressable by the CPU, such as NOR flash. This saves RAM | |
938 | space since the text section of the kernel is not loaded from flash | |
939 | to RAM. Read-write sections, such as the data section and stack, | |
940 | are still copied to RAM. The XIP kernel is not compressed since | |
941 | it has to run directly from flash, so it will take more space to | |
942 | store it. The flash address used to link the kernel object files, | |
943 | and for storing it, is configuration dependent. Therefore, if you | |
944 | say Y here, you must know the proper physical address where to | |
945 | store the kernel image depending on your own flash memory usage. | |
946 | ||
947 | Also note that the make target becomes "make xipImage" rather than | |
948 | "make zImage" or "make Image". The final kernel binary to put in | |
949 | ROM memory will be arch/riscv/boot/xipImage. | |
950 | ||
951 | SPARSEMEM is required because the kernel text and rodata that are | |
952 | flash resident are not backed by memmap, then any attempt to get | |
953 | a struct page on those regions will trigger a fault. | |
954 | ||
955 | If unsure, say N. | |
956 | ||
957 | config XIP_PHYS_ADDR | |
958 | hex "XIP Kernel Physical Location" | |
959 | depends on XIP_KERNEL | |
960 | default "0x21000000" | |
961 | help | |
962 | This is the physical address in your flash memory the kernel will | |
963 | be linked for and stored to. This address is dependent on your | |
964 | own flash usage. | |
965 | ||
496ea826 CD |
966 | config RISCV_ISA_FALLBACK |
967 | bool "Permit falling back to parsing riscv,isa for extension support by default" | |
968 | default y | |
969 | help | |
970 | Parsing the "riscv,isa" devicetree property has been deprecated and | |
971 | replaced by a list of explicitly defined strings. For compatibility | |
972 | with existing platforms, the kernel will fall back to parsing the | |
973 | "riscv,isa" property if the replacements are not found. | |
974 | ||
975 | Selecting N here will result in a kernel that does not use the | |
976 | fallback, unless the commandline "riscv_isa_fallback" parameter is | |
977 | present. | |
978 | ||
979 | Please see the dt-binding, located at | |
980 | Documentation/devicetree/bindings/riscv/extensions.yaml for details | |
981 | on the replacement properties, "riscv,isa-base" and | |
982 | "riscv,isa-extensions". | |
983 | ||
2d268251 | 984 | config BUILTIN_DTB |
6c4a2f63 | 985 | bool "Built-in device tree" |
44c1e84a | 986 | depends on OF && NONPORTABLE |
44c92257 | 987 | default y if XIP_KERNEL |
2d268251 | 988 | |
6c4a2f63 FH |
989 | endmenu # "Boot options" |
990 | ||
44c1e84a PD |
991 | config PORTABLE |
992 | bool | |
993 | default !NONPORTABLE | |
994 | select EFI | |
44c1e84a | 995 | select MMU |
5f365c13 | 996 | select OF |
44c1e84a | 997 | |
e0c0a7c3 AS |
998 | config ARCH_PROC_KCORE_TEXT |
999 | def_bool y | |
1000 | ||
fbe934d6 PD |
1001 | menu "Power management options" |
1002 | ||
8636a1f9 | 1003 | source "kernel/power/Kconfig" |
fbe934d6 | 1004 | |
ed309ce5 CD |
1005 | # Hibernation is only possible on systems where the SBI implementation has |
1006 | # marked its reserved memory as not accessible from, or does not run | |
1007 | # from the same memory as, Linux | |
c0317210 | 1008 | config ARCH_HIBERNATION_POSSIBLE |
ed309ce5 | 1009 | def_bool NONPORTABLE |
c0317210 SJH |
1010 | |
1011 | config ARCH_HIBERNATION_HEADER | |
1012 | def_bool HIBERNATION | |
1013 | ||
c1f048a6 SS |
1014 | config ARCH_SUSPEND_POSSIBLE |
1015 | def_bool y | |
1016 | ||
2f66a3d0 | 1017 | endmenu # "Power management options" |
d7071743 | 1018 | |
f6e64b66 AP |
1019 | menu "CPU Power Management" |
1020 | ||
1021 | source "drivers/cpuidle/Kconfig" | |
1022 | ||
effae0e3 LP |
1023 | source "drivers/cpufreq/Kconfig" |
1024 | ||
2f66a3d0 | 1025 | endmenu # "CPU Power Management" |
f6e64b66 | 1026 | |
99cdc6c1 | 1027 | source "arch/riscv/kvm/Kconfig" |
a91a9ffb S |
1028 | |
1029 | source "drivers/acpi/Kconfig" |