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