Merge tag 'powerpc-5.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
[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 COMMON_CLK
36         select EDAC_SUPPORT
37         select GENERIC_ARCH_TOPOLOGY if SMP
38         select GENERIC_ATOMIC64 if !64BIT
39         select GENERIC_CLOCKEVENTS
40         select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
41         select GENERIC_IOREMAP
42         select GENERIC_IRQ_MULTI_HANDLER
43         select GENERIC_IRQ_SHOW
44         select GENERIC_PCI_IOMAP
45         select GENERIC_PTDUMP if MMU
46         select GENERIC_SCHED_CLOCK
47         select GENERIC_SMP_IDLE_THREAD
48         select GENERIC_STRNCPY_FROM_USER if MMU
49         select GENERIC_STRNLEN_USER if MMU
50         select GENERIC_TIME_VSYSCALL if MMU && 64BIT
51         select HANDLE_DOMAIN_IRQ
52         select HAVE_ARCH_AUDITSYSCALL
53         select HAVE_ARCH_JUMP_LABEL
54         select HAVE_ARCH_JUMP_LABEL_RELATIVE
55         select HAVE_ARCH_KASAN if MMU && 64BIT
56         select HAVE_ARCH_KGDB
57         select HAVE_ARCH_KGDB_QXFER_PKT
58         select HAVE_ARCH_MMAP_RND_BITS if MMU
59         select HAVE_ARCH_SECCOMP_FILTER
60         select HAVE_ARCH_TRACEHOOK
61         select HAVE_ASM_MODVERSIONS
62         select HAVE_CONTEXT_TRACKING
63         select HAVE_DEBUG_KMEMLEAK
64         select HAVE_DMA_CONTIGUOUS if MMU
65         select HAVE_EBPF_JIT if MMU
66         select HAVE_FUTEX_CMPXCHG if FUTEX
67         select HAVE_GCC_PLUGINS
68         select HAVE_GENERIC_VDSO if MMU && 64BIT
69         select HAVE_PCI
70         select HAVE_PERF_EVENTS
71         select HAVE_PERF_REGS
72         select HAVE_PERF_USER_STACK_DUMP
73         select HAVE_STACKPROTECTOR
74         select HAVE_SYSCALL_TRACEPOINTS
75         select IRQ_DOMAIN
76         select MODULES_USE_ELF_RELA if MODULES
77         select MODULE_SECTIONS if MODULES
78         select OF
79         select OF_EARLY_FLATTREE
80         select OF_IRQ
81         select PCI_DOMAINS_GENERIC if PCI
82         select PCI_MSI if PCI
83         select RISCV_INTC
84         select RISCV_TIMER if RISCV_SBI
85         select SPARSEMEM_STATIC if 32BIT
86         select SPARSE_IRQ
87         select SYSCTL_EXCEPTION_TRACE
88         select THREAD_INFO_IN_TASK
89
90 config ARCH_MMAP_RND_BITS_MIN
91         default 18 if 64BIT
92         default 8
93
94 # max bits determined by the following formula:
95 #  VA_BITS - PAGE_SHIFT - 3
96 config ARCH_MMAP_RND_BITS_MAX
97         default 24 if 64BIT # SV39 based
98         default 17
99
100 # set if we run in machine mode, cleared if we run in supervisor mode
101 config RISCV_M_MODE
102         bool
103         default !MMU
104
105 # set if we are running in S-mode and can use SBI calls
106 config RISCV_SBI
107         bool
108         depends on !RISCV_M_MODE
109         default y
110
111 config MMU
112         bool "MMU-based Paged Memory Management Support"
113         default y
114         help
115           Select if you want MMU-based virtualised addressing space
116           support by paged memory management. If unsure, say 'Y'.
117
118 config ZONE_DMA32
119         bool
120         default y if 64BIT
121
122 config VA_BITS
123         int
124         default 32 if 32BIT
125         default 39 if 64BIT
126
127 config PA_BITS
128         int
129         default 34 if 32BIT
130         default 56 if 64BIT
131
132 config PAGE_OFFSET
133         hex
134         default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
135         default 0x80000000 if 64BIT && !MMU
136         default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
137         default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
138
139 config ARCH_FLATMEM_ENABLE
140         def_bool y
141
142 config ARCH_SPARSEMEM_ENABLE
143         def_bool y
144         depends on MMU
145         select SPARSEMEM_VMEMMAP_ENABLE
146
147 config ARCH_SELECT_MEMORY_MODEL
148         def_bool ARCH_SPARSEMEM_ENABLE
149
150 config ARCH_WANT_GENERAL_HUGETLB
151         def_bool y
152
153 config ARCH_SUPPORTS_DEBUG_PAGEALLOC
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 SECCOMP
337         bool "Enable seccomp to safely compute untrusted bytecode"
338         help
339           This kernel feature is useful for number crunching applications
340           that may need to compute untrusted bytecode during their
341           execution. By using pipes or other transports made available to
342           the process as file descriptors supporting the read/write
343           syscalls, it's possible to isolate those applications in
344           their own address space using seccomp. Once seccomp is
345           enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
346           and the task is only allowed to execute a few safe syscalls
347           defined by each seccomp mode.
348
349 config RISCV_SBI_V01
350         bool "SBI v0.1 support"
351         default y
352         depends on RISCV_SBI
353         help
354           This config allows kernel to use SBI v0.1 APIs. This will be
355           deprecated in future once legacy M-mode software are no longer in use.
356 endmenu
357
358 menu "Boot options"
359
360 config CMDLINE
361         string "Built-in kernel command line"
362         help
363           For most platforms, the arguments for the kernel's command line
364           are provided at run-time, during boot. However, there are cases
365           where either no arguments are being provided or the provided
366           arguments are insufficient or even invalid.
367
368           When that occurs, it is possible to define a built-in command
369           line here and choose how the kernel should use it later on.
370
371 choice
372         prompt "Built-in command line usage" if CMDLINE != ""
373         default CMDLINE_FALLBACK
374         help
375           Choose how the kernel will handle the provided built-in command
376           line.
377
378 config CMDLINE_FALLBACK
379         bool "Use bootloader kernel arguments if available"
380         help
381           Use the built-in command line as fallback in case we get nothing
382           during boot. This is the default behaviour.
383
384 config CMDLINE_EXTEND
385         bool "Extend bootloader kernel arguments"
386         help
387           The command-line arguments provided during boot will be
388           appended to the built-in command line. This is useful in
389           cases where the provided arguments are insufficient and
390           you don't want to or cannot modify them.
391
392
393 config CMDLINE_FORCE
394         bool "Always use the default kernel command string"
395         help
396           Always use the built-in command line, even if we get one during
397           boot. This is useful in case you need to override the provided
398           command line on systems where you don't have or want control
399           over it.
400
401 endchoice
402
403 endmenu
404
405 config BUILTIN_DTB
406         def_bool n
407         depends on RISCV_M_MODE
408         depends on OF
409
410 menu "Power management options"
411
412 source "kernel/power/Kconfig"
413
414 endmenu