xref: /linux/arch/loongarch/Kconfig (revision 1260ed77798502de9c98020040d2995008de10cc)
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_HOTPLUG_CPU if ACPI_PROCESSOR && HOTPLUG_CPU
9	select ACPI_PPTT if ACPI
10	select ACPI_SYSTEM_POWER_STATES_SUPPORT	if ACPI
11	select ARCH_BINFMT_ELF_STATE
12	select ARCH_DISABLE_KASAN_INLINE
13	select ARCH_ENABLE_MEMORY_HOTPLUG
14	select ARCH_ENABLE_MEMORY_HOTREMOVE
15	select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE
16	select ARCH_HAS_ACPI_TABLE_UPGRADE	if ACPI
17	select ARCH_HAS_CPU_FINALIZE_INIT
18	select ARCH_HAS_CRC32
19	select ARCH_HAS_CURRENT_STACK_POINTER
20	select ARCH_HAS_DEBUG_VM_PGTABLE
21	select ARCH_HAS_FAST_MULTIPLIER
22	select ARCH_HAS_FORTIFY_SOURCE
23	select ARCH_HAS_KCOV
24	select ARCH_HAS_KERNEL_FPU_SUPPORT if CPU_HAS_FPU
25	select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS
26	select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
27	select ARCH_HAS_PREEMPT_LAZY
28	select ARCH_HAS_PTE_DEVMAP
29	select ARCH_HAS_PTE_SPECIAL
30	select ARCH_HAS_SET_MEMORY
31	select ARCH_HAS_SET_DIRECT_MAP
32	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
33	select ARCH_HAS_UBSAN
34	select ARCH_HAS_VDSO_ARCH_DATA
35	select ARCH_INLINE_READ_LOCK if !PREEMPTION
36	select ARCH_INLINE_READ_LOCK_BH if !PREEMPTION
37	select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPTION
38	select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPTION
39	select ARCH_INLINE_READ_UNLOCK if !PREEMPTION
40	select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPTION
41	select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPTION
42	select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPTION
43	select ARCH_INLINE_WRITE_LOCK if !PREEMPTION
44	select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPTION
45	select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPTION
46	select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPTION
47	select ARCH_INLINE_WRITE_UNLOCK if !PREEMPTION
48	select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPTION
49	select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPTION
50	select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPTION
51	select ARCH_INLINE_SPIN_TRYLOCK if !PREEMPTION
52	select ARCH_INLINE_SPIN_TRYLOCK_BH if !PREEMPTION
53	select ARCH_INLINE_SPIN_LOCK if !PREEMPTION
54	select ARCH_INLINE_SPIN_LOCK_BH if !PREEMPTION
55	select ARCH_INLINE_SPIN_LOCK_IRQ if !PREEMPTION
56	select ARCH_INLINE_SPIN_LOCK_IRQSAVE if !PREEMPTION
57	select ARCH_INLINE_SPIN_UNLOCK if !PREEMPTION
58	select ARCH_INLINE_SPIN_UNLOCK_BH if !PREEMPTION
59	select ARCH_INLINE_SPIN_UNLOCK_IRQ if !PREEMPTION
60	select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE if !PREEMPTION
61	select ARCH_KEEP_MEMBLOCK
62	select ARCH_MIGHT_HAVE_PC_PARPORT
63	select ARCH_MIGHT_HAVE_PC_SERIO
64	select ARCH_SPARSEMEM_ENABLE
65	select ARCH_STACKWALK
66	select ARCH_SUPPORTS_ACPI
67	select ARCH_SUPPORTS_ATOMIC_RMW
68	select ARCH_SUPPORTS_HUGETLBFS
69	select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
70	select ARCH_SUPPORTS_LTO_CLANG
71	select ARCH_SUPPORTS_LTO_CLANG_THIN
72	select ARCH_SUPPORTS_NUMA_BALANCING
73	select ARCH_SUPPORTS_RT
74	select ARCH_USE_BUILTIN_BSWAP
75	select ARCH_USE_CMPXCHG_LOCKREF
76	select ARCH_USE_QUEUED_RWLOCKS
77	select ARCH_USE_QUEUED_SPINLOCKS
78	select ARCH_WANT_DEFAULT_BPF_JIT
79	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
80	select ARCH_WANT_LD_ORPHAN_WARN
81	select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP
82	select ARCH_WANTS_NO_INSTR
83	select ARCH_WANTS_THP_SWAP if HAVE_ARCH_TRANSPARENT_HUGEPAGE
84	select BUILDTIME_TABLE_SORT
85	select COMMON_CLK
86	select CPU_PM
87	select EDAC_SUPPORT
88	select EFI
89	select GENERIC_CLOCKEVENTS
90	select GENERIC_CMOS_UPDATE
91	select GENERIC_CPU_AUTOPROBE
92	select GENERIC_CPU_DEVICES
93	select GENERIC_CPU_VULNERABILITIES
94	select GENERIC_ENTRY
95	select GENERIC_GETTIMEOFDAY
96	select GENERIC_IOREMAP if !ARCH_IOREMAP
97	select GENERIC_IRQ_MATRIX_ALLOCATOR
98	select GENERIC_IRQ_MULTI_HANDLER
99	select GENERIC_IRQ_PROBE
100	select GENERIC_IRQ_SHOW
101	select GENERIC_LIB_ASHLDI3
102	select GENERIC_LIB_ASHRDI3
103	select GENERIC_LIB_CMPDI2
104	select GENERIC_LIB_LSHRDI3
105	select GENERIC_LIB_UCMPDI2
106	select GENERIC_LIB_DEVMEM_IS_ALLOWED
107	select GENERIC_PCI_IOMAP
108	select GENERIC_SCHED_CLOCK
109	select GENERIC_SMP_IDLE_THREAD
110	select GENERIC_TIME_VSYSCALL
111	select GENERIC_VDSO_DATA_STORE
112	select GENERIC_VDSO_TIME_NS
113	select GPIOLIB
114	select HAS_IOPORT
115	select HAVE_ARCH_AUDITSYSCALL
116	select HAVE_ARCH_JUMP_LABEL
117	select HAVE_ARCH_JUMP_LABEL_RELATIVE
118	select HAVE_ARCH_KASAN
119	select HAVE_ARCH_KFENCE
120	select HAVE_ARCH_KGDB if PERF_EVENTS
121	select HAVE_ARCH_MMAP_RND_BITS if MMU
122	select HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET
123	select HAVE_ARCH_SECCOMP
124	select HAVE_ARCH_SECCOMP_FILTER
125	select HAVE_ARCH_TRACEHOOK
126	select HAVE_ARCH_TRANSPARENT_HUGEPAGE
127	select HAVE_ARCH_USERFAULTFD_MINOR if USERFAULTFD
128	select HAVE_ASM_MODVERSIONS
129	select HAVE_CONTEXT_TRACKING_USER
130	select HAVE_C_RECORDMCOUNT
131	select HAVE_DEBUG_KMEMLEAK
132	select HAVE_DEBUG_STACKOVERFLOW
133	select HAVE_DMA_CONTIGUOUS
134	select HAVE_DYNAMIC_FTRACE
135	select HAVE_DYNAMIC_FTRACE_WITH_ARGS
136	select HAVE_FTRACE_REGS_HAVING_PT_REGS
137	select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
138	select HAVE_DYNAMIC_FTRACE_WITH_REGS
139	select HAVE_EBPF_JIT
140	select HAVE_EFFICIENT_UNALIGNED_ACCESS if !ARCH_STRICT_ALIGN
141	select HAVE_EXIT_THREAD
142	select HAVE_GUP_FAST
143	select HAVE_FTRACE_GRAPH_FUNC
144	select HAVE_FTRACE_MCOUNT_RECORD
145	select HAVE_FUNCTION_ARG_ACCESS_API
146	select HAVE_FUNCTION_ERROR_INJECTION
147	select HAVE_FUNCTION_GRAPH_FREGS
148	select HAVE_FUNCTION_GRAPH_TRACER
149	select HAVE_FUNCTION_TRACER
150	select HAVE_GCC_PLUGINS
151	select HAVE_GENERIC_VDSO
152	select HAVE_HW_BREAKPOINT if PERF_EVENTS
153	select HAVE_IOREMAP_PROT
154	select HAVE_IRQ_EXIT_ON_IRQ_STACK
155	select HAVE_IRQ_TIME_ACCOUNTING
156	select HAVE_KPROBES
157	select HAVE_KPROBES_ON_FTRACE
158	select HAVE_KRETPROBES
159	select HAVE_LIVEPATCH
160	select HAVE_MOD_ARCH_SPECIFIC
161	select HAVE_NMI
162	select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS && AS_HAS_THIN_ADD_SUB
163	select HAVE_PCI
164	select HAVE_PERF_EVENTS
165	select HAVE_PERF_REGS
166	select HAVE_PERF_USER_STACK_DUMP
167	select HAVE_POSIX_CPU_TIMERS_TASK_WORK
168	select HAVE_PREEMPT_DYNAMIC_KEY
169	select HAVE_REGS_AND_STACK_ACCESS_API
170	select HAVE_RELIABLE_STACKTRACE if UNWINDER_ORC
171	select HAVE_RETHOOK
172	select HAVE_RSEQ
173	select HAVE_RUST
174	select HAVE_SAMPLE_FTRACE_DIRECT
175	select HAVE_SAMPLE_FTRACE_DIRECT_MULTI
176	select HAVE_SETUP_PER_CPU_AREA if NUMA
177	select HAVE_STACK_VALIDATION if HAVE_OBJTOOL
178	select HAVE_STACKPROTECTOR
179	select HAVE_SYSCALL_TRACEPOINTS
180	select HAVE_TIF_NOHZ
181	select HAVE_VIRT_CPU_ACCOUNTING_GEN
182	select IRQ_FORCED_THREADING
183	select IRQ_LOONGARCH_CPU
184	select LOCK_MM_AND_FIND_VMA
185	select MMU_GATHER_MERGE_VMAS if MMU
186	select MODULES_USE_ELF_RELA if MODULES
187	select NEED_PER_CPU_EMBED_FIRST_CHUNK
188	select NEED_PER_CPU_PAGE_FIRST_CHUNK
189	select OF
190	select OF_EARLY_FLATTREE
191	select PCI
192	select PCI_DOMAINS_GENERIC
193	select PCI_ECAM if ACPI
194	select PCI_LOONGSON
195	select PCI_MSI_ARCH_FALLBACKS
196	select PCI_QUIRKS
197	select PERF_USE_VMALLOC
198	select RTC_LIB
199	select SPARSE_IRQ
200	select SYSCTL_ARCH_UNALIGN_ALLOW
201	select SYSCTL_ARCH_UNALIGN_NO_WARN
202	select SYSCTL_EXCEPTION_TRACE
203	select SWIOTLB
204	select TRACE_IRQFLAGS_SUPPORT
205	select USE_PERCPU_NUMA_NODE_ID
206	select USER_STACKTRACE_SUPPORT
207	select VDSO_GETRANDOM
208	select ZONE_DMA32
209
210config 32BIT
211	bool
212
213config 64BIT
214	def_bool y
215
216config GENERIC_BUG
217	def_bool y
218	depends on BUG
219
220config GENERIC_BUG_RELATIVE_POINTERS
221	def_bool y
222	depends on GENERIC_BUG
223
224config GENERIC_CALIBRATE_DELAY
225	def_bool y
226
227config GENERIC_CSUM
228	def_bool y
229
230config GENERIC_HWEIGHT
231	def_bool y
232
233config L1_CACHE_SHIFT
234	int
235	default "6"
236
237config LOCKDEP_SUPPORT
238	bool
239	default y
240
241config STACKTRACE_SUPPORT
242	bool
243	default y
244
245# MACH_LOONGSON32 and MACH_LOONGSON64 are deliberately carried over from the
246# MIPS Loongson code, to preserve Loongson-specific code paths in drivers that
247# are shared between architectures, and specifically expecting the symbols.
248config MACH_LOONGSON32
249	def_bool 32BIT
250
251config MACH_LOONGSON64
252	def_bool 64BIT
253
254config FIX_EARLYCON_MEM
255	def_bool !ARCH_IOREMAP
256
257config PGTABLE_2LEVEL
258	bool
259
260config PGTABLE_3LEVEL
261	bool
262
263config PGTABLE_4LEVEL
264	bool
265
266config PGTABLE_LEVELS
267	int
268	default 2 if PGTABLE_2LEVEL
269	default 3 if PGTABLE_3LEVEL
270	default 4 if PGTABLE_4LEVEL
271
272config SCHED_OMIT_FRAME_POINTER
273	bool
274	default y
275
276config AS_HAS_EXPLICIT_RELOCS
277	def_bool $(as-instr,x:pcalau12i \$t0$(comma)%pc_hi20(x))
278
279config AS_HAS_FCSR_CLASS
280	def_bool $(as-instr,movfcsr2gr \$t0$(comma)\$fcsr0)
281
282config AS_HAS_THIN_ADD_SUB
283	def_bool $(cc-option,-Wa$(comma)-mthin-add-sub) || AS_IS_LLVM
284
285config AS_HAS_LSX_EXTENSION
286	def_bool $(as-instr,vld \$vr0$(comma)\$a0$(comma)0)
287
288config AS_HAS_LASX_EXTENSION
289	def_bool $(as-instr,xvld \$xr0$(comma)\$a0$(comma)0)
290
291config AS_HAS_LBT_EXTENSION
292	def_bool $(as-instr,movscr2gr \$a0$(comma)\$scr0)
293
294config AS_HAS_LVZ_EXTENSION
295	def_bool $(as-instr,hvcl 0)
296
297config CC_HAS_ANNOTATE_TABLEJUMP
298	def_bool $(cc-option,-mannotate-tablejump)
299
300menu "Kernel type and options"
301
302source "kernel/Kconfig.hz"
303
304choice
305	prompt "Page Table Layout"
306	default 16KB_2LEVEL if 32BIT
307	default 16KB_3LEVEL if 64BIT
308	help
309	  Allows choosing the page table layout, which is a combination
310	  of page size and page table levels. The size of virtual memory
311	  address space are determined by the page table layout.
312
313config 4KB_3LEVEL
314	bool "4KB with 3 levels"
315	select HAVE_PAGE_SIZE_4KB
316	select PGTABLE_3LEVEL
317	help
318	  This option selects 4KB page size with 3 level page tables, which
319	  support a maximum of 39 bits of application virtual memory.
320
321config 4KB_4LEVEL
322	bool "4KB with 4 levels"
323	select HAVE_PAGE_SIZE_4KB
324	select PGTABLE_4LEVEL
325	help
326	  This option selects 4KB page size with 4 level page tables, which
327	  support a maximum of 48 bits of application virtual memory.
328
329config 16KB_2LEVEL
330	bool "16KB with 2 levels"
331	select HAVE_PAGE_SIZE_16KB
332	select PGTABLE_2LEVEL
333	help
334	  This option selects 16KB page size with 2 level page tables, which
335	  support a maximum of 36 bits of application virtual memory.
336
337config 16KB_3LEVEL
338	bool "16KB with 3 levels"
339	select HAVE_PAGE_SIZE_16KB
340	select PGTABLE_3LEVEL
341	help
342	  This option selects 16KB page size with 3 level page tables, which
343	  support a maximum of 47 bits of application virtual memory.
344
345config 64KB_2LEVEL
346	bool "64KB with 2 levels"
347	select HAVE_PAGE_SIZE_64KB
348	select PGTABLE_2LEVEL
349	help
350	  This option selects 64KB page size with 2 level page tables, which
351	  support a maximum of 42 bits of application virtual memory.
352
353config 64KB_3LEVEL
354	bool "64KB with 3 levels"
355	select HAVE_PAGE_SIZE_64KB
356	select PGTABLE_3LEVEL
357	help
358	  This option selects 64KB page size with 3 level page tables, which
359	  support a maximum of 55 bits of application virtual memory.
360
361endchoice
362
363config CMDLINE
364	string "Built-in kernel command line"
365	help
366	  For most platforms, the arguments for the kernel's command line
367	  are provided at run-time, during boot. However, there are cases
368	  where either no arguments are being provided or the provided
369	  arguments are insufficient or even invalid.
370
371	  When that occurs, it is possible to define a built-in command
372	  line here and choose how the kernel should use it later on.
373
374choice
375	prompt "Kernel command line type"
376	default CMDLINE_BOOTLOADER
377	help
378	  Choose how the kernel will handle the provided built-in command
379	  line.
380
381config CMDLINE_BOOTLOADER
382	bool "Use bootloader kernel arguments if available"
383	help
384	  Prefer the command-line passed by the boot loader if available.
385	  Use the built-in command line as fallback in case we get nothing
386	  during boot. This is the default behaviour.
387
388config CMDLINE_EXTEND
389	bool "Use built-in to extend bootloader kernel arguments"
390	help
391	  The built-in command line will be appended to the command-
392	  line arguments provided during boot. This is useful in
393	  cases where the provided arguments are insufficient and
394	  you don't want to or cannot modify them.
395
396config CMDLINE_FORCE
397	bool "Always use the built-in kernel command string"
398	help
399	  Always use the built-in command line, even if we get one during
400	  boot. This is useful in case you need to override the provided
401	  command line on systems where you don't have or want control
402	  over it.
403
404endchoice
405
406config BUILTIN_DTB
407	bool "Enable built-in dtb in kernel"
408	depends on OF
409	select GENERIC_BUILTIN_DTB
410	help
411	  Some existing systems do not provide a canonical device tree to
412	  the kernel at boot time. Let's provide a device tree table in the
413	  kernel, keyed by the dts filename, containing the relevant DTBs.
414
415	  Built-in DTBs are generic enough and can be used as references.
416
417config BUILTIN_DTB_NAME
418	string "Source file for built-in dtb"
419	depends on BUILTIN_DTB
420	help
421	  Base name (without suffix, relative to arch/loongarch/boot/dts/)
422	  for the DTS file that will be used to produce the DTB linked into
423	  the kernel.
424
425config DMI
426	bool "Enable DMI scanning"
427	select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
428	default y
429	help
430	  This enables SMBIOS/DMI feature for systems, and scanning of
431	  DMI to identify machine quirks.
432
433config EFI
434	bool "EFI runtime service support"
435	select UCS2_STRING
436	select EFI_RUNTIME_WRAPPERS
437	help
438	  This enables the kernel to use EFI runtime services that are
439	  available (such as the EFI variable services).
440
441config EFI_STUB
442	bool "EFI boot stub support"
443	default y
444	depends on EFI
445	select EFI_GENERIC_STUB
446	help
447	  This kernel feature allows the kernel to be loaded directly by
448	  EFI firmware without the use of a bootloader.
449
450config SCHED_SMT
451	bool "SMT scheduler support"
452	depends on SMP
453	default y
454	help
455	  Improves scheduler's performance when there are multiple
456	  threads in one physical core.
457
458config SMP
459	bool "Multi-Processing support"
460	help
461	  This enables support for systems with more than one CPU. If you have
462	  a system with only one CPU, say N. If you have a system with more
463	  than one CPU, say Y.
464
465	  If you say N here, the kernel will run on uni- and multiprocessor
466	  machines, but will use only one CPU of a multiprocessor machine. If
467	  you say Y here, the kernel will run on many, but not all,
468	  uniprocessor machines. On a uniprocessor machine, the kernel
469	  will run faster if you say N here.
470
471	  See also the SMP-HOWTO available at <http://www.tldp.org/docs.html#howto>.
472
473	  If you don't know what to do here, say N.
474
475config HOTPLUG_CPU
476	bool "Support for hot-pluggable CPUs"
477	depends on SMP
478	select GENERIC_IRQ_MIGRATION
479	help
480	  Say Y here to allow turning CPUs off and on. CPUs can be
481	  controlled through /sys/devices/system/cpu.
482	  (Note: power management support will enable this option
483	    automatically on SMP systems. )
484	  Say N if you want to disable CPU hotplug.
485
486config NR_CPUS
487	int "Maximum number of CPUs (2-256)"
488	range 2 256
489	depends on SMP
490	default "64"
491	help
492	  This allows you to specify the maximum number of CPUs which this
493	  kernel will support.
494
495config NUMA
496	bool "NUMA Support"
497	select SMP
498	help
499	  Say Y to compile the kernel with NUMA (Non-Uniform Memory Access)
500	  support.  This option improves performance on systems with more
501	  than one NUMA node; on single node systems it is generally better
502	  to leave it disabled.
503
504config NODES_SHIFT
505	int
506	default "6"
507	depends on NUMA
508
509config ARCH_FORCE_MAX_ORDER
510	int "Maximum zone order"
511	default "13" if PAGE_SIZE_64KB
512	default "11" if PAGE_SIZE_16KB
513	default "10"
514	help
515	  The kernel memory allocator divides physically contiguous memory
516	  blocks into "zones", where each zone is a power of two number of
517	  pages.  This option selects the largest power of two that the kernel
518	  keeps in the memory allocator.  If you need to allocate very large
519	  blocks of physically contiguous memory, then you may need to
520	  increase this value.
521
522	  The page size is not necessarily 4KB.  Keep this in mind
523	  when choosing a value for this option.
524
525config ARCH_IOREMAP
526	bool "Enable LoongArch DMW-based ioremap()"
527	help
528	  We use generic TLB-based ioremap() by default since it has page
529	  protection support. However, you can enable LoongArch DMW-based
530	  ioremap() for better performance.
531
532config ARCH_WRITECOMBINE
533	bool "Enable WriteCombine (WUC) for ioremap()"
534	help
535	  LoongArch maintains cache coherency in hardware, but when paired
536	  with LS7A chipsets the WUC attribute (Weak-ordered UnCached, which
537	  is similar to WriteCombine) is out of the scope of cache coherency
538	  machanism for PCIe devices (this is a PCIe protocol violation, which
539	  may be fixed in newer chipsets).
540
541	  This means WUC can only used for write-only memory regions now, so
542	  this option is disabled by default, making WUC silently fallback to
543	  SUC for ioremap(). You can enable this option if the kernel is ensured
544	  to run on hardware without this bug.
545
546	  You can override this setting via writecombine=on/off boot parameter.
547
548config ARCH_STRICT_ALIGN
549	bool "Enable -mstrict-align to prevent unaligned accesses" if EXPERT
550	default y
551	help
552	  Not all LoongArch cores support h/w unaligned access, we can use
553	  -mstrict-align build parameter to prevent unaligned accesses.
554
555	  CPUs with h/w unaligned access support:
556	  Loongson-2K2000/2K3000/3A5000/3C5000/3D5000.
557
558	  CPUs without h/w unaligned access support:
559	  Loongson-2K500/2K1000.
560
561	  This option is enabled by default to make the kernel be able to run
562	  on all LoongArch systems. But you can disable it manually if you want
563	  to run kernel only on systems with h/w unaligned access support in
564	  order to optimise for performance.
565
566config CPU_HAS_FPU
567	bool
568	default y
569
570config CPU_HAS_LSX
571	bool "Support for the Loongson SIMD Extension"
572	depends on AS_HAS_LSX_EXTENSION
573	help
574	  Loongson SIMD Extension (LSX) introduces 128 bit wide vector registers
575	  and a set of SIMD instructions to operate on them. When this option
576	  is enabled the kernel will support allocating & switching LSX
577	  vector register contexts. If you know that your kernel will only be
578	  running on CPUs which do not support LSX or that your userland will
579	  not be making use of it then you may wish to say N here to reduce
580	  the size & complexity of your kernel.
581
582	  If unsure, say Y.
583
584config CPU_HAS_LASX
585	bool "Support for the Loongson Advanced SIMD Extension"
586	depends on CPU_HAS_LSX
587	depends on AS_HAS_LASX_EXTENSION
588	help
589	  Loongson Advanced SIMD Extension (LASX) introduces 256 bit wide vector
590	  registers and a set of SIMD instructions to operate on them. When this
591	  option is enabled the kernel will support allocating & switching LASX
592	  vector register contexts. If you know that your kernel will only be
593	  running on CPUs which do not support LASX or that your userland will
594	  not be making use of it then you may wish to say N here to reduce
595	  the size & complexity of your kernel.
596
597	  If unsure, say Y.
598
599config CPU_HAS_LBT
600	bool "Support for the Loongson Binary Translation Extension"
601	depends on AS_HAS_LBT_EXTENSION
602	help
603	  Loongson Binary Translation (LBT) introduces 4 scratch registers (SCR0
604	  to SCR3), x86/ARM eflags (eflags) and x87 fpu stack pointer (ftop).
605	  Enabling this option allows the kernel to allocate and switch registers
606	  specific to LBT.
607
608	  If you want to use this feature, such as the Loongson Architecture
609	  Translator (LAT), say Y.
610
611config CPU_HAS_PREFETCH
612	bool
613	default y
614
615config ARCH_SUPPORTS_KEXEC
616	def_bool y
617
618config ARCH_SUPPORTS_CRASH_DUMP
619	def_bool y
620
621config ARCH_DEFAULT_CRASH_DUMP
622	def_bool y
623
624config ARCH_SELECTS_CRASH_DUMP
625	def_bool y
626	depends on CRASH_DUMP
627	select RELOCATABLE
628
629config ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION
630	def_bool CRASH_RESERVE
631
632config RELOCATABLE
633	bool "Relocatable kernel"
634	select ARCH_HAS_RELR
635	help
636	  This builds the kernel as a Position Independent Executable (PIE),
637	  which retains all relocation metadata required, so as to relocate
638	  the kernel binary at runtime to a different virtual address from
639	  its link address.
640
641config RANDOMIZE_BASE
642	bool "Randomize the address of the kernel (KASLR)"
643	depends on RELOCATABLE
644	help
645	   Randomizes the physical and virtual address at which the
646	   kernel image is loaded, as a security feature that
647	   deters exploit attempts relying on knowledge of the location
648	   of kernel internals.
649
650	   The kernel will be offset by up to RANDOMIZE_BASE_MAX_OFFSET.
651
652	   If unsure, say N.
653
654config RANDOMIZE_BASE_MAX_OFFSET
655	hex "Maximum KASLR offset" if EXPERT
656	depends on RANDOMIZE_BASE
657	range 0x0 0x10000000
658	default "0x01000000"
659	help
660	  When KASLR is active, this provides the maximum offset that will
661	  be applied to the kernel image. It should be set according to the
662	  amount of physical RAM available in the target system.
663
664	  This is limited by the size of the lower address memory, 256MB.
665
666source "kernel/livepatch/Kconfig"
667
668config PARAVIRT
669	bool "Enable paravirtualization code"
670	depends on AS_HAS_LVZ_EXTENSION
671	help
672	  This changes the kernel so it can modify itself when it is run
673	  under a hypervisor, potentially improving performance significantly
674	  over full virtualization.  However, when run without a hypervisor
675	  the kernel is theoretically slower and slightly larger.
676
677config PARAVIRT_TIME_ACCOUNTING
678	bool "Paravirtual steal time accounting"
679	depends on PARAVIRT
680	help
681	  Select this option to enable fine granularity task steal time
682	  accounting. Time spent executing other tasks in parallel with
683	  the current vCPU is discounted from the vCPU power. To account for
684	  that, there can be a small performance impact.
685
686	  If in doubt, say N here.
687
688endmenu
689
690config ARCH_SELECT_MEMORY_MODEL
691	def_bool y
692
693config ARCH_FLATMEM_ENABLE
694	def_bool y
695	depends on !NUMA
696
697config ARCH_SPARSEMEM_ENABLE
698	def_bool y
699	select SPARSEMEM_VMEMMAP_ENABLE
700	help
701	  Say Y to support efficient handling of sparse physical memory,
702	  for architectures which are either NUMA (Non-Uniform Memory Access)
703	  or have huge holes in the physical address space for other reasons.
704	  See <file:Documentation/mm/numa.rst> for more.
705
706config ARCH_MEMORY_PROBE
707	def_bool y
708	depends on MEMORY_HOTPLUG
709
710config MMU
711	bool
712	default y
713
714config ARCH_MMAP_RND_BITS_MIN
715	default 12
716
717config ARCH_MMAP_RND_BITS_MAX
718	default 18
719
720config ARCH_SUPPORTS_UPROBES
721	def_bool y
722
723config KASAN_SHADOW_OFFSET
724	hex
725	default 0x0
726	depends on KASAN
727
728menu "Power management options"
729
730config ARCH_SUSPEND_POSSIBLE
731	def_bool y
732
733config ARCH_HIBERNATION_POSSIBLE
734	def_bool y
735
736source "kernel/power/Kconfig"
737source "drivers/acpi/Kconfig"
738source "drivers/cpufreq/Kconfig"
739
740endmenu
741
742source "arch/loongarch/kvm/Kconfig"
743