WIP FPC-III support
[linux/fpc-iii.git] / arch / riscv / Kconfig
blob4b12af79321e36f3126b7d123bbb919d3f0b603a
1 # SPDX-License-Identifier: GPL-2.0-only
3 # For a description of the syntax of this configuration file,
4 # see Documentation/kbuild/kconfig-language.rst.
7 config 64BIT
8         bool
10 config 32BIT
11         bool
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 CLONE_BACKWARDS
37         select CLINT_TIMER if !MMU
38         select COMMON_CLK
39         select EDAC_SUPPORT
40         select GENERIC_ARCH_TOPOLOGY if SMP
41         select GENERIC_ATOMIC64 if !64BIT
42         select GENERIC_EARLY_IOREMAP
43         select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
44         select GENERIC_IOREMAP
45         select GENERIC_IRQ_MULTI_HANDLER
46         select GENERIC_IRQ_SHOW
47         select GENERIC_LIB_DEVMEM_IS_ALLOWED
48         select GENERIC_PCI_IOMAP
49         select GENERIC_PTDUMP if MMU
50         select GENERIC_SCHED_CLOCK
51         select GENERIC_SMP_IDLE_THREAD
52         select GENERIC_STRNCPY_FROM_USER if MMU
53         select GENERIC_STRNLEN_USER if MMU
54         select GENERIC_TIME_VSYSCALL if MMU && 64BIT
55         select HANDLE_DOMAIN_IRQ
56         select HAVE_ARCH_AUDITSYSCALL
57         select HAVE_ARCH_JUMP_LABEL
58         select HAVE_ARCH_JUMP_LABEL_RELATIVE
59         select HAVE_ARCH_KASAN if MMU && 64BIT
60         select HAVE_ARCH_KGDB
61         select HAVE_ARCH_KGDB_QXFER_PKT
62         select HAVE_ARCH_MMAP_RND_BITS if MMU
63         select HAVE_ARCH_SECCOMP_FILTER
64         select HAVE_ARCH_TRACEHOOK
65         select HAVE_ASM_MODVERSIONS
66         select HAVE_CONTEXT_TRACKING
67         select HAVE_DEBUG_KMEMLEAK
68         select HAVE_DMA_CONTIGUOUS if MMU
69         select HAVE_EBPF_JIT if MMU
70         select HAVE_FUTEX_CMPXCHG if FUTEX
71         select HAVE_GCC_PLUGINS
72         select HAVE_GENERIC_VDSO if MMU && 64BIT
73         select HAVE_IRQ_TIME_ACCOUNTING
74         select HAVE_PCI
75         select HAVE_PERF_EVENTS
76         select HAVE_PERF_REGS
77         select HAVE_PERF_USER_STACK_DUMP
78         select HAVE_STACKPROTECTOR
79         select HAVE_SYSCALL_TRACEPOINTS
80         select IRQ_DOMAIN
81         select MODULES_USE_ELF_RELA if MODULES
82         select MODULE_SECTIONS if MODULES
83         select OF
84         select OF_EARLY_FLATTREE
85         select OF_IRQ
86         select PCI_DOMAINS_GENERIC if PCI
87         select PCI_MSI if PCI
88         select RISCV_INTC
89         select RISCV_TIMER if RISCV_SBI
90         select SPARSEMEM_STATIC if 32BIT
91         select SPARSE_IRQ
92         select SYSCTL_EXCEPTION_TRACE
93         select THREAD_INFO_IN_TASK
94         select UACCESS_MEMCPY if !MMU
95         select HANDLE_DOMAIN_IRQ # FIXME: should go in Kconfigs.soc !!!
97 config ARCH_MMAP_RND_BITS_MIN
98         default 18 if 64BIT
99         default 8
101 # max bits determined by the following formula:
102 #  VA_BITS - PAGE_SHIFT - 3
103 config ARCH_MMAP_RND_BITS_MAX
104         default 24 if 64BIT # SV39 based
105         default 17
107 # set if we run in machine mode, cleared if we run in supervisor mode
108 config RISCV_M_MODE
109         bool
110         default !MMU
112 # set if we are running in S-mode and can use SBI calls
113 config RISCV_SBI
114         bool
115         depends on !RISCV_M_MODE
116         default y
118 config MMU
119         bool "MMU-based Paged Memory Management Support"
120         default y
121         help
122           Select if you want MMU-based virtualised addressing space
123           support by paged memory management. If unsure, say 'Y'.
125 config ZONE_DMA32
126         bool
127         default y if 64BIT
129 config VA_BITS
130         int
131         default 32 if 32BIT
132         default 39 if 64BIT
134 config PA_BITS
135         int
136         default 34 if 32BIT
137         default 56 if 64BIT
139 config PAGE_OFFSET
140         hex
141         default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
142         default 0x80000000 if 64BIT && !MMU
143         default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
144         default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
146 config ARCH_FLATMEM_ENABLE
147         def_bool y
149 config ARCH_SPARSEMEM_ENABLE
150         def_bool y
151         depends on MMU
152         select SPARSEMEM_VMEMMAP_ENABLE
154 config ARCH_SELECT_MEMORY_MODEL
155         def_bool ARCH_SPARSEMEM_ENABLE
157 config ARCH_WANT_GENERAL_HUGETLB
158         def_bool y
160 config SYS_SUPPORTS_HUGETLBFS
161         depends on MMU
162         def_bool y
164 config STACKTRACE_SUPPORT
165         def_bool y
167 config TRACE_IRQFLAGS_SUPPORT
168         def_bool y
170 config GENERIC_BUG
171         def_bool y
172         depends on BUG
173         select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
175 config GENERIC_BUG_RELATIVE_POINTERS
176         bool
178 config GENERIC_CALIBRATE_DELAY
179         def_bool y
181 config GENERIC_CSUM
182         def_bool y
184 config GENERIC_HWEIGHT
185         def_bool y
187 config FIX_EARLYCON_MEM
188         def_bool MMU
190 config PGTABLE_LEVELS
191         int
192         default 3 if 64BIT
193         default 2
195 config LOCKDEP_SUPPORT
196         def_bool y
198 source "arch/riscv/Kconfig.socs"
200 menu "Platform type"
202 choice
203         prompt "Base ISA"
204         default ARCH_RV64I
205         help
206           This selects the base ISA that this kernel will target and must match
207           the target platform.
209 config ARCH_RV32I
210         bool "RV32I"
211         select 32BIT
212         select GENERIC_LIB_ASHLDI3
213         select GENERIC_LIB_ASHRDI3
214         select GENERIC_LIB_LSHRDI3
215         select GENERIC_LIB_UCMPDI2
216         select MMU
218 config ARCH_RV64I
219         bool "RV64I"
220         select 64BIT
221         select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000
222         select HAVE_DYNAMIC_FTRACE if MMU
223         select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
224         select HAVE_FTRACE_MCOUNT_RECORD
225         select HAVE_FUNCTION_GRAPH_TRACER
226         select HAVE_FUNCTION_TRACER
227         select SWIOTLB if MMU
229 endchoice
231 # We must be able to map all physical memory into the kernel, but the compiler
232 # is still a bit more efficient when generating code if it's setup in a manner
233 # such that it can only map 2GiB of memory.
234 choice
235         prompt "Kernel Code Model"
236         default CMODEL_MEDLOW if 32BIT
237         default CMODEL_MEDANY if 64BIT
239         config CMODEL_MEDLOW
240                 bool "medium low code model"
241         config CMODEL_MEDANY
242                 bool "medium any code model"
243 endchoice
245 config MODULE_SECTIONS
246         bool
247         select HAVE_MOD_ARCH_SPECIFIC
249 choice
250         prompt "Maximum Physical Memory"
251         default MAXPHYSMEM_2GB if 32BIT
252         default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
253         default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
255         config MAXPHYSMEM_2GB
256                 bool "2GiB"
257         config MAXPHYSMEM_128GB
258                 depends on 64BIT && CMODEL_MEDANY
259                 bool "128GiB"
260 endchoice
263 config SMP
264         bool "Symmetric Multi-Processing"
265         help
266           This enables support for systems with more than one CPU.  If
267           you say N here, the kernel will run on single and
268           multiprocessor machines, but will use only one CPU of a
269           multiprocessor machine. If you say Y here, the kernel will run
270           on many, but not all, single processor machines. On a single
271           processor machine, the kernel will run faster if you say N
272           here.
274           If you don't know what to do here, say N.
276 config NR_CPUS
277         int "Maximum number of CPUs (2-32)"
278         range 2 32
279         depends on SMP
280         default "8"
282 config HOTPLUG_CPU
283         bool "Support for hot-pluggable CPUs"
284         depends on SMP
285         select GENERIC_IRQ_MIGRATION
286         help
288           Say Y here to experiment with turning CPUs off and on.  CPUs
289           can be controlled through /sys/devices/system/cpu.
291           Say N if you want to disable CPU hotplug.
293 choice
294         prompt "CPU Tuning"
295         default TUNE_GENERIC
297 config TUNE_GENERIC
298         bool "generic"
300 endchoice
302 config RISCV_ISA_C
303         bool "Emit compressed instructions when building Linux"
304         default y
305         help
306            Adds "C" to the ISA subsets that the toolchain is allowed to emit
307            when building Linux, which results in compressed instructions in the
308            Linux binary.
310            If you don't know what to do here, say Y.
312 menu "supported PMU type"
313         depends on PERF_EVENTS
315 config RISCV_BASE_PMU
316         bool "Base Performance Monitoring Unit"
317         def_bool y
318         help
319           A base PMU that serves as a reference implementation and has limited
320           feature of perf.  It can run on any RISC-V machines so serves as the
321           fallback, but this option can also be disable to reduce kernel size.
323 endmenu
325 config FPU
326         bool "FPU support"
327         default y
328         help
329           Say N here if you want to disable all floating-point related procedure
330           in the kernel.
332           If you don't know what to do here, say Y.
334 endmenu
336 menu "Kernel features"
338 source "kernel/Kconfig.hz"
340 config RISCV_SBI_V01
341         bool "SBI v0.1 support"
342         default y
343         depends on RISCV_SBI
344         help
345           This config allows kernel to use SBI v0.1 APIs. This will be
346           deprecated in future once legacy M-mode software are no longer in use.
347 endmenu
349 menu "Boot options"
351 config CMDLINE
352         string "Built-in kernel command line"
353         help
354           For most platforms, the arguments for the kernel's command line
355           are provided at run-time, during boot. However, there are cases
356           where either no arguments are being provided or the provided
357           arguments are insufficient or even invalid.
359           When that occurs, it is possible to define a built-in command
360           line here and choose how the kernel should use it later on.
362 choice
363         prompt "Built-in command line usage" if CMDLINE != ""
364         default CMDLINE_FALLBACK
365         help
366           Choose how the kernel will handle the provided built-in command
367           line.
369 config CMDLINE_FALLBACK
370         bool "Use bootloader kernel arguments if available"
371         help
372           Use the built-in command line as fallback in case we get nothing
373           during boot. This is the default behaviour.
375 config CMDLINE_EXTEND
376         bool "Extend bootloader kernel arguments"
377         help
378           The command-line arguments provided during boot will be
379           appended to the built-in command line. This is useful in
380           cases where the provided arguments are insufficient and
381           you don't want to or cannot modify them.
384 config CMDLINE_FORCE
385         bool "Always use the default kernel command string"
386         help
387           Always use the built-in command line, even if we get one during
388           boot. This is useful in case you need to override the provided
389           command line on systems where you don't have or want control
390           over it.
392 endchoice
394 config EFI_STUB
395         bool
397 config EFI
398         bool "UEFI runtime support"
399         depends on OF
400         select LIBFDT
401         select UCS2_STRING
402         select EFI_PARAMS_FROM_FDT
403         select EFI_STUB
404         select EFI_GENERIC_STUB
405         select EFI_RUNTIME_WRAPPERS
406         select RISCV_ISA_C
407         depends on MMU
408         default y
409         help
410           This option provides support for runtime services provided
411           by UEFI firmware (such as non-volatile variables, realtime
412           clock, and platform reset). A UEFI stub is also provided to
413           allow the kernel to be booted as an EFI application. This
414           is only useful on systems that have UEFI firmware.
416 endmenu
418 config BUILTIN_DTB
419         def_bool n
420         depends on RISCV_M_MODE
421         depends on OF
423 menu "Power management options"
425 source "kernel/power/Kconfig"
427 endmenu
429 source "drivers/firmware/Kconfig"