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