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