xref: /openbmc/linux/arch/arm64/Kconfig (revision a8da474e)
1config ARM64
2	def_bool y
3	select ACPI_CCA_REQUIRED if ACPI
4	select ACPI_GENERIC_GSI if ACPI
5	select ACPI_REDUCED_HARDWARE_ONLY if ACPI
6	select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
7	select ARCH_HAS_ELF_RANDOMIZE
8	select ARCH_HAS_GCOV_PROFILE_ALL
9	select ARCH_HAS_SG_CHAIN
10	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
11	select ARCH_USE_CMPXCHG_LOCKREF
12	select ARCH_SUPPORTS_ATOMIC_RMW
13	select ARCH_WANT_OPTIONAL_GPIOLIB
14	select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
15	select ARCH_WANT_FRAME_POINTERS
16	select ARM_AMBA
17	select ARM_ARCH_TIMER
18	select ARM_GIC
19	select AUDIT_ARCH_COMPAT_GENERIC
20	select ARM_GIC_V2M if PCI_MSI
21	select ARM_GIC_V3
22	select ARM_GIC_V3_ITS if PCI_MSI
23	select ARM_PSCI_FW
24	select BUILDTIME_EXTABLE_SORT
25	select CLONE_BACKWARDS
26	select COMMON_CLK
27	select CPU_PM if (SUSPEND || CPU_IDLE)
28	select DCACHE_WORD_ACCESS
29	select EDAC_SUPPORT
30	select FRAME_POINTER
31	select GENERIC_ALLOCATOR
32	select GENERIC_CLOCKEVENTS
33	select GENERIC_CLOCKEVENTS_BROADCAST
34	select GENERIC_CPU_AUTOPROBE
35	select GENERIC_EARLY_IOREMAP
36	select GENERIC_IDLE_POLL_SETUP
37	select GENERIC_IRQ_PROBE
38	select GENERIC_IRQ_SHOW
39	select GENERIC_IRQ_SHOW_LEVEL
40	select GENERIC_PCI_IOMAP
41	select GENERIC_SCHED_CLOCK
42	select GENERIC_SMP_IDLE_THREAD
43	select GENERIC_STRNCPY_FROM_USER
44	select GENERIC_STRNLEN_USER
45	select GENERIC_TIME_VSYSCALL
46	select HANDLE_DOMAIN_IRQ
47	select HARDIRQS_SW_RESEND
48	select HAVE_ALIGNED_STRUCT_PAGE if SLUB
49	select HAVE_ARCH_AUDITSYSCALL
50	select HAVE_ARCH_BITREVERSE
51	select HAVE_ARCH_JUMP_LABEL
52	select HAVE_ARCH_KASAN if SPARSEMEM_VMEMMAP
53	select HAVE_ARCH_KGDB
54	select HAVE_ARCH_SECCOMP_FILTER
55	select HAVE_ARCH_TRACEHOOK
56	select HAVE_BPF_JIT
57	select HAVE_C_RECORDMCOUNT
58	select HAVE_CC_STACKPROTECTOR
59	select HAVE_CMPXCHG_DOUBLE
60	select HAVE_CMPXCHG_LOCAL
61	select HAVE_DEBUG_BUGVERBOSE
62	select HAVE_DEBUG_KMEMLEAK
63	select HAVE_DMA_API_DEBUG
64	select HAVE_DMA_ATTRS
65	select HAVE_DMA_CONTIGUOUS
66	select HAVE_DYNAMIC_FTRACE
67	select HAVE_EFFICIENT_UNALIGNED_ACCESS
68	select HAVE_FTRACE_MCOUNT_RECORD
69	select HAVE_FUNCTION_TRACER
70	select HAVE_FUNCTION_GRAPH_TRACER
71	select HAVE_GENERIC_DMA_COHERENT
72	select HAVE_HW_BREAKPOINT if PERF_EVENTS
73	select HAVE_MEMBLOCK
74	select HAVE_PATA_PLATFORM
75	select HAVE_PERF_EVENTS
76	select HAVE_PERF_REGS
77	select HAVE_PERF_USER_STACK_DUMP
78	select HAVE_RCU_TABLE_FREE
79	select HAVE_SYSCALL_TRACEPOINTS
80	select IOMMU_DMA if IOMMU_SUPPORT
81	select IRQ_DOMAIN
82	select IRQ_FORCED_THREADING
83	select MODULES_USE_ELF_RELA
84	select NO_BOOTMEM
85	select OF
86	select OF_EARLY_FLATTREE
87	select OF_RESERVED_MEM
88	select PERF_USE_VMALLOC
89	select POWER_RESET
90	select POWER_SUPPLY
91	select RTC_LIB
92	select SPARSE_IRQ
93	select SYSCTL_EXCEPTION_TRACE
94	select HAVE_CONTEXT_TRACKING
95	help
96	  ARM 64-bit (AArch64) Linux support.
97
98config 64BIT
99	def_bool y
100
101config ARCH_PHYS_ADDR_T_64BIT
102	def_bool y
103
104config MMU
105	def_bool y
106
107config NO_IOPORT_MAP
108	def_bool y if !PCI
109
110config STACKTRACE_SUPPORT
111	def_bool y
112
113config ILLEGAL_POINTER_VALUE
114	hex
115	default 0xdead000000000000
116
117config LOCKDEP_SUPPORT
118	def_bool y
119
120config TRACE_IRQFLAGS_SUPPORT
121	def_bool y
122
123config RWSEM_XCHGADD_ALGORITHM
124	def_bool y
125
126config GENERIC_BUG
127	def_bool y
128	depends on BUG
129
130config GENERIC_BUG_RELATIVE_POINTERS
131	def_bool y
132	depends on GENERIC_BUG
133
134config GENERIC_HWEIGHT
135	def_bool y
136
137config GENERIC_CSUM
138        def_bool y
139
140config GENERIC_CALIBRATE_DELAY
141	def_bool y
142
143config ZONE_DMA
144	def_bool y
145
146config HAVE_GENERIC_RCU_GUP
147	def_bool y
148
149config ARCH_DMA_ADDR_T_64BIT
150	def_bool y
151
152config NEED_DMA_MAP_STATE
153	def_bool y
154
155config NEED_SG_DMA_LENGTH
156	def_bool y
157
158config SMP
159	def_bool y
160
161config SWIOTLB
162	def_bool y
163
164config IOMMU_HELPER
165	def_bool SWIOTLB
166
167config KERNEL_MODE_NEON
168	def_bool y
169
170config FIX_EARLYCON_MEM
171	def_bool y
172
173config PGTABLE_LEVELS
174	int
175	default 2 if ARM64_16K_PAGES && ARM64_VA_BITS_36
176	default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42
177	default 3 if ARM64_64K_PAGES && ARM64_VA_BITS_48
178	default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39
179	default 3 if ARM64_16K_PAGES && ARM64_VA_BITS_47
180	default 4 if !ARM64_64K_PAGES && ARM64_VA_BITS_48
181
182source "init/Kconfig"
183
184source "kernel/Kconfig.freezer"
185
186source "arch/arm64/Kconfig.platforms"
187
188menu "Bus support"
189
190config PCI
191	bool "PCI support"
192	help
193	  This feature enables support for PCI bus system. If you say Y
194	  here, the kernel will include drivers and infrastructure code
195	  to support PCI bus devices.
196
197config PCI_DOMAINS
198	def_bool PCI
199
200config PCI_DOMAINS_GENERIC
201	def_bool PCI
202
203config PCI_SYSCALL
204	def_bool PCI
205
206source "drivers/pci/Kconfig"
207source "drivers/pci/pcie/Kconfig"
208source "drivers/pci/hotplug/Kconfig"
209
210endmenu
211
212menu "Kernel Features"
213
214menu "ARM errata workarounds via the alternatives framework"
215
216config ARM64_ERRATUM_826319
217	bool "Cortex-A53: 826319: System might deadlock if a write cannot complete until read data is accepted"
218	default y
219	help
220	  This option adds an alternative code sequence to work around ARM
221	  erratum 826319 on Cortex-A53 parts up to r0p2 with an AMBA 4 ACE or
222	  AXI master interface and an L2 cache.
223
224	  If a Cortex-A53 uses an AMBA AXI4 ACE interface to other processors
225	  and is unable to accept a certain write via this interface, it will
226	  not progress on read data presented on the read data channel and the
227	  system can deadlock.
228
229	  The workaround promotes data cache clean instructions to
230	  data cache clean-and-invalidate.
231	  Please note that this does not necessarily enable the workaround,
232	  as it depends on the alternative framework, which will only patch
233	  the kernel if an affected CPU is detected.
234
235	  If unsure, say Y.
236
237config ARM64_ERRATUM_827319
238	bool "Cortex-A53: 827319: Data cache clean instructions might cause overlapping transactions to the interconnect"
239	default y
240	help
241	  This option adds an alternative code sequence to work around ARM
242	  erratum 827319 on Cortex-A53 parts up to r0p2 with an AMBA 5 CHI
243	  master interface and an L2 cache.
244
245	  Under certain conditions this erratum can cause a clean line eviction
246	  to occur at the same time as another transaction to the same address
247	  on the AMBA 5 CHI interface, which can cause data corruption if the
248	  interconnect reorders the two transactions.
249
250	  The workaround promotes data cache clean instructions to
251	  data cache clean-and-invalidate.
252	  Please note that this does not necessarily enable the workaround,
253	  as it depends on the alternative framework, which will only patch
254	  the kernel if an affected CPU is detected.
255
256	  If unsure, say Y.
257
258config ARM64_ERRATUM_824069
259	bool "Cortex-A53: 824069: Cache line might not be marked as clean after a CleanShared snoop"
260	default y
261	help
262	  This option adds an alternative code sequence to work around ARM
263	  erratum 824069 on Cortex-A53 parts up to r0p2 when it is connected
264	  to a coherent interconnect.
265
266	  If a Cortex-A53 processor is executing a store or prefetch for
267	  write instruction at the same time as a processor in another
268	  cluster is executing a cache maintenance operation to the same
269	  address, then this erratum might cause a clean cache line to be
270	  incorrectly marked as dirty.
271
272	  The workaround promotes data cache clean instructions to
273	  data cache clean-and-invalidate.
274	  Please note that this option does not necessarily enable the
275	  workaround, as it depends on the alternative framework, which will
276	  only patch the kernel if an affected CPU is detected.
277
278	  If unsure, say Y.
279
280config ARM64_ERRATUM_819472
281	bool "Cortex-A53: 819472: Store exclusive instructions might cause data corruption"
282	default y
283	help
284	  This option adds an alternative code sequence to work around ARM
285	  erratum 819472 on Cortex-A53 parts up to r0p1 with an L2 cache
286	  present when it is connected to a coherent interconnect.
287
288	  If the processor is executing a load and store exclusive sequence at
289	  the same time as a processor in another cluster is executing a cache
290	  maintenance operation to the same address, then this erratum might
291	  cause data corruption.
292
293	  The workaround promotes data cache clean instructions to
294	  data cache clean-and-invalidate.
295	  Please note that this does not necessarily enable the workaround,
296	  as it depends on the alternative framework, which will only patch
297	  the kernel if an affected CPU is detected.
298
299	  If unsure, say Y.
300
301config ARM64_ERRATUM_832075
302	bool "Cortex-A57: 832075: possible deadlock on mixing exclusive memory accesses with device loads"
303	default y
304	help
305	  This option adds an alternative code sequence to work around ARM
306	  erratum 832075 on Cortex-A57 parts up to r1p2.
307
308	  Affected Cortex-A57 parts might deadlock when exclusive load/store
309	  instructions to Write-Back memory are mixed with Device loads.
310
311	  The workaround is to promote device loads to use Load-Acquire
312	  semantics.
313	  Please note that this does not necessarily enable the workaround,
314	  as it depends on the alternative framework, which will only patch
315	  the kernel if an affected CPU is detected.
316
317	  If unsure, say Y.
318
319config ARM64_ERRATUM_845719
320	bool "Cortex-A53: 845719: a load might read incorrect data"
321	depends on COMPAT
322	default y
323	help
324	  This option adds an alternative code sequence to work around ARM
325	  erratum 845719 on Cortex-A53 parts up to r0p4.
326
327	  When running a compat (AArch32) userspace on an affected Cortex-A53
328	  part, a load at EL0 from a virtual address that matches the bottom 32
329	  bits of the virtual address used by a recent load at (AArch64) EL1
330	  might return incorrect data.
331
332	  The workaround is to write the contextidr_el1 register on exception
333	  return to a 32-bit task.
334	  Please note that this does not necessarily enable the workaround,
335	  as it depends on the alternative framework, which will only patch
336	  the kernel if an affected CPU is detected.
337
338	  If unsure, say Y.
339
340config ARM64_ERRATUM_843419
341	bool "Cortex-A53: 843419: A load or store might access an incorrect address"
342	depends on MODULES
343	default y
344	help
345	  This option builds kernel modules using the large memory model in
346	  order to avoid the use of the ADRP instruction, which can cause
347	  a subsequent memory access to use an incorrect address on Cortex-A53
348	  parts up to r0p4.
349
350	  Note that the kernel itself must be linked with a version of ld
351	  which fixes potentially affected ADRP instructions through the
352	  use of veneers.
353
354	  If unsure, say Y.
355
356config CAVIUM_ERRATUM_22375
357	bool "Cavium erratum 22375, 24313"
358	default y
359	help
360	  Enable workaround for erratum 22375, 24313.
361
362	  This implements two gicv3-its errata workarounds for ThunderX. Both
363	  with small impact affecting only ITS table allocation.
364
365	    erratum 22375: only alloc 8MB table size
366	    erratum 24313: ignore memory access type
367
368	  The fixes are in ITS initialization and basically ignore memory access
369	  type and table size provided by the TYPER and BASER registers.
370
371	  If unsure, say Y.
372
373config CAVIUM_ERRATUM_23154
374	bool "Cavium erratum 23154: Access to ICC_IAR1_EL1 is not sync'ed"
375	default y
376	help
377	  The gicv3 of ThunderX requires a modified version for
378	  reading the IAR status to ensure data synchronization
379	  (access to icc_iar1_el1 is not sync'ed before and after).
380
381	  If unsure, say Y.
382
383endmenu
384
385
386choice
387	prompt "Page size"
388	default ARM64_4K_PAGES
389	help
390	  Page size (translation granule) configuration.
391
392config ARM64_4K_PAGES
393	bool "4KB"
394	help
395	  This feature enables 4KB pages support.
396
397config ARM64_16K_PAGES
398	bool "16KB"
399	help
400	  The system will use 16KB pages support. AArch32 emulation
401	  requires applications compiled with 16K (or a multiple of 16K)
402	  aligned segments.
403
404config ARM64_64K_PAGES
405	bool "64KB"
406	help
407	  This feature enables 64KB pages support (4KB by default)
408	  allowing only two levels of page tables and faster TLB
409	  look-up. AArch32 emulation requires applications compiled
410	  with 64K aligned segments.
411
412endchoice
413
414choice
415	prompt "Virtual address space size"
416	default ARM64_VA_BITS_39 if ARM64_4K_PAGES
417	default ARM64_VA_BITS_47 if ARM64_16K_PAGES
418	default ARM64_VA_BITS_42 if ARM64_64K_PAGES
419	help
420	  Allows choosing one of multiple possible virtual address
421	  space sizes. The level of translation table is determined by
422	  a combination of page size and virtual address space size.
423
424config ARM64_VA_BITS_36
425	bool "36-bit" if EXPERT
426	depends on ARM64_16K_PAGES
427
428config ARM64_VA_BITS_39
429	bool "39-bit"
430	depends on ARM64_4K_PAGES
431
432config ARM64_VA_BITS_42
433	bool "42-bit"
434	depends on ARM64_64K_PAGES
435
436config ARM64_VA_BITS_47
437	bool "47-bit"
438	depends on ARM64_16K_PAGES
439
440config ARM64_VA_BITS_48
441	bool "48-bit"
442
443endchoice
444
445config ARM64_VA_BITS
446	int
447	default 36 if ARM64_VA_BITS_36
448	default 39 if ARM64_VA_BITS_39
449	default 42 if ARM64_VA_BITS_42
450	default 47 if ARM64_VA_BITS_47
451	default 48 if ARM64_VA_BITS_48
452
453config CPU_BIG_ENDIAN
454       bool "Build big-endian kernel"
455       help
456         Say Y if you plan on running a kernel in big-endian mode.
457
458config SCHED_MC
459	bool "Multi-core scheduler support"
460	help
461	  Multi-core scheduler support improves the CPU scheduler's decision
462	  making when dealing with multi-core CPU chips at a cost of slightly
463	  increased overhead in some places. If unsure say N here.
464
465config SCHED_SMT
466	bool "SMT scheduler support"
467	help
468	  Improves the CPU scheduler's decision making when dealing with
469	  MultiThreading at a cost of slightly increased overhead in some
470	  places. If unsure say N here.
471
472config NR_CPUS
473	int "Maximum number of CPUs (2-4096)"
474	range 2 4096
475	# These have to remain sorted largest to smallest
476	default "64"
477
478config HOTPLUG_CPU
479	bool "Support for hot-pluggable CPUs"
480	select GENERIC_IRQ_MIGRATION
481	help
482	  Say Y here to experiment with turning CPUs off and on.  CPUs
483	  can be controlled through /sys/devices/system/cpu.
484
485source kernel/Kconfig.preempt
486source kernel/Kconfig.hz
487
488config ARCH_HAS_HOLES_MEMORYMODEL
489	def_bool y if SPARSEMEM
490
491config ARCH_SPARSEMEM_ENABLE
492	def_bool y
493	select SPARSEMEM_VMEMMAP_ENABLE
494
495config ARCH_SPARSEMEM_DEFAULT
496	def_bool ARCH_SPARSEMEM_ENABLE
497
498config ARCH_SELECT_MEMORY_MODEL
499	def_bool ARCH_SPARSEMEM_ENABLE
500
501config HAVE_ARCH_PFN_VALID
502	def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
503
504config HW_PERF_EVENTS
505	def_bool y
506	depends on ARM_PMU
507
508config SYS_SUPPORTS_HUGETLBFS
509	def_bool y
510
511config ARCH_WANT_GENERAL_HUGETLB
512	def_bool y
513
514config ARCH_WANT_HUGE_PMD_SHARE
515	def_bool y if ARM64_4K_PAGES || (ARM64_16K_PAGES && !ARM64_VA_BITS_36)
516
517config HAVE_ARCH_TRANSPARENT_HUGEPAGE
518	def_bool y
519
520config ARCH_HAS_CACHE_LINE_SIZE
521	def_bool y
522
523source "mm/Kconfig"
524
525config SECCOMP
526	bool "Enable seccomp to safely compute untrusted bytecode"
527	---help---
528	  This kernel feature is useful for number crunching applications
529	  that may need to compute untrusted bytecode during their
530	  execution. By using pipes or other transports made available to
531	  the process as file descriptors supporting the read/write
532	  syscalls, it's possible to isolate those applications in
533	  their own address space using seccomp. Once seccomp is
534	  enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
535	  and the task is only allowed to execute a few safe syscalls
536	  defined by each seccomp mode.
537
538config XEN_DOM0
539	def_bool y
540	depends on XEN
541
542config XEN
543	bool "Xen guest support on ARM64"
544	depends on ARM64 && OF
545	select SWIOTLB_XEN
546	help
547	  Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64.
548
549config FORCE_MAX_ZONEORDER
550	int
551	default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
552	default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE)
553	default "11"
554	help
555	  The kernel memory allocator divides physically contiguous memory
556	  blocks into "zones", where each zone is a power of two number of
557	  pages.  This option selects the largest power of two that the kernel
558	  keeps in the memory allocator.  If you need to allocate very large
559	  blocks of physically contiguous memory, then you may need to
560	  increase this value.
561
562	  This config option is actually maximum order plus one. For example,
563	  a value of 11 means that the largest free memory block is 2^10 pages.
564
565	  We make sure that we can allocate upto a HugePage size for each configuration.
566	  Hence we have :
567		MAX_ORDER = (PMD_SHIFT - PAGE_SHIFT) + 1 => PAGE_SHIFT - 2
568
569	  However for 4K, we choose a higher default value, 11 as opposed to 10, giving us
570	  4M allocations matching the default size used by generic code.
571
572menuconfig ARMV8_DEPRECATED
573	bool "Emulate deprecated/obsolete ARMv8 instructions"
574	depends on COMPAT
575	help
576	  Legacy software support may require certain instructions
577	  that have been deprecated or obsoleted in the architecture.
578
579	  Enable this config to enable selective emulation of these
580	  features.
581
582	  If unsure, say Y
583
584if ARMV8_DEPRECATED
585
586config SWP_EMULATION
587	bool "Emulate SWP/SWPB instructions"
588	help
589	  ARMv8 obsoletes the use of A32 SWP/SWPB instructions such that
590	  they are always undefined. Say Y here to enable software
591	  emulation of these instructions for userspace using LDXR/STXR.
592
593	  In some older versions of glibc [<=2.8] SWP is used during futex
594	  trylock() operations with the assumption that the code will not
595	  be preempted. This invalid assumption may be more likely to fail
596	  with SWP emulation enabled, leading to deadlock of the user
597	  application.
598
599	  NOTE: when accessing uncached shared regions, LDXR/STXR rely
600	  on an external transaction monitoring block called a global
601	  monitor to maintain update atomicity. If your system does not
602	  implement a global monitor, this option can cause programs that
603	  perform SWP operations to uncached memory to deadlock.
604
605	  If unsure, say Y
606
607config CP15_BARRIER_EMULATION
608	bool "Emulate CP15 Barrier instructions"
609	help
610	  The CP15 barrier instructions - CP15ISB, CP15DSB, and
611	  CP15DMB - are deprecated in ARMv8 (and ARMv7). It is
612	  strongly recommended to use the ISB, DSB, and DMB
613	  instructions instead.
614
615	  Say Y here to enable software emulation of these
616	  instructions for AArch32 userspace code. When this option is
617	  enabled, CP15 barrier usage is traced which can help
618	  identify software that needs updating.
619
620	  If unsure, say Y
621
622config SETEND_EMULATION
623	bool "Emulate SETEND instruction"
624	help
625	  The SETEND instruction alters the data-endianness of the
626	  AArch32 EL0, and is deprecated in ARMv8.
627
628	  Say Y here to enable software emulation of the instruction
629	  for AArch32 userspace code.
630
631	  Note: All the cpus on the system must have mixed endian support at EL0
632	  for this feature to be enabled. If a new CPU - which doesn't support mixed
633	  endian - is hotplugged in after this feature has been enabled, there could
634	  be unexpected results in the applications.
635
636	  If unsure, say Y
637endif
638
639menu "ARMv8.1 architectural features"
640
641config ARM64_HW_AFDBM
642	bool "Support for hardware updates of the Access and Dirty page flags"
643	default y
644	help
645	  The ARMv8.1 architecture extensions introduce support for
646	  hardware updates of the access and dirty information in page
647	  table entries. When enabled in TCR_EL1 (HA and HD bits) on
648	  capable processors, accesses to pages with PTE_AF cleared will
649	  set this bit instead of raising an access flag fault.
650	  Similarly, writes to read-only pages with the DBM bit set will
651	  clear the read-only bit (AP[2]) instead of raising a
652	  permission fault.
653
654	  Kernels built with this configuration option enabled continue
655	  to work on pre-ARMv8.1 hardware and the performance impact is
656	  minimal. If unsure, say Y.
657
658config ARM64_PAN
659	bool "Enable support for Privileged Access Never (PAN)"
660	default y
661	help
662	 Privileged Access Never (PAN; part of the ARMv8.1 Extensions)
663	 prevents the kernel or hypervisor from accessing user-space (EL0)
664	 memory directly.
665
666	 Choosing this option will cause any unprotected (not using
667	 copy_to_user et al) memory access to fail with a permission fault.
668
669	 The feature is detected at runtime, and will remain as a 'nop'
670	 instruction if the cpu does not implement the feature.
671
672config ARM64_LSE_ATOMICS
673	bool "Atomic instructions"
674	help
675	  As part of the Large System Extensions, ARMv8.1 introduces new
676	  atomic instructions that are designed specifically to scale in
677	  very large systems.
678
679	  Say Y here to make use of these instructions for the in-kernel
680	  atomic routines. This incurs a small overhead on CPUs that do
681	  not support these instructions and requires the kernel to be
682	  built with binutils >= 2.25.
683
684endmenu
685
686endmenu
687
688menu "Boot options"
689
690config CMDLINE
691	string "Default kernel command string"
692	default ""
693	help
694	  Provide a set of default command-line options at build time by
695	  entering them here. As a minimum, you should specify the the
696	  root device (e.g. root=/dev/nfs).
697
698config CMDLINE_FORCE
699	bool "Always use the default kernel command string"
700	help
701	  Always use the default kernel command string, even if the boot
702	  loader passes other arguments to the kernel.
703	  This is useful if you cannot or don't want to change the
704	  command-line options your boot loader passes to the kernel.
705
706config EFI_STUB
707	bool
708
709config EFI
710	bool "UEFI runtime support"
711	depends on OF && !CPU_BIG_ENDIAN
712	select LIBFDT
713	select UCS2_STRING
714	select EFI_PARAMS_FROM_FDT
715	select EFI_RUNTIME_WRAPPERS
716	select EFI_STUB
717	select EFI_ARMSTUB
718	default y
719	help
720	  This option provides support for runtime services provided
721	  by UEFI firmware (such as non-volatile variables, realtime
722          clock, and platform reset). A UEFI stub is also provided to
723	  allow the kernel to be booted as an EFI application. This
724	  is only useful on systems that have UEFI firmware.
725
726config DMI
727	bool "Enable support for SMBIOS (DMI) tables"
728	depends on EFI
729	default y
730	help
731	  This enables SMBIOS/DMI feature for systems.
732
733	  This option is only useful on systems that have UEFI firmware.
734	  However, even with this option, the resultant kernel should
735	  continue to boot on existing non-UEFI platforms.
736
737endmenu
738
739menu "Userspace binary formats"
740
741source "fs/Kconfig.binfmt"
742
743config COMPAT
744	bool "Kernel support for 32-bit EL0"
745	depends on ARM64_4K_PAGES || EXPERT
746	select COMPAT_BINFMT_ELF
747	select HAVE_UID16
748	select OLD_SIGSUSPEND3
749	select COMPAT_OLD_SIGACTION
750	help
751	  This option enables support for a 32-bit EL0 running under a 64-bit
752	  kernel at EL1. AArch32-specific components such as system calls,
753	  the user helper functions, VFP support and the ptrace interface are
754	  handled appropriately by the kernel.
755
756	  If you use a page size other than 4KB (i.e, 16KB or 64KB), please be aware
757	  that you will only be able to execute AArch32 binaries that were compiled
758	  with page size aligned segments.
759
760	  If you want to execute 32-bit userspace applications, say Y.
761
762config SYSVIPC_COMPAT
763	def_bool y
764	depends on COMPAT && SYSVIPC
765
766endmenu
767
768menu "Power management options"
769
770source "kernel/power/Kconfig"
771
772config ARCH_SUSPEND_POSSIBLE
773	def_bool y
774
775endmenu
776
777menu "CPU Power Management"
778
779source "drivers/cpuidle/Kconfig"
780
781source "drivers/cpufreq/Kconfig"
782
783endmenu
784
785source "net/Kconfig"
786
787source "drivers/Kconfig"
788
789source "drivers/firmware/Kconfig"
790
791source "drivers/acpi/Kconfig"
792
793source "fs/Kconfig"
794
795source "arch/arm64/kvm/Kconfig"
796
797source "arch/arm64/Kconfig.debug"
798
799source "security/Kconfig"
800
801source "crypto/Kconfig"
802if CRYPTO
803source "arch/arm64/crypto/Kconfig"
804endif
805
806source "lib/Kconfig"
807