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