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