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