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