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