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