1 config ARM64
2 def_bool y
3 select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
4 select ARCH_USE_CMPXCHG_LOCKREF
5 select ARCH_SUPPORTS_ATOMIC_RMW
6 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
7 select ARCH_WANT_OPTIONAL_GPIOLIB
8 select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
9 select ARCH_WANT_FRAME_POINTERS
10 select ARM_AMBA
11 select ARM_ARCH_TIMER
12 select ARM_GIC
13 select AUDIT_ARCH_COMPAT_GENERIC
14 select BUILDTIME_EXTABLE_SORT
15 select CLONE_BACKWARDS
16 select COMMON_CLK
17 select CPU_PM if (SUSPEND || CPU_IDLE)
18 select DCACHE_WORD_ACCESS
19 select GENERIC_CLOCKEVENTS
20 select GENERIC_CLOCKEVENTS_BROADCAST if SMP
21 select GENERIC_CPU_AUTOPROBE
22 select GENERIC_IOMAP
23 select GENERIC_IRQ_PROBE
24 select GENERIC_IRQ_SHOW
25 select GENERIC_SCHED_CLOCK
26 select GENERIC_SMP_IDLE_THREAD
27 select GENERIC_STRNCPY_FROM_USER
28 select GENERIC_STRNLEN_USER
29 select GENERIC_TIME_VSYSCALL
30 select HARDIRQS_SW_RESEND
31 select HAVE_ARCH_AUDITSYSCALL
32 select HAVE_ARCH_JUMP_LABEL
33 select HAVE_ARCH_SECCOMP_FILTER
34 select HAVE_ARCH_TRACEHOOK
35 select HAVE_DEBUG_BUGVERBOSE
36 select HAVE_DEBUG_KMEMLEAK
37 select HAVE_DMA_API_DEBUG
38 select HAVE_DMA_ATTRS
39 select HAVE_DMA_CONTIGUOUS
40 select HAVE_EFFICIENT_UNALIGNED_ACCESS
41 select HAVE_GENERIC_DMA_COHERENT
42 select HAVE_HW_BREAKPOINT if PERF_EVENTS
43 select HAVE_MEMBLOCK
44 select HAVE_PATA_PLATFORM
45 select HAVE_PERF_EVENTS
46 select IRQ_DOMAIN
47 select MODULES_USE_ELF_RELA
48 select NO_BOOTMEM
49 select OF
50 select OF_EARLY_FLATTREE
51 select OF_RESERVED_MEM
52 select PERF_USE_VMALLOC
53 select POWER_RESET
54 select POWER_SUPPLY
55 select RTC_LIB
56 select SPARSE_IRQ
57 select SYSCTL_EXCEPTION_TRACE
58 help
59 ARM 64-bit (AArch64) Linux support.
61 config 64BIT
62 def_bool y
64 config ARCH_PHYS_ADDR_T_64BIT
65 def_bool y
67 config MMU
68 def_bool y
70 config NO_IOPORT
71 def_bool y
73 config STACKTRACE_SUPPORT
74 def_bool y
76 config LOCKDEP_SUPPORT
77 def_bool y
79 config TRACE_IRQFLAGS_SUPPORT
80 def_bool y
82 config RWSEM_GENERIC_SPINLOCK
83 def_bool y
85 config GENERIC_HWEIGHT
86 def_bool y
88 config GENERIC_CSUM
89 def_bool y
91 config GENERIC_CALIBRATE_DELAY
92 def_bool y
94 config ZONE_DMA32
95 def_bool y
97 config ARCH_DMA_ADDR_T_64BIT
98 def_bool y
100 config NEED_DMA_MAP_STATE
101 def_bool y
103 config NEED_SG_DMA_LENGTH
104 def_bool y
106 config SWIOTLB
107 def_bool y
109 config IOMMU_HELPER
110 def_bool SWIOTLB
112 config KERNEL_MODE_NEON
113 def_bool y
115 source "init/Kconfig"
117 source "kernel/Kconfig.freezer"
119 menu "Platform selection"
121 config ARCH_VEXPRESS
122 bool "ARMv8 software model (Versatile Express)"
123 select ARCH_REQUIRE_GPIOLIB
124 select COMMON_CLK_VERSATILE
125 select POWER_RESET_VEXPRESS
126 select VEXPRESS_CONFIG
127 help
128 This enables support for the ARMv8 software model (Versatile
129 Express).
131 config ARCH_XGENE
132 bool "AppliedMicro X-Gene SOC Family"
133 help
134 This enables support for AppliedMicro X-Gene SOC Family
136 endmenu
138 menu "Bus support"
140 config ARM_AMBA
141 bool
143 endmenu
145 menu "Kernel Features"
147 config ARM64_64K_PAGES
148 bool "Enable 64KB pages support"
149 help
150 This feature enables 64KB pages support (4KB by default)
151 allowing only two levels of page tables and faster TLB
152 look-up. AArch32 emulation is not available when this feature
153 is enabled.
155 config CPU_BIG_ENDIAN
156 bool "Build big-endian kernel"
157 help
158 Say Y if you plan on running a kernel in big-endian mode.
160 config SMP
161 bool "Symmetric Multi-Processing"
162 help
163 This enables support for systems with more than one CPU. If
164 you say N here, the kernel will run on single and
165 multiprocessor machines, but will use only one CPU of a
166 multiprocessor machine. If you say Y here, the kernel will run
167 on many, but not all, single processor machines. On a single
168 processor machine, the kernel will run faster if you say N
169 here.
171 If you don't know what to do here, say N.
173 config NR_CPUS
174 int "Maximum number of CPUs (2-32)"
175 range 2 32
176 depends on SMP
177 # These have to remain sorted largest to smallest
178 default "8"
180 config HOTPLUG_CPU
181 bool "Support for hot-pluggable CPUs"
182 depends on SMP
183 help
184 Say Y here to experiment with turning CPUs off and on. CPUs
185 can be controlled through /sys/devices/system/cpu.
187 source kernel/Kconfig.preempt
189 config HZ
190 int
191 default 100
193 config ARCH_HAS_HOLES_MEMORYMODEL
194 def_bool y if SPARSEMEM
196 config ARCH_SPARSEMEM_ENABLE
197 def_bool y
198 select SPARSEMEM_VMEMMAP_ENABLE
200 config ARCH_SPARSEMEM_DEFAULT
201 def_bool ARCH_SPARSEMEM_ENABLE
203 config ARCH_SELECT_MEMORY_MODEL
204 def_bool ARCH_SPARSEMEM_ENABLE
206 config HAVE_ARCH_PFN_VALID
207 def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
209 config HW_PERF_EVENTS
210 bool "Enable hardware performance counter support for perf events"
211 depends on PERF_EVENTS
212 default y
213 help
214 Enable hardware performance counter support for perf events. If
215 disabled, perf events will use software events only.
217 config SYS_SUPPORTS_HUGETLBFS
218 def_bool y
220 config ARCH_WANT_GENERAL_HUGETLB
221 def_bool y
223 config ARCH_WANT_HUGE_PMD_SHARE
224 def_bool y if !ARM64_64K_PAGES
226 config HAVE_ARCH_TRANSPARENT_HUGEPAGE
227 def_bool y
229 config ARMV7_COMPAT
230 bool "Kernel support for ARMv7 applications"
231 depends on COMPAT
232 select SWP_EMULATE
233 help
234 This option enables features that allow that ran on an ARMv7 or older
235 processor to continue functioning.
237 If you want to execute ARMv7 applications, say Y
239 config ARMV7_COMPAT_CPUINFO
240 bool "Report backwards compatible cpu features in /proc/cpuinfo"
241 depends on ARMV7_COMPAT
242 default y
243 help
244 This option makes /proc/cpuinfo list CPU features that an ARMv7 or
245 earlier kernel would report, but are not optional on an ARMv8 or later
246 processor.
248 If you want to execute ARMv7 applications, say Y
250 source "mm/Kconfig"
252 config XEN_DOM0
253 def_bool y
254 depends on XEN
256 config XEN
257 bool "Xen guest support on ARM64 (EXPERIMENTAL)"
258 depends on ARM64 && OF
259 select SWIOTLB_XEN
260 help
261 Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64.
263 config FORCE_MAX_ZONEORDER
264 int
265 default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
266 default "11"
268 config SECCOMP
269 bool "Enable seccomp to safely compute untrusted bytecode"
270 ---help---
271 This kernel feature is useful for number crunching applications
272 that may need to compute untrusted bytecode during their
273 execution. By using pipes or other transports made available to
274 the process as file descriptors supporting the read/write
275 syscalls, it's possible to isolate those applications in
276 their own address space using seccomp. Once seccomp is
277 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
278 and the task is only allowed to execute a few safe syscalls
279 defined by each seccomp mode.
281 menuconfig ARMV8_DEPRECATED
282 bool "Emulate deprecated/obsolete ARMv8 instructions"
283 depends on COMPAT
284 help
285 Legacy software support may require certain instructions
286 that have been deprecated or obsoleted in the architecture.
288 Enable this config to enable selective emulation of these
289 features.
291 If unsure, say Y
293 if ARMV8_DEPRECATED
295 config SWP_EMULATION
296 bool "Emulate SWP/SWPB instructions"
297 help
298 ARMv8 obsoletes the use of A32 SWP/SWPB instructions such that
299 they are always undefined. Say Y here to enable software
300 emulation of these instructions for userspace using LDXR/STXR.
302 In some older versions of glibc [<=2.8] SWP is used during futex
303 trylock() operations with the assumption that the code will not
304 be preempted. This invalid assumption may be more likely to fail
305 with SWP emulation enabled, leading to deadlock of the user
306 application.
308 NOTE: when accessing uncached shared regions, LDXR/STXR rely
309 on an external transaction monitoring block called a global
310 monitor to maintain update atomicity. If your system does not
311 implement a global monitor, this option can cause programs that
312 perform SWP operations to uncached memory to deadlock.
314 If unsure, say Y
316 config CP15_BARRIER_EMULATION
317 bool "Emulate CP15 Barrier instructions"
318 help
319 The CP15 barrier instructions - CP15ISB, CP15DSB, and
320 CP15DMB - are deprecated in ARMv8 (and ARMv7). It is
321 strongly recommended to use the ISB, DSB, and DMB
322 instructions instead.
324 Say Y here to enable software emulation of these
325 instructions for AArch32 userspace code. When this option is
326 enabled, CP15 barrier usage is traced which can help
327 identify software that needs updating.
329 If unsure, say Y
331 config SETEND_EMULATION
332 bool "Emulate SETEND instruction"
333 help
334 The SETEND instruction alters the data-endianness of the
335 AArch32 EL0, and is deprecated in ARMv8.
337 Say Y here to enable software emulation of the instruction
338 for AArch32 userspace code.
340 Note: All the cpus on the system must have mixed endian support at EL0
341 for this feature to be enabled. If a new CPU - which doesn't support mixed
342 endian - is hotplugged in after this feature has been enabled, there could
343 be unexpected results in the applications.
345 If unsure, say Y
347 endif
349 endmenu
351 menu "Boot options"
353 config CMDLINE
354 string "Default kernel command string"
355 default ""
356 help
357 Provide a set of default command-line options at build time by
358 entering them here. As a minimum, you should specify the the
359 root device (e.g. root=/dev/nfs).
361 choice
362 prompt "Kernel command line type" if CMDLINE != ""
363 default CMDLINE_FROM_BOOTLOADER
365 config CMDLINE_FROM_BOOTLOADER
366 bool "Use bootloader kernel arguments if available"
367 help
368 Uses the command-line options passed by the boot loader. If
369 the boot loader doesn't provide any, the default kernel command
370 string provided in CMDLINE will be used.
372 config CMDLINE_EXTEND
373 bool "Extend bootloader kernel arguments"
374 help
375 The command-line arguments provided by the boot loader will be
376 appended to the default kernel command string.
378 config CMDLINE_FORCE
379 bool "Always use the default kernel command string"
380 help
381 Always use the default kernel command string, even if the boot
382 loader passes other arguments to the kernel.
383 This is useful if you cannot or don't want to change the
384 command-line options your boot loader passes to the kernel.
385 endchoice
387 config BUILD_ARM64_APPENDED_DTB_IMAGE
388 bool "Build a concatenated Image.gz/dtb by default"
389 depends on OF
390 help
391 Enabling this option will cause a concatenated Image.gz and list of
392 DTBs to be built by default (instead of a standalone Image.gz.)
393 The image will built in arch/arm64/boot/Image.gz-dtb
395 config BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES
396 string "Default dtb names"
397 depends on BUILD_ARM64_APPENDED_DTB_IMAGE
398 help
399 Space separated list of names of dtbs to append when
400 building a concatenated Image.gz-dtb.
402 endmenu
404 menu "Userspace binary formats"
406 source "fs/Kconfig.binfmt"
408 config COMPAT
409 bool "Kernel support for 32-bit EL0"
410 depends on !ARM64_64K_PAGES
411 select COMPAT_BINFMT_ELF
412 select HAVE_UID16
413 select OLD_SIGSUSPEND3
414 select COMPAT_OLD_SIGACTION
415 help
416 This option enables support for a 32-bit EL0 running under a 64-bit
417 kernel at EL1. AArch32-specific components such as system calls,
418 the user helper functions, VFP support and the ptrace interface are
419 handled appropriately by the kernel.
421 If you want to execute 32-bit userspace applications, say Y.
423 config SYSVIPC_COMPAT
424 def_bool y
425 depends on COMPAT && SYSVIPC
427 endmenu
429 menu "Power management options"
431 source "kernel/power/Kconfig"
433 config ARCH_SUSPEND_POSSIBLE
434 def_bool y
436 config ARM64_CPU_SUSPEND
437 def_bool PM_SLEEP
439 endmenu
441 menu "CPU Power Management"
443 source "drivers/cpuidle/Kconfig"
445 endmenu
447 source "net/Kconfig"
449 source "drivers/Kconfig"
451 source "fs/Kconfig"
453 source "arch/arm64/kvm/Kconfig"
455 source "arch/arm64/Kconfig.debug"
457 source "security/Kconfig"
459 source "crypto/Kconfig"
460 if CRYPTO
461 source "arch/arm64/crypto/Kconfig"
462 endif
464 source "lib/Kconfig"