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