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