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