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