Merge tag 'xfs-5.14-merge-6' of git://git.kernel.org/pub/scm/fs/xfs/xfs-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_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_FORTIFY_SOURCE
24         select ARCH_HAS_GCOV_PROFILE_ALL
25         select ARCH_HAS_GIGANTIC_PAGE
26         select ARCH_HAS_KCOV
27         select ARCH_HAS_MMIOWB
28         select ARCH_HAS_PTE_SPECIAL
29         select ARCH_HAS_SET_DIRECT_MAP
30         select ARCH_HAS_SET_MEMORY
31         select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL
32         select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL
33         select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
34         select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
35         select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
36         select ARCH_SUPPORTS_HUGETLBFS if MMU
37         select ARCH_USE_MEMTEST
38         select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
39         select ARCH_WANT_FRAME_POINTERS
40         select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
41         select BINFMT_FLAT_NO_DATA_START_OFFSET if !MMU
42         select CLONE_BACKWARDS
43         select CLINT_TIMER if !MMU
44         select COMMON_CLK
45         select EDAC_SUPPORT
46         select GENERIC_ARCH_TOPOLOGY if SMP
47         select GENERIC_ATOMIC64 if !64BIT
48         select GENERIC_CLOCKEVENTS_BROADCAST if SMP
49         select GENERIC_EARLY_IOREMAP
50         select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
51         select GENERIC_IOREMAP
52         select GENERIC_IRQ_MULTI_HANDLER
53         select GENERIC_IRQ_SHOW
54         select GENERIC_LIB_DEVMEM_IS_ALLOWED
55         select GENERIC_PCI_IOMAP
56         select GENERIC_PTDUMP if MMU
57         select GENERIC_SCHED_CLOCK
58         select GENERIC_SMP_IDLE_THREAD
59         select GENERIC_STRNCPY_FROM_USER if MMU
60         select GENERIC_STRNLEN_USER if MMU
61         select GENERIC_TIME_VSYSCALL if MMU && 64BIT
62         select HANDLE_DOMAIN_IRQ
63         select HAVE_ARCH_AUDITSYSCALL
64         select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
65         select HAVE_ARCH_JUMP_LABEL_RELATIVE if !XIP_KERNEL
66         select HAVE_ARCH_KASAN if MMU && 64BIT
67         select HAVE_ARCH_KASAN_VMALLOC if MMU && 64BIT
68         select HAVE_ARCH_KGDB if !XIP_KERNEL
69         select HAVE_ARCH_KGDB_QXFER_PKT
70         select HAVE_ARCH_MMAP_RND_BITS if MMU
71         select HAVE_ARCH_SECCOMP_FILTER
72         select HAVE_ARCH_TRACEHOOK
73         select HAVE_ASM_MODVERSIONS
74         select HAVE_CONTEXT_TRACKING
75         select HAVE_DEBUG_KMEMLEAK
76         select HAVE_DMA_CONTIGUOUS if MMU
77         select HAVE_EBPF_JIT if MMU
78         select HAVE_FUNCTION_ERROR_INJECTION
79         select HAVE_FUTEX_CMPXCHG if FUTEX
80         select HAVE_GCC_PLUGINS
81         select HAVE_GENERIC_VDSO if MMU && 64BIT
82         select HAVE_IRQ_TIME_ACCOUNTING
83         select HAVE_KPROBES if !XIP_KERNEL
84         select HAVE_KPROBES_ON_FTRACE if !XIP_KERNEL
85         select HAVE_KRETPROBES if !XIP_KERNEL
86         select HAVE_PCI
87         select HAVE_PERF_EVENTS
88         select HAVE_PERF_REGS
89         select HAVE_PERF_USER_STACK_DUMP
90         select HAVE_REGS_AND_STACK_ACCESS_API
91         select HAVE_STACKPROTECTOR
92         select HAVE_SYSCALL_TRACEPOINTS
93         select IRQ_DOMAIN
94         select MODULES_USE_ELF_RELA if MODULES
95         select MODULE_SECTIONS if MODULES
96         select OF
97         select OF_EARLY_FLATTREE
98         select OF_IRQ
99         select PCI_DOMAINS_GENERIC if PCI
100         select PCI_MSI if PCI
101         select RISCV_INTC
102         select RISCV_TIMER if RISCV_SBI
103         select SPARSE_IRQ
104         select SYSCTL_EXCEPTION_TRACE
105         select THREAD_INFO_IN_TASK
106         select UACCESS_MEMCPY if !MMU
107         select ZONE_DMA32 if 64BIT
108
109 config ARCH_MMAP_RND_BITS_MIN
110         default 18 if 64BIT
111         default 8
112
113 # max bits determined by the following formula:
114 #  VA_BITS - PAGE_SHIFT - 3
115 config ARCH_MMAP_RND_BITS_MAX
116         default 24 if 64BIT # SV39 based
117         default 17
118
119 # set if we run in machine mode, cleared if we run in supervisor mode
120 config RISCV_M_MODE
121         bool
122         default !MMU
123
124 # set if we are running in S-mode and can use SBI calls
125 config RISCV_SBI
126         bool
127         depends on !RISCV_M_MODE
128         default y
129
130 config MMU
131         bool "MMU-based Paged Memory Management Support"
132         default y
133         help
134           Select if you want MMU-based virtualised addressing space
135           support by paged memory management. If unsure, say 'Y'.
136
137 config VA_BITS
138         int
139         default 32 if 32BIT
140         default 39 if 64BIT
141
142 config PA_BITS
143         int
144         default 34 if 32BIT
145         default 56 if 64BIT
146
147 config PAGE_OFFSET
148         hex
149         default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB
150         default 0x80000000 if 64BIT && !MMU
151         default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
152         default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
153
154 config ARCH_FLATMEM_ENABLE
155         def_bool !NUMA
156
157 config ARCH_SPARSEMEM_ENABLE
158         def_bool y
159         depends on MMU
160         select SPARSEMEM_STATIC if 32BIT && SPARSEMEM
161         select SPARSEMEM_VMEMMAP_ENABLE if 64BIT
162
163 config ARCH_SELECT_MEMORY_MODEL
164         def_bool ARCH_SPARSEMEM_ENABLE
165
166 config ARCH_WANT_GENERAL_HUGETLB
167         def_bool y
168
169 config ARCH_SUPPORTS_UPROBES
170         def_bool y
171
172 config STACKTRACE_SUPPORT
173         def_bool y
174
175 config TRACE_IRQFLAGS_SUPPORT
176         def_bool y
177
178 config GENERIC_BUG
179         def_bool y
180         depends on BUG
181         select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
182
183 config GENERIC_BUG_RELATIVE_POINTERS
184         bool
185
186 config GENERIC_CALIBRATE_DELAY
187         def_bool y
188
189 config GENERIC_CSUM
190         def_bool y
191
192 config GENERIC_HWEIGHT
193         def_bool y
194
195 config FIX_EARLYCON_MEM
196         def_bool MMU
197
198 config PGTABLE_LEVELS
199         int
200         default 3 if 64BIT
201         default 2
202
203 config LOCKDEP_SUPPORT
204         def_bool y
205
206 source "arch/riscv/Kconfig.socs"
207 source "arch/riscv/Kconfig.erratas"
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 !XIP_KERNEL && MMU && $(cc-option,-fpatchable-function-entry=8)
232         select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
233         select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL
234         select HAVE_FUNCTION_GRAPH_TRACER
235         select HAVE_FUNCTION_TRACER if !XIP_KERNEL
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 NUMA
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
391 config KEXEC
392         bool "Kexec system call"
393         select KEXEC_CORE
394         select HOTPLUG_CPU if SMP
395         depends on MMU
396         help
397           kexec is a system call that implements the ability to shutdown your
398           current kernel, and to start another kernel. It is like a reboot
399           but it is independent of the system firmware. And like a reboot
400           you can start any kernel with it, not just Linux.
401
402           The name comes from the similarity to the exec system call.
403
404 config CRASH_DUMP
405         bool "Build kdump crash kernel"
406         help
407           Generate crash dump after being started by kexec. This should
408           be normally only set in special crash dump kernels which are
409           loaded in the main kernel with kexec-tools into a specially
410           reserved region and then later executed after a crash by
411           kdump/kexec.
412
413           For more details see Documentation/admin-guide/kdump/kdump.rst
414
415 endmenu
416
417 menu "Boot options"
418
419 config CMDLINE
420         string "Built-in kernel command line"
421         help
422           For most platforms, the arguments for the kernel's command line
423           are provided at run-time, during boot. However, there are cases
424           where either no arguments are being provided or the provided
425           arguments are insufficient or even invalid.
426
427           When that occurs, it is possible to define a built-in command
428           line here and choose how the kernel should use it later on.
429
430 choice
431         prompt "Built-in command line usage" if CMDLINE != ""
432         default CMDLINE_FALLBACK
433         help
434           Choose how the kernel will handle the provided built-in command
435           line.
436
437 config CMDLINE_FALLBACK
438         bool "Use bootloader kernel arguments if available"
439         help
440           Use the built-in command line as fallback in case we get nothing
441           during boot. This is the default behaviour.
442
443 config CMDLINE_EXTEND
444         bool "Extend bootloader kernel arguments"
445         help
446           The command-line arguments provided during boot will be
447           appended to the built-in command line. This is useful in
448           cases where the provided arguments are insufficient and
449           you don't want to or cannot modify them.
450
451
452 config CMDLINE_FORCE
453         bool "Always use the default kernel command string"
454         help
455           Always use the built-in command line, even if we get one during
456           boot. This is useful in case you need to override the provided
457           command line on systems where you don't have or want control
458           over it.
459
460 endchoice
461
462 config EFI_STUB
463         bool
464
465 config EFI
466         bool "UEFI runtime support"
467         depends on OF && !XIP_KERNEL
468         select LIBFDT
469         select UCS2_STRING
470         select EFI_PARAMS_FROM_FDT
471         select EFI_STUB
472         select EFI_GENERIC_STUB
473         select EFI_RUNTIME_WRAPPERS
474         select RISCV_ISA_C
475         depends on MMU
476         default y
477         help
478           This option provides support for runtime services provided
479           by UEFI firmware (such as non-volatile variables, realtime
480           clock, and platform reset). A UEFI stub is also provided to
481           allow the kernel to be booted as an EFI application. This
482           is only useful on systems that have UEFI firmware.
483
484 config CC_HAVE_STACKPROTECTOR_TLS
485         def_bool $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=tp -mstack-protector-guard-offset=0)
486
487 config STACKPROTECTOR_PER_TASK
488         def_bool y
489         depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_TLS
490
491 config PHYS_RAM_BASE_FIXED
492         bool "Explicitly specified physical RAM address"
493         default n
494
495 config PHYS_RAM_BASE
496         hex "Platform Physical RAM address"
497         depends on PHYS_RAM_BASE_FIXED
498         default "0x80000000"
499         help
500           This is the physical address of RAM in the system. It has to be
501           explicitly specified to run early relocations of read-write data
502           from flash to RAM.
503
504 config XIP_KERNEL
505         bool "Kernel Execute-In-Place from ROM"
506         depends on MMU && SPARSEMEM
507         # This prevents XIP from being enabled by all{yes,mod}config, which
508         # fail to build since XIP doesn't support large kernels.
509         depends on !COMPILE_TEST
510         select PHYS_RAM_BASE_FIXED
511         help
512           Execute-In-Place allows the kernel to run from non-volatile storage
513           directly addressable by the CPU, such as NOR flash. This saves RAM
514           space since the text section of the kernel is not loaded from flash
515           to RAM.  Read-write sections, such as the data section and stack,
516           are still copied to RAM.  The XIP kernel is not compressed since
517           it has to run directly from flash, so it will take more space to
518           store it.  The flash address used to link the kernel object files,
519           and for storing it, is configuration dependent. Therefore, if you
520           say Y here, you must know the proper physical address where to
521           store the kernel image depending on your own flash memory usage.
522
523           Also note that the make target becomes "make xipImage" rather than
524           "make zImage" or "make Image".  The final kernel binary to put in
525           ROM memory will be arch/riscv/boot/xipImage.
526
527           SPARSEMEM is required because the kernel text and rodata that are
528           flash resident are not backed by memmap, then any attempt to get
529           a struct page on those regions will trigger a fault.
530
531           If unsure, say N.
532
533 config XIP_PHYS_ADDR
534         hex "XIP Kernel Physical Location"
535         depends on XIP_KERNEL
536         default "0x21000000"
537         help
538           This is the physical address in your flash memory the kernel will
539           be linked for and stored to.  This address is dependent on your
540           own flash usage.
541
542 endmenu
543
544 config BUILTIN_DTB
545         bool
546         depends on OF
547         default y if XIP_KERNEL
548
549 menu "Power management options"
550
551 source "kernel/power/Kconfig"
552
553 endmenu
554
555 source "drivers/firmware/Kconfig"