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