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