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