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