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