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