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