xref: /linux-6.15/arch/arm64/Kconfig (revision 0617052d)
18c2c3df3SCatalin Marinasconfig ARM64
28c2c3df3SCatalin Marinas	def_bool y
3b6197b93SSuthikulpanit, Suravee	select ACPI_CCA_REQUIRED if ACPI
4d8f4f161SLorenzo Pieralisi	select ACPI_GENERIC_GSI if ACPI
55f1ae4ebSFu Wei	select ACPI_GTDT if ACPI
6c6bb8f89SLorenzo Pieralisi	select ACPI_IORT if ACPI
76933de0cSAl Stone	select ACPI_REDUCED_HARDWARE_ONLY if ACPI
80cb0786bSTomasz Nowicki	select ACPI_MCFG if ACPI
9888125a7SAleksey Makarov	select ACPI_SPCR_TABLE if ACPI
101d8f51d4SScott Wood	select ARCH_CLOCKSOURCE_DATA
11ec6d06efSLaura Abbott	select ARCH_HAS_DEBUG_VIRTUAL
1221266be9SDan Williams	select ARCH_HAS_DEVMEM_IS_ALLOWED
1338b04a74SJon Masters	select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI
142b68f6caSKees Cook	select ARCH_HAS_ELF_RANDOMIZE
156974f0c4SDaniel Micay	select ARCH_HAS_FORTIFY_SOURCE
16957e3facSRiku Voipio	select ARCH_HAS_GCOV_PROFILE_ALL
17e1073d1eSAneesh Kumar K.V	select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA
185e4c7549SAlexander Potapenko	select ARCH_HAS_KCOV
19d2852a22SDaniel Borkmann	select ARCH_HAS_SET_MEMORY
20308c09f1SLaura Abbott	select ARCH_HAS_SG_CHAIN
21ad21fc4fSLaura Abbott	select ARCH_HAS_STRICT_KERNEL_RWX
22ad21fc4fSLaura Abbott	select ARCH_HAS_STRICT_MODULE_RWX
231f85008eSLorenzo Pieralisi	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
24396a5d4aSStephen Boyd	select ARCH_HAVE_NMI_SAFE_CMPXCHG
25087133acSWill Deacon	select ARCH_INLINE_READ_LOCK if !PREEMPT
26087133acSWill Deacon	select ARCH_INLINE_READ_LOCK_BH if !PREEMPT
27087133acSWill Deacon	select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPT
28087133acSWill Deacon	select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPT
29087133acSWill Deacon	select ARCH_INLINE_READ_UNLOCK if !PREEMPT
30087133acSWill Deacon	select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPT
31087133acSWill Deacon	select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPT
32087133acSWill Deacon	select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPT
33087133acSWill Deacon	select ARCH_INLINE_WRITE_LOCK if !PREEMPT
34087133acSWill Deacon	select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPT
35087133acSWill Deacon	select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPT
36087133acSWill Deacon	select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPT
37087133acSWill Deacon	select ARCH_INLINE_WRITE_UNLOCK if !PREEMPT
38087133acSWill Deacon	select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPT
39087133acSWill Deacon	select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPT
40087133acSWill Deacon	select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPT
41c63c8700SSudeep Holla	select ARCH_USE_CMPXCHG_LOCKREF
42087133acSWill Deacon	select ARCH_USE_QUEUED_RWLOCKS
43c484f256SJonathan (Zhixiong) Zhang	select ARCH_SUPPORTS_MEMORY_FAILURE
444badad35SPeter Zijlstra	select ARCH_SUPPORTS_ATOMIC_RMW
4556166230SGanapatrao Kulkarni	select ARCH_SUPPORTS_NUMA_BALANCING
466212a512SWill Deacon	select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
47b6f35981SCatalin Marinas	select ARCH_WANT_FRAME_POINTERS
48f0b7f8a4SYang Shi	select ARCH_HAS_UBSAN_SANITIZE_ALL
4925c92a37SCatalin Marinas	select ARM_AMBA
501aee5d7aSMark Rutland	select ARM_ARCH_TIMER
51c4188edcSCatalin Marinas	select ARM_GIC
52875cbf3eSAKASHI Takahiro	select AUDIT_ARCH_COMPAT_GENERIC
533ee80364SArnd Bergmann	select ARM_GIC_V2M if PCI
54021f6537SMarc Zyngier	select ARM_GIC_V3
553ee80364SArnd Bergmann	select ARM_GIC_V3_ITS if PCI
56bff60792SMark Rutland	select ARM_PSCI_FW
57adace895SWill Deacon	select BUILDTIME_EXTABLE_SORT
58db2789b5SCatalin Marinas	select CLONE_BACKWARDS
597ca2ef33SDeepak Saxena	select COMMON_CLK
60166936baSLorenzo Pieralisi	select CPU_PM if (SUSPEND || CPU_IDLE)
617bc13fd3SWill Deacon	select DCACHE_WORD_ACCESS
62ef37566cSCatalin Marinas	select EDAC_SUPPORT
632f34f173SYang Shi	select FRAME_POINTER
64d4932f9eSLaura Abbott	select GENERIC_ALLOCATOR
652ef7a295SJuri Lelli	select GENERIC_ARCH_TOPOLOGY
668c2c3df3SCatalin Marinas	select GENERIC_CLOCKEVENTS
674b3dc967SWill Deacon	select GENERIC_CLOCKEVENTS_BROADCAST
683be1a5c4SArd Biesheuvel	select GENERIC_CPU_AUTOPROBE
69bf4b558eSMark Salter	select GENERIC_EARLY_IOREMAP
702314ee4dSLeo Yan	select GENERIC_IDLE_POLL_SETUP
718c2c3df3SCatalin Marinas	select GENERIC_IRQ_PROBE
728c2c3df3SCatalin Marinas	select GENERIC_IRQ_SHOW
736544e67bSSudeep Holla	select GENERIC_IRQ_SHOW_LEVEL
74cb61f676SArnd Bergmann	select GENERIC_PCI_IOMAP
7565cd4f6cSStephen Boyd	select GENERIC_SCHED_CLOCK
768c2c3df3SCatalin Marinas	select GENERIC_SMP_IDLE_THREAD
7712a0ef7bSWill Deacon	select GENERIC_STRNCPY_FROM_USER
7812a0ef7bSWill Deacon	select GENERIC_STRNLEN_USER
798c2c3df3SCatalin Marinas	select GENERIC_TIME_VSYSCALL
80a1ddc74aSMarc Zyngier	select HANDLE_DOMAIN_IRQ
818c2c3df3SCatalin Marinas	select HARDIRQS_SW_RESEND
829f9a35a7STomasz Nowicki	select HAVE_ACPI_APEI if (ACPI && EFI)
835284e1b4SSteve Capper	select HAVE_ALIGNED_STRUCT_PAGE if SLUB
84875cbf3eSAKASHI Takahiro	select HAVE_ARCH_AUDITSYSCALL
858e7a4cefSYalin Wang	select HAVE_ARCH_BITREVERSE
86324420bfSArd Biesheuvel	select HAVE_ARCH_HUGE_VMAP
879732cafdSJiang Liu	select HAVE_ARCH_JUMP_LABEL
88e17d8025SWill Deacon	select HAVE_ARCH_KASAN if !(ARM64_16K_PAGES && ARM64_VA_BITS_48)
899529247dSVijaya Kumar K	select HAVE_ARCH_KGDB
908f0d3aa9SDaniel Cashman	select HAVE_ARCH_MMAP_RND_BITS
918f0d3aa9SDaniel Cashman	select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
92a1ae65b2SAKASHI Takahiro	select HAVE_ARCH_SECCOMP_FILTER
938c2c3df3SCatalin Marinas	select HAVE_ARCH_TRACEHOOK
948ee70879SYang Shi	select HAVE_ARCH_TRANSPARENT_HUGEPAGE
95e3067861SMark Rutland	select HAVE_ARCH_VMAP_STACK
968ee70879SYang Shi	select HAVE_ARM_SMCCC
976077776bSDaniel Borkmann	select HAVE_EBPF_JIT
98af64d2aaSAKASHI Takahiro	select HAVE_C_RECORDMCOUNT
99c0c264aeSLaura Abbott	select HAVE_CC_STACKPROTECTOR
1005284e1b4SSteve Capper	select HAVE_CMPXCHG_DOUBLE
10195eff6b2SWill Deacon	select HAVE_CMPXCHG_LOCAL
1028ee70879SYang Shi	select HAVE_CONTEXT_TRACKING
1039b2a60c4SCatalin Marinas	select HAVE_DEBUG_BUGVERBOSE
104b69ec42bSCatalin Marinas	select HAVE_DEBUG_KMEMLEAK
1058c2c3df3SCatalin Marinas	select HAVE_DMA_API_DEBUG
1066ac2104dSLaura Abbott	select HAVE_DMA_CONTIGUOUS
107bd7d38dbSAKASHI Takahiro	select HAVE_DYNAMIC_FTRACE
10850afc33aSWill Deacon	select HAVE_EFFICIENT_UNALIGNED_ACCESS
109af64d2aaSAKASHI Takahiro	select HAVE_FTRACE_MCOUNT_RECORD
110819e50e2SAKASHI Takahiro	select HAVE_FUNCTION_TRACER
111819e50e2SAKASHI Takahiro	select HAVE_FUNCTION_GRAPH_TRACER
1126b90bd4bSEmese Revfy	select HAVE_GCC_PLUGINS
1138c2c3df3SCatalin Marinas	select HAVE_GENERIC_DMA_COHERENT
1148c2c3df3SCatalin Marinas	select HAVE_HW_BREAKPOINT if PERF_EVENTS
11524da208dSWill Deacon	select HAVE_IRQ_TIME_ACCOUNTING
1168c2c3df3SCatalin Marinas	select HAVE_MEMBLOCK
1171a2db300SGanapatrao Kulkarni	select HAVE_MEMBLOCK_NODE_MAP if NUMA
118396a5d4aSStephen Boyd	select HAVE_NMI
11955834a77SMark Rutland	select HAVE_PATA_PLATFORM
1208c2c3df3SCatalin Marinas	select HAVE_PERF_EVENTS
1212ee0d7fdSJean Pihet	select HAVE_PERF_REGS
1222ee0d7fdSJean Pihet	select HAVE_PERF_USER_STACK_DUMP
1230a8ea52cSDavid A. Long	select HAVE_REGS_AND_STACK_ACCESS_API
1245e5f6dc1SSteve Capper	select HAVE_RCU_TABLE_FREE
125055b1212SAKASHI Takahiro	select HAVE_SYSCALL_TRACEPOINTS
1262dd0e8d2SSandeepa Prabhu	select HAVE_KPROBES
127cd1ee3b1SMasami Hiramatsu	select HAVE_KRETPROBES
128876945dbSRobin Murphy	select IOMMU_DMA if IOMMU_SUPPORT
1298c2c3df3SCatalin Marinas	select IRQ_DOMAIN
130e8557d1fSAnders Roxell	select IRQ_FORCED_THREADING
131fea2acaaSCatalin Marinas	select MODULES_USE_ELF_RELA
1328c2c3df3SCatalin Marinas	select NO_BOOTMEM
1338c2c3df3SCatalin Marinas	select OF
1348c2c3df3SCatalin Marinas	select OF_EARLY_FLATTREE
1359bf14b7cSMarek Szyprowski	select OF_RESERVED_MEM
1360cb0786bSTomasz Nowicki	select PCI_ECAM if ACPI
137aa1e8ec1SCatalin Marinas	select POWER_RESET
138aa1e8ec1SCatalin Marinas	select POWER_SUPPLY
1394adcec11SKees Cook	select REFCOUNT_FULL
1408c2c3df3SCatalin Marinas	select SPARSE_IRQ
1417ac57a89SCatalin Marinas	select SYSCTL_EXCEPTION_TRACE
142c02433ddSMark Rutland	select THREAD_INFO_IN_TASK
1438c2c3df3SCatalin Marinas	help
1448c2c3df3SCatalin Marinas	  ARM 64-bit (AArch64) Linux support.
1458c2c3df3SCatalin Marinas
1468c2c3df3SCatalin Marinasconfig 64BIT
1478c2c3df3SCatalin Marinas	def_bool y
1488c2c3df3SCatalin Marinas
1498c2c3df3SCatalin Marinasconfig ARCH_PHYS_ADDR_T_64BIT
1508c2c3df3SCatalin Marinas	def_bool y
1518c2c3df3SCatalin Marinas
1528c2c3df3SCatalin Marinasconfig MMU
1538c2c3df3SCatalin Marinas	def_bool y
1548c2c3df3SCatalin Marinas
155030c4d24SMark Rutlandconfig ARM64_PAGE_SHIFT
156030c4d24SMark Rutland	int
157030c4d24SMark Rutland	default 16 if ARM64_64K_PAGES
158030c4d24SMark Rutland	default 14 if ARM64_16K_PAGES
159030c4d24SMark Rutland	default 12
160030c4d24SMark Rutland
161030c4d24SMark Rutlandconfig ARM64_CONT_SHIFT
162030c4d24SMark Rutland	int
163030c4d24SMark Rutland	default 5 if ARM64_64K_PAGES
164030c4d24SMark Rutland	default 7 if ARM64_16K_PAGES
165030c4d24SMark Rutland	default 4
166030c4d24SMark Rutland
1678f0d3aa9SDaniel Cashmanconfig ARCH_MMAP_RND_BITS_MIN
1688f0d3aa9SDaniel Cashman       default 14 if ARM64_64K_PAGES
1698f0d3aa9SDaniel Cashman       default 16 if ARM64_16K_PAGES
1708f0d3aa9SDaniel Cashman       default 18
1718f0d3aa9SDaniel Cashman
1728f0d3aa9SDaniel Cashman# max bits determined by the following formula:
1738f0d3aa9SDaniel Cashman#  VA_BITS - PAGE_SHIFT - 3
1748f0d3aa9SDaniel Cashmanconfig ARCH_MMAP_RND_BITS_MAX
1758f0d3aa9SDaniel Cashman       default 19 if ARM64_VA_BITS=36
1768f0d3aa9SDaniel Cashman       default 24 if ARM64_VA_BITS=39
1778f0d3aa9SDaniel Cashman       default 27 if ARM64_VA_BITS=42
1788f0d3aa9SDaniel Cashman       default 30 if ARM64_VA_BITS=47
1798f0d3aa9SDaniel Cashman       default 29 if ARM64_VA_BITS=48 && ARM64_64K_PAGES
1808f0d3aa9SDaniel Cashman       default 31 if ARM64_VA_BITS=48 && ARM64_16K_PAGES
1818f0d3aa9SDaniel Cashman       default 33 if ARM64_VA_BITS=48
1828f0d3aa9SDaniel Cashman       default 14 if ARM64_64K_PAGES
1838f0d3aa9SDaniel Cashman       default 16 if ARM64_16K_PAGES
1848f0d3aa9SDaniel Cashman       default 18
1858f0d3aa9SDaniel Cashman
1868f0d3aa9SDaniel Cashmanconfig ARCH_MMAP_RND_COMPAT_BITS_MIN
1878f0d3aa9SDaniel Cashman       default 7 if ARM64_64K_PAGES
1888f0d3aa9SDaniel Cashman       default 9 if ARM64_16K_PAGES
1898f0d3aa9SDaniel Cashman       default 11
1908f0d3aa9SDaniel Cashman
1918f0d3aa9SDaniel Cashmanconfig ARCH_MMAP_RND_COMPAT_BITS_MAX
1928f0d3aa9SDaniel Cashman       default 16
1938f0d3aa9SDaniel Cashman
194ce816fa8SUwe Kleine-Königconfig NO_IOPORT_MAP
195d1e6dc91SLiviu Dudau	def_bool y if !PCI
1968c2c3df3SCatalin Marinas
1978c2c3df3SCatalin Marinasconfig STACKTRACE_SUPPORT
1988c2c3df3SCatalin Marinas	def_bool y
1998c2c3df3SCatalin Marinas
200bf0c4e04SJeff Vander Stoepconfig ILLEGAL_POINTER_VALUE
201bf0c4e04SJeff Vander Stoep	hex
202bf0c4e04SJeff Vander Stoep	default 0xdead000000000000
203bf0c4e04SJeff Vander Stoep
2048c2c3df3SCatalin Marinasconfig LOCKDEP_SUPPORT
2058c2c3df3SCatalin Marinas	def_bool y
2068c2c3df3SCatalin Marinas
2078c2c3df3SCatalin Marinasconfig TRACE_IRQFLAGS_SUPPORT
2088c2c3df3SCatalin Marinas	def_bool y
2098c2c3df3SCatalin Marinas
210c209f799SWill Deaconconfig RWSEM_XCHGADD_ALGORITHM
2118c2c3df3SCatalin Marinas	def_bool y
2128c2c3df3SCatalin Marinas
2139fb7410fSDave P Martinconfig GENERIC_BUG
2149fb7410fSDave P Martin	def_bool y
2159fb7410fSDave P Martin	depends on BUG
2169fb7410fSDave P Martin
2179fb7410fSDave P Martinconfig GENERIC_BUG_RELATIVE_POINTERS
2189fb7410fSDave P Martin	def_bool y
2199fb7410fSDave P Martin	depends on GENERIC_BUG
2209fb7410fSDave P Martin
2218c2c3df3SCatalin Marinasconfig GENERIC_HWEIGHT
2228c2c3df3SCatalin Marinas	def_bool y
2238c2c3df3SCatalin Marinas
2248c2c3df3SCatalin Marinasconfig GENERIC_CSUM
2258c2c3df3SCatalin Marinas        def_bool y
2268c2c3df3SCatalin Marinas
2278c2c3df3SCatalin Marinasconfig GENERIC_CALIBRATE_DELAY
2288c2c3df3SCatalin Marinas	def_bool y
2298c2c3df3SCatalin Marinas
23019e7640dSCatalin Marinasconfig ZONE_DMA
2318c2c3df3SCatalin Marinas	def_bool y
2328c2c3df3SCatalin Marinas
233e585513bSKirill A. Shutemovconfig HAVE_GENERIC_GUP
23429e56940SSteve Capper	def_bool y
23529e56940SSteve Capper
2368c2c3df3SCatalin Marinasconfig ARCH_DMA_ADDR_T_64BIT
2378c2c3df3SCatalin Marinas	def_bool y
2388c2c3df3SCatalin Marinas
2398c2c3df3SCatalin Marinasconfig NEED_DMA_MAP_STATE
2408c2c3df3SCatalin Marinas	def_bool y
2418c2c3df3SCatalin Marinas
2428c2c3df3SCatalin Marinasconfig NEED_SG_DMA_LENGTH
2438c2c3df3SCatalin Marinas	def_bool y
2448c2c3df3SCatalin Marinas
2454b3dc967SWill Deaconconfig SMP
2464b3dc967SWill Deacon	def_bool y
2474b3dc967SWill Deacon
2488c2c3df3SCatalin Marinasconfig SWIOTLB
2498c2c3df3SCatalin Marinas	def_bool y
2508c2c3df3SCatalin Marinas
2518c2c3df3SCatalin Marinasconfig IOMMU_HELPER
2528c2c3df3SCatalin Marinas	def_bool SWIOTLB
2538c2c3df3SCatalin Marinas
2544cfb3613SArd Biesheuvelconfig KERNEL_MODE_NEON
2554cfb3613SArd Biesheuvel	def_bool y
2564cfb3613SArd Biesheuvel
25792cc15fcSRob Herringconfig FIX_EARLYCON_MEM
25892cc15fcSRob Herring	def_bool y
25992cc15fcSRob Herring
2609f25e6adSKirill A. Shutemovconfig PGTABLE_LEVELS
2619f25e6adSKirill A. Shutemov	int
26221539939SSuzuki K. Poulose	default 2 if ARM64_16K_PAGES && ARM64_VA_BITS_36
2639f25e6adSKirill A. Shutemov	default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42
2649f25e6adSKirill A. Shutemov	default 3 if ARM64_64K_PAGES && ARM64_VA_BITS_48
2659f25e6adSKirill A. Shutemov	default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39
26644eaacf1SSuzuki K. Poulose	default 3 if ARM64_16K_PAGES && ARM64_VA_BITS_47
26744eaacf1SSuzuki K. Poulose	default 4 if !ARM64_64K_PAGES && ARM64_VA_BITS_48
2689f25e6adSKirill A. Shutemov
2699842ceaeSPratyush Anandconfig ARCH_SUPPORTS_UPROBES
2709842ceaeSPratyush Anand	def_bool y
2719842ceaeSPratyush Anand
2728f360948SArd Biesheuvelconfig ARCH_PROC_KCORE_TEXT
2738f360948SArd Biesheuvel	def_bool y
2748f360948SArd Biesheuvel
2758c2c3df3SCatalin Marinassource "init/Kconfig"
2768c2c3df3SCatalin Marinas
2778c2c3df3SCatalin Marinassource "kernel/Kconfig.freezer"
2788c2c3df3SCatalin Marinas
2796a377491SOlof Johanssonsource "arch/arm64/Kconfig.platforms"
2808c2c3df3SCatalin Marinas
2818c2c3df3SCatalin Marinasmenu "Bus support"
2828c2c3df3SCatalin Marinas
283d1e6dc91SLiviu Dudauconfig PCI
284d1e6dc91SLiviu Dudau	bool "PCI support"
285d1e6dc91SLiviu Dudau	help
286d1e6dc91SLiviu Dudau	  This feature enables support for PCI bus system. If you say Y
287d1e6dc91SLiviu Dudau	  here, the kernel will include drivers and infrastructure code
288d1e6dc91SLiviu Dudau	  to support PCI bus devices.
289d1e6dc91SLiviu Dudau
290d1e6dc91SLiviu Dudauconfig PCI_DOMAINS
291d1e6dc91SLiviu Dudau	def_bool PCI
292d1e6dc91SLiviu Dudau
293d1e6dc91SLiviu Dudauconfig PCI_DOMAINS_GENERIC
294d1e6dc91SLiviu Dudau	def_bool PCI
295d1e6dc91SLiviu Dudau
296d1e6dc91SLiviu Dudauconfig PCI_SYSCALL
297d1e6dc91SLiviu Dudau	def_bool PCI
298d1e6dc91SLiviu Dudau
299d1e6dc91SLiviu Dudausource "drivers/pci/Kconfig"
300d1e6dc91SLiviu Dudau
3018c2c3df3SCatalin Marinasendmenu
3028c2c3df3SCatalin Marinas
3038c2c3df3SCatalin Marinasmenu "Kernel Features"
3048c2c3df3SCatalin Marinas
305c0a01b84SAndre Przywaramenu "ARM errata workarounds via the alternatives framework"
306c0a01b84SAndre Przywara
307c0a01b84SAndre Przywaraconfig ARM64_ERRATUM_826319
308c0a01b84SAndre Przywara	bool "Cortex-A53: 826319: System might deadlock if a write cannot complete until read data is accepted"
309c0a01b84SAndre Przywara	default y
310c0a01b84SAndre Przywara	help
311c0a01b84SAndre Przywara	  This option adds an alternative code sequence to work around ARM
312c0a01b84SAndre Przywara	  erratum 826319 on Cortex-A53 parts up to r0p2 with an AMBA 4 ACE or
313c0a01b84SAndre Przywara	  AXI master interface and an L2 cache.
314c0a01b84SAndre Przywara
315c0a01b84SAndre Przywara	  If a Cortex-A53 uses an AMBA AXI4 ACE interface to other processors
316c0a01b84SAndre Przywara	  and is unable to accept a certain write via this interface, it will
317c0a01b84SAndre Przywara	  not progress on read data presented on the read data channel and the
318c0a01b84SAndre Przywara	  system can deadlock.
319c0a01b84SAndre Przywara
320c0a01b84SAndre Przywara	  The workaround promotes data cache clean instructions to
321c0a01b84SAndre Przywara	  data cache clean-and-invalidate.
322c0a01b84SAndre Przywara	  Please note that this does not necessarily enable the workaround,
323c0a01b84SAndre Przywara	  as it depends on the alternative framework, which will only patch
324c0a01b84SAndre Przywara	  the kernel if an affected CPU is detected.
325c0a01b84SAndre Przywara
326c0a01b84SAndre Przywara	  If unsure, say Y.
327c0a01b84SAndre Przywara
328c0a01b84SAndre Przywaraconfig ARM64_ERRATUM_827319
329c0a01b84SAndre Przywara	bool "Cortex-A53: 827319: Data cache clean instructions might cause overlapping transactions to the interconnect"
330c0a01b84SAndre Przywara	default y
331c0a01b84SAndre Przywara	help
332c0a01b84SAndre Przywara	  This option adds an alternative code sequence to work around ARM
333c0a01b84SAndre Przywara	  erratum 827319 on Cortex-A53 parts up to r0p2 with an AMBA 5 CHI
334c0a01b84SAndre Przywara	  master interface and an L2 cache.
335c0a01b84SAndre Przywara
336c0a01b84SAndre Przywara	  Under certain conditions this erratum can cause a clean line eviction
337c0a01b84SAndre Przywara	  to occur at the same time as another transaction to the same address
338c0a01b84SAndre Przywara	  on the AMBA 5 CHI interface, which can cause data corruption if the
339c0a01b84SAndre Przywara	  interconnect reorders the two transactions.
340c0a01b84SAndre Przywara
341c0a01b84SAndre Przywara	  The workaround promotes data cache clean instructions to
342c0a01b84SAndre Przywara	  data cache clean-and-invalidate.
343c0a01b84SAndre Przywara	  Please note that this does not necessarily enable the workaround,
344c0a01b84SAndre Przywara	  as it depends on the alternative framework, which will only patch
345c0a01b84SAndre Przywara	  the kernel if an affected CPU is detected.
346c0a01b84SAndre Przywara
347c0a01b84SAndre Przywara	  If unsure, say Y.
348c0a01b84SAndre Przywara
349c0a01b84SAndre Przywaraconfig ARM64_ERRATUM_824069
350c0a01b84SAndre Przywara	bool "Cortex-A53: 824069: Cache line might not be marked as clean after a CleanShared snoop"
351c0a01b84SAndre Przywara	default y
352c0a01b84SAndre Przywara	help
353c0a01b84SAndre Przywara	  This option adds an alternative code sequence to work around ARM
354c0a01b84SAndre Przywara	  erratum 824069 on Cortex-A53 parts up to r0p2 when it is connected
355c0a01b84SAndre Przywara	  to a coherent interconnect.
356c0a01b84SAndre Przywara
357c0a01b84SAndre Przywara	  If a Cortex-A53 processor is executing a store or prefetch for
358c0a01b84SAndre Przywara	  write instruction at the same time as a processor in another
359c0a01b84SAndre Przywara	  cluster is executing a cache maintenance operation to the same
360c0a01b84SAndre Przywara	  address, then this erratum might cause a clean cache line to be
361c0a01b84SAndre Przywara	  incorrectly marked as dirty.
362c0a01b84SAndre Przywara
363c0a01b84SAndre Przywara	  The workaround promotes data cache clean instructions to
364c0a01b84SAndre Przywara	  data cache clean-and-invalidate.
365c0a01b84SAndre Przywara	  Please note that this option does not necessarily enable the
366c0a01b84SAndre Przywara	  workaround, as it depends on the alternative framework, which will
367c0a01b84SAndre Przywara	  only patch the kernel if an affected CPU is detected.
368c0a01b84SAndre Przywara
369c0a01b84SAndre Przywara	  If unsure, say Y.
370c0a01b84SAndre Przywara
371c0a01b84SAndre Przywaraconfig ARM64_ERRATUM_819472
372c0a01b84SAndre Przywara	bool "Cortex-A53: 819472: Store exclusive instructions might cause data corruption"
373c0a01b84SAndre Przywara	default y
374c0a01b84SAndre Przywara	help
375c0a01b84SAndre Przywara	  This option adds an alternative code sequence to work around ARM
376c0a01b84SAndre Przywara	  erratum 819472 on Cortex-A53 parts up to r0p1 with an L2 cache
377c0a01b84SAndre Przywara	  present when it is connected to a coherent interconnect.
378c0a01b84SAndre Przywara
379c0a01b84SAndre Przywara	  If the processor is executing a load and store exclusive sequence at
380c0a01b84SAndre Przywara	  the same time as a processor in another cluster is executing a cache
381c0a01b84SAndre Przywara	  maintenance operation to the same address, then this erratum might
382c0a01b84SAndre Przywara	  cause data corruption.
383c0a01b84SAndre Przywara
384c0a01b84SAndre Przywara	  The workaround promotes data cache clean instructions to
385c0a01b84SAndre Przywara	  data cache clean-and-invalidate.
386c0a01b84SAndre Przywara	  Please note that this does not necessarily enable the workaround,
387c0a01b84SAndre Przywara	  as it depends on the alternative framework, which will only patch
388c0a01b84SAndre Przywara	  the kernel if an affected CPU is detected.
389c0a01b84SAndre Przywara
390c0a01b84SAndre Przywara	  If unsure, say Y.
391c0a01b84SAndre Przywara
392c0a01b84SAndre Przywaraconfig ARM64_ERRATUM_832075
393c0a01b84SAndre Przywara	bool "Cortex-A57: 832075: possible deadlock on mixing exclusive memory accesses with device loads"
394c0a01b84SAndre Przywara	default y
395c0a01b84SAndre Przywara	help
396c0a01b84SAndre Przywara	  This option adds an alternative code sequence to work around ARM
397c0a01b84SAndre Przywara	  erratum 832075 on Cortex-A57 parts up to r1p2.
398c0a01b84SAndre Przywara
399c0a01b84SAndre Przywara	  Affected Cortex-A57 parts might deadlock when exclusive load/store
400c0a01b84SAndre Przywara	  instructions to Write-Back memory are mixed with Device loads.
401c0a01b84SAndre Przywara
402c0a01b84SAndre Przywara	  The workaround is to promote device loads to use Load-Acquire
403c0a01b84SAndre Przywara	  semantics.
404c0a01b84SAndre Przywara	  Please note that this does not necessarily enable the workaround,
405c0a01b84SAndre Przywara	  as it depends on the alternative framework, which will only patch
406c0a01b84SAndre Przywara	  the kernel if an affected CPU is detected.
407c0a01b84SAndre Przywara
408c0a01b84SAndre Przywara	  If unsure, say Y.
409c0a01b84SAndre Przywara
410498cd5c3SMarc Zyngierconfig ARM64_ERRATUM_834220
411498cd5c3SMarc Zyngier	bool "Cortex-A57: 834220: Stage 2 translation fault might be incorrectly reported in presence of a Stage 1 fault"
412498cd5c3SMarc Zyngier	depends on KVM
413498cd5c3SMarc Zyngier	default y
414498cd5c3SMarc Zyngier	help
415498cd5c3SMarc Zyngier	  This option adds an alternative code sequence to work around ARM
416498cd5c3SMarc Zyngier	  erratum 834220 on Cortex-A57 parts up to r1p2.
417498cd5c3SMarc Zyngier
418498cd5c3SMarc Zyngier	  Affected Cortex-A57 parts might report a Stage 2 translation
419498cd5c3SMarc Zyngier	  fault as the result of a Stage 1 fault for load crossing a
420498cd5c3SMarc Zyngier	  page boundary when there is a permission or device memory
421498cd5c3SMarc Zyngier	  alignment fault at Stage 1 and a translation fault at Stage 2.
422498cd5c3SMarc Zyngier
423498cd5c3SMarc Zyngier	  The workaround is to verify that the Stage 1 translation
424498cd5c3SMarc Zyngier	  doesn't generate a fault before handling the Stage 2 fault.
425498cd5c3SMarc Zyngier	  Please note that this does not necessarily enable the workaround,
426498cd5c3SMarc Zyngier	  as it depends on the alternative framework, which will only patch
427498cd5c3SMarc Zyngier	  the kernel if an affected CPU is detected.
428498cd5c3SMarc Zyngier
429498cd5c3SMarc Zyngier	  If unsure, say Y.
430498cd5c3SMarc Zyngier
431905e8c5dSWill Deaconconfig ARM64_ERRATUM_845719
432905e8c5dSWill Deacon	bool "Cortex-A53: 845719: a load might read incorrect data"
433905e8c5dSWill Deacon	depends on COMPAT
434905e8c5dSWill Deacon	default y
435905e8c5dSWill Deacon	help
436905e8c5dSWill Deacon	  This option adds an alternative code sequence to work around ARM
437905e8c5dSWill Deacon	  erratum 845719 on Cortex-A53 parts up to r0p4.
438905e8c5dSWill Deacon
439905e8c5dSWill Deacon	  When running a compat (AArch32) userspace on an affected Cortex-A53
440905e8c5dSWill Deacon	  part, a load at EL0 from a virtual address that matches the bottom 32
441905e8c5dSWill Deacon	  bits of the virtual address used by a recent load at (AArch64) EL1
442905e8c5dSWill Deacon	  might return incorrect data.
443905e8c5dSWill Deacon
444905e8c5dSWill Deacon	  The workaround is to write the contextidr_el1 register on exception
445905e8c5dSWill Deacon	  return to a 32-bit task.
446905e8c5dSWill Deacon	  Please note that this does not necessarily enable the workaround,
447905e8c5dSWill Deacon	  as it depends on the alternative framework, which will only patch
448905e8c5dSWill Deacon	  the kernel if an affected CPU is detected.
449905e8c5dSWill Deacon
450905e8c5dSWill Deacon	  If unsure, say Y.
451905e8c5dSWill Deacon
452df057cc7SWill Deaconconfig ARM64_ERRATUM_843419
453df057cc7SWill Deacon	bool "Cortex-A53: 843419: A load or store might access an incorrect address"
454df057cc7SWill Deacon	default y
4556ffe9923SWill Deacon	select ARM64_MODULE_CMODEL_LARGE if MODULES
456df057cc7SWill Deacon	help
4576ffe9923SWill Deacon	  This option links the kernel with '--fix-cortex-a53-843419' and
4586ffe9923SWill Deacon	  builds modules using the large memory model in order to avoid the use
4596ffe9923SWill Deacon	  of the ADRP instruction, which can cause a subsequent memory access
4606ffe9923SWill Deacon	  to use an incorrect address on Cortex-A53 parts up to r0p4.
461df057cc7SWill Deacon
462df057cc7SWill Deacon	  If unsure, say Y.
463df057cc7SWill Deacon
46494100970SRobert Richterconfig CAVIUM_ERRATUM_22375
46594100970SRobert Richter	bool "Cavium erratum 22375, 24313"
46694100970SRobert Richter	default y
46794100970SRobert Richter	help
46894100970SRobert Richter	  Enable workaround for erratum 22375, 24313.
46994100970SRobert Richter
47094100970SRobert Richter	  This implements two gicv3-its errata workarounds for ThunderX. Both
47194100970SRobert Richter	  with small impact affecting only ITS table allocation.
47294100970SRobert Richter
47394100970SRobert Richter	    erratum 22375: only alloc 8MB table size
47494100970SRobert Richter	    erratum 24313: ignore memory access type
47594100970SRobert Richter
47694100970SRobert Richter	  The fixes are in ITS initialization and basically ignore memory access
47794100970SRobert Richter	  type and table size provided by the TYPER and BASER registers.
47894100970SRobert Richter
47994100970SRobert Richter	  If unsure, say Y.
48094100970SRobert Richter
481fbf8f40eSGanapatrao Kulkarniconfig CAVIUM_ERRATUM_23144
482fbf8f40eSGanapatrao Kulkarni	bool "Cavium erratum 23144: ITS SYNC hang on dual socket system"
483fbf8f40eSGanapatrao Kulkarni	depends on NUMA
484fbf8f40eSGanapatrao Kulkarni	default y
485fbf8f40eSGanapatrao Kulkarni	help
486fbf8f40eSGanapatrao Kulkarni	  ITS SYNC command hang for cross node io and collections/cpu mapping.
487fbf8f40eSGanapatrao Kulkarni
488fbf8f40eSGanapatrao Kulkarni	  If unsure, say Y.
489fbf8f40eSGanapatrao Kulkarni
4906d4e11c5SRobert Richterconfig CAVIUM_ERRATUM_23154
4916d4e11c5SRobert Richter	bool "Cavium erratum 23154: Access to ICC_IAR1_EL1 is not sync'ed"
4926d4e11c5SRobert Richter	default y
4936d4e11c5SRobert Richter	help
4946d4e11c5SRobert Richter	  The gicv3 of ThunderX requires a modified version for
4956d4e11c5SRobert Richter	  reading the IAR status to ensure data synchronization
4966d4e11c5SRobert Richter	  (access to icc_iar1_el1 is not sync'ed before and after).
4976d4e11c5SRobert Richter
4986d4e11c5SRobert Richter	  If unsure, say Y.
4996d4e11c5SRobert Richter
500104a0c02SAndrew Pinskiconfig CAVIUM_ERRATUM_27456
501104a0c02SAndrew Pinski	bool "Cavium erratum 27456: Broadcast TLBI instructions may cause icache corruption"
502104a0c02SAndrew Pinski	default y
503104a0c02SAndrew Pinski	help
504104a0c02SAndrew Pinski	  On ThunderX T88 pass 1.x through 2.1 parts, broadcast TLBI
505104a0c02SAndrew Pinski	  instructions may cause the icache to become corrupted if it
506104a0c02SAndrew Pinski	  contains data for a non-current ASID.  The fix is to
507104a0c02SAndrew Pinski	  invalidate the icache when changing the mm context.
508104a0c02SAndrew Pinski
509104a0c02SAndrew Pinski	  If unsure, say Y.
510104a0c02SAndrew Pinski
511690a3415SDavid Daneyconfig CAVIUM_ERRATUM_30115
512690a3415SDavid Daney	bool "Cavium erratum 30115: Guest may disable interrupts in host"
513690a3415SDavid Daney	default y
514690a3415SDavid Daney	help
515690a3415SDavid Daney	  On ThunderX T88 pass 1.x through 2.2, T81 pass 1.0 through
516690a3415SDavid Daney	  1.2, and T83 Pass 1.0, KVM guest execution may disable
517690a3415SDavid Daney	  interrupts in host. Trapping both GICv3 group-0 and group-1
518690a3415SDavid Daney	  accesses sidesteps the issue.
519690a3415SDavid Daney
520690a3415SDavid Daney	  If unsure, say Y.
521690a3415SDavid Daney
52238fd94b0SChristopher Covingtonconfig QCOM_FALKOR_ERRATUM_1003
52338fd94b0SChristopher Covington	bool "Falkor E1003: Incorrect translation due to ASID change"
52438fd94b0SChristopher Covington	default y
52538fd94b0SChristopher Covington	help
52638fd94b0SChristopher Covington	  On Falkor v1, an incorrect ASID may be cached in the TLB when ASID
527d1777e68SWill Deacon	  and BADDR are changed together in TTBRx_EL1. Since we keep the ASID
528d1777e68SWill Deacon	  in TTBR1_EL1, this situation only occurs in the entry trampoline and
529d1777e68SWill Deacon	  then only for entries in the walk cache, since the leaf translation
530d1777e68SWill Deacon	  is unchanged. Work around the erratum by invalidating the walk cache
531d1777e68SWill Deacon	  entries for the trampoline before entering the kernel proper.
53238fd94b0SChristopher Covington
533d9ff80f8SChristopher Covingtonconfig QCOM_FALKOR_ERRATUM_1009
534d9ff80f8SChristopher Covington	bool "Falkor E1009: Prematurely complete a DSB after a TLBI"
535d9ff80f8SChristopher Covington	default y
536d9ff80f8SChristopher Covington	help
537d9ff80f8SChristopher Covington	  On Falkor v1, the CPU may prematurely complete a DSB following a
538d9ff80f8SChristopher Covington	  TLBI xxIS invalidate maintenance operation. Repeat the TLBI operation
539d9ff80f8SChristopher Covington	  one more time to fix the issue.
540d9ff80f8SChristopher Covington
541d9ff80f8SChristopher Covington	  If unsure, say Y.
542d9ff80f8SChristopher Covington
54390922a2dSShanker Donthineniconfig QCOM_QDF2400_ERRATUM_0065
54490922a2dSShanker Donthineni	bool "QDF2400 E0065: Incorrect GITS_TYPER.ITT_Entry_size"
54590922a2dSShanker Donthineni	default y
54690922a2dSShanker Donthineni	help
54790922a2dSShanker Donthineni	  On Qualcomm Datacenter Technologies QDF2400 SoC, ITS hardware reports
54890922a2dSShanker Donthineni	  ITE size incorrectly. The GITS_TYPER.ITT_Entry_size field should have
54990922a2dSShanker Donthineni	  been indicated as 16Bytes (0xf), not 8Bytes (0x7).
55090922a2dSShanker Donthineni
55190922a2dSShanker Donthineni	  If unsure, say Y.
55290922a2dSShanker Donthineni
5535c9a882eSMarc Zyngier
554558b0165SArd Biesheuvelconfig SOCIONEXT_SYNQUACER_PREITS
555558b0165SArd Biesheuvel	bool "Socionext Synquacer: Workaround for GICv3 pre-ITS"
556558b0165SArd Biesheuvel	default y
557558b0165SArd Biesheuvel	help
558558b0165SArd Biesheuvel	  Socionext Synquacer SoCs implement a separate h/w block to generate
559558b0165SArd Biesheuvel	  MSI doorbell writes with non-zero values for the device ID.
560558b0165SArd Biesheuvel
561558b0165SArd Biesheuvel	  If unsure, say Y.
5625c9a882eSMarc Zyngier
5635c9a882eSMarc Zyngierconfig HISILICON_ERRATUM_161600802
5645c9a882eSMarc Zyngier	bool "Hip07 161600802: Erroneous redistributor VLPI base"
5655c9a882eSMarc Zyngier	default y
5665c9a882eSMarc Zyngier	help
5675c9a882eSMarc Zyngier	  The HiSilicon Hip07 SoC usees the wrong redistributor base
5685c9a882eSMarc Zyngier	  when issued ITS commands such as VMOVP and VMAPP, and requires
5695c9a882eSMarc Zyngier	  a 128kB offset to be applied to the target address in this commands.
5705c9a882eSMarc Zyngier
5715c9a882eSMarc Zyngier	  If unsure, say Y.
572c0a01b84SAndre Przywaraendmenu
573c0a01b84SAndre Przywara
574c0a01b84SAndre Przywara
575e41ceed0SJungseok Leechoice
576e41ceed0SJungseok Lee	prompt "Page size"
577e41ceed0SJungseok Lee	default ARM64_4K_PAGES
578e41ceed0SJungseok Lee	help
579e41ceed0SJungseok Lee	  Page size (translation granule) configuration.
580e41ceed0SJungseok Lee
581e41ceed0SJungseok Leeconfig ARM64_4K_PAGES
582e41ceed0SJungseok Lee	bool "4KB"
583e41ceed0SJungseok Lee	help
584e41ceed0SJungseok Lee	  This feature enables 4KB pages support.
585e41ceed0SJungseok Lee
58644eaacf1SSuzuki K. Pouloseconfig ARM64_16K_PAGES
58744eaacf1SSuzuki K. Poulose	bool "16KB"
58844eaacf1SSuzuki K. Poulose	help
58944eaacf1SSuzuki K. Poulose	  The system will use 16KB pages support. AArch32 emulation
59044eaacf1SSuzuki K. Poulose	  requires applications compiled with 16K (or a multiple of 16K)
59144eaacf1SSuzuki K. Poulose	  aligned segments.
59244eaacf1SSuzuki K. Poulose
5938c2c3df3SCatalin Marinasconfig ARM64_64K_PAGES
594e41ceed0SJungseok Lee	bool "64KB"
5958c2c3df3SCatalin Marinas	help
5968c2c3df3SCatalin Marinas	  This feature enables 64KB pages support (4KB by default)
5978c2c3df3SCatalin Marinas	  allowing only two levels of page tables and faster TLB
598db488be3SSuzuki K. Poulose	  look-up. AArch32 emulation requires applications compiled
599db488be3SSuzuki K. Poulose	  with 64K aligned segments.
6008c2c3df3SCatalin Marinas
601e41ceed0SJungseok Leeendchoice
602e41ceed0SJungseok Lee
603e41ceed0SJungseok Leechoice
604e41ceed0SJungseok Lee	prompt "Virtual address space size"
605e41ceed0SJungseok Lee	default ARM64_VA_BITS_39 if ARM64_4K_PAGES
60644eaacf1SSuzuki K. Poulose	default ARM64_VA_BITS_47 if ARM64_16K_PAGES
607e41ceed0SJungseok Lee	default ARM64_VA_BITS_42 if ARM64_64K_PAGES
608e41ceed0SJungseok Lee	help
609e41ceed0SJungseok Lee	  Allows choosing one of multiple possible virtual address
610e41ceed0SJungseok Lee	  space sizes. The level of translation table is determined by
611e41ceed0SJungseok Lee	  a combination of page size and virtual address space size.
612e41ceed0SJungseok Lee
61321539939SSuzuki K. Pouloseconfig ARM64_VA_BITS_36
61456a3f30eSCatalin Marinas	bool "36-bit" if EXPERT
61521539939SSuzuki K. Poulose	depends on ARM64_16K_PAGES
61621539939SSuzuki K. Poulose
617e41ceed0SJungseok Leeconfig ARM64_VA_BITS_39
618e41ceed0SJungseok Lee	bool "39-bit"
619e41ceed0SJungseok Lee	depends on ARM64_4K_PAGES
620e41ceed0SJungseok Lee
621e41ceed0SJungseok Leeconfig ARM64_VA_BITS_42
622e41ceed0SJungseok Lee	bool "42-bit"
623e41ceed0SJungseok Lee	depends on ARM64_64K_PAGES
624e41ceed0SJungseok Lee
62544eaacf1SSuzuki K. Pouloseconfig ARM64_VA_BITS_47
62644eaacf1SSuzuki K. Poulose	bool "47-bit"
62744eaacf1SSuzuki K. Poulose	depends on ARM64_16K_PAGES
62844eaacf1SSuzuki K. Poulose
629c79b954bSJungseok Leeconfig ARM64_VA_BITS_48
630c79b954bSJungseok Lee	bool "48-bit"
631c79b954bSJungseok Lee
632e41ceed0SJungseok Leeendchoice
633e41ceed0SJungseok Lee
634e41ceed0SJungseok Leeconfig ARM64_VA_BITS
635e41ceed0SJungseok Lee	int
63621539939SSuzuki K. Poulose	default 36 if ARM64_VA_BITS_36
637e41ceed0SJungseok Lee	default 39 if ARM64_VA_BITS_39
638e41ceed0SJungseok Lee	default 42 if ARM64_VA_BITS_42
63944eaacf1SSuzuki K. Poulose	default 47 if ARM64_VA_BITS_47
640c79b954bSJungseok Lee	default 48 if ARM64_VA_BITS_48
641e41ceed0SJungseok Lee
642982aa7c5SKristina Martsenkochoice
643982aa7c5SKristina Martsenko	prompt "Physical address space size"
644982aa7c5SKristina Martsenko	default ARM64_PA_BITS_48
645982aa7c5SKristina Martsenko	help
646982aa7c5SKristina Martsenko	  Choose the maximum physical address range that the kernel will
647982aa7c5SKristina Martsenko	  support.
648982aa7c5SKristina Martsenko
649982aa7c5SKristina Martsenkoconfig ARM64_PA_BITS_48
650982aa7c5SKristina Martsenko	bool "48-bit"
651982aa7c5SKristina Martsenko
652f77d2817SKristina Martsenkoconfig ARM64_PA_BITS_52
653f77d2817SKristina Martsenko	bool "52-bit (ARMv8.2)"
654f77d2817SKristina Martsenko	depends on ARM64_64K_PAGES
655f77d2817SKristina Martsenko	depends on ARM64_PAN || !ARM64_SW_TTBR0_PAN
656f77d2817SKristina Martsenko	help
657f77d2817SKristina Martsenko	  Enable support for a 52-bit physical address space, introduced as
658f77d2817SKristina Martsenko	  part of the ARMv8.2-LPA extension.
659f77d2817SKristina Martsenko
660f77d2817SKristina Martsenko	  With this enabled, the kernel will also continue to work on CPUs that
661f77d2817SKristina Martsenko	  do not support ARMv8.2-LPA, but with some added memory overhead (and
662f77d2817SKristina Martsenko	  minor performance overhead).
663f77d2817SKristina Martsenko
664982aa7c5SKristina Martsenkoendchoice
665982aa7c5SKristina Martsenko
666982aa7c5SKristina Martsenkoconfig ARM64_PA_BITS
667982aa7c5SKristina Martsenko	int
668982aa7c5SKristina Martsenko	default 48 if ARM64_PA_BITS_48
669f77d2817SKristina Martsenko	default 52 if ARM64_PA_BITS_52
670982aa7c5SKristina Martsenko
671a872013dSWill Deaconconfig CPU_BIG_ENDIAN
672a872013dSWill Deacon       bool "Build big-endian kernel"
673a872013dSWill Deacon       help
674a872013dSWill Deacon         Say Y if you plan on running a kernel in big-endian mode.
675a872013dSWill Deacon
676f6e763b9SMark Brownconfig SCHED_MC
677f6e763b9SMark Brown	bool "Multi-core scheduler support"
678f6e763b9SMark Brown	help
679f6e763b9SMark Brown	  Multi-core scheduler support improves the CPU scheduler's decision
680f6e763b9SMark Brown	  making when dealing with multi-core CPU chips at a cost of slightly
681f6e763b9SMark Brown	  increased overhead in some places. If unsure say N here.
682f6e763b9SMark Brown
683f6e763b9SMark Brownconfig SCHED_SMT
684f6e763b9SMark Brown	bool "SMT scheduler support"
685f6e763b9SMark Brown	help
686f6e763b9SMark Brown	  Improves the CPU scheduler's decision making when dealing with
687f6e763b9SMark Brown	  MultiThreading at a cost of slightly increased overhead in some
688f6e763b9SMark Brown	  places. If unsure say N here.
689f6e763b9SMark Brown
6908c2c3df3SCatalin Marinasconfig NR_CPUS
69162aa9655SGanapatrao Kulkarni	int "Maximum number of CPUs (2-4096)"
69262aa9655SGanapatrao Kulkarni	range 2 4096
69315942853SVinayak Kale	# These have to remain sorted largest to smallest
694e3672649SRobert Richter	default "64"
6958c2c3df3SCatalin Marinas
6969327e2c6SMark Rutlandconfig HOTPLUG_CPU
6979327e2c6SMark Rutland	bool "Support for hot-pluggable CPUs"
698217d453dSYang Yingliang	select GENERIC_IRQ_MIGRATION
6999327e2c6SMark Rutland	help
7009327e2c6SMark Rutland	  Say Y here to experiment with turning CPUs off and on.  CPUs
7019327e2c6SMark Rutland	  can be controlled through /sys/devices/system/cpu.
7029327e2c6SMark Rutland
7031a2db300SGanapatrao Kulkarni# Common NUMA Features
7041a2db300SGanapatrao Kulkarniconfig NUMA
7051a2db300SGanapatrao Kulkarni	bool "Numa Memory Allocation and Scheduler Support"
7060c2a6cceSKefeng Wang	select ACPI_NUMA if ACPI
7070c2a6cceSKefeng Wang	select OF_NUMA
7081a2db300SGanapatrao Kulkarni	help
7091a2db300SGanapatrao Kulkarni	  Enable NUMA (Non Uniform Memory Access) support.
7101a2db300SGanapatrao Kulkarni
7111a2db300SGanapatrao Kulkarni	  The kernel will try to allocate memory used by a CPU on the
7121a2db300SGanapatrao Kulkarni	  local memory of the CPU and add some more
7131a2db300SGanapatrao Kulkarni	  NUMA awareness to the kernel.
7141a2db300SGanapatrao Kulkarni
7151a2db300SGanapatrao Kulkarniconfig NODES_SHIFT
7161a2db300SGanapatrao Kulkarni	int "Maximum NUMA Nodes (as a power of 2)"
7171a2db300SGanapatrao Kulkarni	range 1 10
7181a2db300SGanapatrao Kulkarni	default "2"
7191a2db300SGanapatrao Kulkarni	depends on NEED_MULTIPLE_NODES
7201a2db300SGanapatrao Kulkarni	help
7211a2db300SGanapatrao Kulkarni	  Specify the maximum number of NUMA Nodes available on the target
7221a2db300SGanapatrao Kulkarni	  system.  Increases memory reserved to accommodate various tables.
7231a2db300SGanapatrao Kulkarni
7241a2db300SGanapatrao Kulkarniconfig USE_PERCPU_NUMA_NODE_ID
7251a2db300SGanapatrao Kulkarni	def_bool y
7261a2db300SGanapatrao Kulkarni	depends on NUMA
7271a2db300SGanapatrao Kulkarni
7287af3a0a9SZhen Leiconfig HAVE_SETUP_PER_CPU_AREA
7297af3a0a9SZhen Lei	def_bool y
7307af3a0a9SZhen Lei	depends on NUMA
7317af3a0a9SZhen Lei
7327af3a0a9SZhen Leiconfig NEED_PER_CPU_EMBED_FIRST_CHUNK
7337af3a0a9SZhen Lei	def_bool y
7347af3a0a9SZhen Lei	depends on NUMA
7357af3a0a9SZhen Lei
7366d526ee2SArd Biesheuvelconfig HOLES_IN_ZONE
7376d526ee2SArd Biesheuvel	def_bool y
7386d526ee2SArd Biesheuvel	depends on NUMA
7396d526ee2SArd Biesheuvel
7408c2c3df3SCatalin Marinassource kernel/Kconfig.preempt
741f90df5e2SKefeng Wangsource kernel/Kconfig.hz
7428c2c3df3SCatalin Marinas
74383863f25SLaura Abbottconfig ARCH_SUPPORTS_DEBUG_PAGEALLOC
74483863f25SLaura Abbott	def_bool y
74583863f25SLaura Abbott
7468c2c3df3SCatalin Marinasconfig ARCH_HAS_HOLES_MEMORYMODEL
7478c2c3df3SCatalin Marinas	def_bool y if SPARSEMEM
7488c2c3df3SCatalin Marinas
7498c2c3df3SCatalin Marinasconfig ARCH_SPARSEMEM_ENABLE
7508c2c3df3SCatalin Marinas	def_bool y
7518c2c3df3SCatalin Marinas	select SPARSEMEM_VMEMMAP_ENABLE
7528c2c3df3SCatalin Marinas
7538c2c3df3SCatalin Marinasconfig ARCH_SPARSEMEM_DEFAULT
7548c2c3df3SCatalin Marinas	def_bool ARCH_SPARSEMEM_ENABLE
7558c2c3df3SCatalin Marinas
7568c2c3df3SCatalin Marinasconfig ARCH_SELECT_MEMORY_MODEL
7578c2c3df3SCatalin Marinas	def_bool ARCH_SPARSEMEM_ENABLE
7588c2c3df3SCatalin Marinas
7598c2c3df3SCatalin Marinasconfig HAVE_ARCH_PFN_VALID
7608c2c3df3SCatalin Marinas	def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
7618c2c3df3SCatalin Marinas
7628c2c3df3SCatalin Marinasconfig HW_PERF_EVENTS
7636475b2d8SMark Rutland	def_bool y
7646475b2d8SMark Rutland	depends on ARM_PMU
7658c2c3df3SCatalin Marinas
766084bd298SSteve Capperconfig SYS_SUPPORTS_HUGETLBFS
767084bd298SSteve Capper	def_bool y
768084bd298SSteve Capper
769084bd298SSteve Capperconfig ARCH_WANT_HUGE_PMD_SHARE
77021539939SSuzuki K. Poulose	def_bool y if ARM64_4K_PAGES || (ARM64_16K_PAGES && !ARM64_VA_BITS_36)
771084bd298SSteve Capper
772a41dc0e8SCatalin Marinasconfig ARCH_HAS_CACHE_LINE_SIZE
773a41dc0e8SCatalin Marinas	def_bool y
774a41dc0e8SCatalin Marinas
7758c2c3df3SCatalin Marinassource "mm/Kconfig"
7768c2c3df3SCatalin Marinas
777a1ae65b2SAKASHI Takahiroconfig SECCOMP
778a1ae65b2SAKASHI Takahiro	bool "Enable seccomp to safely compute untrusted bytecode"
779a1ae65b2SAKASHI Takahiro	---help---
780a1ae65b2SAKASHI Takahiro	  This kernel feature is useful for number crunching applications
781a1ae65b2SAKASHI Takahiro	  that may need to compute untrusted bytecode during their
782a1ae65b2SAKASHI Takahiro	  execution. By using pipes or other transports made available to
783a1ae65b2SAKASHI Takahiro	  the process as file descriptors supporting the read/write
784a1ae65b2SAKASHI Takahiro	  syscalls, it's possible to isolate those applications in
785a1ae65b2SAKASHI Takahiro	  their own address space using seccomp. Once seccomp is
786a1ae65b2SAKASHI Takahiro	  enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
787a1ae65b2SAKASHI Takahiro	  and the task is only allowed to execute a few safe syscalls
788a1ae65b2SAKASHI Takahiro	  defined by each seccomp mode.
789a1ae65b2SAKASHI Takahiro
790dfd57bc3SStefano Stabelliniconfig PARAVIRT
791dfd57bc3SStefano Stabellini	bool "Enable paravirtualization code"
792dfd57bc3SStefano Stabellini	help
793dfd57bc3SStefano Stabellini	  This changes the kernel so it can modify itself when it is run
794dfd57bc3SStefano Stabellini	  under a hypervisor, potentially improving performance significantly
795dfd57bc3SStefano Stabellini	  over full virtualization.
796dfd57bc3SStefano Stabellini
797dfd57bc3SStefano Stabelliniconfig PARAVIRT_TIME_ACCOUNTING
798dfd57bc3SStefano Stabellini	bool "Paravirtual steal time accounting"
799dfd57bc3SStefano Stabellini	select PARAVIRT
800dfd57bc3SStefano Stabellini	default n
801dfd57bc3SStefano Stabellini	help
802dfd57bc3SStefano Stabellini	  Select this option to enable fine granularity task steal time
803dfd57bc3SStefano Stabellini	  accounting. Time spent executing other tasks in parallel with
804dfd57bc3SStefano Stabellini	  the current vCPU is discounted from the vCPU power. To account for
805dfd57bc3SStefano Stabellini	  that, there can be a small performance impact.
806dfd57bc3SStefano Stabellini
807dfd57bc3SStefano Stabellini	  If in doubt, say N here.
808dfd57bc3SStefano Stabellini
809d28f6df1SGeoff Levandconfig KEXEC
810d28f6df1SGeoff Levand	depends on PM_SLEEP_SMP
811d28f6df1SGeoff Levand	select KEXEC_CORE
812d28f6df1SGeoff Levand	bool "kexec system call"
813d28f6df1SGeoff Levand	---help---
814d28f6df1SGeoff Levand	  kexec is a system call that implements the ability to shutdown your
815d28f6df1SGeoff Levand	  current kernel, and to start another kernel.  It is like a reboot
816d28f6df1SGeoff Levand	  but it is independent of the system firmware.   And like a reboot
817d28f6df1SGeoff Levand	  you can start any kernel with it, not just Linux.
818d28f6df1SGeoff Levand
819e62aaeacSAKASHI Takahiroconfig CRASH_DUMP
820e62aaeacSAKASHI Takahiro	bool "Build kdump crash kernel"
821e62aaeacSAKASHI Takahiro	help
822e62aaeacSAKASHI Takahiro	  Generate crash dump after being started by kexec. This should
823e62aaeacSAKASHI Takahiro	  be normally only set in special crash dump kernels which are
824e62aaeacSAKASHI Takahiro	  loaded in the main kernel with kexec-tools into a specially
825e62aaeacSAKASHI Takahiro	  reserved region and then later executed after a crash by
826e62aaeacSAKASHI Takahiro	  kdump/kexec.
827e62aaeacSAKASHI Takahiro
828e62aaeacSAKASHI Takahiro	  For more details see Documentation/kdump/kdump.txt
829e62aaeacSAKASHI Takahiro
830aa42aa13SStefano Stabelliniconfig XEN_DOM0
831aa42aa13SStefano Stabellini	def_bool y
832aa42aa13SStefano Stabellini	depends on XEN
833aa42aa13SStefano Stabellini
834aa42aa13SStefano Stabelliniconfig XEN
835c2ba1f7dSJulien Grall	bool "Xen guest support on ARM64"
836aa42aa13SStefano Stabellini	depends on ARM64 && OF
83783862ccfSStefano Stabellini	select SWIOTLB_XEN
838dfd57bc3SStefano Stabellini	select PARAVIRT
839aa42aa13SStefano Stabellini	help
840aa42aa13SStefano Stabellini	  Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64.
841aa42aa13SStefano Stabellini
842d03bb145SSteve Capperconfig FORCE_MAX_ZONEORDER
843d03bb145SSteve Capper	int
844d03bb145SSteve Capper	default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
84544eaacf1SSuzuki K. Poulose	default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE)
846d03bb145SSteve Capper	default "11"
84744eaacf1SSuzuki K. Poulose	help
84844eaacf1SSuzuki K. Poulose	  The kernel memory allocator divides physically contiguous memory
84944eaacf1SSuzuki K. Poulose	  blocks into "zones", where each zone is a power of two number of
85044eaacf1SSuzuki K. Poulose	  pages.  This option selects the largest power of two that the kernel
85144eaacf1SSuzuki K. Poulose	  keeps in the memory allocator.  If you need to allocate very large
85244eaacf1SSuzuki K. Poulose	  blocks of physically contiguous memory, then you may need to
85344eaacf1SSuzuki K. Poulose	  increase this value.
85444eaacf1SSuzuki K. Poulose
85544eaacf1SSuzuki K. Poulose	  This config option is actually maximum order plus one. For example,
85644eaacf1SSuzuki K. Poulose	  a value of 11 means that the largest free memory block is 2^10 pages.
85744eaacf1SSuzuki K. Poulose
85844eaacf1SSuzuki K. Poulose	  We make sure that we can allocate upto a HugePage size for each configuration.
85944eaacf1SSuzuki K. Poulose	  Hence we have :
86044eaacf1SSuzuki K. Poulose		MAX_ORDER = (PMD_SHIFT - PAGE_SHIFT) + 1 => PAGE_SHIFT - 2
86144eaacf1SSuzuki K. Poulose
86244eaacf1SSuzuki K. Poulose	  However for 4K, we choose a higher default value, 11 as opposed to 10, giving us
86344eaacf1SSuzuki K. Poulose	  4M allocations matching the default size used by generic code.
864d03bb145SSteve Capper
865084eb77cSWill Deaconconfig UNMAP_KERNEL_AT_EL0
866*0617052dSWill Deacon	bool "Unmap kernel when running in userspace (aka \"KAISER\")" if EXPERT
867084eb77cSWill Deacon	default y
868084eb77cSWill Deacon	help
869*0617052dSWill Deacon	  Speculation attacks against some high-performance processors can
870*0617052dSWill Deacon	  be used to bypass MMU permission checks and leak kernel data to
871*0617052dSWill Deacon	  userspace. This can be defended against by unmapping the kernel
872*0617052dSWill Deacon	  when running in userspace, mapping it back in on exception entry
873*0617052dSWill Deacon	  via a trampoline page in the vector table.
874084eb77cSWill Deacon
875084eb77cSWill Deacon	  If unsure, say Y.
876084eb77cSWill Deacon
8771b907f46SWill Deaconmenuconfig ARMV8_DEPRECATED
8781b907f46SWill Deacon	bool "Emulate deprecated/obsolete ARMv8 instructions"
8791b907f46SWill Deacon	depends on COMPAT
8806cfa7cc4SDave Martin	depends on SYSCTL
8811b907f46SWill Deacon	help
8821b907f46SWill Deacon	  Legacy software support may require certain instructions
8831b907f46SWill Deacon	  that have been deprecated or obsoleted in the architecture.
8841b907f46SWill Deacon
8851b907f46SWill Deacon	  Enable this config to enable selective emulation of these
8861b907f46SWill Deacon	  features.
8871b907f46SWill Deacon
8881b907f46SWill Deacon	  If unsure, say Y
8891b907f46SWill Deacon
8901b907f46SWill Deaconif ARMV8_DEPRECATED
8911b907f46SWill Deacon
8921b907f46SWill Deaconconfig SWP_EMULATION
8931b907f46SWill Deacon	bool "Emulate SWP/SWPB instructions"
8941b907f46SWill Deacon	help
8951b907f46SWill Deacon	  ARMv8 obsoletes the use of A32 SWP/SWPB instructions such that
8961b907f46SWill Deacon	  they are always undefined. Say Y here to enable software
8971b907f46SWill Deacon	  emulation of these instructions for userspace using LDXR/STXR.
8981b907f46SWill Deacon
8991b907f46SWill Deacon	  In some older versions of glibc [<=2.8] SWP is used during futex
9001b907f46SWill Deacon	  trylock() operations with the assumption that the code will not
9011b907f46SWill Deacon	  be preempted. This invalid assumption may be more likely to fail
9021b907f46SWill Deacon	  with SWP emulation enabled, leading to deadlock of the user
9031b907f46SWill Deacon	  application.
9041b907f46SWill Deacon
9051b907f46SWill Deacon	  NOTE: when accessing uncached shared regions, LDXR/STXR rely
9061b907f46SWill Deacon	  on an external transaction monitoring block called a global
9071b907f46SWill Deacon	  monitor to maintain update atomicity. If your system does not
9081b907f46SWill Deacon	  implement a global monitor, this option can cause programs that
9091b907f46SWill Deacon	  perform SWP operations to uncached memory to deadlock.
9101b907f46SWill Deacon
9111b907f46SWill Deacon	  If unsure, say Y
9121b907f46SWill Deacon
9131b907f46SWill Deaconconfig CP15_BARRIER_EMULATION
9141b907f46SWill Deacon	bool "Emulate CP15 Barrier instructions"
9151b907f46SWill Deacon	help
9161b907f46SWill Deacon	  The CP15 barrier instructions - CP15ISB, CP15DSB, and
9171b907f46SWill Deacon	  CP15DMB - are deprecated in ARMv8 (and ARMv7). It is
9181b907f46SWill Deacon	  strongly recommended to use the ISB, DSB, and DMB
9191b907f46SWill Deacon	  instructions instead.
9201b907f46SWill Deacon
9211b907f46SWill Deacon	  Say Y here to enable software emulation of these
9221b907f46SWill Deacon	  instructions for AArch32 userspace code. When this option is
9231b907f46SWill Deacon	  enabled, CP15 barrier usage is traced which can help
9241b907f46SWill Deacon	  identify software that needs updating.
9251b907f46SWill Deacon
9261b907f46SWill Deacon	  If unsure, say Y
9271b907f46SWill Deacon
9282d888f48SSuzuki K. Pouloseconfig SETEND_EMULATION
9292d888f48SSuzuki K. Poulose	bool "Emulate SETEND instruction"
9302d888f48SSuzuki K. Poulose	help
9312d888f48SSuzuki K. Poulose	  The SETEND instruction alters the data-endianness of the
9322d888f48SSuzuki K. Poulose	  AArch32 EL0, and is deprecated in ARMv8.
9332d888f48SSuzuki K. Poulose
9342d888f48SSuzuki K. Poulose	  Say Y here to enable software emulation of the instruction
9352d888f48SSuzuki K. Poulose	  for AArch32 userspace code.
9362d888f48SSuzuki K. Poulose
9372d888f48SSuzuki K. Poulose	  Note: All the cpus on the system must have mixed endian support at EL0
9382d888f48SSuzuki K. Poulose	  for this feature to be enabled. If a new CPU - which doesn't support mixed
9392d888f48SSuzuki K. Poulose	  endian - is hotplugged in after this feature has been enabled, there could
9402d888f48SSuzuki K. Poulose	  be unexpected results in the applications.
9412d888f48SSuzuki K. Poulose
9422d888f48SSuzuki K. Poulose	  If unsure, say Y
9431b907f46SWill Deaconendif
9441b907f46SWill Deacon
945ba42822aSCatalin Marinasconfig ARM64_SW_TTBR0_PAN
946ba42822aSCatalin Marinas	bool "Emulate Privileged Access Never using TTBR0_EL1 switching"
947ba42822aSCatalin Marinas	help
948ba42822aSCatalin Marinas	  Enabling this option prevents the kernel from accessing
949ba42822aSCatalin Marinas	  user-space memory directly by pointing TTBR0_EL1 to a reserved
950ba42822aSCatalin Marinas	  zeroed area and reserved ASID. The user access routines
951ba42822aSCatalin Marinas	  restore the valid TTBR0_EL1 temporarily.
952ba42822aSCatalin Marinas
9530e4a0709SWill Deaconmenu "ARMv8.1 architectural features"
9540e4a0709SWill Deacon
9550e4a0709SWill Deaconconfig ARM64_HW_AFDBM
9560e4a0709SWill Deacon	bool "Support for hardware updates of the Access and Dirty page flags"
9570e4a0709SWill Deacon	default y
9580e4a0709SWill Deacon	help
9590e4a0709SWill Deacon	  The ARMv8.1 architecture extensions introduce support for
9600e4a0709SWill Deacon	  hardware updates of the access and dirty information in page
9610e4a0709SWill Deacon	  table entries. When enabled in TCR_EL1 (HA and HD bits) on
9620e4a0709SWill Deacon	  capable processors, accesses to pages with PTE_AF cleared will
9630e4a0709SWill Deacon	  set this bit instead of raising an access flag fault.
9640e4a0709SWill Deacon	  Similarly, writes to read-only pages with the DBM bit set will
9650e4a0709SWill Deacon	  clear the read-only bit (AP[2]) instead of raising a
9660e4a0709SWill Deacon	  permission fault.
9670e4a0709SWill Deacon
9680e4a0709SWill Deacon	  Kernels built with this configuration option enabled continue
9690e4a0709SWill Deacon	  to work on pre-ARMv8.1 hardware and the performance impact is
9700e4a0709SWill Deacon	  minimal. If unsure, say Y.
9710e4a0709SWill Deacon
9720e4a0709SWill Deaconconfig ARM64_PAN
9730e4a0709SWill Deacon	bool "Enable support for Privileged Access Never (PAN)"
9740e4a0709SWill Deacon	default y
9750e4a0709SWill Deacon	help
9760e4a0709SWill Deacon	 Privileged Access Never (PAN; part of the ARMv8.1 Extensions)
9770e4a0709SWill Deacon	 prevents the kernel or hypervisor from accessing user-space (EL0)
9780e4a0709SWill Deacon	 memory directly.
9790e4a0709SWill Deacon
9800e4a0709SWill Deacon	 Choosing this option will cause any unprotected (not using
9810e4a0709SWill Deacon	 copy_to_user et al) memory access to fail with a permission fault.
9820e4a0709SWill Deacon
9830e4a0709SWill Deacon	 The feature is detected at runtime, and will remain as a 'nop'
9840e4a0709SWill Deacon	 instruction if the cpu does not implement the feature.
9850e4a0709SWill Deacon
9860e4a0709SWill Deaconconfig ARM64_LSE_ATOMICS
9870e4a0709SWill Deacon	bool "Atomic instructions"
9880e4a0709SWill Deacon	help
9890e4a0709SWill Deacon	  As part of the Large System Extensions, ARMv8.1 introduces new
9900e4a0709SWill Deacon	  atomic instructions that are designed specifically to scale in
9910e4a0709SWill Deacon	  very large systems.
9920e4a0709SWill Deacon
9930e4a0709SWill Deacon	  Say Y here to make use of these instructions for the in-kernel
9940e4a0709SWill Deacon	  atomic routines. This incurs a small overhead on CPUs that do
9950e4a0709SWill Deacon	  not support these instructions and requires the kernel to be
9960e4a0709SWill Deacon	  built with binutils >= 2.25.
9970e4a0709SWill Deacon
9981f364c8cSMarc Zyngierconfig ARM64_VHE
9991f364c8cSMarc Zyngier	bool "Enable support for Virtualization Host Extensions (VHE)"
10001f364c8cSMarc Zyngier	default y
10011f364c8cSMarc Zyngier	help
10021f364c8cSMarc Zyngier	  Virtualization Host Extensions (VHE) allow the kernel to run
10031f364c8cSMarc Zyngier	  directly at EL2 (instead of EL1) on processors that support
10041f364c8cSMarc Zyngier	  it. This leads to better performance for KVM, as they reduce
10051f364c8cSMarc Zyngier	  the cost of the world switch.
10061f364c8cSMarc Zyngier
10071f364c8cSMarc Zyngier	  Selecting this option allows the VHE feature to be detected
10081f364c8cSMarc Zyngier	  at runtime, and does not affect processors that do not
10091f364c8cSMarc Zyngier	  implement this feature.
10101f364c8cSMarc Zyngier
10110e4a0709SWill Deaconendmenu
10120e4a0709SWill Deacon
1013f993318bSWill Deaconmenu "ARMv8.2 architectural features"
1014f993318bSWill Deacon
101557f4959bSJames Morseconfig ARM64_UAO
101657f4959bSJames Morse	bool "Enable support for User Access Override (UAO)"
101757f4959bSJames Morse	default y
101857f4959bSJames Morse	help
101957f4959bSJames Morse	  User Access Override (UAO; part of the ARMv8.2 Extensions)
102057f4959bSJames Morse	  causes the 'unprivileged' variant of the load/store instructions to
102183fc61a5SMasanari Iida	  be overridden to be privileged.
102257f4959bSJames Morse
102357f4959bSJames Morse	  This option changes get_user() and friends to use the 'unprivileged'
102457f4959bSJames Morse	  variant of the load/store instructions. This ensures that user-space
102557f4959bSJames Morse	  really did have access to the supplied memory. When addr_limit is
102657f4959bSJames Morse	  set to kernel memory the UAO bit will be set, allowing privileged
102757f4959bSJames Morse	  access to kernel memory.
102857f4959bSJames Morse
102957f4959bSJames Morse	  Choosing this option will cause copy_to_user() et al to use user-space
103057f4959bSJames Morse	  memory permissions.
103157f4959bSJames Morse
103257f4959bSJames Morse	  The feature is detected at runtime, the kernel will use the
103357f4959bSJames Morse	  regular load/store instructions if the cpu does not implement the
103457f4959bSJames Morse	  feature.
103557f4959bSJames Morse
1036d50e071fSRobin Murphyconfig ARM64_PMEM
1037d50e071fSRobin Murphy	bool "Enable support for persistent memory"
1038d50e071fSRobin Murphy	select ARCH_HAS_PMEM_API
10395d7bdeb1SRobin Murphy	select ARCH_HAS_UACCESS_FLUSHCACHE
1040d50e071fSRobin Murphy	help
1041d50e071fSRobin Murphy	  Say Y to enable support for the persistent memory API based on the
1042d50e071fSRobin Murphy	  ARMv8.2 DCPoP feature.
1043d50e071fSRobin Murphy
1044d50e071fSRobin Murphy	  The feature is detected at runtime, and the kernel will use DC CVAC
1045d50e071fSRobin Murphy	  operations if DC CVAP is not supported (following the behaviour of
1046d50e071fSRobin Murphy	  DC CVAP itself if the system does not define a point of persistence).
1047d50e071fSRobin Murphy
1048f993318bSWill Deaconendmenu
1049f993318bSWill Deacon
1050ddd25ad1SDave Martinconfig ARM64_SVE
1051ddd25ad1SDave Martin	bool "ARM Scalable Vector Extension support"
1052ddd25ad1SDave Martin	default y
1053ddd25ad1SDave Martin	help
1054ddd25ad1SDave Martin	  The Scalable Vector Extension (SVE) is an extension to the AArch64
1055ddd25ad1SDave Martin	  execution state which complements and extends the SIMD functionality
1056ddd25ad1SDave Martin	  of the base architecture to support much larger vectors and to enable
1057ddd25ad1SDave Martin	  additional vectorisation opportunities.
1058ddd25ad1SDave Martin
1059ddd25ad1SDave Martin	  To enable use of this extension on CPUs that implement it, say Y.
1060ddd25ad1SDave Martin
1061fd045f6cSArd Biesheuvelconfig ARM64_MODULE_CMODEL_LARGE
1062fd045f6cSArd Biesheuvel	bool
1063fd045f6cSArd Biesheuvel
1064fd045f6cSArd Biesheuvelconfig ARM64_MODULE_PLTS
1065fd045f6cSArd Biesheuvel	bool
1066fd045f6cSArd Biesheuvel	select ARM64_MODULE_CMODEL_LARGE
1067fd045f6cSArd Biesheuvel	select HAVE_MOD_ARCH_SPECIFIC
1068fd045f6cSArd Biesheuvel
10691e48ef7fSArd Biesheuvelconfig RELOCATABLE
10701e48ef7fSArd Biesheuvel	bool
10711e48ef7fSArd Biesheuvel	help
10721e48ef7fSArd Biesheuvel	  This builds the kernel as a Position Independent Executable (PIE),
10731e48ef7fSArd Biesheuvel	  which retains all relocation metadata required to relocate the
10741e48ef7fSArd Biesheuvel	  kernel binary at runtime to a different virtual address than the
10751e48ef7fSArd Biesheuvel	  address it was linked at.
10761e48ef7fSArd Biesheuvel	  Since AArch64 uses the RELA relocation format, this requires a
10771e48ef7fSArd Biesheuvel	  relocation pass at runtime even if the kernel is loaded at the
10781e48ef7fSArd Biesheuvel	  same address it was linked at.
10791e48ef7fSArd Biesheuvel
1080f80fb3a3SArd Biesheuvelconfig RANDOMIZE_BASE
1081f80fb3a3SArd Biesheuvel	bool "Randomize the address of the kernel image"
1082b9c220b5SCatalin Marinas	select ARM64_MODULE_PLTS if MODULES
1083f80fb3a3SArd Biesheuvel	select RELOCATABLE
1084f80fb3a3SArd Biesheuvel	help
1085f80fb3a3SArd Biesheuvel	  Randomizes the virtual address at which the kernel image is
1086f80fb3a3SArd Biesheuvel	  loaded, as a security feature that deters exploit attempts
1087f80fb3a3SArd Biesheuvel	  relying on knowledge of the location of kernel internals.
1088f80fb3a3SArd Biesheuvel
1089f80fb3a3SArd Biesheuvel	  It is the bootloader's job to provide entropy, by passing a
1090f80fb3a3SArd Biesheuvel	  random u64 value in /chosen/kaslr-seed at kernel entry.
1091f80fb3a3SArd Biesheuvel
10922b5fe07aSArd Biesheuvel	  When booting via the UEFI stub, it will invoke the firmware's
10932b5fe07aSArd Biesheuvel	  EFI_RNG_PROTOCOL implementation (if available) to supply entropy
10942b5fe07aSArd Biesheuvel	  to the kernel proper. In addition, it will randomise the physical
10952b5fe07aSArd Biesheuvel	  location of the kernel Image as well.
10962b5fe07aSArd Biesheuvel
1097f80fb3a3SArd Biesheuvel	  If unsure, say N.
1098f80fb3a3SArd Biesheuvel
1099f80fb3a3SArd Biesheuvelconfig RANDOMIZE_MODULE_REGION_FULL
1100f80fb3a3SArd Biesheuvel	bool "Randomize the module region independently from the core kernel"
1101e71a4e1bSArd Biesheuvel	depends on RANDOMIZE_BASE
1102f80fb3a3SArd Biesheuvel	default y
1103f80fb3a3SArd Biesheuvel	help
1104f80fb3a3SArd Biesheuvel	  Randomizes the location of the module region without considering the
1105f80fb3a3SArd Biesheuvel	  location of the core kernel. This way, it is impossible for modules
1106f80fb3a3SArd Biesheuvel	  to leak information about the location of core kernel data structures
1107f80fb3a3SArd Biesheuvel	  but it does imply that function calls between modules and the core
1108f80fb3a3SArd Biesheuvel	  kernel will need to be resolved via veneers in the module PLT.
1109f80fb3a3SArd Biesheuvel
1110f80fb3a3SArd Biesheuvel	  When this option is not set, the module region will be randomized over
1111f80fb3a3SArd Biesheuvel	  a limited range that contains the [_stext, _etext] interval of the
1112f80fb3a3SArd Biesheuvel	  core kernel, so branch relocations are always in range.
1113f80fb3a3SArd Biesheuvel
11148c2c3df3SCatalin Marinasendmenu
11158c2c3df3SCatalin Marinas
11168c2c3df3SCatalin Marinasmenu "Boot options"
11178c2c3df3SCatalin Marinas
11185e89c55eSLorenzo Pieralisiconfig ARM64_ACPI_PARKING_PROTOCOL
11195e89c55eSLorenzo Pieralisi	bool "Enable support for the ARM64 ACPI parking protocol"
11205e89c55eSLorenzo Pieralisi	depends on ACPI
11215e89c55eSLorenzo Pieralisi	help
11225e89c55eSLorenzo Pieralisi	  Enable support for the ARM64 ACPI parking protocol. If disabled
11235e89c55eSLorenzo Pieralisi	  the kernel will not allow booting through the ARM64 ACPI parking
11245e89c55eSLorenzo Pieralisi	  protocol even if the corresponding data is present in the ACPI
11255e89c55eSLorenzo Pieralisi	  MADT table.
11265e89c55eSLorenzo Pieralisi
11278c2c3df3SCatalin Marinasconfig CMDLINE
11288c2c3df3SCatalin Marinas	string "Default kernel command string"
11298c2c3df3SCatalin Marinas	default ""
11308c2c3df3SCatalin Marinas	help
11318c2c3df3SCatalin Marinas	  Provide a set of default command-line options at build time by
11328c2c3df3SCatalin Marinas	  entering them here. As a minimum, you should specify the the
11338c2c3df3SCatalin Marinas	  root device (e.g. root=/dev/nfs).
11348c2c3df3SCatalin Marinas
11358c2c3df3SCatalin Marinasconfig CMDLINE_FORCE
11368c2c3df3SCatalin Marinas	bool "Always use the default kernel command string"
11378c2c3df3SCatalin Marinas	help
11388c2c3df3SCatalin Marinas	  Always use the default kernel command string, even if the boot
11398c2c3df3SCatalin Marinas	  loader passes other arguments to the kernel.
11408c2c3df3SCatalin Marinas	  This is useful if you cannot or don't want to change the
11418c2c3df3SCatalin Marinas	  command-line options your boot loader passes to the kernel.
11428c2c3df3SCatalin Marinas
1143f4f75ad5SArd Biesheuvelconfig EFI_STUB
1144f4f75ad5SArd Biesheuvel	bool
1145f4f75ad5SArd Biesheuvel
1146f84d0275SMark Salterconfig EFI
1147f84d0275SMark Salter	bool "UEFI runtime support"
1148f84d0275SMark Salter	depends on OF && !CPU_BIG_ENDIAN
1149b472db6cSDave Martin	depends on KERNEL_MODE_NEON
1150f84d0275SMark Salter	select LIBFDT
1151f84d0275SMark Salter	select UCS2_STRING
1152f84d0275SMark Salter	select EFI_PARAMS_FROM_FDT
1153e15dd494SArd Biesheuvel	select EFI_RUNTIME_WRAPPERS
1154f4f75ad5SArd Biesheuvel	select EFI_STUB
1155f4f75ad5SArd Biesheuvel	select EFI_ARMSTUB
1156f84d0275SMark Salter	default y
1157f84d0275SMark Salter	help
1158f84d0275SMark Salter	  This option provides support for runtime services provided
1159f84d0275SMark Salter	  by UEFI firmware (such as non-volatile variables, realtime
11603c7f2550SMark Salter          clock, and platform reset). A UEFI stub is also provided to
11613c7f2550SMark Salter	  allow the kernel to be booted as an EFI application. This
11623c7f2550SMark Salter	  is only useful on systems that have UEFI firmware.
1163f84d0275SMark Salter
1164d1ae8c00SYi Liconfig DMI
1165d1ae8c00SYi Li	bool "Enable support for SMBIOS (DMI) tables"
1166d1ae8c00SYi Li	depends on EFI
1167d1ae8c00SYi Li	default y
1168d1ae8c00SYi Li	help
1169d1ae8c00SYi Li	  This enables SMBIOS/DMI feature for systems.
1170d1ae8c00SYi Li
1171d1ae8c00SYi Li	  This option is only useful on systems that have UEFI firmware.
1172d1ae8c00SYi Li	  However, even with this option, the resultant kernel should
1173d1ae8c00SYi Li	  continue to boot on existing non-UEFI platforms.
1174d1ae8c00SYi Li
11758c2c3df3SCatalin Marinasendmenu
11768c2c3df3SCatalin Marinas
11778c2c3df3SCatalin Marinasmenu "Userspace binary formats"
11788c2c3df3SCatalin Marinas
11798c2c3df3SCatalin Marinassource "fs/Kconfig.binfmt"
11808c2c3df3SCatalin Marinas
11818c2c3df3SCatalin Marinasconfig COMPAT
11828c2c3df3SCatalin Marinas	bool "Kernel support for 32-bit EL0"
1183755e70b7SSuzuki K. Poulose	depends on ARM64_4K_PAGES || EXPERT
11842e449048SKefeng Wang	select COMPAT_BINFMT_ELF if BINFMT_ELF
1185af1839ebSCatalin Marinas	select HAVE_UID16
118684b9e9b4SAl Viro	select OLD_SIGSUSPEND3
118751682036SAl Viro	select COMPAT_OLD_SIGACTION
11888c2c3df3SCatalin Marinas	help
11898c2c3df3SCatalin Marinas	  This option enables support for a 32-bit EL0 running under a 64-bit
11908c2c3df3SCatalin Marinas	  kernel at EL1. AArch32-specific components such as system calls,
11918c2c3df3SCatalin Marinas	  the user helper functions, VFP support and the ptrace interface are
11928c2c3df3SCatalin Marinas	  handled appropriately by the kernel.
11938c2c3df3SCatalin Marinas
119444eaacf1SSuzuki K. Poulose	  If you use a page size other than 4KB (i.e, 16KB or 64KB), please be aware
119544eaacf1SSuzuki K. Poulose	  that you will only be able to execute AArch32 binaries that were compiled
119644eaacf1SSuzuki K. Poulose	  with page size aligned segments.
1197a8fcd8b1SAlexander Graf
11988c2c3df3SCatalin Marinas	  If you want to execute 32-bit userspace applications, say Y.
11998c2c3df3SCatalin Marinas
12008c2c3df3SCatalin Marinasconfig SYSVIPC_COMPAT
12018c2c3df3SCatalin Marinas	def_bool y
12028c2c3df3SCatalin Marinas	depends on COMPAT && SYSVIPC
12038c2c3df3SCatalin Marinas
12048c2c3df3SCatalin Marinasendmenu
12058c2c3df3SCatalin Marinas
1206166936baSLorenzo Pieralisimenu "Power management options"
1207166936baSLorenzo Pieralisi
1208166936baSLorenzo Pieralisisource "kernel/power/Kconfig"
1209166936baSLorenzo Pieralisi
121082869ac5SJames Morseconfig ARCH_HIBERNATION_POSSIBLE
121182869ac5SJames Morse	def_bool y
121282869ac5SJames Morse	depends on CPU_PM
121382869ac5SJames Morse
121482869ac5SJames Morseconfig ARCH_HIBERNATION_HEADER
121582869ac5SJames Morse	def_bool y
121682869ac5SJames Morse	depends on HIBERNATION
121782869ac5SJames Morse
1218166936baSLorenzo Pieralisiconfig ARCH_SUSPEND_POSSIBLE
1219166936baSLorenzo Pieralisi	def_bool y
1220166936baSLorenzo Pieralisi
1221166936baSLorenzo Pieralisiendmenu
1222166936baSLorenzo Pieralisi
12231307220dSLorenzo Pieralisimenu "CPU Power Management"
12241307220dSLorenzo Pieralisi
12251307220dSLorenzo Pieralisisource "drivers/cpuidle/Kconfig"
12261307220dSLorenzo Pieralisi
122752e7e816SRob Herringsource "drivers/cpufreq/Kconfig"
122852e7e816SRob Herring
122952e7e816SRob Herringendmenu
123052e7e816SRob Herring
12318c2c3df3SCatalin Marinassource "net/Kconfig"
12328c2c3df3SCatalin Marinas
12338c2c3df3SCatalin Marinassource "drivers/Kconfig"
12348c2c3df3SCatalin Marinas
1235f84d0275SMark Saltersource "drivers/firmware/Kconfig"
1236f84d0275SMark Salter
1237b6a02173SGraeme Gregorysource "drivers/acpi/Kconfig"
1238b6a02173SGraeme Gregory
12398c2c3df3SCatalin Marinassource "fs/Kconfig"
12408c2c3df3SCatalin Marinas
1241c3eb5b14SMarc Zyngiersource "arch/arm64/kvm/Kconfig"
1242c3eb5b14SMarc Zyngier
12438c2c3df3SCatalin Marinassource "arch/arm64/Kconfig.debug"
12448c2c3df3SCatalin Marinas
12458c2c3df3SCatalin Marinassource "security/Kconfig"
12468c2c3df3SCatalin Marinas
12478c2c3df3SCatalin Marinassource "crypto/Kconfig"
12482c98833aSArd Biesheuvelif CRYPTO
12492c98833aSArd Biesheuvelsource "arch/arm64/crypto/Kconfig"
12502c98833aSArd Biesheuvelendif
12518c2c3df3SCatalin Marinas
12528c2c3df3SCatalin Marinassource "lib/Kconfig"
1253