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
12 select BUILDTIME_EXTABLE_SORT
13 select CLONE_BACKWARDS
15 select CPU_PM if (SUSPEND || CPU_IDLE)
16 select DCACHE_WORD_ACCESS
17 select GENERIC_CLOCKEVENTS
18 select GENERIC_CLOCKEVENTS_BROADCAST if SMP
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
29 select HAVE_ARCH_TRACEHOOK
30 select HAVE_DEBUG_BUGVERBOSE
31 select HAVE_DEBUG_KMEMLEAK
32 select HAVE_DMA_API_DEBUG
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
40 select HAVE_PATA_PLATFORM
41 select HAVE_PERF_EVENTS
43 select HAVE_PERF_USER_STACK_DUMP
45 select MODULES_USE_ELF_RELA
48 select OF_EARLY_FLATTREE
49 select PERF_USE_VMALLOC
54 select SYSCTL_EXCEPTION_TRACE
56 ARM 64-bit (AArch64) Linux support.
61 config ARCH_PHYS_ADDR_T_64BIT
70 config STACKTRACE_SUPPORT
73 config LOCKDEP_SUPPORT
76 config TRACE_IRQFLAGS_SUPPORT
79 config RWSEM_XCHGADD_ALGORITHM
82 config GENERIC_HWEIGHT
88 config GENERIC_CALIBRATE_DELAY
94 config ARCH_DMA_ADDR_T_64BIT
97 config NEED_DMA_MAP_STATE
100 config NEED_SG_DMA_LENGTH
109 config FIX_EARLYCON_MEM
112 source "init/Kconfig"
114 source "kernel/Kconfig.freezer"
116 menu "Platform selection"
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
125 This enables support for the ARMv8 software model (Versatile
129 bool "AppliedMicro X-Gene SOC Family"
131 This enables support for AppliedMicro X-Gene SOC Family
142 menu "Kernel Features"
144 config ARM64_64K_PAGES
145 bool "Enable 64KB pages support"
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
152 config CPU_BIG_ENDIAN
153 bool "Build big-endian kernel"
155 Say Y if you plan on running a kernel in big-endian mode.
158 bool "Symmetric Multi-Processing"
159 select USE_GENERIC_SMP_HELPERS
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
169 If you don't know what to do here, say N.
172 bool "Multi-core scheduler support"
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.
180 bool "SMT scheduler support"
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.
187 config DISABLE_CPU_SCHED_DOMAIN_BALANCE
188 bool "(EXPERIMENTAL) Disable CPU level scheduler load-balancing"
190 Disables scheduler load-balancing at CPU sched domain level.
193 bool "(EXPERIMENTAL) Heterogenous multiprocessor scheduling"
194 depends on DISABLE_CPU_SCHED_DOMAIN_BALANCE && SCHED_MC && FAIR_GROUP_SCHED && !SCHED_AUTOGROUP
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).
204 config SCHED_HMP_PRIO_FILTER
205 bool "(EXPERIMENTAL) Filter HMP migrations by task priority"
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.
212 config SCHED_HMP_PRIO_FILTER_VAL
213 int "NICE priority threshold"
215 depends on SCHED_HMP_PRIO_FILTER
217 config HMP_FAST_CPU_MASK
218 string "HMP scheduler fast CPU mask"
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.
225 config HMP_SLOW_CPU_MASK
226 string "HMP scheduler slow CPU mask"
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.
233 config HMP_VARIABLE_SCALE
234 bool "Allows changing the load tracking scale through sysfs"
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
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
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.
256 config HMP_FREQUENCY_INVARIANT_SCALE
257 bool "(EXPERIMENTAL) Frequency-Invariant Tracked Load for HMP"
258 depends on HMP_VARIABLE_SCALE && CPU_FREQ
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.
271 config SCHED_HMP_LITTLE_PACKING
272 bool "Small task packing for HMP"
276 Allows the HMP Scheduler to pack small tasks into CPUs in the
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.
284 int "Maximum number of CPUs (2-32)"
287 # These have to remain sorted largest to smallest
291 bool "Support for hot-pluggable CPUs"
294 Say Y here to experiment with turning CPUs off and on. CPUs
295 can be controlled through /sys/devices/system/cpu.
297 source kernel/Kconfig.preempt
303 config ARCH_HAS_HOLES_MEMORYMODEL
304 def_bool y if SPARSEMEM
306 config ARCH_SPARSEMEM_ENABLE
308 select SPARSEMEM_VMEMMAP_ENABLE
310 config ARCH_SPARSEMEM_DEFAULT
311 def_bool ARCH_SPARSEMEM_ENABLE
313 config ARCH_SELECT_MEMORY_MODEL
314 def_bool ARCH_SPARSEMEM_ENABLE
316 config HAVE_ARCH_PFN_VALID
317 def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
319 config HW_PERF_EVENTS
320 bool "Enable hardware performance counter support for perf events"
321 depends on PERF_EVENTS
324 Enable hardware performance counter support for perf events. If
325 disabled, perf events will use software events only.
327 config SYS_SUPPORTS_HUGETLBFS
330 config ARCH_WANT_GENERAL_HUGETLB
333 config ARCH_WANT_HUGE_PMD_SHARE
334 def_bool y if !ARM64_64K_PAGES
336 config HAVE_ARCH_TRANSPARENT_HUGEPAGE
341 config FORCE_MAX_ZONEORDER
343 default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
351 string "Default kernel command string"
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).
359 bool "Always use the default kernel command string"
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.
368 menu "Userspace binary formats"
370 source "fs/Kconfig.binfmt"
373 bool "Kernel support for 32-bit EL0"
374 depends on !ARM64_64K_PAGES
375 select COMPAT_BINFMT_ELF
377 select OLD_SIGSUSPEND3
378 select COMPAT_OLD_SIGACTION
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.
385 If you want to execute 32-bit userspace applications, say Y.
387 config SYSVIPC_COMPAT
389 depends on COMPAT && SYSVIPC
393 menu "Power management options"
395 source "kernel/power/Kconfig"
397 source "drivers/cpufreq/Kconfig"
398 config ARCH_SUSPEND_POSSIBLE
401 config ARM64_CPU_SUSPEND
406 menu "CPU Power Management"
408 source "drivers/cpuidle/Kconfig"
414 source "drivers/Kconfig"
418 source "arch/arm64/Kconfig.debug"
420 source "security/Kconfig"
422 source "crypto/Kconfig"