LoongArch: Add Loongson Binary Translation (LBT) extension support
[platform/kernel/linux-starfive.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_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_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
170 config 32BIT
171         bool
172
173 config 64BIT
174         def_bool y
175
176 config GENERIC_BUG
177         def_bool y
178         depends on BUG
179
180 config GENERIC_BUG_RELATIVE_POINTERS
181         def_bool y
182         depends on GENERIC_BUG
183
184 config GENERIC_CALIBRATE_DELAY
185         def_bool y
186
187 config GENERIC_CSUM
188         def_bool y
189
190 config GENERIC_HWEIGHT
191         def_bool y
192
193 config L1_CACHE_SHIFT
194         int
195         default "6"
196
197 config LOCKDEP_SUPPORT
198         bool
199         default y
200
201 config 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.
208 config MACH_LOONGSON32
209         def_bool 32BIT
210
211 config MACH_LOONGSON64
212         def_bool 64BIT
213
214 config FIX_EARLYCON_MEM
215         def_bool y
216
217 config PAGE_SIZE_4KB
218         bool
219
220 config PAGE_SIZE_16KB
221         bool
222
223 config PAGE_SIZE_64KB
224         bool
225
226 config PGTABLE_2LEVEL
227         bool
228
229 config PGTABLE_3LEVEL
230         bool
231
232 config PGTABLE_4LEVEL
233         bool
234
235 config PGTABLE_LEVELS
236         int
237         default 2 if PGTABLE_2LEVEL
238         default 3 if PGTABLE_3LEVEL
239         default 4 if PGTABLE_4LEVEL
240
241 config SCHED_OMIT_FRAME_POINTER
242         bool
243         default y
244
245 config AS_HAS_EXPLICIT_RELOCS
246         def_bool $(as-instr,x:pcalau12i \$t0$(comma)%pc_hi20(x))
247
248 config AS_HAS_FCSR_CLASS
249         def_bool $(as-instr,movfcsr2gr \$t0$(comma)\$fcsr0)
250
251 config AS_HAS_LSX_EXTENSION
252         def_bool $(as-instr,vld \$vr0$(comma)\$a0$(comma)0)
253
254 config AS_HAS_LASX_EXTENSION
255         def_bool $(as-instr,xvld \$xr0$(comma)\$a0$(comma)0)
256
257 config AS_HAS_LBT_EXTENSION
258         def_bool $(as-instr,movscr2gr \$a0$(comma)\$scr0)
259
260 menu "Kernel type and options"
261
262 source "kernel/Kconfig.hz"
263
264 choice
265         prompt "Page Table Layout"
266         default 16KB_2LEVEL if 32BIT
267         default 16KB_3LEVEL if 64BIT
268         help
269           Allows choosing the page table layout, which is a combination
270           of page size and page table levels. The size of virtual memory
271           address space are determined by the page table layout.
272
273 config 4KB_3LEVEL
274         bool "4KB with 3 levels"
275         select PAGE_SIZE_4KB
276         select PGTABLE_3LEVEL
277         help
278           This option selects 4KB page size with 3 level page tables, which
279           support a maximum of 39 bits of application virtual memory.
280
281 config 4KB_4LEVEL
282         bool "4KB with 4 levels"
283         select PAGE_SIZE_4KB
284         select PGTABLE_4LEVEL
285         help
286           This option selects 4KB page size with 4 level page tables, which
287           support a maximum of 48 bits of application virtual memory.
288
289 config 16KB_2LEVEL
290         bool "16KB with 2 levels"
291         select PAGE_SIZE_16KB
292         select PGTABLE_2LEVEL
293         help
294           This option selects 16KB page size with 2 level page tables, which
295           support a maximum of 36 bits of application virtual memory.
296
297 config 16KB_3LEVEL
298         bool "16KB with 3 levels"
299         select PAGE_SIZE_16KB
300         select PGTABLE_3LEVEL
301         help
302           This option selects 16KB page size with 3 level page tables, which
303           support a maximum of 47 bits of application virtual memory.
304
305 config 64KB_2LEVEL
306         bool "64KB with 2 levels"
307         select PAGE_SIZE_64KB
308         select PGTABLE_2LEVEL
309         help
310           This option selects 64KB page size with 2 level page tables, which
311           support a maximum of 42 bits of application virtual memory.
312
313 config 64KB_3LEVEL
314         bool "64KB with 3 levels"
315         select PAGE_SIZE_64KB
316         select PGTABLE_3LEVEL
317         help
318           This option selects 64KB page size with 3 level page tables, which
319           support a maximum of 55 bits of application virtual memory.
320
321 endchoice
322
323 config CMDLINE
324         string "Built-in kernel command line"
325         help
326           For most platforms, the arguments for the kernel's command line
327           are provided at run-time, during boot. However, there are cases
328           where either no arguments are being provided or the provided
329           arguments are insufficient or even invalid.
330
331           When that occurs, it is possible to define a built-in command
332           line here and choose how the kernel should use it later on.
333
334 choice
335         prompt "Kernel command line type"
336         default CMDLINE_BOOTLOADER
337         help
338           Choose how the kernel will handle the provided built-in command
339           line.
340
341 config CMDLINE_BOOTLOADER
342         bool "Use bootloader kernel arguments if available"
343         help
344           Prefer the command-line passed by the boot loader if available.
345           Use the built-in command line as fallback in case we get nothing
346           during boot. This is the default behaviour.
347
348 config CMDLINE_EXTEND
349         bool "Use built-in to extend bootloader kernel arguments"
350         help
351           The command-line arguments provided during boot will be
352           appended to the built-in command line. This is useful in
353           cases where the provided arguments are insufficient and
354           you don't want to or cannot modify them.
355
356 config CMDLINE_FORCE
357         bool "Always use the built-in kernel command string"
358         help
359           Always use the built-in command line, even if we get one during
360           boot. This is useful in case you need to override the provided
361           command line on systems where you don't have or want control
362           over it.
363
364 endchoice
365
366 config DMI
367         bool "Enable DMI scanning"
368         select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
369         default y
370         help
371           This enables SMBIOS/DMI feature for systems, and scanning of
372           DMI to identify machine quirks.
373
374 config EFI
375         bool "EFI runtime service support"
376         select UCS2_STRING
377         select EFI_RUNTIME_WRAPPERS
378         help
379           This enables the kernel to use EFI runtime services that are
380           available (such as the EFI variable services).
381
382 config EFI_STUB
383         bool "EFI boot stub support"
384         default y
385         depends on EFI
386         select EFI_GENERIC_STUB
387         help
388           This kernel feature allows the kernel to be loaded directly by
389           EFI firmware without the use of a bootloader.
390
391 config SCHED_SMT
392         bool "SMT scheduler support"
393         default y
394         help
395           Improves scheduler's performance when there are multiple
396           threads in one physical core.
397
398 config SMP
399         bool "Multi-Processing support"
400         help
401           This enables support for systems with more than one CPU. If you have
402           a system with only one CPU, say N. If you have a system with more
403           than one CPU, say Y.
404
405           If you say N here, the kernel will run on uni- and multiprocessor
406           machines, but will use only one CPU of a multiprocessor machine. If
407           you say Y here, the kernel will run on many, but not all,
408           uniprocessor machines. On a uniprocessor machine, the kernel
409           will run faster if you say N here.
410
411           See also the SMP-HOWTO available at <http://www.tldp.org/docs.html#howto>.
412
413           If you don't know what to do here, say N.
414
415 config HOTPLUG_CPU
416         bool "Support for hot-pluggable CPUs"
417         depends on SMP
418         select GENERIC_IRQ_MIGRATION
419         help
420           Say Y here to allow turning CPUs off and on. CPUs can be
421           controlled through /sys/devices/system/cpu.
422           (Note: power management support will enable this option
423             automatically on SMP systems. )
424           Say N if you want to disable CPU hotplug.
425
426 config NR_CPUS
427         int "Maximum number of CPUs (2-256)"
428         range 2 256
429         depends on SMP
430         default "64"
431         help
432           This allows you to specify the maximum number of CPUs which this
433           kernel will support.
434
435 config NUMA
436         bool "NUMA Support"
437         select SMP
438         select ACPI_NUMA if ACPI
439         help
440           Say Y to compile the kernel with NUMA (Non-Uniform Memory Access)
441           support.  This option improves performance on systems with more
442           than one NUMA node; on single node systems it is generally better
443           to leave it disabled.
444
445 config NODES_SHIFT
446         int
447         default "6"
448         depends on NUMA
449
450 config ARCH_FORCE_MAX_ORDER
451         int "Maximum zone order"
452         default "13" if PAGE_SIZE_64KB
453         default "11" if PAGE_SIZE_16KB
454         default "10"
455         help
456           The kernel memory allocator divides physically contiguous memory
457           blocks into "zones", where each zone is a power of two number of
458           pages.  This option selects the largest power of two that the kernel
459           keeps in the memory allocator.  If you need to allocate very large
460           blocks of physically contiguous memory, then you may need to
461           increase this value.
462
463           The page size is not necessarily 4KB.  Keep this in mind
464           when choosing a value for this option.
465
466 config ARCH_IOREMAP
467         bool "Enable LoongArch DMW-based ioremap()"
468         help
469           We use generic TLB-based ioremap() by default since it has page
470           protection support. However, you can enable LoongArch DMW-based
471           ioremap() for better performance.
472
473 config ARCH_WRITECOMBINE
474         bool "Enable WriteCombine (WUC) for ioremap()"
475         help
476           LoongArch maintains cache coherency in hardware, but when paired
477           with LS7A chipsets the WUC attribute (Weak-ordered UnCached, which
478           is similar to WriteCombine) is out of the scope of cache coherency
479           machanism for PCIe devices (this is a PCIe protocol violation, which
480           may be fixed in newer chipsets).
481
482           This means WUC can only used for write-only memory regions now, so
483           this option is disabled by default, making WUC silently fallback to
484           SUC for ioremap(). You can enable this option if the kernel is ensured
485           to run on hardware without this bug.
486
487           You can override this setting via writecombine=on/off boot parameter.
488
489 config ARCH_STRICT_ALIGN
490         bool "Enable -mstrict-align to prevent unaligned accesses" if EXPERT
491         default y
492         help
493           Not all LoongArch cores support h/w unaligned access, we can use
494           -mstrict-align build parameter to prevent unaligned accesses.
495
496           CPUs with h/w unaligned access support:
497           Loongson-2K2000/2K3000/3A5000/3C5000/3D5000.
498
499           CPUs without h/w unaligned access support:
500           Loongson-2K500/2K1000.
501
502           This option is enabled by default to make the kernel be able to run
503           on all LoongArch systems. But you can disable it manually if you want
504           to run kernel only on systems with h/w unaligned access support in
505           order to optimise for performance.
506
507 config CPU_HAS_FPU
508         bool
509         default y
510
511 config CPU_HAS_LSX
512         bool "Support for the Loongson SIMD Extension"
513         depends on AS_HAS_LSX_EXTENSION
514         help
515           Loongson SIMD Extension (LSX) introduces 128 bit wide vector registers
516           and a set of SIMD instructions to operate on them. When this option
517           is enabled the kernel will support allocating & switching LSX
518           vector register contexts. If you know that your kernel will only be
519           running on CPUs which do not support LSX or that your userland will
520           not be making use of it then you may wish to say N here to reduce
521           the size & complexity of your kernel.
522
523           If unsure, say Y.
524
525 config CPU_HAS_LASX
526         bool "Support for the Loongson Advanced SIMD Extension"
527         depends on CPU_HAS_LSX
528         depends on AS_HAS_LASX_EXTENSION
529         help
530           Loongson Advanced SIMD Extension (LASX) introduces 256 bit wide vector
531           registers and a set of SIMD instructions to operate on them. When this
532           option is enabled the kernel will support allocating & switching LASX
533           vector register contexts. If you know that your kernel will only be
534           running on CPUs which do not support LASX or that your userland will
535           not be making use of it then you may wish to say N here to reduce
536           the size & complexity of your kernel.
537
538           If unsure, say Y.
539
540 config CPU_HAS_LBT
541         bool "Support for the Loongson Binary Translation Extension"
542         depends on AS_HAS_LBT_EXTENSION
543         help
544           Loongson Binary Translation (LBT) introduces 4 scratch registers (SCR0
545           to SCR3), x86/ARM eflags (eflags) and x87 fpu stack pointer (ftop).
546           Enabling this option allows the kernel to allocate and switch registers
547           specific to LBT.
548
549           If you want to use this feature, such as the Loongson Architecture
550           Translator (LAT), say Y.
551
552 config CPU_HAS_PREFETCH
553         bool
554         default y
555
556 config KEXEC
557         bool "Kexec system call"
558         select KEXEC_CORE
559         help
560           kexec is a system call that implements the ability to shutdown your
561           current kernel, and to start another kernel.  It is like a reboot
562           but it is independent of the system firmware.   And like a reboot
563           you can start any kernel with it, not just Linux.
564
565           The name comes from the similarity to the exec system call.
566
567 config CRASH_DUMP
568         bool "Build kdump crash kernel"
569         select RELOCATABLE
570         help
571           Generate crash dump after being started by kexec. This should
572           be normally only set in special crash dump kernels which are
573           loaded in the main kernel with kexec-tools into a specially
574           reserved region and then later executed after a crash by
575           kdump/kexec.
576
577           For more details see Documentation/admin-guide/kdump/kdump.rst
578
579 config RELOCATABLE
580         bool "Relocatable kernel"
581         help
582           This builds the kernel as a Position Independent Executable (PIE),
583           which retains all relocation metadata required, so as to relocate
584           the kernel binary at runtime to a different virtual address from
585           its link address.
586
587 config RANDOMIZE_BASE
588         bool "Randomize the address of the kernel (KASLR)"
589         depends on RELOCATABLE
590         help
591            Randomizes the physical and virtual address at which the
592            kernel image is loaded, as a security feature that
593            deters exploit attempts relying on knowledge of the location
594            of kernel internals.
595
596            The kernel will be offset by up to RANDOMIZE_BASE_MAX_OFFSET.
597
598            If unsure, say N.
599
600 config RANDOMIZE_BASE_MAX_OFFSET
601         hex "Maximum KASLR offset" if EXPERT
602         depends on RANDOMIZE_BASE
603         range 0x0 0x10000000
604         default "0x01000000"
605         help
606           When KASLR is active, this provides the maximum offset that will
607           be applied to the kernel image. It should be set according to the
608           amount of physical RAM available in the target system.
609
610           This is limited by the size of the lower address memory, 256MB.
611
612 config SECCOMP
613         bool "Enable seccomp to safely compute untrusted bytecode"
614         depends on PROC_FS
615         default y
616         help
617           This kernel feature is useful for number crunching applications
618           that may need to compute untrusted bytecode during their
619           execution. By using pipes or other transports made available to
620           the process as file descriptors supporting the read/write
621           syscalls, it's possible to isolate those applications in
622           their own address space using seccomp. Once seccomp is
623           enabled via /proc/<pid>/seccomp, it cannot be disabled
624           and the task is only allowed to execute a few safe syscalls
625           defined by each seccomp mode.
626
627           If unsure, say Y. Only embedded should say N here.
628
629 endmenu
630
631 config ARCH_SELECT_MEMORY_MODEL
632         def_bool y
633
634 config ARCH_FLATMEM_ENABLE
635         def_bool y
636         depends on !NUMA
637
638 config ARCH_SPARSEMEM_ENABLE
639         def_bool y
640         select SPARSEMEM_VMEMMAP_ENABLE
641         help
642           Say Y to support efficient handling of sparse physical memory,
643           for architectures which are either NUMA (Non-Uniform Memory Access)
644           or have huge holes in the physical address space for other reasons.
645           See <file:Documentation/mm/numa.rst> for more.
646
647 config ARCH_ENABLE_THP_MIGRATION
648         def_bool y
649         depends on TRANSPARENT_HUGEPAGE
650
651 config ARCH_MEMORY_PROBE
652         def_bool y
653         depends on MEMORY_HOTPLUG
654
655 config MMU
656         bool
657         default y
658
659 config ARCH_MMAP_RND_BITS_MIN
660         default 12
661
662 config ARCH_MMAP_RND_BITS_MAX
663         default 18
664
665 config ARCH_SUPPORTS_UPROBES
666         def_bool y
667
668 menu "Power management options"
669
670 config ARCH_SUSPEND_POSSIBLE
671         def_bool y
672
673 config ARCH_HIBERNATION_POSSIBLE
674         def_bool y
675
676 source "kernel/power/Kconfig"
677 source "drivers/acpi/Kconfig"
678
679 endmenu