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