xref: /kernel/linux/linux-5.10/arch/arm/Kconfig (revision 8c2ecf20)
18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ciconfig ARM
38c2ecf20Sopenharmony_ci	bool
48c2ecf20Sopenharmony_ci	default y
58c2ecf20Sopenharmony_ci	select ARCH_32BIT_OFF_T
68c2ecf20Sopenharmony_ci	select ARCH_HAS_BINFMT_FLAT
78c2ecf20Sopenharmony_ci	select ARCH_HAS_CPU_FINALIZE_INIT if MMU
88c2ecf20Sopenharmony_ci	select ARCH_HAS_DEBUG_VIRTUAL if MMU
98c2ecf20Sopenharmony_ci	select ARCH_HAS_DEVMEM_IS_ALLOWED
108c2ecf20Sopenharmony_ci	select ARCH_HAS_DMA_WRITE_COMBINE if !ARM_DMA_MEM_BUFFERABLE
118c2ecf20Sopenharmony_ci	select ARCH_HAS_ELF_RANDOMIZE
128c2ecf20Sopenharmony_ci	select ARCH_HAS_FORTIFY_SOURCE
138c2ecf20Sopenharmony_ci	select ARCH_HAS_KEEPINITRD
148c2ecf20Sopenharmony_ci	select ARCH_HAS_KCOV
158c2ecf20Sopenharmony_ci	select ARCH_HAS_MEMBARRIER_SYNC_CORE
168c2ecf20Sopenharmony_ci	select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
178c2ecf20Sopenharmony_ci	select ARCH_HAS_PTE_SPECIAL if ARM_LPAE
188c2ecf20Sopenharmony_ci	select ARCH_HAS_PHYS_TO_DMA
198c2ecf20Sopenharmony_ci	select ARCH_HAS_SETUP_DMA_OPS
208c2ecf20Sopenharmony_ci	select ARCH_HAS_SET_MEMORY
218c2ecf20Sopenharmony_ci	select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL
228c2ecf20Sopenharmony_ci	select ARCH_HAS_STRICT_MODULE_RWX if MMU
238c2ecf20Sopenharmony_ci	select ARCH_HAS_SYNC_DMA_FOR_DEVICE if SWIOTLB
248c2ecf20Sopenharmony_ci	select ARCH_HAS_SYNC_DMA_FOR_CPU if SWIOTLB
258c2ecf20Sopenharmony_ci	select ARCH_HAS_TEARDOWN_DMA_OPS if MMU
268c2ecf20Sopenharmony_ci	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
278c2ecf20Sopenharmony_ci	select ARCH_HAVE_CUSTOM_GPIO_H
288c2ecf20Sopenharmony_ci	select ARCH_HAS_GCOV_PROFILE_ALL
298c2ecf20Sopenharmony_ci	select ARCH_KEEP_MEMBLOCK
308c2ecf20Sopenharmony_ci	select ARCH_MIGHT_HAVE_PC_PARPORT
318c2ecf20Sopenharmony_ci	select ARCH_NO_SG_CHAIN if !ARM_HAS_SG_CHAIN
328c2ecf20Sopenharmony_ci	select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
338c2ecf20Sopenharmony_ci	select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT if CPU_V7
348c2ecf20Sopenharmony_ci	select ARCH_SUPPORTS_ATOMIC_RMW
358c2ecf20Sopenharmony_ci	select ARCH_USE_BUILTIN_BSWAP
368c2ecf20Sopenharmony_ci	select ARCH_USE_CMPXCHG_LOCKREF
378c2ecf20Sopenharmony_ci	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
388c2ecf20Sopenharmony_ci	select ARCH_WANT_IPC_PARSE_VERSION
398c2ecf20Sopenharmony_ci	select ARCH_WANT_LD_ORPHAN_WARN
408c2ecf20Sopenharmony_ci	select BINFMT_FLAT_ARGVP_ENVP_ON_STACK
418c2ecf20Sopenharmony_ci	select BUILDTIME_TABLE_SORT if MMU
428c2ecf20Sopenharmony_ci	select CLONE_BACKWARDS
438c2ecf20Sopenharmony_ci	select CPU_PM if SUSPEND || CPU_IDLE
448c2ecf20Sopenharmony_ci	select DCACHE_WORD_ACCESS if HAVE_EFFICIENT_UNALIGNED_ACCESS
458c2ecf20Sopenharmony_ci	select DMA_DECLARE_COHERENT
468c2ecf20Sopenharmony_ci	select DMA_OPS
478c2ecf20Sopenharmony_ci	select DMA_REMAP if MMU
488c2ecf20Sopenharmony_ci	select EDAC_SUPPORT
498c2ecf20Sopenharmony_ci	select EDAC_ATOMIC_SCRUB
508c2ecf20Sopenharmony_ci	select GENERIC_ALLOCATOR
518c2ecf20Sopenharmony_ci	select GENERIC_ARCH_TOPOLOGY if ARM_CPU_TOPOLOGY
528c2ecf20Sopenharmony_ci	select GENERIC_ATOMIC64 if CPU_V7M || CPU_V6 || !CPU_32v6K || !AEABI
538c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS_BROADCAST if SMP
548c2ecf20Sopenharmony_ci	select GENERIC_IRQ_IPI if SMP
558c2ecf20Sopenharmony_ci	select GENERIC_CPU_AUTOPROBE
568c2ecf20Sopenharmony_ci	select GENERIC_EARLY_IOREMAP
578c2ecf20Sopenharmony_ci	select GENERIC_IDLE_POLL_SETUP
588c2ecf20Sopenharmony_ci	select GENERIC_IRQ_PROBE
598c2ecf20Sopenharmony_ci	select GENERIC_IRQ_SHOW
608c2ecf20Sopenharmony_ci	select GENERIC_IRQ_SHOW_LEVEL
618c2ecf20Sopenharmony_ci	select GENERIC_PCI_IOMAP
628c2ecf20Sopenharmony_ci	select GENERIC_SCHED_CLOCK
638c2ecf20Sopenharmony_ci	select GENERIC_SMP_IDLE_THREAD
648c2ecf20Sopenharmony_ci	select GENERIC_STRNCPY_FROM_USER
658c2ecf20Sopenharmony_ci	select GENERIC_STRNLEN_USER
668c2ecf20Sopenharmony_ci	select HANDLE_DOMAIN_IRQ
678c2ecf20Sopenharmony_ci	select HARDIRQS_SW_RESEND
688c2ecf20Sopenharmony_ci	select HAVE_ARCH_AUDITSYSCALL if AEABI && !OABI_COMPAT
698c2ecf20Sopenharmony_ci	select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6
708c2ecf20Sopenharmony_ci	select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU
718c2ecf20Sopenharmony_ci	select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU
728c2ecf20Sopenharmony_ci	select HAVE_ARCH_KASAN if MMU && !XIP_KERNEL
738c2ecf20Sopenharmony_ci	select HAVE_ARCH_MMAP_RND_BITS if MMU
748c2ecf20Sopenharmony_ci	select HAVE_ARCH_SECCOMP
758c2ecf20Sopenharmony_ci	select HAVE_ARCH_SECCOMP_FILTER if AEABI && !OABI_COMPAT
768c2ecf20Sopenharmony_ci	select HAVE_ARCH_THREAD_STRUCT_WHITELIST
778c2ecf20Sopenharmony_ci	select HAVE_ARCH_TRACEHOOK
788c2ecf20Sopenharmony_ci	select HAVE_ARM_SMCCC if CPU_V7
798c2ecf20Sopenharmony_ci	select HAVE_EBPF_JIT if !CPU_ENDIAN_BE32
808c2ecf20Sopenharmony_ci	select HAVE_CONTEXT_TRACKING
818c2ecf20Sopenharmony_ci	select HAVE_C_RECORDMCOUNT
828c2ecf20Sopenharmony_ci	select HAVE_DEBUG_KMEMLEAK if !XIP_KERNEL
838c2ecf20Sopenharmony_ci	select HAVE_DMA_CONTIGUOUS if MMU
848c2ecf20Sopenharmony_ci	select HAVE_DYNAMIC_FTRACE if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU
858c2ecf20Sopenharmony_ci	select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
868c2ecf20Sopenharmony_ci	select HAVE_EFFICIENT_UNALIGNED_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && MMU
878c2ecf20Sopenharmony_ci	select HAVE_EXIT_THREAD
888c2ecf20Sopenharmony_ci	select HAVE_FAST_GUP if ARM_LPAE
898c2ecf20Sopenharmony_ci	select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL
908c2ecf20Sopenharmony_ci	select HAVE_FUNCTION_GRAPH_TRACER if !THUMB2_KERNEL && !CC_IS_CLANG
918c2ecf20Sopenharmony_ci	select HAVE_FUNCTION_TRACER if !XIP_KERNEL
928c2ecf20Sopenharmony_ci	select HAVE_FUTEX_CMPXCHG if FUTEX
938c2ecf20Sopenharmony_ci	select HAVE_GCC_PLUGINS
948c2ecf20Sopenharmony_ci	select HAVE_HW_BREAKPOINT if PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7)
958c2ecf20Sopenharmony_ci	select HAVE_IDE if PCI || ISA || PCMCIA
968c2ecf20Sopenharmony_ci	select HAVE_IRQ_TIME_ACCOUNTING
978c2ecf20Sopenharmony_ci	select HAVE_KERNEL_GZIP
988c2ecf20Sopenharmony_ci	select HAVE_KERNEL_LZ4
998c2ecf20Sopenharmony_ci	select HAVE_KERNEL_LZMA
1008c2ecf20Sopenharmony_ci	select HAVE_KERNEL_LZO
1018c2ecf20Sopenharmony_ci	select HAVE_KERNEL_XZ
1028c2ecf20Sopenharmony_ci	select HAVE_KPROBES if !XIP_KERNEL && !CPU_ENDIAN_BE32 && !CPU_V7M
1038c2ecf20Sopenharmony_ci	select HAVE_KRETPROBES if HAVE_KPROBES
1048c2ecf20Sopenharmony_ci	select HAVE_MOD_ARCH_SPECIFIC
1058c2ecf20Sopenharmony_ci	select HAVE_NMI
1068c2ecf20Sopenharmony_ci	select HAVE_OPROFILE if HAVE_PERF_EVENTS
1078c2ecf20Sopenharmony_ci	select HAVE_OPTPROBES if !THUMB2_KERNEL
1088c2ecf20Sopenharmony_ci	select HAVE_PERF_EVENTS
1098c2ecf20Sopenharmony_ci	select HAVE_PERF_REGS
1108c2ecf20Sopenharmony_ci	select HAVE_PERF_USER_STACK_DUMP
1118c2ecf20Sopenharmony_ci	select MMU_GATHER_RCU_TABLE_FREE if SMP && ARM_LPAE
1128c2ecf20Sopenharmony_ci	select HAVE_REGS_AND_STACK_ACCESS_API
1138c2ecf20Sopenharmony_ci	select HAVE_RSEQ
1148c2ecf20Sopenharmony_ci	select HAVE_STACKPROTECTOR
1158c2ecf20Sopenharmony_ci	select HAVE_SYSCALL_TRACEPOINTS
1168c2ecf20Sopenharmony_ci	select HAVE_UID16
1178c2ecf20Sopenharmony_ci	select HAVE_VIRT_CPU_ACCOUNTING_GEN
1188c2ecf20Sopenharmony_ci	select IRQ_FORCED_THREADING
1198c2ecf20Sopenharmony_ci	select MODULES_USE_ELF_REL
1208c2ecf20Sopenharmony_ci	select NEED_DMA_MAP_STATE
1218c2ecf20Sopenharmony_ci	select OF_EARLY_FLATTREE if OF
1228c2ecf20Sopenharmony_ci	select OLD_SIGACTION
1238c2ecf20Sopenharmony_ci	select OLD_SIGSUSPEND3
1248c2ecf20Sopenharmony_ci	select PCI_SYSCALL if PCI
1258c2ecf20Sopenharmony_ci	select PERF_USE_VMALLOC
1268c2ecf20Sopenharmony_ci	select RTC_LIB
1278c2ecf20Sopenharmony_ci	select SET_FS
1288c2ecf20Sopenharmony_ci	select SYS_SUPPORTS_APM_EMULATION
1298c2ecf20Sopenharmony_ci	# Above selects are sorted alphabetically; please add new ones
1308c2ecf20Sopenharmony_ci	# according to that.  Thanks.
1318c2ecf20Sopenharmony_ci	help
1328c2ecf20Sopenharmony_ci	  The ARM series is a line of low-power-consumption RISC chip designs
1338c2ecf20Sopenharmony_ci	  licensed by ARM Ltd and targeted at embedded applications and
1348c2ecf20Sopenharmony_ci	  handhelds such as the Compaq IPAQ.  ARM-based PCs are no longer
1358c2ecf20Sopenharmony_ci	  manufactured, but legacy ARM-based PC hardware remains popular in
1368c2ecf20Sopenharmony_ci	  Europe.  There is an ARM Linux project with a web page at
1378c2ecf20Sopenharmony_ci	  <http://www.arm.linux.org.uk/>.
1388c2ecf20Sopenharmony_ci
1398c2ecf20Sopenharmony_ciconfig ARM_HAS_SG_CHAIN
1408c2ecf20Sopenharmony_ci	bool
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_ciconfig ARM_DMA_USE_IOMMU
1438c2ecf20Sopenharmony_ci	bool
1448c2ecf20Sopenharmony_ci	select ARM_HAS_SG_CHAIN
1458c2ecf20Sopenharmony_ci	select NEED_SG_DMA_LENGTH
1468c2ecf20Sopenharmony_ci
1478c2ecf20Sopenharmony_ciif ARM_DMA_USE_IOMMU
1488c2ecf20Sopenharmony_ci
1498c2ecf20Sopenharmony_ciconfig ARM_DMA_IOMMU_ALIGNMENT
1508c2ecf20Sopenharmony_ci	int "Maximum PAGE_SIZE order of alignment for DMA IOMMU buffers"
1518c2ecf20Sopenharmony_ci	range 4 9
1528c2ecf20Sopenharmony_ci	default 8
1538c2ecf20Sopenharmony_ci	help
1548c2ecf20Sopenharmony_ci	  DMA mapping framework by default aligns all buffers to the smallest
1558c2ecf20Sopenharmony_ci	  PAGE_SIZE order which is greater than or equal to the requested buffer
1568c2ecf20Sopenharmony_ci	  size. This works well for buffers up to a few hundreds kilobytes, but
1578c2ecf20Sopenharmony_ci	  for larger buffers it just a waste of address space. Drivers which has
1588c2ecf20Sopenharmony_ci	  relatively small addressing window (like 64Mib) might run out of
1598c2ecf20Sopenharmony_ci	  virtual space with just a few allocations.
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ci	  With this parameter you can specify the maximum PAGE_SIZE order for
1628c2ecf20Sopenharmony_ci	  DMA IOMMU buffers. Larger buffers will be aligned only to this
1638c2ecf20Sopenharmony_ci	  specified order. The order is expressed as a power of two multiplied
1648c2ecf20Sopenharmony_ci	  by the PAGE_SIZE.
1658c2ecf20Sopenharmony_ci
1668c2ecf20Sopenharmony_ciendif
1678c2ecf20Sopenharmony_ci
1688c2ecf20Sopenharmony_ciconfig SYS_SUPPORTS_APM_EMULATION
1698c2ecf20Sopenharmony_ci	bool
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ciconfig HAVE_TCM
1728c2ecf20Sopenharmony_ci	bool
1738c2ecf20Sopenharmony_ci	select GENERIC_ALLOCATOR
1748c2ecf20Sopenharmony_ci
1758c2ecf20Sopenharmony_ciconfig HAVE_PROC_CPU
1768c2ecf20Sopenharmony_ci	bool
1778c2ecf20Sopenharmony_ci
1788c2ecf20Sopenharmony_ciconfig NO_IOPORT_MAP
1798c2ecf20Sopenharmony_ci	bool
1808c2ecf20Sopenharmony_ci
1818c2ecf20Sopenharmony_ciconfig SBUS
1828c2ecf20Sopenharmony_ci	bool
1838c2ecf20Sopenharmony_ci
1848c2ecf20Sopenharmony_ciconfig STACKTRACE_SUPPORT
1858c2ecf20Sopenharmony_ci	bool
1868c2ecf20Sopenharmony_ci	default y
1878c2ecf20Sopenharmony_ci
1888c2ecf20Sopenharmony_ciconfig LOCKDEP_SUPPORT
1898c2ecf20Sopenharmony_ci	bool
1908c2ecf20Sopenharmony_ci	default y
1918c2ecf20Sopenharmony_ci
1928c2ecf20Sopenharmony_ciconfig TRACE_IRQFLAGS_SUPPORT
1938c2ecf20Sopenharmony_ci	bool
1948c2ecf20Sopenharmony_ci	default !CPU_V7M
1958c2ecf20Sopenharmony_ci
1968c2ecf20Sopenharmony_ciconfig ARCH_HAS_ILOG2_U32
1978c2ecf20Sopenharmony_ci	bool
1988c2ecf20Sopenharmony_ci
1998c2ecf20Sopenharmony_ciconfig ARCH_HAS_ILOG2_U64
2008c2ecf20Sopenharmony_ci	bool
2018c2ecf20Sopenharmony_ci
2028c2ecf20Sopenharmony_ciconfig ARCH_HAS_BANDGAP
2038c2ecf20Sopenharmony_ci	bool
2048c2ecf20Sopenharmony_ci
2058c2ecf20Sopenharmony_ciconfig FIX_EARLYCON_MEM
2068c2ecf20Sopenharmony_ci	def_bool y if MMU
2078c2ecf20Sopenharmony_ci
2088c2ecf20Sopenharmony_ciconfig GENERIC_HWEIGHT
2098c2ecf20Sopenharmony_ci	bool
2108c2ecf20Sopenharmony_ci	default y
2118c2ecf20Sopenharmony_ci
2128c2ecf20Sopenharmony_ciconfig GENERIC_CALIBRATE_DELAY
2138c2ecf20Sopenharmony_ci	bool
2148c2ecf20Sopenharmony_ci	default y
2158c2ecf20Sopenharmony_ci
2168c2ecf20Sopenharmony_ciconfig ARCH_MAY_HAVE_PC_FDC
2178c2ecf20Sopenharmony_ci	bool
2188c2ecf20Sopenharmony_ci
2198c2ecf20Sopenharmony_ciconfig ZONE_DMA
2208c2ecf20Sopenharmony_ci	bool
2218c2ecf20Sopenharmony_ci
2228c2ecf20Sopenharmony_ciconfig ARCH_SUPPORTS_UPROBES
2238c2ecf20Sopenharmony_ci	def_bool y
2248c2ecf20Sopenharmony_ci
2258c2ecf20Sopenharmony_ciconfig ARCH_HAS_DMA_SET_COHERENT_MASK
2268c2ecf20Sopenharmony_ci	bool
2278c2ecf20Sopenharmony_ci
2288c2ecf20Sopenharmony_ciconfig GENERIC_ISA_DMA
2298c2ecf20Sopenharmony_ci	bool
2308c2ecf20Sopenharmony_ci
2318c2ecf20Sopenharmony_ciconfig FIQ
2328c2ecf20Sopenharmony_ci	bool
2338c2ecf20Sopenharmony_ci
2348c2ecf20Sopenharmony_ciconfig NEED_RET_TO_USER
2358c2ecf20Sopenharmony_ci	bool
2368c2ecf20Sopenharmony_ci
2378c2ecf20Sopenharmony_ciconfig ARCH_MTD_XIP
2388c2ecf20Sopenharmony_ci	bool
2398c2ecf20Sopenharmony_ci
2408c2ecf20Sopenharmony_ciconfig ARM_PATCH_PHYS_VIRT
2418c2ecf20Sopenharmony_ci	bool "Patch physical to virtual translations at runtime" if EMBEDDED
2428c2ecf20Sopenharmony_ci	default y
2438c2ecf20Sopenharmony_ci	depends on !XIP_KERNEL && MMU
2448c2ecf20Sopenharmony_ci	help
2458c2ecf20Sopenharmony_ci	  Patch phys-to-virt and virt-to-phys translation functions at
2468c2ecf20Sopenharmony_ci	  boot and module load time according to the position of the
2478c2ecf20Sopenharmony_ci	  kernel in system memory.
2488c2ecf20Sopenharmony_ci
2498c2ecf20Sopenharmony_ci	  This can only be used with non-XIP MMU kernels where the base
2508c2ecf20Sopenharmony_ci	  of physical memory is at a 2 MiB boundary.
2518c2ecf20Sopenharmony_ci
2528c2ecf20Sopenharmony_ci	  Only disable this option if you know that you do not require
2538c2ecf20Sopenharmony_ci	  this feature (eg, building a kernel for a single machine) and
2548c2ecf20Sopenharmony_ci	  you need to shrink the kernel to the minimal size.
2558c2ecf20Sopenharmony_ci
2568c2ecf20Sopenharmony_ciconfig NEED_MACH_IO_H
2578c2ecf20Sopenharmony_ci	bool
2588c2ecf20Sopenharmony_ci	help
2598c2ecf20Sopenharmony_ci	  Select this when mach/io.h is required to provide special
2608c2ecf20Sopenharmony_ci	  definitions for this platform.  The need for mach/io.h should
2618c2ecf20Sopenharmony_ci	  be avoided when possible.
2628c2ecf20Sopenharmony_ci
2638c2ecf20Sopenharmony_ciconfig NEED_MACH_MEMORY_H
2648c2ecf20Sopenharmony_ci	bool
2658c2ecf20Sopenharmony_ci	help
2668c2ecf20Sopenharmony_ci	  Select this when mach/memory.h is required to provide special
2678c2ecf20Sopenharmony_ci	  definitions for this platform.  The need for mach/memory.h should
2688c2ecf20Sopenharmony_ci	  be avoided when possible.
2698c2ecf20Sopenharmony_ci
2708c2ecf20Sopenharmony_ciconfig PHYS_OFFSET
2718c2ecf20Sopenharmony_ci	hex "Physical address of main memory" if MMU
2728c2ecf20Sopenharmony_ci	depends on !ARM_PATCH_PHYS_VIRT
2738c2ecf20Sopenharmony_ci	default DRAM_BASE if !MMU
2748c2ecf20Sopenharmony_ci	default 0x00000000 if ARCH_EBSA110 || \
2758c2ecf20Sopenharmony_ci			ARCH_FOOTBRIDGE
2768c2ecf20Sopenharmony_ci	default 0x10000000 if ARCH_OMAP1 || ARCH_RPC
2778c2ecf20Sopenharmony_ci	default 0x20000000 if ARCH_S5PV210
2788c2ecf20Sopenharmony_ci	default 0xc0000000 if ARCH_SA1100
2798c2ecf20Sopenharmony_ci	help
2808c2ecf20Sopenharmony_ci	  Please provide the physical address corresponding to the
2818c2ecf20Sopenharmony_ci	  location of main memory in your system.
2828c2ecf20Sopenharmony_ci
2838c2ecf20Sopenharmony_ciconfig GENERIC_BUG
2848c2ecf20Sopenharmony_ci	def_bool y
2858c2ecf20Sopenharmony_ci	depends on BUG
2868c2ecf20Sopenharmony_ci
2878c2ecf20Sopenharmony_ciconfig PGTABLE_LEVELS
2888c2ecf20Sopenharmony_ci	int
2898c2ecf20Sopenharmony_ci	default 3 if ARM_LPAE
2908c2ecf20Sopenharmony_ci	default 2
2918c2ecf20Sopenharmony_ci
2928c2ecf20Sopenharmony_cimenu "System Type"
2938c2ecf20Sopenharmony_ci
2948c2ecf20Sopenharmony_ciconfig MMU
2958c2ecf20Sopenharmony_ci	bool "MMU-based Paged Memory Management Support"
2968c2ecf20Sopenharmony_ci	default y
2978c2ecf20Sopenharmony_ci	help
2988c2ecf20Sopenharmony_ci	  Select if you want MMU-based virtualised addressing space
2998c2ecf20Sopenharmony_ci	  support by paged memory management. If unsure, say 'Y'.
3008c2ecf20Sopenharmony_ci
3018c2ecf20Sopenharmony_ciconfig ARCH_MMAP_RND_BITS_MIN
3028c2ecf20Sopenharmony_ci	default 8
3038c2ecf20Sopenharmony_ci
3048c2ecf20Sopenharmony_ciconfig ARCH_MMAP_RND_BITS_MAX
3058c2ecf20Sopenharmony_ci	default 14 if PAGE_OFFSET=0x40000000
3068c2ecf20Sopenharmony_ci	default 15 if PAGE_OFFSET=0x80000000
3078c2ecf20Sopenharmony_ci	default 16
3088c2ecf20Sopenharmony_ci
3098c2ecf20Sopenharmony_ci#
3108c2ecf20Sopenharmony_ci# The "ARM system type" choice list is ordered alphabetically by option
3118c2ecf20Sopenharmony_ci# text.  Please add new entries in the option alphabetic order.
3128c2ecf20Sopenharmony_ci#
3138c2ecf20Sopenharmony_cichoice
3148c2ecf20Sopenharmony_ci	prompt "ARM system type"
3158c2ecf20Sopenharmony_ci	default ARM_SINGLE_ARMV7M if !MMU
3168c2ecf20Sopenharmony_ci	default ARCH_MULTIPLATFORM if MMU
3178c2ecf20Sopenharmony_ci
3188c2ecf20Sopenharmony_ciconfig ARCH_MULTIPLATFORM
3198c2ecf20Sopenharmony_ci	bool "Allow multiple platforms to be selected"
3208c2ecf20Sopenharmony_ci	depends on MMU
3218c2ecf20Sopenharmony_ci	select ARCH_FLATMEM_ENABLE
3228c2ecf20Sopenharmony_ci	select ARCH_SPARSEMEM_ENABLE
3238c2ecf20Sopenharmony_ci	select ARCH_SELECT_MEMORY_MODEL
3248c2ecf20Sopenharmony_ci	select ARM_HAS_SG_CHAIN
3258c2ecf20Sopenharmony_ci	select ARM_PATCH_PHYS_VIRT
3268c2ecf20Sopenharmony_ci	select AUTO_ZRELADDR
3278c2ecf20Sopenharmony_ci	select TIMER_OF
3288c2ecf20Sopenharmony_ci	select COMMON_CLK
3298c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS
3308c2ecf20Sopenharmony_ci	select GENERIC_IRQ_MULTI_HANDLER
3318c2ecf20Sopenharmony_ci	select HAVE_PCI
3328c2ecf20Sopenharmony_ci	select PCI_DOMAINS_GENERIC if PCI
3338c2ecf20Sopenharmony_ci	select SPARSE_IRQ
3348c2ecf20Sopenharmony_ci	select USE_OF
3358c2ecf20Sopenharmony_ci
3368c2ecf20Sopenharmony_ciconfig ARM_SINGLE_ARMV7M
3378c2ecf20Sopenharmony_ci	bool "ARMv7-M based platforms (Cortex-M0/M3/M4)"
3388c2ecf20Sopenharmony_ci	depends on !MMU
3398c2ecf20Sopenharmony_ci	select ARM_NVIC
3408c2ecf20Sopenharmony_ci	select AUTO_ZRELADDR
3418c2ecf20Sopenharmony_ci	select TIMER_OF
3428c2ecf20Sopenharmony_ci	select COMMON_CLK
3438c2ecf20Sopenharmony_ci	select CPU_V7M
3448c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS
3458c2ecf20Sopenharmony_ci	select NO_IOPORT_MAP
3468c2ecf20Sopenharmony_ci	select SPARSE_IRQ
3478c2ecf20Sopenharmony_ci	select USE_OF
3488c2ecf20Sopenharmony_ci
3498c2ecf20Sopenharmony_ciconfig ARCH_EBSA110
3508c2ecf20Sopenharmony_ci	bool "EBSA-110"
3518c2ecf20Sopenharmony_ci	select ARCH_USES_GETTIMEOFFSET
3528c2ecf20Sopenharmony_ci	select CPU_SA110
3538c2ecf20Sopenharmony_ci	select ISA
3548c2ecf20Sopenharmony_ci	select NEED_MACH_IO_H
3558c2ecf20Sopenharmony_ci	select NEED_MACH_MEMORY_H
3568c2ecf20Sopenharmony_ci	select NO_IOPORT_MAP
3578c2ecf20Sopenharmony_ci	help
3588c2ecf20Sopenharmony_ci	  This is an evaluation board for the StrongARM processor available
3598c2ecf20Sopenharmony_ci	  from Digital. It has limited hardware on-board, including an
3608c2ecf20Sopenharmony_ci	  Ethernet interface, two PCMCIA sockets, two serial ports and a
3618c2ecf20Sopenharmony_ci	  parallel port.
3628c2ecf20Sopenharmony_ci
3638c2ecf20Sopenharmony_ciconfig ARCH_EP93XX
3648c2ecf20Sopenharmony_ci	bool "EP93xx-based"
3658c2ecf20Sopenharmony_ci	select ARCH_SPARSEMEM_ENABLE
3668c2ecf20Sopenharmony_ci	select ARM_AMBA
3678c2ecf20Sopenharmony_ci	imply ARM_PATCH_PHYS_VIRT
3688c2ecf20Sopenharmony_ci	select ARM_VIC
3698c2ecf20Sopenharmony_ci	select AUTO_ZRELADDR
3708c2ecf20Sopenharmony_ci	select CLKDEV_LOOKUP
3718c2ecf20Sopenharmony_ci	select CLKSRC_MMIO
3728c2ecf20Sopenharmony_ci	select CPU_ARM920T
3738c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS
3748c2ecf20Sopenharmony_ci	select GPIOLIB
3758c2ecf20Sopenharmony_ci	select HAVE_LEGACY_CLK
3768c2ecf20Sopenharmony_ci	help
3778c2ecf20Sopenharmony_ci	  This enables support for the Cirrus EP93xx series of CPUs.
3788c2ecf20Sopenharmony_ci
3798c2ecf20Sopenharmony_ciconfig ARCH_FOOTBRIDGE
3808c2ecf20Sopenharmony_ci	bool "FootBridge"
3818c2ecf20Sopenharmony_ci	select CPU_SA110
3828c2ecf20Sopenharmony_ci	select FOOTBRIDGE
3838c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS
3848c2ecf20Sopenharmony_ci	select HAVE_IDE
3858c2ecf20Sopenharmony_ci	select NEED_MACH_IO_H if !MMU
3868c2ecf20Sopenharmony_ci	select NEED_MACH_MEMORY_H
3878c2ecf20Sopenharmony_ci	help
3888c2ecf20Sopenharmony_ci	  Support for systems based on the DC21285 companion chip
3898c2ecf20Sopenharmony_ci	  ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.
3908c2ecf20Sopenharmony_ci
3918c2ecf20Sopenharmony_ciconfig ARCH_IOP32X
3928c2ecf20Sopenharmony_ci	bool "IOP32x-based"
3938c2ecf20Sopenharmony_ci	depends on MMU
3948c2ecf20Sopenharmony_ci	select CPU_XSCALE
3958c2ecf20Sopenharmony_ci	select GPIO_IOP
3968c2ecf20Sopenharmony_ci	select GPIOLIB
3978c2ecf20Sopenharmony_ci	select NEED_RET_TO_USER
3988c2ecf20Sopenharmony_ci	select FORCE_PCI
3998c2ecf20Sopenharmony_ci	select PLAT_IOP
4008c2ecf20Sopenharmony_ci	help
4018c2ecf20Sopenharmony_ci	  Support for Intel's 80219 and IOP32X (XScale) family of
4028c2ecf20Sopenharmony_ci	  processors.
4038c2ecf20Sopenharmony_ci
4048c2ecf20Sopenharmony_ciconfig ARCH_IXP4XX
4058c2ecf20Sopenharmony_ci	bool "IXP4xx-based"
4068c2ecf20Sopenharmony_ci	depends on MMU
4078c2ecf20Sopenharmony_ci	select ARCH_HAS_DMA_SET_COHERENT_MASK
4088c2ecf20Sopenharmony_ci	select ARCH_SUPPORTS_BIG_ENDIAN
4098c2ecf20Sopenharmony_ci	select CPU_XSCALE
4108c2ecf20Sopenharmony_ci	select DMABOUNCE if PCI
4118c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS
4128c2ecf20Sopenharmony_ci	select GENERIC_IRQ_MULTI_HANDLER
4138c2ecf20Sopenharmony_ci	select GPIO_IXP4XX
4148c2ecf20Sopenharmony_ci	select GPIOLIB
4158c2ecf20Sopenharmony_ci	select HAVE_PCI
4168c2ecf20Sopenharmony_ci	select IXP4XX_IRQ
4178c2ecf20Sopenharmony_ci	select IXP4XX_TIMER
4188c2ecf20Sopenharmony_ci	select NEED_MACH_IO_H
4198c2ecf20Sopenharmony_ci	select USB_EHCI_BIG_ENDIAN_DESC
4208c2ecf20Sopenharmony_ci	select USB_EHCI_BIG_ENDIAN_MMIO
4218c2ecf20Sopenharmony_ci	help
4228c2ecf20Sopenharmony_ci	  Support for Intel's IXP4XX (XScale) family of processors.
4238c2ecf20Sopenharmony_ci
4248c2ecf20Sopenharmony_ciconfig ARCH_DOVE
4258c2ecf20Sopenharmony_ci	bool "Marvell Dove"
4268c2ecf20Sopenharmony_ci	select CPU_PJ4
4278c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS
4288c2ecf20Sopenharmony_ci	select GENERIC_IRQ_MULTI_HANDLER
4298c2ecf20Sopenharmony_ci	select GPIOLIB
4308c2ecf20Sopenharmony_ci	select HAVE_PCI
4318c2ecf20Sopenharmony_ci	select MVEBU_MBUS
4328c2ecf20Sopenharmony_ci	select PINCTRL
4338c2ecf20Sopenharmony_ci	select PINCTRL_DOVE
4348c2ecf20Sopenharmony_ci	select PLAT_ORION_LEGACY
4358c2ecf20Sopenharmony_ci	select SPARSE_IRQ
4368c2ecf20Sopenharmony_ci	select PM_GENERIC_DOMAINS if PM
4378c2ecf20Sopenharmony_ci	help
4388c2ecf20Sopenharmony_ci	  Support for the Marvell Dove SoC 88AP510
4398c2ecf20Sopenharmony_ci
4408c2ecf20Sopenharmony_ciconfig ARCH_PXA
4418c2ecf20Sopenharmony_ci	bool "PXA2xx/PXA3xx-based"
4428c2ecf20Sopenharmony_ci	depends on MMU
4438c2ecf20Sopenharmony_ci	select ARCH_MTD_XIP
4448c2ecf20Sopenharmony_ci	select ARM_CPU_SUSPEND if PM
4458c2ecf20Sopenharmony_ci	select AUTO_ZRELADDR
4468c2ecf20Sopenharmony_ci	select COMMON_CLK
4478c2ecf20Sopenharmony_ci	select CLKSRC_PXA
4488c2ecf20Sopenharmony_ci	select CLKSRC_MMIO
4498c2ecf20Sopenharmony_ci	select TIMER_OF
4508c2ecf20Sopenharmony_ci	select CPU_XSCALE if !CPU_XSC3
4518c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS
4528c2ecf20Sopenharmony_ci	select GENERIC_IRQ_MULTI_HANDLER
4538c2ecf20Sopenharmony_ci	select GPIO_PXA
4548c2ecf20Sopenharmony_ci	select GPIOLIB
4558c2ecf20Sopenharmony_ci	select HAVE_IDE
4568c2ecf20Sopenharmony_ci	select IRQ_DOMAIN
4578c2ecf20Sopenharmony_ci	select PLAT_PXA
4588c2ecf20Sopenharmony_ci	select SPARSE_IRQ
4598c2ecf20Sopenharmony_ci	help
4608c2ecf20Sopenharmony_ci	  Support for Intel/Marvell's PXA2xx/PXA3xx processor line.
4618c2ecf20Sopenharmony_ci
4628c2ecf20Sopenharmony_ciconfig ARCH_RPC
4638c2ecf20Sopenharmony_ci	bool "RiscPC"
4648c2ecf20Sopenharmony_ci	depends on MMU
4658c2ecf20Sopenharmony_ci	select ARCH_ACORN
4668c2ecf20Sopenharmony_ci	select ARCH_MAY_HAVE_PC_FDC
4678c2ecf20Sopenharmony_ci	select ARCH_SPARSEMEM_ENABLE
4688c2ecf20Sopenharmony_ci	select ARM_HAS_SG_CHAIN
4698c2ecf20Sopenharmony_ci	select CPU_SA110
4708c2ecf20Sopenharmony_ci	select FIQ
4718c2ecf20Sopenharmony_ci	select HAVE_IDE
4728c2ecf20Sopenharmony_ci	select HAVE_PATA_PLATFORM
4738c2ecf20Sopenharmony_ci	select ISA_DMA_API
4748c2ecf20Sopenharmony_ci	select NEED_MACH_IO_H
4758c2ecf20Sopenharmony_ci	select NEED_MACH_MEMORY_H
4768c2ecf20Sopenharmony_ci	select NO_IOPORT_MAP
4778c2ecf20Sopenharmony_ci	help
4788c2ecf20Sopenharmony_ci	  On the Acorn Risc-PC, Linux can support the internal IDE disk and
4798c2ecf20Sopenharmony_ci	  CD-ROM interface, serial and parallel port, and the floppy drive.
4808c2ecf20Sopenharmony_ci
4818c2ecf20Sopenharmony_ciconfig ARCH_SA1100
4828c2ecf20Sopenharmony_ci	bool "SA1100-based"
4838c2ecf20Sopenharmony_ci	select ARCH_MTD_XIP
4848c2ecf20Sopenharmony_ci	select ARCH_SPARSEMEM_ENABLE
4858c2ecf20Sopenharmony_ci	select CLKSRC_MMIO
4868c2ecf20Sopenharmony_ci	select CLKSRC_PXA
4878c2ecf20Sopenharmony_ci	select TIMER_OF if OF
4888c2ecf20Sopenharmony_ci	select COMMON_CLK
4898c2ecf20Sopenharmony_ci	select CPU_FREQ
4908c2ecf20Sopenharmony_ci	select CPU_SA1100
4918c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS
4928c2ecf20Sopenharmony_ci	select GENERIC_IRQ_MULTI_HANDLER
4938c2ecf20Sopenharmony_ci	select GPIOLIB
4948c2ecf20Sopenharmony_ci	select HAVE_IDE
4958c2ecf20Sopenharmony_ci	select IRQ_DOMAIN
4968c2ecf20Sopenharmony_ci	select ISA
4978c2ecf20Sopenharmony_ci	select NEED_MACH_MEMORY_H
4988c2ecf20Sopenharmony_ci	select SPARSE_IRQ
4998c2ecf20Sopenharmony_ci	help
5008c2ecf20Sopenharmony_ci	  Support for StrongARM 11x0 based boards.
5018c2ecf20Sopenharmony_ci
5028c2ecf20Sopenharmony_ciconfig ARCH_S3C24XX
5038c2ecf20Sopenharmony_ci	bool "Samsung S3C24XX SoCs"
5048c2ecf20Sopenharmony_ci	select ATAGS
5058c2ecf20Sopenharmony_ci	select CLKSRC_SAMSUNG_PWM
5068c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS
5078c2ecf20Sopenharmony_ci	select GPIO_SAMSUNG
5088c2ecf20Sopenharmony_ci	select GPIOLIB
5098c2ecf20Sopenharmony_ci	select GENERIC_IRQ_MULTI_HANDLER
5108c2ecf20Sopenharmony_ci	select HAVE_S3C2410_I2C if I2C
5118c2ecf20Sopenharmony_ci	select HAVE_S3C_RTC if RTC_CLASS
5128c2ecf20Sopenharmony_ci	select NEED_MACH_IO_H
5138c2ecf20Sopenharmony_ci	select S3C2410_WATCHDOG
5148c2ecf20Sopenharmony_ci	select SAMSUNG_ATAGS
5158c2ecf20Sopenharmony_ci	select USE_OF
5168c2ecf20Sopenharmony_ci	select WATCHDOG
5178c2ecf20Sopenharmony_ci	help
5188c2ecf20Sopenharmony_ci	  Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443
5198c2ecf20Sopenharmony_ci	  and S3C2450 SoCs based systems, such as the Simtec Electronics BAST
5208c2ecf20Sopenharmony_ci	  (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or the
5218c2ecf20Sopenharmony_ci	  Samsung SMDK2410 development board (and derivatives).
5228c2ecf20Sopenharmony_ci
5238c2ecf20Sopenharmony_ciconfig ARCH_OMAP1
5248c2ecf20Sopenharmony_ci	bool "TI OMAP1"
5258c2ecf20Sopenharmony_ci	depends on MMU
5268c2ecf20Sopenharmony_ci	select ARCH_OMAP
5278c2ecf20Sopenharmony_ci	select CLKDEV_LOOKUP
5288c2ecf20Sopenharmony_ci	select CLKSRC_MMIO
5298c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS
5308c2ecf20Sopenharmony_ci	select GENERIC_IRQ_CHIP
5318c2ecf20Sopenharmony_ci	select GENERIC_IRQ_MULTI_HANDLER
5328c2ecf20Sopenharmony_ci	select GPIOLIB
5338c2ecf20Sopenharmony_ci	select HAVE_IDE
5348c2ecf20Sopenharmony_ci	select HAVE_LEGACY_CLK
5358c2ecf20Sopenharmony_ci	select IRQ_DOMAIN
5368c2ecf20Sopenharmony_ci	select NEED_MACH_IO_H if PCCARD
5378c2ecf20Sopenharmony_ci	select NEED_MACH_MEMORY_H
5388c2ecf20Sopenharmony_ci	select SPARSE_IRQ
5398c2ecf20Sopenharmony_ci	help
5408c2ecf20Sopenharmony_ci	  Support for older TI OMAP1 (omap7xx, omap15xx or omap16xx)
5418c2ecf20Sopenharmony_ci
5428c2ecf20Sopenharmony_ciendchoice
5438c2ecf20Sopenharmony_ci
5448c2ecf20Sopenharmony_cimenu "Multiple platform selection"
5458c2ecf20Sopenharmony_ci	depends on ARCH_MULTIPLATFORM
5468c2ecf20Sopenharmony_ci
5478c2ecf20Sopenharmony_cicomment "CPU Core family selection"
5488c2ecf20Sopenharmony_ci
5498c2ecf20Sopenharmony_ciconfig ARCH_MULTI_V4
5508c2ecf20Sopenharmony_ci	bool "ARMv4 based platforms (FA526)"
5518c2ecf20Sopenharmony_ci	depends on !ARCH_MULTI_V6_V7
5528c2ecf20Sopenharmony_ci	select ARCH_MULTI_V4_V5
5538c2ecf20Sopenharmony_ci	select CPU_FA526
5548c2ecf20Sopenharmony_ci
5558c2ecf20Sopenharmony_ciconfig ARCH_MULTI_V4T
5568c2ecf20Sopenharmony_ci	bool "ARMv4T based platforms (ARM720T, ARM920T, ...)"
5578c2ecf20Sopenharmony_ci	depends on !ARCH_MULTI_V6_V7
5588c2ecf20Sopenharmony_ci	select ARCH_MULTI_V4_V5
5598c2ecf20Sopenharmony_ci	select CPU_ARM920T if !(CPU_ARM7TDMI || CPU_ARM720T || \
5608c2ecf20Sopenharmony_ci		CPU_ARM740T || CPU_ARM9TDMI || CPU_ARM922T || \
5618c2ecf20Sopenharmony_ci		CPU_ARM925T || CPU_ARM940T)
5628c2ecf20Sopenharmony_ci
5638c2ecf20Sopenharmony_ciconfig ARCH_MULTI_V5
5648c2ecf20Sopenharmony_ci	bool "ARMv5 based platforms (ARM926T, XSCALE, PJ1, ...)"
5658c2ecf20Sopenharmony_ci	depends on !ARCH_MULTI_V6_V7
5668c2ecf20Sopenharmony_ci	select ARCH_MULTI_V4_V5
5678c2ecf20Sopenharmony_ci	select CPU_ARM926T if !(CPU_ARM946E || CPU_ARM1020 || \
5688c2ecf20Sopenharmony_ci		CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || \
5698c2ecf20Sopenharmony_ci		CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_FEROCEON)
5708c2ecf20Sopenharmony_ci
5718c2ecf20Sopenharmony_ciconfig ARCH_MULTI_V4_V5
5728c2ecf20Sopenharmony_ci	bool
5738c2ecf20Sopenharmony_ci
5748c2ecf20Sopenharmony_ciconfig ARCH_MULTI_V6
5758c2ecf20Sopenharmony_ci	bool "ARMv6 based platforms (ARM11)"
5768c2ecf20Sopenharmony_ci	select ARCH_MULTI_V6_V7
5778c2ecf20Sopenharmony_ci	select CPU_V6K
5788c2ecf20Sopenharmony_ci
5798c2ecf20Sopenharmony_ciconfig ARCH_MULTI_V7
5808c2ecf20Sopenharmony_ci	bool "ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)"
5818c2ecf20Sopenharmony_ci	default y
5828c2ecf20Sopenharmony_ci	select ARCH_MULTI_V6_V7
5838c2ecf20Sopenharmony_ci	select CPU_V7
5848c2ecf20Sopenharmony_ci	select HAVE_SMP
5858c2ecf20Sopenharmony_ci
5868c2ecf20Sopenharmony_ciconfig ARCH_MULTI_V6_V7
5878c2ecf20Sopenharmony_ci	bool
5888c2ecf20Sopenharmony_ci	select MIGHT_HAVE_CACHE_L2X0
5898c2ecf20Sopenharmony_ci
5908c2ecf20Sopenharmony_ciconfig ARCH_MULTI_CPU_AUTO
5918c2ecf20Sopenharmony_ci	def_bool !(ARCH_MULTI_V4 || ARCH_MULTI_V4T || ARCH_MULTI_V6_V7)
5928c2ecf20Sopenharmony_ci	select ARCH_MULTI_V5
5938c2ecf20Sopenharmony_ci
5948c2ecf20Sopenharmony_ciendmenu
5958c2ecf20Sopenharmony_ci
5968c2ecf20Sopenharmony_ciconfig ARCH_VIRT
5978c2ecf20Sopenharmony_ci	bool "Dummy Virtual Machine"
5988c2ecf20Sopenharmony_ci	depends on ARCH_MULTI_V7
5998c2ecf20Sopenharmony_ci	select ARM_AMBA
6008c2ecf20Sopenharmony_ci	select ARM_GIC
6018c2ecf20Sopenharmony_ci	select ARM_GIC_V2M if PCI
6028c2ecf20Sopenharmony_ci	select ARM_GIC_V3
6038c2ecf20Sopenharmony_ci	select ARM_GIC_V3_ITS if PCI
6048c2ecf20Sopenharmony_ci	select ARM_PSCI
6058c2ecf20Sopenharmony_ci	select HAVE_ARM_ARCH_TIMER
6068c2ecf20Sopenharmony_ci	select ARCH_SUPPORTS_BIG_ENDIAN
6078c2ecf20Sopenharmony_ci
6088c2ecf20Sopenharmony_ci#
6098c2ecf20Sopenharmony_ci# This is sorted alphabetically by mach-* pathname.  However, plat-*
6108c2ecf20Sopenharmony_ci# Kconfigs may be included either alphabetically (according to the
6118c2ecf20Sopenharmony_ci# plat- suffix) or along side the corresponding mach-* source.
6128c2ecf20Sopenharmony_ci#
6138c2ecf20Sopenharmony_cisource "arch/arm/mach-actions/Kconfig"
6148c2ecf20Sopenharmony_ci
6158c2ecf20Sopenharmony_cisource "arch/arm/mach-alpine/Kconfig"
6168c2ecf20Sopenharmony_ci
6178c2ecf20Sopenharmony_cisource "arch/arm/mach-artpec/Kconfig"
6188c2ecf20Sopenharmony_ci
6198c2ecf20Sopenharmony_cisource "arch/arm/mach-asm9260/Kconfig"
6208c2ecf20Sopenharmony_ci
6218c2ecf20Sopenharmony_cisource "arch/arm/mach-aspeed/Kconfig"
6228c2ecf20Sopenharmony_ci
6238c2ecf20Sopenharmony_cisource "arch/arm/mach-at91/Kconfig"
6248c2ecf20Sopenharmony_ci
6258c2ecf20Sopenharmony_cisource "arch/arm/mach-axxia/Kconfig"
6268c2ecf20Sopenharmony_ci
6278c2ecf20Sopenharmony_cisource "arch/arm/mach-bcm/Kconfig"
6288c2ecf20Sopenharmony_ci
6298c2ecf20Sopenharmony_cisource "arch/arm/mach-berlin/Kconfig"
6308c2ecf20Sopenharmony_ci
6318c2ecf20Sopenharmony_cisource "arch/arm/mach-clps711x/Kconfig"
6328c2ecf20Sopenharmony_ci
6338c2ecf20Sopenharmony_cisource "arch/arm/mach-cns3xxx/Kconfig"
6348c2ecf20Sopenharmony_ci
6358c2ecf20Sopenharmony_cisource "arch/arm/mach-davinci/Kconfig"
6368c2ecf20Sopenharmony_ci
6378c2ecf20Sopenharmony_cisource "arch/arm/mach-digicolor/Kconfig"
6388c2ecf20Sopenharmony_ci
6398c2ecf20Sopenharmony_cisource "arch/arm/mach-dove/Kconfig"
6408c2ecf20Sopenharmony_ci
6418c2ecf20Sopenharmony_cisource "arch/arm/mach-ep93xx/Kconfig"
6428c2ecf20Sopenharmony_ci
6438c2ecf20Sopenharmony_cisource "arch/arm/mach-exynos/Kconfig"
6448c2ecf20Sopenharmony_ci
6458c2ecf20Sopenharmony_cisource "arch/arm/mach-footbridge/Kconfig"
6468c2ecf20Sopenharmony_ci
6478c2ecf20Sopenharmony_cisource "arch/arm/mach-gemini/Kconfig"
6488c2ecf20Sopenharmony_ci
6498c2ecf20Sopenharmony_cisource "arch/arm/mach-highbank/Kconfig"
6508c2ecf20Sopenharmony_ci
6518c2ecf20Sopenharmony_cisource "arch/arm/mach-hisi/Kconfig"
6528c2ecf20Sopenharmony_ci
6538c2ecf20Sopenharmony_cisource "arch/arm/mach-imx/Kconfig"
6548c2ecf20Sopenharmony_ci
6558c2ecf20Sopenharmony_cisource "arch/arm/mach-integrator/Kconfig"
6568c2ecf20Sopenharmony_ci
6578c2ecf20Sopenharmony_cisource "arch/arm/mach-iop32x/Kconfig"
6588c2ecf20Sopenharmony_ci
6598c2ecf20Sopenharmony_cisource "arch/arm/mach-ixp4xx/Kconfig"
6608c2ecf20Sopenharmony_ci
6618c2ecf20Sopenharmony_cisource "arch/arm/mach-keystone/Kconfig"
6628c2ecf20Sopenharmony_ci
6638c2ecf20Sopenharmony_cisource "arch/arm/mach-lpc32xx/Kconfig"
6648c2ecf20Sopenharmony_ci
6658c2ecf20Sopenharmony_cisource "arch/arm/mach-mediatek/Kconfig"
6668c2ecf20Sopenharmony_ci
6678c2ecf20Sopenharmony_cisource "arch/arm/mach-meson/Kconfig"
6688c2ecf20Sopenharmony_ci
6698c2ecf20Sopenharmony_cisource "arch/arm/mach-milbeaut/Kconfig"
6708c2ecf20Sopenharmony_ci
6718c2ecf20Sopenharmony_cisource "arch/arm/mach-mmp/Kconfig"
6728c2ecf20Sopenharmony_ci
6738c2ecf20Sopenharmony_cisource "arch/arm/mach-moxart/Kconfig"
6748c2ecf20Sopenharmony_ci
6758c2ecf20Sopenharmony_cisource "arch/arm/mach-mstar/Kconfig"
6768c2ecf20Sopenharmony_ci
6778c2ecf20Sopenharmony_cisource "arch/arm/mach-mv78xx0/Kconfig"
6788c2ecf20Sopenharmony_ci
6798c2ecf20Sopenharmony_cisource "arch/arm/mach-mvebu/Kconfig"
6808c2ecf20Sopenharmony_ci
6818c2ecf20Sopenharmony_cisource "arch/arm/mach-mxs/Kconfig"
6828c2ecf20Sopenharmony_ci
6838c2ecf20Sopenharmony_cisource "arch/arm/mach-nomadik/Kconfig"
6848c2ecf20Sopenharmony_ci
6858c2ecf20Sopenharmony_cisource "arch/arm/mach-npcm/Kconfig"
6868c2ecf20Sopenharmony_ci
6878c2ecf20Sopenharmony_cisource "arch/arm/mach-nspire/Kconfig"
6888c2ecf20Sopenharmony_ci
6898c2ecf20Sopenharmony_cisource "arch/arm/plat-omap/Kconfig"
6908c2ecf20Sopenharmony_ci
6918c2ecf20Sopenharmony_cisource "arch/arm/mach-omap1/Kconfig"
6928c2ecf20Sopenharmony_ci
6938c2ecf20Sopenharmony_cisource "arch/arm/mach-omap2/Kconfig"
6948c2ecf20Sopenharmony_ci
6958c2ecf20Sopenharmony_cisource "arch/arm/mach-orion5x/Kconfig"
6968c2ecf20Sopenharmony_ci
6978c2ecf20Sopenharmony_cisource "arch/arm/mach-oxnas/Kconfig"
6988c2ecf20Sopenharmony_ci
6998c2ecf20Sopenharmony_cisource "arch/arm/mach-picoxcell/Kconfig"
7008c2ecf20Sopenharmony_ci
7018c2ecf20Sopenharmony_cisource "arch/arm/mach-prima2/Kconfig"
7028c2ecf20Sopenharmony_ci
7038c2ecf20Sopenharmony_cisource "arch/arm/mach-pxa/Kconfig"
7048c2ecf20Sopenharmony_cisource "arch/arm/plat-pxa/Kconfig"
7058c2ecf20Sopenharmony_ci
7068c2ecf20Sopenharmony_cisource "arch/arm/mach-qcom/Kconfig"
7078c2ecf20Sopenharmony_ci
7088c2ecf20Sopenharmony_cisource "arch/arm/mach-rda/Kconfig"
7098c2ecf20Sopenharmony_ci
7108c2ecf20Sopenharmony_cisource "arch/arm/mach-realtek/Kconfig"
7118c2ecf20Sopenharmony_ci
7128c2ecf20Sopenharmony_cisource "arch/arm/mach-realview/Kconfig"
7138c2ecf20Sopenharmony_ci
7148c2ecf20Sopenharmony_cisource "arch/arm/mach-rockchip/Kconfig"
7158c2ecf20Sopenharmony_ci
7168c2ecf20Sopenharmony_cisource "arch/arm/mach-s3c/Kconfig"
7178c2ecf20Sopenharmony_ci
7188c2ecf20Sopenharmony_cisource "arch/arm/mach-s5pv210/Kconfig"
7198c2ecf20Sopenharmony_ci
7208c2ecf20Sopenharmony_cisource "arch/arm/mach-sa1100/Kconfig"
7218c2ecf20Sopenharmony_ci
7228c2ecf20Sopenharmony_cisource "arch/arm/mach-shmobile/Kconfig"
7238c2ecf20Sopenharmony_ci
7248c2ecf20Sopenharmony_cisource "arch/arm/mach-socfpga/Kconfig"
7258c2ecf20Sopenharmony_ci
7268c2ecf20Sopenharmony_cisource "arch/arm/mach-spear/Kconfig"
7278c2ecf20Sopenharmony_ci
7288c2ecf20Sopenharmony_cisource "arch/arm/mach-sti/Kconfig"
7298c2ecf20Sopenharmony_ci
7308c2ecf20Sopenharmony_cisource "arch/arm/mach-stm32/Kconfig"
7318c2ecf20Sopenharmony_ci
7328c2ecf20Sopenharmony_cisource "arch/arm/mach-sunxi/Kconfig"
7338c2ecf20Sopenharmony_ci
7348c2ecf20Sopenharmony_cisource "arch/arm/mach-tango/Kconfig"
7358c2ecf20Sopenharmony_ci
7368c2ecf20Sopenharmony_cisource "arch/arm/mach-tegra/Kconfig"
7378c2ecf20Sopenharmony_ci
7388c2ecf20Sopenharmony_cisource "arch/arm/mach-u300/Kconfig"
7398c2ecf20Sopenharmony_ci
7408c2ecf20Sopenharmony_cisource "arch/arm/mach-uniphier/Kconfig"
7418c2ecf20Sopenharmony_ci
7428c2ecf20Sopenharmony_cisource "arch/arm/mach-ux500/Kconfig"
7438c2ecf20Sopenharmony_ci
7448c2ecf20Sopenharmony_cisource "arch/arm/mach-versatile/Kconfig"
7458c2ecf20Sopenharmony_ci
7468c2ecf20Sopenharmony_cisource "arch/arm/mach-vexpress/Kconfig"
7478c2ecf20Sopenharmony_ci
7488c2ecf20Sopenharmony_cisource "arch/arm/mach-vt8500/Kconfig"
7498c2ecf20Sopenharmony_ci
7508c2ecf20Sopenharmony_cisource "arch/arm/mach-zx/Kconfig"
7518c2ecf20Sopenharmony_ci
7528c2ecf20Sopenharmony_cisource "arch/arm/mach-zynq/Kconfig"
7538c2ecf20Sopenharmony_ci
7548c2ecf20Sopenharmony_ci# ARMv7-M architecture
7558c2ecf20Sopenharmony_ciconfig ARCH_EFM32
7568c2ecf20Sopenharmony_ci	bool "Energy Micro efm32"
7578c2ecf20Sopenharmony_ci	depends on ARM_SINGLE_ARMV7M
7588c2ecf20Sopenharmony_ci	select GPIOLIB
7598c2ecf20Sopenharmony_ci	help
7608c2ecf20Sopenharmony_ci	  Support for Energy Micro's (now Silicon Labs) efm32 Giant Gecko
7618c2ecf20Sopenharmony_ci	  processors.
7628c2ecf20Sopenharmony_ci
7638c2ecf20Sopenharmony_ciconfig ARCH_LPC18XX
7648c2ecf20Sopenharmony_ci	bool "NXP LPC18xx/LPC43xx"
7658c2ecf20Sopenharmony_ci	depends on ARM_SINGLE_ARMV7M
7668c2ecf20Sopenharmony_ci	select ARCH_HAS_RESET_CONTROLLER
7678c2ecf20Sopenharmony_ci	select ARM_AMBA
7688c2ecf20Sopenharmony_ci	select CLKSRC_LPC32XX
7698c2ecf20Sopenharmony_ci	select PINCTRL
7708c2ecf20Sopenharmony_ci	help
7718c2ecf20Sopenharmony_ci	  Support for NXP's LPC18xx Cortex-M3 and LPC43xx Cortex-M4
7728c2ecf20Sopenharmony_ci	  high performance microcontrollers.
7738c2ecf20Sopenharmony_ci
7748c2ecf20Sopenharmony_ciconfig ARCH_MPS2
7758c2ecf20Sopenharmony_ci	bool "ARM MPS2 platform"
7768c2ecf20Sopenharmony_ci	depends on ARM_SINGLE_ARMV7M
7778c2ecf20Sopenharmony_ci	select ARM_AMBA
7788c2ecf20Sopenharmony_ci	select CLKSRC_MPS2
7798c2ecf20Sopenharmony_ci	help
7808c2ecf20Sopenharmony_ci	  Support for Cortex-M Prototyping System (or V2M-MPS2) which comes
7818c2ecf20Sopenharmony_ci	  with a range of available cores like Cortex-M3/M4/M7.
7828c2ecf20Sopenharmony_ci
7838c2ecf20Sopenharmony_ci	  Please, note that depends which Application Note is used memory map
7848c2ecf20Sopenharmony_ci	  for the platform may vary, so adjustment of RAM base might be needed.
7858c2ecf20Sopenharmony_ci
7868c2ecf20Sopenharmony_ci# Definitions to make life easier
7878c2ecf20Sopenharmony_ciconfig ARCH_ACORN
7888c2ecf20Sopenharmony_ci	bool
7898c2ecf20Sopenharmony_ci
7908c2ecf20Sopenharmony_ciconfig PLAT_IOP
7918c2ecf20Sopenharmony_ci	bool
7928c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS
7938c2ecf20Sopenharmony_ci
7948c2ecf20Sopenharmony_ciconfig PLAT_ORION
7958c2ecf20Sopenharmony_ci	bool
7968c2ecf20Sopenharmony_ci	select CLKSRC_MMIO
7978c2ecf20Sopenharmony_ci	select COMMON_CLK
7988c2ecf20Sopenharmony_ci	select GENERIC_IRQ_CHIP
7998c2ecf20Sopenharmony_ci	select IRQ_DOMAIN
8008c2ecf20Sopenharmony_ci
8018c2ecf20Sopenharmony_ciconfig PLAT_ORION_LEGACY
8028c2ecf20Sopenharmony_ci	bool
8038c2ecf20Sopenharmony_ci	select PLAT_ORION
8048c2ecf20Sopenharmony_ci
8058c2ecf20Sopenharmony_ciconfig PLAT_PXA
8068c2ecf20Sopenharmony_ci	bool
8078c2ecf20Sopenharmony_ci
8088c2ecf20Sopenharmony_ciconfig PLAT_VERSATILE
8098c2ecf20Sopenharmony_ci	bool
8108c2ecf20Sopenharmony_ci
8118c2ecf20Sopenharmony_cisource "arch/arm/mm/Kconfig"
8128c2ecf20Sopenharmony_ci
8138c2ecf20Sopenharmony_ciconfig IWMMXT
8148c2ecf20Sopenharmony_ci	bool "Enable iWMMXt support"
8158c2ecf20Sopenharmony_ci	depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4 || CPU_PJ4B
8168c2ecf20Sopenharmony_ci	default y if PXA27x || PXA3xx || ARCH_MMP || CPU_PJ4 || CPU_PJ4B
8178c2ecf20Sopenharmony_ci	help
8188c2ecf20Sopenharmony_ci	  Enable support for iWMMXt context switching at run time if
8198c2ecf20Sopenharmony_ci	  running on a CPU that supports it.
8208c2ecf20Sopenharmony_ci
8218c2ecf20Sopenharmony_ciif !MMU
8228c2ecf20Sopenharmony_cisource "arch/arm/Kconfig-nommu"
8238c2ecf20Sopenharmony_ciendif
8248c2ecf20Sopenharmony_ci
8258c2ecf20Sopenharmony_ciconfig PJ4B_ERRATA_4742
8268c2ecf20Sopenharmony_ci	bool "PJ4B Errata 4742: IDLE Wake Up Commands can Cause the CPU Core to Cease Operation"
8278c2ecf20Sopenharmony_ci	depends on CPU_PJ4B && MACH_ARMADA_370
8288c2ecf20Sopenharmony_ci	default y
8298c2ecf20Sopenharmony_ci	help
8308c2ecf20Sopenharmony_ci	  When coming out of either a Wait for Interrupt (WFI) or a Wait for
8318c2ecf20Sopenharmony_ci	  Event (WFE) IDLE states, a specific timing sensitivity exists between
8328c2ecf20Sopenharmony_ci	  the retiring WFI/WFE instructions and the newly issued subsequent
8338c2ecf20Sopenharmony_ci	  instructions.  This sensitivity can result in a CPU hang scenario.
8348c2ecf20Sopenharmony_ci	  Workaround:
8358c2ecf20Sopenharmony_ci	  The software must insert either a Data Synchronization Barrier (DSB)
8368c2ecf20Sopenharmony_ci	  or Data Memory Barrier (DMB) command immediately after the WFI/WFE
8378c2ecf20Sopenharmony_ci	  instruction
8388c2ecf20Sopenharmony_ci
8398c2ecf20Sopenharmony_ciconfig ARM_ERRATA_326103
8408c2ecf20Sopenharmony_ci	bool "ARM errata: FSR write bit incorrect on a SWP to read-only memory"
8418c2ecf20Sopenharmony_ci	depends on CPU_V6
8428c2ecf20Sopenharmony_ci	help
8438c2ecf20Sopenharmony_ci	  Executing a SWP instruction to read-only memory does not set bit 11
8448c2ecf20Sopenharmony_ci	  of the FSR on the ARM 1136 prior to r1p0. This causes the kernel to
8458c2ecf20Sopenharmony_ci	  treat the access as a read, preventing a COW from occurring and
8468c2ecf20Sopenharmony_ci	  causing the faulting task to livelock.
8478c2ecf20Sopenharmony_ci
8488c2ecf20Sopenharmony_ciconfig ARM_ERRATA_411920
8498c2ecf20Sopenharmony_ci	bool "ARM errata: Invalidation of the Instruction Cache operation can fail"
8508c2ecf20Sopenharmony_ci	depends on CPU_V6 || CPU_V6K
8518c2ecf20Sopenharmony_ci	help
8528c2ecf20Sopenharmony_ci	  Invalidation of the Instruction Cache operation can
8538c2ecf20Sopenharmony_ci	  fail. This erratum is present in 1136 (before r1p4), 1156 and 1176.
8548c2ecf20Sopenharmony_ci	  It does not affect the MPCore. This option enables the ARM Ltd.
8558c2ecf20Sopenharmony_ci	  recommended workaround.
8568c2ecf20Sopenharmony_ci
8578c2ecf20Sopenharmony_ciconfig ARM_ERRATA_430973
8588c2ecf20Sopenharmony_ci	bool "ARM errata: Stale prediction on replaced interworking branch"
8598c2ecf20Sopenharmony_ci	depends on CPU_V7
8608c2ecf20Sopenharmony_ci	help
8618c2ecf20Sopenharmony_ci	  This option enables the workaround for the 430973 Cortex-A8
8628c2ecf20Sopenharmony_ci	  r1p* erratum. If a code sequence containing an ARM/Thumb
8638c2ecf20Sopenharmony_ci	  interworking branch is replaced with another code sequence at the
8648c2ecf20Sopenharmony_ci	  same virtual address, whether due to self-modifying code or virtual
8658c2ecf20Sopenharmony_ci	  to physical address re-mapping, Cortex-A8 does not recover from the
8668c2ecf20Sopenharmony_ci	  stale interworking branch prediction. This results in Cortex-A8
8678c2ecf20Sopenharmony_ci	  executing the new code sequence in the incorrect ARM or Thumb state.
8688c2ecf20Sopenharmony_ci	  The workaround enables the BTB/BTAC operations by setting ACTLR.IBE
8698c2ecf20Sopenharmony_ci	  and also flushes the branch target cache at every context switch.
8708c2ecf20Sopenharmony_ci	  Note that setting specific bits in the ACTLR register may not be
8718c2ecf20Sopenharmony_ci	  available in non-secure mode.
8728c2ecf20Sopenharmony_ci
8738c2ecf20Sopenharmony_ciconfig ARM_ERRATA_458693
8748c2ecf20Sopenharmony_ci	bool "ARM errata: Processor deadlock when a false hazard is created"
8758c2ecf20Sopenharmony_ci	depends on CPU_V7
8768c2ecf20Sopenharmony_ci	depends on !ARCH_MULTIPLATFORM
8778c2ecf20Sopenharmony_ci	help
8788c2ecf20Sopenharmony_ci	  This option enables the workaround for the 458693 Cortex-A8 (r2p0)
8798c2ecf20Sopenharmony_ci	  erratum. For very specific sequences of memory operations, it is
8808c2ecf20Sopenharmony_ci	  possible for a hazard condition intended for a cache line to instead
8818c2ecf20Sopenharmony_ci	  be incorrectly associated with a different cache line. This false
8828c2ecf20Sopenharmony_ci	  hazard might then cause a processor deadlock. The workaround enables
8838c2ecf20Sopenharmony_ci	  the L1 caching of the NEON accesses and disables the PLD instruction
8848c2ecf20Sopenharmony_ci	  in the ACTLR register. Note that setting specific bits in the ACTLR
8858c2ecf20Sopenharmony_ci	  register may not be available in non-secure mode.
8868c2ecf20Sopenharmony_ci
8878c2ecf20Sopenharmony_ciconfig ARM_ERRATA_460075
8888c2ecf20Sopenharmony_ci	bool "ARM errata: Data written to the L2 cache can be overwritten with stale data"
8898c2ecf20Sopenharmony_ci	depends on CPU_V7
8908c2ecf20Sopenharmony_ci	depends on !ARCH_MULTIPLATFORM
8918c2ecf20Sopenharmony_ci	help
8928c2ecf20Sopenharmony_ci	  This option enables the workaround for the 460075 Cortex-A8 (r2p0)
8938c2ecf20Sopenharmony_ci	  erratum. Any asynchronous access to the L2 cache may encounter a
8948c2ecf20Sopenharmony_ci	  situation in which recent store transactions to the L2 cache are lost
8958c2ecf20Sopenharmony_ci	  and overwritten with stale memory contents from external memory. The
8968c2ecf20Sopenharmony_ci	  workaround disables the write-allocate mode for the L2 cache via the
8978c2ecf20Sopenharmony_ci	  ACTLR register. Note that setting specific bits in the ACTLR register
8988c2ecf20Sopenharmony_ci	  may not be available in non-secure mode.
8998c2ecf20Sopenharmony_ci
9008c2ecf20Sopenharmony_ciconfig ARM_ERRATA_742230
9018c2ecf20Sopenharmony_ci	bool "ARM errata: DMB operation may be faulty"
9028c2ecf20Sopenharmony_ci	depends on CPU_V7 && SMP
9038c2ecf20Sopenharmony_ci	depends on !ARCH_MULTIPLATFORM
9048c2ecf20Sopenharmony_ci	help
9058c2ecf20Sopenharmony_ci	  This option enables the workaround for the 742230 Cortex-A9
9068c2ecf20Sopenharmony_ci	  (r1p0..r2p2) erratum. Under rare circumstances, a DMB instruction
9078c2ecf20Sopenharmony_ci	  between two write operations may not ensure the correct visibility
9088c2ecf20Sopenharmony_ci	  ordering of the two writes. This workaround sets a specific bit in
9098c2ecf20Sopenharmony_ci	  the diagnostic register of the Cortex-A9 which causes the DMB
9108c2ecf20Sopenharmony_ci	  instruction to behave as a DSB, ensuring the correct behaviour of
9118c2ecf20Sopenharmony_ci	  the two writes.
9128c2ecf20Sopenharmony_ci
9138c2ecf20Sopenharmony_ciconfig ARM_ERRATA_742231
9148c2ecf20Sopenharmony_ci	bool "ARM errata: Incorrect hazard handling in the SCU may lead to data corruption"
9158c2ecf20Sopenharmony_ci	depends on CPU_V7 && SMP
9168c2ecf20Sopenharmony_ci	depends on !ARCH_MULTIPLATFORM
9178c2ecf20Sopenharmony_ci	help
9188c2ecf20Sopenharmony_ci	  This option enables the workaround for the 742231 Cortex-A9
9198c2ecf20Sopenharmony_ci	  (r2p0..r2p2) erratum. Under certain conditions, specific to the
9208c2ecf20Sopenharmony_ci	  Cortex-A9 MPCore micro-architecture, two CPUs working in SMP mode,
9218c2ecf20Sopenharmony_ci	  accessing some data located in the same cache line, may get corrupted
9228c2ecf20Sopenharmony_ci	  data due to bad handling of the address hazard when the line gets
9238c2ecf20Sopenharmony_ci	  replaced from one of the CPUs at the same time as another CPU is
9248c2ecf20Sopenharmony_ci	  accessing it. This workaround sets specific bits in the diagnostic
9258c2ecf20Sopenharmony_ci	  register of the Cortex-A9 which reduces the linefill issuing
9268c2ecf20Sopenharmony_ci	  capabilities of the processor.
9278c2ecf20Sopenharmony_ci
9288c2ecf20Sopenharmony_ciconfig ARM_ERRATA_643719
9298c2ecf20Sopenharmony_ci	bool "ARM errata: LoUIS bit field in CLIDR register is incorrect"
9308c2ecf20Sopenharmony_ci	depends on CPU_V7 && SMP
9318c2ecf20Sopenharmony_ci	default y
9328c2ecf20Sopenharmony_ci	help
9338c2ecf20Sopenharmony_ci	  This option enables the workaround for the 643719 Cortex-A9 (prior to
9348c2ecf20Sopenharmony_ci	  r1p0) erratum. On affected cores the LoUIS bit field of the CLIDR
9358c2ecf20Sopenharmony_ci	  register returns zero when it should return one. The workaround
9368c2ecf20Sopenharmony_ci	  corrects this value, ensuring cache maintenance operations which use
9378c2ecf20Sopenharmony_ci	  it behave as intended and avoiding data corruption.
9388c2ecf20Sopenharmony_ci
9398c2ecf20Sopenharmony_ciconfig ARM_ERRATA_720789
9408c2ecf20Sopenharmony_ci	bool "ARM errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID"
9418c2ecf20Sopenharmony_ci	depends on CPU_V7
9428c2ecf20Sopenharmony_ci	help
9438c2ecf20Sopenharmony_ci	  This option enables the workaround for the 720789 Cortex-A9 (prior to
9448c2ecf20Sopenharmony_ci	  r2p0) erratum. A faulty ASID can be sent to the other CPUs for the
9458c2ecf20Sopenharmony_ci	  broadcasted CP15 TLB maintenance operations TLBIASIDIS and TLBIMVAIS.
9468c2ecf20Sopenharmony_ci	  As a consequence of this erratum, some TLB entries which should be
9478c2ecf20Sopenharmony_ci	  invalidated are not, resulting in an incoherency in the system page
9488c2ecf20Sopenharmony_ci	  tables. The workaround changes the TLB flushing routines to invalidate
9498c2ecf20Sopenharmony_ci	  entries regardless of the ASID.
9508c2ecf20Sopenharmony_ci
9518c2ecf20Sopenharmony_ciconfig ARM_ERRATA_743622
9528c2ecf20Sopenharmony_ci	bool "ARM errata: Faulty hazard checking in the Store Buffer may lead to data corruption"
9538c2ecf20Sopenharmony_ci	depends on CPU_V7
9548c2ecf20Sopenharmony_ci	depends on !ARCH_MULTIPLATFORM
9558c2ecf20Sopenharmony_ci	help
9568c2ecf20Sopenharmony_ci	  This option enables the workaround for the 743622 Cortex-A9
9578c2ecf20Sopenharmony_ci	  (r2p*) erratum. Under very rare conditions, a faulty
9588c2ecf20Sopenharmony_ci	  optimisation in the Cortex-A9 Store Buffer may lead to data
9598c2ecf20Sopenharmony_ci	  corruption. This workaround sets a specific bit in the diagnostic
9608c2ecf20Sopenharmony_ci	  register of the Cortex-A9 which disables the Store Buffer
9618c2ecf20Sopenharmony_ci	  optimisation, preventing the defect from occurring. This has no
9628c2ecf20Sopenharmony_ci	  visible impact on the overall performance or power consumption of the
9638c2ecf20Sopenharmony_ci	  processor.
9648c2ecf20Sopenharmony_ci
9658c2ecf20Sopenharmony_ciconfig ARM_ERRATA_751472
9668c2ecf20Sopenharmony_ci	bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation"
9678c2ecf20Sopenharmony_ci	depends on CPU_V7
9688c2ecf20Sopenharmony_ci	depends on !ARCH_MULTIPLATFORM
9698c2ecf20Sopenharmony_ci	help
9708c2ecf20Sopenharmony_ci	  This option enables the workaround for the 751472 Cortex-A9 (prior
9718c2ecf20Sopenharmony_ci	  to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the
9728c2ecf20Sopenharmony_ci	  completion of a following broadcasted operation if the second
9738c2ecf20Sopenharmony_ci	  operation is received by a CPU before the ICIALLUIS has completed,
9748c2ecf20Sopenharmony_ci	  potentially leading to corrupted entries in the cache or TLB.
9758c2ecf20Sopenharmony_ci
9768c2ecf20Sopenharmony_ciconfig ARM_ERRATA_754322
9778c2ecf20Sopenharmony_ci	bool "ARM errata: possible faulty MMU translations following an ASID switch"
9788c2ecf20Sopenharmony_ci	depends on CPU_V7
9798c2ecf20Sopenharmony_ci	help
9808c2ecf20Sopenharmony_ci	  This option enables the workaround for the 754322 Cortex-A9 (r2p*,
9818c2ecf20Sopenharmony_ci	  r3p*) erratum. A speculative memory access may cause a page table walk
9828c2ecf20Sopenharmony_ci	  which starts prior to an ASID switch but completes afterwards. This
9838c2ecf20Sopenharmony_ci	  can populate the micro-TLB with a stale entry which may be hit with
9848c2ecf20Sopenharmony_ci	  the new ASID. This workaround places two dsb instructions in the mm
9858c2ecf20Sopenharmony_ci	  switching code so that no page table walks can cross the ASID switch.
9868c2ecf20Sopenharmony_ci
9878c2ecf20Sopenharmony_ciconfig ARM_ERRATA_754327
9888c2ecf20Sopenharmony_ci	bool "ARM errata: no automatic Store Buffer drain"
9898c2ecf20Sopenharmony_ci	depends on CPU_V7 && SMP
9908c2ecf20Sopenharmony_ci	help
9918c2ecf20Sopenharmony_ci	  This option enables the workaround for the 754327 Cortex-A9 (prior to
9928c2ecf20Sopenharmony_ci	  r2p0) erratum. The Store Buffer does not have any automatic draining
9938c2ecf20Sopenharmony_ci	  mechanism and therefore a livelock may occur if an external agent
9948c2ecf20Sopenharmony_ci	  continuously polls a memory location waiting to observe an update.
9958c2ecf20Sopenharmony_ci	  This workaround defines cpu_relax() as smp_mb(), preventing correctly
9968c2ecf20Sopenharmony_ci	  written polling loops from denying visibility of updates to memory.
9978c2ecf20Sopenharmony_ci
9988c2ecf20Sopenharmony_ciconfig ARM_ERRATA_364296
9998c2ecf20Sopenharmony_ci	bool "ARM errata: Possible cache data corruption with hit-under-miss enabled"
10008c2ecf20Sopenharmony_ci	depends on CPU_V6
10018c2ecf20Sopenharmony_ci	help
10028c2ecf20Sopenharmony_ci	  This options enables the workaround for the 364296 ARM1136
10038c2ecf20Sopenharmony_ci	  r0p2 erratum (possible cache data corruption with
10048c2ecf20Sopenharmony_ci	  hit-under-miss enabled). It sets the undocumented bit 31 in
10058c2ecf20Sopenharmony_ci	  the auxiliary control register and the FI bit in the control
10068c2ecf20Sopenharmony_ci	  register, thus disabling hit-under-miss without putting the
10078c2ecf20Sopenharmony_ci	  processor into full low interrupt latency mode. ARM11MPCore
10088c2ecf20Sopenharmony_ci	  is not affected.
10098c2ecf20Sopenharmony_ci
10108c2ecf20Sopenharmony_ciconfig ARM_ERRATA_764369
10118c2ecf20Sopenharmony_ci	bool "ARM errata: Data cache line maintenance operation by MVA may not succeed"
10128c2ecf20Sopenharmony_ci	depends on CPU_V7 && SMP
10138c2ecf20Sopenharmony_ci	help
10148c2ecf20Sopenharmony_ci	  This option enables the workaround for erratum 764369
10158c2ecf20Sopenharmony_ci	  affecting Cortex-A9 MPCore with two or more processors (all
10168c2ecf20Sopenharmony_ci	  current revisions). Under certain timing circumstances, a data
10178c2ecf20Sopenharmony_ci	  cache line maintenance operation by MVA targeting an Inner
10188c2ecf20Sopenharmony_ci	  Shareable memory region may fail to proceed up to either the
10198c2ecf20Sopenharmony_ci	  Point of Coherency or to the Point of Unification of the
10208c2ecf20Sopenharmony_ci	  system. This workaround adds a DSB instruction before the
10218c2ecf20Sopenharmony_ci	  relevant cache maintenance functions and sets a specific bit
10228c2ecf20Sopenharmony_ci	  in the diagnostic control register of the SCU.
10238c2ecf20Sopenharmony_ci
10248c2ecf20Sopenharmony_ciconfig ARM_ERRATA_775420
10258c2ecf20Sopenharmony_ci       bool "ARM errata: A data cache maintenance operation which aborts, might lead to deadlock"
10268c2ecf20Sopenharmony_ci       depends on CPU_V7
10278c2ecf20Sopenharmony_ci       help
10288c2ecf20Sopenharmony_ci	 This option enables the workaround for the 775420 Cortex-A9 (r2p2,
10298c2ecf20Sopenharmony_ci	 r2p6,r2p8,r2p10,r3p0) erratum. In case a data cache maintenance
10308c2ecf20Sopenharmony_ci	 operation aborts with MMU exception, it might cause the processor
10318c2ecf20Sopenharmony_ci	 to deadlock. This workaround puts DSB before executing ISB if
10328c2ecf20Sopenharmony_ci	 an abort may occur on cache maintenance.
10338c2ecf20Sopenharmony_ci
10348c2ecf20Sopenharmony_ciconfig ARM_ERRATA_798181
10358c2ecf20Sopenharmony_ci	bool "ARM errata: TLBI/DSB failure on Cortex-A15"
10368c2ecf20Sopenharmony_ci	depends on CPU_V7 && SMP
10378c2ecf20Sopenharmony_ci	help
10388c2ecf20Sopenharmony_ci	  On Cortex-A15 (r0p0..r3p2) the TLBI*IS/DSB operations are not
10398c2ecf20Sopenharmony_ci	  adequately shooting down all use of the old entries. This
10408c2ecf20Sopenharmony_ci	  option enables the Linux kernel workaround for this erratum
10418c2ecf20Sopenharmony_ci	  which sends an IPI to the CPUs that are running the same ASID
10428c2ecf20Sopenharmony_ci	  as the one being invalidated.
10438c2ecf20Sopenharmony_ci
10448c2ecf20Sopenharmony_ciconfig ARM_ERRATA_773022
10458c2ecf20Sopenharmony_ci	bool "ARM errata: incorrect instructions may be executed from loop buffer"
10468c2ecf20Sopenharmony_ci	depends on CPU_V7
10478c2ecf20Sopenharmony_ci	help
10488c2ecf20Sopenharmony_ci	  This option enables the workaround for the 773022 Cortex-A15
10498c2ecf20Sopenharmony_ci	  (up to r0p4) erratum. In certain rare sequences of code, the
10508c2ecf20Sopenharmony_ci	  loop buffer may deliver incorrect instructions. This
10518c2ecf20Sopenharmony_ci	  workaround disables the loop buffer to avoid the erratum.
10528c2ecf20Sopenharmony_ci
10538c2ecf20Sopenharmony_ciconfig ARM_ERRATA_818325_852422
10548c2ecf20Sopenharmony_ci	bool "ARM errata: A12: some seqs of opposed cond code instrs => deadlock or corruption"
10558c2ecf20Sopenharmony_ci	depends on CPU_V7
10568c2ecf20Sopenharmony_ci	help
10578c2ecf20Sopenharmony_ci	  This option enables the workaround for:
10588c2ecf20Sopenharmony_ci	  - Cortex-A12 818325: Execution of an UNPREDICTABLE STR or STM
10598c2ecf20Sopenharmony_ci	    instruction might deadlock.  Fixed in r0p1.
10608c2ecf20Sopenharmony_ci	  - Cortex-A12 852422: Execution of a sequence of instructions might
10618c2ecf20Sopenharmony_ci	    lead to either a data corruption or a CPU deadlock.  Not fixed in
10628c2ecf20Sopenharmony_ci	    any Cortex-A12 cores yet.
10638c2ecf20Sopenharmony_ci	  This workaround for all both errata involves setting bit[12] of the
10648c2ecf20Sopenharmony_ci	  Feature Register. This bit disables an optimisation applied to a
10658c2ecf20Sopenharmony_ci	  sequence of 2 instructions that use opposing condition codes.
10668c2ecf20Sopenharmony_ci
10678c2ecf20Sopenharmony_ciconfig ARM_ERRATA_821420
10688c2ecf20Sopenharmony_ci	bool "ARM errata: A12: sequence of VMOV to core registers might lead to a dead lock"
10698c2ecf20Sopenharmony_ci	depends on CPU_V7
10708c2ecf20Sopenharmony_ci	help
10718c2ecf20Sopenharmony_ci	  This option enables the workaround for the 821420 Cortex-A12
10728c2ecf20Sopenharmony_ci	  (all revs) erratum. In very rare timing conditions, a sequence
10738c2ecf20Sopenharmony_ci	  of VMOV to Core registers instructions, for which the second
10748c2ecf20Sopenharmony_ci	  one is in the shadow of a branch or abort, can lead to a
10758c2ecf20Sopenharmony_ci	  deadlock when the VMOV instructions are issued out-of-order.
10768c2ecf20Sopenharmony_ci
10778c2ecf20Sopenharmony_ciconfig ARM_ERRATA_825619
10788c2ecf20Sopenharmony_ci	bool "ARM errata: A12: DMB NSHST/ISHST mixed ... might cause deadlock"
10798c2ecf20Sopenharmony_ci	depends on CPU_V7
10808c2ecf20Sopenharmony_ci	help
10818c2ecf20Sopenharmony_ci	  This option enables the workaround for the 825619 Cortex-A12
10828c2ecf20Sopenharmony_ci	  (all revs) erratum. Within rare timing constraints, executing a
10838c2ecf20Sopenharmony_ci	  DMB NSHST or DMB ISHST instruction followed by a mix of Cacheable
10848c2ecf20Sopenharmony_ci	  and Device/Strongly-Ordered loads and stores might cause deadlock
10858c2ecf20Sopenharmony_ci
10868c2ecf20Sopenharmony_ciconfig ARM_ERRATA_857271
10878c2ecf20Sopenharmony_ci	bool "ARM errata: A12: CPU might deadlock under some very rare internal conditions"
10888c2ecf20Sopenharmony_ci	depends on CPU_V7
10898c2ecf20Sopenharmony_ci	help
10908c2ecf20Sopenharmony_ci	  This option enables the workaround for the 857271 Cortex-A12
10918c2ecf20Sopenharmony_ci	  (all revs) erratum. Under very rare timing conditions, the CPU might
10928c2ecf20Sopenharmony_ci	  hang. The workaround is expected to have a < 1% performance impact.
10938c2ecf20Sopenharmony_ci
10948c2ecf20Sopenharmony_ciconfig ARM_ERRATA_852421
10958c2ecf20Sopenharmony_ci	bool "ARM errata: A17: DMB ST might fail to create order between stores"
10968c2ecf20Sopenharmony_ci	depends on CPU_V7
10978c2ecf20Sopenharmony_ci	help
10988c2ecf20Sopenharmony_ci	  This option enables the workaround for the 852421 Cortex-A17
10998c2ecf20Sopenharmony_ci	  (r1p0, r1p1, r1p2) erratum. Under very rare timing conditions,
11008c2ecf20Sopenharmony_ci	  execution of a DMB ST instruction might fail to properly order
11018c2ecf20Sopenharmony_ci	  stores from GroupA and stores from GroupB.
11028c2ecf20Sopenharmony_ci
11038c2ecf20Sopenharmony_ciconfig ARM_ERRATA_852423
11048c2ecf20Sopenharmony_ci	bool "ARM errata: A17: some seqs of opposed cond code instrs => deadlock or corruption"
11058c2ecf20Sopenharmony_ci	depends on CPU_V7
11068c2ecf20Sopenharmony_ci	help
11078c2ecf20Sopenharmony_ci	  This option enables the workaround for:
11088c2ecf20Sopenharmony_ci	  - Cortex-A17 852423: Execution of a sequence of instructions might
11098c2ecf20Sopenharmony_ci	    lead to either a data corruption or a CPU deadlock.  Not fixed in
11108c2ecf20Sopenharmony_ci	    any Cortex-A17 cores yet.
11118c2ecf20Sopenharmony_ci	  This is identical to Cortex-A12 erratum 852422.  It is a separate
11128c2ecf20Sopenharmony_ci	  config option from the A12 erratum due to the way errata are checked
11138c2ecf20Sopenharmony_ci	  for and handled.
11148c2ecf20Sopenharmony_ci
11158c2ecf20Sopenharmony_ciconfig ARM_ERRATA_857272
11168c2ecf20Sopenharmony_ci	bool "ARM errata: A17: CPU might deadlock under some very rare internal conditions"
11178c2ecf20Sopenharmony_ci	depends on CPU_V7
11188c2ecf20Sopenharmony_ci	help
11198c2ecf20Sopenharmony_ci	  This option enables the workaround for the 857272 Cortex-A17 erratum.
11208c2ecf20Sopenharmony_ci	  This erratum is not known to be fixed in any A17 revision.
11218c2ecf20Sopenharmony_ci	  This is identical to Cortex-A12 erratum 857271.  It is a separate
11228c2ecf20Sopenharmony_ci	  config option from the A12 erratum due to the way errata are checked
11238c2ecf20Sopenharmony_ci	  for and handled.
11248c2ecf20Sopenharmony_ci
11258c2ecf20Sopenharmony_ciendmenu
11268c2ecf20Sopenharmony_ci
11278c2ecf20Sopenharmony_cisource "arch/arm/common/Kconfig"
11288c2ecf20Sopenharmony_ci
11298c2ecf20Sopenharmony_cimenu "Bus support"
11308c2ecf20Sopenharmony_ci
11318c2ecf20Sopenharmony_ciconfig ISA
11328c2ecf20Sopenharmony_ci	bool
11338c2ecf20Sopenharmony_ci	help
11348c2ecf20Sopenharmony_ci	  Find out whether you have ISA slots on your motherboard.  ISA is the
11358c2ecf20Sopenharmony_ci	  name of a bus system, i.e. the way the CPU talks to the other stuff
11368c2ecf20Sopenharmony_ci	  inside your box.  Other bus systems are PCI, EISA, MicroChannel
11378c2ecf20Sopenharmony_ci	  (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
11388c2ecf20Sopenharmony_ci	  newer boards don't support it.  If you have ISA, say Y, otherwise N.
11398c2ecf20Sopenharmony_ci
11408c2ecf20Sopenharmony_ci# Select ISA DMA controller support
11418c2ecf20Sopenharmony_ciconfig ISA_DMA
11428c2ecf20Sopenharmony_ci	bool
11438c2ecf20Sopenharmony_ci	select ISA_DMA_API
11448c2ecf20Sopenharmony_ci
11458c2ecf20Sopenharmony_ci# Select ISA DMA interface
11468c2ecf20Sopenharmony_ciconfig ISA_DMA_API
11478c2ecf20Sopenharmony_ci	bool
11488c2ecf20Sopenharmony_ci
11498c2ecf20Sopenharmony_ciconfig PCI_NANOENGINE
11508c2ecf20Sopenharmony_ci	bool "BSE nanoEngine PCI support"
11518c2ecf20Sopenharmony_ci	depends on SA1100_NANOENGINE
11528c2ecf20Sopenharmony_ci	help
11538c2ecf20Sopenharmony_ci	  Enable PCI on the BSE nanoEngine board.
11548c2ecf20Sopenharmony_ci
11558c2ecf20Sopenharmony_ciconfig ARM_ERRATA_814220
11568c2ecf20Sopenharmony_ci	bool "ARM errata: Cache maintenance by set/way operations can execute out of order"
11578c2ecf20Sopenharmony_ci	depends on CPU_V7
11588c2ecf20Sopenharmony_ci	help
11598c2ecf20Sopenharmony_ci	  The v7 ARM states that all cache and branch predictor maintenance
11608c2ecf20Sopenharmony_ci	  operations that do not specify an address execute, relative to
11618c2ecf20Sopenharmony_ci	  each other, in program order.
11628c2ecf20Sopenharmony_ci	  However, because of this erratum, an L2 set/way cache maintenance
11638c2ecf20Sopenharmony_ci	  operation can overtake an L1 set/way cache maintenance operation.
11648c2ecf20Sopenharmony_ci	  This ERRATA only affected the Cortex-A7 and present in r0p2, r0p3,
11658c2ecf20Sopenharmony_ci	  r0p4, r0p5.
11668c2ecf20Sopenharmony_ci
11678c2ecf20Sopenharmony_ciendmenu
11688c2ecf20Sopenharmony_ci
11698c2ecf20Sopenharmony_cimenu "Kernel Features"
11708c2ecf20Sopenharmony_ci
11718c2ecf20Sopenharmony_ciconfig HAVE_SMP
11728c2ecf20Sopenharmony_ci	bool
11738c2ecf20Sopenharmony_ci	help
11748c2ecf20Sopenharmony_ci	  This option should be selected by machines which have an SMP-
11758c2ecf20Sopenharmony_ci	  capable CPU.
11768c2ecf20Sopenharmony_ci
11778c2ecf20Sopenharmony_ci	  The only effect of this option is to make the SMP-related
11788c2ecf20Sopenharmony_ci	  options available to the user for configuration.
11798c2ecf20Sopenharmony_ci
11808c2ecf20Sopenharmony_ciconfig SMP
11818c2ecf20Sopenharmony_ci	bool "Symmetric Multi-Processing"
11828c2ecf20Sopenharmony_ci	depends on CPU_V6K || CPU_V7
11838c2ecf20Sopenharmony_ci	depends on GENERIC_CLOCKEVENTS
11848c2ecf20Sopenharmony_ci	depends on HAVE_SMP
11858c2ecf20Sopenharmony_ci	depends on MMU || ARM_MPU
11868c2ecf20Sopenharmony_ci	select IRQ_WORK
11878c2ecf20Sopenharmony_ci	help
11888c2ecf20Sopenharmony_ci	  This enables support for systems with more than one CPU. If you have
11898c2ecf20Sopenharmony_ci	  a system with only one CPU, say N. If you have a system with more
11908c2ecf20Sopenharmony_ci	  than one CPU, say Y.
11918c2ecf20Sopenharmony_ci
11928c2ecf20Sopenharmony_ci	  If you say N here, the kernel will run on uni- and multiprocessor
11938c2ecf20Sopenharmony_ci	  machines, but will use only one CPU of a multiprocessor machine. If
11948c2ecf20Sopenharmony_ci	  you say Y here, the kernel will run on many, but not all,
11958c2ecf20Sopenharmony_ci	  uniprocessor machines. On a uniprocessor machine, the kernel
11968c2ecf20Sopenharmony_ci	  will run faster if you say N here.
11978c2ecf20Sopenharmony_ci
11988c2ecf20Sopenharmony_ci	  See also <file:Documentation/x86/i386/IO-APIC.rst>,
11998c2ecf20Sopenharmony_ci	  <file:Documentation/admin-guide/lockup-watchdogs.rst> and the SMP-HOWTO available at
12008c2ecf20Sopenharmony_ci	  <http://tldp.org/HOWTO/SMP-HOWTO.html>.
12018c2ecf20Sopenharmony_ci
12028c2ecf20Sopenharmony_ci	  If you don't know what to do here, say N.
12038c2ecf20Sopenharmony_ci
12048c2ecf20Sopenharmony_ciconfig SMP_ON_UP
12058c2ecf20Sopenharmony_ci	bool "Allow booting SMP kernel on uniprocessor systems"
12068c2ecf20Sopenharmony_ci	depends on SMP && !XIP_KERNEL && MMU
12078c2ecf20Sopenharmony_ci	default y
12088c2ecf20Sopenharmony_ci	help
12098c2ecf20Sopenharmony_ci	  SMP kernels contain instructions which fail on non-SMP processors.
12108c2ecf20Sopenharmony_ci	  Enabling this option allows the kernel to modify itself to make
12118c2ecf20Sopenharmony_ci	  these instructions safe.  Disabling it allows about 1K of space
12128c2ecf20Sopenharmony_ci	  savings.
12138c2ecf20Sopenharmony_ci
12148c2ecf20Sopenharmony_ci	  If you don't know what to do here, say Y.
12158c2ecf20Sopenharmony_ci
12168c2ecf20Sopenharmony_ciconfig ARM_CPU_TOPOLOGY
12178c2ecf20Sopenharmony_ci	bool "Support cpu topology definition"
12188c2ecf20Sopenharmony_ci	depends on SMP && CPU_V7
12198c2ecf20Sopenharmony_ci	default y
12208c2ecf20Sopenharmony_ci	help
12218c2ecf20Sopenharmony_ci	  Support ARM cpu topology definition. The MPIDR register defines
12228c2ecf20Sopenharmony_ci	  affinity between processors which is then used to describe the cpu
12238c2ecf20Sopenharmony_ci	  topology of an ARM System.
12248c2ecf20Sopenharmony_ci
12258c2ecf20Sopenharmony_ciconfig SCHED_MC
12268c2ecf20Sopenharmony_ci	bool "Multi-core scheduler support"
12278c2ecf20Sopenharmony_ci	depends on ARM_CPU_TOPOLOGY
12288c2ecf20Sopenharmony_ci	help
12298c2ecf20Sopenharmony_ci	  Multi-core scheduler support improves the CPU scheduler's decision
12308c2ecf20Sopenharmony_ci	  making when dealing with multi-core CPU chips at a cost of slightly
12318c2ecf20Sopenharmony_ci	  increased overhead in some places. If unsure say N here.
12328c2ecf20Sopenharmony_ci
12338c2ecf20Sopenharmony_ciconfig SCHED_SMT
12348c2ecf20Sopenharmony_ci	bool "SMT scheduler support"
12358c2ecf20Sopenharmony_ci	depends on ARM_CPU_TOPOLOGY
12368c2ecf20Sopenharmony_ci	help
12378c2ecf20Sopenharmony_ci	  Improves the CPU scheduler's decision making when dealing with
12388c2ecf20Sopenharmony_ci	  MultiThreading at a cost of slightly increased overhead in some
12398c2ecf20Sopenharmony_ci	  places. If unsure say N here.
12408c2ecf20Sopenharmony_ci
12418c2ecf20Sopenharmony_ciconfig HAVE_ARM_SCU
12428c2ecf20Sopenharmony_ci	bool
12438c2ecf20Sopenharmony_ci	help
12448c2ecf20Sopenharmony_ci	  This option enables support for the ARM snoop control unit
12458c2ecf20Sopenharmony_ci
12468c2ecf20Sopenharmony_ciconfig HAVE_ARM_ARCH_TIMER
12478c2ecf20Sopenharmony_ci	bool "Architected timer support"
12488c2ecf20Sopenharmony_ci	depends on CPU_V7
12498c2ecf20Sopenharmony_ci	select ARM_ARCH_TIMER
12508c2ecf20Sopenharmony_ci	help
12518c2ecf20Sopenharmony_ci	  This option enables support for the ARM architected timer
12528c2ecf20Sopenharmony_ci
12538c2ecf20Sopenharmony_ciconfig HAVE_ARM_TWD
12548c2ecf20Sopenharmony_ci	bool
12558c2ecf20Sopenharmony_ci	help
12568c2ecf20Sopenharmony_ci	  This options enables support for the ARM timer and watchdog unit
12578c2ecf20Sopenharmony_ci
12588c2ecf20Sopenharmony_ciconfig MCPM
12598c2ecf20Sopenharmony_ci	bool "Multi-Cluster Power Management"
12608c2ecf20Sopenharmony_ci	depends on CPU_V7 && SMP
12618c2ecf20Sopenharmony_ci	help
12628c2ecf20Sopenharmony_ci	  This option provides the common power management infrastructure
12638c2ecf20Sopenharmony_ci	  for (multi-)cluster based systems, such as big.LITTLE based
12648c2ecf20Sopenharmony_ci	  systems.
12658c2ecf20Sopenharmony_ci
12668c2ecf20Sopenharmony_ciconfig MCPM_QUAD_CLUSTER
12678c2ecf20Sopenharmony_ci	bool
12688c2ecf20Sopenharmony_ci	depends on MCPM
12698c2ecf20Sopenharmony_ci	help
12708c2ecf20Sopenharmony_ci	  To avoid wasting resources unnecessarily, MCPM only supports up
12718c2ecf20Sopenharmony_ci	  to 2 clusters by default.
12728c2ecf20Sopenharmony_ci	  Platforms with 3 or 4 clusters that use MCPM must select this
12738c2ecf20Sopenharmony_ci	  option to allow the additional clusters to be managed.
12748c2ecf20Sopenharmony_ci
12758c2ecf20Sopenharmony_ciconfig BIG_LITTLE
12768c2ecf20Sopenharmony_ci	bool "big.LITTLE support (Experimental)"
12778c2ecf20Sopenharmony_ci	depends on CPU_V7 && SMP
12788c2ecf20Sopenharmony_ci	select MCPM
12798c2ecf20Sopenharmony_ci	help
12808c2ecf20Sopenharmony_ci	  This option enables support selections for the big.LITTLE
12818c2ecf20Sopenharmony_ci	  system architecture.
12828c2ecf20Sopenharmony_ci
12838c2ecf20Sopenharmony_ciconfig BL_SWITCHER
12848c2ecf20Sopenharmony_ci	bool "big.LITTLE switcher support"
12858c2ecf20Sopenharmony_ci	depends on BIG_LITTLE && MCPM && HOTPLUG_CPU && ARM_GIC
12868c2ecf20Sopenharmony_ci	select CPU_PM
12878c2ecf20Sopenharmony_ci	help
12888c2ecf20Sopenharmony_ci	  The big.LITTLE "switcher" provides the core functionality to
12898c2ecf20Sopenharmony_ci	  transparently handle transition between a cluster of A15's
12908c2ecf20Sopenharmony_ci	  and a cluster of A7's in a big.LITTLE system.
12918c2ecf20Sopenharmony_ci
12928c2ecf20Sopenharmony_ciconfig BL_SWITCHER_DUMMY_IF
12938c2ecf20Sopenharmony_ci	tristate "Simple big.LITTLE switcher user interface"
12948c2ecf20Sopenharmony_ci	depends on BL_SWITCHER && DEBUG_KERNEL
12958c2ecf20Sopenharmony_ci	help
12968c2ecf20Sopenharmony_ci	  This is a simple and dummy char dev interface to control
12978c2ecf20Sopenharmony_ci	  the big.LITTLE switcher core code.  It is meant for
12988c2ecf20Sopenharmony_ci	  debugging purposes only.
12998c2ecf20Sopenharmony_ci
13008c2ecf20Sopenharmony_cichoice
13018c2ecf20Sopenharmony_ci	prompt "Memory split"
13028c2ecf20Sopenharmony_ci	depends on MMU
13038c2ecf20Sopenharmony_ci	default VMSPLIT_3G
13048c2ecf20Sopenharmony_ci	help
13058c2ecf20Sopenharmony_ci	  Select the desired split between kernel and user memory.
13068c2ecf20Sopenharmony_ci
13078c2ecf20Sopenharmony_ci	  If you are not absolutely sure what you are doing, leave this
13088c2ecf20Sopenharmony_ci	  option alone!
13098c2ecf20Sopenharmony_ci
13108c2ecf20Sopenharmony_ci	config VMSPLIT_3G
13118c2ecf20Sopenharmony_ci		bool "3G/1G user/kernel split"
13128c2ecf20Sopenharmony_ci	config VMSPLIT_3G_OPT
13138c2ecf20Sopenharmony_ci		depends on !ARM_LPAE
13148c2ecf20Sopenharmony_ci		bool "3G/1G user/kernel split (for full 1G low memory)"
13158c2ecf20Sopenharmony_ci	config VMSPLIT_2G
13168c2ecf20Sopenharmony_ci		bool "2G/2G user/kernel split"
13178c2ecf20Sopenharmony_ci	config VMSPLIT_1G
13188c2ecf20Sopenharmony_ci		bool "1G/3G user/kernel split"
13198c2ecf20Sopenharmony_ciendchoice
13208c2ecf20Sopenharmony_ci
13218c2ecf20Sopenharmony_ciconfig PAGE_OFFSET
13228c2ecf20Sopenharmony_ci	hex
13238c2ecf20Sopenharmony_ci	default PHYS_OFFSET if !MMU
13248c2ecf20Sopenharmony_ci	default 0x40000000 if VMSPLIT_1G
13258c2ecf20Sopenharmony_ci	default 0x80000000 if VMSPLIT_2G
13268c2ecf20Sopenharmony_ci	default 0xB0000000 if VMSPLIT_3G_OPT
13278c2ecf20Sopenharmony_ci	default 0xC0000000
13288c2ecf20Sopenharmony_ci
13298c2ecf20Sopenharmony_ciconfig KASAN_SHADOW_OFFSET
13308c2ecf20Sopenharmony_ci	hex
13318c2ecf20Sopenharmony_ci	depends on KASAN
13328c2ecf20Sopenharmony_ci	default 0x1f000000 if PAGE_OFFSET=0x40000000
13338c2ecf20Sopenharmony_ci	default 0x5f000000 if PAGE_OFFSET=0x80000000
13348c2ecf20Sopenharmony_ci	default 0x9f000000 if PAGE_OFFSET=0xC0000000
13358c2ecf20Sopenharmony_ci	default 0x8f000000 if PAGE_OFFSET=0xB0000000
13368c2ecf20Sopenharmony_ci	default 0xffffffff
13378c2ecf20Sopenharmony_ci
13388c2ecf20Sopenharmony_ciconfig NR_CPUS
13398c2ecf20Sopenharmony_ci	int "Maximum number of CPUs (2-32)"
13408c2ecf20Sopenharmony_ci	range 2 32
13418c2ecf20Sopenharmony_ci	depends on SMP
13428c2ecf20Sopenharmony_ci	default "4"
13438c2ecf20Sopenharmony_ci
13448c2ecf20Sopenharmony_ciconfig HOTPLUG_CPU
13458c2ecf20Sopenharmony_ci	bool "Support for hot-pluggable CPUs"
13468c2ecf20Sopenharmony_ci	depends on SMP
13478c2ecf20Sopenharmony_ci	select GENERIC_IRQ_MIGRATION
13488c2ecf20Sopenharmony_ci	help
13498c2ecf20Sopenharmony_ci	  Say Y here to experiment with turning CPUs off and on.  CPUs
13508c2ecf20Sopenharmony_ci	  can be controlled through /sys/devices/system/cpu.
13518c2ecf20Sopenharmony_ci
13528c2ecf20Sopenharmony_ciconfig ARM_PSCI
13538c2ecf20Sopenharmony_ci	bool "Support for the ARM Power State Coordination Interface (PSCI)"
13548c2ecf20Sopenharmony_ci	depends on HAVE_ARM_SMCCC
13558c2ecf20Sopenharmony_ci	select ARM_PSCI_FW
13568c2ecf20Sopenharmony_ci	help
13578c2ecf20Sopenharmony_ci	  Say Y here if you want Linux to communicate with system firmware
13588c2ecf20Sopenharmony_ci	  implementing the PSCI specification for CPU-centric power
13598c2ecf20Sopenharmony_ci	  management operations described in ARM document number ARM DEN
13608c2ecf20Sopenharmony_ci	  0022A ("Power State Coordination Interface System Software on
13618c2ecf20Sopenharmony_ci	  ARM processors").
13628c2ecf20Sopenharmony_ci
13638c2ecf20Sopenharmony_ci# The GPIO number here must be sorted by descending number. In case of
13648c2ecf20Sopenharmony_ci# a multiplatform kernel, we just want the highest value required by the
13658c2ecf20Sopenharmony_ci# selected platforms.
13668c2ecf20Sopenharmony_ciconfig ARCH_NR_GPIO
13678c2ecf20Sopenharmony_ci	int
13688c2ecf20Sopenharmony_ci	default 2048 if ARCH_SOCFPGA
13698c2ecf20Sopenharmony_ci	default 1024 if ARCH_BRCMSTB || ARCH_RENESAS || ARCH_TEGRA || \
13708c2ecf20Sopenharmony_ci		ARCH_ZYNQ || ARCH_ASPEED
13718c2ecf20Sopenharmony_ci	default 512 if ARCH_EXYNOS || ARCH_KEYSTONE || SOC_OMAP5 || \
13728c2ecf20Sopenharmony_ci		SOC_DRA7XX || ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210
13738c2ecf20Sopenharmony_ci	default 416 if ARCH_SUNXI
13748c2ecf20Sopenharmony_ci	default 392 if ARCH_U8500
13758c2ecf20Sopenharmony_ci	default 352 if ARCH_VT8500
13768c2ecf20Sopenharmony_ci	default 288 if ARCH_ROCKCHIP
13778c2ecf20Sopenharmony_ci	default 264 if MACH_H4700
13788c2ecf20Sopenharmony_ci	default 0
13798c2ecf20Sopenharmony_ci	help
13808c2ecf20Sopenharmony_ci	  Maximum number of GPIOs in the system.
13818c2ecf20Sopenharmony_ci
13828c2ecf20Sopenharmony_ci	  If unsure, leave the default value.
13838c2ecf20Sopenharmony_ci
13848c2ecf20Sopenharmony_ciconfig HZ_FIXED
13858c2ecf20Sopenharmony_ci	int
13868c2ecf20Sopenharmony_ci	default 200 if ARCH_EBSA110
13878c2ecf20Sopenharmony_ci	default 128 if SOC_AT91RM9200
13888c2ecf20Sopenharmony_ci	default 0
13898c2ecf20Sopenharmony_ci
13908c2ecf20Sopenharmony_cichoice
13918c2ecf20Sopenharmony_ci	depends on HZ_FIXED = 0
13928c2ecf20Sopenharmony_ci	prompt "Timer frequency"
13938c2ecf20Sopenharmony_ci
13948c2ecf20Sopenharmony_ciconfig HZ_100
13958c2ecf20Sopenharmony_ci	bool "100 Hz"
13968c2ecf20Sopenharmony_ci
13978c2ecf20Sopenharmony_ciconfig HZ_200
13988c2ecf20Sopenharmony_ci	bool "200 Hz"
13998c2ecf20Sopenharmony_ci
14008c2ecf20Sopenharmony_ciconfig HZ_250
14018c2ecf20Sopenharmony_ci	bool "250 Hz"
14028c2ecf20Sopenharmony_ci
14038c2ecf20Sopenharmony_ciconfig HZ_300
14048c2ecf20Sopenharmony_ci	bool "300 Hz"
14058c2ecf20Sopenharmony_ci
14068c2ecf20Sopenharmony_ciconfig HZ_500
14078c2ecf20Sopenharmony_ci	bool "500 Hz"
14088c2ecf20Sopenharmony_ci
14098c2ecf20Sopenharmony_ciconfig HZ_1000
14108c2ecf20Sopenharmony_ci	bool "1000 Hz"
14118c2ecf20Sopenharmony_ci
14128c2ecf20Sopenharmony_ciendchoice
14138c2ecf20Sopenharmony_ci
14148c2ecf20Sopenharmony_ciconfig HZ
14158c2ecf20Sopenharmony_ci	int
14168c2ecf20Sopenharmony_ci	default HZ_FIXED if HZ_FIXED != 0
14178c2ecf20Sopenharmony_ci	default 100 if HZ_100
14188c2ecf20Sopenharmony_ci	default 200 if HZ_200
14198c2ecf20Sopenharmony_ci	default 250 if HZ_250
14208c2ecf20Sopenharmony_ci	default 300 if HZ_300
14218c2ecf20Sopenharmony_ci	default 500 if HZ_500
14228c2ecf20Sopenharmony_ci	default 1000
14238c2ecf20Sopenharmony_ci
14248c2ecf20Sopenharmony_ciconfig SCHED_HRTICK
14258c2ecf20Sopenharmony_ci	def_bool HIGH_RES_TIMERS
14268c2ecf20Sopenharmony_ci
14278c2ecf20Sopenharmony_ciconfig THUMB2_KERNEL
14288c2ecf20Sopenharmony_ci	bool "Compile the kernel in Thumb-2 mode" if !CPU_THUMBONLY
14298c2ecf20Sopenharmony_ci	depends on (CPU_V7 || CPU_V7M) && !CPU_V6 && !CPU_V6K
14308c2ecf20Sopenharmony_ci	default y if CPU_THUMBONLY
14318c2ecf20Sopenharmony_ci	select ARM_UNWIND
14328c2ecf20Sopenharmony_ci	help
14338c2ecf20Sopenharmony_ci	  By enabling this option, the kernel will be compiled in
14348c2ecf20Sopenharmony_ci	  Thumb-2 mode.
14358c2ecf20Sopenharmony_ci
14368c2ecf20Sopenharmony_ci	  If unsure, say N.
14378c2ecf20Sopenharmony_ci
14388c2ecf20Sopenharmony_ciconfig ARM_PATCH_IDIV
14398c2ecf20Sopenharmony_ci	bool "Runtime patch udiv/sdiv instructions into __aeabi_{u}idiv()"
14408c2ecf20Sopenharmony_ci	depends on CPU_32v7 && !XIP_KERNEL
14418c2ecf20Sopenharmony_ci	default y
14428c2ecf20Sopenharmony_ci	help
14438c2ecf20Sopenharmony_ci	  The ARM compiler inserts calls to __aeabi_idiv() and
14448c2ecf20Sopenharmony_ci	  __aeabi_uidiv() when it needs to perform division on signed
14458c2ecf20Sopenharmony_ci	  and unsigned integers. Some v7 CPUs have support for the sdiv
14468c2ecf20Sopenharmony_ci	  and udiv instructions that can be used to implement those
14478c2ecf20Sopenharmony_ci	  functions.
14488c2ecf20Sopenharmony_ci
14498c2ecf20Sopenharmony_ci	  Enabling this option allows the kernel to modify itself to
14508c2ecf20Sopenharmony_ci	  replace the first two instructions of these library functions
14518c2ecf20Sopenharmony_ci	  with the sdiv or udiv plus "bx lr" instructions when the CPU
14528c2ecf20Sopenharmony_ci	  it is running on supports them. Typically this will be faster
14538c2ecf20Sopenharmony_ci	  and less power intensive than running the original library
14548c2ecf20Sopenharmony_ci	  code to do integer division.
14558c2ecf20Sopenharmony_ci
14568c2ecf20Sopenharmony_ciconfig AEABI
14578c2ecf20Sopenharmony_ci	bool "Use the ARM EABI to compile the kernel" if !CPU_V7 && \
14588c2ecf20Sopenharmony_ci		!CPU_V7M && !CPU_V6 && !CPU_V6K && !CC_IS_CLANG
14598c2ecf20Sopenharmony_ci	default CPU_V7 || CPU_V7M || CPU_V6 || CPU_V6K || CC_IS_CLANG
14608c2ecf20Sopenharmony_ci	help
14618c2ecf20Sopenharmony_ci	  This option allows for the kernel to be compiled using the latest
14628c2ecf20Sopenharmony_ci	  ARM ABI (aka EABI).  This is only useful if you are using a user
14638c2ecf20Sopenharmony_ci	  space environment that is also compiled with EABI.
14648c2ecf20Sopenharmony_ci
14658c2ecf20Sopenharmony_ci	  Since there are major incompatibilities between the legacy ABI and
14668c2ecf20Sopenharmony_ci	  EABI, especially with regard to structure member alignment, this
14678c2ecf20Sopenharmony_ci	  option also changes the kernel syscall calling convention to
14688c2ecf20Sopenharmony_ci	  disambiguate both ABIs and allow for backward compatibility support
14698c2ecf20Sopenharmony_ci	  (selected with CONFIG_OABI_COMPAT).
14708c2ecf20Sopenharmony_ci
14718c2ecf20Sopenharmony_ci	  To use this you need GCC version 4.0.0 or later.
14728c2ecf20Sopenharmony_ci
14738c2ecf20Sopenharmony_ciconfig OABI_COMPAT
14748c2ecf20Sopenharmony_ci	bool "Allow old ABI binaries to run with this kernel (EXPERIMENTAL)"
14758c2ecf20Sopenharmony_ci	depends on AEABI && !THUMB2_KERNEL
14768c2ecf20Sopenharmony_ci	help
14778c2ecf20Sopenharmony_ci	  This option preserves the old syscall interface along with the
14788c2ecf20Sopenharmony_ci	  new (ARM EABI) one. It also provides a compatibility layer to
14798c2ecf20Sopenharmony_ci	  intercept syscalls that have structure arguments which layout
14808c2ecf20Sopenharmony_ci	  in memory differs between the legacy ABI and the new ARM EABI
14818c2ecf20Sopenharmony_ci	  (only for non "thumb" binaries). This option adds a tiny
14828c2ecf20Sopenharmony_ci	  overhead to all syscalls and produces a slightly larger kernel.
14838c2ecf20Sopenharmony_ci
14848c2ecf20Sopenharmony_ci	  The seccomp filter system will not be available when this is
14858c2ecf20Sopenharmony_ci	  selected, since there is no way yet to sensibly distinguish
14868c2ecf20Sopenharmony_ci	  between calling conventions during filtering.
14878c2ecf20Sopenharmony_ci
14888c2ecf20Sopenharmony_ci	  If you know you'll be using only pure EABI user space then you
14898c2ecf20Sopenharmony_ci	  can say N here. If this option is not selected and you attempt
14908c2ecf20Sopenharmony_ci	  to execute a legacy ABI binary then the result will be
14918c2ecf20Sopenharmony_ci	  UNPREDICTABLE (in fact it can be predicted that it won't work
14928c2ecf20Sopenharmony_ci	  at all). If in doubt say N.
14938c2ecf20Sopenharmony_ci
14948c2ecf20Sopenharmony_ciconfig ARCH_SELECT_MEMORY_MODEL
14958c2ecf20Sopenharmony_ci	bool
14968c2ecf20Sopenharmony_ci
14978c2ecf20Sopenharmony_ciconfig ARCH_FLATMEM_ENABLE
14988c2ecf20Sopenharmony_ci	bool
14998c2ecf20Sopenharmony_ci
15008c2ecf20Sopenharmony_ciconfig ARCH_SPARSEMEM_ENABLE
15018c2ecf20Sopenharmony_ci	bool
15028c2ecf20Sopenharmony_ci	select SPARSEMEM_STATIC if SPARSEMEM
15038c2ecf20Sopenharmony_ci
15048c2ecf20Sopenharmony_ciconfig HAVE_ARCH_PFN_VALID
15058c2ecf20Sopenharmony_ci	def_bool y
15068c2ecf20Sopenharmony_ci
15078c2ecf20Sopenharmony_ciconfig HIGHMEM
15088c2ecf20Sopenharmony_ci	bool "High Memory Support"
15098c2ecf20Sopenharmony_ci	depends on MMU
15108c2ecf20Sopenharmony_ci	help
15118c2ecf20Sopenharmony_ci	  The address space of ARM processors is only 4 Gigabytes large
15128c2ecf20Sopenharmony_ci	  and it has to accommodate user address space, kernel address
15138c2ecf20Sopenharmony_ci	  space as well as some memory mapped IO. That means that, if you
15148c2ecf20Sopenharmony_ci	  have a large amount of physical memory and/or IO, not all of the
15158c2ecf20Sopenharmony_ci	  memory can be "permanently mapped" by the kernel. The physical
15168c2ecf20Sopenharmony_ci	  memory that is not permanently mapped is called "high memory".
15178c2ecf20Sopenharmony_ci
15188c2ecf20Sopenharmony_ci	  Depending on the selected kernel/user memory split, minimum
15198c2ecf20Sopenharmony_ci	  vmalloc space and actual amount of RAM, you may not need this
15208c2ecf20Sopenharmony_ci	  option which should result in a slightly faster kernel.
15218c2ecf20Sopenharmony_ci
15228c2ecf20Sopenharmony_ci	  If unsure, say n.
15238c2ecf20Sopenharmony_ci
15248c2ecf20Sopenharmony_ciconfig HIGHPTE
15258c2ecf20Sopenharmony_ci	bool "Allocate 2nd-level pagetables from highmem" if EXPERT
15268c2ecf20Sopenharmony_ci	depends on HIGHMEM
15278c2ecf20Sopenharmony_ci	default y
15288c2ecf20Sopenharmony_ci	help
15298c2ecf20Sopenharmony_ci	  The VM uses one page of physical memory for each page table.
15308c2ecf20Sopenharmony_ci	  For systems with a lot of processes, this can use a lot of
15318c2ecf20Sopenharmony_ci	  precious low memory, eventually leading to low memory being
15328c2ecf20Sopenharmony_ci	  consumed by page tables.  Setting this option will allow
15338c2ecf20Sopenharmony_ci	  user-space 2nd level page tables to reside in high memory.
15348c2ecf20Sopenharmony_ci
15358c2ecf20Sopenharmony_ciconfig CPU_SW_DOMAIN_PAN
15368c2ecf20Sopenharmony_ci	bool "Enable use of CPU domains to implement privileged no-access"
15378c2ecf20Sopenharmony_ci	depends on MMU && !ARM_LPAE
15388c2ecf20Sopenharmony_ci	default y
15398c2ecf20Sopenharmony_ci	help
15408c2ecf20Sopenharmony_ci	  Increase kernel security by ensuring that normal kernel accesses
15418c2ecf20Sopenharmony_ci	  are unable to access userspace addresses.  This can help prevent
15428c2ecf20Sopenharmony_ci	  use-after-free bugs becoming an exploitable privilege escalation
15438c2ecf20Sopenharmony_ci	  by ensuring that magic values (such as LIST_POISON) will always
15448c2ecf20Sopenharmony_ci	  fault when dereferenced.
15458c2ecf20Sopenharmony_ci
15468c2ecf20Sopenharmony_ci	  CPUs with low-vector mappings use a best-efforts implementation.
15478c2ecf20Sopenharmony_ci	  Their lower 1MB needs to remain accessible for the vectors, but
15488c2ecf20Sopenharmony_ci	  the remainder of userspace will become appropriately inaccessible.
15498c2ecf20Sopenharmony_ci
15508c2ecf20Sopenharmony_ciconfig HW_PERF_EVENTS
15518c2ecf20Sopenharmony_ci	def_bool y
15528c2ecf20Sopenharmony_ci	depends on ARM_PMU
15538c2ecf20Sopenharmony_ci
15548c2ecf20Sopenharmony_ciconfig SYS_SUPPORTS_HUGETLBFS
15558c2ecf20Sopenharmony_ci       def_bool y
15568c2ecf20Sopenharmony_ci       depends on ARM_LPAE
15578c2ecf20Sopenharmony_ci
15588c2ecf20Sopenharmony_ciconfig HAVE_ARCH_TRANSPARENT_HUGEPAGE
15598c2ecf20Sopenharmony_ci       def_bool y
15608c2ecf20Sopenharmony_ci       depends on ARM_LPAE
15618c2ecf20Sopenharmony_ci
15628c2ecf20Sopenharmony_ciconfig ARCH_WANT_GENERAL_HUGETLB
15638c2ecf20Sopenharmony_ci	def_bool y
15648c2ecf20Sopenharmony_ci
15658c2ecf20Sopenharmony_ciconfig ARM_MODULE_PLTS
15668c2ecf20Sopenharmony_ci	bool "Use PLTs to allow module memory to spill over into vmalloc area"
15678c2ecf20Sopenharmony_ci	depends on MODULES
15688c2ecf20Sopenharmony_ci	default y
15698c2ecf20Sopenharmony_ci	help
15708c2ecf20Sopenharmony_ci	  Allocate PLTs when loading modules so that jumps and calls whose
15718c2ecf20Sopenharmony_ci	  targets are too far away for their relative offsets to be encoded
15728c2ecf20Sopenharmony_ci	  in the instructions themselves can be bounced via veneers in the
15738c2ecf20Sopenharmony_ci	  module's PLT. This allows modules to be allocated in the generic
15748c2ecf20Sopenharmony_ci	  vmalloc area after the dedicated module memory area has been
15758c2ecf20Sopenharmony_ci	  exhausted. The modules will use slightly more memory, but after
15768c2ecf20Sopenharmony_ci	  rounding up to page size, the actual memory footprint is usually
15778c2ecf20Sopenharmony_ci	  the same.
15788c2ecf20Sopenharmony_ci
15798c2ecf20Sopenharmony_ci	  Disabling this is usually safe for small single-platform
15808c2ecf20Sopenharmony_ci	  configurations. If unsure, say y.
15818c2ecf20Sopenharmony_ci
15828c2ecf20Sopenharmony_ciconfig FORCE_MAX_ZONEORDER
15838c2ecf20Sopenharmony_ci	int "Maximum zone order"
15848c2ecf20Sopenharmony_ci	default "12" if SOC_AM33XX
15858c2ecf20Sopenharmony_ci	default "9" if SA1111 || ARCH_EFM32
15868c2ecf20Sopenharmony_ci	default "11"
15878c2ecf20Sopenharmony_ci	help
15888c2ecf20Sopenharmony_ci	  The kernel memory allocator divides physically contiguous memory
15898c2ecf20Sopenharmony_ci	  blocks into "zones", where each zone is a power of two number of
15908c2ecf20Sopenharmony_ci	  pages.  This option selects the largest power of two that the kernel
15918c2ecf20Sopenharmony_ci	  keeps in the memory allocator.  If you need to allocate very large
15928c2ecf20Sopenharmony_ci	  blocks of physically contiguous memory, then you may need to
15938c2ecf20Sopenharmony_ci	  increase this value.
15948c2ecf20Sopenharmony_ci
15958c2ecf20Sopenharmony_ci	  This config option is actually maximum order plus one. For example,
15968c2ecf20Sopenharmony_ci	  a value of 11 means that the largest free memory block is 2^10 pages.
15978c2ecf20Sopenharmony_ci
15988c2ecf20Sopenharmony_ciconfig ALIGNMENT_TRAP
15998c2ecf20Sopenharmony_ci	bool
16008c2ecf20Sopenharmony_ci	depends on CPU_CP15_MMU
16018c2ecf20Sopenharmony_ci	default y if !ARCH_EBSA110
16028c2ecf20Sopenharmony_ci	select HAVE_PROC_CPU if PROC_FS
16038c2ecf20Sopenharmony_ci	help
16048c2ecf20Sopenharmony_ci	  ARM processors cannot fetch/store information which is not
16058c2ecf20Sopenharmony_ci	  naturally aligned on the bus, i.e., a 4 byte fetch must start at an
16068c2ecf20Sopenharmony_ci	  address divisible by 4. On 32-bit ARM processors, these non-aligned
16078c2ecf20Sopenharmony_ci	  fetch/store instructions will be emulated in software if you say
16088c2ecf20Sopenharmony_ci	  here, which has a severe performance impact. This is necessary for
16098c2ecf20Sopenharmony_ci	  correct operation of some network protocols. With an IP-only
16108c2ecf20Sopenharmony_ci	  configuration it is safe to say N, otherwise say Y.
16118c2ecf20Sopenharmony_ci
16128c2ecf20Sopenharmony_ciconfig UACCESS_WITH_MEMCPY
16138c2ecf20Sopenharmony_ci	bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()"
16148c2ecf20Sopenharmony_ci	depends on MMU
16158c2ecf20Sopenharmony_ci	default y if CPU_FEROCEON
16168c2ecf20Sopenharmony_ci	help
16178c2ecf20Sopenharmony_ci	  Implement faster copy_to_user and clear_user methods for CPU
16188c2ecf20Sopenharmony_ci	  cores where a 8-word STM instruction give significantly higher
16198c2ecf20Sopenharmony_ci	  memory write throughput than a sequence of individual 32bit stores.
16208c2ecf20Sopenharmony_ci
16218c2ecf20Sopenharmony_ci	  A possible side effect is a slight increase in scheduling latency
16228c2ecf20Sopenharmony_ci	  between threads sharing the same address space if they invoke
16238c2ecf20Sopenharmony_ci	  such copy operations with large buffers.
16248c2ecf20Sopenharmony_ci
16258c2ecf20Sopenharmony_ci	  However, if the CPU data cache is using a write-allocate mode,
16268c2ecf20Sopenharmony_ci	  this option is unlikely to provide any performance gain.
16278c2ecf20Sopenharmony_ci
16288c2ecf20Sopenharmony_ciconfig PARAVIRT
16298c2ecf20Sopenharmony_ci	bool "Enable paravirtualization code"
16308c2ecf20Sopenharmony_ci	help
16318c2ecf20Sopenharmony_ci	  This changes the kernel so it can modify itself when it is run
16328c2ecf20Sopenharmony_ci	  under a hypervisor, potentially improving performance significantly
16338c2ecf20Sopenharmony_ci	  over full virtualization.
16348c2ecf20Sopenharmony_ci
16358c2ecf20Sopenharmony_ciconfig PARAVIRT_TIME_ACCOUNTING
16368c2ecf20Sopenharmony_ci	bool "Paravirtual steal time accounting"
16378c2ecf20Sopenharmony_ci	select PARAVIRT
16388c2ecf20Sopenharmony_ci	help
16398c2ecf20Sopenharmony_ci	  Select this option to enable fine granularity task steal time
16408c2ecf20Sopenharmony_ci	  accounting. Time spent executing other tasks in parallel with
16418c2ecf20Sopenharmony_ci	  the current vCPU is discounted from the vCPU power. To account for
16428c2ecf20Sopenharmony_ci	  that, there can be a small performance impact.
16438c2ecf20Sopenharmony_ci
16448c2ecf20Sopenharmony_ci	  If in doubt, say N here.
16458c2ecf20Sopenharmony_ci
16468c2ecf20Sopenharmony_ciconfig XEN_DOM0
16478c2ecf20Sopenharmony_ci	def_bool y
16488c2ecf20Sopenharmony_ci	depends on XEN
16498c2ecf20Sopenharmony_ci
16508c2ecf20Sopenharmony_ciconfig XEN
16518c2ecf20Sopenharmony_ci	bool "Xen guest support on ARM"
16528c2ecf20Sopenharmony_ci	depends on ARM && AEABI && OF
16538c2ecf20Sopenharmony_ci	depends on CPU_V7 && !CPU_V6
16548c2ecf20Sopenharmony_ci	depends on !GENERIC_ATOMIC64
16558c2ecf20Sopenharmony_ci	depends on MMU
16568c2ecf20Sopenharmony_ci	select ARCH_DMA_ADDR_T_64BIT
16578c2ecf20Sopenharmony_ci	select ARM_PSCI
16588c2ecf20Sopenharmony_ci	select SWIOTLB
16598c2ecf20Sopenharmony_ci	select SWIOTLB_XEN
16608c2ecf20Sopenharmony_ci	select PARAVIRT
16618c2ecf20Sopenharmony_ci	help
16628c2ecf20Sopenharmony_ci	  Say Y if you want to run Linux in a Virtual Machine on Xen on ARM.
16638c2ecf20Sopenharmony_ci
16648c2ecf20Sopenharmony_ciconfig STACKPROTECTOR_PER_TASK
16658c2ecf20Sopenharmony_ci	bool "Use a unique stack canary value for each task"
16668c2ecf20Sopenharmony_ci	depends on GCC_PLUGINS && STACKPROTECTOR && SMP && !XIP_DEFLATED_DATA
16678c2ecf20Sopenharmony_ci	select GCC_PLUGIN_ARM_SSP_PER_TASK
16688c2ecf20Sopenharmony_ci	default y
16698c2ecf20Sopenharmony_ci	help
16708c2ecf20Sopenharmony_ci	  Due to the fact that GCC uses an ordinary symbol reference from
16718c2ecf20Sopenharmony_ci	  which to load the value of the stack canary, this value can only
16728c2ecf20Sopenharmony_ci	  change at reboot time on SMP systems, and all tasks running in the
16738c2ecf20Sopenharmony_ci	  kernel's address space are forced to use the same canary value for
16748c2ecf20Sopenharmony_ci	  the entire duration that the system is up.
16758c2ecf20Sopenharmony_ci
16768c2ecf20Sopenharmony_ci	  Enable this option to switch to a different method that uses a
16778c2ecf20Sopenharmony_ci	  different canary value for each task.
16788c2ecf20Sopenharmony_ci
16798c2ecf20Sopenharmony_ciconfig RELOCATABLE
16808c2ecf20Sopenharmony_ci	bool
16818c2ecf20Sopenharmony_ci	depends on !XIP_KERNEL && !JUMP_LABEL
16828c2ecf20Sopenharmony_ci	select HAVE_ARCH_PREL32_RELOCATIONS
16838c2ecf20Sopenharmony_ci
16848c2ecf20Sopenharmony_ciconfig RANDOMIZE_BASE
16858c2ecf20Sopenharmony_ci	bool "Randomize the address of the kernel image"
16868c2ecf20Sopenharmony_ci	depends on MMU && AUTO_ZRELADDR
16878c2ecf20Sopenharmony_ci	depends on !XIP_KERNEL && !ZBOOT_ROM && !JUMP_LABEL
16888c2ecf20Sopenharmony_ci	select RELOCATABLE
16898c2ecf20Sopenharmony_ci	select ARM_MODULE_PLTS if MODULES
16908c2ecf20Sopenharmony_ci	select MODULE_REL_CRCS if MODVERSIONS
16918c2ecf20Sopenharmony_ci	help
16928c2ecf20Sopenharmony_ci	  Randomizes the virtual and physical address at which the kernel
16938c2ecf20Sopenharmony_ci	  image is loaded, as a security feature that deters exploit attempts
16948c2ecf20Sopenharmony_ci	  relying on knowledge of the location of kernel internals.
16958c2ecf20Sopenharmony_ci
16968c2ecf20Sopenharmony_ciendmenu
16978c2ecf20Sopenharmony_ci
16988c2ecf20Sopenharmony_cimenu "Boot options"
16998c2ecf20Sopenharmony_ci
17008c2ecf20Sopenharmony_ciconfig USE_OF
17018c2ecf20Sopenharmony_ci	bool "Flattened Device Tree support"
17028c2ecf20Sopenharmony_ci	select IRQ_DOMAIN
17038c2ecf20Sopenharmony_ci	select OF
17048c2ecf20Sopenharmony_ci	help
17058c2ecf20Sopenharmony_ci	  Include support for flattened device tree machine descriptions.
17068c2ecf20Sopenharmony_ci
17078c2ecf20Sopenharmony_ciconfig ATAGS
17088c2ecf20Sopenharmony_ci	bool "Support for the traditional ATAGS boot data passing" if USE_OF
17098c2ecf20Sopenharmony_ci	default y
17108c2ecf20Sopenharmony_ci	help
17118c2ecf20Sopenharmony_ci	  This is the traditional way of passing data to the kernel at boot
17128c2ecf20Sopenharmony_ci	  time. If you are solely relying on the flattened device tree (or
17138c2ecf20Sopenharmony_ci	  the ARM_ATAG_DTB_COMPAT option) then you may unselect this option
17148c2ecf20Sopenharmony_ci	  to remove ATAGS support from your kernel binary.  If unsure,
17158c2ecf20Sopenharmony_ci	  leave this to y.
17168c2ecf20Sopenharmony_ci
17178c2ecf20Sopenharmony_ciconfig DEPRECATED_PARAM_STRUCT
17188c2ecf20Sopenharmony_ci	bool "Provide old way to pass kernel parameters"
17198c2ecf20Sopenharmony_ci	depends on ATAGS
17208c2ecf20Sopenharmony_ci	help
17218c2ecf20Sopenharmony_ci	  This was deprecated in 2001 and announced to live on for 5 years.
17228c2ecf20Sopenharmony_ci	  Some old boot loaders still use this way.
17238c2ecf20Sopenharmony_ci
17248c2ecf20Sopenharmony_ci# Compressed boot loader in ROM.  Yes, we really want to ask about
17258c2ecf20Sopenharmony_ci# TEXT and BSS so we preserve their values in the config files.
17268c2ecf20Sopenharmony_ciconfig ZBOOT_ROM_TEXT
17278c2ecf20Sopenharmony_ci	hex "Compressed ROM boot loader base address"
17288c2ecf20Sopenharmony_ci	default 0x0
17298c2ecf20Sopenharmony_ci	help
17308c2ecf20Sopenharmony_ci	  The physical address at which the ROM-able zImage is to be
17318c2ecf20Sopenharmony_ci	  placed in the target.  Platforms which normally make use of
17328c2ecf20Sopenharmony_ci	  ROM-able zImage formats normally set this to a suitable
17338c2ecf20Sopenharmony_ci	  value in their defconfig file.
17348c2ecf20Sopenharmony_ci
17358c2ecf20Sopenharmony_ci	  If ZBOOT_ROM is not enabled, this has no effect.
17368c2ecf20Sopenharmony_ci
17378c2ecf20Sopenharmony_ciconfig ZBOOT_ROM_BSS
17388c2ecf20Sopenharmony_ci	hex "Compressed ROM boot loader BSS address"
17398c2ecf20Sopenharmony_ci	default 0x0
17408c2ecf20Sopenharmony_ci	help
17418c2ecf20Sopenharmony_ci	  The base address of an area of read/write memory in the target
17428c2ecf20Sopenharmony_ci	  for the ROM-able zImage which must be available while the
17438c2ecf20Sopenharmony_ci	  decompressor is running. It must be large enough to hold the
17448c2ecf20Sopenharmony_ci	  entire decompressed kernel plus an additional 128 KiB.
17458c2ecf20Sopenharmony_ci	  Platforms which normally make use of ROM-able zImage formats
17468c2ecf20Sopenharmony_ci	  normally set this to a suitable value in their defconfig file.
17478c2ecf20Sopenharmony_ci
17488c2ecf20Sopenharmony_ci	  If ZBOOT_ROM is not enabled, this has no effect.
17498c2ecf20Sopenharmony_ci
17508c2ecf20Sopenharmony_ciconfig ZBOOT_ROM
17518c2ecf20Sopenharmony_ci	bool "Compressed boot loader in ROM/flash"
17528c2ecf20Sopenharmony_ci	depends on ZBOOT_ROM_TEXT != ZBOOT_ROM_BSS
17538c2ecf20Sopenharmony_ci	depends on !ARM_APPENDED_DTB && !XIP_KERNEL && !AUTO_ZRELADDR
17548c2ecf20Sopenharmony_ci	help
17558c2ecf20Sopenharmony_ci	  Say Y here if you intend to execute your compressed kernel image
17568c2ecf20Sopenharmony_ci	  (zImage) directly from ROM or flash.  If unsure, say N.
17578c2ecf20Sopenharmony_ci
17588c2ecf20Sopenharmony_ciconfig ARM_APPENDED_DTB
17598c2ecf20Sopenharmony_ci	bool "Use appended device tree blob to zImage (EXPERIMENTAL)"
17608c2ecf20Sopenharmony_ci	depends on OF
17618c2ecf20Sopenharmony_ci	help
17628c2ecf20Sopenharmony_ci	  With this option, the boot code will look for a device tree binary
17638c2ecf20Sopenharmony_ci	  (DTB) appended to zImage
17648c2ecf20Sopenharmony_ci	  (e.g. cat zImage <filename>.dtb > zImage_w_dtb).
17658c2ecf20Sopenharmony_ci
17668c2ecf20Sopenharmony_ci	  This is meant as a backward compatibility convenience for those
17678c2ecf20Sopenharmony_ci	  systems with a bootloader that can't be upgraded to accommodate
17688c2ecf20Sopenharmony_ci	  the documented boot protocol using a device tree.
17698c2ecf20Sopenharmony_ci
17708c2ecf20Sopenharmony_ci	  Beware that there is very little in terms of protection against
17718c2ecf20Sopenharmony_ci	  this option being confused by leftover garbage in memory that might
17728c2ecf20Sopenharmony_ci	  look like a DTB header after a reboot if no actual DTB is appended
17738c2ecf20Sopenharmony_ci	  to zImage.  Do not leave this option active in a production kernel
17748c2ecf20Sopenharmony_ci	  if you don't intend to always append a DTB.  Proper passing of the
17758c2ecf20Sopenharmony_ci	  location into r2 of a bootloader provided DTB is always preferable
17768c2ecf20Sopenharmony_ci	  to this option.
17778c2ecf20Sopenharmony_ci
17788c2ecf20Sopenharmony_ciconfig ARM_ATAG_DTB_COMPAT
17798c2ecf20Sopenharmony_ci	bool "Supplement the appended DTB with traditional ATAG information"
17808c2ecf20Sopenharmony_ci	depends on ARM_APPENDED_DTB
17818c2ecf20Sopenharmony_ci	help
17828c2ecf20Sopenharmony_ci	  Some old bootloaders can't be updated to a DTB capable one, yet
17838c2ecf20Sopenharmony_ci	  they provide ATAGs with memory configuration, the ramdisk address,
17848c2ecf20Sopenharmony_ci	  the kernel cmdline string, etc.  Such information is dynamically
17858c2ecf20Sopenharmony_ci	  provided by the bootloader and can't always be stored in a static
17868c2ecf20Sopenharmony_ci	  DTB.  To allow a device tree enabled kernel to be used with such
17878c2ecf20Sopenharmony_ci	  bootloaders, this option allows zImage to extract the information
17888c2ecf20Sopenharmony_ci	  from the ATAG list and store it at run time into the appended DTB.
17898c2ecf20Sopenharmony_ci
17908c2ecf20Sopenharmony_cichoice
17918c2ecf20Sopenharmony_ci	prompt "Kernel command line type" if ARM_ATAG_DTB_COMPAT
17928c2ecf20Sopenharmony_ci	default ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER
17938c2ecf20Sopenharmony_ci
17948c2ecf20Sopenharmony_ciconfig ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER
17958c2ecf20Sopenharmony_ci	bool "Use bootloader kernel arguments if available"
17968c2ecf20Sopenharmony_ci	help
17978c2ecf20Sopenharmony_ci	  Uses the command-line options passed by the boot loader instead of
17988c2ecf20Sopenharmony_ci	  the device tree bootargs property. If the boot loader doesn't provide
17998c2ecf20Sopenharmony_ci	  any, the device tree bootargs property will be used.
18008c2ecf20Sopenharmony_ci
18018c2ecf20Sopenharmony_ciconfig ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND
18028c2ecf20Sopenharmony_ci	bool "Extend with bootloader kernel arguments"
18038c2ecf20Sopenharmony_ci	help
18048c2ecf20Sopenharmony_ci	  The command-line arguments provided by the boot loader will be
18058c2ecf20Sopenharmony_ci	  appended to the the device tree bootargs property.
18068c2ecf20Sopenharmony_ci
18078c2ecf20Sopenharmony_ciendchoice
18088c2ecf20Sopenharmony_ci
18098c2ecf20Sopenharmony_ciconfig CMDLINE
18108c2ecf20Sopenharmony_ci	string "Default kernel command string"
18118c2ecf20Sopenharmony_ci	default ""
18128c2ecf20Sopenharmony_ci	help
18138c2ecf20Sopenharmony_ci	  On some architectures (EBSA110 and CATS), there is currently no way
18148c2ecf20Sopenharmony_ci	  for the boot loader to pass arguments to the kernel. For these
18158c2ecf20Sopenharmony_ci	  architectures, you should supply some command-line options at build
18168c2ecf20Sopenharmony_ci	  time by entering them here. As a minimum, you should specify the
18178c2ecf20Sopenharmony_ci	  memory size and the root device (e.g., mem=64M root=/dev/nfs).
18188c2ecf20Sopenharmony_ci
18198c2ecf20Sopenharmony_cichoice
18208c2ecf20Sopenharmony_ci	prompt "Kernel command line type" if CMDLINE != ""
18218c2ecf20Sopenharmony_ci	default CMDLINE_FROM_BOOTLOADER
18228c2ecf20Sopenharmony_ci
18238c2ecf20Sopenharmony_ciconfig CMDLINE_FROM_BOOTLOADER
18248c2ecf20Sopenharmony_ci	bool "Use bootloader kernel arguments if available"
18258c2ecf20Sopenharmony_ci	help
18268c2ecf20Sopenharmony_ci	  Uses the command-line options passed by the boot loader. If
18278c2ecf20Sopenharmony_ci	  the boot loader doesn't provide any, the default kernel command
18288c2ecf20Sopenharmony_ci	  string provided in CMDLINE will be used.
18298c2ecf20Sopenharmony_ci
18308c2ecf20Sopenharmony_ciconfig CMDLINE_EXTEND
18318c2ecf20Sopenharmony_ci	bool "Extend bootloader kernel arguments"
18328c2ecf20Sopenharmony_ci	help
18338c2ecf20Sopenharmony_ci	  The command-line arguments provided by the boot loader will be
18348c2ecf20Sopenharmony_ci	  appended to the default kernel command string.
18358c2ecf20Sopenharmony_ci
18368c2ecf20Sopenharmony_ciconfig CMDLINE_FORCE
18378c2ecf20Sopenharmony_ci	bool "Always use the default kernel command string"
18388c2ecf20Sopenharmony_ci	help
18398c2ecf20Sopenharmony_ci	  Always use the default kernel command string, even if the boot
18408c2ecf20Sopenharmony_ci	  loader passes other arguments to the kernel.
18418c2ecf20Sopenharmony_ci	  This is useful if you cannot or don't want to change the
18428c2ecf20Sopenharmony_ci	  command-line options your boot loader passes to the kernel.
18438c2ecf20Sopenharmony_ciendchoice
18448c2ecf20Sopenharmony_ci
18458c2ecf20Sopenharmony_ciconfig XIP_KERNEL
18468c2ecf20Sopenharmony_ci	bool "Kernel Execute-In-Place from ROM"
18478c2ecf20Sopenharmony_ci	depends on !ARM_LPAE && !ARCH_MULTIPLATFORM
18488c2ecf20Sopenharmony_ci	help
18498c2ecf20Sopenharmony_ci	  Execute-In-Place allows the kernel to run from non-volatile storage
18508c2ecf20Sopenharmony_ci	  directly addressable by the CPU, such as NOR flash. This saves RAM
18518c2ecf20Sopenharmony_ci	  space since the text section of the kernel is not loaded from flash
18528c2ecf20Sopenharmony_ci	  to RAM.  Read-write sections, such as the data section and stack,
18538c2ecf20Sopenharmony_ci	  are still copied to RAM.  The XIP kernel is not compressed since
18548c2ecf20Sopenharmony_ci	  it has to run directly from flash, so it will take more space to
18558c2ecf20Sopenharmony_ci	  store it.  The flash address used to link the kernel object files,
18568c2ecf20Sopenharmony_ci	  and for storing it, is configuration dependent. Therefore, if you
18578c2ecf20Sopenharmony_ci	  say Y here, you must know the proper physical address where to
18588c2ecf20Sopenharmony_ci	  store the kernel image depending on your own flash memory usage.
18598c2ecf20Sopenharmony_ci
18608c2ecf20Sopenharmony_ci	  Also note that the make target becomes "make xipImage" rather than
18618c2ecf20Sopenharmony_ci	  "make zImage" or "make Image".  The final kernel binary to put in
18628c2ecf20Sopenharmony_ci	  ROM memory will be arch/arm/boot/xipImage.
18638c2ecf20Sopenharmony_ci
18648c2ecf20Sopenharmony_ci	  If unsure, say N.
18658c2ecf20Sopenharmony_ci
18668c2ecf20Sopenharmony_ciconfig XIP_PHYS_ADDR
18678c2ecf20Sopenharmony_ci	hex "XIP Kernel Physical Location"
18688c2ecf20Sopenharmony_ci	depends on XIP_KERNEL
18698c2ecf20Sopenharmony_ci	default "0x00080000"
18708c2ecf20Sopenharmony_ci	help
18718c2ecf20Sopenharmony_ci	  This is the physical address in your flash memory the kernel will
18728c2ecf20Sopenharmony_ci	  be linked for and stored to.  This address is dependent on your
18738c2ecf20Sopenharmony_ci	  own flash usage.
18748c2ecf20Sopenharmony_ci
18758c2ecf20Sopenharmony_ciconfig XIP_DEFLATED_DATA
18768c2ecf20Sopenharmony_ci	bool "Store kernel .data section compressed in ROM"
18778c2ecf20Sopenharmony_ci	depends on XIP_KERNEL
18788c2ecf20Sopenharmony_ci	select ZLIB_INFLATE
18798c2ecf20Sopenharmony_ci	help
18808c2ecf20Sopenharmony_ci	  Before the kernel is actually executed, its .data section has to be
18818c2ecf20Sopenharmony_ci	  copied to RAM from ROM. This option allows for storing that data
18828c2ecf20Sopenharmony_ci	  in compressed form and decompressed to RAM rather than merely being
18838c2ecf20Sopenharmony_ci	  copied, saving some precious ROM space. A possible drawback is a
18848c2ecf20Sopenharmony_ci	  slightly longer boot delay.
18858c2ecf20Sopenharmony_ci
18868c2ecf20Sopenharmony_ciconfig KEXEC
18878c2ecf20Sopenharmony_ci	bool "Kexec system call (EXPERIMENTAL)"
18888c2ecf20Sopenharmony_ci	depends on (!SMP || PM_SLEEP_SMP)
18898c2ecf20Sopenharmony_ci	depends on MMU
18908c2ecf20Sopenharmony_ci	select KEXEC_CORE
18918c2ecf20Sopenharmony_ci	help
18928c2ecf20Sopenharmony_ci	  kexec is a system call that implements the ability to shutdown your
18938c2ecf20Sopenharmony_ci	  current kernel, and to start another kernel.  It is like a reboot
18948c2ecf20Sopenharmony_ci	  but it is independent of the system firmware.   And like a reboot
18958c2ecf20Sopenharmony_ci	  you can start any kernel with it, not just Linux.
18968c2ecf20Sopenharmony_ci
18978c2ecf20Sopenharmony_ci	  It is an ongoing process to be certain the hardware in a machine
18988c2ecf20Sopenharmony_ci	  is properly shutdown, so do not be surprised if this code does not
18998c2ecf20Sopenharmony_ci	  initially work for you.
19008c2ecf20Sopenharmony_ci
19018c2ecf20Sopenharmony_ciconfig ATAGS_PROC
19028c2ecf20Sopenharmony_ci	bool "Export atags in procfs"
19038c2ecf20Sopenharmony_ci	depends on ATAGS && KEXEC
19048c2ecf20Sopenharmony_ci	default y
19058c2ecf20Sopenharmony_ci	help
19068c2ecf20Sopenharmony_ci	  Should the atags used to boot the kernel be exported in an "atags"
19078c2ecf20Sopenharmony_ci	  file in procfs. Useful with kexec.
19088c2ecf20Sopenharmony_ci
19098c2ecf20Sopenharmony_ciconfig CRASH_DUMP
19108c2ecf20Sopenharmony_ci	bool "Build kdump crash kernel (EXPERIMENTAL)"
19118c2ecf20Sopenharmony_ci	help
19128c2ecf20Sopenharmony_ci	  Generate crash dump after being started by kexec. This should
19138c2ecf20Sopenharmony_ci	  be normally only set in special crash dump kernels which are
19148c2ecf20Sopenharmony_ci	  loaded in the main kernel with kexec-tools into a specially
19158c2ecf20Sopenharmony_ci	  reserved region and then later executed after a crash by
19168c2ecf20Sopenharmony_ci	  kdump/kexec. The crash dump kernel must be compiled to a
19178c2ecf20Sopenharmony_ci	  memory address not used by the main kernel
19188c2ecf20Sopenharmony_ci
19198c2ecf20Sopenharmony_ci	  For more details see Documentation/admin-guide/kdump/kdump.rst
19208c2ecf20Sopenharmony_ci
19218c2ecf20Sopenharmony_ciconfig AUTO_ZRELADDR
19228c2ecf20Sopenharmony_ci	bool "Auto calculation of the decompressed kernel image address"
19238c2ecf20Sopenharmony_ci	help
19248c2ecf20Sopenharmony_ci	  ZRELADDR is the physical address where the decompressed kernel
19258c2ecf20Sopenharmony_ci	  image will be placed. If AUTO_ZRELADDR is selected, the address
19268c2ecf20Sopenharmony_ci	  will be determined at run-time by masking the current IP with
19278c2ecf20Sopenharmony_ci	  0xf8000000. This assumes the zImage being placed in the first 128MB
19288c2ecf20Sopenharmony_ci	  from start of memory.
19298c2ecf20Sopenharmony_ci
19308c2ecf20Sopenharmony_ciconfig EFI_STUB
19318c2ecf20Sopenharmony_ci	bool
19328c2ecf20Sopenharmony_ci
19338c2ecf20Sopenharmony_ciconfig EFI
19348c2ecf20Sopenharmony_ci	bool "UEFI runtime support"
19358c2ecf20Sopenharmony_ci	depends on OF && !CPU_BIG_ENDIAN && MMU && AUTO_ZRELADDR && !XIP_KERNEL
19368c2ecf20Sopenharmony_ci	select UCS2_STRING
19378c2ecf20Sopenharmony_ci	select EFI_PARAMS_FROM_FDT
19388c2ecf20Sopenharmony_ci	select EFI_STUB
19398c2ecf20Sopenharmony_ci	select EFI_GENERIC_STUB
19408c2ecf20Sopenharmony_ci	select EFI_RUNTIME_WRAPPERS
19418c2ecf20Sopenharmony_ci	help
19428c2ecf20Sopenharmony_ci	  This option provides support for runtime services provided
19438c2ecf20Sopenharmony_ci	  by UEFI firmware (such as non-volatile variables, realtime
19448c2ecf20Sopenharmony_ci	  clock, and platform reset). A UEFI stub is also provided to
19458c2ecf20Sopenharmony_ci	  allow the kernel to be booted as an EFI application. This
19468c2ecf20Sopenharmony_ci	  is only useful for kernels that may run on systems that have
19478c2ecf20Sopenharmony_ci	  UEFI firmware.
19488c2ecf20Sopenharmony_ci
19498c2ecf20Sopenharmony_ciconfig DMI
19508c2ecf20Sopenharmony_ci	bool "Enable support for SMBIOS (DMI) tables"
19518c2ecf20Sopenharmony_ci	depends on EFI
19528c2ecf20Sopenharmony_ci	default y
19538c2ecf20Sopenharmony_ci	help
19548c2ecf20Sopenharmony_ci	  This enables SMBIOS/DMI feature for systems.
19558c2ecf20Sopenharmony_ci
19568c2ecf20Sopenharmony_ci	  This option is only useful on systems that have UEFI firmware.
19578c2ecf20Sopenharmony_ci	  However, even with this option, the resultant kernel should
19588c2ecf20Sopenharmony_ci	  continue to boot on existing non-UEFI platforms.
19598c2ecf20Sopenharmony_ci
19608c2ecf20Sopenharmony_ci	  NOTE: This does *NOT* enable or encourage the use of DMI quirks,
19618c2ecf20Sopenharmony_ci	  i.e., the the practice of identifying the platform via DMI to
19628c2ecf20Sopenharmony_ci	  decide whether certain workarounds for buggy hardware and/or
19638c2ecf20Sopenharmony_ci	  firmware need to be enabled. This would require the DMI subsystem
19648c2ecf20Sopenharmony_ci	  to be enabled much earlier than we do on ARM, which is non-trivial.
19658c2ecf20Sopenharmony_ci
19668c2ecf20Sopenharmony_ciendmenu
19678c2ecf20Sopenharmony_ci
19688c2ecf20Sopenharmony_cimenu "CPU Power Management"
19698c2ecf20Sopenharmony_ci
19708c2ecf20Sopenharmony_cisource "drivers/cpufreq/Kconfig"
19718c2ecf20Sopenharmony_ci
19728c2ecf20Sopenharmony_cisource "drivers/cpuidle/Kconfig"
19738c2ecf20Sopenharmony_ci
19748c2ecf20Sopenharmony_ciendmenu
19758c2ecf20Sopenharmony_ci
19768c2ecf20Sopenharmony_cimenu "Floating point emulation"
19778c2ecf20Sopenharmony_ci
19788c2ecf20Sopenharmony_cicomment "At least one emulation must be selected"
19798c2ecf20Sopenharmony_ci
19808c2ecf20Sopenharmony_ciconfig FPE_NWFPE
19818c2ecf20Sopenharmony_ci	bool "NWFPE math emulation"
19828c2ecf20Sopenharmony_ci	depends on (!AEABI || OABI_COMPAT) && !THUMB2_KERNEL
19838c2ecf20Sopenharmony_ci	help
19848c2ecf20Sopenharmony_ci	  Say Y to include the NWFPE floating point emulator in the kernel.
19858c2ecf20Sopenharmony_ci	  This is necessary to run most binaries. Linux does not currently
19868c2ecf20Sopenharmony_ci	  support floating point hardware so you need to say Y here even if
19878c2ecf20Sopenharmony_ci	  your machine has an FPA or floating point co-processor podule.
19888c2ecf20Sopenharmony_ci
19898c2ecf20Sopenharmony_ci	  You may say N here if you are going to load the Acorn FPEmulator
19908c2ecf20Sopenharmony_ci	  early in the bootup.
19918c2ecf20Sopenharmony_ci
19928c2ecf20Sopenharmony_ciconfig FPE_NWFPE_XP
19938c2ecf20Sopenharmony_ci	bool "Support extended precision"
19948c2ecf20Sopenharmony_ci	depends on FPE_NWFPE
19958c2ecf20Sopenharmony_ci	help
19968c2ecf20Sopenharmony_ci	  Say Y to include 80-bit support in the kernel floating-point
19978c2ecf20Sopenharmony_ci	  emulator.  Otherwise, only 32 and 64-bit support is compiled in.
19988c2ecf20Sopenharmony_ci	  Note that gcc does not generate 80-bit operations by default,
19998c2ecf20Sopenharmony_ci	  so in most cases this option only enlarges the size of the
20008c2ecf20Sopenharmony_ci	  floating point emulator without any good reason.
20018c2ecf20Sopenharmony_ci
20028c2ecf20Sopenharmony_ci	  You almost surely want to say N here.
20038c2ecf20Sopenharmony_ci
20048c2ecf20Sopenharmony_ciconfig FPE_FASTFPE
20058c2ecf20Sopenharmony_ci	bool "FastFPE math emulation (EXPERIMENTAL)"
20068c2ecf20Sopenharmony_ci	depends on (!AEABI || OABI_COMPAT) && !CPU_32v3
20078c2ecf20Sopenharmony_ci	help
20088c2ecf20Sopenharmony_ci	  Say Y here to include the FAST floating point emulator in the kernel.
20098c2ecf20Sopenharmony_ci	  This is an experimental much faster emulator which now also has full
20108c2ecf20Sopenharmony_ci	  precision for the mantissa.  It does not support any exceptions.
20118c2ecf20Sopenharmony_ci	  It is very simple, and approximately 3-6 times faster than NWFPE.
20128c2ecf20Sopenharmony_ci
20138c2ecf20Sopenharmony_ci	  It should be sufficient for most programs.  It may be not suitable
20148c2ecf20Sopenharmony_ci	  for scientific calculations, but you have to check this for yourself.
20158c2ecf20Sopenharmony_ci	  If you do not feel you need a faster FP emulation you should better
20168c2ecf20Sopenharmony_ci	  choose NWFPE.
20178c2ecf20Sopenharmony_ci
20188c2ecf20Sopenharmony_ciconfig VFP
20198c2ecf20Sopenharmony_ci	bool "VFP-format floating point maths"
20208c2ecf20Sopenharmony_ci	depends on CPU_V6 || CPU_V6K || CPU_ARM926T || CPU_V7 || CPU_FEROCEON
20218c2ecf20Sopenharmony_ci	help
20228c2ecf20Sopenharmony_ci	  Say Y to include VFP support code in the kernel. This is needed
20238c2ecf20Sopenharmony_ci	  if your hardware includes a VFP unit.
20248c2ecf20Sopenharmony_ci
20258c2ecf20Sopenharmony_ci	  Please see <file:Documentation/arm/vfp/release-notes.rst> for
20268c2ecf20Sopenharmony_ci	  release notes and additional status information.
20278c2ecf20Sopenharmony_ci
20288c2ecf20Sopenharmony_ci	  Say N if your target does not have VFP hardware.
20298c2ecf20Sopenharmony_ci
20308c2ecf20Sopenharmony_ciconfig VFPv3
20318c2ecf20Sopenharmony_ci	bool
20328c2ecf20Sopenharmony_ci	depends on VFP
20338c2ecf20Sopenharmony_ci	default y if CPU_V7
20348c2ecf20Sopenharmony_ci
20358c2ecf20Sopenharmony_ciconfig NEON
20368c2ecf20Sopenharmony_ci	bool "Advanced SIMD (NEON) Extension support"
20378c2ecf20Sopenharmony_ci	depends on VFPv3 && CPU_V7
20388c2ecf20Sopenharmony_ci	help
20398c2ecf20Sopenharmony_ci	  Say Y to include support code for NEON, the ARMv7 Advanced SIMD
20408c2ecf20Sopenharmony_ci	  Extension.
20418c2ecf20Sopenharmony_ci
20428c2ecf20Sopenharmony_ciconfig KERNEL_MODE_NEON
20438c2ecf20Sopenharmony_ci	bool "Support for NEON in kernel mode"
20448c2ecf20Sopenharmony_ci	depends on NEON && AEABI
20458c2ecf20Sopenharmony_ci	help
20468c2ecf20Sopenharmony_ci	  Say Y to include support for NEON in kernel mode.
20478c2ecf20Sopenharmony_ci
20488c2ecf20Sopenharmony_ciendmenu
20498c2ecf20Sopenharmony_ci
20508c2ecf20Sopenharmony_cimenu "Power management options"
20518c2ecf20Sopenharmony_ci
20528c2ecf20Sopenharmony_cisource "kernel/power/Kconfig"
20538c2ecf20Sopenharmony_ci
20548c2ecf20Sopenharmony_ciconfig ARCH_SUSPEND_POSSIBLE
20558c2ecf20Sopenharmony_ci	depends on CPU_ARM920T || CPU_ARM926T || CPU_FEROCEON || CPU_SA1100 || \
20568c2ecf20Sopenharmony_ci		CPU_V6 || CPU_V6K || CPU_V7 || CPU_V7M || CPU_XSC3 || CPU_XSCALE || CPU_MOHAWK
20578c2ecf20Sopenharmony_ci	def_bool y
20588c2ecf20Sopenharmony_ci
20598c2ecf20Sopenharmony_ciconfig ARM_CPU_SUSPEND
20608c2ecf20Sopenharmony_ci	def_bool PM_SLEEP || BL_SWITCHER || ARM_PSCI_FW
20618c2ecf20Sopenharmony_ci	depends on ARCH_SUSPEND_POSSIBLE
20628c2ecf20Sopenharmony_ci
20638c2ecf20Sopenharmony_ciconfig ARCH_HIBERNATION_POSSIBLE
20648c2ecf20Sopenharmony_ci	bool
20658c2ecf20Sopenharmony_ci	depends on MMU
20668c2ecf20Sopenharmony_ci	default y if ARCH_SUSPEND_POSSIBLE
20678c2ecf20Sopenharmony_ci
20688c2ecf20Sopenharmony_ciendmenu
20698c2ecf20Sopenharmony_ci
20708c2ecf20Sopenharmony_cisource "drivers/firmware/Kconfig"
20718c2ecf20Sopenharmony_ci
20728c2ecf20Sopenharmony_ciif CRYPTO
20738c2ecf20Sopenharmony_cisource "arch/arm/crypto/Kconfig"
20748c2ecf20Sopenharmony_ciendif
20758c2ecf20Sopenharmony_ci
20768c2ecf20Sopenharmony_cisource "arch/arm/Kconfig.assembler"
2077