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