xref: /openbmc/linux/arch/riscv/Kconfig (revision ba61bb17)
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_STRNCPY_FROM_USER
28	select GENERIC_STRNLEN_USER
29	select GENERIC_SMP_IDLE_THREAD
30	select GENERIC_ATOMIC64 if !64BIT || !RISCV_ISA_A
31	select HAVE_MEMBLOCK
32	select HAVE_MEMBLOCK_NODE_MAP
33	select HAVE_DMA_CONTIGUOUS
34	select HAVE_GENERIC_DMA_COHERENT
35	select HAVE_PERF_EVENTS
36	select IRQ_DOMAIN
37	select NO_BOOTMEM
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
111config ARCH_RV64I
112	bool "RV64I"
113	select 64BIT
114	select HAVE_FUNCTION_TRACER
115	select HAVE_FUNCTION_GRAPH_TRACER
116	select HAVE_FTRACE_MCOUNT_RECORD
117	select HAVE_DYNAMIC_FTRACE
118	select HAVE_DYNAMIC_FTRACE_WITH_REGS
119	select SWIOTLB
120
121endchoice
122
123# We must be able to map all physical memory into the kernel, but the compiler
124# is still a bit more efficient when generating code if it's setup in a manner
125# such that it can only map 2GiB of memory.
126choice
127	prompt "Kernel Code Model"
128	default CMODEL_MEDLOW if 32BIT
129	default CMODEL_MEDANY if 64BIT
130
131	config CMODEL_MEDLOW
132		bool "medium low code model"
133	config CMODEL_MEDANY
134		bool "medium any code model"
135endchoice
136
137config MODULE_SECTIONS
138	bool
139	select HAVE_MOD_ARCH_SPECIFIC
140
141choice
142	prompt "Maximum Physical Memory"
143	default MAXPHYSMEM_2GB if 32BIT
144	default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
145	default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
146
147	config MAXPHYSMEM_2GB
148		bool "2GiB"
149	config MAXPHYSMEM_128GB
150		depends on 64BIT && CMODEL_MEDANY
151		select MODULE_SECTIONS if MODULES
152		bool "128GiB"
153endchoice
154
155
156config SMP
157	bool "Symmetric Multi-Processing"
158	help
159	  This enables support for systems with more than one CPU.  If
160	  you say N here, the kernel will run on single and
161	  multiprocessor machines, but will use only one CPU of a
162	  multiprocessor machine. If you say Y here, the kernel will run
163	  on many, but not all, single processor machines. On a single
164	  processor machine, the kernel will run faster if you say N
165	  here.
166
167	  If you don't know what to do here, say N.
168
169config NR_CPUS
170	int "Maximum number of CPUs (2-32)"
171	range 2 32
172	depends on SMP
173	default "8"
174
175choice
176	prompt "CPU Tuning"
177	default TUNE_GENERIC
178
179config TUNE_GENERIC
180	bool "generic"
181
182endchoice
183
184config RISCV_ISA_C
185	bool "Emit compressed instructions when building Linux"
186	default y
187	help
188	   Adds "C" to the ISA subsets that the toolchain is allowed to emit
189	   when building Linux, which results in compressed instructions in the
190	   Linux binary.
191
192	   If you don't know what to do here, say Y.
193
194config RISCV_ISA_A
195	def_bool y
196
197menu "supported PMU type"
198	depends on PERF_EVENTS
199
200config RISCV_BASE_PMU
201	bool "Base Performance Monitoring Unit"
202	def_bool y
203	help
204	  A base PMU that serves as a reference implementation and has limited
205	  feature of perf.  It can run on any RISC-V machines so serves as the
206	  fallback, but this option can also be disable to reduce kernel size.
207
208endmenu
209
210endmenu
211
212menu "Kernel type"
213
214source "mm/Kconfig"
215
216source "kernel/Kconfig.preempt"
217
218source "kernel/Kconfig.hz"
219
220endmenu
221
222menu "Bus support"
223
224config PCI
225	bool "PCI support"
226	select PCI_MSI
227	help
228	  This feature enables support for PCI bus system. If you say Y
229	  here, the kernel will include drivers and infrastructure code
230	  to support PCI bus devices.
231
232	  If you don't know what to do here, say Y.
233
234config PCI_DOMAINS
235	def_bool PCI
236
237config PCI_DOMAINS_GENERIC
238	def_bool PCI
239
240source "drivers/pci/Kconfig"
241
242endmenu
243
244source "init/Kconfig"
245
246source "kernel/Kconfig.freezer"
247
248menu "Executable file formats"
249
250source "fs/Kconfig.binfmt"
251
252endmenu
253
254menu "Power management options"
255
256source kernel/power/Kconfig
257
258endmenu
259
260source "net/Kconfig"
261
262source "drivers/Kconfig"
263
264source "fs/Kconfig"
265
266menu "Kernel hacking"
267
268config CMDLINE_BOOL
269	bool "Built-in kernel command line"
270	help
271	  For most platforms, it is firmware or second stage bootloader
272	  that by default specifies the kernel command line options.
273	  However, it might be necessary or advantageous to either override
274	  the default kernel command line or add a few extra options to it.
275	  For such cases, this option allows hardcoding command line options
276	  directly into the kernel.
277
278	  For that, choose 'Y' here and fill in the extra boot parameters
279	  in CONFIG_CMDLINE.
280
281	  The built-in options will be concatenated to the default command
282	  line if CMDLINE_FORCE is set to 'N'. Otherwise, the default
283	  command line will be ignored and replaced by the built-in string.
284
285config CMDLINE
286	string "Built-in kernel command string"
287	depends on CMDLINE_BOOL
288	default ""
289	help
290	  Supply command-line options at build time by entering them here.
291
292config CMDLINE_FORCE
293	bool "Built-in command line overrides bootloader arguments"
294	depends on CMDLINE_BOOL
295	help
296	  Set this option to 'Y' to have the kernel ignore the bootloader
297	  or firmware command line.  Instead, the built-in command line
298	  will be used exclusively.
299
300	  If you don't know what to do here, say N.
301
302config EARLY_PRINTK
303	def_bool y
304
305source "lib/Kconfig.debug"
306
307config CMDLINE_BOOL
308	bool
309endmenu
310
311source "security/Kconfig"
312
313source "crypto/Kconfig"
314
315source "lib/Kconfig"
316