Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
[firefly-linux-kernel-4.4.55.git] / arch / arm64 / Kconfig
1 config ARM64
2         def_bool y
3         select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
4         select ARCH_HAS_OPP
5         select ARCH_USE_CMPXCHG_LOCKREF
6         select ARCH_HAS_OPP
7         select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
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 ARM_GIC_V3
16         select BUILDTIME_EXTABLE_SORT
17         select AUDIT_ARCH_COMPAT_GENERIC
18         select CLONE_BACKWARDS
19         select COMMON_CLK
20         select CPU_PM if (SUSPEND || CPU_IDLE)
21         select DCACHE_WORD_ACCESS
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_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_JUMP_LABEL
35         select HAVE_ARCH_KGDB
36         select HAVE_ARCH_AUDITSYSCALL
37         select HAVE_ARCH_SECCOMP_FILTER
38         select HAVE_ARCH_TRACEHOOK
39         select HAVE_C_RECORDMCOUNT
40         select HAVE_CC_STACKPROTECTOR
41         select HAVE_DEBUG_BUGVERBOSE
42         select HAVE_DEBUG_KMEMLEAK
43         select HAVE_DMA_API_DEBUG
44         select HAVE_DMA_ATTRS
45         select HAVE_DMA_CONTIGUOUS
46         select HAVE_DYNAMIC_FTRACE
47         select HAVE_EFFICIENT_UNALIGNED_ACCESS
48         select HAVE_FTRACE_MCOUNT_RECORD
49         select HAVE_FUNCTION_TRACER
50         select HAVE_FUNCTION_GRAPH_TRACER
51         select HAVE_GENERIC_DMA_COHERENT
52         select HAVE_GENERIC_HARDIRQS
53         select HAVE_HW_BREAKPOINT if PERF_EVENTS
54         select HAVE_MEMBLOCK
55         select HAVE_PATA_PLATFORM
56         select HAVE_PERF_EVENTS
57         select HAVE_PERF_REGS
58         select HAVE_PERF_USER_STACK_DUMP
59         select HAVE_SYSCALL_TRACEPOINTS
60         select IRQ_DOMAIN
61         select MODULES_USE_ELF_RELA
62         select NO_BOOTMEM
63         select OF
64         select OF_EARLY_FLATTREE
65         select OF_RESERVED_MEM
66         select PERF_USE_VMALLOC
67         select POWER_RESET
68         select POWER_SUPPLY
69         select RTC_LIB
70         select SPARSE_IRQ
71         select SYSCTL_EXCEPTION_TRACE
72         help
73           ARM 64-bit (AArch64) Linux support.
74
75 config 64BIT
76         def_bool y
77
78 config ARCH_PHYS_ADDR_T_64BIT
79         def_bool y
80
81 config MMU
82         def_bool y
83
84 config NO_IOPORT
85         def_bool y
86
87 config STACKTRACE_SUPPORT
88         def_bool y
89
90 config LOCKDEP_SUPPORT
91         def_bool y
92
93 config TRACE_IRQFLAGS_SUPPORT
94         def_bool y
95
96 config RWSEM_XCHGADD_ALGORITHM
97         def_bool y
98
99 config GENERIC_HWEIGHT
100         def_bool y
101
102 config GENERIC_CSUM
103         def_bool y
104
105 config GENERIC_CALIBRATE_DELAY
106         def_bool y
107
108 config ZONE_DMA
109         def_bool y
110
111 config ARCH_DMA_ADDR_T_64BIT
112         def_bool y
113
114 config NEED_DMA_MAP_STATE
115         def_bool y
116
117 config NEED_SG_DMA_LENGTH
118         def_bool y
119
120 config SWIOTLB
121         def_bool y
122
123 config IOMMU_HELPER
124         def_bool SWIOTLB
125
126 config FIX_EARLYCON_MEM
127         def_bool y
128
129 source "init/Kconfig"
130
131 source "kernel/Kconfig.freezer"
132
133 menu "Platform selection"
134
135 config ARCH_VEXPRESS
136         bool "ARMv8 software model (Versatile Express)"
137         select ARCH_REQUIRE_GPIOLIB
138         select COMMON_CLK_VERSATILE
139         select POWER_RESET_VEXPRESS
140         select VEXPRESS_CONFIG
141         help
142           This enables support for the ARMv8 software model (Versatile
143           Express).
144
145 config ARCH_XGENE
146         bool "AppliedMicro X-Gene SOC Family"
147         help
148           This enables support for AppliedMicro X-Gene SOC Family
149
150 endmenu
151
152 menu "Bus support"
153
154 config ARM_AMBA
155         bool
156
157 endmenu
158
159 menu "Kernel Features"
160
161 config ARM64_64K_PAGES
162         bool "Enable 64KB pages support"
163         help
164           This feature enables 64KB pages support (4KB by default)
165           allowing only two levels of page tables and faster TLB
166           look-up. AArch32 emulation is not available when this feature
167           is enabled.
168
169 config CPU_BIG_ENDIAN
170        bool "Build big-endian kernel"
171        help
172          Say Y if you plan on running a kernel in big-endian mode.
173
174 config SMP
175         bool "Symmetric Multi-Processing"
176         select USE_GENERIC_SMP_HELPERS
177         help
178           This enables support for systems with more than one CPU.  If
179           you say N here, the kernel will run on single and
180           multiprocessor machines, but will use only one CPU of a
181           multiprocessor machine. If you say Y here, the kernel will run
182           on many, but not all, single processor machines. On a single
183           processor machine, the kernel will run faster if you say N
184           here.
185
186           If you don't know what to do here, say N.
187
188 config SCHED_MC
189         bool "Multi-core scheduler support"
190         depends on SMP
191         help
192           Multi-core scheduler support improves the CPU scheduler's decision
193           making when dealing with multi-core CPU chips at a cost of slightly
194           increased overhead in some places. If unsure say N here.
195
196 config SCHED_SMT
197         bool "SMT scheduler support"
198         depends on SMP
199         help
200           Improves the CPU scheduler's decision making when dealing with
201           MultiThreading at a cost of slightly increased overhead in some
202           places. If unsure say N here.
203
204 config DISABLE_CPU_SCHED_DOMAIN_BALANCE
205         bool "(EXPERIMENTAL) Disable CPU level scheduler load-balancing"
206         help
207           Disables scheduler load-balancing at CPU sched domain level.
208
209 config SCHED_HMP
210         bool "(EXPERIMENTAL) Heterogenous multiprocessor scheduling"
211         depends on DISABLE_CPU_SCHED_DOMAIN_BALANCE && SCHED_MC && FAIR_GROUP_SCHED && !SCHED_AUTOGROUP
212         help
213           Experimental scheduler optimizations for heterogeneous platforms.
214           Attempts to introspectively select task affinity to optimize power
215           and performance. Basic support for multiple (>2) cpu types is in place,
216           but it has only been tested with two types of cpus.
217           There is currently no support for migration of task groups, hence
218           !SCHED_AUTOGROUP. Furthermore, normal load-balancing must be disabled
219           between cpus of different type (DISABLE_CPU_SCHED_DOMAIN_BALANCE).
220
221 config SCHED_HMP_PRIO_FILTER
222         bool "(EXPERIMENTAL) Filter HMP migrations by task priority"
223         depends on SCHED_HMP
224         help
225           Enables task priority based HMP migration filter. Any task with
226           a NICE value above the threshold will always be on low-power cpus
227           with less compute capacity.
228
229 config SCHED_HMP_PRIO_FILTER_VAL
230         int "NICE priority threshold"
231         default 5
232         depends on SCHED_HMP_PRIO_FILTER
233
234 config HMP_FAST_CPU_MASK
235         string "HMP scheduler fast CPU mask"
236         depends on SCHED_HMP
237         help
238           Leave empty to use device tree information.
239           Specify the cpuids of the fast CPUs in the system as a list string,
240           e.g. cpuid 0+1 should be specified as 0-1.
241
242 config HMP_SLOW_CPU_MASK
243         string "HMP scheduler slow CPU mask"
244         depends on SCHED_HMP
245         help
246           Leave empty to use device tree information.
247           Specify the cpuids of the slow CPUs in the system as a list string,
248           e.g. cpuid 0+1 should be specified as 0-1.
249
250 config HMP_VARIABLE_SCALE
251         bool "Allows changing the load tracking scale through sysfs"
252         depends on SCHED_HMP
253         help
254           When turned on, this option exports the thresholds and load average
255           period value for the load tracking patches through sysfs.
256           The values can be modified to change the rate of load accumulation
257           and the thresholds used for HMP migration.
258           The load_avg_period_ms is the time in ms to reach a load average of
259           0.5 for an idle task of 0 load average ratio that start a busy loop.
260           The up_threshold and down_threshold is the value to go to a faster
261           CPU or to go back to a slower cpu.
262           The {up,down}_threshold are devided by 1024 before being compared
263           to the load average.
264           For examples, with load_avg_period_ms = 128 and up_threshold = 512,
265           a running task with a load of 0 will be migrated to a bigger CPU after
266           128ms, because after 128ms its load_avg_ratio is 0.5 and the real
267           up_threshold is 0.5.
268           This patch has the same behavior as changing the Y of the load
269           average computation to
270                 (1002/1024)^(LOAD_AVG_PERIOD/load_avg_period_ms)
271           but it remove intermadiate overflows in computation.
272
273 config HMP_FREQUENCY_INVARIANT_SCALE
274         bool "(EXPERIMENTAL) Frequency-Invariant Tracked Load for HMP"
275         depends on HMP_VARIABLE_SCALE && CPU_FREQ
276         help
277           Scales the current load contribution in line with the frequency
278           of the CPU that the task was executed on.
279           In this version, we use a simple linear scale derived from the
280           maximum frequency reported by CPUFreq.
281           Restricting tracked load to be scaled by the CPU's frequency
282           represents the consumption of possible compute capacity
283           (rather than consumption of actual instantaneous capacity as
284           normal) and allows the HMP migration's simple threshold
285           migration strategy to interact more predictably with CPUFreq's
286           asynchronous compute capacity changes.
287
288 config SCHED_HMP_LITTLE_PACKING
289         bool "Small task packing for HMP"
290         depends on SCHED_HMP
291         default n
292         help
293           Allows the HMP Scheduler to pack small tasks into CPUs in the
294           smallest HMP domain.
295           Controlled by two sysfs files in sys/kernel/hmp.
296           packing_enable: 1 to enable, 0 to disable packing. Default 1.
297           packing_limit: runqueue load ratio where a RQ is considered
298             to be full. Default is NICE_0_LOAD * 9/8.
299
300 config NR_CPUS
301         int "Maximum number of CPUs (2-32)"
302         range 2 32
303         depends on SMP
304         # These have to remain sorted largest to smallest
305         default "8"
306
307 config HOTPLUG_CPU
308         bool "Support for hot-pluggable CPUs"
309         depends on SMP
310         help
311           Say Y here to experiment with turning CPUs off and on.  CPUs
312           can be controlled through /sys/devices/system/cpu.
313
314 config SWP_EMULATE
315         bool "Emulate SWP/SWPB instructions"
316         help
317           ARMv6 architecture deprecates use of the SWP/SWPB instructions. ARMv8
318           oblosetes the use of SWP/SWPB instructions. ARMv7 multiprocessing
319           extensions introduce the ability to disable these instructions,
320           triggering an undefined instruction exception when executed. Say Y
321           here to enable software emulation of these instructions for userspace
322           (not kernel) using LDREX/STREX. Also creates /proc/cpu/swp_emulation
323           for statistics.
324
325           In some older versions of glibc [<=2.8] SWP is used during futex
326           trylock() operations with the assumption that the code will not
327           be preempted. This invalid assumption may be more likely to fail
328           with SWP emulation enabled, leading to deadlock of the user
329           application.
330
331           NOTE: when accessing uncached shared regions, LDREX/STREX rely
332           on an external transaction monitoring block called a global
333           monitor to maintain update atomicity. If your system does not
334           implement a global monitor, this option can cause programs that
335           perform SWP operations to uncached memory to deadlock.
336
337           If unsure, say Y.
338
339 source kernel/Kconfig.preempt
340
341 config HZ
342         int
343         default 100
344
345 config ARCH_HAS_HOLES_MEMORYMODEL
346         def_bool y if SPARSEMEM
347
348 config ARCH_SPARSEMEM_ENABLE
349         def_bool y
350         select SPARSEMEM_VMEMMAP_ENABLE
351
352 config ARCH_SPARSEMEM_DEFAULT
353         def_bool ARCH_SPARSEMEM_ENABLE
354
355 config ARCH_SELECT_MEMORY_MODEL
356         def_bool ARCH_SPARSEMEM_ENABLE
357
358 config HAVE_ARCH_PFN_VALID
359         def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
360
361 config HW_PERF_EVENTS
362         bool "Enable hardware performance counter support for perf events"
363         depends on PERF_EVENTS
364         default y
365         help
366           Enable hardware performance counter support for perf events. If
367           disabled, perf events will use software events only.
368
369 config SYS_SUPPORTS_HUGETLBFS
370         def_bool y
371
372 config ARCH_WANT_GENERAL_HUGETLB
373         def_bool y
374
375 config ARCH_WANT_HUGE_PMD_SHARE
376         def_bool y if !ARM64_64K_PAGES
377
378 config HAVE_ARCH_TRANSPARENT_HUGEPAGE
379         def_bool y
380
381 config ARMV7_COMPAT
382         bool "Kernel support for ARMv7 applications"
383         depends on COMPAT
384         select SWP_EMULATE
385         help
386          This option enables features that allow that ran on an ARMv7 or older
387          processor to continue functioning.
388
389          If you want to execute ARMv7 applications, say Y
390
391 config ARMV7_COMPAT_CPUINFO
392         bool "Report backwards compatible cpu features in /proc/cpuinfo"
393         depends on ARMV7_COMPAT
394         default y
395         help
396          This option makes /proc/cpuinfo list CPU features that an ARMv7 or
397          earlier kernel would report, but are not optional on an ARMv8 or later
398          processor.
399
400          If you want to execute ARMv7 applications, say Y
401
402 source "mm/Kconfig"
403
404 config FORCE_MAX_ZONEORDER
405         int
406         default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
407         default "11"
408
409 config SECCOMP
410         bool "Enable seccomp to safely compute untrusted bytecode"
411         ---help---
412           This kernel feature is useful for number crunching applications
413           that may need to compute untrusted bytecode during their
414           execution. By using pipes or other transports made available to
415           the process as file descriptors supporting the read/write
416           syscalls, it's possible to isolate those applications in
417           their own address space using seccomp. Once seccomp is
418           enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
419           and the task is only allowed to execute a few safe syscalls
420           defined by each seccomp mode.
421
422 endmenu
423
424 menu "Boot options"
425
426 config CMDLINE
427         string "Default kernel command string"
428         default ""
429         help
430           Provide a set of default command-line options at build time by
431           entering them here. As a minimum, you should specify the the
432           root device (e.g. root=/dev/nfs).
433
434 choice
435         prompt "Kernel command line type" if CMDLINE != ""
436         default CMDLINE_FROM_BOOTLOADER
437
438 config CMDLINE_FROM_BOOTLOADER
439         bool "Use bootloader kernel arguments if available"
440         help
441           Uses the command-line options passed by the boot loader. If
442           the boot loader doesn't provide any, the default kernel command
443           string provided in CMDLINE will be used.
444
445 config CMDLINE_EXTEND
446         bool "Extend bootloader kernel arguments"
447         help
448           The command-line arguments provided by the boot loader will be
449           appended to the default kernel command string.
450
451 config CMDLINE_FORCE
452         bool "Always use the default kernel command string"
453         help
454           Always use the default kernel command string, even if the boot
455           loader passes other arguments to the kernel.
456           This is useful if you cannot or don't want to change the
457           command-line options your boot loader passes to the kernel.
458 endchoice
459
460 config BUILD_ARM64_APPENDED_DTB_IMAGE
461         bool "Build a concatenated Image.gz/dtb by default"
462         depends on OF
463         help
464           Enabling this option will cause a concatenated Image.gz and list of
465           DTBs to be built by default (instead of a standalone Image.gz.)
466           The image will built in arch/arm64/boot/Image.gz-dtb
467
468 config BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES
469         string "Default dtb names"
470         depends on BUILD_ARM64_APPENDED_DTB_IMAGE
471         help
472           Space separated list of names of dtbs to append when
473           building a concatenated Image.gz-dtb.
474
475 config EFI
476         bool "UEFI runtime support"
477         depends on OF && !CPU_BIG_ENDIAN
478         select LIBFDT
479         select UCS2_STRING
480         select EFI_PARAMS_FROM_FDT
481         default y
482         help
483           This option provides support for runtime services provided
484           by UEFI firmware (such as non-volatile variables, realtime
485           clock, and platform reset). A UEFI stub is also provided to
486           allow the kernel to be booted as an EFI application. This
487           is only useful on systems that have UEFI firmware.
488
489 endmenu
490
491 menu "Userspace binary formats"
492
493 source "fs/Kconfig.binfmt"
494
495 config COMPAT
496         bool "Kernel support for 32-bit EL0"
497         depends on !ARM64_64K_PAGES
498         select COMPAT_BINFMT_ELF
499         select HAVE_UID16
500         select OLD_SIGSUSPEND3
501         select COMPAT_OLD_SIGACTION
502         help
503           This option enables support for a 32-bit EL0 running under a 64-bit
504           kernel at EL1. AArch32-specific components such as system calls,
505           the user helper functions, VFP support and the ptrace interface are
506           handled appropriately by the kernel.
507
508           If you want to execute 32-bit userspace applications, say Y.
509
510 config SYSVIPC_COMPAT
511         def_bool y
512         depends on COMPAT && SYSVIPC
513
514 endmenu
515
516 menu "Power management options"
517
518 source "kernel/power/Kconfig"
519
520 source "drivers/cpufreq/Kconfig"
521 config ARCH_SUSPEND_POSSIBLE
522         def_bool y
523
524 config ARM64_CPU_SUSPEND
525         def_bool PM_SLEEP
526
527 endmenu
528
529 menu "CPU Power Management"
530
531 source "drivers/cpuidle/Kconfig"
532
533 endmenu
534
535 source "net/Kconfig"
536
537 source "drivers/Kconfig"
538
539 source "drivers/firmware/Kconfig"
540
541 source "fs/Kconfig"
542
543 source "arch/arm64/kvm/Kconfig"
544
545 source "arch/arm64/Kconfig.debug"
546
547 source "security/Kconfig"
548
549 source "crypto/Kconfig"
550 if CRYPTO
551 source "arch/arm64/crypto/Kconfig"
552 endif
553
554 source "lib/Kconfig"