• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# SPDX-License-Identifier: GPL-2.0-only
2#
3# For a description of the syntax of this configuration file,
4# see Documentation/kbuild/kconfig-language.rst.
5#
6
7config 64BIT
8	bool
9
10config 32BIT
11	bool
12
13config RISCV
14	def_bool y
15	# even on 32-bit, physical (and DMA) addresses are > 32-bits
16	select PHYS_ADDR_T_64BIT
17	select OF
18	select OF_EARLY_FLATTREE
19	select OF_IRQ
20	select ARCH_HAS_BINFMT_FLAT
21	select ARCH_WANT_FRAME_POINTERS
22	select CLONE_BACKWARDS
23	select COMMON_CLK
24	select GENERIC_CLOCKEVENTS
25	select GENERIC_CPU_DEVICES
26	select GENERIC_IRQ_SHOW
27	select GENERIC_PCI_IOMAP
28	select GENERIC_SCHED_CLOCK
29	select GENERIC_STRNCPY_FROM_USER
30	select GENERIC_STRNLEN_USER
31	select GENERIC_SMP_IDLE_THREAD
32	select GENERIC_ATOMIC64 if !64BIT
33	select HAVE_ARCH_AUDITSYSCALL
34	select HAVE_ASM_MODVERSIONS
35	select HAVE_MEMBLOCK_NODE_MAP
36	select HAVE_DMA_CONTIGUOUS
37	select HAVE_FUTEX_CMPXCHG if FUTEX
38	select HAVE_PERF_EVENTS
39	select HAVE_PERF_REGS
40	select HAVE_PERF_USER_STACK_DUMP
41	select HAVE_SYSCALL_TRACEPOINTS
42	select IRQ_DOMAIN
43	select SPARSE_IRQ
44	select SYSCTL_EXCEPTION_TRACE
45	select HAVE_ARCH_TRACEHOOK
46	select HAVE_PCI
47	select MODULES_USE_ELF_RELA if MODULES
48	select MODULE_SECTIONS if MODULES
49	select THREAD_INFO_IN_TASK
50	select PCI_DOMAINS_GENERIC if PCI
51	select PCI_MSI if PCI
52	select RISCV_TIMER
53	select GENERIC_IRQ_MULTI_HANDLER
54	select GENERIC_ARCH_TOPOLOGY if SMP
55	select ARCH_HAS_PTE_SPECIAL
56	select ARCH_HAS_MMIOWB
57	select HAVE_EBPF_JIT if 64BIT
58	select EDAC_SUPPORT
59	select ARCH_HAS_GIGANTIC_PAGE
60	select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
61	select SPARSEMEM_STATIC if 32BIT
62	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
63	select HAVE_ARCH_MMAP_RND_BITS
64	select HAVE_COPY_THREAD_TLS
65
66config ARCH_MMAP_RND_BITS_MIN
67	default 18 if 64BIT
68	default 8
69
70# max bits determined by the following formula:
71#  VA_BITS - PAGE_SHIFT - 3
72config ARCH_MMAP_RND_BITS_MAX
73	default 24 if 64BIT # SV39 based
74	default 17
75
76config MMU
77	def_bool y
78
79config ZONE_DMA32
80	bool
81	default y if 64BIT
82
83config VA_BITS
84	int
85	default 32 if 32BIT
86	default 39 if 64BIT
87
88config PA_BITS
89	int
90	default 34 if 32BIT
91	default 56 if 64BIT
92
93config PAGE_OFFSET
94	hex
95	default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
96	default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
97	default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
98
99config ARCH_FLATMEM_ENABLE
100	def_bool y
101
102config ARCH_SPARSEMEM_ENABLE
103	def_bool y
104	select SPARSEMEM_VMEMMAP_ENABLE
105
106config ARCH_SELECT_MEMORY_MODEL
107	def_bool ARCH_SPARSEMEM_ENABLE
108
109config ARCH_WANT_GENERAL_HUGETLB
110	def_bool y
111
112config SYS_SUPPORTS_HUGETLBFS
113	def_bool y
114
115config STACKTRACE_SUPPORT
116	def_bool y
117
118config TRACE_IRQFLAGS_SUPPORT
119	def_bool y
120
121config GENERIC_BUG
122	def_bool y
123	depends on BUG
124	select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
125
126config GENERIC_BUG_RELATIVE_POINTERS
127	bool
128
129config GENERIC_CALIBRATE_DELAY
130	def_bool y
131
132config GENERIC_CSUM
133	def_bool y
134
135config GENERIC_HWEIGHT
136	def_bool y
137
138config FIX_EARLYCON_MEM
139	def_bool y
140
141config PGTABLE_LEVELS
142	int
143	default 3 if 64BIT
144	default 2
145
146source "arch/riscv/Kconfig.socs"
147
148menu "Platform type"
149
150choice
151	prompt "Base ISA"
152	default ARCH_RV64I
153	help
154	  This selects the base ISA that this kernel will target and must match
155	  the target platform.
156
157config ARCH_RV32I
158	bool "RV32I"
159	select 32BIT
160	select GENERIC_LIB_ASHLDI3
161	select GENERIC_LIB_ASHRDI3
162	select GENERIC_LIB_LSHRDI3
163	select GENERIC_LIB_UCMPDI2
164
165config ARCH_RV64I
166	bool "RV64I"
167	select 64BIT
168	select ARCH_SUPPORTS_INT128 if GCC_VERSION >= 50000
169	select HAVE_FUNCTION_TRACER
170	select HAVE_FUNCTION_GRAPH_TRACER
171	select HAVE_FTRACE_MCOUNT_RECORD
172	select HAVE_DYNAMIC_FTRACE
173	select HAVE_DYNAMIC_FTRACE_WITH_REGS
174	select SWIOTLB
175
176endchoice
177
178# We must be able to map all physical memory into the kernel, but the compiler
179# is still a bit more efficient when generating code if it's setup in a manner
180# such that it can only map 2GiB of memory.
181choice
182	prompt "Kernel Code Model"
183	default CMODEL_MEDLOW if 32BIT
184	default CMODEL_MEDANY if 64BIT
185
186	config CMODEL_MEDLOW
187		bool "medium low code model"
188	config CMODEL_MEDANY
189		bool "medium any code model"
190endchoice
191
192config MODULE_SECTIONS
193	bool
194	select HAVE_MOD_ARCH_SPECIFIC
195
196choice
197	prompt "Maximum Physical Memory"
198	default MAXPHYSMEM_2GB if 32BIT
199	default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
200	default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
201
202	config MAXPHYSMEM_2GB
203		bool "2GiB"
204	config MAXPHYSMEM_128GB
205		depends on 64BIT && CMODEL_MEDANY
206		bool "128GiB"
207endchoice
208
209
210config SMP
211	bool "Symmetric Multi-Processing"
212	help
213	  This enables support for systems with more than one CPU.  If
214	  you say N here, the kernel will run on single and
215	  multiprocessor machines, but will use only one CPU of a
216	  multiprocessor machine. If you say Y here, the kernel will run
217	  on many, but not all, single processor machines. On a single
218	  processor machine, the kernel will run faster if you say N
219	  here.
220
221	  If you don't know what to do here, say N.
222
223config NR_CPUS
224	int "Maximum number of CPUs (2-32)"
225	range 2 32
226	depends on SMP
227	default "8"
228
229choice
230	prompt "CPU Tuning"
231	default TUNE_GENERIC
232
233config TUNE_GENERIC
234	bool "generic"
235
236endchoice
237
238config RISCV_ISA_C
239	bool "Emit compressed instructions when building Linux"
240	default y
241	help
242	   Adds "C" to the ISA subsets that the toolchain is allowed to emit
243	   when building Linux, which results in compressed instructions in the
244	   Linux binary.
245
246	   If you don't know what to do here, say Y.
247
248menu "supported PMU type"
249	depends on PERF_EVENTS
250
251config RISCV_BASE_PMU
252	bool "Base Performance Monitoring Unit"
253	def_bool y
254	help
255	  A base PMU that serves as a reference implementation and has limited
256	  feature of perf.  It can run on any RISC-V machines so serves as the
257	  fallback, but this option can also be disable to reduce kernel size.
258
259endmenu
260
261config FPU
262	bool "FPU support"
263	default y
264	help
265	  Say N here if you want to disable all floating-point related procedure
266	  in the kernel.
267
268	  If you don't know what to do here, say Y.
269
270endmenu
271
272menu "Kernel features"
273
274source "kernel/Kconfig.hz"
275
276endmenu
277
278menu "Boot options"
279
280config CMDLINE
281	string "Built-in kernel command line"
282	help
283	  For most platforms, the arguments for the kernel's command line
284	  are provided at run-time, during boot. However, there are cases
285	  where either no arguments are being provided or the provided
286	  arguments are insufficient or even invalid.
287
288	  When that occurs, it is possible to define a built-in command
289	  line here and choose how the kernel should use it later on.
290
291choice
292	prompt "Built-in command line usage" if CMDLINE != ""
293	default CMDLINE_FALLBACK
294	help
295	  Choose how the kernel will handle the provided built-in command
296	  line.
297
298config CMDLINE_FALLBACK
299	bool "Use bootloader kernel arguments if available"
300	help
301	  Use the built-in command line as fallback in case we get nothing
302	  during boot. This is the default behaviour.
303
304config CMDLINE_EXTEND
305	bool "Extend bootloader kernel arguments"
306	help
307	  The command-line arguments provided during boot will be
308	  appended to the built-in command line. This is useful in
309	  cases where the provided arguments are insufficient and
310	  you don't want to or cannot modify them.
311
312
313config CMDLINE_FORCE
314	bool "Always use the default kernel command string"
315	help
316	  Always use the built-in command line, even if we get one during
317	  boot. This is useful in case you need to override the provided
318	  command line on systems where you don't have or want control
319	  over it.
320
321endchoice
322
323endmenu
324
325menu "Power management options"
326
327source "kernel/power/Kconfig"
328
329endmenu
330