GNU Linux-libre 6.1.90-gnu
[releases.git] / arch / loongarch / Kconfig
1 # SPDX-License-Identifier: GPL-2.0
2 config 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_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE
13         select ARCH_HAS_ACPI_TABLE_UPGRADE      if ACPI
14         select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
15         select ARCH_HAS_PTE_SPECIAL
16         select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
17         select ARCH_INLINE_READ_LOCK if !PREEMPTION
18         select ARCH_INLINE_READ_LOCK_BH if !PREEMPTION
19         select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPTION
20         select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPTION
21         select ARCH_INLINE_READ_UNLOCK if !PREEMPTION
22         select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPTION
23         select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPTION
24         select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPTION
25         select ARCH_INLINE_WRITE_LOCK if !PREEMPTION
26         select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPTION
27         select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPTION
28         select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPTION
29         select ARCH_INLINE_WRITE_UNLOCK if !PREEMPTION
30         select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPTION
31         select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPTION
32         select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPTION
33         select ARCH_INLINE_SPIN_TRYLOCK if !PREEMPTION
34         select ARCH_INLINE_SPIN_TRYLOCK_BH if !PREEMPTION
35         select ARCH_INLINE_SPIN_LOCK if !PREEMPTION
36         select ARCH_INLINE_SPIN_LOCK_BH if !PREEMPTION
37         select ARCH_INLINE_SPIN_LOCK_IRQ if !PREEMPTION
38         select ARCH_INLINE_SPIN_LOCK_IRQSAVE if !PREEMPTION
39         select ARCH_INLINE_SPIN_UNLOCK if !PREEMPTION
40         select ARCH_INLINE_SPIN_UNLOCK_BH if !PREEMPTION
41         select ARCH_INLINE_SPIN_UNLOCK_IRQ if !PREEMPTION
42         select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE if !PREEMPTION
43         select ARCH_KEEP_MEMBLOCK
44         select ARCH_MIGHT_HAVE_PC_PARPORT
45         select ARCH_MIGHT_HAVE_PC_SERIO
46         select ARCH_SPARSEMEM_ENABLE
47         select ARCH_STACKWALK
48         select ARCH_SUPPORTS_ACPI
49         select ARCH_SUPPORTS_ATOMIC_RMW
50         select ARCH_SUPPORTS_HUGETLBFS
51         select ARCH_SUPPORTS_NUMA_BALANCING
52         select ARCH_USE_BUILTIN_BSWAP
53         select ARCH_USE_CMPXCHG_LOCKREF
54         select ARCH_USE_QUEUED_RWLOCKS
55         select ARCH_USE_QUEUED_SPINLOCKS
56         select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
57         select ARCH_WANT_LD_ORPHAN_WARN
58         select ARCH_WANTS_NO_INSTR
59         select BUILDTIME_TABLE_SORT
60         select COMMON_CLK
61         select EFI
62         select GENERIC_CLOCKEVENTS
63         select GENERIC_CMOS_UPDATE
64         select GENERIC_CPU_AUTOPROBE
65         select GENERIC_ENTRY
66         select GENERIC_GETTIMEOFDAY
67         select GENERIC_IOREMAP if !ARCH_IOREMAP
68         select GENERIC_IRQ_MULTI_HANDLER
69         select GENERIC_IRQ_PROBE
70         select GENERIC_IRQ_SHOW
71         select GENERIC_LIB_ASHLDI3
72         select GENERIC_LIB_ASHRDI3
73         select GENERIC_LIB_CMPDI2
74         select GENERIC_LIB_LSHRDI3
75         select GENERIC_LIB_UCMPDI2
76         select GENERIC_LIB_DEVMEM_IS_ALLOWED
77         select GENERIC_PCI_IOMAP
78         select GENERIC_SCHED_CLOCK
79         select GENERIC_SMP_IDLE_THREAD
80         select GENERIC_TIME_VSYSCALL
81         select GPIOLIB
82         select HAVE_ARCH_AUDITSYSCALL
83         select HAVE_ARCH_MMAP_RND_BITS if MMU
84         select HAVE_ARCH_SECCOMP
85         select HAVE_ARCH_SECCOMP_FILTER
86         select HAVE_ARCH_TRACEHOOK
87         select HAVE_ARCH_TRANSPARENT_HUGEPAGE
88         select HAVE_ASM_MODVERSIONS
89         select HAVE_CONTEXT_TRACKING_USER
90         select HAVE_DEBUG_STACKOVERFLOW
91         select HAVE_DMA_CONTIGUOUS
92         select HAVE_EBPF_JIT
93         select HAVE_EXIT_THREAD
94         select HAVE_FAST_GUP
95         select HAVE_GENERIC_VDSO
96         select HAVE_IOREMAP_PROT
97         select HAVE_IRQ_EXIT_ON_IRQ_STACK
98         select HAVE_IRQ_TIME_ACCOUNTING
99         select HAVE_MOD_ARCH_SPECIFIC
100         select HAVE_NMI
101         select HAVE_PCI
102         select HAVE_PERF_EVENTS
103         select HAVE_PERF_REGS
104         select HAVE_PERF_USER_STACK_DUMP
105         select HAVE_REGS_AND_STACK_ACCESS_API
106         select HAVE_RSEQ
107         select HAVE_SETUP_PER_CPU_AREA if NUMA
108         select HAVE_SYSCALL_TRACEPOINTS
109         select HAVE_TIF_NOHZ
110         select HAVE_VIRT_CPU_ACCOUNTING_GEN if !SMP
111         select IRQ_FORCED_THREADING
112         select IRQ_LOONGARCH_CPU
113         select LOCK_MM_AND_FIND_VMA
114         select MMU_GATHER_MERGE_VMAS if MMU
115         select MODULES_USE_ELF_RELA if MODULES
116         select NEED_PER_CPU_EMBED_FIRST_CHUNK
117         select NEED_PER_CPU_PAGE_FIRST_CHUNK
118         select PCI
119         select PCI_DOMAINS_GENERIC
120         select PCI_ECAM if ACPI
121         select PCI_LOONGSON
122         select PCI_MSI_ARCH_FALLBACKS
123         select PCI_QUIRKS
124         select PERF_USE_VMALLOC
125         select RTC_LIB
126         select SMP
127         select SPARSE_IRQ
128         select SYSCTL_EXCEPTION_TRACE
129         select SWIOTLB
130         select TRACE_IRQFLAGS_SUPPORT
131         select USE_PERCPU_NUMA_NODE_ID
132         select USER_STACKTRACE_SUPPORT
133         select ZONE_DMA32
134
135 config 32BIT
136         bool
137
138 config 64BIT
139         def_bool y
140
141 config CPU_HAS_FPU
142         bool
143         default y
144
145 config CPU_HAS_PREFETCH
146         bool
147         default y
148
149 config GENERIC_BUG
150         def_bool y
151         depends on BUG
152
153 config GENERIC_BUG_RELATIVE_POINTERS
154         def_bool y
155         depends on GENERIC_BUG
156
157 config GENERIC_CALIBRATE_DELAY
158         def_bool y
159
160 config GENERIC_CSUM
161         def_bool y
162
163 config GENERIC_HWEIGHT
164         def_bool y
165
166 config L1_CACHE_SHIFT
167         int
168         default "6"
169
170 config LOCKDEP_SUPPORT
171         bool
172         default y
173
174 config STACKTRACE_SUPPORT
175         bool
176         default y
177
178 # MACH_LOONGSON32 and MACH_LOONGSON64 are deliberately carried over from the
179 # MIPS Loongson code, to preserve Loongson-specific code paths in drivers that
180 # are shared between architectures, and specifically expecting the symbols.
181 config MACH_LOONGSON32
182         def_bool 32BIT
183
184 config MACH_LOONGSON64
185         def_bool 64BIT
186
187 config FIX_EARLYCON_MEM
188         def_bool y
189
190 config PAGE_SIZE_4KB
191         bool
192
193 config PAGE_SIZE_16KB
194         bool
195
196 config PAGE_SIZE_64KB
197         bool
198
199 config PGTABLE_2LEVEL
200         bool
201
202 config PGTABLE_3LEVEL
203         bool
204
205 config PGTABLE_4LEVEL
206         bool
207
208 config PGTABLE_LEVELS
209         int
210         default 2 if PGTABLE_2LEVEL
211         default 3 if PGTABLE_3LEVEL
212         default 4 if PGTABLE_4LEVEL
213
214 config SCHED_OMIT_FRAME_POINTER
215         bool
216         default y
217
218 config AS_HAS_EXPLICIT_RELOCS
219         def_bool $(as-instr,x:pcalau12i \$t0$(comma)%pc_hi20(x))
220
221 menu "Kernel type and options"
222
223 source "kernel/Kconfig.hz"
224
225 choice
226         prompt "Page Table Layout"
227         default 16KB_2LEVEL if 32BIT
228         default 16KB_3LEVEL if 64BIT
229         help
230           Allows choosing the page table layout, which is a combination
231           of page size and page table levels. The size of virtual memory
232           address space are determined by the page table layout.
233
234 config 4KB_3LEVEL
235         bool "4KB with 3 levels"
236         select PAGE_SIZE_4KB
237         select PGTABLE_3LEVEL
238         help
239           This option selects 4KB page size with 3 level page tables, which
240           support a maximum of 39 bits of application virtual memory.
241
242 config 4KB_4LEVEL
243         bool "4KB with 4 levels"
244         select PAGE_SIZE_4KB
245         select PGTABLE_4LEVEL
246         help
247           This option selects 4KB page size with 4 level page tables, which
248           support a maximum of 48 bits of application virtual memory.
249
250 config 16KB_2LEVEL
251         bool "16KB with 2 levels"
252         select PAGE_SIZE_16KB
253         select PGTABLE_2LEVEL
254         help
255           This option selects 16KB page size with 2 level page tables, which
256           support a maximum of 36 bits of application virtual memory.
257
258 config 16KB_3LEVEL
259         bool "16KB with 3 levels"
260         select PAGE_SIZE_16KB
261         select PGTABLE_3LEVEL
262         help
263           This option selects 16KB page size with 3 level page tables, which
264           support a maximum of 47 bits of application virtual memory.
265
266 config 64KB_2LEVEL
267         bool "64KB with 2 levels"
268         select PAGE_SIZE_64KB
269         select PGTABLE_2LEVEL
270         help
271           This option selects 64KB page size with 2 level page tables, which
272           support a maximum of 42 bits of application virtual memory.
273
274 config 64KB_3LEVEL
275         bool "64KB with 3 levels"
276         select PAGE_SIZE_64KB
277         select PGTABLE_3LEVEL
278         help
279           This option selects 64KB page size with 3 level page tables, which
280           support a maximum of 55 bits of application virtual memory.
281
282 endchoice
283
284 config CMDLINE
285         string "Built-in kernel command line"
286         help
287           For most platforms, the arguments for the kernel's command line
288           are provided at run-time, during boot. However, there are cases
289           where either no arguments are being provided or the provided
290           arguments are insufficient or even invalid.
291
292           When that occurs, it is possible to define a built-in command
293           line here and choose how the kernel should use it later on.
294
295 choice
296         prompt "Kernel command line type"
297         default CMDLINE_BOOTLOADER
298         help
299           Choose how the kernel will handle the provided built-in command
300           line.
301
302 config CMDLINE_BOOTLOADER
303         bool "Use bootloader kernel arguments if available"
304         help
305           Prefer the command-line passed by the boot loader if available.
306           Use the built-in command line as fallback in case we get nothing
307           during boot. This is the default behaviour.
308
309 config CMDLINE_EXTEND
310         bool "Use built-in to extend bootloader kernel arguments"
311         help
312           The command-line arguments provided during boot will be
313           appended to the built-in command line. This is useful in
314           cases where the provided arguments are insufficient and
315           you don't want to or cannot modify them.
316
317 config CMDLINE_FORCE
318         bool "Always use the built-in kernel command string"
319         help
320           Always use the built-in command line, even if we get one during
321           boot. This is useful in case you need to override the provided
322           command line on systems where you don't have or want control
323           over it.
324
325 endchoice
326
327 config DMI
328         bool "Enable DMI scanning"
329         select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
330         default y
331         help
332           This enables SMBIOS/DMI feature for systems, and scanning of
333           DMI to identify machine quirks.
334
335 config EFI
336         bool "EFI runtime service support"
337         select UCS2_STRING
338         select EFI_RUNTIME_WRAPPERS
339         help
340           This enables the kernel to use EFI runtime services that are
341           available (such as the EFI variable services).
342
343 config EFI_STUB
344         bool "EFI boot stub support"
345         default y
346         depends on EFI
347         select EFI_GENERIC_STUB
348         help
349           This kernel feature allows the kernel to be loaded directly by
350           EFI firmware without the use of a bootloader.
351
352 config SMP
353         bool "Multi-Processing support"
354         help
355           This enables support for systems with more than one CPU. If you have
356           a system with only one CPU, say N. If you have a system with more
357           than one CPU, say Y.
358
359           If you say N here, the kernel will run on uni- and multiprocessor
360           machines, but will use only one CPU of a multiprocessor machine. If
361           you say Y here, the kernel will run on many, but not all,
362           uniprocessor machines. On a uniprocessor machine, the kernel
363           will run faster if you say N here.
364
365           See also the SMP-HOWTO available at <http://www.tldp.org/docs.html#howto>.
366
367           If you don't know what to do here, say N.
368
369 config HOTPLUG_CPU
370         bool "Support for hot-pluggable CPUs"
371         depends on SMP
372         select GENERIC_IRQ_MIGRATION
373         help
374           Say Y here to allow turning CPUs off and on. CPUs can be
375           controlled through /sys/devices/system/cpu.
376           (Note: power management support will enable this option
377             automatically on SMP systems. )
378           Say N if you want to disable CPU hotplug.
379
380 config NR_CPUS
381         int "Maximum number of CPUs (2-256)"
382         range 2 256
383         depends on SMP
384         default "64"
385         help
386           This allows you to specify the maximum number of CPUs which this
387           kernel will support.
388
389 config NUMA
390         bool "NUMA Support"
391         select SMP
392         select ACPI_NUMA if ACPI
393         help
394           Say Y to compile the kernel with NUMA (Non-Uniform Memory Access)
395           support.  This option improves performance on systems with more
396           than one NUMA node; on single node systems it is generally better
397           to leave it disabled.
398
399 config NODES_SHIFT
400         int
401         default "6"
402         depends on NUMA
403
404 config ARCH_FORCE_MAX_ORDER
405         int "Maximum zone order"
406         range 14 64 if PAGE_SIZE_64KB
407         default "14" if PAGE_SIZE_64KB
408         range 12 64 if PAGE_SIZE_16KB
409         default "12" if PAGE_SIZE_16KB
410         range 11 64
411         default "11"
412         help
413           The kernel memory allocator divides physically contiguous memory
414           blocks into "zones", where each zone is a power of two number of
415           pages.  This option selects the largest power of two that the kernel
416           keeps in the memory allocator.  If you need to allocate very large
417           blocks of physically contiguous memory, then you may need to
418           increase this value.
419
420           This config option is actually maximum order plus one. For example,
421           a value of 11 means that the largest free memory block is 2^10 pages.
422
423           The page size is not necessarily 4KB.  Keep this in mind
424           when choosing a value for this option.
425
426 config ARCH_IOREMAP
427         bool "Enable LoongArch DMW-based ioremap()"
428         help
429           We use generic TLB-based ioremap() by default since it has page
430           protection support. However, you can enable LoongArch DMW-based
431           ioremap() for better performance.
432
433 config KEXEC
434         bool "Kexec system call"
435         select KEXEC_CORE
436         help
437           kexec is a system call that implements the ability to shutdown your
438           current kernel, and to start another kernel.  It is like a reboot
439           but it is independent of the system firmware.   And like a reboot
440           you can start any kernel with it, not just Linux.
441
442           The name comes from the similarity to the exec system call.
443
444 config CRASH_DUMP
445         bool "Build kdump crash kernel"
446         help
447           Generate crash dump after being started by kexec. This should
448           be normally only set in special crash dump kernels which are
449           loaded in the main kernel with kexec-tools into a specially
450           reserved region and then later executed after a crash by
451           kdump/kexec.
452
453           For more details see Documentation/admin-guide/kdump/kdump.rst
454
455 config PHYSICAL_START
456         hex "Physical address where the kernel is loaded"
457         default "0x90000000a0000000"
458         depends on CRASH_DUMP
459         help
460           This gives the XKPRANGE address where the kernel is loaded.
461           If you plan to use kernel for capturing the crash dump change
462           this value to start of the reserved region (the "X" value as
463           specified in the "crashkernel=YM@XM" command line boot parameter
464           passed to the panic-ed kernel).
465
466 endmenu
467
468 config ARCH_SELECT_MEMORY_MODEL
469         def_bool y
470
471 config ARCH_FLATMEM_ENABLE
472         def_bool y
473         depends on !NUMA
474
475 config ARCH_SPARSEMEM_ENABLE
476         def_bool y
477         help
478           Say Y to support efficient handling of sparse physical memory,
479           for architectures which are either NUMA (Non-Uniform Memory Access)
480           or have huge holes in the physical address space for other reasons.
481           See <file:Documentation/mm/numa.rst> for more.
482
483 config ARCH_MEMORY_PROBE
484         def_bool y
485         depends on MEMORY_HOTPLUG
486
487 config MMU
488         bool
489         default y
490
491 config ARCH_MMAP_RND_BITS_MIN
492         default 12
493
494 config ARCH_MMAP_RND_BITS_MAX
495         default 18
496
497 menu "Power management options"
498
499 source "drivers/acpi/Kconfig"
500
501 endmenu
502
503 source "drivers/firmware/Kconfig"