xref: /linux/arch/riscv/Kconfig (revision d95f1a542c3df396137afa217ef9bd39cb8931ca)
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
7config 64BIT
8	bool
9
10config 32BIT
11	bool
12
13config 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
30	select GENERIC_STRNLEN_USER
31	select GENERIC_SMP_IDLE_THREAD
32	select GENERIC_ATOMIC64 if !64BIT
33	select HAVE_ARCH_AUDITSYSCALL
34	select HAVE_MEMBLOCK_NODE_MAP
35	select HAVE_DMA_CONTIGUOUS
36	select HAVE_FUTEX_CMPXCHG if FUTEX
37	select HAVE_PERF_EVENTS
38	select HAVE_SYSCALL_TRACEPOINTS
39	select IRQ_DOMAIN
40	select SPARSE_IRQ
41	select SYSCTL_EXCEPTION_TRACE
42	select HAVE_ARCH_TRACEHOOK
43	select HAVE_PCI
44	select MODULES_USE_ELF_RELA if MODULES
45	select MODULE_SECTIONS if MODULES
46	select THREAD_INFO_IN_TASK
47	select PCI_DOMAINS_GENERIC if PCI
48	select PCI_MSI if PCI
49	select RISCV_TIMER
50	select GENERIC_IRQ_MULTI_HANDLER
51	select GENERIC_ARCH_TOPOLOGY if SMP
52	select ARCH_HAS_PTE_SPECIAL
53	select ARCH_HAS_MMIOWB
54	select HAVE_EBPF_JIT if 64BIT
55	select EDAC_SUPPORT
56	select ARCH_HAS_GIGANTIC_PAGE
57	select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
58	select SPARSEMEM_STATIC if 32BIT
59
60config MMU
61	def_bool y
62
63config ZONE_DMA32
64	bool
65	default y if 64BIT
66
67config VA_BITS
68	int
69	default 32 if 32BIT
70	default 39 if 64BIT
71
72config PA_BITS
73	int
74	default 34 if 32BIT
75	default 56 if 64BIT
76
77config PAGE_OFFSET
78	hex
79	default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
80	default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
81	default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
82
83config ARCH_FLATMEM_ENABLE
84	def_bool y
85
86config ARCH_SPARSEMEM_ENABLE
87	def_bool y
88	select SPARSEMEM_VMEMMAP_ENABLE
89
90config ARCH_SELECT_MEMORY_MODEL
91	def_bool ARCH_SPARSEMEM_ENABLE
92
93config ARCH_WANT_GENERAL_HUGETLB
94	def_bool y
95
96config SYS_SUPPORTS_HUGETLBFS
97	def_bool y
98
99config STACKTRACE_SUPPORT
100	def_bool y
101
102config TRACE_IRQFLAGS_SUPPORT
103	def_bool y
104
105config GENERIC_BUG
106	def_bool y
107	depends on BUG
108	select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
109
110config GENERIC_BUG_RELATIVE_POINTERS
111	bool
112
113config GENERIC_CALIBRATE_DELAY
114	def_bool y
115
116config GENERIC_CSUM
117	def_bool y
118
119config GENERIC_HWEIGHT
120	def_bool y
121
122config FIX_EARLYCON_MEM
123	def_bool y
124
125config PGTABLE_LEVELS
126	int
127	default 3 if 64BIT
128	default 2
129
130source "arch/riscv/Kconfig.socs"
131
132menu "Platform type"
133
134choice
135	prompt "Base ISA"
136	default ARCH_RV64I
137	help
138	  This selects the base ISA that this kernel will target and must match
139	  the target platform.
140
141config ARCH_RV32I
142	bool "RV32I"
143	select 32BIT
144	select GENERIC_LIB_ASHLDI3
145	select GENERIC_LIB_ASHRDI3
146	select GENERIC_LIB_LSHRDI3
147	select GENERIC_LIB_UCMPDI2
148
149config ARCH_RV64I
150	bool "RV64I"
151	select 64BIT
152	select ARCH_SUPPORTS_INT128 if GCC_VERSION >= 50000
153	select HAVE_FUNCTION_TRACER
154	select HAVE_FUNCTION_GRAPH_TRACER
155	select HAVE_FTRACE_MCOUNT_RECORD
156	select HAVE_DYNAMIC_FTRACE
157	select HAVE_DYNAMIC_FTRACE_WITH_REGS
158	select SWIOTLB
159
160endchoice
161
162# We must be able to map all physical memory into the kernel, but the compiler
163# is still a bit more efficient when generating code if it's setup in a manner
164# such that it can only map 2GiB of memory.
165choice
166	prompt "Kernel Code Model"
167	default CMODEL_MEDLOW if 32BIT
168	default CMODEL_MEDANY if 64BIT
169
170	config CMODEL_MEDLOW
171		bool "medium low code model"
172	config CMODEL_MEDANY
173		bool "medium any code model"
174endchoice
175
176config MODULE_SECTIONS
177	bool
178	select HAVE_MOD_ARCH_SPECIFIC
179
180choice
181	prompt "Maximum Physical Memory"
182	default MAXPHYSMEM_2GB if 32BIT
183	default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
184	default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
185
186	config MAXPHYSMEM_2GB
187		bool "2GiB"
188	config MAXPHYSMEM_128GB
189		depends on 64BIT && CMODEL_MEDANY
190		bool "128GiB"
191endchoice
192
193
194config SMP
195	bool "Symmetric Multi-Processing"
196	help
197	  This enables support for systems with more than one CPU.  If
198	  you say N here, the kernel will run on single and
199	  multiprocessor machines, but will use only one CPU of a
200	  multiprocessor machine. If you say Y here, the kernel will run
201	  on many, but not all, single processor machines. On a single
202	  processor machine, the kernel will run faster if you say N
203	  here.
204
205	  If you don't know what to do here, say N.
206
207config NR_CPUS
208	int "Maximum number of CPUs (2-32)"
209	range 2 32
210	depends on SMP
211	default "8"
212
213choice
214	prompt "CPU Tuning"
215	default TUNE_GENERIC
216
217config TUNE_GENERIC
218	bool "generic"
219
220endchoice
221
222config RISCV_ISA_C
223	bool "Emit compressed instructions when building Linux"
224	default y
225	help
226	   Adds "C" to the ISA subsets that the toolchain is allowed to emit
227	   when building Linux, which results in compressed instructions in the
228	   Linux binary.
229
230	   If you don't know what to do here, say Y.
231
232menu "supported PMU type"
233	depends on PERF_EVENTS
234
235config RISCV_BASE_PMU
236	bool "Base Performance Monitoring Unit"
237	def_bool y
238	help
239	  A base PMU that serves as a reference implementation and has limited
240	  feature of perf.  It can run on any RISC-V machines so serves as the
241	  fallback, but this option can also be disable to reduce kernel size.
242
243endmenu
244
245config FPU
246	bool "FPU support"
247	default y
248	help
249	  Say N here if you want to disable all floating-point related procedure
250	  in the kernel.
251
252	  If you don't know what to do here, say Y.
253
254endmenu
255
256menu "Kernel features"
257
258source "kernel/Kconfig.hz"
259
260endmenu
261
262menu "Boot options"
263
264config CMDLINE
265	string "Built-in kernel command line"
266	help
267	  For most platforms, the arguments for the kernel's command line
268	  are provided at run-time, during boot. However, there are cases
269	  where either no arguments are being provided or the provided
270	  arguments are insufficient or even invalid.
271
272	  When that occurs, it is possible to define a built-in command
273	  line here and choose how the kernel should use it later on.
274
275choice
276	prompt "Built-in command line usage" if CMDLINE != ""
277	default CMDLINE_FALLBACK
278	help
279	  Choose how the kernel will handle the provided built-in command
280	  line.
281
282config CMDLINE_FALLBACK
283	bool "Use bootloader kernel arguments if available"
284	help
285	  Use the built-in command line as fallback in case we get nothing
286	  during boot. This is the default behaviour.
287
288config CMDLINE_EXTEND
289	bool "Extend bootloader kernel arguments"
290	help
291	  The command-line arguments provided during boot will be
292	  appended to the built-in command line. This is useful in
293	  cases where the provided arguments are insufficient and
294	  you don't want to or cannot modify them.
295
296
297config CMDLINE_FORCE
298	bool "Always use the default kernel command string"
299	help
300	  Always use the built-in command line, even if we get one during
301	  boot. This is useful in case you need to override the provided
302	  command line on systems where you don't have or want control
303	  over it.
304
305endchoice
306
307endmenu
308
309menu "Power management options"
310
311source "kernel/power/Kconfig"
312
313endmenu
314