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