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