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