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