ftrace: Add arm64 support to recordmcount
[linux-3.10.git] / arch / arm64 / Kconfig
1 config ARM64
2         def_bool y
3         select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
4         select ARCH_HAVE_CUSTOM_GPIO_H
5         select ARCH_USE_CMPXCHG_LOCKREF
6         select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
7         select ARCH_WANT_OPTIONAL_GPIOLIB
8         select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
9         select ARCH_WANT_FRAME_POINTERS
10         select ARM_AMBA
11         select ARM_ARCH_TIMER
12         select ARM_GIC
13         select BUILDTIME_EXTABLE_SORT
14         select CLONE_BACKWARDS
15 #       select COMMON_CLK
16         select CPU_PM if (SUSPEND || CPU_IDLE)
17         select DCACHE_WORD_ACCESS
18         select GENERIC_CLOCKEVENTS
19         select GENERIC_CLOCKEVENTS_BROADCAST if SMP
20         select GENERIC_IOMAP
21         select GENERIC_IRQ_PROBE
22         select GENERIC_IRQ_SHOW
23         select GENERIC_SCHED_CLOCK
24         select GENERIC_SMP_IDLE_THREAD
25         select GENERIC_STRNCPY_FROM_USER
26         select GENERIC_STRNLEN_USER
27         select GENERIC_TIME_VSYSCALL
28         select HARDIRQS_SW_RESEND
29         select GENERIC_PCI_IOMAP
30         select HAVE_ARCH_JUMP_LABEL
31         select HAVE_ARCH_TRACEHOOK
32         select HAVE_C_RECORDMCOUNT
33         select HAVE_DEBUG_BUGVERBOSE
34         select HAVE_DEBUG_KMEMLEAK
35         select HAVE_DMA_API_DEBUG
36         select HAVE_DMA_ATTRS
37         select HAVE_DMA_CONTIGUOUS if MMU
38         select HAVE_EFFICIENT_UNALIGNED_ACCESS
39         select HAVE_FTRACE_MCOUNT_RECORD
40         select HAVE_GENERIC_DMA_COHERENT
41         select HAVE_GENERIC_HARDIRQS
42         select HAVE_HW_BREAKPOINT if PERF_EVENTS
43         select HAVE_MEMBLOCK
44         select HAVE_PATA_PLATFORM
45         select HAVE_PERF_EVENTS
46         select HAVE_PERF_REGS
47         select HAVE_PERF_USER_STACK_DUMP
48         select IRQ_DOMAIN
49         select MODULES_USE_ELF_RELA
50         select NO_BOOTMEM
51         select OF
52         select OF_EARLY_FLATTREE
53         select PERF_USE_VMALLOC
54         select POWER_RESET
55         select POWER_SUPPLY
56         select RTC_LIB
57         select SPARSE_IRQ
58         select SYSCTL_EXCEPTION_TRACE
59         help
60           ARM 64-bit (AArch64) Linux support.
61
62 trysource ../kernel-t18x/arch/arm64/Kconfig
63
64 config ARCH_TEGRA_18x_SOC
65         bool "Tegra 18x family SOC Kconfig placeholder"
66         select ARCH_TEGRA_18x_SOC_PRIVATE
67         help
68           Kconfig placeholder for NVIDIA Tegra18x family of SoCs
69
70 config NEED_MACH_MEMORY_H
71     bool
72     help
73       Select this when mach/memory.h is required to provide special
74       definitions for this platform.  The need for mach/memory.h should
75       be avoided when possible.
76
77 config ARM64_MACH_FRAMEWORK
78         def_bool y
79         depends on ARCH_TEGRA_12x_SOC || ARCH_TEGRA_21x_SOC
80         help
81           Enable support for the ARM64 machine framework. The machine framework
82           provides hooks for vendors to provide customized machine init
83           routines. WARNING: This feature will be deperacted for future chips.
84           DO NOT enable this feature for future chips.
85
86 config 64BIT
87         def_bool y
88
89 config ARCH_PHYS_ADDR_T_64BIT
90         def_bool y
91
92 config MMU
93         def_bool y
94
95 config NO_IOPORT
96         bool
97
98 config STACKTRACE_SUPPORT
99         def_bool y
100
101 config LOCKDEP_SUPPORT
102         def_bool y
103
104 config TRACE_IRQFLAGS_SUPPORT
105         def_bool y
106
107 config GENERIC_LOCKBREAK
108         def_bool y
109         depends on SMP && PREEMPT
110
111 config RWSEM_GENERIC_SPINLOCK
112         def_bool y
113
114 config ARM64_SIMPLE_SPINLOCK
115         def_bool n
116         help
117           The simple locks are designed to be simpler, faster, and more power
118           efficent than the normal locks when there are not many cores
119           contending for the lock. It does this by minimizing the time before
120           executing wfe in the contention case while minimizing the work in the
121           uncontended case.
122
123 config GENERIC_HWEIGHT
124         def_bool y
125
126 config GENERIC_CSUM
127         def_bool y
128
129 config GENERIC_CALIBRATE_DELAY
130         def_bool y
131
132 config ZONE_DMA32
133         def_bool y
134
135 config ARCH_DMA_ADDR_T_64BIT
136         def_bool y
137
138 config NEED_DMA_MAP_STATE
139         def_bool y
140
141 config ARM_HAS_SG_CHAIN
142         def_bool y
143
144 config NEED_SG_DMA_LENGTH
145         def_bool y
146
147 config SWIOTLB
148         def_bool y if !ARM_DMA_USE_IOMMU
149
150 config IOMMU_HELPER
151         def_bool SWIOTLB
152
153 config ARM_DMA_USE_IOMMU
154         select NEED_SG_DMA_LENGTH
155         select ARM_HAS_SG_CHAIN
156         bool
157
158 config MULTI_IRQ_HANDLER
159         bool
160         help
161           Allow each machine to specify it's own IRQ handler at run time.
162 config KERNEL_MODE_NEON
163         def_bool y
164
165 config KERNEL_MODE_NEON
166         def_bool y
167
168 source "init/Kconfig"
169
170 source "kernel/Kconfig.freezer"
171
172 menu "Platform selection"
173
174 config ARCH_VEXPRESS
175         bool "ARMv8 software model (Versatile Express)"
176         select ARCH_REQUIRE_GPIOLIB
177         select COMMON_CLK_VERSATILE
178         select POWER_RESET_VEXPRESS
179         select VEXPRESS_CONFIG
180         help
181           This enables support for the ARMv8 software model (Versatile
182           Express).
183
184 config ARCH_TEGRA
185         bool "NVIDIA Tegra"
186         select CLKDEV_LOOKUP
187         select CLKSRC_MMIO
188         select GENERIC_CLOCKEVENTS
189         select GENERIC_GPIO
190         select HAVE_CLK
191         select HAVE_SMP
192         select NEED_MACH_MEMORY_H
193         select PCI
194         help
195           This enables support for NVIDIA Tegra based systems (Tegra APX,
196           Tegra 6xx and Tegra 2 series).
197
198 source "arch/arm64/mach-tegra/Kconfig"
199
200 endmenu
201
202 menu "Bus support"
203
204 config ARM_AMBA
205         bool
206
207 config PCI
208         bool "PCI support" if MIGHT_HAVE_PCI
209         help
210           Find out whether you have a PCI motherboard. PCI is the name of a
211           bus system, i.e. the way the CPU talks to the other stuff inside
212           your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
213           VESA. If you have PCI, say Y, otherwise N.
214
215 source "drivers/pci/Kconfig"
216
217 source "drivers/pci/pcie/Kconfig"
218
219 endmenu
220
221 menu "Kernel Features"
222
223 config ARM64_64K_PAGES
224         bool "Enable 64KB pages support"
225         help
226           This feature enables 64KB pages support (4KB by default)
227           allowing only two levels of page tables and faster TLB
228           look-up. AArch32 emulation is not available when this feature
229           is enabled.
230
231 config CPU_BIG_ENDIAN
232        bool "Build big-endian kernel"
233        help
234          Say Y if you plan on running a kernel in big-endian mode.
235
236 config SMP
237         bool "Symmetric Multi-Processing"
238         help
239           This enables support for systems with more than one CPU.  If
240           you say N here, the kernel will run on single and
241           multiprocessor machines, but will use only one CPU of a
242           multiprocessor machine. If you say Y here, the kernel will run
243           on many, but not all, single processor machines. On a single
244           processor machine, the kernel will run faster if you say N
245           here.
246
247           If you don't know what to do here, say N.
248
249 config NR_CPUS
250         int "Maximum number of CPUs (2-32)"
251         range 2 32
252         depends on SMP
253         # These have to remain sorted largest to smallest
254         default "8"
255
256 config HOTPLUG_CPU
257         bool "Support for hot-pluggable CPUs"
258         depends on SMP && HOTPLUG
259         help
260           Say Y here to experiment with turning CPUs off and on.  CPUs
261           can be controlled through /sys/devices/system/cpu.
262
263           If you don't know what to do here, say N.
264
265 config HOTPLUG_CPU0
266         bool "Support for CPU0 hotplug"
267         depends on HOTPLUG_CPU
268         default n
269         help
270           CPU0 hotplug is not supported on all arm64 platforms. Select Y to
271           enable CPU0 hotplug. If you're unsure, leave CPU0 hotplug disabled.
272
273 config SWP_EMULATE
274         bool "Emulate SWP/SWPB instructions"
275         help
276           ARMv6 architecture deprecates use of the SWP/SWPB instructions. ARMv8
277           oblosetes the use of SWP/SWPB instructions. ARMv7 multiprocessing
278           extensions introduce the ability to disable these instructions,
279           triggering an undefined instruction exception when executed. Say Y
280           here to enable software emulation of these instructions for userspace
281           (not kernel) using LDREX/STREX. Also creates /proc/cpu/swp_emulation
282           for statistics.
283
284           In some older versions of glibc [<=2.8] SWP is used during futex
285           trylock() operations with the assumption that the code will not
286           be preempted. This invalid assumption may be more likely to fail
287           with SWP emulation enabled, leading to deadlock of the user
288           application.
289
290           NOTE: when accessing uncached shared regions, LDREX/STREX rely
291           on an external transaction monitoring block called a global
292           monitor to maintain update atomicity. If your system does not
293           implement a global monitor, this option can cause programs that
294           perform SWP operations to uncached memory to deadlock.
295
296           If unsure, say Y.
297
298 source kernel/Kconfig.preempt
299
300 config ARCH_NR_GPIO
301         int
302         default 1024 if ARCH_TEGRA
303         default 0
304         help
305
306           Maximum number of GPIOs in the system.
307           If unsure, leave the default value.
308
309 config HZ
310         int
311         default 100
312
313 config ARCH_HAS_HOLES_MEMORYMODEL
314         def_bool y if SPARSEMEM
315
316 config ARCH_SPARSEMEM_ENABLE
317         def_bool y
318         select SPARSEMEM_VMEMMAP_ENABLE
319
320 config ARCH_SPARSEMEM_DEFAULT
321         def_bool ARCH_SPARSEMEM_ENABLE
322
323 config ARCH_SELECT_MEMORY_MODEL
324         def_bool ARCH_SPARSEMEM_ENABLE
325
326 config HAVE_ARCH_PFN_VALID
327         def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
328
329 config HW_PERF_EVENTS
330         bool "Enable hardware performance counter support for perf events"
331         depends on PERF_EVENTS
332         default y
333         help
334           Enable hardware performance counter support for perf events. If
335           disabled, perf events will use software events only.
336
337 config ARMV7_COMPAT
338         bool "Kernel support for ARMv7 applications"
339         depends on COMPAT
340         select SWP_EMULATE
341         help
342          This option enables features that allow that ran on an ARMv7 or older
343          processor to continue functioning.
344
345          If you want to execute ARMv7 applications, say Y
346
347 config ARMV7_COMPAT_CPUINFO
348         bool "Report backwards compatible cpu features in /proc/cpuinfo"
349         depends on ARMV7_COMPAT
350         default y
351         help
352          This option makes /proc/cpuinfo list CPU features that an ARMv7 or
353          earlier kernel would report, but are not optional on an ARMv8 or later
354          processor.
355
356          If you want to execute ARMv7 applications, say Y
357
358 config ARMV7_COMPAT_CP15_BARRIER
359         bool "Allow applications to use the CP15 barrier operations"
360         depends on ARMV7_COMPAT
361         default y
362         help
363          This option allows applications to use deprecated CP15 barrier
364          instructions. This is useful because this was the only way to create
365          a barrier on older ARM processors.
366
367          If you want to execute ARMv7 applications, say Y
368
369 source "mm/Kconfig"
370
371 endmenu
372
373 menu "Boot options"
374
375 config CMDLINE
376         string "Default kernel command string"
377         default ""
378         help
379           Provide a set of default command-line options at build time by
380           entering them here. As a minimum, you should specify the the
381           root device (e.g. root=/dev/nfs).
382
383 choice
384         prompt "Kernel command line type" if CMDLINE != ""
385         default CMDLINE_FROM_BOOTLOADER
386
387 config CMDLINE_FROM_BOOTLOADER
388         bool "Use bootloader kernel arguments if available"
389         help
390           Uses the command-line options passed by the boot loader. If
391           the boot loader doesn't provide any, the default kernel command
392           string provided in CMDLINE will be used.
393
394 config CMDLINE_EXTEND
395         bool "Extend bootloader kernel arguments"
396         help
397           The command-line arguments provided by the boot loader will be
398           appended to the default kernel command string.
399
400 config CMDLINE_FORCE
401         bool "Always use the default kernel command string"
402         help
403           Always use the default kernel command string, even if the boot
404           loader passes other arguments to the kernel.
405           This is useful if you cannot or don't want to change the
406           command-line options your boot loader passes to the kernel.
407 endchoice
408
409 config BUILD_ARM64_APPENDED_DTB_IMAGE
410         bool "Build a concatenated Image.gz/dtb by default"
411         depends on OF
412         help
413           Enabling this option will cause a concatenated Image.gz and list of
414           DTBs to be built by default (instead of a standalone Image.gz.)
415           The image will built in arch/arm64/boot/Image.gz-dtb
416
417 config BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES
418         string "Default dtb names"
419         depends on BUILD_ARM64_APPENDED_DTB_IMAGE
420         help
421           Space separated list of names of dtbs to append when
422           building a concatenated Image.gz-dtb.
423
424 endmenu
425
426 menu "Userspace binary formats"
427
428 source "fs/Kconfig.binfmt"
429
430 config COMPAT
431         bool "Kernel support for 32-bit EL0"
432         depends on !ARM64_64K_PAGES
433         select COMPAT_BINFMT_ELF
434         select HAVE_UID16
435         select OLD_SIGSUSPEND3
436         select COMPAT_OLD_SIGACTION
437         help
438           This option enables support for a 32-bit EL0 running under a 64-bit
439           kernel at EL1. AArch32-specific components such as system calls,
440           the user helper functions, VFP support and the ptrace interface are
441           handled appropriately by the kernel.
442
443           If you want to execute 32-bit userspace applications, say Y.
444
445 config SYSVIPC_COMPAT
446         def_bool y
447         depends on COMPAT && SYSVIPC
448
449 endmenu
450
451 menu "Power management options"
452
453 source "kernel/power/Kconfig"
454
455 config ARCH_SUSPEND_POSSIBLE
456         def_bool y
457
458 config ARM_CPU_SUSPEND
459         def_bool y
460
461 config ARM64_CPU_SUSPEND
462         bool "ARM64 CPU suspend"
463         help
464           This option enables cpu suspend using cpu_ops.
465
466 endmenu
467
468 menu "CPU Power Management"
469
470 source "drivers/cpufreq/Kconfig"
471
472 source "drivers/cpuidle/Kconfig"
473
474 source "drivers/cpuquiet/Kconfig"
475
476 endmenu
477
478 source "net/Kconfig"
479
480 source "drivers/Kconfig"
481
482 source "fs/Kconfig"
483
484 source "arch/arm64/Kconfig.debug"
485
486 source "security/Kconfig"
487
488 source "crypto/Kconfig"
489
490 source "lib/Kconfig"
491
492 source "drivers/firmware/tegra/Kconfig"