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