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