xref: /openbmc/linux/arch/arm64/Kconfig (revision 6774def6)
1config ARM64
2	def_bool y
3	select ARCH_BINFMT_ELF_RANDOMIZE_PIE
4	select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
5	select ARCH_HAS_SG_CHAIN
6	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
7	select ARCH_USE_CMPXCHG_LOCKREF
8	select ARCH_SUPPORTS_ATOMIC_RMW
9	select ARCH_WANT_OPTIONAL_GPIOLIB
10	select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
11	select ARCH_WANT_FRAME_POINTERS
12	select ARM_AMBA
13	select ARM_ARCH_TIMER
14	select ARM_GIC
15	select AUDIT_ARCH_COMPAT_GENERIC
16	select ARM_GIC_V3
17	select BUILDTIME_EXTABLE_SORT
18	select CLONE_BACKWARDS
19	select COMMON_CLK
20	select CPU_PM if (SUSPEND || CPU_IDLE)
21	select DCACHE_WORD_ACCESS
22	select GENERIC_ALLOCATOR
23	select GENERIC_CLOCKEVENTS
24	select GENERIC_CLOCKEVENTS_BROADCAST if SMP
25	select GENERIC_CPU_AUTOPROBE
26	select GENERIC_EARLY_IOREMAP
27	select GENERIC_IOMAP
28	select GENERIC_IRQ_PROBE
29	select GENERIC_IRQ_SHOW
30	select GENERIC_SCHED_CLOCK
31	select GENERIC_SMP_IDLE_THREAD
32	select GENERIC_STRNCPY_FROM_USER
33	select GENERIC_STRNLEN_USER
34	select GENERIC_TIME_VSYSCALL
35	select HANDLE_DOMAIN_IRQ
36	select HARDIRQS_SW_RESEND
37	select HAVE_ARCH_AUDITSYSCALL
38	select HAVE_ARCH_JUMP_LABEL
39	select HAVE_ARCH_KGDB
40	select HAVE_ARCH_TRACEHOOK
41	select HAVE_BPF_JIT
42	select HAVE_C_RECORDMCOUNT
43	select HAVE_CC_STACKPROTECTOR
44	select HAVE_DEBUG_BUGVERBOSE
45	select HAVE_DEBUG_KMEMLEAK
46	select HAVE_DMA_API_DEBUG
47	select HAVE_DMA_ATTRS
48	select HAVE_DMA_CONTIGUOUS
49	select HAVE_DYNAMIC_FTRACE
50	select HAVE_EFFICIENT_UNALIGNED_ACCESS
51	select HAVE_FTRACE_MCOUNT_RECORD
52	select HAVE_FUNCTION_TRACER
53	select HAVE_FUNCTION_GRAPH_TRACER
54	select HAVE_GENERIC_DMA_COHERENT
55	select HAVE_HW_BREAKPOINT if PERF_EVENTS
56	select HAVE_MEMBLOCK
57	select HAVE_PATA_PLATFORM
58	select HAVE_PERF_EVENTS
59	select HAVE_PERF_REGS
60	select HAVE_PERF_USER_STACK_DUMP
61	select HAVE_RCU_TABLE_FREE
62	select HAVE_SYSCALL_TRACEPOINTS
63	select IRQ_DOMAIN
64	select MODULES_USE_ELF_RELA
65	select NO_BOOTMEM
66	select OF
67	select OF_EARLY_FLATTREE
68	select OF_RESERVED_MEM
69	select PERF_USE_VMALLOC
70	select POWER_RESET
71	select POWER_SUPPLY
72	select RTC_LIB
73	select SPARSE_IRQ
74	select SYSCTL_EXCEPTION_TRACE
75	select HAVE_CONTEXT_TRACKING
76	help
77	  ARM 64-bit (AArch64) Linux support.
78
79config 64BIT
80	def_bool y
81
82config ARCH_PHYS_ADDR_T_64BIT
83	def_bool y
84
85config MMU
86	def_bool y
87
88config NO_IOPORT_MAP
89	def_bool y if !PCI
90
91config STACKTRACE_SUPPORT
92	def_bool y
93
94config LOCKDEP_SUPPORT
95	def_bool y
96
97config TRACE_IRQFLAGS_SUPPORT
98	def_bool y
99
100config RWSEM_XCHGADD_ALGORITHM
101	def_bool y
102
103config GENERIC_HWEIGHT
104	def_bool y
105
106config GENERIC_CSUM
107        def_bool y
108
109config GENERIC_CALIBRATE_DELAY
110	def_bool y
111
112config ZONE_DMA
113	def_bool y
114
115config HAVE_GENERIC_RCU_GUP
116	def_bool y
117
118config ARCH_DMA_ADDR_T_64BIT
119	def_bool y
120
121config NEED_DMA_MAP_STATE
122	def_bool y
123
124config NEED_SG_DMA_LENGTH
125	def_bool y
126
127config SWIOTLB
128	def_bool y
129
130config IOMMU_HELPER
131	def_bool SWIOTLB
132
133config KERNEL_MODE_NEON
134	def_bool y
135
136config FIX_EARLYCON_MEM
137	def_bool y
138
139source "init/Kconfig"
140
141source "kernel/Kconfig.freezer"
142
143menu "Platform selection"
144
145config ARCH_THUNDER
146	bool "Cavium Inc. Thunder SoC Family"
147	help
148	  This enables support for Cavium's Thunder Family of SoCs.
149
150config ARCH_VEXPRESS
151	bool "ARMv8 software model (Versatile Express)"
152	select ARCH_REQUIRE_GPIOLIB
153	select COMMON_CLK_VERSATILE
154	select POWER_RESET_VEXPRESS
155	select VEXPRESS_CONFIG
156	help
157	  This enables support for the ARMv8 software model (Versatile
158	  Express).
159
160config ARCH_XGENE
161	bool "AppliedMicro X-Gene SOC Family"
162	help
163	  This enables support for AppliedMicro X-Gene SOC Family
164
165endmenu
166
167menu "Bus support"
168
169config ARM_AMBA
170	bool
171
172config PCI
173	bool "PCI support"
174	help
175	  This feature enables support for PCI bus system. If you say Y
176	  here, the kernel will include drivers and infrastructure code
177	  to support PCI bus devices.
178
179config PCI_DOMAINS
180	def_bool PCI
181
182config PCI_DOMAINS_GENERIC
183	def_bool PCI
184
185config PCI_SYSCALL
186	def_bool PCI
187
188source "drivers/pci/Kconfig"
189source "drivers/pci/pcie/Kconfig"
190source "drivers/pci/hotplug/Kconfig"
191
192endmenu
193
194menu "Kernel Features"
195
196choice
197	prompt "Page size"
198	default ARM64_4K_PAGES
199	help
200	  Page size (translation granule) configuration.
201
202config ARM64_4K_PAGES
203	bool "4KB"
204	help
205	  This feature enables 4KB pages support.
206
207config ARM64_64K_PAGES
208	bool "64KB"
209	help
210	  This feature enables 64KB pages support (4KB by default)
211	  allowing only two levels of page tables and faster TLB
212	  look-up. AArch32 emulation is not available when this feature
213	  is enabled.
214
215endchoice
216
217choice
218	prompt "Virtual address space size"
219	default ARM64_VA_BITS_39 if ARM64_4K_PAGES
220	default ARM64_VA_BITS_42 if ARM64_64K_PAGES
221	help
222	  Allows choosing one of multiple possible virtual address
223	  space sizes. The level of translation table is determined by
224	  a combination of page size and virtual address space size.
225
226config ARM64_VA_BITS_39
227	bool "39-bit"
228	depends on ARM64_4K_PAGES
229
230config ARM64_VA_BITS_42
231	bool "42-bit"
232	depends on ARM64_64K_PAGES
233
234config ARM64_VA_BITS_48
235	bool "48-bit"
236	depends on !ARM_SMMU
237
238endchoice
239
240config ARM64_VA_BITS
241	int
242	default 39 if ARM64_VA_BITS_39
243	default 42 if ARM64_VA_BITS_42
244	default 48 if ARM64_VA_BITS_48
245
246config ARM64_PGTABLE_LEVELS
247	int
248	default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42
249	default 3 if ARM64_64K_PAGES && ARM64_VA_BITS_48
250	default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39
251	default 4 if ARM64_4K_PAGES && ARM64_VA_BITS_48
252
253config CPU_BIG_ENDIAN
254       bool "Build big-endian kernel"
255       help
256         Say Y if you plan on running a kernel in big-endian mode.
257
258config SMP
259	bool "Symmetric Multi-Processing"
260	help
261	  This enables support for systems with more than one CPU.  If
262	  you say N here, the kernel will run on single and
263	  multiprocessor machines, but will use only one CPU of a
264	  multiprocessor machine. If you say Y here, the kernel will run
265	  on many, but not all, single processor machines. On a single
266	  processor machine, the kernel will run faster if you say N
267	  here.
268
269	  If you don't know what to do here, say N.
270
271config SCHED_MC
272	bool "Multi-core scheduler support"
273	depends on SMP
274	help
275	  Multi-core scheduler support improves the CPU scheduler's decision
276	  making when dealing with multi-core CPU chips at a cost of slightly
277	  increased overhead in some places. If unsure say N here.
278
279config SCHED_SMT
280	bool "SMT scheduler support"
281	depends on SMP
282	help
283	  Improves the CPU scheduler's decision making when dealing with
284	  MultiThreading at a cost of slightly increased overhead in some
285	  places. If unsure say N here.
286
287config NR_CPUS
288	int "Maximum number of CPUs (2-64)"
289	range 2 64
290	depends on SMP
291	# These have to remain sorted largest to smallest
292	default "64"
293
294config HOTPLUG_CPU
295	bool "Support for hot-pluggable CPUs"
296	depends on SMP
297	help
298	  Say Y here to experiment with turning CPUs off and on.  CPUs
299	  can be controlled through /sys/devices/system/cpu.
300
301source kernel/Kconfig.preempt
302
303config HZ
304	int
305	default 100
306
307config ARCH_HAS_HOLES_MEMORYMODEL
308	def_bool y if SPARSEMEM
309
310config ARCH_SPARSEMEM_ENABLE
311	def_bool y
312	select SPARSEMEM_VMEMMAP_ENABLE
313
314config ARCH_SPARSEMEM_DEFAULT
315	def_bool ARCH_SPARSEMEM_ENABLE
316
317config ARCH_SELECT_MEMORY_MODEL
318	def_bool ARCH_SPARSEMEM_ENABLE
319
320config HAVE_ARCH_PFN_VALID
321	def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
322
323config HW_PERF_EVENTS
324	bool "Enable hardware performance counter support for perf events"
325	depends on PERF_EVENTS
326	default y
327	help
328	  Enable hardware performance counter support for perf events. If
329	  disabled, perf events will use software events only.
330
331config SYS_SUPPORTS_HUGETLBFS
332	def_bool y
333
334config ARCH_WANT_GENERAL_HUGETLB
335	def_bool y
336
337config ARCH_WANT_HUGE_PMD_SHARE
338	def_bool y if !ARM64_64K_PAGES
339
340config HAVE_ARCH_TRANSPARENT_HUGEPAGE
341	def_bool y
342
343config ARCH_HAS_CACHE_LINE_SIZE
344	def_bool y
345
346source "mm/Kconfig"
347
348config XEN_DOM0
349	def_bool y
350	depends on XEN
351
352config XEN
353	bool "Xen guest support on ARM64"
354	depends on ARM64 && OF
355	select SWIOTLB_XEN
356	help
357	  Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64.
358
359config FORCE_MAX_ZONEORDER
360	int
361	default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
362	default "11"
363
364endmenu
365
366menu "Boot options"
367
368config CMDLINE
369	string "Default kernel command string"
370	default ""
371	help
372	  Provide a set of default command-line options at build time by
373	  entering them here. As a minimum, you should specify the the
374	  root device (e.g. root=/dev/nfs).
375
376config CMDLINE_FORCE
377	bool "Always use the default kernel command string"
378	help
379	  Always use the default kernel command string, even if the boot
380	  loader passes other arguments to the kernel.
381	  This is useful if you cannot or don't want to change the
382	  command-line options your boot loader passes to the kernel.
383
384config EFI_STUB
385	bool
386
387config EFI
388	bool "UEFI runtime support"
389	depends on OF && !CPU_BIG_ENDIAN
390	select LIBFDT
391	select UCS2_STRING
392	select EFI_PARAMS_FROM_FDT
393	select EFI_RUNTIME_WRAPPERS
394	select EFI_STUB
395	select EFI_ARMSTUB
396	default y
397	help
398	  This option provides support for runtime services provided
399	  by UEFI firmware (such as non-volatile variables, realtime
400          clock, and platform reset). A UEFI stub is also provided to
401	  allow the kernel to be booted as an EFI application. This
402	  is only useful on systems that have UEFI firmware.
403
404endmenu
405
406menu "Userspace binary formats"
407
408source "fs/Kconfig.binfmt"
409
410config COMPAT
411	bool "Kernel support for 32-bit EL0"
412	depends on !ARM64_64K_PAGES
413	select COMPAT_BINFMT_ELF
414	select HAVE_UID16
415	select OLD_SIGSUSPEND3
416	select COMPAT_OLD_SIGACTION
417	help
418	  This option enables support for a 32-bit EL0 running under a 64-bit
419	  kernel at EL1. AArch32-specific components such as system calls,
420	  the user helper functions, VFP support and the ptrace interface are
421	  handled appropriately by the kernel.
422
423	  If you want to execute 32-bit userspace applications, say Y.
424
425config SYSVIPC_COMPAT
426	def_bool y
427	depends on COMPAT && SYSVIPC
428
429endmenu
430
431menu "Power management options"
432
433source "kernel/power/Kconfig"
434
435config ARCH_SUSPEND_POSSIBLE
436	def_bool y
437
438config ARM64_CPU_SUSPEND
439	def_bool PM_SLEEP
440
441endmenu
442
443menu "CPU Power Management"
444
445source "drivers/cpuidle/Kconfig"
446
447source "drivers/cpufreq/Kconfig"
448
449endmenu
450
451source "net/Kconfig"
452
453source "drivers/Kconfig"
454
455source "drivers/firmware/Kconfig"
456
457source "fs/Kconfig"
458
459source "arch/arm64/kvm/Kconfig"
460
461source "arch/arm64/Kconfig.debug"
462
463source "security/Kconfig"
464
465source "crypto/Kconfig"
466if CRYPTO
467source "arch/arm64/crypto/Kconfig"
468endif
469
470source "lib/Kconfig"
471