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