xref: /openbmc/linux/arch/loongarch/Kconfig (revision bbb774d9)
1# SPDX-License-Identifier: GPL-2.0
2config LOONGARCH
3	bool
4	default y
5	select ACPI
6	select ACPI_GENERIC_GSI if ACPI
7	select ACPI_MCFG if ACPI
8	select ACPI_SYSTEM_POWER_STATES_SUPPORT	if ACPI
9	select ARCH_BINFMT_ELF_STATE
10	select ARCH_ENABLE_MEMORY_HOTPLUG
11	select ARCH_ENABLE_MEMORY_HOTREMOVE
12	select ARCH_HAS_ACPI_TABLE_UPGRADE	if ACPI
13	select ARCH_HAS_PHYS_TO_DMA
14	select ARCH_HAS_PTE_SPECIAL
15	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
16	select ARCH_INLINE_READ_LOCK if !PREEMPTION
17	select ARCH_INLINE_READ_LOCK_BH if !PREEMPTION
18	select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPTION
19	select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPTION
20	select ARCH_INLINE_READ_UNLOCK if !PREEMPTION
21	select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPTION
22	select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPTION
23	select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPTION
24	select ARCH_INLINE_WRITE_LOCK if !PREEMPTION
25	select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPTION
26	select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPTION
27	select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPTION
28	select ARCH_INLINE_WRITE_UNLOCK if !PREEMPTION
29	select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPTION
30	select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPTION
31	select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPTION
32	select ARCH_INLINE_SPIN_TRYLOCK if !PREEMPTION
33	select ARCH_INLINE_SPIN_TRYLOCK_BH if !PREEMPTION
34	select ARCH_INLINE_SPIN_LOCK if !PREEMPTION
35	select ARCH_INLINE_SPIN_LOCK_BH if !PREEMPTION
36	select ARCH_INLINE_SPIN_LOCK_IRQ if !PREEMPTION
37	select ARCH_INLINE_SPIN_LOCK_IRQSAVE if !PREEMPTION
38	select ARCH_INLINE_SPIN_UNLOCK if !PREEMPTION
39	select ARCH_INLINE_SPIN_UNLOCK_BH if !PREEMPTION
40	select ARCH_INLINE_SPIN_UNLOCK_IRQ if !PREEMPTION
41	select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE if !PREEMPTION
42	select ARCH_KEEP_MEMBLOCK
43	select ARCH_MIGHT_HAVE_PC_PARPORT
44	select ARCH_MIGHT_HAVE_PC_SERIO
45	select ARCH_SPARSEMEM_ENABLE
46	select ARCH_STACKWALK
47	select ARCH_SUPPORTS_ACPI
48	select ARCH_SUPPORTS_ATOMIC_RMW
49	select ARCH_SUPPORTS_HUGETLBFS
50	select ARCH_SUPPORTS_NUMA_BALANCING
51	select ARCH_USE_BUILTIN_BSWAP
52	select ARCH_USE_CMPXCHG_LOCKREF
53	select ARCH_USE_QUEUED_RWLOCKS
54	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
55	select ARCH_WANT_LD_ORPHAN_WARN
56	select ARCH_WANTS_NO_INSTR
57	select BUILDTIME_TABLE_SORT
58	select COMMON_CLK
59	select EFI
60	select GENERIC_CLOCKEVENTS
61	select GENERIC_CMOS_UPDATE
62	select GENERIC_CPU_AUTOPROBE
63	select GENERIC_ENTRY
64	select GENERIC_GETTIMEOFDAY
65	select GENERIC_IRQ_MULTI_HANDLER
66	select GENERIC_IRQ_PROBE
67	select GENERIC_IRQ_SHOW
68	select GENERIC_LIB_ASHLDI3
69	select GENERIC_LIB_ASHRDI3
70	select GENERIC_LIB_CMPDI2
71	select GENERIC_LIB_LSHRDI3
72	select GENERIC_LIB_UCMPDI2
73	select GENERIC_PCI_IOMAP
74	select GENERIC_SCHED_CLOCK
75	select GENERIC_SMP_IDLE_THREAD
76	select GENERIC_TIME_VSYSCALL
77	select GPIOLIB
78	select HAVE_ARCH_AUDITSYSCALL
79	select HAVE_ARCH_MMAP_RND_BITS if MMU
80	select HAVE_ARCH_SECCOMP_FILTER
81	select HAVE_ARCH_TRACEHOOK
82	select HAVE_ARCH_TRANSPARENT_HUGEPAGE
83	select HAVE_ASM_MODVERSIONS
84	select HAVE_CONTEXT_TRACKING_USER
85	select HAVE_DEBUG_STACKOVERFLOW
86	select HAVE_DMA_CONTIGUOUS
87	select HAVE_EXIT_THREAD
88	select HAVE_FAST_GUP
89	select HAVE_GENERIC_VDSO
90	select HAVE_IOREMAP_PROT
91	select HAVE_IRQ_EXIT_ON_IRQ_STACK
92	select HAVE_IRQ_TIME_ACCOUNTING
93	select HAVE_MOD_ARCH_SPECIFIC
94	select HAVE_NMI
95	select HAVE_PCI
96	select HAVE_PERF_EVENTS
97	select HAVE_REGS_AND_STACK_ACCESS_API
98	select HAVE_RSEQ
99	select HAVE_SETUP_PER_CPU_AREA if NUMA
100	select HAVE_SYSCALL_TRACEPOINTS
101	select HAVE_TIF_NOHZ
102	select HAVE_VIRT_CPU_ACCOUNTING_GEN if !SMP
103	select IRQ_FORCED_THREADING
104	select IRQ_LOONGARCH_CPU
105	select MMU_GATHER_MERGE_VMAS if MMU
106	select MODULES_USE_ELF_RELA if MODULES
107	select NEED_PER_CPU_EMBED_FIRST_CHUNK
108	select NEED_PER_CPU_PAGE_FIRST_CHUNK
109	select OF
110	select OF_EARLY_FLATTREE
111	select PCI
112	select PCI_DOMAINS_GENERIC
113	select PCI_ECAM if ACPI
114	select PCI_LOONGSON
115	select PCI_MSI_ARCH_FALLBACKS
116	select PCI_QUIRKS
117	select PERF_USE_VMALLOC
118	select RTC_LIB
119	select SMP
120	select SPARSE_IRQ
121	select SYSCTL_EXCEPTION_TRACE
122	select SWIOTLB
123	select TRACE_IRQFLAGS_SUPPORT
124	select USE_PERCPU_NUMA_NODE_ID
125	select USER_STACKTRACE_SUPPORT
126	select ZONE_DMA32
127
128config 32BIT
129	bool
130
131config 64BIT
132	def_bool y
133
134config CPU_HAS_FPU
135	bool
136	default y
137
138config CPU_HAS_PREFETCH
139	bool
140	default y
141
142config GENERIC_CALIBRATE_DELAY
143	def_bool y
144
145config GENERIC_CSUM
146	def_bool y
147
148config GENERIC_HWEIGHT
149	def_bool y
150
151config L1_CACHE_SHIFT
152	int
153	default "6"
154
155config LOCKDEP_SUPPORT
156	bool
157	default y
158
159config STACKTRACE_SUPPORT
160	bool
161	default y
162
163# MACH_LOONGSON32 and MACH_LOONGSON64 are delibrately carried over from the
164# MIPS Loongson code, to preserve Loongson-specific code paths in drivers that
165# are shared between architectures, and specifically expecting the symbols.
166config MACH_LOONGSON32
167	def_bool 32BIT
168
169config MACH_LOONGSON64
170	def_bool 64BIT
171
172config PAGE_SIZE_4KB
173	bool
174
175config PAGE_SIZE_16KB
176	bool
177
178config PAGE_SIZE_64KB
179	bool
180
181config PGTABLE_2LEVEL
182	bool
183
184config PGTABLE_3LEVEL
185	bool
186
187config PGTABLE_4LEVEL
188	bool
189
190config PGTABLE_LEVELS
191	int
192	default 2 if PGTABLE_2LEVEL
193	default 3 if PGTABLE_3LEVEL
194	default 4 if PGTABLE_4LEVEL
195
196config SCHED_OMIT_FRAME_POINTER
197	bool
198	default y
199
200menu "Kernel type and options"
201
202source "kernel/Kconfig.hz"
203
204choice
205	prompt "Page Table Layout"
206	default 16KB_2LEVEL if 32BIT
207	default 16KB_3LEVEL if 64BIT
208	help
209	  Allows choosing the page table layout, which is a combination
210	  of page size and page table levels. The size of virtual memory
211	  address space are determined by the page table layout.
212
213config 4KB_3LEVEL
214	bool "4KB with 3 levels"
215	select PAGE_SIZE_4KB
216	select PGTABLE_3LEVEL
217	help
218	  This option selects 4KB page size with 3 level page tables, which
219	  support a maximum of 39 bits of application virtual memory.
220
221config 4KB_4LEVEL
222	bool "4KB with 4 levels"
223	select PAGE_SIZE_4KB
224	select PGTABLE_4LEVEL
225	help
226	  This option selects 4KB page size with 4 level page tables, which
227	  support a maximum of 48 bits of application virtual memory.
228
229config 16KB_2LEVEL
230	bool "16KB with 2 levels"
231	select PAGE_SIZE_16KB
232	select PGTABLE_2LEVEL
233	help
234	  This option selects 16KB page size with 2 level page tables, which
235	  support a maximum of 36 bits of application virtual memory.
236
237config 16KB_3LEVEL
238	bool "16KB with 3 levels"
239	select PAGE_SIZE_16KB
240	select PGTABLE_3LEVEL
241	help
242	  This option selects 16KB page size with 3 level page tables, which
243	  support a maximum of 47 bits of application virtual memory.
244
245config 64KB_2LEVEL
246	bool "64KB with 2 levels"
247	select PAGE_SIZE_64KB
248	select PGTABLE_2LEVEL
249	help
250	  This option selects 64KB page size with 2 level page tables, which
251	  support a maximum of 42 bits of application virtual memory.
252
253config 64KB_3LEVEL
254	bool "64KB with 3 levels"
255	select PAGE_SIZE_64KB
256	select PGTABLE_3LEVEL
257	help
258	  This option selects 64KB page size with 3 level page tables, which
259	  support a maximum of 55 bits of application virtual memory.
260
261endchoice
262
263config CMDLINE
264	string "Built-in kernel command line"
265	help
266	  For most platforms, the arguments for the kernel's command line
267	  are provided at run-time, during boot. However, there are cases
268	  where either no arguments are being provided or the provided
269	  arguments are insufficient or even invalid.
270
271	  When that occurs, it is possible to define a built-in command
272	  line here and choose how the kernel should use it later on.
273
274choice
275	prompt "Kernel command line type"
276	default CMDLINE_BOOTLOADER
277	help
278	  Choose how the kernel will handle the provided built-in command
279	  line.
280
281config CMDLINE_BOOTLOADER
282	bool "Use bootloader kernel arguments if available"
283	help
284	  Prefer the command-line passed by the boot loader if available.
285	  Use the built-in command line as fallback in case we get nothing
286	  during boot. This is the default behaviour.
287
288config CMDLINE_EXTEND
289	bool "Use built-in to extend bootloader kernel arguments"
290	help
291	  The command-line arguments provided during boot will be
292	  appended to the built-in command line. This is useful in
293	  cases where the provided arguments are insufficient and
294	  you don't want to or cannot modify them.
295
296config CMDLINE_FORCE
297	bool "Always use the built-in kernel command string"
298	help
299	  Always use the built-in command line, even if we get one during
300	  boot. This is useful in case you need to override the provided
301	  command line on systems where you don't have or want control
302	  over it.
303
304endchoice
305
306config DMI
307	bool "Enable DMI scanning"
308	select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
309	default y
310	help
311	  This enables SMBIOS/DMI feature for systems, and scanning of
312	  DMI to identify machine quirks.
313
314config EFI
315	bool "EFI runtime service support"
316	select UCS2_STRING
317	select EFI_PARAMS_FROM_FDT
318	select EFI_RUNTIME_WRAPPERS
319	help
320	  This enables the kernel to use EFI runtime services that are
321	  available (such as the EFI variable services).
322
323config SMP
324	bool "Multi-Processing support"
325	help
326	  This enables support for systems with more than one CPU. If you have
327	  a system with only one CPU, say N. If you have a system with more
328	  than one CPU, say Y.
329
330	  If you say N here, the kernel will run on uni- and multiprocessor
331	  machines, but will use only one CPU of a multiprocessor machine. If
332	  you say Y here, the kernel will run on many, but not all,
333	  uniprocessor machines. On a uniprocessor machine, the kernel
334	  will run faster if you say N here.
335
336	  See also the SMP-HOWTO available at <http://www.tldp.org/docs.html#howto>.
337
338	  If you don't know what to do here, say N.
339
340config HOTPLUG_CPU
341	bool "Support for hot-pluggable CPUs"
342	depends on SMP
343	select GENERIC_IRQ_MIGRATION
344	help
345	  Say Y here to allow turning CPUs off and on. CPUs can be
346	  controlled through /sys/devices/system/cpu.
347	  (Note: power management support will enable this option
348	    automatically on SMP systems. )
349	  Say N if you want to disable CPU hotplug.
350
351config NR_CPUS
352	int "Maximum number of CPUs (2-256)"
353	range 2 256
354	depends on SMP
355	default "64"
356	help
357	  This allows you to specify the maximum number of CPUs which this
358	  kernel will support.
359
360config NUMA
361	bool "NUMA Support"
362	select SMP
363	select ACPI_NUMA if ACPI
364	help
365	  Say Y to compile the kernel with NUMA (Non-Uniform Memory Access)
366	  support.  This option improves performance on systems with more
367	  than one NUMA node; on single node systems it is generally better
368	  to leave it disabled.
369
370config NODES_SHIFT
371	int
372	default "6"
373	depends on NUMA
374
375config FORCE_MAX_ZONEORDER
376	int "Maximum zone order"
377	range 14 64 if PAGE_SIZE_64KB
378	default "14" if PAGE_SIZE_64KB
379	range 12 64 if PAGE_SIZE_16KB
380	default "12" if PAGE_SIZE_16KB
381	range 11 64
382	default "11"
383	help
384	  The kernel memory allocator divides physically contiguous memory
385	  blocks into "zones", where each zone is a power of two number of
386	  pages.  This option selects the largest power of two that the kernel
387	  keeps in the memory allocator.  If you need to allocate very large
388	  blocks of physically contiguous memory, then you may need to
389	  increase this value.
390
391	  This config option is actually maximum order plus one. For example,
392	  a value of 11 means that the largest free memory block is 2^10 pages.
393
394	  The page size is not necessarily 4KB.  Keep this in mind
395	  when choosing a value for this option.
396
397config SECCOMP
398	bool "Enable seccomp to safely compute untrusted bytecode"
399	depends on PROC_FS
400	default y
401	help
402	  This kernel feature is useful for number crunching applications
403	  that may need to compute untrusted bytecode during their
404	  execution. By using pipes or other transports made available to
405	  the process as file descriptors supporting the read/write
406	  syscalls, it's possible to isolate those applications in
407	  their own address space using seccomp. Once seccomp is
408	  enabled via /proc/<pid>/seccomp, it cannot be disabled
409	  and the task is only allowed to execute a few safe syscalls
410	  defined by each seccomp mode.
411
412	  If unsure, say Y. Only embedded should say N here.
413
414endmenu
415
416config ARCH_SELECT_MEMORY_MODEL
417	def_bool y
418
419config ARCH_FLATMEM_ENABLE
420	def_bool y
421	depends on !NUMA
422
423config ARCH_SPARSEMEM_ENABLE
424	def_bool y
425	help
426	  Say Y to support efficient handling of sparse physical memory,
427	  for architectures which are either NUMA (Non-Uniform Memory Access)
428	  or have huge holes in the physical address space for other reasons.
429	  See <file:Documentation/mm/numa.rst> for more.
430
431config ARCH_ENABLE_THP_MIGRATION
432	def_bool y
433	depends on TRANSPARENT_HUGEPAGE
434
435config ARCH_MEMORY_PROBE
436	def_bool y
437	depends on MEMORY_HOTPLUG
438
439config MMU
440	bool
441	default y
442
443config ARCH_MMAP_RND_BITS_MIN
444	default 12
445
446config ARCH_MMAP_RND_BITS_MAX
447	default 18
448
449menu "Power management options"
450
451source "drivers/acpi/Kconfig"
452
453endmenu
454
455source "drivers/firmware/Kconfig"
456