xref: /openbmc/linux/arch/loongarch/Kconfig (revision 81895a65)
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_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
54	select ARCH_WANT_LD_ORPHAN_WARN
55	select ARCH_WANTS_NO_INSTR
56	select BUILDTIME_TABLE_SORT
57	select COMMON_CLK
58	select EFI
59	select GENERIC_CLOCKEVENTS
60	select GENERIC_CMOS_UPDATE
61	select GENERIC_CPU_AUTOPROBE
62	select GENERIC_ENTRY
63	select GENERIC_GETTIMEOFDAY
64	select GENERIC_IRQ_MULTI_HANDLER
65	select GENERIC_IRQ_PROBE
66	select GENERIC_IRQ_SHOW
67	select GENERIC_LIB_ASHLDI3
68	select GENERIC_LIB_ASHRDI3
69	select GENERIC_LIB_CMPDI2
70	select GENERIC_LIB_LSHRDI3
71	select GENERIC_LIB_UCMPDI2
72	select GENERIC_PCI_IOMAP
73	select GENERIC_SCHED_CLOCK
74	select GENERIC_SMP_IDLE_THREAD
75	select GENERIC_TIME_VSYSCALL
76	select GPIOLIB
77	select HAVE_ARCH_AUDITSYSCALL
78	select HAVE_ARCH_MMAP_RND_BITS if MMU
79	select HAVE_ARCH_SECCOMP_FILTER
80	select HAVE_ARCH_TRACEHOOK
81	select HAVE_ARCH_TRANSPARENT_HUGEPAGE
82	select HAVE_ASM_MODVERSIONS
83	select HAVE_CONTEXT_TRACKING_USER
84	select HAVE_DEBUG_STACKOVERFLOW
85	select HAVE_DMA_CONTIGUOUS
86	select HAVE_EXIT_THREAD
87	select HAVE_FAST_GUP
88	select HAVE_GENERIC_VDSO
89	select HAVE_IOREMAP_PROT
90	select HAVE_IRQ_EXIT_ON_IRQ_STACK
91	select HAVE_IRQ_TIME_ACCOUNTING
92	select HAVE_MOD_ARCH_SPECIFIC
93	select HAVE_NMI
94	select HAVE_PCI
95	select HAVE_PERF_EVENTS
96	select HAVE_REGS_AND_STACK_ACCESS_API
97	select HAVE_RSEQ
98	select HAVE_SETUP_PER_CPU_AREA if NUMA
99	select HAVE_SYSCALL_TRACEPOINTS
100	select HAVE_TIF_NOHZ
101	select HAVE_VIRT_CPU_ACCOUNTING_GEN if !SMP
102	select IRQ_FORCED_THREADING
103	select IRQ_LOONGARCH_CPU
104	select MMU_GATHER_MERGE_VMAS if MMU
105	select MODULES_USE_ELF_RELA if MODULES
106	select NEED_PER_CPU_EMBED_FIRST_CHUNK
107	select NEED_PER_CPU_PAGE_FIRST_CHUNK
108	select PCI
109	select PCI_DOMAINS_GENERIC
110	select PCI_ECAM if ACPI
111	select PCI_LOONGSON
112	select PCI_MSI_ARCH_FALLBACKS
113	select PCI_QUIRKS
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_RUNTIME_WRAPPERS
315	help
316	  This enables the kernel to use EFI runtime services that are
317	  available (such as the EFI variable services).
318
319config EFI_STUB
320	bool "EFI boot stub support"
321	default y
322	depends on EFI
323	select EFI_GENERIC_STUB
324	help
325	  This kernel feature allows the kernel to be loaded directly by
326	  EFI firmware without the use of a bootloader.
327
328config SMP
329	bool "Multi-Processing support"
330	help
331	  This enables support for systems with more than one CPU. If you have
332	  a system with only one CPU, say N. If you have a system with more
333	  than one CPU, say Y.
334
335	  If you say N here, the kernel will run on uni- and multiprocessor
336	  machines, but will use only one CPU of a multiprocessor machine. If
337	  you say Y here, the kernel will run on many, but not all,
338	  uniprocessor machines. On a uniprocessor machine, the kernel
339	  will run faster if you say N here.
340
341	  See also the SMP-HOWTO available at <http://www.tldp.org/docs.html#howto>.
342
343	  If you don't know what to do here, say N.
344
345config HOTPLUG_CPU
346	bool "Support for hot-pluggable CPUs"
347	depends on SMP
348	select GENERIC_IRQ_MIGRATION
349	help
350	  Say Y here to allow turning CPUs off and on. CPUs can be
351	  controlled through /sys/devices/system/cpu.
352	  (Note: power management support will enable this option
353	    automatically on SMP systems. )
354	  Say N if you want to disable CPU hotplug.
355
356config NR_CPUS
357	int "Maximum number of CPUs (2-256)"
358	range 2 256
359	depends on SMP
360	default "64"
361	help
362	  This allows you to specify the maximum number of CPUs which this
363	  kernel will support.
364
365config NUMA
366	bool "NUMA Support"
367	select SMP
368	select ACPI_NUMA if ACPI
369	help
370	  Say Y to compile the kernel with NUMA (Non-Uniform Memory Access)
371	  support.  This option improves performance on systems with more
372	  than one NUMA node; on single node systems it is generally better
373	  to leave it disabled.
374
375config NODES_SHIFT
376	int
377	default "6"
378	depends on NUMA
379
380config ARCH_FORCE_MAX_ORDER
381	int "Maximum zone order"
382	range 14 64 if PAGE_SIZE_64KB
383	default "14" if PAGE_SIZE_64KB
384	range 12 64 if PAGE_SIZE_16KB
385	default "12" if PAGE_SIZE_16KB
386	range 11 64
387	default "11"
388	help
389	  The kernel memory allocator divides physically contiguous memory
390	  blocks into "zones", where each zone is a power of two number of
391	  pages.  This option selects the largest power of two that the kernel
392	  keeps in the memory allocator.  If you need to allocate very large
393	  blocks of physically contiguous memory, then you may need to
394	  increase this value.
395
396	  This config option is actually maximum order plus one. For example,
397	  a value of 11 means that the largest free memory block is 2^10 pages.
398
399	  The page size is not necessarily 4KB.  Keep this in mind
400	  when choosing a value for this option.
401
402config SECCOMP
403	bool "Enable seccomp to safely compute untrusted bytecode"
404	depends on PROC_FS
405	default y
406	help
407	  This kernel feature is useful for number crunching applications
408	  that may need to compute untrusted bytecode during their
409	  execution. By using pipes or other transports made available to
410	  the process as file descriptors supporting the read/write
411	  syscalls, it's possible to isolate those applications in
412	  their own address space using seccomp. Once seccomp is
413	  enabled via /proc/<pid>/seccomp, it cannot be disabled
414	  and the task is only allowed to execute a few safe syscalls
415	  defined by each seccomp mode.
416
417	  If unsure, say Y. Only embedded should say N here.
418
419endmenu
420
421config ARCH_SELECT_MEMORY_MODEL
422	def_bool y
423
424config ARCH_FLATMEM_ENABLE
425	def_bool y
426	depends on !NUMA
427
428config ARCH_SPARSEMEM_ENABLE
429	def_bool y
430	help
431	  Say Y to support efficient handling of sparse physical memory,
432	  for architectures which are either NUMA (Non-Uniform Memory Access)
433	  or have huge holes in the physical address space for other reasons.
434	  See <file:Documentation/mm/numa.rst> for more.
435
436config ARCH_ENABLE_THP_MIGRATION
437	def_bool y
438	depends on TRANSPARENT_HUGEPAGE
439
440config ARCH_MEMORY_PROBE
441	def_bool y
442	depends on MEMORY_HOTPLUG
443
444config MMU
445	bool
446	default y
447
448config ARCH_MMAP_RND_BITS_MIN
449	default 12
450
451config ARCH_MMAP_RND_BITS_MAX
452	default 18
453
454menu "Power management options"
455
456source "drivers/acpi/Kconfig"
457
458endmenu
459
460source "drivers/firmware/Kconfig"
461