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