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