xref: /linux/arch/riscv/Kconfig (revision 10626c32e3827bca560217966f5bd586c4e91584)
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_DMA_API_DEBUG
26	select HAVE_DMA_CONTIGUOUS
27	select HAVE_GENERIC_DMA_COHERENT
28	select IRQ_DOMAIN
29	select NO_BOOTMEM
30	select RISCV_ISA_A if SMP
31	select SPARSE_IRQ
32	select SYSCTL_EXCEPTION_TRACE
33	select HAVE_ARCH_TRACEHOOK
34	select MODULES_USE_ELF_RELA if MODULES
35	select THREAD_INFO_IN_TASK
36	select RISCV_IRQ_INTC
37	select RISCV_TIMER
38
39config MMU
40	def_bool y
41
42# even on 32-bit, physical (and DMA) addresses are > 32-bits
43config ARCH_PHYS_ADDR_T_64BIT
44	def_bool y
45
46config ARCH_DMA_ADDR_T_64BIT
47	def_bool y
48
49config PAGE_OFFSET
50	hex
51	default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
52	default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
53	default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
54
55config STACKTRACE_SUPPORT
56	def_bool y
57
58config TRACE_IRQFLAGS_SUPPORT
59	def_bool y
60
61config RWSEM_GENERIC_SPINLOCK
62	def_bool y
63
64config GENERIC_BUG
65	def_bool y
66	depends on BUG
67	select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
68
69config GENERIC_BUG_RELATIVE_POINTERS
70	bool
71
72config GENERIC_CALIBRATE_DELAY
73	def_bool y
74
75config GENERIC_CSUM
76	def_bool y
77
78config GENERIC_HWEIGHT
79	def_bool y
80
81config PGTABLE_LEVELS
82	int
83	default 3 if 64BIT
84	default 2
85
86config HAVE_KPROBES
87	def_bool n
88
89config DMA_NOOP_OPS
90	def_bool y
91
92menu "Platform type"
93
94choice
95	prompt "Base ISA"
96	default ARCH_RV64I
97	help
98	  This selects the base ISA that this kernel will traget and must match
99	  the target platform.
100
101config ARCH_RV32I
102	bool "RV32I"
103	select CPU_SUPPORTS_32BIT_KERNEL
104	select 32BIT
105	select GENERIC_ASHLDI3
106	select GENERIC_ASHRDI3
107	select GENERIC_LSHRDI3
108
109config ARCH_RV64I
110	bool "RV64I"
111	select CPU_SUPPORTS_64BIT_KERNEL
112	select 64BIT
113	select HAVE_FUNCTION_TRACER
114	select HAVE_FUNCTION_GRAPH_TRACER
115
116endchoice
117
118# We must be able to map all physical memory into the kernel, but the compiler
119# is still a bit more efficient when generating code if it's setup in a manner
120# such that it can only map 2GiB of memory.
121choice
122	prompt "Kernel Code Model"
123	default CMODEL_MEDLOW if 32BIT
124	default CMODEL_MEDANY if 64BIT
125
126	config CMODEL_MEDLOW
127		bool "medium low code model"
128	config CMODEL_MEDANY
129		bool "medium any code model"
130endchoice
131
132choice
133	prompt "Maximum Physical Memory"
134	default MAXPHYSMEM_2GB if 32BIT
135	default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
136	default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
137
138	config MAXPHYSMEM_2GB
139		bool "2GiB"
140	config MAXPHYSMEM_128GB
141		depends on 64BIT && CMODEL_MEDANY
142		bool "128GiB"
143endchoice
144
145
146config SMP
147	bool "Symmetric Multi-Processing"
148	help
149	  This enables support for systems with more than one CPU.  If
150	  you say N here, the kernel will run on single and
151	  multiprocessor machines, but will use only one CPU of a
152	  multiprocessor machine. If you say Y here, the kernel will run
153	  on many, but not all, single processor machines. On a single
154	  processor machine, the kernel will run faster if you say N
155	  here.
156
157	  If you don't know what to do here, say N.
158
159config NR_CPUS
160	int "Maximum number of CPUs (2-32)"
161	range 2 32
162	depends on SMP
163	default "8"
164
165config CPU_SUPPORTS_32BIT_KERNEL
166	bool
167config CPU_SUPPORTS_64BIT_KERNEL
168	bool
169
170choice
171	prompt "CPU Tuning"
172	default TUNE_GENERIC
173
174config TUNE_GENERIC
175	bool "generic"
176
177endchoice
178
179config RISCV_ISA_C
180	bool "Emit compressed instructions when building Linux"
181	default y
182	help
183	   Adds "C" to the ISA subsets that the toolchain is allowed to emit
184	   when building Linux, which results in compressed instructions in the
185	   Linux binary.
186
187	   If you don't know what to do here, say Y.
188
189config RISCV_ISA_A
190	def_bool y
191
192endmenu
193
194menu "Kernel type"
195
196choice
197	prompt "Kernel code model"
198	default 64BIT
199
200config 32BIT
201	bool "32-bit kernel"
202	depends on CPU_SUPPORTS_32BIT_KERNEL
203	help
204	  Select this option to build a 32-bit kernel.
205
206config 64BIT
207	bool "64-bit kernel"
208	depends on CPU_SUPPORTS_64BIT_KERNEL
209	help
210	  Select this option to build a 64-bit kernel.
211
212endchoice
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_OVERRIDE 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_OVERRIDE
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