xref: /openbmc/linux/arch/riscv/Kconfig (revision 5927145e)
1#
2# For a description of the syntax of this configuration file,
3# see Documentation/kbuild/kconfig-language.txt.
4#
5
6config RISCV
7	def_bool y
8	select OF
9	select OF_EARLY_FLATTREE
10	select OF_IRQ
11	select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
12	select ARCH_WANT_FRAME_POINTERS
13	select CLONE_BACKWARDS
14	select COMMON_CLK
15	select GENERIC_CLOCKEVENTS
16	select GENERIC_CPU_DEVICES
17	select GENERIC_IRQ_SHOW
18	select GENERIC_PCI_IOMAP
19	select GENERIC_STRNCPY_FROM_USER
20	select GENERIC_STRNLEN_USER
21	select GENERIC_SMP_IDLE_THREAD
22	select GENERIC_ATOMIC64 if !64BIT || !RISCV_ISA_A
23	select ARCH_WANT_OPTIONAL_GPIOLIB
24	select HAVE_MEMBLOCK
25	select HAVE_MEMBLOCK_NODE_MAP
26	select HAVE_DMA_API_DEBUG
27	select HAVE_DMA_CONTIGUOUS
28	select HAVE_GENERIC_DMA_COHERENT
29	select IRQ_DOMAIN
30	select NO_BOOTMEM
31	select RISCV_ISA_A if SMP
32	select SPARSE_IRQ
33	select SYSCTL_EXCEPTION_TRACE
34	select HAVE_ARCH_TRACEHOOK
35	select MODULES_USE_ELF_RELA if MODULES
36	select THREAD_INFO_IN_TASK
37	select RISCV_IRQ_INTC
38	select RISCV_TIMER
39
40config MMU
41	def_bool y
42
43# even on 32-bit, physical (and DMA) addresses are > 32-bits
44config ARCH_PHYS_ADDR_T_64BIT
45	def_bool y
46
47config ZONE_DMA32
48	bool
49	default y
50
51config ARCH_DMA_ADDR_T_64BIT
52	def_bool y
53
54config PAGE_OFFSET
55	hex
56	default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
57	default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
58	default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
59
60config STACKTRACE_SUPPORT
61	def_bool y
62
63config TRACE_IRQFLAGS_SUPPORT
64	def_bool y
65
66config RWSEM_GENERIC_SPINLOCK
67	def_bool y
68
69config GENERIC_BUG
70	def_bool y
71	depends on BUG
72	select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
73
74config GENERIC_BUG_RELATIVE_POINTERS
75	bool
76
77config GENERIC_CALIBRATE_DELAY
78	def_bool y
79
80config GENERIC_CSUM
81	def_bool y
82
83config GENERIC_HWEIGHT
84	def_bool y
85
86config PGTABLE_LEVELS
87	int
88	default 3 if 64BIT
89	default 2
90
91config HAVE_KPROBES
92	def_bool n
93
94config DMA_DIRECT_OPS
95	def_bool y
96
97menu "Platform type"
98
99choice
100	prompt "Base ISA"
101	default ARCH_RV64I
102	help
103	  This selects the base ISA that this kernel will traget and must match
104	  the target platform.
105
106config ARCH_RV32I
107	bool "RV32I"
108	select CPU_SUPPORTS_32BIT_KERNEL
109	select 32BIT
110	select GENERIC_ASHLDI3
111	select GENERIC_ASHRDI3
112	select GENERIC_LSHRDI3
113
114config ARCH_RV64I
115	bool "RV64I"
116	select CPU_SUPPORTS_64BIT_KERNEL
117	select 64BIT
118	select HAVE_FUNCTION_TRACER
119	select HAVE_FUNCTION_GRAPH_TRACER
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
137choice
138	prompt "Maximum Physical Memory"
139	default MAXPHYSMEM_2GB if 32BIT
140	default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
141	default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
142
143	config MAXPHYSMEM_2GB
144		bool "2GiB"
145	config MAXPHYSMEM_128GB
146		depends on 64BIT && CMODEL_MEDANY
147		bool "128GiB"
148endchoice
149
150
151config SMP
152	bool "Symmetric Multi-Processing"
153	help
154	  This enables support for systems with more than one CPU.  If
155	  you say N here, the kernel will run on single and
156	  multiprocessor machines, but will use only one CPU of a
157	  multiprocessor machine. If you say Y here, the kernel will run
158	  on many, but not all, single processor machines. On a single
159	  processor machine, the kernel will run faster if you say N
160	  here.
161
162	  If you don't know what to do here, say N.
163
164config NR_CPUS
165	int "Maximum number of CPUs (2-32)"
166	range 2 32
167	depends on SMP
168	default "8"
169
170config CPU_SUPPORTS_32BIT_KERNEL
171	bool
172config CPU_SUPPORTS_64BIT_KERNEL
173	bool
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
197endmenu
198
199menu "Kernel type"
200
201choice
202	prompt "Kernel code model"
203	default 64BIT
204
205config 32BIT
206	bool "32-bit kernel"
207	depends on CPU_SUPPORTS_32BIT_KERNEL
208	help
209	  Select this option to build a 32-bit kernel.
210
211config 64BIT
212	bool "64-bit kernel"
213	depends on CPU_SUPPORTS_64BIT_KERNEL
214	help
215	  Select this option to build a 64-bit kernel.
216
217endchoice
218
219source "mm/Kconfig"
220
221source "kernel/Kconfig.preempt"
222
223source "kernel/Kconfig.hz"
224
225endmenu
226
227menu "Bus support"
228
229config PCI
230	bool "PCI support"
231	select PCI_MSI
232	help
233	  This feature enables support for PCI bus system. If you say Y
234	  here, the kernel will include drivers and infrastructure code
235	  to support PCI bus devices.
236
237	  If you don't know what to do here, say Y.
238
239config PCI_DOMAINS
240	def_bool PCI
241
242config PCI_DOMAINS_GENERIC
243	def_bool PCI
244
245source "drivers/pci/Kconfig"
246
247endmenu
248
249source "init/Kconfig"
250
251source "kernel/Kconfig.freezer"
252
253menu "Executable file formats"
254
255source "fs/Kconfig.binfmt"
256
257endmenu
258
259menu "Power management options"
260
261source kernel/power/Kconfig
262
263endmenu
264
265source "net/Kconfig"
266
267source "drivers/Kconfig"
268
269source "fs/Kconfig"
270
271menu "Kernel hacking"
272
273config CMDLINE_BOOL
274	bool "Built-in kernel command line"
275	help
276	  For most platforms, it is firmware or second stage bootloader
277	  that by default specifies the kernel command line options.
278	  However, it might be necessary or advantageous to either override
279	  the default kernel command line or add a few extra options to it.
280	  For such cases, this option allows hardcoding command line options
281	  directly into the kernel.
282
283	  For that, choose 'Y' here and fill in the extra boot parameters
284	  in CONFIG_CMDLINE.
285
286	  The built-in options will be concatenated to the default command
287	  line if CMDLINE_OVERRIDE is set to 'N'. Otherwise, the default
288	  command line will be ignored and replaced by the built-in string.
289
290config CMDLINE
291	string "Built-in kernel command string"
292	depends on CMDLINE_BOOL
293	default ""
294	help
295	  Supply command-line options at build time by entering them here.
296
297config CMDLINE_OVERRIDE
298	bool "Built-in command line overrides bootloader arguments"
299	depends on CMDLINE_BOOL
300	help
301	  Set this option to 'Y' to have the kernel ignore the bootloader
302	  or firmware command line.  Instead, the built-in command line
303	  will be used exclusively.
304
305	  If you don't know what to do here, say N.
306
307config EARLY_PRINTK
308	def_bool y
309
310source "lib/Kconfig.debug"
311
312config CMDLINE_BOOL
313	bool
314endmenu
315
316source "security/Kconfig"
317
318source "crypto/Kconfig"
319
320source "lib/Kconfig"
321