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