]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blob - arch/riscv/Kconfig
riscv: Add KPROBES_ON_FTRACE supported
[mirror_ubuntu-jammy-kernel.git] / arch / riscv / Kconfig
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
7 config 64BIT
8 bool
9
10 config 32BIT
11 bool
12
13 config RISCV
14 def_bool y
15 select ARCH_CLOCKSOURCE_INIT
16 select ARCH_SUPPORTS_ATOMIC_RMW
17 select ARCH_SUPPORTS_DEBUG_PAGEALLOC if MMU
18 select ARCH_STACKWALK
19 select ARCH_HAS_BINFMT_FLAT
20 select ARCH_HAS_DEBUG_VM_PGTABLE
21 select ARCH_HAS_DEBUG_VIRTUAL if MMU
22 select ARCH_HAS_DEBUG_WX
23 select ARCH_HAS_GCOV_PROFILE_ALL
24 select ARCH_HAS_GIGANTIC_PAGE
25 select ARCH_HAS_KCOV
26 select ARCH_HAS_MMIOWB
27 select ARCH_HAS_PTE_SPECIAL
28 select ARCH_HAS_SET_DIRECT_MAP
29 select ARCH_HAS_SET_MEMORY
30 select ARCH_HAS_STRICT_KERNEL_RWX if MMU
31 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
32 select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
33 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
34 select ARCH_WANT_FRAME_POINTERS
35 select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
36 select CLONE_BACKWARDS
37 select CLINT_TIMER if !MMU
38 select COMMON_CLK
39 select EDAC_SUPPORT
40 select GENERIC_ARCH_TOPOLOGY if SMP
41 select GENERIC_ATOMIC64 if !64BIT
42 select GENERIC_EARLY_IOREMAP
43 select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
44 select GENERIC_IOREMAP
45 select GENERIC_IRQ_MULTI_HANDLER
46 select GENERIC_IRQ_SHOW
47 select GENERIC_LIB_DEVMEM_IS_ALLOWED
48 select GENERIC_PCI_IOMAP
49 select GENERIC_PTDUMP if MMU
50 select GENERIC_SCHED_CLOCK
51 select GENERIC_SMP_IDLE_THREAD
52 select GENERIC_STRNCPY_FROM_USER if MMU
53 select GENERIC_STRNLEN_USER if MMU
54 select GENERIC_TIME_VSYSCALL if MMU && 64BIT
55 select HANDLE_DOMAIN_IRQ
56 select HAVE_ARCH_AUDITSYSCALL
57 select HAVE_ARCH_JUMP_LABEL
58 select HAVE_ARCH_JUMP_LABEL_RELATIVE
59 select HAVE_ARCH_KASAN if MMU && 64BIT
60 select HAVE_ARCH_KGDB
61 select HAVE_ARCH_KGDB_QXFER_PKT
62 select HAVE_ARCH_MMAP_RND_BITS if MMU
63 select HAVE_ARCH_SECCOMP_FILTER
64 select HAVE_ARCH_TRACEHOOK
65 select HAVE_ASM_MODVERSIONS
66 select HAVE_CONTEXT_TRACKING
67 select HAVE_DEBUG_KMEMLEAK
68 select HAVE_DMA_CONTIGUOUS if MMU
69 select HAVE_EBPF_JIT if MMU
70 select HAVE_FUTEX_CMPXCHG if FUTEX
71 select HAVE_GCC_PLUGINS
72 select HAVE_GENERIC_VDSO if MMU && 64BIT
73 select HAVE_IRQ_TIME_ACCOUNTING
74 select HAVE_KPROBES
75 select HAVE_KPROBES_ON_FTRACE
76 select HAVE_KRETPROBES
77 select HAVE_PCI
78 select HAVE_PERF_EVENTS
79 select HAVE_PERF_REGS
80 select HAVE_PERF_USER_STACK_DUMP
81 select HAVE_REGS_AND_STACK_ACCESS_API
82 select HAVE_STACKPROTECTOR
83 select HAVE_SYSCALL_TRACEPOINTS
84 select IRQ_DOMAIN
85 select MODULES_USE_ELF_RELA if MODULES
86 select MODULE_SECTIONS if MODULES
87 select OF
88 select OF_EARLY_FLATTREE
89 select OF_IRQ
90 select PCI_DOMAINS_GENERIC if PCI
91 select PCI_MSI if PCI
92 select RISCV_INTC
93 select RISCV_TIMER if RISCV_SBI
94 select SPARSEMEM_STATIC if 32BIT
95 select SPARSE_IRQ
96 select SYSCTL_EXCEPTION_TRACE
97 select THREAD_INFO_IN_TASK
98 select UACCESS_MEMCPY if !MMU
99
100 config ARCH_MMAP_RND_BITS_MIN
101 default 18 if 64BIT
102 default 8
103
104 # max bits determined by the following formula:
105 # VA_BITS - PAGE_SHIFT - 3
106 config ARCH_MMAP_RND_BITS_MAX
107 default 24 if 64BIT # SV39 based
108 default 17
109
110 # set if we run in machine mode, cleared if we run in supervisor mode
111 config RISCV_M_MODE
112 bool
113 default !MMU
114
115 # set if we are running in S-mode and can use SBI calls
116 config RISCV_SBI
117 bool
118 depends on !RISCV_M_MODE
119 default y
120
121 config MMU
122 bool "MMU-based Paged Memory Management Support"
123 default y
124 help
125 Select if you want MMU-based virtualised addressing space
126 support by paged memory management. If unsure, say 'Y'.
127
128 config ZONE_DMA32
129 bool
130 default y if 64BIT
131
132 config VA_BITS
133 int
134 default 32 if 32BIT
135 default 39 if 64BIT
136
137 config PA_BITS
138 int
139 default 34 if 32BIT
140 default 56 if 64BIT
141
142 config PAGE_OFFSET
143 hex
144 default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
145 default 0x80000000 if 64BIT && !MMU
146 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
147 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
148
149 config ARCH_FLATMEM_ENABLE
150 def_bool !NUMA
151
152 config ARCH_SPARSEMEM_ENABLE
153 def_bool y
154 depends on MMU
155 select SPARSEMEM_VMEMMAP_ENABLE
156
157 config ARCH_SELECT_MEMORY_MODEL
158 def_bool ARCH_SPARSEMEM_ENABLE
159
160 config ARCH_WANT_GENERAL_HUGETLB
161 def_bool y
162
163 config SYS_SUPPORTS_HUGETLBFS
164 depends on MMU
165 def_bool y
166
167 config STACKTRACE_SUPPORT
168 def_bool y
169
170 config TRACE_IRQFLAGS_SUPPORT
171 def_bool y
172
173 config GENERIC_BUG
174 def_bool y
175 depends on BUG
176 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
177
178 config GENERIC_BUG_RELATIVE_POINTERS
179 bool
180
181 config GENERIC_CALIBRATE_DELAY
182 def_bool y
183
184 config GENERIC_CSUM
185 def_bool y
186
187 config GENERIC_HWEIGHT
188 def_bool y
189
190 config FIX_EARLYCON_MEM
191 def_bool MMU
192
193 config PGTABLE_LEVELS
194 int
195 default 3 if 64BIT
196 default 2
197
198 config LOCKDEP_SUPPORT
199 def_bool y
200
201 source "arch/riscv/Kconfig.socs"
202
203 menu "Platform type"
204
205 choice
206 prompt "Base ISA"
207 default ARCH_RV64I
208 help
209 This selects the base ISA that this kernel will target and must match
210 the target platform.
211
212 config ARCH_RV32I
213 bool "RV32I"
214 select 32BIT
215 select GENERIC_LIB_ASHLDI3
216 select GENERIC_LIB_ASHRDI3
217 select GENERIC_LIB_LSHRDI3
218 select GENERIC_LIB_UCMPDI2
219 select MMU
220
221 config ARCH_RV64I
222 bool "RV64I"
223 select 64BIT
224 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000
225 select HAVE_DYNAMIC_FTRACE if MMU
226 select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
227 select HAVE_FTRACE_MCOUNT_RECORD
228 select HAVE_FUNCTION_GRAPH_TRACER
229 select HAVE_FUNCTION_TRACER
230 select SWIOTLB if MMU
231
232 endchoice
233
234 # We must be able to map all physical memory into the kernel, but the compiler
235 # is still a bit more efficient when generating code if it's setup in a manner
236 # such that it can only map 2GiB of memory.
237 choice
238 prompt "Kernel Code Model"
239 default CMODEL_MEDLOW if 32BIT
240 default CMODEL_MEDANY if 64BIT
241
242 config CMODEL_MEDLOW
243 bool "medium low code model"
244 config CMODEL_MEDANY
245 bool "medium any code model"
246 endchoice
247
248 config MODULE_SECTIONS
249 bool
250 select HAVE_MOD_ARCH_SPECIFIC
251
252 choice
253 prompt "Maximum Physical Memory"
254 default MAXPHYSMEM_2GB if 32BIT
255 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
256 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
257
258 config MAXPHYSMEM_2GB
259 bool "2GiB"
260 config MAXPHYSMEM_128GB
261 depends on 64BIT && CMODEL_MEDANY
262 bool "128GiB"
263 endchoice
264
265
266 config SMP
267 bool "Symmetric Multi-Processing"
268 help
269 This enables support for systems with more than one CPU. If
270 you say N here, the kernel will run on single and
271 multiprocessor machines, but will use only one CPU of a
272 multiprocessor machine. If you say Y here, the kernel will run
273 on many, but not all, single processor machines. On a single
274 processor machine, the kernel will run faster if you say N
275 here.
276
277 If you don't know what to do here, say N.
278
279 config NR_CPUS
280 int "Maximum number of CPUs (2-32)"
281 range 2 32
282 depends on SMP
283 default "8"
284
285 config HOTPLUG_CPU
286 bool "Support for hot-pluggable CPUs"
287 depends on SMP
288 select GENERIC_IRQ_MIGRATION
289 help
290
291 Say Y here to experiment with turning CPUs off and on. CPUs
292 can be controlled through /sys/devices/system/cpu.
293
294 Say N if you want to disable CPU hotplug.
295
296 choice
297 prompt "CPU Tuning"
298 default TUNE_GENERIC
299
300 config TUNE_GENERIC
301 bool "generic"
302
303 endchoice
304
305 # Common NUMA Features
306 config NUMA
307 bool "NUMA Memory Allocation and Scheduler Support"
308 select GENERIC_ARCH_NUMA
309 select OF_NUMA
310 select ARCH_SUPPORTS_NUMA_BALANCING
311 help
312 Enable NUMA (Non-Uniform Memory Access) support.
313
314 The kernel will try to allocate memory used by a CPU on the
315 local memory of the CPU and add some more NUMA awareness to the kernel.
316
317 config NODES_SHIFT
318 int "Maximum NUMA Nodes (as a power of 2)"
319 range 1 10
320 default "2"
321 depends on NEED_MULTIPLE_NODES
322 help
323 Specify the maximum number of NUMA Nodes available on the target
324 system. Increases memory reserved to accommodate various tables.
325
326 config USE_PERCPU_NUMA_NODE_ID
327 def_bool y
328 depends on NUMA
329
330 config NEED_PER_CPU_EMBED_FIRST_CHUNK
331 def_bool y
332 depends on NUMA
333
334 config RISCV_ISA_C
335 bool "Emit compressed instructions when building Linux"
336 default y
337 help
338 Adds "C" to the ISA subsets that the toolchain is allowed to emit
339 when building Linux, which results in compressed instructions in the
340 Linux binary.
341
342 If you don't know what to do here, say Y.
343
344 menu "supported PMU type"
345 depends on PERF_EVENTS
346
347 config RISCV_BASE_PMU
348 bool "Base Performance Monitoring Unit"
349 def_bool y
350 help
351 A base PMU that serves as a reference implementation and has limited
352 feature of perf. It can run on any RISC-V machines so serves as the
353 fallback, but this option can also be disable to reduce kernel size.
354
355 endmenu
356
357 config FPU
358 bool "FPU support"
359 default y
360 help
361 Say N here if you want to disable all floating-point related procedure
362 in the kernel.
363
364 If you don't know what to do here, say Y.
365
366 endmenu
367
368 menu "Kernel features"
369
370 source "kernel/Kconfig.hz"
371
372 config RISCV_SBI_V01
373 bool "SBI v0.1 support"
374 default y
375 depends on RISCV_SBI
376 help
377 This config allows kernel to use SBI v0.1 APIs. This will be
378 deprecated in future once legacy M-mode software are no longer in use.
379 endmenu
380
381 menu "Boot options"
382
383 config CMDLINE
384 string "Built-in kernel command line"
385 help
386 For most platforms, the arguments for the kernel's command line
387 are provided at run-time, during boot. However, there are cases
388 where either no arguments are being provided or the provided
389 arguments are insufficient or even invalid.
390
391 When that occurs, it is possible to define a built-in command
392 line here and choose how the kernel should use it later on.
393
394 choice
395 prompt "Built-in command line usage" if CMDLINE != ""
396 default CMDLINE_FALLBACK
397 help
398 Choose how the kernel will handle the provided built-in command
399 line.
400
401 config CMDLINE_FALLBACK
402 bool "Use bootloader kernel arguments if available"
403 help
404 Use the built-in command line as fallback in case we get nothing
405 during boot. This is the default behaviour.
406
407 config CMDLINE_EXTEND
408 bool "Extend bootloader kernel arguments"
409 help
410 The command-line arguments provided during boot will be
411 appended to the built-in command line. This is useful in
412 cases where the provided arguments are insufficient and
413 you don't want to or cannot modify them.
414
415
416 config CMDLINE_FORCE
417 bool "Always use the default kernel command string"
418 help
419 Always use the built-in command line, even if we get one during
420 boot. This is useful in case you need to override the provided
421 command line on systems where you don't have or want control
422 over it.
423
424 endchoice
425
426 config EFI_STUB
427 bool
428
429 config EFI
430 bool "UEFI runtime support"
431 depends on OF
432 select LIBFDT
433 select UCS2_STRING
434 select EFI_PARAMS_FROM_FDT
435 select EFI_STUB
436 select EFI_GENERIC_STUB
437 select EFI_RUNTIME_WRAPPERS
438 select RISCV_ISA_C
439 depends on MMU
440 default y
441 help
442 This option provides support for runtime services provided
443 by UEFI firmware (such as non-volatile variables, realtime
444 clock, and platform reset). A UEFI stub is also provided to
445 allow the kernel to be booted as an EFI application. This
446 is only useful on systems that have UEFI firmware.
447
448 endmenu
449
450 config BUILTIN_DTB
451 def_bool n
452 depends on RISCV_M_MODE
453 depends on OF
454
455 menu "Power management options"
456
457 source "kernel/power/Kconfig"
458
459 endmenu
460
461 source "drivers/firmware/Kconfig"