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