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