irqchip: gic-v2m: Add support for ARM GICv2m MSI(-X) doorbell
[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_HAS_SG_CHAIN
5         select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
6         select ARCH_USE_CMPXCHG_LOCKREF
7         select ARCH_SUPPORTS_ATOMIC_RMW
8         select ARCH_WANT_OPTIONAL_GPIOLIB
9         select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
10         select ARCH_WANT_FRAME_POINTERS
11         select ARM_AMBA
12         select ARM_ARCH_TIMER
13         select ARM_GIC
14         select AUDIT_ARCH_COMPAT_GENERIC
15         select ARM_GIC_V2M if PCI_MSI
16         select ARM_GIC_V3
17         select ARM_GIC_V3_ITS if PCI_MSI
18         select BUILDTIME_EXTABLE_SORT
19         select CLONE_BACKWARDS
20         select COMMON_CLK
21         select CPU_PM if (SUSPEND || CPU_IDLE)
22         select DCACHE_WORD_ACCESS
23         select GENERIC_ALLOCATOR
24         select GENERIC_CLOCKEVENTS
25         select GENERIC_CLOCKEVENTS_BROADCAST if SMP
26         select GENERIC_CPU_AUTOPROBE
27         select GENERIC_EARLY_IOREMAP
28         select GENERIC_IOMAP
29         select GENERIC_IRQ_PROBE
30         select GENERIC_IRQ_SHOW
31         select GENERIC_SCHED_CLOCK
32         select GENERIC_SMP_IDLE_THREAD
33         select GENERIC_STRNCPY_FROM_USER
34         select GENERIC_STRNLEN_USER
35         select GENERIC_TIME_VSYSCALL
36         select HANDLE_DOMAIN_IRQ
37         select HARDIRQS_SW_RESEND
38         select HAVE_ARCH_AUDITSYSCALL
39         select HAVE_ARCH_JUMP_LABEL
40         select HAVE_ARCH_KGDB
41         select HAVE_ARCH_TRACEHOOK
42         select HAVE_BPF_JIT
43         select HAVE_C_RECORDMCOUNT
44         select HAVE_CC_STACKPROTECTOR
45         select HAVE_DEBUG_BUGVERBOSE
46         select HAVE_DEBUG_KMEMLEAK
47         select HAVE_DMA_API_DEBUG
48         select HAVE_DMA_ATTRS
49         select HAVE_DMA_CONTIGUOUS
50         select HAVE_DYNAMIC_FTRACE
51         select HAVE_EFFICIENT_UNALIGNED_ACCESS
52         select HAVE_FTRACE_MCOUNT_RECORD
53         select HAVE_FUNCTION_TRACER
54         select HAVE_FUNCTION_GRAPH_TRACER
55         select HAVE_GENERIC_DMA_COHERENT
56         select HAVE_HW_BREAKPOINT if PERF_EVENTS
57         select HAVE_MEMBLOCK
58         select HAVE_PATA_PLATFORM
59         select HAVE_PERF_EVENTS
60         select HAVE_PERF_REGS
61         select HAVE_PERF_USER_STACK_DUMP
62         select HAVE_RCU_TABLE_FREE
63         select HAVE_SYSCALL_TRACEPOINTS
64         select IRQ_DOMAIN
65         select MODULES_USE_ELF_RELA
66         select NO_BOOTMEM
67         select OF
68         select OF_EARLY_FLATTREE
69         select OF_RESERVED_MEM
70         select PERF_USE_VMALLOC
71         select POWER_RESET
72         select POWER_SUPPLY
73         select RTC_LIB
74         select SPARSE_IRQ
75         select SYSCTL_EXCEPTION_TRACE
76         select HAVE_CONTEXT_TRACKING
77         help
78           ARM 64-bit (AArch64) Linux support.
79
80 config 64BIT
81         def_bool y
82
83 config ARCH_PHYS_ADDR_T_64BIT
84         def_bool y
85
86 config MMU
87         def_bool y
88
89 config NO_IOPORT_MAP
90         def_bool y if !PCI
91
92 config STACKTRACE_SUPPORT
93         def_bool y
94
95 config LOCKDEP_SUPPORT
96         def_bool y
97
98 config TRACE_IRQFLAGS_SUPPORT
99         def_bool y
100
101 config RWSEM_XCHGADD_ALGORITHM
102         def_bool y
103
104 config GENERIC_HWEIGHT
105         def_bool y
106
107 config GENERIC_CSUM
108         def_bool y
109
110 config GENERIC_CALIBRATE_DELAY
111         def_bool y
112
113 config ZONE_DMA
114         def_bool y
115
116 config HAVE_GENERIC_RCU_GUP
117         def_bool y
118
119 config ARCH_DMA_ADDR_T_64BIT
120         def_bool y
121
122 config NEED_DMA_MAP_STATE
123         def_bool y
124
125 config NEED_SG_DMA_LENGTH
126         def_bool y
127
128 config SWIOTLB
129         def_bool y
130
131 config IOMMU_HELPER
132         def_bool SWIOTLB
133
134 config KERNEL_MODE_NEON
135         def_bool y
136
137 config FIX_EARLYCON_MEM
138         def_bool y
139
140 source "init/Kconfig"
141
142 source "kernel/Kconfig.freezer"
143
144 menu "Platform selection"
145
146 config ARCH_THUNDER
147         bool "Cavium Inc. Thunder SoC Family"
148         help
149           This enables support for Cavium's Thunder Family of SoCs.
150
151 config ARCH_VEXPRESS
152         bool "ARMv8 software model (Versatile Express)"
153         select ARCH_REQUIRE_GPIOLIB
154         select COMMON_CLK_VERSATILE
155         select POWER_RESET_VEXPRESS
156         select VEXPRESS_CONFIG
157         help
158           This enables support for the ARMv8 software model (Versatile
159           Express).
160
161 config ARCH_XGENE
162         bool "AppliedMicro X-Gene SOC Family"
163         help
164           This enables support for AppliedMicro X-Gene SOC Family
165
166 endmenu
167
168 menu "Bus support"
169
170 config ARM_AMBA
171         bool
172
173 config PCI
174         bool "PCI support"
175         help
176           This feature enables support for PCI bus system. If you say Y
177           here, the kernel will include drivers and infrastructure code
178           to support PCI bus devices.
179
180 config PCI_DOMAINS
181         def_bool PCI
182
183 config PCI_DOMAINS_GENERIC
184         def_bool PCI
185
186 config PCI_SYSCALL
187         def_bool PCI
188
189 source "drivers/pci/Kconfig"
190 source "drivers/pci/pcie/Kconfig"
191 source "drivers/pci/hotplug/Kconfig"
192
193 endmenu
194
195 menu "Kernel Features"
196
197 choice
198         prompt "Page size"
199         default ARM64_4K_PAGES
200         help
201           Page size (translation granule) configuration.
202
203 config ARM64_4K_PAGES
204         bool "4KB"
205         help
206           This feature enables 4KB pages support.
207
208 config ARM64_64K_PAGES
209         bool "64KB"
210         help
211           This feature enables 64KB pages support (4KB by default)
212           allowing only two levels of page tables and faster TLB
213           look-up. AArch32 emulation is not available when this feature
214           is enabled.
215
216 endchoice
217
218 choice
219         prompt "Virtual address space size"
220         default ARM64_VA_BITS_39 if ARM64_4K_PAGES
221         default ARM64_VA_BITS_42 if ARM64_64K_PAGES
222         help
223           Allows choosing one of multiple possible virtual address
224           space sizes. The level of translation table is determined by
225           a combination of page size and virtual address space size.
226
227 config ARM64_VA_BITS_39
228         bool "39-bit"
229         depends on ARM64_4K_PAGES
230
231 config ARM64_VA_BITS_42
232         bool "42-bit"
233         depends on ARM64_64K_PAGES
234
235 config ARM64_VA_BITS_48
236         bool "48-bit"
237         depends on BROKEN
238
239 endchoice
240
241 config ARM64_VA_BITS
242         int
243         default 39 if ARM64_VA_BITS_39
244         default 42 if ARM64_VA_BITS_42
245         default 48 if ARM64_VA_BITS_48
246
247 config ARM64_PGTABLE_LEVELS
248         int
249         default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42
250         default 3 if ARM64_64K_PAGES && ARM64_VA_BITS_48
251         default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39
252         default 4 if ARM64_4K_PAGES && ARM64_VA_BITS_48
253
254 config CPU_BIG_ENDIAN
255        bool "Build big-endian kernel"
256        help
257          Say Y if you plan on running a kernel in big-endian mode.
258
259 config SMP
260         bool "Symmetric Multi-Processing"
261         help
262           This enables support for systems with more than one CPU.  If
263           you say N here, the kernel will run on single and
264           multiprocessor machines, but will use only one CPU of a
265           multiprocessor machine. If you say Y here, the kernel will run
266           on many, but not all, single processor machines. On a single
267           processor machine, the kernel will run faster if you say N
268           here.
269
270           If you don't know what to do here, say N.
271
272 config SCHED_MC
273         bool "Multi-core scheduler support"
274         depends on SMP
275         help
276           Multi-core scheduler support improves the CPU scheduler's decision
277           making when dealing with multi-core CPU chips at a cost of slightly
278           increased overhead in some places. If unsure say N here.
279
280 config SCHED_SMT
281         bool "SMT scheduler support"
282         depends on SMP
283         help
284           Improves the CPU scheduler's decision making when dealing with
285           MultiThreading at a cost of slightly increased overhead in some
286           places. If unsure say N here.
287
288 config NR_CPUS
289         int "Maximum number of CPUs (2-64)"
290         range 2 64
291         depends on SMP
292         # These have to remain sorted largest to smallest
293         default "64"
294
295 config HOTPLUG_CPU
296         bool "Support for hot-pluggable CPUs"
297         depends on SMP
298         help
299           Say Y here to experiment with turning CPUs off and on.  CPUs
300           can be controlled through /sys/devices/system/cpu.
301
302 source kernel/Kconfig.preempt
303
304 config HZ
305         int
306         default 100
307
308 config ARCH_HAS_HOLES_MEMORYMODEL
309         def_bool y if SPARSEMEM
310
311 config ARCH_SPARSEMEM_ENABLE
312         def_bool y
313         select SPARSEMEM_VMEMMAP_ENABLE
314
315 config ARCH_SPARSEMEM_DEFAULT
316         def_bool ARCH_SPARSEMEM_ENABLE
317
318 config ARCH_SELECT_MEMORY_MODEL
319         def_bool ARCH_SPARSEMEM_ENABLE
320
321 config HAVE_ARCH_PFN_VALID
322         def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
323
324 config HW_PERF_EVENTS
325         bool "Enable hardware performance counter support for perf events"
326         depends on PERF_EVENTS
327         default y
328         help
329           Enable hardware performance counter support for perf events. If
330           disabled, perf events will use software events only.
331
332 config SYS_SUPPORTS_HUGETLBFS
333         def_bool y
334
335 config ARCH_WANT_GENERAL_HUGETLB
336         def_bool y
337
338 config ARCH_WANT_HUGE_PMD_SHARE
339         def_bool y if !ARM64_64K_PAGES
340
341 config HAVE_ARCH_TRANSPARENT_HUGEPAGE
342         def_bool y
343
344 config ARCH_HAS_CACHE_LINE_SIZE
345         def_bool y
346
347 source "mm/Kconfig"
348
349 config XEN_DOM0
350         def_bool y
351         depends on XEN
352
353 config XEN
354         bool "Xen guest support on ARM64"
355         depends on ARM64 && OF
356         select SWIOTLB_XEN
357         help
358           Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64.
359
360 config FORCE_MAX_ZONEORDER
361         int
362         default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
363         default "11"
364
365 endmenu
366
367 menu "Boot options"
368
369 config CMDLINE
370         string "Default kernel command string"
371         default ""
372         help
373           Provide a set of default command-line options at build time by
374           entering them here. As a minimum, you should specify the the
375           root device (e.g. root=/dev/nfs).
376
377 config CMDLINE_FORCE
378         bool "Always use the default kernel command string"
379         help
380           Always use the default kernel command string, even if the boot
381           loader passes other arguments to the kernel.
382           This is useful if you cannot or don't want to change the
383           command-line options your boot loader passes to the kernel.
384
385 config EFI_STUB
386         bool
387
388 config EFI
389         bool "UEFI runtime support"
390         depends on OF && !CPU_BIG_ENDIAN
391         select LIBFDT
392         select UCS2_STRING
393         select EFI_PARAMS_FROM_FDT
394         select EFI_RUNTIME_WRAPPERS
395         select EFI_STUB
396         select EFI_ARMSTUB
397         default y
398         help
399           This option provides support for runtime services provided
400           by UEFI firmware (such as non-volatile variables, realtime
401           clock, and platform reset). A UEFI stub is also provided to
402           allow the kernel to be booted as an EFI application. This
403           is only useful on systems that have UEFI firmware.
404
405 endmenu
406
407 menu "Userspace binary formats"
408
409 source "fs/Kconfig.binfmt"
410
411 config COMPAT
412         bool "Kernel support for 32-bit EL0"
413         depends on !ARM64_64K_PAGES
414         select COMPAT_BINFMT_ELF
415         select HAVE_UID16
416         select OLD_SIGSUSPEND3
417         select COMPAT_OLD_SIGACTION
418         help
419           This option enables support for a 32-bit EL0 running under a 64-bit
420           kernel at EL1. AArch32-specific components such as system calls,
421           the user helper functions, VFP support and the ptrace interface are
422           handled appropriately by the kernel.
423
424           If you want to execute 32-bit userspace applications, say Y.
425
426 config SYSVIPC_COMPAT
427         def_bool y
428         depends on COMPAT && SYSVIPC
429
430 endmenu
431
432 menu "Power management options"
433
434 source "kernel/power/Kconfig"
435
436 config ARCH_SUSPEND_POSSIBLE
437         def_bool y
438
439 config ARM64_CPU_SUSPEND
440         def_bool PM_SLEEP
441
442 endmenu
443
444 menu "CPU Power Management"
445
446 source "drivers/cpuidle/Kconfig"
447
448 source "drivers/cpufreq/Kconfig"
449
450 endmenu
451
452 source "net/Kconfig"
453
454 source "drivers/Kconfig"
455
456 source "drivers/firmware/Kconfig"
457
458 source "fs/Kconfig"
459
460 source "arch/arm64/kvm/Kconfig"
461
462 source "arch/arm64/Kconfig.debug"
463
464 source "security/Kconfig"
465
466 source "crypto/Kconfig"
467 if CRYPTO
468 source "arch/arm64/crypto/Kconfig"
469 endif
470
471 source "lib/Kconfig"