arm64: add Cortex-A57 erratum 832075 workaround
[linux-2.6-block.git] / arch / arm64 / Kconfig
1 config 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_ALIGNED_STRUCT_PAGE if SLUB
38         select HAVE_ARCH_AUDITSYSCALL
39         select HAVE_ARCH_JUMP_LABEL
40         select HAVE_ARCH_KGDB
41         select HAVE_ARCH_TRACEHOOK
42         select HAVE_BPF_JIT
43         select HAVE_C_RECORDMCOUNT
44         select HAVE_CC_STACKPROTECTOR
45         select HAVE_CMPXCHG_DOUBLE
46         select HAVE_DEBUG_BUGVERBOSE
47         select HAVE_DEBUG_KMEMLEAK
48         select HAVE_DMA_API_DEBUG
49         select HAVE_DMA_ATTRS
50         select HAVE_DMA_CONTIGUOUS
51         select HAVE_DYNAMIC_FTRACE
52         select HAVE_EFFICIENT_UNALIGNED_ACCESS
53         select HAVE_FTRACE_MCOUNT_RECORD
54         select HAVE_FUNCTION_TRACER
55         select HAVE_FUNCTION_GRAPH_TRACER
56         select HAVE_GENERIC_DMA_COHERENT
57         select HAVE_HW_BREAKPOINT if PERF_EVENTS
58         select HAVE_MEMBLOCK
59         select HAVE_PATA_PLATFORM
60         select HAVE_PERF_EVENTS
61         select HAVE_PERF_REGS
62         select HAVE_PERF_USER_STACK_DUMP
63         select HAVE_RCU_TABLE_FREE
64         select HAVE_SYSCALL_TRACEPOINTS
65         select IRQ_DOMAIN
66         select MODULES_USE_ELF_RELA
67         select NO_BOOTMEM
68         select OF
69         select OF_EARLY_FLATTREE
70         select OF_RESERVED_MEM
71         select PERF_USE_VMALLOC
72         select POWER_RESET
73         select POWER_SUPPLY
74         select RTC_LIB
75         select SPARSE_IRQ
76         select SYSCTL_EXCEPTION_TRACE
77         select HAVE_CONTEXT_TRACKING
78         help
79           ARM 64-bit (AArch64) Linux support.
80
81 config 64BIT
82         def_bool y
83
84 config ARCH_PHYS_ADDR_T_64BIT
85         def_bool y
86
87 config MMU
88         def_bool y
89
90 config NO_IOPORT_MAP
91         def_bool y if !PCI
92
93 config STACKTRACE_SUPPORT
94         def_bool y
95
96 config LOCKDEP_SUPPORT
97         def_bool y
98
99 config TRACE_IRQFLAGS_SUPPORT
100         def_bool y
101
102 config RWSEM_XCHGADD_ALGORITHM
103         def_bool y
104
105 config GENERIC_HWEIGHT
106         def_bool y
107
108 config GENERIC_CSUM
109         def_bool y
110
111 config GENERIC_CALIBRATE_DELAY
112         def_bool y
113
114 config ZONE_DMA
115         def_bool y
116
117 config HAVE_GENERIC_RCU_GUP
118         def_bool y
119
120 config ARCH_DMA_ADDR_T_64BIT
121         def_bool y
122
123 config NEED_DMA_MAP_STATE
124         def_bool y
125
126 config NEED_SG_DMA_LENGTH
127         def_bool y
128
129 config SWIOTLB
130         def_bool y
131
132 config IOMMU_HELPER
133         def_bool SWIOTLB
134
135 config KERNEL_MODE_NEON
136         def_bool y
137
138 config FIX_EARLYCON_MEM
139         def_bool y
140
141 source "init/Kconfig"
142
143 source "kernel/Kconfig.freezer"
144
145 menu "Platform selection"
146
147 config ARCH_THUNDER
148         bool "Cavium Inc. Thunder SoC Family"
149         help
150           This enables support for Cavium's Thunder Family of SoCs.
151
152 config ARCH_VEXPRESS
153         bool "ARMv8 software model (Versatile Express)"
154         select ARCH_REQUIRE_GPIOLIB
155         select COMMON_CLK_VERSATILE
156         select POWER_RESET_VEXPRESS
157         select VEXPRESS_CONFIG
158         help
159           This enables support for the ARMv8 software model (Versatile
160           Express).
161
162 config ARCH_XGENE
163         bool "AppliedMicro X-Gene SOC Family"
164         help
165           This enables support for AppliedMicro X-Gene SOC Family
166
167 endmenu
168
169 menu "Bus support"
170
171 config ARM_AMBA
172         bool
173
174 config PCI
175         bool "PCI support"
176         help
177           This feature enables support for PCI bus system. If you say Y
178           here, the kernel will include drivers and infrastructure code
179           to support PCI bus devices.
180
181 config PCI_DOMAINS
182         def_bool PCI
183
184 config PCI_DOMAINS_GENERIC
185         def_bool PCI
186
187 config PCI_SYSCALL
188         def_bool PCI
189
190 source "drivers/pci/Kconfig"
191 source "drivers/pci/pcie/Kconfig"
192 source "drivers/pci/hotplug/Kconfig"
193
194 endmenu
195
196 menu "Kernel Features"
197
198 choice
199         prompt "Page size"
200         default ARM64_4K_PAGES
201         help
202           Page size (translation granule) configuration.
203
204 config ARM64_4K_PAGES
205         bool "4KB"
206         help
207           This feature enables 4KB pages support.
208
209 config ARM64_64K_PAGES
210         bool "64KB"
211         help
212           This feature enables 64KB pages support (4KB by default)
213           allowing only two levels of page tables and faster TLB
214           look-up. AArch32 emulation is not available when this feature
215           is enabled.
216
217 endchoice
218
219 choice
220         prompt "Virtual address space size"
221         default ARM64_VA_BITS_39 if ARM64_4K_PAGES
222         default ARM64_VA_BITS_42 if ARM64_64K_PAGES
223         help
224           Allows choosing one of multiple possible virtual address
225           space sizes. The level of translation table is determined by
226           a combination of page size and virtual address space size.
227
228 config ARM64_VA_BITS_39
229         bool "39-bit"
230         depends on ARM64_4K_PAGES
231
232 config ARM64_VA_BITS_42
233         bool "42-bit"
234         depends on ARM64_64K_PAGES
235
236 config ARM64_VA_BITS_48
237         bool "48-bit"
238         depends on !ARM_SMMU
239
240 endchoice
241
242 config ARM64_VA_BITS
243         int
244         default 39 if ARM64_VA_BITS_39
245         default 42 if ARM64_VA_BITS_42
246         default 48 if ARM64_VA_BITS_48
247
248 config ARM64_PGTABLE_LEVELS
249         int
250         default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42
251         default 3 if ARM64_64K_PAGES && ARM64_VA_BITS_48
252         default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39
253         default 4 if ARM64_4K_PAGES && ARM64_VA_BITS_48
254
255 config CPU_BIG_ENDIAN
256        bool "Build big-endian kernel"
257        help
258          Say Y if you plan on running a kernel in big-endian mode.
259
260 config SMP
261         bool "Symmetric Multi-Processing"
262         help
263           This enables support for systems with more than one CPU.  If
264           you say N here, the kernel will run on single and
265           multiprocessor machines, but will use only one CPU of a
266           multiprocessor machine. If you say Y here, the kernel will run
267           on many, but not all, single processor machines. On a single
268           processor machine, the kernel will run faster if you say N
269           here.
270
271           If you don't know what to do here, say N.
272
273 config SCHED_MC
274         bool "Multi-core scheduler support"
275         depends on SMP
276         help
277           Multi-core scheduler support improves the CPU scheduler's decision
278           making when dealing with multi-core CPU chips at a cost of slightly
279           increased overhead in some places. If unsure say N here.
280
281 config SCHED_SMT
282         bool "SMT scheduler support"
283         depends on SMP
284         help
285           Improves the CPU scheduler's decision making when dealing with
286           MultiThreading at a cost of slightly increased overhead in some
287           places. If unsure say N here.
288
289 config NR_CPUS
290         int "Maximum number of CPUs (2-64)"
291         range 2 64
292         depends on SMP
293         # These have to remain sorted largest to smallest
294         default "64"
295
296 config HOTPLUG_CPU
297         bool "Support for hot-pluggable CPUs"
298         depends on SMP
299         help
300           Say Y here to experiment with turning CPUs off and on.  CPUs
301           can be controlled through /sys/devices/system/cpu.
302
303 source kernel/Kconfig.preempt
304
305 config HZ
306         int
307         default 100
308
309 config ARCH_HAS_HOLES_MEMORYMODEL
310         def_bool y if SPARSEMEM
311
312 config ARCH_SPARSEMEM_ENABLE
313         def_bool y
314         select SPARSEMEM_VMEMMAP_ENABLE
315
316 config ARCH_SPARSEMEM_DEFAULT
317         def_bool ARCH_SPARSEMEM_ENABLE
318
319 config ARCH_SELECT_MEMORY_MODEL
320         def_bool ARCH_SPARSEMEM_ENABLE
321
322 config HAVE_ARCH_PFN_VALID
323         def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
324
325 config HW_PERF_EVENTS
326         bool "Enable hardware performance counter support for perf events"
327         depends on PERF_EVENTS
328         default y
329         help
330           Enable hardware performance counter support for perf events. If
331           disabled, perf events will use software events only.
332
333 config SYS_SUPPORTS_HUGETLBFS
334         def_bool y
335
336 config ARCH_WANT_GENERAL_HUGETLB
337         def_bool y
338
339 config ARCH_WANT_HUGE_PMD_SHARE
340         def_bool y if !ARM64_64K_PAGES
341
342 config HAVE_ARCH_TRANSPARENT_HUGEPAGE
343         def_bool y
344
345 config ARCH_HAS_CACHE_LINE_SIZE
346         def_bool y
347
348 source "mm/Kconfig"
349
350 config XEN_DOM0
351         def_bool y
352         depends on XEN
353
354 config XEN
355         bool "Xen guest support on ARM64"
356         depends on ARM64 && OF
357         select SWIOTLB_XEN
358         help
359           Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64.
360
361 config FORCE_MAX_ZONEORDER
362         int
363         default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
364         default "11"
365
366 menuconfig ARMV8_DEPRECATED
367         bool "Emulate deprecated/obsolete ARMv8 instructions"
368         depends on COMPAT
369         help
370           Legacy software support may require certain instructions
371           that have been deprecated or obsoleted in the architecture.
372
373           Enable this config to enable selective emulation of these
374           features.
375
376           If unsure, say Y
377
378 if ARMV8_DEPRECATED
379
380 config SWP_EMULATION
381         bool "Emulate SWP/SWPB instructions"
382         help
383           ARMv8 obsoletes the use of A32 SWP/SWPB instructions such that
384           they are always undefined. Say Y here to enable software
385           emulation of these instructions for userspace using LDXR/STXR.
386
387           In some older versions of glibc [<=2.8] SWP is used during futex
388           trylock() operations with the assumption that the code will not
389           be preempted. This invalid assumption may be more likely to fail
390           with SWP emulation enabled, leading to deadlock of the user
391           application.
392
393           NOTE: when accessing uncached shared regions, LDXR/STXR rely
394           on an external transaction monitoring block called a global
395           monitor to maintain update atomicity. If your system does not
396           implement a global monitor, this option can cause programs that
397           perform SWP operations to uncached memory to deadlock.
398
399           If unsure, say Y
400
401 config CP15_BARRIER_EMULATION
402         bool "Emulate CP15 Barrier instructions"
403         help
404           The CP15 barrier instructions - CP15ISB, CP15DSB, and
405           CP15DMB - are deprecated in ARMv8 (and ARMv7). It is
406           strongly recommended to use the ISB, DSB, and DMB
407           instructions instead.
408
409           Say Y here to enable software emulation of these
410           instructions for AArch32 userspace code. When this option is
411           enabled, CP15 barrier usage is traced which can help
412           identify software that needs updating.
413
414           If unsure, say Y
415
416 endif
417
418 endmenu
419
420 menu "Boot options"
421
422 config CMDLINE
423         string "Default kernel command string"
424         default ""
425         help
426           Provide a set of default command-line options at build time by
427           entering them here. As a minimum, you should specify the the
428           root device (e.g. root=/dev/nfs).
429
430 config CMDLINE_FORCE
431         bool "Always use the default kernel command string"
432         help
433           Always use the default kernel command string, even if the boot
434           loader passes other arguments to the kernel.
435           This is useful if you cannot or don't want to change the
436           command-line options your boot loader passes to the kernel.
437
438 config EFI_STUB
439         bool
440
441 config EFI
442         bool "UEFI runtime support"
443         depends on OF && !CPU_BIG_ENDIAN
444         select LIBFDT
445         select UCS2_STRING
446         select EFI_PARAMS_FROM_FDT
447         select EFI_RUNTIME_WRAPPERS
448         select EFI_STUB
449         select EFI_ARMSTUB
450         default y
451         help
452           This option provides support for runtime services provided
453           by UEFI firmware (such as non-volatile variables, realtime
454           clock, and platform reset). A UEFI stub is also provided to
455           allow the kernel to be booted as an EFI application. This
456           is only useful on systems that have UEFI firmware.
457
458 config DMI
459         bool "Enable support for SMBIOS (DMI) tables"
460         depends on EFI
461         default y
462         help
463           This enables SMBIOS/DMI feature for systems.
464
465           This option is only useful on systems that have UEFI firmware.
466           However, even with this option, the resultant kernel should
467           continue to boot on existing non-UEFI platforms.
468
469 endmenu
470
471 menu "Userspace binary formats"
472
473 source "fs/Kconfig.binfmt"
474
475 config COMPAT
476         bool "Kernel support for 32-bit EL0"
477         depends on !ARM64_64K_PAGES
478         select COMPAT_BINFMT_ELF
479         select HAVE_UID16
480         select OLD_SIGSUSPEND3
481         select COMPAT_OLD_SIGACTION
482         help
483           This option enables support for a 32-bit EL0 running under a 64-bit
484           kernel at EL1. AArch32-specific components such as system calls,
485           the user helper functions, VFP support and the ptrace interface are
486           handled appropriately by the kernel.
487
488           If you want to execute 32-bit userspace applications, say Y.
489
490 config SYSVIPC_COMPAT
491         def_bool y
492         depends on COMPAT && SYSVIPC
493
494 endmenu
495
496 menu "Power management options"
497
498 source "kernel/power/Kconfig"
499
500 config ARCH_SUSPEND_POSSIBLE
501         def_bool y
502
503 config ARM64_CPU_SUSPEND
504         def_bool PM_SLEEP
505
506 endmenu
507
508 menu "CPU Power Management"
509
510 source "drivers/cpuidle/Kconfig"
511
512 source "drivers/cpufreq/Kconfig"
513
514 endmenu
515
516 source "net/Kconfig"
517
518 source "drivers/Kconfig"
519
520 source "drivers/firmware/Kconfig"
521
522 source "fs/Kconfig"
523
524 source "arch/arm64/kvm/Kconfig"
525
526 source "arch/arm64/Kconfig.debug"
527
528 source "security/Kconfig"
529
530 source "crypto/Kconfig"
531 if CRYPTO
532 source "arch/arm64/crypto/Kconfig"
533 endif
534
535 source "lib/Kconfig"