Merge remote-tracking branch 'lsk/v3.10/topic/gic-workaround' into linux-linaro-lsk
[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_WANT_OPTIONAL_GPIOLIB
8         select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
9         select ARCH_WANT_FRAME_POINTERS
10         select ARM_AMBA
11         select ARM_ARCH_TIMER
12         select ARM_GIC
13         select BUILDTIME_EXTABLE_SORT
14         select CLONE_BACKWARDS
15         select COMMON_CLK
16         select CPU_PM if (SUSPEND || CPU_IDLE)
17         select DCACHE_WORD_ACCESS
18         select GENERIC_CLOCKEVENTS
19         select GENERIC_CLOCKEVENTS_BROADCAST if SMP
20         select GENERIC_CPU_AUTOPROBE
21         select GENERIC_EARLY_IOREMAP
22         select GENERIC_IOMAP
23         select GENERIC_IRQ_PROBE
24         select GENERIC_IRQ_SHOW
25         select GENERIC_SMP_IDLE_THREAD
26         select GENERIC_STRNCPY_FROM_USER
27         select GENERIC_STRNLEN_USER
28         select GENERIC_TIME_VSYSCALL
29         select HARDIRQS_SW_RESEND
30         select HAVE_ARCH_JUMP_LABEL
31         select HAVE_ARCH_KGDB
32         select HAVE_ARCH_TRACEHOOK
33         select HAVE_C_RECORDMCOUNT
34         select HAVE_DEBUG_BUGVERBOSE
35         select HAVE_DEBUG_KMEMLEAK
36         select HAVE_DMA_API_DEBUG
37         select HAVE_DMA_ATTRS
38         select HAVE_DMA_CONTIGUOUS
39         select HAVE_DYNAMIC_FTRACE
40         select HAVE_EFFICIENT_UNALIGNED_ACCESS
41         select HAVE_FTRACE_MCOUNT_RECORD
42         select HAVE_FUNCTION_TRACER
43         select HAVE_FUNCTION_GRAPH_TRACER
44         select HAVE_GENERIC_DMA_COHERENT
45         select HAVE_GENERIC_HARDIRQS
46         select HAVE_HW_BREAKPOINT if PERF_EVENTS
47         select HAVE_MEMBLOCK
48         select HAVE_PATA_PLATFORM
49         select HAVE_PERF_EVENTS
50         select HAVE_PERF_REGS
51         select HAVE_PERF_USER_STACK_DUMP
52         select HAVE_SYSCALL_TRACEPOINTS
53         select IRQ_DOMAIN
54         select MODULES_USE_ELF_RELA
55         select NO_BOOTMEM
56         select OF
57         select OF_EARLY_FLATTREE
58         select PERF_USE_VMALLOC
59         select POWER_RESET
60         select POWER_SUPPLY
61         select RTC_LIB
62         select SPARSE_IRQ
63         select SYSCTL_EXCEPTION_TRACE
64         help
65           ARM 64-bit (AArch64) Linux support.
66
67 config 64BIT
68         def_bool y
69
70 config ARCH_PHYS_ADDR_T_64BIT
71         def_bool y
72
73 config MMU
74         def_bool y
75
76 config NO_IOPORT
77         def_bool y
78
79 config STACKTRACE_SUPPORT
80         def_bool y
81
82 config LOCKDEP_SUPPORT
83         def_bool y
84
85 config TRACE_IRQFLAGS_SUPPORT
86         def_bool y
87
88 config RWSEM_XCHGADD_ALGORITHM
89         def_bool y
90
91 config GENERIC_HWEIGHT
92         def_bool y
93
94 config GENERIC_CSUM
95         def_bool y
96
97 config GENERIC_CALIBRATE_DELAY
98         def_bool y
99
100 config ZONE_DMA
101         def_bool y
102
103 config ARCH_DMA_ADDR_T_64BIT
104         def_bool y
105
106 config NEED_DMA_MAP_STATE
107         def_bool y
108
109 config NEED_SG_DMA_LENGTH
110         def_bool y
111
112 config SWIOTLB
113         def_bool y
114
115 config IOMMU_HELPER
116         def_bool SWIOTLB
117
118 config FIX_EARLYCON_MEM
119         def_bool y
120
121 config KERNEL_MODE_NEON
122         def_bool y
123
124 source "init/Kconfig"
125
126 source "kernel/Kconfig.freezer"
127
128 menu "Platform selection"
129
130 config ARCH_VEXPRESS
131         bool "ARMv8 software model (Versatile Express)"
132         select ARCH_REQUIRE_GPIOLIB
133         select COMMON_CLK_VERSATILE
134         select POWER_RESET_VEXPRESS
135         select VEXPRESS_CONFIG
136         help
137           This enables support for the ARMv8 software model (Versatile
138           Express).
139
140 config ARCH_XGENE
141         bool "AppliedMicro X-Gene SOC Family"
142         help
143           This enables support for AppliedMicro X-Gene SOC Family
144
145 endmenu
146
147 menu "Bus support"
148
149 config ARM_AMBA
150         bool
151
152 endmenu
153
154 menu "Kernel Features"
155
156 config ARM64_64K_PAGES
157         bool "Enable 64KB pages support"
158         help
159           This feature enables 64KB pages support (4KB by default)
160           allowing only two levels of page tables and faster TLB
161           look-up. AArch32 emulation is not available when this feature
162           is enabled.
163
164 config CPU_BIG_ENDIAN
165        bool "Build big-endian kernel"
166        help
167          Say Y if you plan on running a kernel in big-endian mode.
168
169 config SMP
170         bool "Symmetric Multi-Processing"
171         select USE_GENERIC_SMP_HELPERS
172         help
173           This enables support for systems with more than one CPU.  If
174           you say N here, the kernel will run on single and
175           multiprocessor machines, but will use only one CPU of a
176           multiprocessor machine. If you say Y here, the kernel will run
177           on many, but not all, single processor machines. On a single
178           processor machine, the kernel will run faster if you say N
179           here.
180
181           If you don't know what to do here, say N.
182
183 config SCHED_MC
184         bool "Multi-core scheduler support"
185         depends on SMP
186         help
187           Multi-core scheduler support improves the CPU scheduler's decision
188           making when dealing with multi-core CPU chips at a cost of slightly
189           increased overhead in some places. If unsure say N here.
190
191 config SCHED_SMT
192         bool "SMT scheduler support"
193         depends on SMP
194         help
195           Improves the CPU scheduler's decision making when dealing with
196           MultiThreading at a cost of slightly increased overhead in some
197           places. If unsure say N here.
198
199 config DISABLE_CPU_SCHED_DOMAIN_BALANCE
200         bool "(EXPERIMENTAL) Disable CPU level scheduler load-balancing"
201         help
202           Disables scheduler load-balancing at CPU sched domain level.
203
204 config SCHED_HMP
205         bool "(EXPERIMENTAL) Heterogenous multiprocessor scheduling"
206         depends on DISABLE_CPU_SCHED_DOMAIN_BALANCE && SCHED_MC && FAIR_GROUP_SCHED && !SCHED_AUTOGROUP
207         help
208           Experimental scheduler optimizations for heterogeneous platforms.
209           Attempts to introspectively select task affinity to optimize power
210           and performance. Basic support for multiple (>2) cpu types is in place,
211           but it has only been tested with two types of cpus.
212           There is currently no support for migration of task groups, hence
213           !SCHED_AUTOGROUP. Furthermore, normal load-balancing must be disabled
214           between cpus of different type (DISABLE_CPU_SCHED_DOMAIN_BALANCE).
215
216 config SCHED_HMP_PRIO_FILTER
217         bool "(EXPERIMENTAL) Filter HMP migrations by task priority"
218         depends on SCHED_HMP
219         help
220           Enables task priority based HMP migration filter. Any task with
221           a NICE value above the threshold will always be on low-power cpus
222           with less compute capacity.
223
224 config SCHED_HMP_PRIO_FILTER_VAL
225         int "NICE priority threshold"
226         default 5
227         depends on SCHED_HMP_PRIO_FILTER
228
229 config HMP_FAST_CPU_MASK
230         string "HMP scheduler fast CPU mask"
231         depends on SCHED_HMP
232         help
233           Leave empty to use device tree information.
234           Specify the cpuids of the fast CPUs in the system as a list string,
235           e.g. cpuid 0+1 should be specified as 0-1.
236
237 config HMP_SLOW_CPU_MASK
238         string "HMP scheduler slow CPU mask"
239         depends on SCHED_HMP
240         help
241           Leave empty to use device tree information.
242           Specify the cpuids of the slow CPUs in the system as a list string,
243           e.g. cpuid 0+1 should be specified as 0-1.
244
245 config HMP_VARIABLE_SCALE
246         bool "Allows changing the load tracking scale through sysfs"
247         depends on SCHED_HMP
248         help
249           When turned on, this option exports the thresholds and load average
250           period value for the load tracking patches through sysfs.
251           The values can be modified to change the rate of load accumulation
252           and the thresholds used for HMP migration.
253           The load_avg_period_ms is the time in ms to reach a load average of
254           0.5 for an idle task of 0 load average ratio that start a busy loop.
255           The up_threshold and down_threshold is the value to go to a faster
256           CPU or to go back to a slower cpu.
257           The {up,down}_threshold are devided by 1024 before being compared
258           to the load average.
259           For examples, with load_avg_period_ms = 128 and up_threshold = 512,
260           a running task with a load of 0 will be migrated to a bigger CPU after
261           128ms, because after 128ms its load_avg_ratio is 0.5 and the real
262           up_threshold is 0.5.
263           This patch has the same behavior as changing the Y of the load
264           average computation to
265                 (1002/1024)^(LOAD_AVG_PERIOD/load_avg_period_ms)
266           but it remove intermadiate overflows in computation.
267
268 config HMP_FREQUENCY_INVARIANT_SCALE
269         bool "(EXPERIMENTAL) Frequency-Invariant Tracked Load for HMP"
270         depends on HMP_VARIABLE_SCALE && CPU_FREQ
271         help
272           Scales the current load contribution in line with the frequency
273           of the CPU that the task was executed on.
274           In this version, we use a simple linear scale derived from the
275           maximum frequency reported by CPUFreq.
276           Restricting tracked load to be scaled by the CPU's frequency
277           represents the consumption of possible compute capacity
278           (rather than consumption of actual instantaneous capacity as
279           normal) and allows the HMP migration's simple threshold
280           migration strategy to interact more predictably with CPUFreq's
281           asynchronous compute capacity changes.
282
283 config SCHED_HMP_LITTLE_PACKING
284         bool "Small task packing for HMP"
285         depends on SCHED_HMP
286         default n
287         help
288           Allows the HMP Scheduler to pack small tasks into CPUs in the
289           smallest HMP domain.
290           Controlled by two sysfs files in sys/kernel/hmp.
291           packing_enable: 1 to enable, 0 to disable packing. Default 1.
292           packing_limit: runqueue load ratio where a RQ is considered
293             to be full. Default is NICE_0_LOAD * 9/8.
294
295 config NR_CPUS
296         int "Maximum number of CPUs (2-32)"
297         range 2 32
298         depends on SMP
299         # These have to remain sorted largest to smallest
300         default "8"
301
302 config HOTPLUG_CPU
303         bool "Support for hot-pluggable CPUs"
304         depends on SMP
305         help
306           Say Y here to experiment with turning CPUs off and on.  CPUs
307           can be controlled through /sys/devices/system/cpu.
308
309 source kernel/Kconfig.preempt
310
311 config HZ
312         int
313         default 100
314
315 config ARCH_HAS_HOLES_MEMORYMODEL
316         def_bool y if SPARSEMEM
317
318 config ARCH_SPARSEMEM_ENABLE
319         def_bool y
320         select SPARSEMEM_VMEMMAP_ENABLE
321
322 config ARCH_SPARSEMEM_DEFAULT
323         def_bool ARCH_SPARSEMEM_ENABLE
324
325 config ARCH_SELECT_MEMORY_MODEL
326         def_bool ARCH_SPARSEMEM_ENABLE
327
328 config HAVE_ARCH_PFN_VALID
329         def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
330
331 config HW_PERF_EVENTS
332         bool "Enable hardware performance counter support for perf events"
333         depends on PERF_EVENTS
334         default y
335         help
336           Enable hardware performance counter support for perf events. If
337           disabled, perf events will use software events only.
338
339 config SYS_SUPPORTS_HUGETLBFS
340         def_bool y
341
342 config ARCH_WANT_GENERAL_HUGETLB
343         def_bool y
344
345 config ARCH_WANT_HUGE_PMD_SHARE
346         def_bool y if !ARM64_64K_PAGES
347
348 config HAVE_ARCH_TRANSPARENT_HUGEPAGE
349         def_bool y
350
351 source "mm/Kconfig"
352
353 config FORCE_MAX_ZONEORDER
354         int
355         default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
356         default "11"
357
358 endmenu
359
360 menu "Boot options"
361
362 config CMDLINE
363         string "Default kernel command string"
364         default ""
365         help
366           Provide a set of default command-line options at build time by
367           entering them here. As a minimum, you should specify the the
368           root device (e.g. root=/dev/nfs).
369
370 config CMDLINE_FORCE
371         bool "Always use the default kernel command string"
372         help
373           Always use the default kernel command string, even if the boot
374           loader passes other arguments to the kernel.
375           This is useful if you cannot or don't want to change the
376           command-line options your boot loader passes to the kernel.
377
378 endmenu
379
380 menu "Userspace binary formats"
381
382 source "fs/Kconfig.binfmt"
383
384 config COMPAT
385         bool "Kernel support for 32-bit EL0"
386         depends on !ARM64_64K_PAGES
387         select COMPAT_BINFMT_ELF
388         select HAVE_UID16
389         select OLD_SIGSUSPEND3
390         select COMPAT_OLD_SIGACTION
391         help
392           This option enables support for a 32-bit EL0 running under a 64-bit
393           kernel at EL1. AArch32-specific components such as system calls,
394           the user helper functions, VFP support and the ptrace interface are
395           handled appropriately by the kernel.
396
397           If you want to execute 32-bit userspace applications, say Y.
398
399 config SYSVIPC_COMPAT
400         def_bool y
401         depends on COMPAT && SYSVIPC
402
403 endmenu
404
405 menu "Power management options"
406
407 source "kernel/power/Kconfig"
408
409 source "drivers/cpufreq/Kconfig"
410 config ARCH_SUSPEND_POSSIBLE
411         def_bool y
412
413 config ARM64_CPU_SUSPEND
414         def_bool PM_SLEEP
415
416 endmenu
417
418 menu "CPU Power Management"
419
420 source "drivers/cpuidle/Kconfig"
421
422 endmenu
423
424 source "net/Kconfig"
425
426 source "drivers/Kconfig"
427
428 source "fs/Kconfig"
429
430 source "arch/arm64/Kconfig.debug"
431
432 source "security/Kconfig"
433
434 source "crypto/Kconfig"
435 if CRYPTO
436 source "arch/arm64/crypto/Kconfig"
437 endif
438
439 source "lib/Kconfig"