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