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