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