• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1config ARM64
2	def_bool y
3	select ACPI_CCA_REQUIRED if ACPI
4	select ACPI_GENERIC_GSI if ACPI
5	select ACPI_GTDT if ACPI
6	select ACPI_IORT if ACPI
7	select ACPI_REDUCED_HARDWARE_ONLY if ACPI
8	select ACPI_MCFG if ACPI
9	select ACPI_SPCR_TABLE if ACPI
10	select ACPI_PPTT if ACPI
11	select ARCH_CLOCKSOURCE_DATA
12	select ARCH_HAS_DEBUG_VIRTUAL
13	select ARCH_HAS_DEVMEM_IS_ALLOWED
14	select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI
15	select ARCH_HAS_ELF_RANDOMIZE
16	select ARCH_HAS_FAST_MULTIPLIER
17	select ARCH_HAS_FORTIFY_SOURCE
18	select ARCH_HAS_GCOV_PROFILE_ALL
19	select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA
20	select ARCH_HAS_KCOV
21	select ARCH_HAS_MEMBARRIER_SYNC_CORE
22	select ARCH_HAS_PTE_SPECIAL
23	select ARCH_HAS_SET_MEMORY
24	select ARCH_HAS_SG_CHAIN
25	select ARCH_HAS_STRICT_KERNEL_RWX
26	select ARCH_HAS_STRICT_MODULE_RWX
27	select ARCH_HAS_SYSCALL_WRAPPER
28	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
29	select ARCH_HAVE_NMI_SAFE_CMPXCHG
30	select ARCH_INLINE_READ_LOCK if !PREEMPT
31	select ARCH_INLINE_READ_LOCK_BH if !PREEMPT
32	select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPT
33	select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPT
34	select ARCH_INLINE_READ_UNLOCK if !PREEMPT
35	select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPT
36	select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPT
37	select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPT
38	select ARCH_INLINE_WRITE_LOCK if !PREEMPT
39	select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPT
40	select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPT
41	select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPT
42	select ARCH_INLINE_WRITE_UNLOCK if !PREEMPT
43	select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPT
44	select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPT
45	select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPT
46	select ARCH_INLINE_SPIN_TRYLOCK if !PREEMPT
47	select ARCH_INLINE_SPIN_TRYLOCK_BH if !PREEMPT
48	select ARCH_INLINE_SPIN_LOCK if !PREEMPT
49	select ARCH_INLINE_SPIN_LOCK_BH if !PREEMPT
50	select ARCH_INLINE_SPIN_LOCK_IRQ if !PREEMPT
51	select ARCH_INLINE_SPIN_LOCK_IRQSAVE if !PREEMPT
52	select ARCH_INLINE_SPIN_UNLOCK if !PREEMPT
53	select ARCH_INLINE_SPIN_UNLOCK_BH if !PREEMPT
54	select ARCH_INLINE_SPIN_UNLOCK_IRQ if !PREEMPT
55	select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE if !PREEMPT
56	select ARCH_USE_CMPXCHG_LOCKREF
57	select ARCH_USE_QUEUED_RWLOCKS
58	select ARCH_USE_QUEUED_SPINLOCKS
59	select ARCH_SUPPORTS_MEMORY_FAILURE
60	select ARCH_SUPPORTS_ATOMIC_RMW
61	select ARCH_SUPPORTS_INT128 if GCC_VERSION >= 50000 || CC_IS_CLANG
62	select ARCH_SUPPORTS_NUMA_BALANCING
63	select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
64	select ARCH_WANT_FRAME_POINTERS
65	select ARCH_HAS_UBSAN_SANITIZE_ALL
66	select ARM_AMBA
67	select ARM_ARCH_TIMER
68	select ARM_GIC
69	select AUDIT_ARCH_COMPAT_GENERIC
70	select ARM_GIC_V2M if PCI
71	select ARM_GIC_V3
72	select ARM_GIC_V3_ITS if PCI
73	select ARM_PSCI_FW
74	select BUILDTIME_EXTABLE_SORT
75	select CLONE_BACKWARDS
76	select COMMON_CLK
77	select CPU_PM if (SUSPEND || CPU_IDLE)
78	select DCACHE_WORD_ACCESS
79	select DMA_DIRECT_OPS
80	select EDAC_SUPPORT
81	select FRAME_POINTER
82	select GENERIC_ALLOCATOR
83	select GENERIC_ARCH_TOPOLOGY
84	select GENERIC_CLOCKEVENTS
85	select GENERIC_CLOCKEVENTS_BROADCAST
86	select GENERIC_CPU_AUTOPROBE
87	select GENERIC_CPU_VULNERABILITIES
88	select GENERIC_EARLY_IOREMAP
89	select GENERIC_IDLE_POLL_SETUP
90	select GENERIC_IRQ_MULTI_HANDLER
91	select GENERIC_IRQ_PROBE
92	select GENERIC_IRQ_SHOW
93	select GENERIC_IRQ_SHOW_LEVEL
94	select GENERIC_PCI_IOMAP
95	select GENERIC_SCHED_CLOCK
96	select GENERIC_SMP_IDLE_THREAD
97	select GENERIC_STRNCPY_FROM_USER
98	select GENERIC_STRNLEN_USER
99	select GENERIC_TIME_VSYSCALL
100	select HANDLE_DOMAIN_IRQ
101	select HARDIRQS_SW_RESEND
102	select HAVE_ACPI_APEI if (ACPI && EFI)
103	select HAVE_ALIGNED_STRUCT_PAGE if SLUB
104	select HAVE_ARCH_AUDITSYSCALL
105	select HAVE_ARCH_BITREVERSE
106	select HAVE_ARCH_HUGE_VMAP
107	select HAVE_ARCH_JUMP_LABEL
108	select HAVE_ARCH_KASAN if !(ARM64_16K_PAGES && ARM64_VA_BITS_48)
109	select HAVE_ARCH_KGDB
110	select HAVE_ARCH_MMAP_RND_BITS
111	select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
112	select HAVE_ARCH_PREL32_RELOCATIONS
113	select HAVE_ARCH_SECCOMP_FILTER
114	select HAVE_ARCH_STACKLEAK
115	select HAVE_ARCH_THREAD_STRUCT_WHITELIST
116	select HAVE_ARCH_TRACEHOOK
117	select HAVE_ARCH_TRANSPARENT_HUGEPAGE
118	select HAVE_ARCH_VMAP_STACK
119	select HAVE_ARM_SMCCC
120	select HAVE_EBPF_JIT
121	select HAVE_C_RECORDMCOUNT
122	select HAVE_CMPXCHG_DOUBLE
123	select HAVE_CMPXCHG_LOCAL
124	select HAVE_CONTEXT_TRACKING
125	select HAVE_DEBUG_BUGVERBOSE
126	select HAVE_DEBUG_KMEMLEAK
127	select HAVE_DMA_CONTIGUOUS
128	select HAVE_DYNAMIC_FTRACE
129	select HAVE_EFFICIENT_UNALIGNED_ACCESS
130	select HAVE_FTRACE_MCOUNT_RECORD
131	select HAVE_FUNCTION_TRACER
132	select HAVE_FUNCTION_GRAPH_TRACER
133	select HAVE_GCC_PLUGINS
134	select HAVE_GENERIC_DMA_COHERENT
135	select HAVE_HW_BREAKPOINT if PERF_EVENTS
136	select HAVE_IRQ_TIME_ACCOUNTING
137	select HAVE_MEMBLOCK
138	select HAVE_MEMBLOCK_NODE_MAP if NUMA
139	select HAVE_NMI
140	select HAVE_PATA_PLATFORM
141	select HAVE_PERF_EVENTS
142	select HAVE_PERF_REGS
143	select HAVE_PERF_USER_STACK_DUMP
144	select HAVE_REGS_AND_STACK_ACCESS_API
145	select HAVE_RCU_TABLE_FREE
146	select HAVE_RSEQ
147	select HAVE_STACKPROTECTOR
148	select HAVE_SYSCALL_TRACEPOINTS
149	select HAVE_KPROBES
150	select HAVE_KRETPROBES
151	select IOMMU_DMA if IOMMU_SUPPORT
152	select IRQ_DOMAIN
153	select IRQ_FORCED_THREADING
154	select MODULES_USE_ELF_RELA
155	select MULTI_IRQ_HANDLER
156	select NEED_DMA_MAP_STATE
157	select NEED_SG_DMA_LENGTH
158	select NO_BOOTMEM
159	select OF
160	select OF_EARLY_FLATTREE
161	select OF_RESERVED_MEM
162	select PCI_ECAM if ACPI
163	select POWER_RESET
164	select POWER_SUPPLY
165	select REFCOUNT_FULL
166	select SPARSE_IRQ
167	select SWIOTLB
168	select SYSCTL_EXCEPTION_TRACE
169	select THREAD_INFO_IN_TASK
170	help
171	  ARM 64-bit (AArch64) Linux support.
172
173config 64BIT
174	def_bool y
175
176config MMU
177	def_bool y
178
179config ARM64_PAGE_SHIFT
180	int
181	default 16 if ARM64_64K_PAGES
182	default 14 if ARM64_16K_PAGES
183	default 12
184
185config ARM64_CONT_SHIFT
186	int
187	default 5 if ARM64_64K_PAGES
188	default 7 if ARM64_16K_PAGES
189	default 4
190
191config ARCH_MMAP_RND_BITS_MIN
192       default 14 if ARM64_64K_PAGES
193       default 16 if ARM64_16K_PAGES
194       default 18
195
196# max bits determined by the following formula:
197#  VA_BITS - PAGE_SHIFT - 3
198config ARCH_MMAP_RND_BITS_MAX
199       default 19 if ARM64_VA_BITS=36
200       default 24 if ARM64_VA_BITS=39
201       default 27 if ARM64_VA_BITS=42
202       default 30 if ARM64_VA_BITS=47
203       default 29 if ARM64_VA_BITS=48 && ARM64_64K_PAGES
204       default 31 if ARM64_VA_BITS=48 && ARM64_16K_PAGES
205       default 33 if ARM64_VA_BITS=48
206       default 14 if ARM64_64K_PAGES
207       default 16 if ARM64_16K_PAGES
208       default 18
209
210config ARCH_MMAP_RND_COMPAT_BITS_MIN
211       default 7 if ARM64_64K_PAGES
212       default 9 if ARM64_16K_PAGES
213       default 11
214
215config ARCH_MMAP_RND_COMPAT_BITS_MAX
216       default 16
217
218config NO_IOPORT_MAP
219	def_bool y if !PCI
220
221config STACKTRACE_SUPPORT
222	def_bool y
223
224config ILLEGAL_POINTER_VALUE
225	hex
226	default 0xdead000000000000
227
228config LOCKDEP_SUPPORT
229	def_bool y
230
231config TRACE_IRQFLAGS_SUPPORT
232	def_bool y
233
234config RWSEM_XCHGADD_ALGORITHM
235	def_bool y
236
237config GENERIC_BUG
238	def_bool y
239	depends on BUG
240
241config GENERIC_BUG_RELATIVE_POINTERS
242	def_bool y
243	depends on GENERIC_BUG
244
245config GENERIC_HWEIGHT
246	def_bool y
247
248config GENERIC_CSUM
249        def_bool y
250
251config GENERIC_CALIBRATE_DELAY
252	def_bool y
253
254config ZONE_DMA32
255	bool "Support DMA32 zone" if EXPERT
256	default y
257
258config HAVE_GENERIC_GUP
259	def_bool y
260
261config SMP
262	def_bool y
263
264config KERNEL_MODE_NEON
265	def_bool y
266
267config FIX_EARLYCON_MEM
268	def_bool y
269
270config PGTABLE_LEVELS
271	int
272	default 2 if ARM64_16K_PAGES && ARM64_VA_BITS_36
273	default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42
274	default 3 if ARM64_64K_PAGES && ARM64_VA_BITS_48
275	default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39
276	default 3 if ARM64_16K_PAGES && ARM64_VA_BITS_47
277	default 4 if !ARM64_64K_PAGES && ARM64_VA_BITS_48
278
279config ARCH_SUPPORTS_UPROBES
280	def_bool y
281
282config ARCH_PROC_KCORE_TEXT
283	def_bool y
284
285source "arch/arm64/Kconfig.platforms"
286
287menu "Bus support"
288
289config PCI
290	bool "PCI support"
291	help
292	  This feature enables support for PCI bus system. If you say Y
293	  here, the kernel will include drivers and infrastructure code
294	  to support PCI bus devices.
295
296config PCI_DOMAINS
297	def_bool PCI
298
299config PCI_DOMAINS_GENERIC
300	def_bool PCI
301
302config PCI_SYSCALL
303	def_bool PCI
304
305source "drivers/pci/Kconfig"
306
307endmenu
308
309menu "Kernel Features"
310
311menu "ARM errata workarounds via the alternatives framework"
312
313config ARM64_ERRATUM_826319
314	bool "Cortex-A53: 826319: System might deadlock if a write cannot complete until read data is accepted"
315	default y
316	help
317	  This option adds an alternative code sequence to work around ARM
318	  erratum 826319 on Cortex-A53 parts up to r0p2 with an AMBA 4 ACE or
319	  AXI master interface and an L2 cache.
320
321	  If a Cortex-A53 uses an AMBA AXI4 ACE interface to other processors
322	  and is unable to accept a certain write via this interface, it will
323	  not progress on read data presented on the read data channel and the
324	  system can deadlock.
325
326	  The workaround promotes data cache clean instructions to
327	  data cache clean-and-invalidate.
328	  Please note that this does not necessarily enable the workaround,
329	  as it depends on the alternative framework, which will only patch
330	  the kernel if an affected CPU is detected.
331
332	  If unsure, say Y.
333
334config ARM64_ERRATUM_827319
335	bool "Cortex-A53: 827319: Data cache clean instructions might cause overlapping transactions to the interconnect"
336	default y
337	help
338	  This option adds an alternative code sequence to work around ARM
339	  erratum 827319 on Cortex-A53 parts up to r0p2 with an AMBA 5 CHI
340	  master interface and an L2 cache.
341
342	  Under certain conditions this erratum can cause a clean line eviction
343	  to occur at the same time as another transaction to the same address
344	  on the AMBA 5 CHI interface, which can cause data corruption if the
345	  interconnect reorders the two transactions.
346
347	  The workaround promotes data cache clean instructions to
348	  data cache clean-and-invalidate.
349	  Please note that this does not necessarily enable the workaround,
350	  as it depends on the alternative framework, which will only patch
351	  the kernel if an affected CPU is detected.
352
353	  If unsure, say Y.
354
355config ARM64_ERRATUM_824069
356	bool "Cortex-A53: 824069: Cache line might not be marked as clean after a CleanShared snoop"
357	default y
358	help
359	  This option adds an alternative code sequence to work around ARM
360	  erratum 824069 on Cortex-A53 parts up to r0p2 when it is connected
361	  to a coherent interconnect.
362
363	  If a Cortex-A53 processor is executing a store or prefetch for
364	  write instruction at the same time as a processor in another
365	  cluster is executing a cache maintenance operation to the same
366	  address, then this erratum might cause a clean cache line to be
367	  incorrectly marked as dirty.
368
369	  The workaround promotes data cache clean instructions to
370	  data cache clean-and-invalidate.
371	  Please note that this option does not necessarily enable the
372	  workaround, as it depends on the alternative framework, which will
373	  only patch the kernel if an affected CPU is detected.
374
375	  If unsure, say Y.
376
377config ARM64_ERRATUM_819472
378	bool "Cortex-A53: 819472: Store exclusive instructions might cause data corruption"
379	default y
380	help
381	  This option adds an alternative code sequence to work around ARM
382	  erratum 819472 on Cortex-A53 parts up to r0p1 with an L2 cache
383	  present when it is connected to a coherent interconnect.
384
385	  If the processor is executing a load and store exclusive sequence at
386	  the same time as a processor in another cluster is executing a cache
387	  maintenance operation to the same address, then this erratum might
388	  cause data corruption.
389
390	  The workaround promotes data cache clean instructions to
391	  data cache clean-and-invalidate.
392	  Please note that this does not necessarily enable the workaround,
393	  as it depends on the alternative framework, which will only patch
394	  the kernel if an affected CPU is detected.
395
396	  If unsure, say Y.
397
398config ARM64_ERRATUM_832075
399	bool "Cortex-A57: 832075: possible deadlock on mixing exclusive memory accesses with device loads"
400	default y
401	help
402	  This option adds an alternative code sequence to work around ARM
403	  erratum 832075 on Cortex-A57 parts up to r1p2.
404
405	  Affected Cortex-A57 parts might deadlock when exclusive load/store
406	  instructions to Write-Back memory are mixed with Device loads.
407
408	  The workaround is to promote device loads to use Load-Acquire
409	  semantics.
410	  Please note that this does not necessarily enable the workaround,
411	  as it depends on the alternative framework, which will only patch
412	  the kernel if an affected CPU is detected.
413
414	  If unsure, say Y.
415
416config ARM64_ERRATUM_834220
417	bool "Cortex-A57: 834220: Stage 2 translation fault might be incorrectly reported in presence of a Stage 1 fault"
418	depends on KVM
419	default y
420	help
421	  This option adds an alternative code sequence to work around ARM
422	  erratum 834220 on Cortex-A57 parts up to r1p2.
423
424	  Affected Cortex-A57 parts might report a Stage 2 translation
425	  fault as the result of a Stage 1 fault for load crossing a
426	  page boundary when there is a permission or device memory
427	  alignment fault at Stage 1 and a translation fault at Stage 2.
428
429	  The workaround is to verify that the Stage 1 translation
430	  doesn't generate a fault before handling the Stage 2 fault.
431	  Please note that this does not necessarily enable the workaround,
432	  as it depends on the alternative framework, which will only patch
433	  the kernel if an affected CPU is detected.
434
435	  If unsure, say Y.
436
437config ARM64_ERRATUM_845719
438	bool "Cortex-A53: 845719: a load might read incorrect data"
439	depends on COMPAT
440	default y
441	help
442	  This option adds an alternative code sequence to work around ARM
443	  erratum 845719 on Cortex-A53 parts up to r0p4.
444
445	  When running a compat (AArch32) userspace on an affected Cortex-A53
446	  part, a load at EL0 from a virtual address that matches the bottom 32
447	  bits of the virtual address used by a recent load at (AArch64) EL1
448	  might return incorrect data.
449
450	  The workaround is to write the contextidr_el1 register on exception
451	  return to a 32-bit task.
452	  Please note that this does not necessarily enable the workaround,
453	  as it depends on the alternative framework, which will only patch
454	  the kernel if an affected CPU is detected.
455
456	  If unsure, say Y.
457
458config ARM64_ERRATUM_843419
459	bool "Cortex-A53: 843419: A load or store might access an incorrect address"
460	default y
461	select ARM64_MODULE_PLTS if MODULES
462	help
463	  This option links the kernel with '--fix-cortex-a53-843419' and
464	  enables PLT support to replace certain ADRP instructions, which can
465	  cause subsequent memory accesses to use an incorrect address on
466	  Cortex-A53 parts up to r0p4.
467
468	  If unsure, say Y.
469
470config ARM64_ERRATUM_1024718
471	bool "Cortex-A55: 1024718: Update of DBM/AP bits without break before make might result in incorrect update"
472	default y
473	help
474	  This option adds work around for Arm Cortex-A55 Erratum 1024718.
475
476	  Affected Cortex-A55 cores (r0p0, r0p1, r1p0) could cause incorrect
477	  update of the hardware dirty bit when the DBM/AP bits are updated
478	  without a break-before-make. The work around is to disable the usage
479	  of hardware DBM locally on the affected cores. CPUs not affected by
480	  erratum will continue to use the feature.
481
482	  If unsure, say Y.
483
484config ARM64_ERRATUM_1463225
485	bool "Cortex-A76: Software Step might prevent interrupt recognition"
486	default y
487	help
488	  This option adds a workaround for Arm Cortex-A76 erratum 1463225.
489
490	  On the affected Cortex-A76 cores (r0p0 to r3p1), software stepping
491	  of a system call instruction (SVC) can prevent recognition of
492	  subsequent interrupts when software stepping is disabled in the
493	  exception handler of the system call and either kernel debugging
494	  is enabled or VHE is in use.
495
496	  Work around the erratum by triggering a dummy step exception
497	  when handling a system call from a task that is being stepped
498	  in a VHE configuration of the kernel.
499
500	  If unsure, say Y.
501
502config ARM64_ERRATUM_1542419
503	bool "Neoverse-N1: workaround mis-ordering of instruction fetches"
504	default y
505	help
506	  This option adds a workaround for ARM Neoverse-N1 erratum
507	  1542419.
508
509	  Affected Neoverse-N1 cores could execute a stale instruction when
510	  modified by another CPU. The workaround depends on a firmware
511	  counterpart.
512
513	  Workaround the issue by hiding the DIC feature from EL0. This
514	  forces user-space to perform cache maintenance.
515
516	  If unsure, say Y.
517
518config CAVIUM_ERRATUM_22375
519	bool "Cavium erratum 22375, 24313"
520	default y
521	help
522	  Enable workaround for erratum 22375, 24313.
523
524	  This implements two gicv3-its errata workarounds for ThunderX. Both
525	  with small impact affecting only ITS table allocation.
526
527	    erratum 22375: only alloc 8MB table size
528	    erratum 24313: ignore memory access type
529
530	  The fixes are in ITS initialization and basically ignore memory access
531	  type and table size provided by the TYPER and BASER registers.
532
533	  If unsure, say Y.
534
535config CAVIUM_ERRATUM_23144
536	bool "Cavium erratum 23144: ITS SYNC hang on dual socket system"
537	depends on NUMA
538	default y
539	help
540	  ITS SYNC command hang for cross node io and collections/cpu mapping.
541
542	  If unsure, say Y.
543
544config CAVIUM_ERRATUM_23154
545	bool "Cavium erratum 23154: Access to ICC_IAR1_EL1 is not sync'ed"
546	default y
547	help
548	  The gicv3 of ThunderX requires a modified version for
549	  reading the IAR status to ensure data synchronization
550	  (access to icc_iar1_el1 is not sync'ed before and after).
551
552	  If unsure, say Y.
553
554config CAVIUM_ERRATUM_27456
555	bool "Cavium erratum 27456: Broadcast TLBI instructions may cause icache corruption"
556	default y
557	help
558	  On ThunderX T88 pass 1.x through 2.1 parts, broadcast TLBI
559	  instructions may cause the icache to become corrupted if it
560	  contains data for a non-current ASID.  The fix is to
561	  invalidate the icache when changing the mm context.
562
563	  If unsure, say Y.
564
565config CAVIUM_ERRATUM_30115
566	bool "Cavium erratum 30115: Guest may disable interrupts in host"
567	default y
568	help
569	  On ThunderX T88 pass 1.x through 2.2, T81 pass 1.0 through
570	  1.2, and T83 Pass 1.0, KVM guest execution may disable
571	  interrupts in host. Trapping both GICv3 group-0 and group-1
572	  accesses sidesteps the issue.
573
574	  If unsure, say Y.
575
576config QCOM_FALKOR_ERRATUM_1003
577	bool "Falkor E1003: Incorrect translation due to ASID change"
578	default y
579	help
580	  On Falkor v1, an incorrect ASID may be cached in the TLB when ASID
581	  and BADDR are changed together in TTBRx_EL1. Since we keep the ASID
582	  in TTBR1_EL1, this situation only occurs in the entry trampoline and
583	  then only for entries in the walk cache, since the leaf translation
584	  is unchanged. Work around the erratum by invalidating the walk cache
585	  entries for the trampoline before entering the kernel proper.
586
587config QCOM_FALKOR_ERRATUM_1009
588	bool "Falkor E1009: Prematurely complete a DSB after a TLBI"
589	default y
590	help
591	  On Falkor v1, the CPU may prematurely complete a DSB following a
592	  TLBI xxIS invalidate maintenance operation. Repeat the TLBI operation
593	  one more time to fix the issue.
594
595	  If unsure, say Y.
596
597config QCOM_QDF2400_ERRATUM_0065
598	bool "QDF2400 E0065: Incorrect GITS_TYPER.ITT_Entry_size"
599	default y
600	help
601	  On Qualcomm Datacenter Technologies QDF2400 SoC, ITS hardware reports
602	  ITE size incorrectly. The GITS_TYPER.ITT_Entry_size field should have
603	  been indicated as 16Bytes (0xf), not 8Bytes (0x7).
604
605	  If unsure, say Y.
606
607config SOCIONEXT_SYNQUACER_PREITS
608	bool "Socionext Synquacer: Workaround for GICv3 pre-ITS"
609	default y
610	help
611	  Socionext Synquacer SoCs implement a separate h/w block to generate
612	  MSI doorbell writes with non-zero values for the device ID.
613
614	  If unsure, say Y.
615
616config HISILICON_ERRATUM_161600802
617	bool "Hip07 161600802: Erroneous redistributor VLPI base"
618	default y
619	help
620	  The HiSilicon Hip07 SoC usees the wrong redistributor base
621	  when issued ITS commands such as VMOVP and VMAPP, and requires
622	  a 128kB offset to be applied to the target address in this commands.
623
624	  If unsure, say Y.
625
626config QCOM_FALKOR_ERRATUM_E1041
627	bool "Falkor E1041: Speculative instruction fetches might cause errant memory access"
628	default y
629	help
630	  Falkor CPU may speculatively fetch instructions from an improper
631	  memory location when MMU translation is changed from SCTLR_ELn[M]=1
632	  to SCTLR_ELn[M]=0. Prefix an ISB instruction to fix the problem.
633
634	  If unsure, say Y.
635
636endmenu
637
638
639choice
640	prompt "Page size"
641	default ARM64_4K_PAGES
642	help
643	  Page size (translation granule) configuration.
644
645config ARM64_4K_PAGES
646	bool "4KB"
647	help
648	  This feature enables 4KB pages support.
649
650config ARM64_16K_PAGES
651	bool "16KB"
652	help
653	  The system will use 16KB pages support. AArch32 emulation
654	  requires applications compiled with 16K (or a multiple of 16K)
655	  aligned segments.
656
657config ARM64_64K_PAGES
658	bool "64KB"
659	help
660	  This feature enables 64KB pages support (4KB by default)
661	  allowing only two levels of page tables and faster TLB
662	  look-up. AArch32 emulation requires applications compiled
663	  with 64K aligned segments.
664
665endchoice
666
667choice
668	prompt "Virtual address space size"
669	default ARM64_VA_BITS_39 if ARM64_4K_PAGES
670	default ARM64_VA_BITS_47 if ARM64_16K_PAGES
671	default ARM64_VA_BITS_42 if ARM64_64K_PAGES
672	help
673	  Allows choosing one of multiple possible virtual address
674	  space sizes. The level of translation table is determined by
675	  a combination of page size and virtual address space size.
676
677config ARM64_VA_BITS_36
678	bool "36-bit" if EXPERT
679	depends on ARM64_16K_PAGES
680
681config ARM64_VA_BITS_39
682	bool "39-bit"
683	depends on ARM64_4K_PAGES
684
685config ARM64_VA_BITS_42
686	bool "42-bit"
687	depends on ARM64_64K_PAGES
688
689config ARM64_VA_BITS_47
690	bool "47-bit"
691	depends on ARM64_16K_PAGES
692
693config ARM64_VA_BITS_48
694	bool "48-bit"
695
696endchoice
697
698config ARM64_VA_BITS
699	int
700	default 36 if ARM64_VA_BITS_36
701	default 39 if ARM64_VA_BITS_39
702	default 42 if ARM64_VA_BITS_42
703	default 47 if ARM64_VA_BITS_47
704	default 48 if ARM64_VA_BITS_48
705
706choice
707	prompt "Physical address space size"
708	default ARM64_PA_BITS_48
709	help
710	  Choose the maximum physical address range that the kernel will
711	  support.
712
713config ARM64_PA_BITS_48
714	bool "48-bit"
715
716config ARM64_PA_BITS_52
717	bool "52-bit (ARMv8.2)"
718	depends on ARM64_64K_PAGES
719	depends on ARM64_PAN || !ARM64_SW_TTBR0_PAN
720	help
721	  Enable support for a 52-bit physical address space, introduced as
722	  part of the ARMv8.2-LPA extension.
723
724	  With this enabled, the kernel will also continue to work on CPUs that
725	  do not support ARMv8.2-LPA, but with some added memory overhead (and
726	  minor performance overhead).
727
728endchoice
729
730config ARM64_PA_BITS
731	int
732	default 48 if ARM64_PA_BITS_48
733	default 52 if ARM64_PA_BITS_52
734
735config CPU_BIG_ENDIAN
736       bool "Build big-endian kernel"
737       help
738         Say Y if you plan on running a kernel in big-endian mode.
739
740config SCHED_MC
741	bool "Multi-core scheduler support"
742	help
743	  Multi-core scheduler support improves the CPU scheduler's decision
744	  making when dealing with multi-core CPU chips at a cost of slightly
745	  increased overhead in some places. If unsure say N here.
746
747config SCHED_SMT
748	bool "SMT scheduler support"
749	help
750	  Improves the CPU scheduler's decision making when dealing with
751	  MultiThreading at a cost of slightly increased overhead in some
752	  places. If unsure say N here.
753
754config NR_CPUS
755	int "Maximum number of CPUs (2-4096)"
756	range 2 4096
757	# These have to remain sorted largest to smallest
758	default "64"
759
760config HOTPLUG_CPU
761	bool "Support for hot-pluggable CPUs"
762	select GENERIC_IRQ_MIGRATION
763	help
764	  Say Y here to experiment with turning CPUs off and on.  CPUs
765	  can be controlled through /sys/devices/system/cpu.
766
767# Common NUMA Features
768config NUMA
769	bool "Numa Memory Allocation and Scheduler Support"
770	select ACPI_NUMA if ACPI
771	select OF_NUMA
772	help
773	  Enable NUMA (Non Uniform Memory Access) support.
774
775	  The kernel will try to allocate memory used by a CPU on the
776	  local memory of the CPU and add some more
777	  NUMA awareness to the kernel.
778
779config NODES_SHIFT
780	int "Maximum NUMA Nodes (as a power of 2)"
781	range 1 10
782	default "2"
783	depends on NEED_MULTIPLE_NODES
784	help
785	  Specify the maximum number of NUMA Nodes available on the target
786	  system.  Increases memory reserved to accommodate various tables.
787
788config USE_PERCPU_NUMA_NODE_ID
789	def_bool y
790	depends on NUMA
791
792config HAVE_SETUP_PER_CPU_AREA
793	def_bool y
794	depends on NUMA
795
796config NEED_PER_CPU_EMBED_FIRST_CHUNK
797	def_bool y
798	depends on NUMA
799
800config HOLES_IN_ZONE
801	def_bool y
802
803source kernel/Kconfig.hz
804
805config ARCH_SUPPORTS_DEBUG_PAGEALLOC
806	def_bool y
807
808config ARCH_HAS_HOLES_MEMORYMODEL
809	def_bool y if SPARSEMEM
810
811config ARCH_SPARSEMEM_ENABLE
812	def_bool y
813	select SPARSEMEM_VMEMMAP_ENABLE
814
815config ARCH_SPARSEMEM_DEFAULT
816	def_bool ARCH_SPARSEMEM_ENABLE
817
818config ARCH_SELECT_MEMORY_MODEL
819	def_bool ARCH_SPARSEMEM_ENABLE
820
821config ARCH_FLATMEM_ENABLE
822	def_bool !NUMA
823
824config HAVE_ARCH_PFN_VALID
825	def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
826
827config HW_PERF_EVENTS
828	def_bool y
829	depends on ARM_PMU
830
831config SYS_SUPPORTS_HUGETLBFS
832	def_bool y
833
834config ARCH_WANT_HUGE_PMD_SHARE
835	def_bool y if ARM64_4K_PAGES || (ARM64_16K_PAGES && !ARM64_VA_BITS_36)
836
837config ARCH_HAS_CACHE_LINE_SIZE
838	def_bool y
839
840config SECCOMP
841	bool "Enable seccomp to safely compute untrusted bytecode"
842	---help---
843	  This kernel feature is useful for number crunching applications
844	  that may need to compute untrusted bytecode during their
845	  execution. By using pipes or other transports made available to
846	  the process as file descriptors supporting the read/write
847	  syscalls, it's possible to isolate those applications in
848	  their own address space using seccomp. Once seccomp is
849	  enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
850	  and the task is only allowed to execute a few safe syscalls
851	  defined by each seccomp mode.
852
853config PARAVIRT
854	bool "Enable paravirtualization code"
855	help
856	  This changes the kernel so it can modify itself when it is run
857	  under a hypervisor, potentially improving performance significantly
858	  over full virtualization.
859
860config PARAVIRT_TIME_ACCOUNTING
861	bool "Paravirtual steal time accounting"
862	select PARAVIRT
863	default n
864	help
865	  Select this option to enable fine granularity task steal time
866	  accounting. Time spent executing other tasks in parallel with
867	  the current vCPU is discounted from the vCPU power. To account for
868	  that, there can be a small performance impact.
869
870	  If in doubt, say N here.
871
872config KEXEC
873	depends on PM_SLEEP_SMP
874	select KEXEC_CORE
875	bool "kexec system call"
876	---help---
877	  kexec is a system call that implements the ability to shutdown your
878	  current kernel, and to start another kernel.  It is like a reboot
879	  but it is independent of the system firmware.   And like a reboot
880	  you can start any kernel with it, not just Linux.
881
882config CRASH_DUMP
883	bool "Build kdump crash kernel"
884	help
885	  Generate crash dump after being started by kexec. This should
886	  be normally only set in special crash dump kernels which are
887	  loaded in the main kernel with kexec-tools into a specially
888	  reserved region and then later executed after a crash by
889	  kdump/kexec.
890
891	  For more details see Documentation/kdump/kdump.txt
892
893config XEN_DOM0
894	def_bool y
895	depends on XEN
896
897config XEN
898	bool "Xen guest support on ARM64"
899	depends on ARM64 && OF
900	select SWIOTLB_XEN
901	select PARAVIRT
902	help
903	  Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64.
904
905config FORCE_MAX_ZONEORDER
906	int
907	default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
908	default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE)
909	default "11"
910	help
911	  The kernel memory allocator divides physically contiguous memory
912	  blocks into "zones", where each zone is a power of two number of
913	  pages.  This option selects the largest power of two that the kernel
914	  keeps in the memory allocator.  If you need to allocate very large
915	  blocks of physically contiguous memory, then you may need to
916	  increase this value.
917
918	  This config option is actually maximum order plus one. For example,
919	  a value of 11 means that the largest free memory block is 2^10 pages.
920
921	  We make sure that we can allocate upto a HugePage size for each configuration.
922	  Hence we have :
923		MAX_ORDER = (PMD_SHIFT - PAGE_SHIFT) + 1 => PAGE_SHIFT - 2
924
925	  However for 4K, we choose a higher default value, 11 as opposed to 10, giving us
926	  4M allocations matching the default size used by generic code.
927
928config UNMAP_KERNEL_AT_EL0
929	bool "Unmap kernel when running in userspace (aka \"KAISER\")" if EXPERT
930	default y
931	help
932	  Speculation attacks against some high-performance processors can
933	  be used to bypass MMU permission checks and leak kernel data to
934	  userspace. This can be defended against by unmapping the kernel
935	  when running in userspace, mapping it back in on exception entry
936	  via a trampoline page in the vector table.
937
938	  If unsure, say Y.
939
940config HARDEN_BRANCH_PREDICTOR
941	bool "Harden the branch predictor against aliasing attacks" if EXPERT
942	default y
943	help
944	  Speculation attacks against some high-performance processors rely on
945	  being able to manipulate the branch predictor for a victim context by
946	  executing aliasing branches in the attacker context.  Such attacks
947	  can be partially mitigated against by clearing internal branch
948	  predictor state and limiting the prediction logic in some situations.
949
950	  This config option will take CPU-specific actions to harden the
951	  branch predictor against aliasing attacks and may rely on specific
952	  instruction sequences or control bits being set by the system
953	  firmware.
954
955	  If unsure, say Y.
956
957config HARDEN_EL2_VECTORS
958	bool "Harden EL2 vector mapping against system register leak" if EXPERT
959	default y
960	help
961	  Speculation attacks against some high-performance processors can
962	  be used to leak privileged information such as the vector base
963	  register, resulting in a potential defeat of the EL2 layout
964	  randomization.
965
966	  This config option will map the vectors to a fixed location,
967	  independent of the EL2 code mapping, so that revealing VBAR_EL2
968	  to an attacker does not give away any extra information. This
969	  only gets enabled on affected CPUs.
970
971	  If unsure, say Y.
972
973config ARM64_SSBD
974	bool "Speculative Store Bypass Disable" if EXPERT
975	default y
976	help
977	  This enables mitigation of the bypassing of previous stores
978	  by speculative loads.
979
980	  If unsure, say Y.
981
982menuconfig ARMV8_DEPRECATED
983	bool "Emulate deprecated/obsolete ARMv8 instructions"
984	depends on COMPAT
985	depends on SYSCTL
986	help
987	  Legacy software support may require certain instructions
988	  that have been deprecated or obsoleted in the architecture.
989
990	  Enable this config to enable selective emulation of these
991	  features.
992
993	  If unsure, say Y
994
995if ARMV8_DEPRECATED
996
997config SWP_EMULATION
998	bool "Emulate SWP/SWPB instructions"
999	help
1000	  ARMv8 obsoletes the use of A32 SWP/SWPB instructions such that
1001	  they are always undefined. Say Y here to enable software
1002	  emulation of these instructions for userspace using LDXR/STXR.
1003
1004	  In some older versions of glibc [<=2.8] SWP is used during futex
1005	  trylock() operations with the assumption that the code will not
1006	  be preempted. This invalid assumption may be more likely to fail
1007	  with SWP emulation enabled, leading to deadlock of the user
1008	  application.
1009
1010	  NOTE: when accessing uncached shared regions, LDXR/STXR rely
1011	  on an external transaction monitoring block called a global
1012	  monitor to maintain update atomicity. If your system does not
1013	  implement a global monitor, this option can cause programs that
1014	  perform SWP operations to uncached memory to deadlock.
1015
1016	  If unsure, say Y
1017
1018config CP15_BARRIER_EMULATION
1019	bool "Emulate CP15 Barrier instructions"
1020	help
1021	  The CP15 barrier instructions - CP15ISB, CP15DSB, and
1022	  CP15DMB - are deprecated in ARMv8 (and ARMv7). It is
1023	  strongly recommended to use the ISB, DSB, and DMB
1024	  instructions instead.
1025
1026	  Say Y here to enable software emulation of these
1027	  instructions for AArch32 userspace code. When this option is
1028	  enabled, CP15 barrier usage is traced which can help
1029	  identify software that needs updating.
1030
1031	  If unsure, say Y
1032
1033config SETEND_EMULATION
1034	bool "Emulate SETEND instruction"
1035	help
1036	  The SETEND instruction alters the data-endianness of the
1037	  AArch32 EL0, and is deprecated in ARMv8.
1038
1039	  Say Y here to enable software emulation of the instruction
1040	  for AArch32 userspace code.
1041
1042	  Note: All the cpus on the system must have mixed endian support at EL0
1043	  for this feature to be enabled. If a new CPU - which doesn't support mixed
1044	  endian - is hotplugged in after this feature has been enabled, there could
1045	  be unexpected results in the applications.
1046
1047	  If unsure, say Y
1048endif
1049
1050config ARM64_SW_TTBR0_PAN
1051	bool "Emulate Privileged Access Never using TTBR0_EL1 switching"
1052	help
1053	  Enabling this option prevents the kernel from accessing
1054	  user-space memory directly by pointing TTBR0_EL1 to a reserved
1055	  zeroed area and reserved ASID. The user access routines
1056	  restore the valid TTBR0_EL1 temporarily.
1057
1058menu "ARMv8.1 architectural features"
1059
1060config ARM64_HW_AFDBM
1061	bool "Support for hardware updates of the Access and Dirty page flags"
1062	default y
1063	help
1064	  The ARMv8.1 architecture extensions introduce support for
1065	  hardware updates of the access and dirty information in page
1066	  table entries. When enabled in TCR_EL1 (HA and HD bits) on
1067	  capable processors, accesses to pages with PTE_AF cleared will
1068	  set this bit instead of raising an access flag fault.
1069	  Similarly, writes to read-only pages with the DBM bit set will
1070	  clear the read-only bit (AP[2]) instead of raising a
1071	  permission fault.
1072
1073	  Kernels built with this configuration option enabled continue
1074	  to work on pre-ARMv8.1 hardware and the performance impact is
1075	  minimal. If unsure, say Y.
1076
1077config ARM64_PAN
1078	bool "Enable support for Privileged Access Never (PAN)"
1079	default y
1080	help
1081	 Privileged Access Never (PAN; part of the ARMv8.1 Extensions)
1082	 prevents the kernel or hypervisor from accessing user-space (EL0)
1083	 memory directly.
1084
1085	 Choosing this option will cause any unprotected (not using
1086	 copy_to_user et al) memory access to fail with a permission fault.
1087
1088	 The feature is detected at runtime, and will remain as a 'nop'
1089	 instruction if the cpu does not implement the feature.
1090
1091config ARM64_LSE_ATOMICS
1092	bool "Atomic instructions"
1093	default y
1094	help
1095	  As part of the Large System Extensions, ARMv8.1 introduces new
1096	  atomic instructions that are designed specifically to scale in
1097	  very large systems.
1098
1099	  Say Y here to make use of these instructions for the in-kernel
1100	  atomic routines. This incurs a small overhead on CPUs that do
1101	  not support these instructions and requires the kernel to be
1102	  built with binutils >= 2.25 in order for the new instructions
1103	  to be used.
1104
1105config ARM64_VHE
1106	bool "Enable support for Virtualization Host Extensions (VHE)"
1107	default y
1108	help
1109	  Virtualization Host Extensions (VHE) allow the kernel to run
1110	  directly at EL2 (instead of EL1) on processors that support
1111	  it. This leads to better performance for KVM, as they reduce
1112	  the cost of the world switch.
1113
1114	  Selecting this option allows the VHE feature to be detected
1115	  at runtime, and does not affect processors that do not
1116	  implement this feature.
1117
1118endmenu
1119
1120menu "ARMv8.2 architectural features"
1121
1122config ARM64_UAO
1123	bool "Enable support for User Access Override (UAO)"
1124	default y
1125	help
1126	  User Access Override (UAO; part of the ARMv8.2 Extensions)
1127	  causes the 'unprivileged' variant of the load/store instructions to
1128	  be overridden to be privileged.
1129
1130	  This option changes get_user() and friends to use the 'unprivileged'
1131	  variant of the load/store instructions. This ensures that user-space
1132	  really did have access to the supplied memory. When addr_limit is
1133	  set to kernel memory the UAO bit will be set, allowing privileged
1134	  access to kernel memory.
1135
1136	  Choosing this option will cause copy_to_user() et al to use user-space
1137	  memory permissions.
1138
1139	  The feature is detected at runtime, the kernel will use the
1140	  regular load/store instructions if the cpu does not implement the
1141	  feature.
1142
1143config ARM64_PMEM
1144	bool "Enable support for persistent memory"
1145	select ARCH_HAS_PMEM_API
1146	select ARCH_HAS_UACCESS_FLUSHCACHE
1147	help
1148	  Say Y to enable support for the persistent memory API based on the
1149	  ARMv8.2 DCPoP feature.
1150
1151	  The feature is detected at runtime, and the kernel will use DC CVAC
1152	  operations if DC CVAP is not supported (following the behaviour of
1153	  DC CVAP itself if the system does not define a point of persistence).
1154
1155config ARM64_RAS_EXTN
1156	bool "Enable support for RAS CPU Extensions"
1157	default y
1158	help
1159	  CPUs that support the Reliability, Availability and Serviceability
1160	  (RAS) Extensions, part of ARMv8.2 are able to track faults and
1161	  errors, classify them and report them to software.
1162
1163	  On CPUs with these extensions system software can use additional
1164	  barriers to determine if faults are pending and read the
1165	  classification from a new set of registers.
1166
1167	  Selecting this feature will allow the kernel to use these barriers
1168	  and access the new registers if the system supports the extension.
1169	  Platform RAS features may additionally depend on firmware support.
1170
1171endmenu
1172
1173config ARM64_SVE
1174	bool "ARM Scalable Vector Extension support"
1175	default y
1176	depends on !KVM || ARM64_VHE
1177	help
1178	  The Scalable Vector Extension (SVE) is an extension to the AArch64
1179	  execution state which complements and extends the SIMD functionality
1180	  of the base architecture to support much larger vectors and to enable
1181	  additional vectorisation opportunities.
1182
1183	  To enable use of this extension on CPUs that implement it, say Y.
1184
1185	  Note that for architectural reasons, firmware _must_ implement SVE
1186	  support when running on SVE capable hardware.  The required support
1187	  is present in:
1188
1189	    * version 1.5 and later of the ARM Trusted Firmware
1190	    * the AArch64 boot wrapper since commit 5e1261e08abf
1191	      ("bootwrapper: SVE: Enable SVE for EL2 and below").
1192
1193	  For other firmware implementations, consult the firmware documentation
1194	  or vendor.
1195
1196	  If you need the kernel to boot on SVE-capable hardware with broken
1197	  firmware, you may need to say N here until you get your firmware
1198	  fixed.  Otherwise, you may experience firmware panics or lockups when
1199	  booting the kernel.  If unsure and you are not observing these
1200	  symptoms, you should assume that it is safe to say Y.
1201
1202	  CPUs that support SVE are architecturally required to support the
1203	  Virtualization Host Extensions (VHE), so the kernel makes no
1204	  provision for supporting SVE alongside KVM without VHE enabled.
1205	  Thus, you will need to enable CONFIG_ARM64_VHE if you want to support
1206	  KVM in the same kernel image.
1207
1208config ARM64_MODULE_PLTS
1209	bool
1210	select HAVE_MOD_ARCH_SPECIFIC
1211
1212config RELOCATABLE
1213	bool
1214	help
1215	  This builds the kernel as a Position Independent Executable (PIE),
1216	  which retains all relocation metadata required to relocate the
1217	  kernel binary at runtime to a different virtual address than the
1218	  address it was linked at.
1219	  Since AArch64 uses the RELA relocation format, this requires a
1220	  relocation pass at runtime even if the kernel is loaded at the
1221	  same address it was linked at.
1222
1223config RANDOMIZE_BASE
1224	bool "Randomize the address of the kernel image"
1225	select ARM64_MODULE_PLTS if MODULES
1226	select RELOCATABLE
1227	help
1228	  Randomizes the virtual address at which the kernel image is
1229	  loaded, as a security feature that deters exploit attempts
1230	  relying on knowledge of the location of kernel internals.
1231
1232	  It is the bootloader's job to provide entropy, by passing a
1233	  random u64 value in /chosen/kaslr-seed at kernel entry.
1234
1235	  When booting via the UEFI stub, it will invoke the firmware's
1236	  EFI_RNG_PROTOCOL implementation (if available) to supply entropy
1237	  to the kernel proper. In addition, it will randomise the physical
1238	  location of the kernel Image as well.
1239
1240	  If unsure, say N.
1241
1242config RANDOMIZE_MODULE_REGION_FULL
1243	bool "Randomize the module region over a 4 GB range"
1244	depends on RANDOMIZE_BASE
1245	default y
1246	help
1247	  Randomizes the location of the module region inside a 4 GB window
1248	  covering the core kernel. This way, it is less likely for modules
1249	  to leak information about the location of core kernel data structures
1250	  but it does imply that function calls between modules and the core
1251	  kernel will need to be resolved via veneers in the module PLT.
1252
1253	  When this option is not set, the module region will be randomized over
1254	  a limited range that contains the [_stext, _etext] interval of the
1255	  core kernel, so branch relocations are always in range.
1256
1257endmenu
1258
1259menu "Boot options"
1260
1261config ARM64_ACPI_PARKING_PROTOCOL
1262	bool "Enable support for the ARM64 ACPI parking protocol"
1263	depends on ACPI
1264	help
1265	  Enable support for the ARM64 ACPI parking protocol. If disabled
1266	  the kernel will not allow booting through the ARM64 ACPI parking
1267	  protocol even if the corresponding data is present in the ACPI
1268	  MADT table.
1269
1270config CMDLINE
1271	string "Default kernel command string"
1272	default ""
1273	help
1274	  Provide a set of default command-line options at build time by
1275	  entering them here. As a minimum, you should specify the the
1276	  root device (e.g. root=/dev/nfs).
1277
1278config CMDLINE_FORCE
1279	bool "Always use the default kernel command string"
1280	help
1281	  Always use the default kernel command string, even if the boot
1282	  loader passes other arguments to the kernel.
1283	  This is useful if you cannot or don't want to change the
1284	  command-line options your boot loader passes to the kernel.
1285
1286config EFI_STUB
1287	bool
1288
1289config EFI
1290	bool "UEFI runtime support"
1291	depends on OF && !CPU_BIG_ENDIAN
1292	depends on KERNEL_MODE_NEON
1293	select ARCH_SUPPORTS_ACPI
1294	select LIBFDT
1295	select UCS2_STRING
1296	select EFI_PARAMS_FROM_FDT
1297	select EFI_RUNTIME_WRAPPERS
1298	select EFI_STUB
1299	select EFI_ARMSTUB
1300	default y
1301	help
1302	  This option provides support for runtime services provided
1303	  by UEFI firmware (such as non-volatile variables, realtime
1304          clock, and platform reset). A UEFI stub is also provided to
1305	  allow the kernel to be booted as an EFI application. This
1306	  is only useful on systems that have UEFI firmware.
1307
1308config DMI
1309	bool "Enable support for SMBIOS (DMI) tables"
1310	depends on EFI
1311	default y
1312	help
1313	  This enables SMBIOS/DMI feature for systems.
1314
1315	  This option is only useful on systems that have UEFI firmware.
1316	  However, even with this option, the resultant kernel should
1317	  continue to boot on existing non-UEFI platforms.
1318
1319endmenu
1320
1321config COMPAT
1322	bool "Kernel support for 32-bit EL0"
1323	depends on ARM64_4K_PAGES || EXPERT
1324	select COMPAT_BINFMT_ELF if BINFMT_ELF
1325	select HAVE_UID16
1326	select OLD_SIGSUSPEND3
1327	select COMPAT_OLD_SIGACTION
1328	help
1329	  This option enables support for a 32-bit EL0 running under a 64-bit
1330	  kernel at EL1. AArch32-specific components such as system calls,
1331	  the user helper functions, VFP support and the ptrace interface are
1332	  handled appropriately by the kernel.
1333
1334	  If you use a page size other than 4KB (i.e, 16KB or 64KB), please be aware
1335	  that you will only be able to execute AArch32 binaries that were compiled
1336	  with page size aligned segments.
1337
1338	  If you want to execute 32-bit userspace applications, say Y.
1339
1340config SYSVIPC_COMPAT
1341	def_bool y
1342	depends on COMPAT && SYSVIPC
1343
1344menu "Power management options"
1345
1346source "kernel/power/Kconfig"
1347
1348config ARCH_HIBERNATION_POSSIBLE
1349	def_bool y
1350	depends on CPU_PM
1351
1352config ARCH_HIBERNATION_HEADER
1353	def_bool y
1354	depends on HIBERNATION
1355
1356config ARCH_SUSPEND_POSSIBLE
1357	def_bool y
1358
1359endmenu
1360
1361menu "CPU Power Management"
1362
1363source "drivers/cpuidle/Kconfig"
1364
1365source "drivers/cpufreq/Kconfig"
1366
1367endmenu
1368
1369source "drivers/firmware/Kconfig"
1370
1371source "drivers/acpi/Kconfig"
1372
1373source "arch/arm64/kvm/Kconfig"
1374
1375if CRYPTO
1376source "arch/arm64/crypto/Kconfig"
1377endif
1378