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