blob: 0b3aa2a894a7db7c1298a8eaab5d161016d9004b [file] [log] [blame]
Catalin Marinas8c2c3df2012-04-20 14:45:54 +01001config ARM64
2 def_bool y
Suthikulpanit, Suraveeb6197b92015-06-10 11:08:53 -05003 select ACPI_CCA_REQUIRED if ACPI
Lorenzo Pieralisid8f4f162015-03-24 17:58:51 +00004 select ACPI_GENERIC_GSI if ACPI
Fu Wei5f1ae4e2017-04-01 01:51:01 +08005 select ACPI_GTDT if ACPI
Lorenzo Pieralisic6bb8f892017-06-14 17:37:12 +01006 select ACPI_IORT if ACPI
Al Stone6933de02015-03-24 14:02:51 +00007 select ACPI_REDUCED_HARDWARE_ONLY if ACPI
Tomasz Nowicki0cb07862016-06-10 21:55:19 +02008 select ACPI_MCFG if ACPI
Aleksey Makarov888125a2016-09-27 23:54:14 +03009 select ACPI_SPCR_TABLE if ACPI
Jeremy Linton0ce82232018-05-11 18:58:01 -050010 select ACPI_PPTT if ACPI
Scott Wood1d8f51d2016-09-22 03:35:18 -050011 select ARCH_CLOCKSOURCE_DATA
Laura Abbottec6d06e2017-01-10 13:35:50 -080012 select ARCH_HAS_DEBUG_VIRTUAL
Dan Williams21266be2015-11-19 18:19:29 -080013 select ARCH_HAS_DEVMEM_IS_ALLOWED
Christoph Hellwig886643b2018-10-08 09:12:01 +020014 select ARCH_HAS_DMA_COHERENT_TO_PFN
15 select ARCH_HAS_DMA_MMAP_PGPROT
Jon Masters38b04a72016-06-20 13:56:13 +030016 select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI
Kees Cook2b68f6c2015-04-14 15:48:00 -070017 select ARCH_HAS_ELF_RANDOMIZE
Robin Murphye75bef22018-04-24 16:25:47 +010018 select ARCH_HAS_FAST_MULTIPLIER
Daniel Micay6974f0c2017-07-12 14:36:10 -070019 select ARCH_HAS_FORTIFY_SOURCE
Riku Voipio957e3fa2014-12-12 16:57:44 -080020 select ARCH_HAS_GCOV_PROFILE_ALL
Aneesh Kumar K.Ve1073d12017-07-06 15:39:17 -070021 select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA
Alexander Potapenko5e4c7542016-06-16 18:39:52 +020022 select ARCH_HAS_KCOV
Mathieu Desnoyersf1e3a122018-01-29 15:20:19 -050023 select ARCH_HAS_MEMBARRIER_SYNC_CORE
Laurent Dufour3010a5e2018-06-07 17:06:08 -070024 select ARCH_HAS_PTE_SPECIAL
Daniel Borkmannd2852a22017-02-21 16:09:33 +010025 select ARCH_HAS_SET_MEMORY
Laura Abbott308c09f2014-08-08 14:23:25 -070026 select ARCH_HAS_SG_CHAIN
Laura Abbottad21fc42017-02-06 16:31:57 -080027 select ARCH_HAS_STRICT_KERNEL_RWX
28 select ARCH_HAS_STRICT_MODULE_RWX
Christoph Hellwig886643b2018-10-08 09:12:01 +020029 select ARCH_HAS_SYNC_DMA_FOR_DEVICE
30 select ARCH_HAS_SYNC_DMA_FOR_CPU
Mark Rutland4378a7d2018-07-11 14:56:56 +010031 select ARCH_HAS_SYSCALL_WRAPPER
Lorenzo Pieralisi1f850082013-09-04 10:55:17 +010032 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
Stephen Boyd396a5d42017-09-27 08:51:30 -070033 select ARCH_HAVE_NMI_SAFE_CMPXCHG
Will Deacon087133a2017-10-12 13:20:50 +010034 select ARCH_INLINE_READ_LOCK if !PREEMPT
35 select ARCH_INLINE_READ_LOCK_BH if !PREEMPT
36 select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPT
37 select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPT
38 select ARCH_INLINE_READ_UNLOCK if !PREEMPT
39 select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPT
40 select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPT
41 select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPT
42 select ARCH_INLINE_WRITE_LOCK if !PREEMPT
43 select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPT
44 select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPT
45 select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPT
46 select ARCH_INLINE_WRITE_UNLOCK if !PREEMPT
47 select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPT
48 select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPT
49 select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPT
Will Deacon5d168962018-03-13 21:17:01 +000050 select ARCH_INLINE_SPIN_TRYLOCK if !PREEMPT
51 select ARCH_INLINE_SPIN_TRYLOCK_BH if !PREEMPT
52 select ARCH_INLINE_SPIN_LOCK if !PREEMPT
53 select ARCH_INLINE_SPIN_LOCK_BH if !PREEMPT
54 select ARCH_INLINE_SPIN_LOCK_IRQ if !PREEMPT
55 select ARCH_INLINE_SPIN_LOCK_IRQSAVE if !PREEMPT
56 select ARCH_INLINE_SPIN_UNLOCK if !PREEMPT
57 select ARCH_INLINE_SPIN_UNLOCK_BH if !PREEMPT
58 select ARCH_INLINE_SPIN_UNLOCK_IRQ if !PREEMPT
59 select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE if !PREEMPT
Sudeep Hollac63c8702014-05-09 10:33:01 +010060 select ARCH_USE_CMPXCHG_LOCKREF
Will Deacon087133a2017-10-12 13:20:50 +010061 select ARCH_USE_QUEUED_RWLOCKS
Will Deaconc1109042018-03-13 20:45:45 +000062 select ARCH_USE_QUEUED_SPINLOCKS
Jonathan (Zhixiong) Zhangc484f252017-06-08 18:25:29 +010063 select ARCH_SUPPORTS_MEMORY_FAILURE
Peter Zijlstra4badad32014-06-06 19:53:16 +020064 select ARCH_SUPPORTS_ATOMIC_RMW
Masahiro Yamadaf3a53f72018-05-17 15:17:10 +090065 select ARCH_SUPPORTS_INT128 if GCC_VERSION >= 50000 || CC_IS_CLANG
Ganapatrao Kulkarni56166232016-04-08 15:50:28 -070066 select ARCH_SUPPORTS_NUMA_BALANCING
Will Deacon6212a512012-11-07 14:16:28 +000067 select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
Catalin Marinasb6f35982013-01-29 18:25:41 +000068 select ARCH_WANT_FRAME_POINTERS
Yang Shif0b7f8a2016-02-05 15:50:18 -080069 select ARCH_HAS_UBSAN_SANITIZE_ALL
Catalin Marinas25c92a32012-12-18 15:26:13 +000070 select ARM_AMBA
Mark Rutland1aee5d72012-11-20 10:06:00 +000071 select ARM_ARCH_TIMER
Catalin Marinasc4188ed2013-01-14 12:39:31 +000072 select ARM_GIC
AKASHI Takahiro875cbf32014-07-04 08:28:30 +010073 select AUDIT_ARCH_COMPAT_GENERIC
Arnd Bergmann3ee803642016-06-15 15:47:33 -050074 select ARM_GIC_V2M if PCI
Marc Zyngier021f6532014-06-30 16:01:31 +010075 select ARM_GIC_V3
Arnd Bergmann3ee803642016-06-15 15:47:33 -050076 select ARM_GIC_V3_ITS if PCI
Mark Rutlandbff607922015-07-31 15:46:16 +010077 select ARM_PSCI_FW
Will Deaconadace892013-05-08 17:29:24 +010078 select BUILDTIME_EXTABLE_SORT
Catalin Marinasdb2789b2012-12-18 15:27:25 +000079 select CLONE_BACKWARDS
Deepak Saxena7ca2ef32012-09-22 10:33:36 -070080 select COMMON_CLK
Lorenzo Pieralisi166936b2013-11-07 18:37:14 +000081 select CPU_PM if (SUSPEND || CPU_IDLE)
Ard Biesheuvel7481cdd2018-08-27 13:02:44 +020082 select CRC32
Will Deacon7bc13fd2013-11-06 19:32:13 +000083 select DCACHE_WORD_ACCESS
Christoph Hellwig0d8488a2017-12-24 13:53:50 +010084 select DMA_DIRECT_OPS
Catalin Marinasef375662015-07-07 17:15:39 +010085 select EDAC_SUPPORT
Yang Shi2f34f172015-11-09 10:09:55 -080086 select FRAME_POINTER
Laura Abbottd4932f92014-10-09 15:26:44 -070087 select GENERIC_ALLOCATOR
Juri Lelli2ef7a292017-05-31 17:59:28 +010088 select GENERIC_ARCH_TOPOLOGY
Catalin Marinas8c2c3df2012-04-20 14:45:54 +010089 select GENERIC_CLOCKEVENTS
Will Deacon4b3dc962015-05-29 18:28:44 +010090 select GENERIC_CLOCKEVENTS_BROADCAST
Ard Biesheuvel3be1a5c2014-03-04 01:10:04 +000091 select GENERIC_CPU_AUTOPROBE
Mark Salterbf4b5582014-04-07 15:39:52 -070092 select GENERIC_EARLY_IOREMAP
Leo Yan2314ee42015-08-21 04:40:22 +010093 select GENERIC_IDLE_POLL_SETUP
Palmer Dabbelt78ae2e12018-06-22 10:01:24 -070094 select GENERIC_IRQ_MULTI_HANDLER
Catalin Marinas8c2c3df2012-04-20 14:45:54 +010095 select GENERIC_IRQ_PROBE
96 select GENERIC_IRQ_SHOW
Sudeep Holla6544e672015-04-22 18:16:33 +010097 select GENERIC_IRQ_SHOW_LEVEL
Arnd Bergmanncb61f672014-11-19 14:09:07 +010098 select GENERIC_PCI_IOMAP
Stephen Boyd65cd4f62013-07-18 16:21:18 -070099 select GENERIC_SCHED_CLOCK
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100100 select GENERIC_SMP_IDLE_THREAD
Will Deacon12a0ef72013-11-06 17:20:22 +0000101 select GENERIC_STRNCPY_FROM_USER
102 select GENERIC_STRNLEN_USER
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100103 select GENERIC_TIME_VSYSCALL
Marc Zyngiera1ddc742014-08-26 11:03:17 +0100104 select HANDLE_DOMAIN_IRQ
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100105 select HARDIRQS_SW_RESEND
Tomasz Nowicki9f9a35a2016-12-01 21:51:12 +0800106 select HAVE_ACPI_APEI if (ACPI && EFI)
Steve Capper5284e1b2014-10-24 13:22:20 +0100107 select HAVE_ALIGNED_STRUCT_PAGE if SLUB
AKASHI Takahiro875cbf32014-07-04 08:28:30 +0100108 select HAVE_ARCH_AUDITSYSCALL
Yalin Wang8e7a4ce2014-11-03 03:02:23 +0100109 select HAVE_ARCH_BITREVERSE
Ard Biesheuvel324420b2016-02-16 13:52:35 +0100110 select HAVE_ARCH_HUGE_VMAP
Jiang Liu9732caf2014-01-07 22:17:13 +0800111 select HAVE_ARCH_JUMP_LABEL
Ard Biesheuvelc2961462018-09-18 23:51:38 -0700112 select HAVE_ARCH_JUMP_LABEL_RELATIVE
Will Deacone17d8022017-11-15 17:36:40 -0800113 select HAVE_ARCH_KASAN if !(ARM64_16K_PAGES && ARM64_VA_BITS_48)
Vijaya Kumar K95292472014-01-28 11:20:22 +0000114 select HAVE_ARCH_KGDB
Daniel Cashman8f0d3aa2016-01-14 15:20:01 -0800115 select HAVE_ARCH_MMAP_RND_BITS
116 select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
Ard Biesheuvel271ca782018-08-21 21:56:00 -0700117 select HAVE_ARCH_PREL32_RELOCATIONS
AKASHI Takahiroa1ae65b2014-11-28 05:26:39 +0000118 select HAVE_ARCH_SECCOMP_FILTER
Laura Abbott0b3e3362018-07-20 14:41:54 -0700119 select HAVE_ARCH_STACKLEAK
Kees Cook9e8084d2017-08-16 14:05:09 -0700120 select HAVE_ARCH_THREAD_STRUCT_WHITELIST
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100121 select HAVE_ARCH_TRACEHOOK
Yang Shi8ee70872016-04-18 11:16:14 -0700122 select HAVE_ARCH_TRANSPARENT_HUGEPAGE
Mark Rutlande3067862017-07-21 14:25:33 +0100123 select HAVE_ARCH_VMAP_STACK
Yang Shi8ee70872016-04-18 11:16:14 -0700124 select HAVE_ARM_SMCCC
Daniel Borkmann60777762016-05-13 19:08:28 +0200125 select HAVE_EBPF_JIT
AKASHI Takahiroaf64d2a2014-04-30 10:54:32 +0100126 select HAVE_C_RECORDMCOUNT
Steve Capper5284e1b2014-10-24 13:22:20 +0100127 select HAVE_CMPXCHG_DOUBLE
Will Deacon95eff6b2015-05-29 14:57:47 +0100128 select HAVE_CMPXCHG_LOCAL
Yang Shi8ee70872016-04-18 11:16:14 -0700129 select HAVE_CONTEXT_TRACKING
Catalin Marinas9b2a60c2012-10-08 16:28:13 -0700130 select HAVE_DEBUG_BUGVERBOSE
Catalin Marinasb69ec422012-10-08 16:28:11 -0700131 select HAVE_DEBUG_KMEMLEAK
Laura Abbott6ac21042013-12-12 19:28:33 +0000132 select HAVE_DMA_CONTIGUOUS
AKASHI Takahirobd7d38d2014-04-30 10:54:34 +0100133 select HAVE_DYNAMIC_FTRACE
Will Deacon50afc332013-12-16 17:50:08 +0000134 select HAVE_EFFICIENT_UNALIGNED_ACCESS
AKASHI Takahiroaf64d2a2014-04-30 10:54:32 +0100135 select HAVE_FTRACE_MCOUNT_RECORD
AKASHI Takahiro819e50e2014-04-30 18:54:33 +0900136 select HAVE_FUNCTION_TRACER
137 select HAVE_FUNCTION_GRAPH_TRACER
Emese Revfy6b90bd42016-05-24 00:09:38 +0200138 select HAVE_GCC_PLUGINS
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100139 select HAVE_GENERIC_DMA_COHERENT
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100140 select HAVE_HW_BREAKPOINT if PERF_EVENTS
Will Deacon24da2082015-11-23 15:12:59 +0000141 select HAVE_IRQ_TIME_ACCOUNTING
Ganapatrao Kulkarni1a2db302016-04-08 15:50:27 -0700142 select HAVE_MEMBLOCK_NODE_MAP if NUMA
Stephen Boyd396a5d42017-09-27 08:51:30 -0700143 select HAVE_NMI
Mark Rutland55834a72014-02-07 17:12:45 +0000144 select HAVE_PATA_PLATFORM
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100145 select HAVE_PERF_EVENTS
Jean Pihet2ee0d7f2014-02-03 19:18:27 +0100146 select HAVE_PERF_REGS
147 select HAVE_PERF_USER_STACK_DUMP
David A. Long0a8ea522016-07-08 12:35:45 -0400148 select HAVE_REGS_AND_STACK_ACCESS_API
Steve Capper5e5f6dc2014-10-09 15:29:23 -0700149 select HAVE_RCU_TABLE_FREE
Will Deaconace8cb72018-08-23 21:16:50 +0100150 select HAVE_RCU_TABLE_INVALIDATE
Will Deacon409d5db2018-06-20 14:46:50 +0100151 select HAVE_RSEQ
Masahiro Yamadad148eac2018-06-14 19:36:45 +0900152 select HAVE_STACKPROTECTOR
AKASHI Takahiro055b1212014-04-30 10:54:36 +0100153 select HAVE_SYSCALL_TRACEPOINTS
Sandeepa Prabhu2dd0e8d2016-07-08 12:35:48 -0400154 select HAVE_KPROBES
Masami Hiramatsucd1ee3b2017-02-06 18:54:33 +0900155 select HAVE_KRETPROBES
Robin Murphy876945d2015-10-01 20:14:00 +0100156 select IOMMU_DMA if IOMMU_SUPPORT
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100157 select IRQ_DOMAIN
Anders Roxelle8557d12015-04-27 22:53:09 +0200158 select IRQ_FORCED_THREADING
Catalin Marinasfea2aca2012-10-16 11:26:57 +0100159 select MODULES_USE_ELF_RELA
Palmer Dabbelt667b24d2018-04-03 21:31:28 -0700160 select MULTI_IRQ_HANDLER
Christoph Hellwigf616ab52018-05-09 06:53:49 +0200161 select NEED_DMA_MAP_STATE
Christoph Hellwig86596f02018-04-05 09:44:52 +0200162 select NEED_SG_DMA_LENGTH
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100163 select OF
164 select OF_EARLY_FLATTREE
Marek Szyprowski9bf14b72014-02-28 14:42:55 +0100165 select OF_RESERVED_MEM
Tomasz Nowicki0cb07862016-06-10 21:55:19 +0200166 select PCI_ECAM if ACPI
Catalin Marinasaa1e8ec2013-02-28 18:14:37 +0000167 select POWER_RESET
168 select POWER_SUPPLY
Kees Cook4adcec12017-09-20 13:49:59 -0700169 select REFCOUNT_FULL
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100170 select SPARSE_IRQ
Christoph Hellwig09230cb2018-04-24 09:00:54 +0200171 select SWIOTLB
Catalin Marinas7ac57a82012-10-08 16:28:16 -0700172 select SYSCTL_EXCEPTION_TRACE
Mark Rutlandc02433d2016-11-03 20:23:13 +0000173 select THREAD_INFO_IN_TASK
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100174 help
175 ARM 64-bit (AArch64) Linux support.
176
177config 64BIT
178 def_bool y
179
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100180config MMU
181 def_bool y
182
Mark Rutland030c4d22016-05-31 15:57:59 +0100183config ARM64_PAGE_SHIFT
184 int
185 default 16 if ARM64_64K_PAGES
186 default 14 if ARM64_16K_PAGES
187 default 12
188
189config ARM64_CONT_SHIFT
190 int
191 default 5 if ARM64_64K_PAGES
192 default 7 if ARM64_16K_PAGES
193 default 4
194
Daniel Cashman8f0d3aa2016-01-14 15:20:01 -0800195config ARCH_MMAP_RND_BITS_MIN
196 default 14 if ARM64_64K_PAGES
197 default 16 if ARM64_16K_PAGES
198 default 18
199
200# max bits determined by the following formula:
201# VA_BITS - PAGE_SHIFT - 3
202config ARCH_MMAP_RND_BITS_MAX
203 default 19 if ARM64_VA_BITS=36
204 default 24 if ARM64_VA_BITS=39
205 default 27 if ARM64_VA_BITS=42
206 default 30 if ARM64_VA_BITS=47
207 default 29 if ARM64_VA_BITS=48 && ARM64_64K_PAGES
208 default 31 if ARM64_VA_BITS=48 && ARM64_16K_PAGES
209 default 33 if ARM64_VA_BITS=48
210 default 14 if ARM64_64K_PAGES
211 default 16 if ARM64_16K_PAGES
212 default 18
213
214config ARCH_MMAP_RND_COMPAT_BITS_MIN
215 default 7 if ARM64_64K_PAGES
216 default 9 if ARM64_16K_PAGES
217 default 11
218
219config ARCH_MMAP_RND_COMPAT_BITS_MAX
220 default 16
221
Uwe Kleine-Königce816fa2014-04-07 15:39:19 -0700222config NO_IOPORT_MAP
Liviu Dudaud1e6dc92014-09-29 15:29:31 +0100223 def_bool y if !PCI
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100224
225config STACKTRACE_SUPPORT
226 def_bool y
227
Jeff Vander Stoepbf0c4e02015-08-18 20:50:10 +0100228config ILLEGAL_POINTER_VALUE
229 hex
230 default 0xdead000000000000
231
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100232config LOCKDEP_SUPPORT
233 def_bool y
234
235config TRACE_IRQFLAGS_SUPPORT
236 def_bool y
237
Will Deaconc209f792014-03-14 17:47:05 +0000238config RWSEM_XCHGADD_ALGORITHM
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100239 def_bool y
240
Dave P Martin9fb74102015-07-24 16:37:48 +0100241config GENERIC_BUG
242 def_bool y
243 depends on BUG
244
245config GENERIC_BUG_RELATIVE_POINTERS
246 def_bool y
247 depends on GENERIC_BUG
248
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100249config GENERIC_HWEIGHT
250 def_bool y
251
252config GENERIC_CSUM
253 def_bool y
254
255config GENERIC_CALIBRATE_DELAY
256 def_bool y
257
Christoph Hellwigad67f5a2017-12-24 13:52:03 +0100258config ZONE_DMA32
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100259 def_bool y
260
Kirill A. Shutemove5855132017-06-06 14:31:20 +0300261config HAVE_GENERIC_GUP
Steve Capper29e56942014-10-09 15:29:25 -0700262 def_bool y
263
Robin Murphy4ab21502018-12-11 18:48:48 +0000264config ARCH_ENABLE_MEMORY_HOTPLUG
265 def_bool y
266
Will Deacon4b3dc962015-05-29 18:28:44 +0100267config SMP
268 def_bool y
269
Ard Biesheuvel4cfb3612013-07-09 14:18:12 +0100270config KERNEL_MODE_NEON
271 def_bool y
272
Rob Herring92cc15f2014-04-18 17:19:59 -0500273config FIX_EARLYCON_MEM
274 def_bool y
275
Kirill A. Shutemov9f25e6a2015-04-14 15:45:39 -0700276config PGTABLE_LEVELS
277 int
Suzuki K. Poulose21539932015-10-19 14:19:38 +0100278 default 2 if ARM64_16K_PAGES && ARM64_VA_BITS_36
Kirill A. Shutemov9f25e6a2015-04-14 15:45:39 -0700279 default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42
Arnd Bergmann4d08d202018-12-11 15:08:10 +0100280 default 3 if ARM64_64K_PAGES && (ARM64_VA_BITS_48 || ARM64_USER_VA_BITS_52)
Kirill A. Shutemov9f25e6a2015-04-14 15:45:39 -0700281 default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39
Suzuki K. Poulose44eaacf2015-10-19 14:19:37 +0100282 default 3 if ARM64_16K_PAGES && ARM64_VA_BITS_47
283 default 4 if !ARM64_64K_PAGES && ARM64_VA_BITS_48
Kirill A. Shutemov9f25e6a2015-04-14 15:45:39 -0700284
Pratyush Anand9842cea2016-11-02 14:40:46 +0530285config ARCH_SUPPORTS_UPROBES
286 def_bool y
287
Ard Biesheuvel8f360942017-06-14 12:43:55 +0200288config ARCH_PROC_KCORE_TEXT
289 def_bool y
290
Olof Johansson6a377492015-07-20 12:09:16 -0700291source "arch/arm64/Kconfig.platforms"
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100292
293menu "Bus support"
294
Liviu Dudaud1e6dc92014-09-29 15:29:31 +0100295config PCI
296 bool "PCI support"
297 help
298 This feature enables support for PCI bus system. If you say Y
299 here, the kernel will include drivers and infrastructure code
300 to support PCI bus devices.
301
302config PCI_DOMAINS
303 def_bool PCI
304
305config PCI_DOMAINS_GENERIC
306 def_bool PCI
307
308config PCI_SYSCALL
309 def_bool PCI
310
311source "drivers/pci/Kconfig"
Liviu Dudaud1e6dc92014-09-29 15:29:31 +0100312
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100313endmenu
314
315menu "Kernel Features"
316
Andre Przywarac0a01b82014-11-14 15:54:12 +0000317menu "ARM errata workarounds via the alternatives framework"
318
Suzuki K Poulosec9460dc2018-11-30 17:18:00 +0000319config ARM64_WORKAROUND_CLEAN_CACHE
320 def_bool n
321
Andre Przywarac0a01b82014-11-14 15:54:12 +0000322config ARM64_ERRATUM_826319
323 bool "Cortex-A53: 826319: System might deadlock if a write cannot complete until read data is accepted"
324 default y
Suzuki K Poulosec9460dc2018-11-30 17:18:00 +0000325 select ARM64_WORKAROUND_CLEAN_CACHE
Andre Przywarac0a01b82014-11-14 15:54:12 +0000326 help
327 This option adds an alternative code sequence to work around ARM
328 erratum 826319 on Cortex-A53 parts up to r0p2 with an AMBA 4 ACE or
329 AXI master interface and an L2 cache.
330
331 If a Cortex-A53 uses an AMBA AXI4 ACE interface to other processors
332 and is unable to accept a certain write via this interface, it will
333 not progress on read data presented on the read data channel and the
334 system can deadlock.
335
336 The workaround promotes data cache clean instructions to
337 data cache clean-and-invalidate.
338 Please note that this does not necessarily enable the workaround,
339 as it depends on the alternative framework, which will only patch
340 the kernel if an affected CPU is detected.
341
342 If unsure, say Y.
343
344config ARM64_ERRATUM_827319
345 bool "Cortex-A53: 827319: Data cache clean instructions might cause overlapping transactions to the interconnect"
346 default y
Suzuki K Poulosec9460dc2018-11-30 17:18:00 +0000347 select ARM64_WORKAROUND_CLEAN_CACHE
Andre Przywarac0a01b82014-11-14 15:54:12 +0000348 help
349 This option adds an alternative code sequence to work around ARM
350 erratum 827319 on Cortex-A53 parts up to r0p2 with an AMBA 5 CHI
351 master interface and an L2 cache.
352
353 Under certain conditions this erratum can cause a clean line eviction
354 to occur at the same time as another transaction to the same address
355 on the AMBA 5 CHI interface, which can cause data corruption if the
356 interconnect reorders the two transactions.
357
358 The workaround promotes data cache clean instructions to
359 data cache clean-and-invalidate.
360 Please note that this does not necessarily enable the workaround,
361 as it depends on the alternative framework, which will only patch
362 the kernel if an affected CPU is detected.
363
364 If unsure, say Y.
365
366config ARM64_ERRATUM_824069
367 bool "Cortex-A53: 824069: Cache line might not be marked as clean after a CleanShared snoop"
368 default y
Suzuki K Poulosec9460dc2018-11-30 17:18:00 +0000369 select ARM64_WORKAROUND_CLEAN_CACHE
Andre Przywarac0a01b82014-11-14 15:54:12 +0000370 help
371 This option adds an alternative code sequence to work around ARM
372 erratum 824069 on Cortex-A53 parts up to r0p2 when it is connected
373 to a coherent interconnect.
374
375 If a Cortex-A53 processor is executing a store or prefetch for
376 write instruction at the same time as a processor in another
377 cluster is executing a cache maintenance operation to the same
378 address, then this erratum might cause a clean cache line to be
379 incorrectly marked as dirty.
380
381 The workaround promotes data cache clean instructions to
382 data cache clean-and-invalidate.
383 Please note that this option does not necessarily enable the
384 workaround, as it depends on the alternative framework, which will
385 only patch the kernel if an affected CPU is detected.
386
387 If unsure, say Y.
388
389config ARM64_ERRATUM_819472
390 bool "Cortex-A53: 819472: Store exclusive instructions might cause data corruption"
391 default y
Suzuki K Poulosec9460dc2018-11-30 17:18:00 +0000392 select ARM64_WORKAROUND_CLEAN_CACHE
Andre Przywarac0a01b82014-11-14 15:54:12 +0000393 help
394 This option adds an alternative code sequence to work around ARM
395 erratum 819472 on Cortex-A53 parts up to r0p1 with an L2 cache
396 present when it is connected to a coherent interconnect.
397
398 If the processor is executing a load and store exclusive sequence at
399 the same time as a processor in another cluster is executing a cache
400 maintenance operation to the same address, then this erratum might
401 cause data corruption.
402
403 The workaround promotes data cache clean instructions to
404 data cache clean-and-invalidate.
405 Please note that this does not necessarily enable the workaround,
406 as it depends on the alternative framework, which will only patch
407 the kernel if an affected CPU is detected.
408
409 If unsure, say Y.
410
411config ARM64_ERRATUM_832075
412 bool "Cortex-A57: 832075: possible deadlock on mixing exclusive memory accesses with device loads"
413 default y
414 help
415 This option adds an alternative code sequence to work around ARM
416 erratum 832075 on Cortex-A57 parts up to r1p2.
417
418 Affected Cortex-A57 parts might deadlock when exclusive load/store
419 instructions to Write-Back memory are mixed with Device loads.
420
421 The workaround is to promote device loads to use Load-Acquire
422 semantics.
423 Please note that this does not necessarily enable the workaround,
424 as it depends on the alternative framework, which will only patch
425 the kernel if an affected CPU is detected.
426
427 If unsure, say Y.
428
Marc Zyngier498cd5c2015-11-16 10:28:18 +0000429config ARM64_ERRATUM_834220
430 bool "Cortex-A57: 834220: Stage 2 translation fault might be incorrectly reported in presence of a Stage 1 fault"
431 depends on KVM
432 default y
433 help
434 This option adds an alternative code sequence to work around ARM
435 erratum 834220 on Cortex-A57 parts up to r1p2.
436
437 Affected Cortex-A57 parts might report a Stage 2 translation
438 fault as the result of a Stage 1 fault for load crossing a
439 page boundary when there is a permission or device memory
440 alignment fault at Stage 1 and a translation fault at Stage 2.
441
442 The workaround is to verify that the Stage 1 translation
443 doesn't generate a fault before handling the Stage 2 fault.
444 Please note that this does not necessarily enable the workaround,
445 as it depends on the alternative framework, which will only patch
446 the kernel if an affected CPU is detected.
447
448 If unsure, say Y.
449
Will Deacon905e8c52015-03-23 19:07:02 +0000450config ARM64_ERRATUM_845719
451 bool "Cortex-A53: 845719: a load might read incorrect data"
452 depends on COMPAT
453 default y
454 help
455 This option adds an alternative code sequence to work around ARM
456 erratum 845719 on Cortex-A53 parts up to r0p4.
457
458 When running a compat (AArch32) userspace on an affected Cortex-A53
459 part, a load at EL0 from a virtual address that matches the bottom 32
460 bits of the virtual address used by a recent load at (AArch64) EL1
461 might return incorrect data.
462
463 The workaround is to write the contextidr_el1 register on exception
464 return to a 32-bit task.
465 Please note that this does not necessarily enable the workaround,
466 as it depends on the alternative framework, which will only patch
467 the kernel if an affected CPU is detected.
468
469 If unsure, say Y.
470
Will Deacondf057cc2015-03-17 12:15:02 +0000471config ARM64_ERRATUM_843419
472 bool "Cortex-A53: 843419: A load or store might access an incorrect address"
Will Deacondf057cc2015-03-17 12:15:02 +0000473 default y
Ard Biesheuvela257e022018-03-06 17:15:33 +0000474 select ARM64_MODULE_PLTS if MODULES
Will Deacondf057cc2015-03-17 12:15:02 +0000475 help
Will Deacon6ffe9922016-08-22 11:58:36 +0100476 This option links the kernel with '--fix-cortex-a53-843419' and
Ard Biesheuvela257e022018-03-06 17:15:33 +0000477 enables PLT support to replace certain ADRP instructions, which can
478 cause subsequent memory accesses to use an incorrect address on
479 Cortex-A53 parts up to r0p4.
Will Deacondf057cc2015-03-17 12:15:02 +0000480
481 If unsure, say Y.
482
Suzuki K Pouloseece13972018-03-26 15:12:49 +0100483config ARM64_ERRATUM_1024718
484 bool "Cortex-A55: 1024718: Update of DBM/AP bits without break before make might result in incorrect update"
485 default y
486 help
487 This option adds work around for Arm Cortex-A55 Erratum 1024718.
488
489 Affected Cortex-A55 cores (r0p0, r0p1, r1p0) could cause incorrect
490 update of the hardware dirty bit when the DBM/AP bits are updated
491 without a break-before-make. The work around is to disable the usage
492 of hardware DBM locally on the affected cores. CPUs not affected by
493 erratum will continue to use the feature.
Jungseok Leee41ceed2014-05-12 10:40:38 +0100494
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100495 If unsure, say Y.
Jungseok Leee41ceed2014-05-12 10:40:38 +0100496
Marc Zyngier95b861a42018-09-27 17:15:34 +0100497config ARM64_ERRATUM_1188873
498 bool "Cortex-A76: MRC read following MRRC read of specific Generic Timer in AArch32 might give incorrect result"
499 default y
Arnd Bergmann040f3402018-10-02 23:11:44 +0200500 select ARM_ARCH_TIMER_OOL_WORKAROUND
Marc Zyngier95b861a42018-09-27 17:15:34 +0100501 help
502 This option adds work arounds for ARM Cortex-A76 erratum 1188873
503
504 Affected Cortex-A76 cores (r0p0, r1p0, r2p0) could cause
505 register corruption when accessing the timer registers from
506 AArch32 userspace.
507
508 If unsure, say Y.
509
Marc Zyngiera457b0f2018-12-06 17:31:26 +0000510config ARM64_ERRATUM_1165522
511 bool "Cortex-A76: Speculative AT instruction using out-of-context translation regime could cause subsequent request to generate an incorrect translation"
512 default y
513 help
514 This option adds work arounds for ARM Cortex-A76 erratum 1165522
515
516 Affected Cortex-A76 cores (r0p0, r1p0, r2p0) could end-up with
517 corrupted TLBs by speculating an AT instruction during a guest
518 context switch.
519
520 If unsure, say Y.
521
Robert Richter94100972015-09-21 22:58:38 +0200522config CAVIUM_ERRATUM_22375
523 bool "Cavium erratum 22375, 24313"
524 default y
525 help
526 Enable workaround for erratum 22375, 24313.
527
528 This implements two gicv3-its errata workarounds for ThunderX. Both
529 with small impact affecting only ITS table allocation.
530
531 erratum 22375: only alloc 8MB table size
532 erratum 24313: ignore memory access type
533
534 The fixes are in ITS initialization and basically ignore memory access
535 type and table size provided by the TYPER and BASER registers.
536
537 If unsure, say Y.
538
Ganapatrao Kulkarnifbf8f402016-05-25 15:29:20 +0200539config CAVIUM_ERRATUM_23144
540 bool "Cavium erratum 23144: ITS SYNC hang on dual socket system"
541 depends on NUMA
542 default y
543 help
544 ITS SYNC command hang for cross node io and collections/cpu mapping.
545
546 If unsure, say Y.
547
Robert Richter6d4e11c2015-09-21 22:58:35 +0200548config CAVIUM_ERRATUM_23154
549 bool "Cavium erratum 23154: Access to ICC_IAR1_EL1 is not sync'ed"
550 default y
551 help
552 The gicv3 of ThunderX requires a modified version for
553 reading the IAR status to ensure data synchronization
554 (access to icc_iar1_el1 is not sync'ed before and after).
555
556 If unsure, say Y.
557
Andrew Pinski104a0c02016-02-24 17:44:57 -0800558config CAVIUM_ERRATUM_27456
559 bool "Cavium erratum 27456: Broadcast TLBI instructions may cause icache corruption"
560 default y
561 help
562 On ThunderX T88 pass 1.x through 2.1 parts, broadcast TLBI
563 instructions may cause the icache to become corrupted if it
564 contains data for a non-current ASID. The fix is to
565 invalidate the icache when changing the mm context.
566
567 If unsure, say Y.
568
David Daney690a3412017-06-09 12:49:48 +0100569config CAVIUM_ERRATUM_30115
570 bool "Cavium erratum 30115: Guest may disable interrupts in host"
571 default y
572 help
573 On ThunderX T88 pass 1.x through 2.2, T81 pass 1.0 through
574 1.2, and T83 Pass 1.0, KVM guest execution may disable
575 interrupts in host. Trapping both GICv3 group-0 and group-1
576 accesses sidesteps the issue.
577
578 If unsure, say Y.
579
Christopher Covington38fd94b2017-02-08 15:08:37 -0500580config QCOM_FALKOR_ERRATUM_1003
581 bool "Falkor E1003: Incorrect translation due to ASID change"
582 default y
Christopher Covington38fd94b2017-02-08 15:08:37 -0500583 help
584 On Falkor v1, an incorrect ASID may be cached in the TLB when ASID
Will Deacond1777e62017-11-14 14:29:19 +0000585 and BADDR are changed together in TTBRx_EL1. Since we keep the ASID
586 in TTBR1_EL1, this situation only occurs in the entry trampoline and
587 then only for entries in the walk cache, since the leaf translation
588 is unchanged. Work around the erratum by invalidating the walk cache
589 entries for the trampoline before entering the kernel proper.
Christopher Covington38fd94b2017-02-08 15:08:37 -0500590
Christopher Covingtond9ff80f2017-01-31 12:50:19 -0500591config QCOM_FALKOR_ERRATUM_1009
592 bool "Falkor E1009: Prematurely complete a DSB after a TLBI"
593 default y
594 help
595 On Falkor v1, the CPU may prematurely complete a DSB following a
596 TLBI xxIS invalidate maintenance operation. Repeat the TLBI operation
597 one more time to fix the issue.
598
599 If unsure, say Y.
600
Shanker Donthineni90922a22017-03-07 08:20:38 -0600601config QCOM_QDF2400_ERRATUM_0065
602 bool "QDF2400 E0065: Incorrect GITS_TYPER.ITT_Entry_size"
603 default y
604 help
605 On Qualcomm Datacenter Technologies QDF2400 SoC, ITS hardware reports
606 ITE size incorrectly. The GITS_TYPER.ITT_Entry_size field should have
607 been indicated as 16Bytes (0xf), not 8Bytes (0x7).
608
609 If unsure, say Y.
610
Ard Biesheuvel558b0162017-10-17 17:55:56 +0100611config SOCIONEXT_SYNQUACER_PREITS
612 bool "Socionext Synquacer: Workaround for GICv3 pre-ITS"
613 default y
614 help
615 Socionext Synquacer SoCs implement a separate h/w block to generate
616 MSI doorbell writes with non-zero values for the device ID.
617
618 If unsure, say Y.
Marc Zyngier5c9a8822017-07-28 21:20:37 +0100619
620config HISILICON_ERRATUM_161600802
621 bool "Hip07 161600802: Erroneous redistributor VLPI base"
622 default y
623 help
624 The HiSilicon Hip07 SoC usees the wrong redistributor base
625 when issued ITS commands such as VMOVP and VMAPP, and requires
626 a 128kB offset to be applied to the target address in this commands.
627
628 If unsure, say Y.
Shanker Donthineni932b50c2017-12-11 16:42:32 -0600629
630config QCOM_FALKOR_ERRATUM_E1041
631 bool "Falkor E1041: Speculative instruction fetches might cause errant memory access"
632 default y
633 help
634 Falkor CPU may speculatively fetch instructions from an improper
635 memory location when MMU translation is changed from SCTLR_ELn[M]=1
636 to SCTLR_ELn[M]=0. Prefix an ISB instruction to fix the problem.
637
638 If unsure, say Y.
639
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100640endmenu
641
642
643choice
644 prompt "Page size"
645 default ARM64_4K_PAGES
646 help
647 Page size (translation granule) configuration.
648
649config ARM64_4K_PAGES
650 bool "4KB"
651 help
652 This feature enables 4KB pages support.
653
Suzuki K. Poulose44eaacf2015-10-19 14:19:37 +0100654config ARM64_16K_PAGES
655 bool "16KB"
656 help
657 The system will use 16KB pages support. AArch32 emulation
658 requires applications compiled with 16K (or a multiple of 16K)
659 aligned segments.
660
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100661config ARM64_64K_PAGES
662 bool "64KB"
663 help
664 This feature enables 64KB pages support (4KB by default)
665 allowing only two levels of page tables and faster TLB
Suzuki K. Poulosedb488be2015-10-19 14:19:34 +0100666 look-up. AArch32 emulation requires applications compiled
667 with 64K aligned segments.
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100668
669endchoice
670
671choice
672 prompt "Virtual address space size"
673 default ARM64_VA_BITS_39 if ARM64_4K_PAGES
Suzuki K. Poulose44eaacf2015-10-19 14:19:37 +0100674 default ARM64_VA_BITS_47 if ARM64_16K_PAGES
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100675 default ARM64_VA_BITS_42 if ARM64_64K_PAGES
676 help
677 Allows choosing one of multiple possible virtual address
678 space sizes. The level of translation table is determined by
679 a combination of page size and virtual address space size.
680
Suzuki K. Poulose21539932015-10-19 14:19:38 +0100681config ARM64_VA_BITS_36
Catalin Marinas56a3f302015-10-20 14:59:20 +0100682 bool "36-bit" if EXPERT
Suzuki K. Poulose21539932015-10-19 14:19:38 +0100683 depends on ARM64_16K_PAGES
684
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100685config ARM64_VA_BITS_39
686 bool "39-bit"
687 depends on ARM64_4K_PAGES
688
689config ARM64_VA_BITS_42
690 bool "42-bit"
691 depends on ARM64_64K_PAGES
692
Suzuki K. Poulose44eaacf2015-10-19 14:19:37 +0100693config ARM64_VA_BITS_47
694 bool "47-bit"
695 depends on ARM64_16K_PAGES
696
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100697config ARM64_VA_BITS_48
698 bool "48-bit"
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100699
Will Deacon68d23da2018-12-10 14:15:15 +0000700config ARM64_USER_VA_BITS_52
701 bool "52-bit (user)"
702 depends on ARM64_64K_PAGES && (ARM64_PAN || !ARM64_SW_TTBR0_PAN)
703 help
704 Enable 52-bit virtual addressing for userspace when explicitly
705 requested via a hint to mmap(). The kernel will continue to
706 use 48-bit virtual addresses for its own mappings.
707
708 NOTE: Enabling 52-bit virtual addressing in conjunction with
709 ARMv8.3 Pointer Authentication will result in the PAC being
710 reduced from 7 bits to 3 bits, which may have a significant
711 impact on its susceptibility to brute-force attacks.
712
713 If unsure, select 48-bit virtual addressing instead.
714
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100715endchoice
716
Will Deacon68d23da2018-12-10 14:15:15 +0000717config ARM64_FORCE_52BIT
718 bool "Force 52-bit virtual addresses for userspace"
719 depends on ARM64_USER_VA_BITS_52 && EXPERT
720 help
721 For systems with 52-bit userspace VAs enabled, the kernel will attempt
722 to maintain compatibility with older software by providing 48-bit VAs
723 unless a hint is supplied to mmap.
724
725 This configuration option disables the 48-bit compatibility logic, and
726 forces all userspace addresses to be 52-bit on HW that supports it. One
727 should only enable this configuration option for stress testing userspace
728 memory management code. If unsure say N here.
729
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100730config ARM64_VA_BITS
731 int
Suzuki K. Poulose21539932015-10-19 14:19:38 +0100732 default 36 if ARM64_VA_BITS_36
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100733 default 39 if ARM64_VA_BITS_39
734 default 42 if ARM64_VA_BITS_42
Suzuki K. Poulose44eaacf2015-10-19 14:19:37 +0100735 default 47 if ARM64_VA_BITS_47
Will Deacon68d23da2018-12-10 14:15:15 +0000736 default 48 if ARM64_VA_BITS_48 || ARM64_USER_VA_BITS_52
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100737
Kristina Martsenko982aa7c2017-12-13 17:07:16 +0000738choice
739 prompt "Physical address space size"
740 default ARM64_PA_BITS_48
741 help
742 Choose the maximum physical address range that the kernel will
743 support.
744
745config ARM64_PA_BITS_48
746 bool "48-bit"
747
Kristina Martsenkof77d2812017-12-13 17:07:25 +0000748config ARM64_PA_BITS_52
749 bool "52-bit (ARMv8.2)"
750 depends on ARM64_64K_PAGES
751 depends on ARM64_PAN || !ARM64_SW_TTBR0_PAN
752 help
753 Enable support for a 52-bit physical address space, introduced as
754 part of the ARMv8.2-LPA extension.
755
756 With this enabled, the kernel will also continue to work on CPUs that
757 do not support ARMv8.2-LPA, but with some added memory overhead (and
758 minor performance overhead).
759
Kristina Martsenko982aa7c2017-12-13 17:07:16 +0000760endchoice
761
762config ARM64_PA_BITS
763 int
764 default 48 if ARM64_PA_BITS_48
Kristina Martsenkof77d2812017-12-13 17:07:25 +0000765 default 52 if ARM64_PA_BITS_52
Kristina Martsenko982aa7c2017-12-13 17:07:16 +0000766
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100767config CPU_BIG_ENDIAN
768 bool "Build big-endian kernel"
769 help
770 Say Y if you plan on running a kernel in big-endian mode.
771
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100772config SCHED_MC
773 bool "Multi-core scheduler support"
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100774 help
775 Multi-core scheduler support improves the CPU scheduler's decision
776 making when dealing with multi-core CPU chips at a cost of slightly
777 increased overhead in some places. If unsure say N here.
778
779config SCHED_SMT
780 bool "SMT scheduler support"
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100781 help
782 Improves the CPU scheduler's decision making when dealing with
783 MultiThreading at a cost of slightly increased overhead in some
784 places. If unsure say N here.
785
786config NR_CPUS
Ganapatrao Kulkarni62aa9652015-03-18 11:01:18 +0000787 int "Maximum number of CPUs (2-4096)"
788 range 2 4096
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100789 # These have to remain sorted largest to smallest
790 default "64"
791
792config HOTPLUG_CPU
793 bool "Support for hot-pluggable CPUs"
Yang Yingliang217d4532015-09-24 17:32:14 +0800794 select GENERIC_IRQ_MIGRATION
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100795 help
796 Say Y here to experiment with turning CPUs off and on. CPUs
797 can be controlled through /sys/devices/system/cpu.
798
Ganapatrao Kulkarni1a2db302016-04-08 15:50:27 -0700799# Common NUMA Features
800config NUMA
801 bool "Numa Memory Allocation and Scheduler Support"
Kefeng Wang0c2a6cc2016-09-26 15:36:50 +0800802 select ACPI_NUMA if ACPI
803 select OF_NUMA
Ganapatrao Kulkarni1a2db302016-04-08 15:50:27 -0700804 help
805 Enable NUMA (Non Uniform Memory Access) support.
806
807 The kernel will try to allocate memory used by a CPU on the
808 local memory of the CPU and add some more
809 NUMA awareness to the kernel.
810
811config NODES_SHIFT
812 int "Maximum NUMA Nodes (as a power of 2)"
813 range 1 10
814 default "2"
815 depends on NEED_MULTIPLE_NODES
816 help
817 Specify the maximum number of NUMA Nodes available on the target
818 system. Increases memory reserved to accommodate various tables.
819
820config USE_PERCPU_NUMA_NODE_ID
821 def_bool y
822 depends on NUMA
823
Zhen Lei7af3a0a2016-09-01 14:55:00 +0800824config HAVE_SETUP_PER_CPU_AREA
825 def_bool y
826 depends on NUMA
827
828config NEED_PER_CPU_EMBED_FIRST_CHUNK
829 def_bool y
830 depends on NUMA
831
Ard Biesheuvel6d526ee2016-12-14 09:11:47 +0000832config HOLES_IN_ZONE
833 def_bool y
Ard Biesheuvel6d526ee2016-12-14 09:11:47 +0000834
Kefeng Wangf90df5e2015-10-26 11:48:16 +0800835source kernel/Kconfig.hz
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100836
Laura Abbott83863f22016-02-05 16:24:47 -0800837config ARCH_SUPPORTS_DEBUG_PAGEALLOC
838 def_bool y
839
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100840config ARCH_SPARSEMEM_ENABLE
841 def_bool y
842 select SPARSEMEM_VMEMMAP_ENABLE
843
844config ARCH_SPARSEMEM_DEFAULT
845 def_bool ARCH_SPARSEMEM_ENABLE
846
847config ARCH_SELECT_MEMORY_MODEL
848 def_bool ARCH_SPARSEMEM_ENABLE
849
Nikunj Kelae7d4bac2018-07-06 10:47:24 -0700850config ARCH_FLATMEM_ENABLE
Arnd Bergmann54501ac2018-07-10 17:16:27 +0200851 def_bool !NUMA
Nikunj Kelae7d4bac2018-07-06 10:47:24 -0700852
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100853config HAVE_ARCH_PFN_VALID
James Morse8a695a52018-08-31 16:19:43 +0100854 def_bool y
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100855
856config HW_PERF_EVENTS
Mark Rutland6475b2d2015-10-02 10:55:03 +0100857 def_bool y
858 depends on ARM_PMU
Catalin Marinas8c2c3df2012-04-20 14:45:54 +0100859
Steve Capper084bd292013-04-10 13:48:00 +0100860config SYS_SUPPORTS_HUGETLBFS
861 def_bool y
862
Steve Capper084bd292013-04-10 13:48:00 +0100863config ARCH_WANT_HUGE_PMD_SHARE
Suzuki K. Poulose21539932015-10-19 14:19:38 +0100864 def_bool y if ARM64_4K_PAGES || (ARM64_16K_PAGES && !ARM64_VA_BITS_36)
Steve Capper084bd292013-04-10 13:48:00 +0100865
Catalin Marinasa41dc0e2014-04-03 17:48:54 +0100866config ARCH_HAS_CACHE_LINE_SIZE
867 def_bool y
868
AKASHI Takahiroa1ae65b2014-11-28 05:26:39 +0000869config SECCOMP
870 bool "Enable seccomp to safely compute untrusted bytecode"
871 ---help---
872 This kernel feature is useful for number crunching applications
873 that may need to compute untrusted bytecode during their
874 execution. By using pipes or other transports made available to
875 the process as file descriptors supporting the read/write
876 syscalls, it's possible to isolate those applications in
877 their own address space using seccomp. Once seccomp is
878 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
879 and the task is only allowed to execute a few safe syscalls
880 defined by each seccomp mode.
881
Stefano Stabellinidfd57bc2015-11-23 10:33:49 +0000882config PARAVIRT
883 bool "Enable paravirtualization code"
884 help
885 This changes the kernel so it can modify itself when it is run
886 under a hypervisor, potentially improving performance significantly
887 over full virtualization.
888
889config PARAVIRT_TIME_ACCOUNTING
890 bool "Paravirtual steal time accounting"
891 select PARAVIRT
892 default n
893 help
894 Select this option to enable fine granularity task steal time
895 accounting. Time spent executing other tasks in parallel with
896 the current vCPU is discounted from the vCPU power. To account for
897 that, there can be a small performance impact.
898
899 If in doubt, say N here.
900
Geoff Levandd28f6df2016-06-23 17:54:48 +0000901config KEXEC
902 depends on PM_SLEEP_SMP
903 select KEXEC_CORE
904 bool "kexec system call"
905 ---help---
906 kexec is a system call that implements the ability to shutdown your
907 current kernel, and to start another kernel. It is like a reboot
908 but it is independent of the system firmware. And like a reboot
909 you can start any kernel with it, not just Linux.
910
AKASHI Takahiro3ddd9992018-11-15 14:52:48 +0900911config KEXEC_FILE
912 bool "kexec file based system call"
913 select KEXEC_CORE
914 help
915 This is new version of kexec system call. This system call is
916 file based and takes file descriptors as system call argument
917 for kernel and initramfs as opposed to list of segments as
918 accepted by previous system call.
919
AKASHI Takahiro732b7b92018-11-15 14:52:54 +0900920config KEXEC_VERIFY_SIG
921 bool "Verify kernel signature during kexec_file_load() syscall"
922 depends on KEXEC_FILE
923 help
924 Select this option to verify a signature with loaded kernel
925 image. If configured, any attempt of loading a image without
926 valid signature will fail.
927
928 In addition to that option, you need to enable signature
929 verification for the corresponding kernel image type being
930 loaded in order for this to work.
931
932config KEXEC_IMAGE_VERIFY_SIG
933 bool "Enable Image signature verification support"
934 default y
935 depends on KEXEC_VERIFY_SIG
936 depends on EFI && SIGNED_PE_FILE_VERIFICATION
937 help
938 Enable Image signature verification support.
939
940comment "Support for PE file signature verification disabled"
941 depends on KEXEC_VERIFY_SIG
942 depends on !EFI || !SIGNED_PE_FILE_VERIFICATION
943
AKASHI Takahiroe62aaea2017-04-03 11:24:38 +0900944config CRASH_DUMP
945 bool "Build kdump crash kernel"
946 help
947 Generate crash dump after being started by kexec. This should
948 be normally only set in special crash dump kernels which are
949 loaded in the main kernel with kexec-tools into a specially
950 reserved region and then later executed after a crash by
951 kdump/kexec.
952
953 For more details see Documentation/kdump/kdump.txt
954
Stefano Stabelliniaa42aa12013-06-03 17:05:43 +0000955config XEN_DOM0
956 def_bool y
957 depends on XEN
958
959config XEN
Julien Grallc2ba1f72014-09-17 14:07:06 -0700960 bool "Xen guest support on ARM64"
Stefano Stabelliniaa42aa12013-06-03 17:05:43 +0000961 depends on ARM64 && OF
Stefano Stabellini83862cc2013-10-10 13:40:44 +0000962 select SWIOTLB_XEN
Stefano Stabellinidfd57bc2015-11-23 10:33:49 +0000963 select PARAVIRT
Stefano Stabelliniaa42aa12013-06-03 17:05:43 +0000964 help
965 Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64.
966
Steve Capperd03bb142013-04-25 15:19:21 +0100967config FORCE_MAX_ZONEORDER
968 int
969 default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
Suzuki K. Poulose44eaacf2015-10-19 14:19:37 +0100970 default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE)
Steve Capperd03bb142013-04-25 15:19:21 +0100971 default "11"
Suzuki K. Poulose44eaacf2015-10-19 14:19:37 +0100972 help
973 The kernel memory allocator divides physically contiguous memory
974 blocks into "zones", where each zone is a power of two number of
975 pages. This option selects the largest power of two that the kernel
976 keeps in the memory allocator. If you need to allocate very large
977 blocks of physically contiguous memory, then you may need to
978 increase this value.
979
980 This config option is actually maximum order plus one. For example,
981 a value of 11 means that the largest free memory block is 2^10 pages.
982
983 We make sure that we can allocate upto a HugePage size for each configuration.
984 Hence we have :
985 MAX_ORDER = (PMD_SHIFT - PAGE_SHIFT) + 1 => PAGE_SHIFT - 2
986
987 However for 4K, we choose a higher default value, 11 as opposed to 10, giving us
988 4M allocations matching the default size used by generic code.
Steve Capperd03bb142013-04-25 15:19:21 +0100989
Will Deacon084eb772017-11-14 14:41:01 +0000990config UNMAP_KERNEL_AT_EL0
Will Deacon06170522017-11-14 16:19:39 +0000991 bool "Unmap kernel when running in userspace (aka \"KAISER\")" if EXPERT
Will Deacon084eb772017-11-14 14:41:01 +0000992 default y
993 help
Will Deacon06170522017-11-14 16:19:39 +0000994 Speculation attacks against some high-performance processors can
995 be used to bypass MMU permission checks and leak kernel data to
996 userspace. This can be defended against by unmapping the kernel
997 when running in userspace, mapping it back in on exception entry
998 via a trampoline page in the vector table.
Will Deacon084eb772017-11-14 14:41:01 +0000999
1000 If unsure, say Y.
1001
Will Deacon0f15adb2018-01-03 11:17:58 +00001002config HARDEN_BRANCH_PREDICTOR
1003 bool "Harden the branch predictor against aliasing attacks" if EXPERT
1004 default y
1005 help
1006 Speculation attacks against some high-performance processors rely on
1007 being able to manipulate the branch predictor for a victim context by
1008 executing aliasing branches in the attacker context. Such attacks
1009 can be partially mitigated against by clearing internal branch
1010 predictor state and limiting the prediction logic in some situations.
1011
1012 This config option will take CPU-specific actions to harden the
1013 branch predictor against aliasing attacks and may rely on specific
1014 instruction sequences or control bits being set by the system
1015 firmware.
1016
1017 If unsure, say Y.
1018
Marc Zyngierdee39242018-02-15 11:47:14 +00001019config HARDEN_EL2_VECTORS
1020 bool "Harden EL2 vector mapping against system register leak" if EXPERT
1021 default y
1022 help
1023 Speculation attacks against some high-performance processors can
1024 be used to leak privileged information such as the vector base
1025 register, resulting in a potential defeat of the EL2 layout
1026 randomization.
1027
1028 This config option will map the vectors to a fixed location,
1029 independent of the EL2 code mapping, so that revealing VBAR_EL2
1030 to an attacker does not give away any extra information. This
1031 only gets enabled on affected CPUs.
1032
1033 If unsure, say Y.
1034
Marc Zyngiera725e3d2018-05-29 13:11:08 +01001035config ARM64_SSBD
1036 bool "Speculative Store Bypass Disable" if EXPERT
1037 default y
1038 help
1039 This enables mitigation of the bypassing of previous stores
1040 by speculative loads.
1041
1042 If unsure, say Y.
1043
Ard Biesheuvelc55191e2018-11-07 11:36:20 +01001044config RODATA_FULL_DEFAULT_ENABLED
1045 bool "Apply r/o permissions of VM areas also to their linear aliases"
1046 default y
1047 help
1048 Apply read-only attributes of VM areas to the linear alias of
1049 the backing pages as well. This prevents code or read-only data
1050 from being modified (inadvertently or intentionally) via another
1051 mapping of the same memory page. This additional enhancement can
1052 be turned off at runtime by passing rodata=[off|on] (and turned on
1053 with rodata=full if this option is set to 'n')
1054
1055 This requires the linear region to be mapped down to pages,
1056 which may adversely affect performance in some cases.
1057
Will Deacon1b907f42014-11-20 16:51:10 +00001058menuconfig ARMV8_DEPRECATED
1059 bool "Emulate deprecated/obsolete ARMv8 instructions"
1060 depends on COMPAT
Dave Martin6cfa7cc2017-11-06 18:07:11 +00001061 depends on SYSCTL
Will Deacon1b907f42014-11-20 16:51:10 +00001062 help
1063 Legacy software support may require certain instructions
1064 that have been deprecated or obsoleted in the architecture.
1065
1066 Enable this config to enable selective emulation of these
1067 features.
1068
1069 If unsure, say Y
1070
1071if ARMV8_DEPRECATED
1072
1073config SWP_EMULATION
1074 bool "Emulate SWP/SWPB instructions"
1075 help
1076 ARMv8 obsoletes the use of A32 SWP/SWPB instructions such that
1077 they are always undefined. Say Y here to enable software
1078 emulation of these instructions for userspace using LDXR/STXR.
1079
1080 In some older versions of glibc [<=2.8] SWP is used during futex
1081 trylock() operations with the assumption that the code will not
1082 be preempted. This invalid assumption may be more likely to fail
1083 with SWP emulation enabled, leading to deadlock of the user
1084 application.
1085
1086 NOTE: when accessing uncached shared regions, LDXR/STXR rely
1087 on an external transaction monitoring block called a global
1088 monitor to maintain update atomicity. If your system does not
1089 implement a global monitor, this option can cause programs that
1090 perform SWP operations to uncached memory to deadlock.
1091
1092 If unsure, say Y
1093
1094config CP15_BARRIER_EMULATION
1095 bool "Emulate CP15 Barrier instructions"
1096 help
1097 The CP15 barrier instructions - CP15ISB, CP15DSB, and
1098 CP15DMB - are deprecated in ARMv8 (and ARMv7). It is
1099 strongly recommended to use the ISB, DSB, and DMB
1100 instructions instead.
1101
1102 Say Y here to enable software emulation of these
1103 instructions for AArch32 userspace code. When this option is
1104 enabled, CP15 barrier usage is traced which can help
1105 identify software that needs updating.
1106
1107 If unsure, say Y
1108
Suzuki K. Poulose2d888f42015-01-21 12:43:11 +00001109config SETEND_EMULATION
1110 bool "Emulate SETEND instruction"
1111 help
1112 The SETEND instruction alters the data-endianness of the
1113 AArch32 EL0, and is deprecated in ARMv8.
1114
1115 Say Y here to enable software emulation of the instruction
1116 for AArch32 userspace code.
1117
1118 Note: All the cpus on the system must have mixed endian support at EL0
1119 for this feature to be enabled. If a new CPU - which doesn't support mixed
1120 endian - is hotplugged in after this feature has been enabled, there could
1121 be unexpected results in the applications.
1122
1123 If unsure, say Y
Will Deacon1b907f42014-11-20 16:51:10 +00001124endif
1125
Catalin Marinasba428222016-07-01 18:25:31 +01001126config ARM64_SW_TTBR0_PAN
1127 bool "Emulate Privileged Access Never using TTBR0_EL1 switching"
1128 help
1129 Enabling this option prevents the kernel from accessing
1130 user-space memory directly by pointing TTBR0_EL1 to a reserved
1131 zeroed area and reserved ASID. The user access routines
1132 restore the valid TTBR0_EL1 temporarily.
1133
Will Deacon0e4a0702015-07-27 15:54:13 +01001134menu "ARMv8.1 architectural features"
1135
1136config ARM64_HW_AFDBM
1137 bool "Support for hardware updates of the Access and Dirty page flags"
1138 default y
1139 help
1140 The ARMv8.1 architecture extensions introduce support for
1141 hardware updates of the access and dirty information in page
1142 table entries. When enabled in TCR_EL1 (HA and HD bits) on
1143 capable processors, accesses to pages with PTE_AF cleared will
1144 set this bit instead of raising an access flag fault.
1145 Similarly, writes to read-only pages with the DBM bit set will
1146 clear the read-only bit (AP[2]) instead of raising a
1147 permission fault.
1148
1149 Kernels built with this configuration option enabled continue
1150 to work on pre-ARMv8.1 hardware and the performance impact is
1151 minimal. If unsure, say Y.
1152
1153config ARM64_PAN
1154 bool "Enable support for Privileged Access Never (PAN)"
1155 default y
1156 help
1157 Privileged Access Never (PAN; part of the ARMv8.1 Extensions)
1158 prevents the kernel or hypervisor from accessing user-space (EL0)
1159 memory directly.
1160
1161 Choosing this option will cause any unprotected (not using
1162 copy_to_user et al) memory access to fail with a permission fault.
1163
1164 The feature is detected at runtime, and will remain as a 'nop'
1165 instruction if the cpu does not implement the feature.
1166
1167config ARM64_LSE_ATOMICS
1168 bool "Atomic instructions"
Will Deacon7bd99b42018-05-21 19:14:22 +01001169 default y
Will Deacon0e4a0702015-07-27 15:54:13 +01001170 help
1171 As part of the Large System Extensions, ARMv8.1 introduces new
1172 atomic instructions that are designed specifically to scale in
1173 very large systems.
1174
1175 Say Y here to make use of these instructions for the in-kernel
1176 atomic routines. This incurs a small overhead on CPUs that do
1177 not support these instructions and requires the kernel to be
Will Deacon7bd99b42018-05-21 19:14:22 +01001178 built with binutils >= 2.25 in order for the new instructions
1179 to be used.
Will Deacon0e4a0702015-07-27 15:54:13 +01001180
Marc Zyngier1f364c82014-02-19 09:33:14 +00001181config ARM64_VHE
1182 bool "Enable support for Virtualization Host Extensions (VHE)"
1183 default y
1184 help
1185 Virtualization Host Extensions (VHE) allow the kernel to run
1186 directly at EL2 (instead of EL1) on processors that support
1187 it. This leads to better performance for KVM, as they reduce
1188 the cost of the world switch.
1189
1190 Selecting this option allows the VHE feature to be detected
1191 at runtime, and does not affect processors that do not
1192 implement this feature.
1193
Will Deacon0e4a0702015-07-27 15:54:13 +01001194endmenu
1195
Will Deaconf9933182016-02-26 16:30:14 +00001196menu "ARMv8.2 architectural features"
1197
James Morse57f49592016-02-05 14:58:48 +00001198config ARM64_UAO
1199 bool "Enable support for User Access Override (UAO)"
1200 default y
1201 help
1202 User Access Override (UAO; part of the ARMv8.2 Extensions)
1203 causes the 'unprivileged' variant of the load/store instructions to
Masanari Iida83fc61a2017-09-26 12:47:59 +09001204 be overridden to be privileged.
James Morse57f49592016-02-05 14:58:48 +00001205
1206 This option changes get_user() and friends to use the 'unprivileged'
1207 variant of the load/store instructions. This ensures that user-space
1208 really did have access to the supplied memory. When addr_limit is
1209 set to kernel memory the UAO bit will be set, allowing privileged
1210 access to kernel memory.
1211
1212 Choosing this option will cause copy_to_user() et al to use user-space
1213 memory permissions.
1214
1215 The feature is detected at runtime, the kernel will use the
1216 regular load/store instructions if the cpu does not implement the
1217 feature.
1218
Robin Murphyd50e0712017-07-25 11:55:42 +01001219config ARM64_PMEM
1220 bool "Enable support for persistent memory"
1221 select ARCH_HAS_PMEM_API
Robin Murphy5d7bdeb2017-07-25 11:55:43 +01001222 select ARCH_HAS_UACCESS_FLUSHCACHE
Robin Murphyd50e0712017-07-25 11:55:42 +01001223 help
1224 Say Y to enable support for the persistent memory API based on the
1225 ARMv8.2 DCPoP feature.
1226
1227 The feature is detected at runtime, and the kernel will use DC CVAC
1228 operations if DC CVAP is not supported (following the behaviour of
1229 DC CVAP itself if the system does not define a point of persistence).
1230
Xie XiuQi64c02722018-01-15 19:38:56 +00001231config ARM64_RAS_EXTN
1232 bool "Enable support for RAS CPU Extensions"
1233 default y
1234 help
1235 CPUs that support the Reliability, Availability and Serviceability
1236 (RAS) Extensions, part of ARMv8.2 are able to track faults and
1237 errors, classify them and report them to software.
1238
1239 On CPUs with these extensions system software can use additional
1240 barriers to determine if faults are pending and read the
1241 classification from a new set of registers.
1242
1243 Selecting this feature will allow the kernel to use these barriers
1244 and access the new registers if the system supports the extension.
1245 Platform RAS features may additionally depend on firmware support.
1246
Vladimir Murzin5ffdfae2018-07-31 14:08:56 +01001247config ARM64_CNP
1248 bool "Enable support for Common Not Private (CNP) translations"
1249 default y
1250 depends on ARM64_PAN || !ARM64_SW_TTBR0_PAN
1251 help
1252 Common Not Private (CNP) allows translation table entries to
1253 be shared between different PEs in the same inner shareable
1254 domain, so the hardware can use this fact to optimise the
1255 caching of such entries in the TLB.
1256
1257 Selecting this option allows the CNP feature to be detected
1258 at runtime, and does not affect PEs that do not implement
1259 this feature.
1260
Will Deaconf9933182016-02-26 16:30:14 +00001261endmenu
1262
Dave Martinddd25ad2017-10-31 15:51:02 +00001263config ARM64_SVE
1264 bool "ARM Scalable Vector Extension support"
1265 default y
Dave Martin85acda32018-04-20 16:20:43 +01001266 depends on !KVM || ARM64_VHE
Dave Martinddd25ad2017-10-31 15:51:02 +00001267 help
1268 The Scalable Vector Extension (SVE) is an extension to the AArch64
1269 execution state which complements and extends the SIMD functionality
1270 of the base architecture to support much larger vectors and to enable
1271 additional vectorisation opportunities.
1272
1273 To enable use of this extension on CPUs that implement it, say Y.
1274
Dave Martin50436942018-03-23 18:08:31 +00001275 Note that for architectural reasons, firmware _must_ implement SVE
1276 support when running on SVE capable hardware. The required support
1277 is present in:
1278
1279 * version 1.5 and later of the ARM Trusted Firmware
1280 * the AArch64 boot wrapper since commit 5e1261e08abf
1281 ("bootwrapper: SVE: Enable SVE for EL2 and below").
1282
1283 For other firmware implementations, consult the firmware documentation
1284 or vendor.
1285
1286 If you need the kernel to boot on SVE-capable hardware with broken
1287 firmware, you may need to say N here until you get your firmware
1288 fixed. Otherwise, you may experience firmware panics or lockups when
1289 booting the kernel. If unsure and you are not observing these
1290 symptoms, you should assume that it is safe to say Y.
Ard Biesheuvelfd045f62015-11-24 12:37:35 +01001291
Dave Martin85acda32018-04-20 16:20:43 +01001292 CPUs that support SVE are architecturally required to support the
1293 Virtualization Host Extensions (VHE), so the kernel makes no
1294 provision for supporting SVE alongside KVM without VHE enabled.
1295 Thus, you will need to enable CONFIG_ARM64_VHE if you want to support
1296 KVM in the same kernel image.
1297
Ard Biesheuvelfd045f62015-11-24 12:37:35 +01001298config ARM64_MODULE_PLTS
1299 bool
Ard Biesheuvelfd045f62015-11-24 12:37:35 +01001300 select HAVE_MOD_ARCH_SPECIFIC
1301
Ard Biesheuvel1e48ef72016-01-26 09:13:44 +01001302config RELOCATABLE
1303 bool
1304 help
1305 This builds the kernel as a Position Independent Executable (PIE),
1306 which retains all relocation metadata required to relocate the
1307 kernel binary at runtime to a different virtual address than the
1308 address it was linked at.
1309 Since AArch64 uses the RELA relocation format, this requires a
1310 relocation pass at runtime even if the kernel is loaded at the
1311 same address it was linked at.
1312
Ard Biesheuvelf80fb3a2016-01-26 14:12:01 +01001313config RANDOMIZE_BASE
1314 bool "Randomize the address of the kernel image"
Catalin Marinasb9c220b2016-07-26 10:16:55 -07001315 select ARM64_MODULE_PLTS if MODULES
Ard Biesheuvelf80fb3a2016-01-26 14:12:01 +01001316 select RELOCATABLE
1317 help
1318 Randomizes the virtual address at which the kernel image is
1319 loaded, as a security feature that deters exploit attempts
1320 relying on knowledge of the location of kernel internals.
1321
1322 It is the bootloader's job to provide entropy, by passing a
1323 random u64 value in /chosen/kaslr-seed at kernel entry.
1324
Ard Biesheuvel2b5fe072016-01-26 14:48:29 +01001325 When booting via the UEFI stub, it will invoke the firmware's
1326 EFI_RNG_PROTOCOL implementation (if available) to supply entropy
1327 to the kernel proper. In addition, it will randomise the physical
1328 location of the kernel Image as well.
1329
Ard Biesheuvelf80fb3a2016-01-26 14:12:01 +01001330 If unsure, say N.
1331
1332config RANDOMIZE_MODULE_REGION_FULL
Ard Biesheuvelf2b9ba82018-03-06 17:15:32 +00001333 bool "Randomize the module region over a 4 GB range"
Ard Biesheuvele71a4e1b2017-06-06 17:00:22 +00001334 depends on RANDOMIZE_BASE
Ard Biesheuvelf80fb3a2016-01-26 14:12:01 +01001335 default y
1336 help
Ard Biesheuvelf2b9ba82018-03-06 17:15:32 +00001337 Randomizes the location of the module region inside a 4 GB window
1338 covering the core kernel. This way, it is less likely for modules
Ard Biesheuvelf80fb3a2016-01-26 14:12:01 +01001339 to leak information about the location of core kernel data structures
1340 but it does imply that function calls between modules and the core
1341 kernel will need to be resolved via veneers in the module PLT.
1342
1343 When this option is not set, the module region will be randomized over
1344 a limited range that contains the [_stext, _etext] interval of the
1345 core kernel, so branch relocations are always in range.
1346
Ard Biesheuvel0a1213f2018-12-12 13:08:44 +01001347config CC_HAVE_STACKPROTECTOR_SYSREG
1348 def_bool $(cc-option,-mstack-protector-guard=sysreg -mstack-protector-guard-reg=sp_el0 -mstack-protector-guard-offset=0)
1349
1350config STACKPROTECTOR_PER_TASK
1351 def_bool y
1352 depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_SYSREG
1353
Catalin Marinas8c2c3df2012-04-20 14:45:54 +01001354endmenu
1355
1356menu "Boot options"
1357
Lorenzo Pieralisi5e89c552016-01-26 11:10:38 +00001358config ARM64_ACPI_PARKING_PROTOCOL
1359 bool "Enable support for the ARM64 ACPI parking protocol"
1360 depends on ACPI
1361 help
1362 Enable support for the ARM64 ACPI parking protocol. If disabled
1363 the kernel will not allow booting through the ARM64 ACPI parking
1364 protocol even if the corresponding data is present in the ACPI
1365 MADT table.
1366
Catalin Marinas8c2c3df2012-04-20 14:45:54 +01001367config CMDLINE
1368 string "Default kernel command string"
1369 default ""
1370 help
1371 Provide a set of default command-line options at build time by
1372 entering them here. As a minimum, you should specify the the
1373 root device (e.g. root=/dev/nfs).
1374
1375config CMDLINE_FORCE
1376 bool "Always use the default kernel command string"
1377 help
1378 Always use the default kernel command string, even if the boot
1379 loader passes other arguments to the kernel.
1380 This is useful if you cannot or don't want to change the
1381 command-line options your boot loader passes to the kernel.
1382
Ard Biesheuvelf4f75ad52014-07-02 14:54:43 +02001383config EFI_STUB
1384 bool
1385
Mark Salterf84d0272014-04-15 21:59:30 -04001386config EFI
1387 bool "UEFI runtime support"
1388 depends on OF && !CPU_BIG_ENDIAN
Dave Martinb472db62017-10-31 15:50:57 +00001389 depends on KERNEL_MODE_NEON
Arnd Bergmann2c870e62018-07-24 11:48:45 +02001390 select ARCH_SUPPORTS_ACPI
Mark Salterf84d0272014-04-15 21:59:30 -04001391 select LIBFDT
1392 select UCS2_STRING
1393 select EFI_PARAMS_FROM_FDT
Ard Biesheuvele15dd492014-07-04 19:41:53 +02001394 select EFI_RUNTIME_WRAPPERS
Ard Biesheuvelf4f75ad52014-07-02 14:54:43 +02001395 select EFI_STUB
1396 select EFI_ARMSTUB
Mark Salterf84d0272014-04-15 21:59:30 -04001397 default y
1398 help
1399 This option provides support for runtime services provided
1400 by UEFI firmware (such as non-volatile variables, realtime
Mark Salter3c7f2552014-04-15 22:47:52 -04001401 clock, and platform reset). A UEFI stub is also provided to
1402 allow the kernel to be booted as an EFI application. This
1403 is only useful on systems that have UEFI firmware.
Mark Salterf84d0272014-04-15 21:59:30 -04001404
Yi Lid1ae8c02014-10-04 23:46:43 +08001405config DMI
1406 bool "Enable support for SMBIOS (DMI) tables"
1407 depends on EFI
1408 default y
1409 help
1410 This enables SMBIOS/DMI feature for systems.
1411
1412 This option is only useful on systems that have UEFI firmware.
1413 However, even with this option, the resultant kernel should
1414 continue to boot on existing non-UEFI platforms.
1415
Catalin Marinas8c2c3df2012-04-20 14:45:54 +01001416endmenu
1417
Catalin Marinas8c2c3df2012-04-20 14:45:54 +01001418config COMPAT
1419 bool "Kernel support for 32-bit EL0"
Suzuki K. Poulose755e70b2015-10-19 14:19:32 +01001420 depends on ARM64_4K_PAGES || EXPERT
Kefeng Wang2e449042017-01-26 11:19:55 +08001421 select COMPAT_BINFMT_ELF if BINFMT_ELF
Catalin Marinasaf1839e2012-10-08 16:28:08 -07001422 select HAVE_UID16
Al Viro84b9e9b2012-12-25 16:29:11 -05001423 select OLD_SIGSUSPEND3
Al Viro51682032012-12-25 19:31:29 -05001424 select COMPAT_OLD_SIGACTION
Catalin Marinas8c2c3df2012-04-20 14:45:54 +01001425 help
1426 This option enables support for a 32-bit EL0 running under a 64-bit
1427 kernel at EL1. AArch32-specific components such as system calls,
1428 the user helper functions, VFP support and the ptrace interface are
1429 handled appropriately by the kernel.
1430
Suzuki K. Poulose44eaacf2015-10-19 14:19:37 +01001431 If you use a page size other than 4KB (i.e, 16KB or 64KB), please be aware
1432 that you will only be able to execute AArch32 binaries that were compiled
1433 with page size aligned segments.
Alexander Grafa8fcd8b2015-03-16 16:32:23 +00001434
Catalin Marinas8c2c3df2012-04-20 14:45:54 +01001435 If you want to execute 32-bit userspace applications, say Y.
1436
1437config SYSVIPC_COMPAT
1438 def_bool y
1439 depends on COMPAT && SYSVIPC
1440
Lorenzo Pieralisi166936b2013-11-07 18:37:14 +00001441menu "Power management options"
1442
1443source "kernel/power/Kconfig"
1444
James Morse82869ac2016-04-27 17:47:12 +01001445config ARCH_HIBERNATION_POSSIBLE
1446 def_bool y
1447 depends on CPU_PM
1448
1449config ARCH_HIBERNATION_HEADER
1450 def_bool y
1451 depends on HIBERNATION
1452
Lorenzo Pieralisi166936b2013-11-07 18:37:14 +00001453config ARCH_SUSPEND_POSSIBLE
1454 def_bool y
1455
Lorenzo Pieralisi166936b2013-11-07 18:37:14 +00001456endmenu
1457
Lorenzo Pieralisi13072202013-07-17 14:54:21 +01001458menu "CPU Power Management"
1459
1460source "drivers/cpuidle/Kconfig"
1461
Rob Herring52e7e812014-02-24 11:27:57 +09001462source "drivers/cpufreq/Kconfig"
1463
1464endmenu
1465
Mark Salterf84d0272014-04-15 21:59:30 -04001466source "drivers/firmware/Kconfig"
1467
Graeme Gregoryb6a02172015-03-24 14:02:53 +00001468source "drivers/acpi/Kconfig"
1469
Marc Zyngierc3eb5b12013-07-04 13:34:32 +01001470source "arch/arm64/kvm/Kconfig"
1471
Ard Biesheuvel2c988332014-03-06 16:23:33 +08001472if CRYPTO
1473source "arch/arm64/crypto/Kconfig"
1474endif