1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyunconfig ARM 3*4882a593Smuzhiyun bool 4*4882a593Smuzhiyun default y 5*4882a593Smuzhiyun select ARCH_32BIT_OFF_T 6*4882a593Smuzhiyun select ARCH_HAS_BINFMT_FLAT 7*4882a593Smuzhiyun select ARCH_HAS_DEBUG_VIRTUAL if MMU 8*4882a593Smuzhiyun select ARCH_HAS_DEVMEM_IS_ALLOWED 9*4882a593Smuzhiyun select ARCH_HAS_DMA_WRITE_COMBINE if !ARM_DMA_MEM_BUFFERABLE 10*4882a593Smuzhiyun select ARCH_HAS_ELF_RANDOMIZE 11*4882a593Smuzhiyun select ARCH_HAS_FORTIFY_SOURCE 12*4882a593Smuzhiyun select ARCH_HAS_KEEPINITRD 13*4882a593Smuzhiyun select ARCH_HAS_KCOV 14*4882a593Smuzhiyun select ARCH_HAS_MEMBARRIER_SYNC_CORE 15*4882a593Smuzhiyun select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 16*4882a593Smuzhiyun select ARCH_HAS_PTE_SPECIAL if ARM_LPAE 17*4882a593Smuzhiyun select ARCH_HAS_PHYS_TO_DMA 18*4882a593Smuzhiyun select ARCH_HAS_SETUP_DMA_OPS 19*4882a593Smuzhiyun select ARCH_HAS_SET_MEMORY 20*4882a593Smuzhiyun select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL 21*4882a593Smuzhiyun select ARCH_HAS_STRICT_MODULE_RWX if MMU && (!ROCKCHIP_MINI_KERNEL || STRICT_KERNEL_RWX) 22*4882a593Smuzhiyun select ARCH_HAS_SYNC_DMA_FOR_DEVICE if SWIOTLB 23*4882a593Smuzhiyun select ARCH_HAS_SYNC_DMA_FOR_CPU if SWIOTLB 24*4882a593Smuzhiyun select ARCH_HAS_TEARDOWN_DMA_OPS if MMU 25*4882a593Smuzhiyun select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST 26*4882a593Smuzhiyun select ARCH_HAVE_CUSTOM_GPIO_H 27*4882a593Smuzhiyun select ARCH_HAS_GCOV_PROFILE_ALL 28*4882a593Smuzhiyun select ARCH_KEEP_MEMBLOCK 29*4882a593Smuzhiyun select ARCH_MIGHT_HAVE_PC_PARPORT 30*4882a593Smuzhiyun select ARCH_NO_SG_CHAIN if !ARM_HAS_SG_CHAIN 31*4882a593Smuzhiyun select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX 32*4882a593Smuzhiyun select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT if CPU_V7 33*4882a593Smuzhiyun select ARCH_SUPPORTS_ATOMIC_RMW 34*4882a593Smuzhiyun select ARCH_USE_BUILTIN_BSWAP 35*4882a593Smuzhiyun select ARCH_USE_CMPXCHG_LOCKREF 36*4882a593Smuzhiyun select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU 37*4882a593Smuzhiyun select ARCH_WANT_IPC_PARSE_VERSION 38*4882a593Smuzhiyun select ARCH_WANT_LD_ORPHAN_WARN 39*4882a593Smuzhiyun select BINFMT_FLAT_ARGVP_ENVP_ON_STACK 40*4882a593Smuzhiyun select BUILDTIME_TABLE_SORT if MMU 41*4882a593Smuzhiyun select CLONE_BACKWARDS 42*4882a593Smuzhiyun select CPU_PM if SUSPEND || CPU_IDLE 43*4882a593Smuzhiyun select DCACHE_WORD_ACCESS if HAVE_EFFICIENT_UNALIGNED_ACCESS 44*4882a593Smuzhiyun select DMA_DECLARE_COHERENT 45*4882a593Smuzhiyun select DMA_OPS 46*4882a593Smuzhiyun select DMA_REMAP if MMU 47*4882a593Smuzhiyun select EDAC_SUPPORT 48*4882a593Smuzhiyun select EDAC_ATOMIC_SCRUB 49*4882a593Smuzhiyun select GENERIC_ALLOCATOR 50*4882a593Smuzhiyun select GENERIC_ARCH_TOPOLOGY if ARM_CPU_TOPOLOGY 51*4882a593Smuzhiyun select GENERIC_ATOMIC64 if CPU_V7M || CPU_V6 || !CPU_32v6K || !AEABI 52*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS_BROADCAST if SMP 53*4882a593Smuzhiyun select GENERIC_IRQ_IPI if SMP 54*4882a593Smuzhiyun select ARCH_WANTS_IRQ_RAW if GENERIC_IRQ_IPI 55*4882a593Smuzhiyun select GENERIC_CPU_AUTOPROBE 56*4882a593Smuzhiyun select GENERIC_EARLY_IOREMAP 57*4882a593Smuzhiyun select GENERIC_IDLE_POLL_SETUP 58*4882a593Smuzhiyun select GENERIC_IRQ_PROBE 59*4882a593Smuzhiyun select GENERIC_IRQ_SHOW 60*4882a593Smuzhiyun select GENERIC_IRQ_SHOW_LEVEL 61*4882a593Smuzhiyun select GENERIC_PCI_IOMAP 62*4882a593Smuzhiyun select GENERIC_SCHED_CLOCK 63*4882a593Smuzhiyun select GENERIC_SMP_IDLE_THREAD 64*4882a593Smuzhiyun select GENERIC_STRNCPY_FROM_USER 65*4882a593Smuzhiyun select GENERIC_STRNLEN_USER 66*4882a593Smuzhiyun select HANDLE_DOMAIN_IRQ 67*4882a593Smuzhiyun select HARDIRQS_SW_RESEND 68*4882a593Smuzhiyun select HAVE_ARCH_AUDITSYSCALL if AEABI && !OABI_COMPAT 69*4882a593Smuzhiyun select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 70*4882a593Smuzhiyun select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU 71*4882a593Smuzhiyun select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU 72*4882a593Smuzhiyun select HAVE_ARCH_MMAP_RND_BITS if MMU 73*4882a593Smuzhiyun select HAVE_ARCH_SECCOMP 74*4882a593Smuzhiyun select HAVE_ARCH_SECCOMP_FILTER if AEABI && !OABI_COMPAT 75*4882a593Smuzhiyun select HAVE_ARCH_THREAD_STRUCT_WHITELIST 76*4882a593Smuzhiyun select HAVE_ARCH_TRACEHOOK 77*4882a593Smuzhiyun select HAVE_ARM_SMCCC if CPU_V7 78*4882a593Smuzhiyun select HAVE_EBPF_JIT if !CPU_ENDIAN_BE32 79*4882a593Smuzhiyun select HAVE_CONTEXT_TRACKING 80*4882a593Smuzhiyun select HAVE_C_RECORDMCOUNT 81*4882a593Smuzhiyun select HAVE_DEBUG_KMEMLEAK if !XIP_KERNEL 82*4882a593Smuzhiyun select HAVE_DMA_CONTIGUOUS if MMU 83*4882a593Smuzhiyun select HAVE_DYNAMIC_FTRACE if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU 84*4882a593Smuzhiyun select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE 85*4882a593Smuzhiyun select HAVE_EFFICIENT_UNALIGNED_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && MMU 86*4882a593Smuzhiyun select HAVE_EXIT_THREAD 87*4882a593Smuzhiyun select HAVE_FAST_GUP if ARM_LPAE 88*4882a593Smuzhiyun select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL 89*4882a593Smuzhiyun select HAVE_FUNCTION_GRAPH_TRACER if !THUMB2_KERNEL && !CC_IS_CLANG 90*4882a593Smuzhiyun select HAVE_FUNCTION_TRACER if !XIP_KERNEL 91*4882a593Smuzhiyun select HAVE_FUTEX_CMPXCHG if FUTEX 92*4882a593Smuzhiyun select HAVE_GCC_PLUGINS 93*4882a593Smuzhiyun select HAVE_HW_BREAKPOINT if PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7) 94*4882a593Smuzhiyun select HAVE_IDE if PCI || ISA || PCMCIA 95*4882a593Smuzhiyun select HAVE_IRQ_TIME_ACCOUNTING 96*4882a593Smuzhiyun select HAVE_KERNEL_GZIP 97*4882a593Smuzhiyun select HAVE_KERNEL_LZ4 98*4882a593Smuzhiyun select HAVE_KERNEL_LZMA 99*4882a593Smuzhiyun select HAVE_KERNEL_LZO 100*4882a593Smuzhiyun select HAVE_KERNEL_XZ 101*4882a593Smuzhiyun select HAVE_KPROBES if !XIP_KERNEL && !CPU_ENDIAN_BE32 && !CPU_V7M 102*4882a593Smuzhiyun select HAVE_KRETPROBES if HAVE_KPROBES 103*4882a593Smuzhiyun select HAVE_MOD_ARCH_SPECIFIC 104*4882a593Smuzhiyun select HAVE_NMI 105*4882a593Smuzhiyun select HAVE_OPROFILE if HAVE_PERF_EVENTS 106*4882a593Smuzhiyun select HAVE_OPTPROBES if !THUMB2_KERNEL 107*4882a593Smuzhiyun select HAVE_PERF_EVENTS 108*4882a593Smuzhiyun select HAVE_PERF_REGS 109*4882a593Smuzhiyun select HAVE_PERF_USER_STACK_DUMP 110*4882a593Smuzhiyun select MMU_GATHER_RCU_TABLE_FREE if SMP && ARM_LPAE 111*4882a593Smuzhiyun select HAVE_REGS_AND_STACK_ACCESS_API 112*4882a593Smuzhiyun select HAVE_RSEQ 113*4882a593Smuzhiyun select HAVE_STACKPROTECTOR 114*4882a593Smuzhiyun select HAVE_SYSCALL_TRACEPOINTS 115*4882a593Smuzhiyun select HAVE_UID16 116*4882a593Smuzhiyun select HAVE_VIRT_CPU_ACCOUNTING_GEN 117*4882a593Smuzhiyun select IRQ_FORCED_THREADING 118*4882a593Smuzhiyun select MODULES_USE_ELF_REL 119*4882a593Smuzhiyun select NEED_DMA_MAP_STATE 120*4882a593Smuzhiyun select OF_EARLY_FLATTREE if OF 121*4882a593Smuzhiyun select OLD_SIGACTION 122*4882a593Smuzhiyun select OLD_SIGSUSPEND3 123*4882a593Smuzhiyun select PCI_SYSCALL if PCI 124*4882a593Smuzhiyun select PERF_USE_VMALLOC 125*4882a593Smuzhiyun select RTC_LIB 126*4882a593Smuzhiyun select SET_FS 127*4882a593Smuzhiyun select SYS_SUPPORTS_APM_EMULATION 128*4882a593Smuzhiyun # Above selects are sorted alphabetically; please add new ones 129*4882a593Smuzhiyun # according to that. Thanks. 130*4882a593Smuzhiyun help 131*4882a593Smuzhiyun The ARM series is a line of low-power-consumption RISC chip designs 132*4882a593Smuzhiyun licensed by ARM Ltd and targeted at embedded applications and 133*4882a593Smuzhiyun handhelds such as the Compaq IPAQ. ARM-based PCs are no longer 134*4882a593Smuzhiyun manufactured, but legacy ARM-based PC hardware remains popular in 135*4882a593Smuzhiyun Europe. There is an ARM Linux project with a web page at 136*4882a593Smuzhiyun <http://www.arm.linux.org.uk/>. 137*4882a593Smuzhiyun 138*4882a593Smuzhiyunconfig ARM_HAS_SG_CHAIN 139*4882a593Smuzhiyun bool 140*4882a593Smuzhiyun 141*4882a593Smuzhiyunconfig ARM_DMA_USE_IOMMU 142*4882a593Smuzhiyun bool 143*4882a593Smuzhiyun select ARM_HAS_SG_CHAIN 144*4882a593Smuzhiyun select NEED_SG_DMA_LENGTH 145*4882a593Smuzhiyun 146*4882a593Smuzhiyunif ARM_DMA_USE_IOMMU 147*4882a593Smuzhiyun 148*4882a593Smuzhiyunconfig ARM_DMA_IOMMU_ALIGNMENT 149*4882a593Smuzhiyun int "Maximum PAGE_SIZE order of alignment for DMA IOMMU buffers" 150*4882a593Smuzhiyun range 4 9 151*4882a593Smuzhiyun default 8 152*4882a593Smuzhiyun help 153*4882a593Smuzhiyun DMA mapping framework by default aligns all buffers to the smallest 154*4882a593Smuzhiyun PAGE_SIZE order which is greater than or equal to the requested buffer 155*4882a593Smuzhiyun size. This works well for buffers up to a few hundreds kilobytes, but 156*4882a593Smuzhiyun for larger buffers it just a waste of address space. Drivers which has 157*4882a593Smuzhiyun relatively small addressing window (like 64Mib) might run out of 158*4882a593Smuzhiyun virtual space with just a few allocations. 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun With this parameter you can specify the maximum PAGE_SIZE order for 161*4882a593Smuzhiyun DMA IOMMU buffers. Larger buffers will be aligned only to this 162*4882a593Smuzhiyun specified order. The order is expressed as a power of two multiplied 163*4882a593Smuzhiyun by the PAGE_SIZE. 164*4882a593Smuzhiyun 165*4882a593Smuzhiyunendif 166*4882a593Smuzhiyun 167*4882a593Smuzhiyunconfig SYS_SUPPORTS_APM_EMULATION 168*4882a593Smuzhiyun bool 169*4882a593Smuzhiyun 170*4882a593Smuzhiyunconfig HAVE_TCM 171*4882a593Smuzhiyun bool 172*4882a593Smuzhiyun select GENERIC_ALLOCATOR 173*4882a593Smuzhiyun 174*4882a593Smuzhiyunconfig HAVE_PROC_CPU 175*4882a593Smuzhiyun bool 176*4882a593Smuzhiyun 177*4882a593Smuzhiyunconfig NO_IOPORT_MAP 178*4882a593Smuzhiyun bool 179*4882a593Smuzhiyun 180*4882a593Smuzhiyunconfig SBUS 181*4882a593Smuzhiyun bool 182*4882a593Smuzhiyun 183*4882a593Smuzhiyunconfig STACKTRACE_SUPPORT 184*4882a593Smuzhiyun bool 185*4882a593Smuzhiyun default y 186*4882a593Smuzhiyun 187*4882a593Smuzhiyunconfig LOCKDEP_SUPPORT 188*4882a593Smuzhiyun bool 189*4882a593Smuzhiyun default y 190*4882a593Smuzhiyun 191*4882a593Smuzhiyunconfig TRACE_IRQFLAGS_SUPPORT 192*4882a593Smuzhiyun bool 193*4882a593Smuzhiyun default !CPU_V7M 194*4882a593Smuzhiyun 195*4882a593Smuzhiyunconfig ARCH_HAS_ILOG2_U32 196*4882a593Smuzhiyun bool 197*4882a593Smuzhiyun 198*4882a593Smuzhiyunconfig ARCH_HAS_ILOG2_U64 199*4882a593Smuzhiyun bool 200*4882a593Smuzhiyun 201*4882a593Smuzhiyunconfig ARCH_HAS_BANDGAP 202*4882a593Smuzhiyun bool 203*4882a593Smuzhiyun 204*4882a593Smuzhiyunconfig FIX_EARLYCON_MEM 205*4882a593Smuzhiyun def_bool y if MMU 206*4882a593Smuzhiyun 207*4882a593Smuzhiyunconfig GENERIC_HWEIGHT 208*4882a593Smuzhiyun bool 209*4882a593Smuzhiyun default y 210*4882a593Smuzhiyun 211*4882a593Smuzhiyunconfig GENERIC_CALIBRATE_DELAY 212*4882a593Smuzhiyun bool 213*4882a593Smuzhiyun default y 214*4882a593Smuzhiyun 215*4882a593Smuzhiyunconfig ARCH_MAY_HAVE_PC_FDC 216*4882a593Smuzhiyun bool 217*4882a593Smuzhiyun 218*4882a593Smuzhiyunconfig ZONE_DMA 219*4882a593Smuzhiyun bool 220*4882a593Smuzhiyun 221*4882a593Smuzhiyunconfig ARCH_SUPPORTS_UPROBES 222*4882a593Smuzhiyun def_bool y 223*4882a593Smuzhiyun 224*4882a593Smuzhiyunconfig ARCH_HAS_DMA_SET_COHERENT_MASK 225*4882a593Smuzhiyun bool 226*4882a593Smuzhiyun 227*4882a593Smuzhiyunconfig GENERIC_ISA_DMA 228*4882a593Smuzhiyun bool 229*4882a593Smuzhiyun 230*4882a593Smuzhiyunconfig FIQ 231*4882a593Smuzhiyun bool 232*4882a593Smuzhiyun 233*4882a593Smuzhiyunconfig NEED_RET_TO_USER 234*4882a593Smuzhiyun bool 235*4882a593Smuzhiyun 236*4882a593Smuzhiyunconfig ARCH_MTD_XIP 237*4882a593Smuzhiyun bool 238*4882a593Smuzhiyun 239*4882a593Smuzhiyunconfig ARM_PATCH_PHYS_VIRT 240*4882a593Smuzhiyun bool "Patch physical to virtual translations at runtime" if EMBEDDED 241*4882a593Smuzhiyun default y 242*4882a593Smuzhiyun depends on !XIP_KERNEL && MMU 243*4882a593Smuzhiyun help 244*4882a593Smuzhiyun Patch phys-to-virt and virt-to-phys translation functions at 245*4882a593Smuzhiyun boot and module load time according to the position of the 246*4882a593Smuzhiyun kernel in system memory. 247*4882a593Smuzhiyun 248*4882a593Smuzhiyun This can only be used with non-XIP MMU kernels where the base 249*4882a593Smuzhiyun of physical memory is at a 16MB boundary. 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun Only disable this option if you know that you do not require 252*4882a593Smuzhiyun this feature (eg, building a kernel for a single machine) and 253*4882a593Smuzhiyun you need to shrink the kernel to the minimal size. 254*4882a593Smuzhiyun 255*4882a593Smuzhiyunconfig NEED_MACH_IO_H 256*4882a593Smuzhiyun bool 257*4882a593Smuzhiyun help 258*4882a593Smuzhiyun Select this when mach/io.h is required to provide special 259*4882a593Smuzhiyun definitions for this platform. The need for mach/io.h should 260*4882a593Smuzhiyun be avoided when possible. 261*4882a593Smuzhiyun 262*4882a593Smuzhiyunconfig NEED_MACH_MEMORY_H 263*4882a593Smuzhiyun bool 264*4882a593Smuzhiyun help 265*4882a593Smuzhiyun Select this when mach/memory.h is required to provide special 266*4882a593Smuzhiyun definitions for this platform. The need for mach/memory.h should 267*4882a593Smuzhiyun be avoided when possible. 268*4882a593Smuzhiyun 269*4882a593Smuzhiyunconfig PHYS_OFFSET 270*4882a593Smuzhiyun hex "Physical address of main memory" if MMU 271*4882a593Smuzhiyun depends on !ARM_PATCH_PHYS_VIRT 272*4882a593Smuzhiyun default DRAM_BASE if !MMU 273*4882a593Smuzhiyun default 0x00000000 if ARCH_EBSA110 || \ 274*4882a593Smuzhiyun ARCH_FOOTBRIDGE 275*4882a593Smuzhiyun default 0x10000000 if ARCH_OMAP1 || ARCH_RPC 276*4882a593Smuzhiyun default 0x20000000 if ARCH_S5PV210 277*4882a593Smuzhiyun default 0xc0000000 if ARCH_SA1100 278*4882a593Smuzhiyun help 279*4882a593Smuzhiyun Please provide the physical address corresponding to the 280*4882a593Smuzhiyun location of main memory in your system. 281*4882a593Smuzhiyun 282*4882a593Smuzhiyunconfig GENERIC_BUG 283*4882a593Smuzhiyun def_bool y 284*4882a593Smuzhiyun depends on BUG 285*4882a593Smuzhiyun 286*4882a593Smuzhiyunconfig PGTABLE_LEVELS 287*4882a593Smuzhiyun int 288*4882a593Smuzhiyun default 3 if ARM_LPAE 289*4882a593Smuzhiyun default 2 290*4882a593Smuzhiyun 291*4882a593Smuzhiyunmenu "System Type" 292*4882a593Smuzhiyun 293*4882a593Smuzhiyunconfig MMU 294*4882a593Smuzhiyun bool "MMU-based Paged Memory Management Support" 295*4882a593Smuzhiyun default y 296*4882a593Smuzhiyun help 297*4882a593Smuzhiyun Select if you want MMU-based virtualised addressing space 298*4882a593Smuzhiyun support by paged memory management. If unsure, say 'Y'. 299*4882a593Smuzhiyun 300*4882a593Smuzhiyunconfig ARCH_MMAP_RND_BITS_MIN 301*4882a593Smuzhiyun default 8 302*4882a593Smuzhiyun 303*4882a593Smuzhiyunconfig ARCH_MMAP_RND_BITS_MAX 304*4882a593Smuzhiyun default 14 if PAGE_OFFSET=0x40000000 305*4882a593Smuzhiyun default 15 if PAGE_OFFSET=0x80000000 306*4882a593Smuzhiyun default 16 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun# 309*4882a593Smuzhiyun# The "ARM system type" choice list is ordered alphabetically by option 310*4882a593Smuzhiyun# text. Please add new entries in the option alphabetic order. 311*4882a593Smuzhiyun# 312*4882a593Smuzhiyunchoice 313*4882a593Smuzhiyun prompt "ARM system type" 314*4882a593Smuzhiyun default ARM_SINGLE_ARMV7M if !MMU 315*4882a593Smuzhiyun default ARCH_MULTIPLATFORM if MMU 316*4882a593Smuzhiyun 317*4882a593Smuzhiyunconfig ARCH_MULTIPLATFORM 318*4882a593Smuzhiyun bool "Allow multiple platforms to be selected" 319*4882a593Smuzhiyun depends on MMU 320*4882a593Smuzhiyun select ARCH_FLATMEM_ENABLE 321*4882a593Smuzhiyun select ARCH_SPARSEMEM_ENABLE 322*4882a593Smuzhiyun select ARCH_SELECT_MEMORY_MODEL 323*4882a593Smuzhiyun select ARM_HAS_SG_CHAIN 324*4882a593Smuzhiyun select ARM_PATCH_PHYS_VIRT 325*4882a593Smuzhiyun select AUTO_ZRELADDR 326*4882a593Smuzhiyun select TIMER_OF 327*4882a593Smuzhiyun select COMMON_CLK 328*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS 329*4882a593Smuzhiyun select GENERIC_IRQ_MULTI_HANDLER 330*4882a593Smuzhiyun select HAVE_PCI 331*4882a593Smuzhiyun select PCI_DOMAINS_GENERIC if PCI 332*4882a593Smuzhiyun select SPARSE_IRQ 333*4882a593Smuzhiyun select USE_OF 334*4882a593Smuzhiyun 335*4882a593Smuzhiyunconfig ARM_SINGLE_ARMV7M 336*4882a593Smuzhiyun bool "ARMv7-M based platforms (Cortex-M0/M3/M4)" 337*4882a593Smuzhiyun depends on !MMU 338*4882a593Smuzhiyun select ARM_NVIC 339*4882a593Smuzhiyun select AUTO_ZRELADDR 340*4882a593Smuzhiyun select TIMER_OF 341*4882a593Smuzhiyun select COMMON_CLK 342*4882a593Smuzhiyun select CPU_V7M 343*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS 344*4882a593Smuzhiyun select NO_IOPORT_MAP 345*4882a593Smuzhiyun select SPARSE_IRQ 346*4882a593Smuzhiyun select USE_OF 347*4882a593Smuzhiyun 348*4882a593Smuzhiyunconfig ARCH_EBSA110 349*4882a593Smuzhiyun bool "EBSA-110" 350*4882a593Smuzhiyun select ARCH_USES_GETTIMEOFFSET 351*4882a593Smuzhiyun select CPU_SA110 352*4882a593Smuzhiyun select ISA 353*4882a593Smuzhiyun select NEED_MACH_IO_H 354*4882a593Smuzhiyun select NEED_MACH_MEMORY_H 355*4882a593Smuzhiyun select NO_IOPORT_MAP 356*4882a593Smuzhiyun help 357*4882a593Smuzhiyun This is an evaluation board for the StrongARM processor available 358*4882a593Smuzhiyun from Digital. It has limited hardware on-board, including an 359*4882a593Smuzhiyun Ethernet interface, two PCMCIA sockets, two serial ports and a 360*4882a593Smuzhiyun parallel port. 361*4882a593Smuzhiyun 362*4882a593Smuzhiyunconfig ARCH_EP93XX 363*4882a593Smuzhiyun bool "EP93xx-based" 364*4882a593Smuzhiyun select ARCH_SPARSEMEM_ENABLE 365*4882a593Smuzhiyun select ARM_AMBA 366*4882a593Smuzhiyun imply ARM_PATCH_PHYS_VIRT 367*4882a593Smuzhiyun select ARM_VIC 368*4882a593Smuzhiyun select AUTO_ZRELADDR 369*4882a593Smuzhiyun select CLKDEV_LOOKUP 370*4882a593Smuzhiyun select CLKSRC_MMIO 371*4882a593Smuzhiyun select CPU_ARM920T 372*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS 373*4882a593Smuzhiyun select GPIOLIB 374*4882a593Smuzhiyun select HAVE_LEGACY_CLK 375*4882a593Smuzhiyun help 376*4882a593Smuzhiyun This enables support for the Cirrus EP93xx series of CPUs. 377*4882a593Smuzhiyun 378*4882a593Smuzhiyunconfig ARCH_FOOTBRIDGE 379*4882a593Smuzhiyun bool "FootBridge" 380*4882a593Smuzhiyun select CPU_SA110 381*4882a593Smuzhiyun select FOOTBRIDGE 382*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS 383*4882a593Smuzhiyun select HAVE_IDE 384*4882a593Smuzhiyun select NEED_MACH_IO_H if !MMU 385*4882a593Smuzhiyun select NEED_MACH_MEMORY_H 386*4882a593Smuzhiyun help 387*4882a593Smuzhiyun Support for systems based on the DC21285 companion chip 388*4882a593Smuzhiyun ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder. 389*4882a593Smuzhiyun 390*4882a593Smuzhiyunconfig ARCH_IOP32X 391*4882a593Smuzhiyun bool "IOP32x-based" 392*4882a593Smuzhiyun depends on MMU 393*4882a593Smuzhiyun select CPU_XSCALE 394*4882a593Smuzhiyun select GPIO_IOP 395*4882a593Smuzhiyun select GPIOLIB 396*4882a593Smuzhiyun select NEED_RET_TO_USER 397*4882a593Smuzhiyun select FORCE_PCI 398*4882a593Smuzhiyun select PLAT_IOP 399*4882a593Smuzhiyun help 400*4882a593Smuzhiyun Support for Intel's 80219 and IOP32X (XScale) family of 401*4882a593Smuzhiyun processors. 402*4882a593Smuzhiyun 403*4882a593Smuzhiyunconfig ARCH_IXP4XX 404*4882a593Smuzhiyun bool "IXP4xx-based" 405*4882a593Smuzhiyun depends on MMU 406*4882a593Smuzhiyun select ARCH_HAS_DMA_SET_COHERENT_MASK 407*4882a593Smuzhiyun select ARCH_SUPPORTS_BIG_ENDIAN 408*4882a593Smuzhiyun select CPU_XSCALE 409*4882a593Smuzhiyun select DMABOUNCE if PCI 410*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS 411*4882a593Smuzhiyun select GENERIC_IRQ_MULTI_HANDLER 412*4882a593Smuzhiyun select GPIO_IXP4XX 413*4882a593Smuzhiyun select GPIOLIB 414*4882a593Smuzhiyun select HAVE_PCI 415*4882a593Smuzhiyun select IXP4XX_IRQ 416*4882a593Smuzhiyun select IXP4XX_TIMER 417*4882a593Smuzhiyun select NEED_MACH_IO_H 418*4882a593Smuzhiyun select USB_EHCI_BIG_ENDIAN_DESC 419*4882a593Smuzhiyun select USB_EHCI_BIG_ENDIAN_MMIO 420*4882a593Smuzhiyun help 421*4882a593Smuzhiyun Support for Intel's IXP4XX (XScale) family of processors. 422*4882a593Smuzhiyun 423*4882a593Smuzhiyunconfig ARCH_DOVE 424*4882a593Smuzhiyun bool "Marvell Dove" 425*4882a593Smuzhiyun select CPU_PJ4 426*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS 427*4882a593Smuzhiyun select GENERIC_IRQ_MULTI_HANDLER 428*4882a593Smuzhiyun select GPIOLIB 429*4882a593Smuzhiyun select HAVE_PCI 430*4882a593Smuzhiyun select MVEBU_MBUS 431*4882a593Smuzhiyun select PINCTRL 432*4882a593Smuzhiyun select PINCTRL_DOVE 433*4882a593Smuzhiyun select PLAT_ORION_LEGACY 434*4882a593Smuzhiyun select SPARSE_IRQ 435*4882a593Smuzhiyun select PM_GENERIC_DOMAINS if PM 436*4882a593Smuzhiyun help 437*4882a593Smuzhiyun Support for the Marvell Dove SoC 88AP510 438*4882a593Smuzhiyun 439*4882a593Smuzhiyunconfig ARCH_PXA 440*4882a593Smuzhiyun bool "PXA2xx/PXA3xx-based" 441*4882a593Smuzhiyun depends on MMU 442*4882a593Smuzhiyun select ARCH_MTD_XIP 443*4882a593Smuzhiyun select ARM_CPU_SUSPEND if PM 444*4882a593Smuzhiyun select AUTO_ZRELADDR 445*4882a593Smuzhiyun select COMMON_CLK 446*4882a593Smuzhiyun select CLKSRC_PXA 447*4882a593Smuzhiyun select CLKSRC_MMIO 448*4882a593Smuzhiyun select TIMER_OF 449*4882a593Smuzhiyun select CPU_XSCALE if !CPU_XSC3 450*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS 451*4882a593Smuzhiyun select GENERIC_IRQ_MULTI_HANDLER 452*4882a593Smuzhiyun select GPIO_PXA 453*4882a593Smuzhiyun select GPIOLIB 454*4882a593Smuzhiyun select HAVE_IDE 455*4882a593Smuzhiyun select IRQ_DOMAIN 456*4882a593Smuzhiyun select PLAT_PXA 457*4882a593Smuzhiyun select SPARSE_IRQ 458*4882a593Smuzhiyun help 459*4882a593Smuzhiyun Support for Intel/Marvell's PXA2xx/PXA3xx processor line. 460*4882a593Smuzhiyun 461*4882a593Smuzhiyunconfig ARCH_RPC 462*4882a593Smuzhiyun bool "RiscPC" 463*4882a593Smuzhiyun depends on MMU 464*4882a593Smuzhiyun select ARCH_ACORN 465*4882a593Smuzhiyun select ARCH_MAY_HAVE_PC_FDC 466*4882a593Smuzhiyun select ARCH_SPARSEMEM_ENABLE 467*4882a593Smuzhiyun select ARM_HAS_SG_CHAIN 468*4882a593Smuzhiyun select CPU_SA110 469*4882a593Smuzhiyun select FIQ 470*4882a593Smuzhiyun select HAVE_IDE 471*4882a593Smuzhiyun select HAVE_PATA_PLATFORM 472*4882a593Smuzhiyun select ISA_DMA_API 473*4882a593Smuzhiyun select NEED_MACH_IO_H 474*4882a593Smuzhiyun select NEED_MACH_MEMORY_H 475*4882a593Smuzhiyun select NO_IOPORT_MAP 476*4882a593Smuzhiyun help 477*4882a593Smuzhiyun On the Acorn Risc-PC, Linux can support the internal IDE disk and 478*4882a593Smuzhiyun CD-ROM interface, serial and parallel port, and the floppy drive. 479*4882a593Smuzhiyun 480*4882a593Smuzhiyunconfig ARCH_SA1100 481*4882a593Smuzhiyun bool "SA1100-based" 482*4882a593Smuzhiyun select ARCH_MTD_XIP 483*4882a593Smuzhiyun select ARCH_SPARSEMEM_ENABLE 484*4882a593Smuzhiyun select CLKSRC_MMIO 485*4882a593Smuzhiyun select CLKSRC_PXA 486*4882a593Smuzhiyun select TIMER_OF if OF 487*4882a593Smuzhiyun select COMMON_CLK 488*4882a593Smuzhiyun select CPU_FREQ 489*4882a593Smuzhiyun select CPU_SA1100 490*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS 491*4882a593Smuzhiyun select GENERIC_IRQ_MULTI_HANDLER 492*4882a593Smuzhiyun select GPIOLIB 493*4882a593Smuzhiyun select HAVE_IDE 494*4882a593Smuzhiyun select IRQ_DOMAIN 495*4882a593Smuzhiyun select ISA 496*4882a593Smuzhiyun select NEED_MACH_MEMORY_H 497*4882a593Smuzhiyun select SPARSE_IRQ 498*4882a593Smuzhiyun help 499*4882a593Smuzhiyun Support for StrongARM 11x0 based boards. 500*4882a593Smuzhiyun 501*4882a593Smuzhiyunconfig ARCH_S3C24XX 502*4882a593Smuzhiyun bool "Samsung S3C24XX SoCs" 503*4882a593Smuzhiyun select ATAGS 504*4882a593Smuzhiyun select CLKSRC_SAMSUNG_PWM 505*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS 506*4882a593Smuzhiyun select GPIO_SAMSUNG 507*4882a593Smuzhiyun select GPIOLIB 508*4882a593Smuzhiyun select GENERIC_IRQ_MULTI_HANDLER 509*4882a593Smuzhiyun select HAVE_S3C2410_I2C if I2C 510*4882a593Smuzhiyun select HAVE_S3C_RTC if RTC_CLASS 511*4882a593Smuzhiyun select NEED_MACH_IO_H 512*4882a593Smuzhiyun select S3C2410_WATCHDOG 513*4882a593Smuzhiyun select SAMSUNG_ATAGS 514*4882a593Smuzhiyun select USE_OF 515*4882a593Smuzhiyun select WATCHDOG 516*4882a593Smuzhiyun help 517*4882a593Smuzhiyun Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443 518*4882a593Smuzhiyun and S3C2450 SoCs based systems, such as the Simtec Electronics BAST 519*4882a593Smuzhiyun (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or the 520*4882a593Smuzhiyun Samsung SMDK2410 development board (and derivatives). 521*4882a593Smuzhiyun 522*4882a593Smuzhiyunconfig ARCH_OMAP1 523*4882a593Smuzhiyun bool "TI OMAP1" 524*4882a593Smuzhiyun depends on MMU 525*4882a593Smuzhiyun select ARCH_OMAP 526*4882a593Smuzhiyun select CLKDEV_LOOKUP 527*4882a593Smuzhiyun select CLKSRC_MMIO 528*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS 529*4882a593Smuzhiyun select GENERIC_IRQ_CHIP 530*4882a593Smuzhiyun select GENERIC_IRQ_MULTI_HANDLER 531*4882a593Smuzhiyun select GPIOLIB 532*4882a593Smuzhiyun select HAVE_IDE 533*4882a593Smuzhiyun select HAVE_LEGACY_CLK 534*4882a593Smuzhiyun select IRQ_DOMAIN 535*4882a593Smuzhiyun select NEED_MACH_IO_H if PCCARD 536*4882a593Smuzhiyun select NEED_MACH_MEMORY_H 537*4882a593Smuzhiyun select SPARSE_IRQ 538*4882a593Smuzhiyun help 539*4882a593Smuzhiyun Support for older TI OMAP1 (omap7xx, omap15xx or omap16xx) 540*4882a593Smuzhiyun 541*4882a593Smuzhiyunendchoice 542*4882a593Smuzhiyun 543*4882a593Smuzhiyunmenu "Multiple platform selection" 544*4882a593Smuzhiyun depends on ARCH_MULTIPLATFORM 545*4882a593Smuzhiyun 546*4882a593Smuzhiyuncomment "CPU Core family selection" 547*4882a593Smuzhiyun 548*4882a593Smuzhiyunconfig ARCH_MULTI_V4 549*4882a593Smuzhiyun bool "ARMv4 based platforms (FA526)" 550*4882a593Smuzhiyun depends on !ARCH_MULTI_V6_V7 551*4882a593Smuzhiyun select ARCH_MULTI_V4_V5 552*4882a593Smuzhiyun select CPU_FA526 553*4882a593Smuzhiyun 554*4882a593Smuzhiyunconfig ARCH_MULTI_V4T 555*4882a593Smuzhiyun bool "ARMv4T based platforms (ARM720T, ARM920T, ...)" 556*4882a593Smuzhiyun depends on !ARCH_MULTI_V6_V7 557*4882a593Smuzhiyun select ARCH_MULTI_V4_V5 558*4882a593Smuzhiyun select CPU_ARM920T if !(CPU_ARM7TDMI || CPU_ARM720T || \ 559*4882a593Smuzhiyun CPU_ARM740T || CPU_ARM9TDMI || CPU_ARM922T || \ 560*4882a593Smuzhiyun CPU_ARM925T || CPU_ARM940T) 561*4882a593Smuzhiyun 562*4882a593Smuzhiyunconfig ARCH_MULTI_V5 563*4882a593Smuzhiyun bool "ARMv5 based platforms (ARM926T, XSCALE, PJ1, ...)" 564*4882a593Smuzhiyun depends on !ARCH_MULTI_V6_V7 565*4882a593Smuzhiyun select ARCH_MULTI_V4_V5 566*4882a593Smuzhiyun select CPU_ARM926T if !(CPU_ARM946E || CPU_ARM1020 || \ 567*4882a593Smuzhiyun CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || \ 568*4882a593Smuzhiyun CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_FEROCEON) 569*4882a593Smuzhiyun 570*4882a593Smuzhiyunconfig ARCH_MULTI_V4_V5 571*4882a593Smuzhiyun bool 572*4882a593Smuzhiyun 573*4882a593Smuzhiyunconfig ARCH_MULTI_V6 574*4882a593Smuzhiyun bool "ARMv6 based platforms (ARM11)" 575*4882a593Smuzhiyun select ARCH_MULTI_V6_V7 576*4882a593Smuzhiyun select CPU_V6K 577*4882a593Smuzhiyun 578*4882a593Smuzhiyunconfig ARCH_MULTI_V7 579*4882a593Smuzhiyun bool "ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)" 580*4882a593Smuzhiyun default y 581*4882a593Smuzhiyun select ARCH_MULTI_V6_V7 582*4882a593Smuzhiyun select CPU_V7 583*4882a593Smuzhiyun select HAVE_SMP 584*4882a593Smuzhiyun 585*4882a593Smuzhiyunconfig ARCH_MULTI_V6_V7 586*4882a593Smuzhiyun bool 587*4882a593Smuzhiyun select MIGHT_HAVE_CACHE_L2X0 588*4882a593Smuzhiyun 589*4882a593Smuzhiyunconfig ARCH_MULTI_CPU_AUTO 590*4882a593Smuzhiyun def_bool !(ARCH_MULTI_V4 || ARCH_MULTI_V4T || ARCH_MULTI_V6_V7) 591*4882a593Smuzhiyun select ARCH_MULTI_V5 592*4882a593Smuzhiyun 593*4882a593Smuzhiyunendmenu 594*4882a593Smuzhiyun 595*4882a593Smuzhiyunconfig ARCH_VIRT 596*4882a593Smuzhiyun bool "Dummy Virtual Machine" 597*4882a593Smuzhiyun depends on ARCH_MULTI_V7 598*4882a593Smuzhiyun select ARM_AMBA 599*4882a593Smuzhiyun select ARM_GIC 600*4882a593Smuzhiyun select ARM_GIC_V2M if PCI 601*4882a593Smuzhiyun select ARM_GIC_V3 602*4882a593Smuzhiyun select ARM_GIC_V3_ITS if PCI 603*4882a593Smuzhiyun select ARM_PSCI 604*4882a593Smuzhiyun select HAVE_ARM_ARCH_TIMER 605*4882a593Smuzhiyun select ARCH_SUPPORTS_BIG_ENDIAN 606*4882a593Smuzhiyun 607*4882a593Smuzhiyun# 608*4882a593Smuzhiyun# This is sorted alphabetically by mach-* pathname. However, plat-* 609*4882a593Smuzhiyun# Kconfigs may be included either alphabetically (according to the 610*4882a593Smuzhiyun# plat- suffix) or along side the corresponding mach-* source. 611*4882a593Smuzhiyun# 612*4882a593Smuzhiyunsource "arch/arm/mach-actions/Kconfig" 613*4882a593Smuzhiyun 614*4882a593Smuzhiyunsource "arch/arm/mach-alpine/Kconfig" 615*4882a593Smuzhiyun 616*4882a593Smuzhiyunsource "arch/arm/mach-artpec/Kconfig" 617*4882a593Smuzhiyun 618*4882a593Smuzhiyunsource "arch/arm/mach-asm9260/Kconfig" 619*4882a593Smuzhiyun 620*4882a593Smuzhiyunsource "arch/arm/mach-aspeed/Kconfig" 621*4882a593Smuzhiyun 622*4882a593Smuzhiyunsource "arch/arm/mach-at91/Kconfig" 623*4882a593Smuzhiyun 624*4882a593Smuzhiyunsource "arch/arm/mach-axxia/Kconfig" 625*4882a593Smuzhiyun 626*4882a593Smuzhiyunsource "arch/arm/mach-bcm/Kconfig" 627*4882a593Smuzhiyun 628*4882a593Smuzhiyunsource "arch/arm/mach-berlin/Kconfig" 629*4882a593Smuzhiyun 630*4882a593Smuzhiyunsource "arch/arm/mach-clps711x/Kconfig" 631*4882a593Smuzhiyun 632*4882a593Smuzhiyunsource "arch/arm/mach-cns3xxx/Kconfig" 633*4882a593Smuzhiyun 634*4882a593Smuzhiyunsource "arch/arm/mach-davinci/Kconfig" 635*4882a593Smuzhiyun 636*4882a593Smuzhiyunsource "arch/arm/mach-digicolor/Kconfig" 637*4882a593Smuzhiyun 638*4882a593Smuzhiyunsource "arch/arm/mach-dove/Kconfig" 639*4882a593Smuzhiyun 640*4882a593Smuzhiyunsource "arch/arm/mach-ep93xx/Kconfig" 641*4882a593Smuzhiyun 642*4882a593Smuzhiyunsource "arch/arm/mach-exynos/Kconfig" 643*4882a593Smuzhiyun 644*4882a593Smuzhiyunsource "arch/arm/mach-footbridge/Kconfig" 645*4882a593Smuzhiyun 646*4882a593Smuzhiyunsource "arch/arm/mach-gemini/Kconfig" 647*4882a593Smuzhiyun 648*4882a593Smuzhiyunsource "arch/arm/mach-highbank/Kconfig" 649*4882a593Smuzhiyun 650*4882a593Smuzhiyunsource "arch/arm/mach-hisi/Kconfig" 651*4882a593Smuzhiyun 652*4882a593Smuzhiyunsource "arch/arm/mach-imx/Kconfig" 653*4882a593Smuzhiyun 654*4882a593Smuzhiyunsource "arch/arm/mach-integrator/Kconfig" 655*4882a593Smuzhiyun 656*4882a593Smuzhiyunsource "arch/arm/mach-iop32x/Kconfig" 657*4882a593Smuzhiyun 658*4882a593Smuzhiyunsource "arch/arm/mach-ixp4xx/Kconfig" 659*4882a593Smuzhiyun 660*4882a593Smuzhiyunsource "arch/arm/mach-keystone/Kconfig" 661*4882a593Smuzhiyun 662*4882a593Smuzhiyunsource "arch/arm/mach-lpc32xx/Kconfig" 663*4882a593Smuzhiyun 664*4882a593Smuzhiyunsource "arch/arm/mach-mediatek/Kconfig" 665*4882a593Smuzhiyun 666*4882a593Smuzhiyunsource "arch/arm/mach-meson/Kconfig" 667*4882a593Smuzhiyun 668*4882a593Smuzhiyunsource "arch/arm/mach-milbeaut/Kconfig" 669*4882a593Smuzhiyun 670*4882a593Smuzhiyunsource "arch/arm/mach-mmp/Kconfig" 671*4882a593Smuzhiyun 672*4882a593Smuzhiyunsource "arch/arm/mach-moxart/Kconfig" 673*4882a593Smuzhiyun 674*4882a593Smuzhiyunsource "arch/arm/mach-mstar/Kconfig" 675*4882a593Smuzhiyun 676*4882a593Smuzhiyunsource "arch/arm/mach-mv78xx0/Kconfig" 677*4882a593Smuzhiyun 678*4882a593Smuzhiyunsource "arch/arm/mach-mvebu/Kconfig" 679*4882a593Smuzhiyun 680*4882a593Smuzhiyunsource "arch/arm/mach-mxs/Kconfig" 681*4882a593Smuzhiyun 682*4882a593Smuzhiyunsource "arch/arm/mach-nomadik/Kconfig" 683*4882a593Smuzhiyun 684*4882a593Smuzhiyunsource "arch/arm/mach-npcm/Kconfig" 685*4882a593Smuzhiyun 686*4882a593Smuzhiyunsource "arch/arm/mach-nspire/Kconfig" 687*4882a593Smuzhiyun 688*4882a593Smuzhiyunsource "arch/arm/plat-omap/Kconfig" 689*4882a593Smuzhiyun 690*4882a593Smuzhiyunsource "arch/arm/mach-omap1/Kconfig" 691*4882a593Smuzhiyun 692*4882a593Smuzhiyunsource "arch/arm/mach-omap2/Kconfig" 693*4882a593Smuzhiyun 694*4882a593Smuzhiyunsource "arch/arm/mach-orion5x/Kconfig" 695*4882a593Smuzhiyun 696*4882a593Smuzhiyunsource "arch/arm/mach-oxnas/Kconfig" 697*4882a593Smuzhiyun 698*4882a593Smuzhiyunsource "arch/arm/mach-picoxcell/Kconfig" 699*4882a593Smuzhiyun 700*4882a593Smuzhiyunsource "arch/arm/mach-prima2/Kconfig" 701*4882a593Smuzhiyun 702*4882a593Smuzhiyunsource "arch/arm/mach-pxa/Kconfig" 703*4882a593Smuzhiyunsource "arch/arm/plat-pxa/Kconfig" 704*4882a593Smuzhiyun 705*4882a593Smuzhiyunsource "arch/arm/mach-qcom/Kconfig" 706*4882a593Smuzhiyun 707*4882a593Smuzhiyunsource "arch/arm/mach-rda/Kconfig" 708*4882a593Smuzhiyun 709*4882a593Smuzhiyunsource "arch/arm/mach-realtek/Kconfig" 710*4882a593Smuzhiyun 711*4882a593Smuzhiyunsource "arch/arm/mach-realview/Kconfig" 712*4882a593Smuzhiyun 713*4882a593Smuzhiyunsource "arch/arm/mach-rockchip/Kconfig" 714*4882a593Smuzhiyun 715*4882a593Smuzhiyunsource "arch/arm/mach-s3c/Kconfig" 716*4882a593Smuzhiyun 717*4882a593Smuzhiyunsource "arch/arm/mach-s5pv210/Kconfig" 718*4882a593Smuzhiyun 719*4882a593Smuzhiyunsource "arch/arm/mach-sa1100/Kconfig" 720*4882a593Smuzhiyun 721*4882a593Smuzhiyunsource "arch/arm/mach-shmobile/Kconfig" 722*4882a593Smuzhiyun 723*4882a593Smuzhiyunsource "arch/arm/mach-socfpga/Kconfig" 724*4882a593Smuzhiyun 725*4882a593Smuzhiyunsource "arch/arm/mach-spear/Kconfig" 726*4882a593Smuzhiyun 727*4882a593Smuzhiyunsource "arch/arm/mach-sti/Kconfig" 728*4882a593Smuzhiyun 729*4882a593Smuzhiyunsource "arch/arm/mach-stm32/Kconfig" 730*4882a593Smuzhiyun 731*4882a593Smuzhiyunsource "arch/arm/mach-sunxi/Kconfig" 732*4882a593Smuzhiyun 733*4882a593Smuzhiyunsource "arch/arm/mach-tango/Kconfig" 734*4882a593Smuzhiyun 735*4882a593Smuzhiyunsource "arch/arm/mach-tegra/Kconfig" 736*4882a593Smuzhiyun 737*4882a593Smuzhiyunsource "arch/arm/mach-u300/Kconfig" 738*4882a593Smuzhiyun 739*4882a593Smuzhiyunsource "arch/arm/mach-uniphier/Kconfig" 740*4882a593Smuzhiyun 741*4882a593Smuzhiyunsource "arch/arm/mach-ux500/Kconfig" 742*4882a593Smuzhiyun 743*4882a593Smuzhiyunsource "arch/arm/mach-versatile/Kconfig" 744*4882a593Smuzhiyun 745*4882a593Smuzhiyunsource "arch/arm/mach-vexpress/Kconfig" 746*4882a593Smuzhiyun 747*4882a593Smuzhiyunsource "arch/arm/mach-vt8500/Kconfig" 748*4882a593Smuzhiyun 749*4882a593Smuzhiyunsource "arch/arm/mach-zx/Kconfig" 750*4882a593Smuzhiyun 751*4882a593Smuzhiyunsource "arch/arm/mach-zynq/Kconfig" 752*4882a593Smuzhiyun 753*4882a593Smuzhiyun# ARMv7-M architecture 754*4882a593Smuzhiyunconfig ARCH_EFM32 755*4882a593Smuzhiyun bool "Energy Micro efm32" 756*4882a593Smuzhiyun depends on ARM_SINGLE_ARMV7M 757*4882a593Smuzhiyun select GPIOLIB 758*4882a593Smuzhiyun help 759*4882a593Smuzhiyun Support for Energy Micro's (now Silicon Labs) efm32 Giant Gecko 760*4882a593Smuzhiyun processors. 761*4882a593Smuzhiyun 762*4882a593Smuzhiyunconfig ARCH_LPC18XX 763*4882a593Smuzhiyun bool "NXP LPC18xx/LPC43xx" 764*4882a593Smuzhiyun depends on ARM_SINGLE_ARMV7M 765*4882a593Smuzhiyun select ARCH_HAS_RESET_CONTROLLER 766*4882a593Smuzhiyun select ARM_AMBA 767*4882a593Smuzhiyun select CLKSRC_LPC32XX 768*4882a593Smuzhiyun select PINCTRL 769*4882a593Smuzhiyun help 770*4882a593Smuzhiyun Support for NXP's LPC18xx Cortex-M3 and LPC43xx Cortex-M4 771*4882a593Smuzhiyun high performance microcontrollers. 772*4882a593Smuzhiyun 773*4882a593Smuzhiyunconfig ARCH_MPS2 774*4882a593Smuzhiyun bool "ARM MPS2 platform" 775*4882a593Smuzhiyun depends on ARM_SINGLE_ARMV7M 776*4882a593Smuzhiyun select ARM_AMBA 777*4882a593Smuzhiyun select CLKSRC_MPS2 778*4882a593Smuzhiyun help 779*4882a593Smuzhiyun Support for Cortex-M Prototyping System (or V2M-MPS2) which comes 780*4882a593Smuzhiyun with a range of available cores like Cortex-M3/M4/M7. 781*4882a593Smuzhiyun 782*4882a593Smuzhiyun Please, note that depends which Application Note is used memory map 783*4882a593Smuzhiyun for the platform may vary, so adjustment of RAM base might be needed. 784*4882a593Smuzhiyun 785*4882a593Smuzhiyun# Definitions to make life easier 786*4882a593Smuzhiyunconfig ARCH_ACORN 787*4882a593Smuzhiyun bool 788*4882a593Smuzhiyun 789*4882a593Smuzhiyunconfig PLAT_IOP 790*4882a593Smuzhiyun bool 791*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS 792*4882a593Smuzhiyun 793*4882a593Smuzhiyunconfig PLAT_ORION 794*4882a593Smuzhiyun bool 795*4882a593Smuzhiyun select CLKSRC_MMIO 796*4882a593Smuzhiyun select COMMON_CLK 797*4882a593Smuzhiyun select GENERIC_IRQ_CHIP 798*4882a593Smuzhiyun select IRQ_DOMAIN 799*4882a593Smuzhiyun 800*4882a593Smuzhiyunconfig PLAT_ORION_LEGACY 801*4882a593Smuzhiyun bool 802*4882a593Smuzhiyun select PLAT_ORION 803*4882a593Smuzhiyun 804*4882a593Smuzhiyunconfig PLAT_PXA 805*4882a593Smuzhiyun bool 806*4882a593Smuzhiyun 807*4882a593Smuzhiyunconfig PLAT_VERSATILE 808*4882a593Smuzhiyun bool 809*4882a593Smuzhiyun 810*4882a593Smuzhiyunsource "arch/arm/mm/Kconfig" 811*4882a593Smuzhiyun 812*4882a593Smuzhiyunconfig IWMMXT 813*4882a593Smuzhiyun bool "Enable iWMMXt support" 814*4882a593Smuzhiyun depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4 || CPU_PJ4B 815*4882a593Smuzhiyun default y if PXA27x || PXA3xx || ARCH_MMP || CPU_PJ4 || CPU_PJ4B 816*4882a593Smuzhiyun help 817*4882a593Smuzhiyun Enable support for iWMMXt context switching at run time if 818*4882a593Smuzhiyun running on a CPU that supports it. 819*4882a593Smuzhiyun 820*4882a593Smuzhiyunif !MMU 821*4882a593Smuzhiyunsource "arch/arm/Kconfig-nommu" 822*4882a593Smuzhiyunendif 823*4882a593Smuzhiyun 824*4882a593Smuzhiyunconfig PJ4B_ERRATA_4742 825*4882a593Smuzhiyun bool "PJ4B Errata 4742: IDLE Wake Up Commands can Cause the CPU Core to Cease Operation" 826*4882a593Smuzhiyun depends on CPU_PJ4B && MACH_ARMADA_370 827*4882a593Smuzhiyun default y 828*4882a593Smuzhiyun help 829*4882a593Smuzhiyun When coming out of either a Wait for Interrupt (WFI) or a Wait for 830*4882a593Smuzhiyun Event (WFE) IDLE states, a specific timing sensitivity exists between 831*4882a593Smuzhiyun the retiring WFI/WFE instructions and the newly issued subsequent 832*4882a593Smuzhiyun instructions. This sensitivity can result in a CPU hang scenario. 833*4882a593Smuzhiyun Workaround: 834*4882a593Smuzhiyun The software must insert either a Data Synchronization Barrier (DSB) 835*4882a593Smuzhiyun or Data Memory Barrier (DMB) command immediately after the WFI/WFE 836*4882a593Smuzhiyun instruction 837*4882a593Smuzhiyun 838*4882a593Smuzhiyunconfig ARM_ERRATA_326103 839*4882a593Smuzhiyun bool "ARM errata: FSR write bit incorrect on a SWP to read-only memory" 840*4882a593Smuzhiyun depends on CPU_V6 841*4882a593Smuzhiyun help 842*4882a593Smuzhiyun Executing a SWP instruction to read-only memory does not set bit 11 843*4882a593Smuzhiyun of the FSR on the ARM 1136 prior to r1p0. This causes the kernel to 844*4882a593Smuzhiyun treat the access as a read, preventing a COW from occurring and 845*4882a593Smuzhiyun causing the faulting task to livelock. 846*4882a593Smuzhiyun 847*4882a593Smuzhiyunconfig ARM_ERRATA_411920 848*4882a593Smuzhiyun bool "ARM errata: Invalidation of the Instruction Cache operation can fail" 849*4882a593Smuzhiyun depends on CPU_V6 || CPU_V6K 850*4882a593Smuzhiyun help 851*4882a593Smuzhiyun Invalidation of the Instruction Cache operation can 852*4882a593Smuzhiyun fail. This erratum is present in 1136 (before r1p4), 1156 and 1176. 853*4882a593Smuzhiyun It does not affect the MPCore. This option enables the ARM Ltd. 854*4882a593Smuzhiyun recommended workaround. 855*4882a593Smuzhiyun 856*4882a593Smuzhiyunconfig ARM_ERRATA_430973 857*4882a593Smuzhiyun bool "ARM errata: Stale prediction on replaced interworking branch" 858*4882a593Smuzhiyun depends on CPU_V7 859*4882a593Smuzhiyun help 860*4882a593Smuzhiyun This option enables the workaround for the 430973 Cortex-A8 861*4882a593Smuzhiyun r1p* erratum. If a code sequence containing an ARM/Thumb 862*4882a593Smuzhiyun interworking branch is replaced with another code sequence at the 863*4882a593Smuzhiyun same virtual address, whether due to self-modifying code or virtual 864*4882a593Smuzhiyun to physical address re-mapping, Cortex-A8 does not recover from the 865*4882a593Smuzhiyun stale interworking branch prediction. This results in Cortex-A8 866*4882a593Smuzhiyun executing the new code sequence in the incorrect ARM or Thumb state. 867*4882a593Smuzhiyun The workaround enables the BTB/BTAC operations by setting ACTLR.IBE 868*4882a593Smuzhiyun and also flushes the branch target cache at every context switch. 869*4882a593Smuzhiyun Note that setting specific bits in the ACTLR register may not be 870*4882a593Smuzhiyun available in non-secure mode. 871*4882a593Smuzhiyun 872*4882a593Smuzhiyunconfig ARM_ERRATA_458693 873*4882a593Smuzhiyun bool "ARM errata: Processor deadlock when a false hazard is created" 874*4882a593Smuzhiyun depends on CPU_V7 875*4882a593Smuzhiyun depends on !ARCH_MULTIPLATFORM 876*4882a593Smuzhiyun help 877*4882a593Smuzhiyun This option enables the workaround for the 458693 Cortex-A8 (r2p0) 878*4882a593Smuzhiyun erratum. For very specific sequences of memory operations, it is 879*4882a593Smuzhiyun possible for a hazard condition intended for a cache line to instead 880*4882a593Smuzhiyun be incorrectly associated with a different cache line. This false 881*4882a593Smuzhiyun hazard might then cause a processor deadlock. The workaround enables 882*4882a593Smuzhiyun the L1 caching of the NEON accesses and disables the PLD instruction 883*4882a593Smuzhiyun in the ACTLR register. Note that setting specific bits in the ACTLR 884*4882a593Smuzhiyun register may not be available in non-secure mode. 885*4882a593Smuzhiyun 886*4882a593Smuzhiyunconfig ARM_ERRATA_460075 887*4882a593Smuzhiyun bool "ARM errata: Data written to the L2 cache can be overwritten with stale data" 888*4882a593Smuzhiyun depends on CPU_V7 889*4882a593Smuzhiyun depends on !ARCH_MULTIPLATFORM 890*4882a593Smuzhiyun help 891*4882a593Smuzhiyun This option enables the workaround for the 460075 Cortex-A8 (r2p0) 892*4882a593Smuzhiyun erratum. Any asynchronous access to the L2 cache may encounter a 893*4882a593Smuzhiyun situation in which recent store transactions to the L2 cache are lost 894*4882a593Smuzhiyun and overwritten with stale memory contents from external memory. The 895*4882a593Smuzhiyun workaround disables the write-allocate mode for the L2 cache via the 896*4882a593Smuzhiyun ACTLR register. Note that setting specific bits in the ACTLR register 897*4882a593Smuzhiyun may not be available in non-secure mode. 898*4882a593Smuzhiyun 899*4882a593Smuzhiyunconfig ARM_ERRATA_742230 900*4882a593Smuzhiyun bool "ARM errata: DMB operation may be faulty" 901*4882a593Smuzhiyun depends on CPU_V7 && SMP 902*4882a593Smuzhiyun depends on !ARCH_MULTIPLATFORM 903*4882a593Smuzhiyun help 904*4882a593Smuzhiyun This option enables the workaround for the 742230 Cortex-A9 905*4882a593Smuzhiyun (r1p0..r2p2) erratum. Under rare circumstances, a DMB instruction 906*4882a593Smuzhiyun between two write operations may not ensure the correct visibility 907*4882a593Smuzhiyun ordering of the two writes. This workaround sets a specific bit in 908*4882a593Smuzhiyun the diagnostic register of the Cortex-A9 which causes the DMB 909*4882a593Smuzhiyun instruction to behave as a DSB, ensuring the correct behaviour of 910*4882a593Smuzhiyun the two writes. 911*4882a593Smuzhiyun 912*4882a593Smuzhiyunconfig ARM_ERRATA_742231 913*4882a593Smuzhiyun bool "ARM errata: Incorrect hazard handling in the SCU may lead to data corruption" 914*4882a593Smuzhiyun depends on CPU_V7 && SMP 915*4882a593Smuzhiyun depends on !ARCH_MULTIPLATFORM 916*4882a593Smuzhiyun help 917*4882a593Smuzhiyun This option enables the workaround for the 742231 Cortex-A9 918*4882a593Smuzhiyun (r2p0..r2p2) erratum. Under certain conditions, specific to the 919*4882a593Smuzhiyun Cortex-A9 MPCore micro-architecture, two CPUs working in SMP mode, 920*4882a593Smuzhiyun accessing some data located in the same cache line, may get corrupted 921*4882a593Smuzhiyun data due to bad handling of the address hazard when the line gets 922*4882a593Smuzhiyun replaced from one of the CPUs at the same time as another CPU is 923*4882a593Smuzhiyun accessing it. This workaround sets specific bits in the diagnostic 924*4882a593Smuzhiyun register of the Cortex-A9 which reduces the linefill issuing 925*4882a593Smuzhiyun capabilities of the processor. 926*4882a593Smuzhiyun 927*4882a593Smuzhiyunconfig ARM_ERRATA_643719 928*4882a593Smuzhiyun bool "ARM errata: LoUIS bit field in CLIDR register is incorrect" 929*4882a593Smuzhiyun depends on CPU_V7 && SMP 930*4882a593Smuzhiyun default y 931*4882a593Smuzhiyun help 932*4882a593Smuzhiyun This option enables the workaround for the 643719 Cortex-A9 (prior to 933*4882a593Smuzhiyun r1p0) erratum. On affected cores the LoUIS bit field of the CLIDR 934*4882a593Smuzhiyun register returns zero when it should return one. The workaround 935*4882a593Smuzhiyun corrects this value, ensuring cache maintenance operations which use 936*4882a593Smuzhiyun it behave as intended and avoiding data corruption. 937*4882a593Smuzhiyun 938*4882a593Smuzhiyunconfig ARM_ERRATA_720789 939*4882a593Smuzhiyun bool "ARM errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID" 940*4882a593Smuzhiyun depends on CPU_V7 941*4882a593Smuzhiyun help 942*4882a593Smuzhiyun This option enables the workaround for the 720789 Cortex-A9 (prior to 943*4882a593Smuzhiyun r2p0) erratum. A faulty ASID can be sent to the other CPUs for the 944*4882a593Smuzhiyun broadcasted CP15 TLB maintenance operations TLBIASIDIS and TLBIMVAIS. 945*4882a593Smuzhiyun As a consequence of this erratum, some TLB entries which should be 946*4882a593Smuzhiyun invalidated are not, resulting in an incoherency in the system page 947*4882a593Smuzhiyun tables. The workaround changes the TLB flushing routines to invalidate 948*4882a593Smuzhiyun entries regardless of the ASID. 949*4882a593Smuzhiyun 950*4882a593Smuzhiyunconfig ARM_ERRATA_743622 951*4882a593Smuzhiyun bool "ARM errata: Faulty hazard checking in the Store Buffer may lead to data corruption" 952*4882a593Smuzhiyun depends on CPU_V7 953*4882a593Smuzhiyun depends on !ARCH_MULTIPLATFORM 954*4882a593Smuzhiyun help 955*4882a593Smuzhiyun This option enables the workaround for the 743622 Cortex-A9 956*4882a593Smuzhiyun (r2p*) erratum. Under very rare conditions, a faulty 957*4882a593Smuzhiyun optimisation in the Cortex-A9 Store Buffer may lead to data 958*4882a593Smuzhiyun corruption. This workaround sets a specific bit in the diagnostic 959*4882a593Smuzhiyun register of the Cortex-A9 which disables the Store Buffer 960*4882a593Smuzhiyun optimisation, preventing the defect from occurring. This has no 961*4882a593Smuzhiyun visible impact on the overall performance or power consumption of the 962*4882a593Smuzhiyun processor. 963*4882a593Smuzhiyun 964*4882a593Smuzhiyunconfig ARM_ERRATA_751472 965*4882a593Smuzhiyun bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation" 966*4882a593Smuzhiyun depends on CPU_V7 967*4882a593Smuzhiyun depends on !ARCH_MULTIPLATFORM 968*4882a593Smuzhiyun help 969*4882a593Smuzhiyun This option enables the workaround for the 751472 Cortex-A9 (prior 970*4882a593Smuzhiyun to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the 971*4882a593Smuzhiyun completion of a following broadcasted operation if the second 972*4882a593Smuzhiyun operation is received by a CPU before the ICIALLUIS has completed, 973*4882a593Smuzhiyun potentially leading to corrupted entries in the cache or TLB. 974*4882a593Smuzhiyun 975*4882a593Smuzhiyunconfig ARM_ERRATA_754322 976*4882a593Smuzhiyun bool "ARM errata: possible faulty MMU translations following an ASID switch" 977*4882a593Smuzhiyun depends on CPU_V7 978*4882a593Smuzhiyun help 979*4882a593Smuzhiyun This option enables the workaround for the 754322 Cortex-A9 (r2p*, 980*4882a593Smuzhiyun r3p*) erratum. A speculative memory access may cause a page table walk 981*4882a593Smuzhiyun which starts prior to an ASID switch but completes afterwards. This 982*4882a593Smuzhiyun can populate the micro-TLB with a stale entry which may be hit with 983*4882a593Smuzhiyun the new ASID. This workaround places two dsb instructions in the mm 984*4882a593Smuzhiyun switching code so that no page table walks can cross the ASID switch. 985*4882a593Smuzhiyun 986*4882a593Smuzhiyunconfig ARM_ERRATA_754327 987*4882a593Smuzhiyun bool "ARM errata: no automatic Store Buffer drain" 988*4882a593Smuzhiyun depends on CPU_V7 && SMP 989*4882a593Smuzhiyun help 990*4882a593Smuzhiyun This option enables the workaround for the 754327 Cortex-A9 (prior to 991*4882a593Smuzhiyun r2p0) erratum. The Store Buffer does not have any automatic draining 992*4882a593Smuzhiyun mechanism and therefore a livelock may occur if an external agent 993*4882a593Smuzhiyun continuously polls a memory location waiting to observe an update. 994*4882a593Smuzhiyun This workaround defines cpu_relax() as smp_mb(), preventing correctly 995*4882a593Smuzhiyun written polling loops from denying visibility of updates to memory. 996*4882a593Smuzhiyun 997*4882a593Smuzhiyunconfig ARM_ERRATA_364296 998*4882a593Smuzhiyun bool "ARM errata: Possible cache data corruption with hit-under-miss enabled" 999*4882a593Smuzhiyun depends on CPU_V6 1000*4882a593Smuzhiyun help 1001*4882a593Smuzhiyun This options enables the workaround for the 364296 ARM1136 1002*4882a593Smuzhiyun r0p2 erratum (possible cache data corruption with 1003*4882a593Smuzhiyun hit-under-miss enabled). It sets the undocumented bit 31 in 1004*4882a593Smuzhiyun the auxiliary control register and the FI bit in the control 1005*4882a593Smuzhiyun register, thus disabling hit-under-miss without putting the 1006*4882a593Smuzhiyun processor into full low interrupt latency mode. ARM11MPCore 1007*4882a593Smuzhiyun is not affected. 1008*4882a593Smuzhiyun 1009*4882a593Smuzhiyunconfig ARM_ERRATA_764369 1010*4882a593Smuzhiyun bool "ARM errata: Data cache line maintenance operation by MVA may not succeed" 1011*4882a593Smuzhiyun depends on CPU_V7 && SMP 1012*4882a593Smuzhiyun help 1013*4882a593Smuzhiyun This option enables the workaround for erratum 764369 1014*4882a593Smuzhiyun affecting Cortex-A9 MPCore with two or more processors (all 1015*4882a593Smuzhiyun current revisions). Under certain timing circumstances, a data 1016*4882a593Smuzhiyun cache line maintenance operation by MVA targeting an Inner 1017*4882a593Smuzhiyun Shareable memory region may fail to proceed up to either the 1018*4882a593Smuzhiyun Point of Coherency or to the Point of Unification of the 1019*4882a593Smuzhiyun system. This workaround adds a DSB instruction before the 1020*4882a593Smuzhiyun relevant cache maintenance functions and sets a specific bit 1021*4882a593Smuzhiyun in the diagnostic control register of the SCU. 1022*4882a593Smuzhiyun 1023*4882a593Smuzhiyunconfig ARM_ERRATA_775420 1024*4882a593Smuzhiyun bool "ARM errata: A data cache maintenance operation which aborts, might lead to deadlock" 1025*4882a593Smuzhiyun depends on CPU_V7 1026*4882a593Smuzhiyun help 1027*4882a593Smuzhiyun This option enables the workaround for the 775420 Cortex-A9 (r2p2, 1028*4882a593Smuzhiyun r2p6,r2p8,r2p10,r3p0) erratum. In case a data cache maintenance 1029*4882a593Smuzhiyun operation aborts with MMU exception, it might cause the processor 1030*4882a593Smuzhiyun to deadlock. This workaround puts DSB before executing ISB if 1031*4882a593Smuzhiyun an abort may occur on cache maintenance. 1032*4882a593Smuzhiyun 1033*4882a593Smuzhiyunconfig ARM_ERRATA_798181 1034*4882a593Smuzhiyun bool "ARM errata: TLBI/DSB failure on Cortex-A15" 1035*4882a593Smuzhiyun depends on CPU_V7 && SMP 1036*4882a593Smuzhiyun help 1037*4882a593Smuzhiyun On Cortex-A15 (r0p0..r3p2) the TLBI*IS/DSB operations are not 1038*4882a593Smuzhiyun adequately shooting down all use of the old entries. This 1039*4882a593Smuzhiyun option enables the Linux kernel workaround for this erratum 1040*4882a593Smuzhiyun which sends an IPI to the CPUs that are running the same ASID 1041*4882a593Smuzhiyun as the one being invalidated. 1042*4882a593Smuzhiyun 1043*4882a593Smuzhiyunconfig ARM_ERRATA_773022 1044*4882a593Smuzhiyun bool "ARM errata: incorrect instructions may be executed from loop buffer" 1045*4882a593Smuzhiyun depends on CPU_V7 1046*4882a593Smuzhiyun help 1047*4882a593Smuzhiyun This option enables the workaround for the 773022 Cortex-A15 1048*4882a593Smuzhiyun (up to r0p4) erratum. In certain rare sequences of code, the 1049*4882a593Smuzhiyun loop buffer may deliver incorrect instructions. This 1050*4882a593Smuzhiyun workaround disables the loop buffer to avoid the erratum. 1051*4882a593Smuzhiyun 1052*4882a593Smuzhiyunconfig ARM_ERRATA_818325_852422 1053*4882a593Smuzhiyun bool "ARM errata: A12: some seqs of opposed cond code instrs => deadlock or corruption" 1054*4882a593Smuzhiyun depends on CPU_V7 1055*4882a593Smuzhiyun help 1056*4882a593Smuzhiyun This option enables the workaround for: 1057*4882a593Smuzhiyun - Cortex-A12 818325: Execution of an UNPREDICTABLE STR or STM 1058*4882a593Smuzhiyun instruction might deadlock. Fixed in r0p1. 1059*4882a593Smuzhiyun - Cortex-A12 852422: Execution of a sequence of instructions might 1060*4882a593Smuzhiyun lead to either a data corruption or a CPU deadlock. Not fixed in 1061*4882a593Smuzhiyun any Cortex-A12 cores yet. 1062*4882a593Smuzhiyun This workaround for all both errata involves setting bit[12] of the 1063*4882a593Smuzhiyun Feature Register. This bit disables an optimisation applied to a 1064*4882a593Smuzhiyun sequence of 2 instructions that use opposing condition codes. 1065*4882a593Smuzhiyun 1066*4882a593Smuzhiyunconfig ARM_ERRATA_821420 1067*4882a593Smuzhiyun bool "ARM errata: A12: sequence of VMOV to core registers might lead to a dead lock" 1068*4882a593Smuzhiyun depends on CPU_V7 1069*4882a593Smuzhiyun help 1070*4882a593Smuzhiyun This option enables the workaround for the 821420 Cortex-A12 1071*4882a593Smuzhiyun (all revs) erratum. In very rare timing conditions, a sequence 1072*4882a593Smuzhiyun of VMOV to Core registers instructions, for which the second 1073*4882a593Smuzhiyun one is in the shadow of a branch or abort, can lead to a 1074*4882a593Smuzhiyun deadlock when the VMOV instructions are issued out-of-order. 1075*4882a593Smuzhiyun 1076*4882a593Smuzhiyunconfig ARM_ERRATA_825619 1077*4882a593Smuzhiyun bool "ARM errata: A12: DMB NSHST/ISHST mixed ... might cause deadlock" 1078*4882a593Smuzhiyun depends on CPU_V7 1079*4882a593Smuzhiyun help 1080*4882a593Smuzhiyun This option enables the workaround for the 825619 Cortex-A12 1081*4882a593Smuzhiyun (all revs) erratum. Within rare timing constraints, executing a 1082*4882a593Smuzhiyun DMB NSHST or DMB ISHST instruction followed by a mix of Cacheable 1083*4882a593Smuzhiyun and Device/Strongly-Ordered loads and stores might cause deadlock 1084*4882a593Smuzhiyun 1085*4882a593Smuzhiyunconfig ARM_ERRATA_857271 1086*4882a593Smuzhiyun bool "ARM errata: A12: CPU might deadlock under some very rare internal conditions" 1087*4882a593Smuzhiyun depends on CPU_V7 1088*4882a593Smuzhiyun help 1089*4882a593Smuzhiyun This option enables the workaround for the 857271 Cortex-A12 1090*4882a593Smuzhiyun (all revs) erratum. Under very rare timing conditions, the CPU might 1091*4882a593Smuzhiyun hang. The workaround is expected to have a < 1% performance impact. 1092*4882a593Smuzhiyun 1093*4882a593Smuzhiyunconfig ARM_ERRATA_852421 1094*4882a593Smuzhiyun bool "ARM errata: A17: DMB ST might fail to create order between stores" 1095*4882a593Smuzhiyun depends on CPU_V7 1096*4882a593Smuzhiyun help 1097*4882a593Smuzhiyun This option enables the workaround for the 852421 Cortex-A17 1098*4882a593Smuzhiyun (r1p0, r1p1, r1p2) erratum. Under very rare timing conditions, 1099*4882a593Smuzhiyun execution of a DMB ST instruction might fail to properly order 1100*4882a593Smuzhiyun stores from GroupA and stores from GroupB. 1101*4882a593Smuzhiyun 1102*4882a593Smuzhiyunconfig ARM_ERRATA_852423 1103*4882a593Smuzhiyun bool "ARM errata: A17: some seqs of opposed cond code instrs => deadlock or corruption" 1104*4882a593Smuzhiyun depends on CPU_V7 1105*4882a593Smuzhiyun help 1106*4882a593Smuzhiyun This option enables the workaround for: 1107*4882a593Smuzhiyun - Cortex-A17 852423: Execution of a sequence of instructions might 1108*4882a593Smuzhiyun lead to either a data corruption or a CPU deadlock. Not fixed in 1109*4882a593Smuzhiyun any Cortex-A17 cores yet. 1110*4882a593Smuzhiyun This is identical to Cortex-A12 erratum 852422. It is a separate 1111*4882a593Smuzhiyun config option from the A12 erratum due to the way errata are checked 1112*4882a593Smuzhiyun for and handled. 1113*4882a593Smuzhiyun 1114*4882a593Smuzhiyunconfig ARM_ERRATA_857272 1115*4882a593Smuzhiyun bool "ARM errata: A17: CPU might deadlock under some very rare internal conditions" 1116*4882a593Smuzhiyun depends on CPU_V7 1117*4882a593Smuzhiyun help 1118*4882a593Smuzhiyun This option enables the workaround for the 857272 Cortex-A17 erratum. 1119*4882a593Smuzhiyun This erratum is not known to be fixed in any A17 revision. 1120*4882a593Smuzhiyun This is identical to Cortex-A12 erratum 857271. It is a separate 1121*4882a593Smuzhiyun config option from the A12 erratum due to the way errata are checked 1122*4882a593Smuzhiyun for and handled. 1123*4882a593Smuzhiyun 1124*4882a593Smuzhiyunendmenu 1125*4882a593Smuzhiyun 1126*4882a593Smuzhiyunsource "arch/arm/common/Kconfig" 1127*4882a593Smuzhiyun 1128*4882a593Smuzhiyunmenu "Bus support" 1129*4882a593Smuzhiyun 1130*4882a593Smuzhiyunconfig ISA 1131*4882a593Smuzhiyun bool 1132*4882a593Smuzhiyun help 1133*4882a593Smuzhiyun Find out whether you have ISA slots on your motherboard. ISA is the 1134*4882a593Smuzhiyun name of a bus system, i.e. the way the CPU talks to the other stuff 1135*4882a593Smuzhiyun inside your box. Other bus systems are PCI, EISA, MicroChannel 1136*4882a593Smuzhiyun (MCA) or VESA. ISA is an older system, now being displaced by PCI; 1137*4882a593Smuzhiyun newer boards don't support it. If you have ISA, say Y, otherwise N. 1138*4882a593Smuzhiyun 1139*4882a593Smuzhiyun# Select ISA DMA controller support 1140*4882a593Smuzhiyunconfig ISA_DMA 1141*4882a593Smuzhiyun bool 1142*4882a593Smuzhiyun select ISA_DMA_API 1143*4882a593Smuzhiyun 1144*4882a593Smuzhiyun# Select ISA DMA interface 1145*4882a593Smuzhiyunconfig ISA_DMA_API 1146*4882a593Smuzhiyun bool 1147*4882a593Smuzhiyun 1148*4882a593Smuzhiyunconfig PCI_NANOENGINE 1149*4882a593Smuzhiyun bool "BSE nanoEngine PCI support" 1150*4882a593Smuzhiyun depends on SA1100_NANOENGINE 1151*4882a593Smuzhiyun help 1152*4882a593Smuzhiyun Enable PCI on the BSE nanoEngine board. 1153*4882a593Smuzhiyun 1154*4882a593Smuzhiyunconfig ARM_ERRATA_814220 1155*4882a593Smuzhiyun bool "ARM errata: Cache maintenance by set/way operations can execute out of order" 1156*4882a593Smuzhiyun depends on CPU_V7 1157*4882a593Smuzhiyun help 1158*4882a593Smuzhiyun The v7 ARM states that all cache and branch predictor maintenance 1159*4882a593Smuzhiyun operations that do not specify an address execute, relative to 1160*4882a593Smuzhiyun each other, in program order. 1161*4882a593Smuzhiyun However, because of this erratum, an L2 set/way cache maintenance 1162*4882a593Smuzhiyun operation can overtake an L1 set/way cache maintenance operation. 1163*4882a593Smuzhiyun This ERRATA only affected the Cortex-A7 and present in r0p2, r0p3, 1164*4882a593Smuzhiyun r0p4, r0p5. 1165*4882a593Smuzhiyun 1166*4882a593Smuzhiyunendmenu 1167*4882a593Smuzhiyun 1168*4882a593Smuzhiyunmenu "Kernel Features" 1169*4882a593Smuzhiyun 1170*4882a593Smuzhiyunconfig HAVE_SMP 1171*4882a593Smuzhiyun bool 1172*4882a593Smuzhiyun help 1173*4882a593Smuzhiyun This option should be selected by machines which have an SMP- 1174*4882a593Smuzhiyun capable CPU. 1175*4882a593Smuzhiyun 1176*4882a593Smuzhiyun The only effect of this option is to make the SMP-related 1177*4882a593Smuzhiyun options available to the user for configuration. 1178*4882a593Smuzhiyun 1179*4882a593Smuzhiyunconfig SMP 1180*4882a593Smuzhiyun bool "Symmetric Multi-Processing" 1181*4882a593Smuzhiyun depends on CPU_V6K || CPU_V7 1182*4882a593Smuzhiyun depends on GENERIC_CLOCKEVENTS 1183*4882a593Smuzhiyun depends on HAVE_SMP 1184*4882a593Smuzhiyun depends on MMU || ARM_MPU 1185*4882a593Smuzhiyun select IRQ_WORK 1186*4882a593Smuzhiyun help 1187*4882a593Smuzhiyun This enables support for systems with more than one CPU. If you have 1188*4882a593Smuzhiyun a system with only one CPU, say N. If you have a system with more 1189*4882a593Smuzhiyun than one CPU, say Y. 1190*4882a593Smuzhiyun 1191*4882a593Smuzhiyun If you say N here, the kernel will run on uni- and multiprocessor 1192*4882a593Smuzhiyun machines, but will use only one CPU of a multiprocessor machine. If 1193*4882a593Smuzhiyun you say Y here, the kernel will run on many, but not all, 1194*4882a593Smuzhiyun uniprocessor machines. On a uniprocessor machine, the kernel 1195*4882a593Smuzhiyun will run faster if you say N here. 1196*4882a593Smuzhiyun 1197*4882a593Smuzhiyun See also <file:Documentation/x86/i386/IO-APIC.rst>, 1198*4882a593Smuzhiyun <file:Documentation/admin-guide/lockup-watchdogs.rst> and the SMP-HOWTO available at 1199*4882a593Smuzhiyun <http://tldp.org/HOWTO/SMP-HOWTO.html>. 1200*4882a593Smuzhiyun 1201*4882a593Smuzhiyun If you don't know what to do here, say N. 1202*4882a593Smuzhiyun 1203*4882a593Smuzhiyunconfig SMP_ON_UP 1204*4882a593Smuzhiyun bool "Allow booting SMP kernel on uniprocessor systems" 1205*4882a593Smuzhiyun depends on SMP && !XIP_KERNEL && MMU 1206*4882a593Smuzhiyun default y 1207*4882a593Smuzhiyun help 1208*4882a593Smuzhiyun SMP kernels contain instructions which fail on non-SMP processors. 1209*4882a593Smuzhiyun Enabling this option allows the kernel to modify itself to make 1210*4882a593Smuzhiyun these instructions safe. Disabling it allows about 1K of space 1211*4882a593Smuzhiyun savings. 1212*4882a593Smuzhiyun 1213*4882a593Smuzhiyun If you don't know what to do here, say Y. 1214*4882a593Smuzhiyun 1215*4882a593Smuzhiyunconfig ARM_CPU_TOPOLOGY 1216*4882a593Smuzhiyun bool "Support cpu topology definition" 1217*4882a593Smuzhiyun depends on SMP && CPU_V7 1218*4882a593Smuzhiyun default y 1219*4882a593Smuzhiyun help 1220*4882a593Smuzhiyun Support ARM cpu topology definition. The MPIDR register defines 1221*4882a593Smuzhiyun affinity between processors which is then used to describe the cpu 1222*4882a593Smuzhiyun topology of an ARM System. 1223*4882a593Smuzhiyun 1224*4882a593Smuzhiyunconfig SCHED_MC 1225*4882a593Smuzhiyun bool "Multi-core scheduler support" 1226*4882a593Smuzhiyun depends on ARM_CPU_TOPOLOGY 1227*4882a593Smuzhiyun help 1228*4882a593Smuzhiyun Multi-core scheduler support improves the CPU scheduler's decision 1229*4882a593Smuzhiyun making when dealing with multi-core CPU chips at a cost of slightly 1230*4882a593Smuzhiyun increased overhead in some places. If unsure say N here. 1231*4882a593Smuzhiyun 1232*4882a593Smuzhiyunconfig SCHED_SMT 1233*4882a593Smuzhiyun bool "SMT scheduler support" 1234*4882a593Smuzhiyun depends on ARM_CPU_TOPOLOGY 1235*4882a593Smuzhiyun help 1236*4882a593Smuzhiyun Improves the CPU scheduler's decision making when dealing with 1237*4882a593Smuzhiyun MultiThreading at a cost of slightly increased overhead in some 1238*4882a593Smuzhiyun places. If unsure say N here. 1239*4882a593Smuzhiyun 1240*4882a593Smuzhiyunconfig HAVE_ARM_SCU 1241*4882a593Smuzhiyun bool 1242*4882a593Smuzhiyun help 1243*4882a593Smuzhiyun This option enables support for the ARM snoop control unit 1244*4882a593Smuzhiyun 1245*4882a593Smuzhiyunconfig HAVE_ARM_ARCH_TIMER 1246*4882a593Smuzhiyun bool "Architected timer support" 1247*4882a593Smuzhiyun depends on CPU_V7 1248*4882a593Smuzhiyun select ARM_ARCH_TIMER 1249*4882a593Smuzhiyun help 1250*4882a593Smuzhiyun This option enables support for the ARM architected timer 1251*4882a593Smuzhiyun 1252*4882a593Smuzhiyunconfig HAVE_ARM_TWD 1253*4882a593Smuzhiyun bool 1254*4882a593Smuzhiyun help 1255*4882a593Smuzhiyun This options enables support for the ARM timer and watchdog unit 1256*4882a593Smuzhiyun 1257*4882a593Smuzhiyunconfig MCPM 1258*4882a593Smuzhiyun bool "Multi-Cluster Power Management" 1259*4882a593Smuzhiyun depends on CPU_V7 && SMP 1260*4882a593Smuzhiyun help 1261*4882a593Smuzhiyun This option provides the common power management infrastructure 1262*4882a593Smuzhiyun for (multi-)cluster based systems, such as big.LITTLE based 1263*4882a593Smuzhiyun systems. 1264*4882a593Smuzhiyun 1265*4882a593Smuzhiyunconfig MCPM_QUAD_CLUSTER 1266*4882a593Smuzhiyun bool 1267*4882a593Smuzhiyun depends on MCPM 1268*4882a593Smuzhiyun help 1269*4882a593Smuzhiyun To avoid wasting resources unnecessarily, MCPM only supports up 1270*4882a593Smuzhiyun to 2 clusters by default. 1271*4882a593Smuzhiyun Platforms with 3 or 4 clusters that use MCPM must select this 1272*4882a593Smuzhiyun option to allow the additional clusters to be managed. 1273*4882a593Smuzhiyun 1274*4882a593Smuzhiyunconfig BIG_LITTLE 1275*4882a593Smuzhiyun bool "big.LITTLE support (Experimental)" 1276*4882a593Smuzhiyun depends on CPU_V7 && SMP 1277*4882a593Smuzhiyun select MCPM 1278*4882a593Smuzhiyun help 1279*4882a593Smuzhiyun This option enables support selections for the big.LITTLE 1280*4882a593Smuzhiyun system architecture. 1281*4882a593Smuzhiyun 1282*4882a593Smuzhiyunconfig BL_SWITCHER 1283*4882a593Smuzhiyun bool "big.LITTLE switcher support" 1284*4882a593Smuzhiyun depends on BIG_LITTLE && MCPM && HOTPLUG_CPU && ARM_GIC 1285*4882a593Smuzhiyun select CPU_PM 1286*4882a593Smuzhiyun help 1287*4882a593Smuzhiyun The big.LITTLE "switcher" provides the core functionality to 1288*4882a593Smuzhiyun transparently handle transition between a cluster of A15's 1289*4882a593Smuzhiyun and a cluster of A7's in a big.LITTLE system. 1290*4882a593Smuzhiyun 1291*4882a593Smuzhiyunconfig BL_SWITCHER_DUMMY_IF 1292*4882a593Smuzhiyun tristate "Simple big.LITTLE switcher user interface" 1293*4882a593Smuzhiyun depends on BL_SWITCHER && DEBUG_KERNEL 1294*4882a593Smuzhiyun help 1295*4882a593Smuzhiyun This is a simple and dummy char dev interface to control 1296*4882a593Smuzhiyun the big.LITTLE switcher core code. It is meant for 1297*4882a593Smuzhiyun debugging purposes only. 1298*4882a593Smuzhiyun 1299*4882a593Smuzhiyunchoice 1300*4882a593Smuzhiyun prompt "Memory split" 1301*4882a593Smuzhiyun depends on MMU 1302*4882a593Smuzhiyun default VMSPLIT_3G 1303*4882a593Smuzhiyun help 1304*4882a593Smuzhiyun Select the desired split between kernel and user memory. 1305*4882a593Smuzhiyun 1306*4882a593Smuzhiyun If you are not absolutely sure what you are doing, leave this 1307*4882a593Smuzhiyun option alone! 1308*4882a593Smuzhiyun 1309*4882a593Smuzhiyun config VMSPLIT_3G 1310*4882a593Smuzhiyun bool "3G/1G user/kernel split" 1311*4882a593Smuzhiyun config VMSPLIT_3G_OPT 1312*4882a593Smuzhiyun depends on !ARM_LPAE 1313*4882a593Smuzhiyun bool "3G/1G user/kernel split (for full 1G low memory)" 1314*4882a593Smuzhiyun config VMSPLIT_2G 1315*4882a593Smuzhiyun bool "2G/2G user/kernel split" 1316*4882a593Smuzhiyun config VMSPLIT_1G 1317*4882a593Smuzhiyun bool "1G/3G user/kernel split" 1318*4882a593Smuzhiyunendchoice 1319*4882a593Smuzhiyun 1320*4882a593Smuzhiyunconfig PAGE_OFFSET 1321*4882a593Smuzhiyun hex 1322*4882a593Smuzhiyun default PHYS_OFFSET if !MMU 1323*4882a593Smuzhiyun default 0x40000000 if VMSPLIT_1G 1324*4882a593Smuzhiyun default 0x80000000 if VMSPLIT_2G 1325*4882a593Smuzhiyun default 0xB0000000 if VMSPLIT_3G_OPT 1326*4882a593Smuzhiyun default 0xC0000000 1327*4882a593Smuzhiyun 1328*4882a593Smuzhiyunconfig NR_CPUS 1329*4882a593Smuzhiyun int "Maximum number of CPUs (2-32)" 1330*4882a593Smuzhiyun range 2 32 1331*4882a593Smuzhiyun depends on SMP 1332*4882a593Smuzhiyun default "4" 1333*4882a593Smuzhiyun 1334*4882a593Smuzhiyunconfig HOTPLUG_CPU 1335*4882a593Smuzhiyun bool "Support for hot-pluggable CPUs" 1336*4882a593Smuzhiyun depends on SMP 1337*4882a593Smuzhiyun select GENERIC_IRQ_MIGRATION 1338*4882a593Smuzhiyun help 1339*4882a593Smuzhiyun Say Y here to experiment with turning CPUs off and on. CPUs 1340*4882a593Smuzhiyun can be controlled through /sys/devices/system/cpu. 1341*4882a593Smuzhiyun 1342*4882a593Smuzhiyunconfig ARM_PSCI 1343*4882a593Smuzhiyun bool "Support for the ARM Power State Coordination Interface (PSCI)" 1344*4882a593Smuzhiyun depends on HAVE_ARM_SMCCC 1345*4882a593Smuzhiyun select ARM_PSCI_FW 1346*4882a593Smuzhiyun help 1347*4882a593Smuzhiyun Say Y here if you want Linux to communicate with system firmware 1348*4882a593Smuzhiyun implementing the PSCI specification for CPU-centric power 1349*4882a593Smuzhiyun management operations described in ARM document number ARM DEN 1350*4882a593Smuzhiyun 0022A ("Power State Coordination Interface System Software on 1351*4882a593Smuzhiyun ARM processors"). 1352*4882a593Smuzhiyun 1353*4882a593Smuzhiyun# The GPIO number here must be sorted by descending number. In case of 1354*4882a593Smuzhiyun# a multiplatform kernel, we just want the highest value required by the 1355*4882a593Smuzhiyun# selected platforms. 1356*4882a593Smuzhiyunconfig ARCH_NR_GPIO 1357*4882a593Smuzhiyun int 1358*4882a593Smuzhiyun default 2048 if ARCH_SOCFPGA 1359*4882a593Smuzhiyun default 1024 if ARCH_BRCMSTB || ARCH_RENESAS || ARCH_TEGRA || \ 1360*4882a593Smuzhiyun ARCH_ZYNQ || ARCH_ASPEED 1361*4882a593Smuzhiyun default 512 if ARCH_EXYNOS || ARCH_KEYSTONE || SOC_OMAP5 || \ 1362*4882a593Smuzhiyun SOC_DRA7XX || ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 1363*4882a593Smuzhiyun default 416 if ARCH_SUNXI 1364*4882a593Smuzhiyun default 392 if ARCH_U8500 1365*4882a593Smuzhiyun default 352 if ARCH_VT8500 1366*4882a593Smuzhiyun default 288 if ARCH_ROCKCHIP 1367*4882a593Smuzhiyun default 264 if MACH_H4700 1368*4882a593Smuzhiyun default 0 1369*4882a593Smuzhiyun help 1370*4882a593Smuzhiyun Maximum number of GPIOs in the system. 1371*4882a593Smuzhiyun 1372*4882a593Smuzhiyun If unsure, leave the default value. 1373*4882a593Smuzhiyun 1374*4882a593Smuzhiyunconfig HZ_FIXED 1375*4882a593Smuzhiyun int 1376*4882a593Smuzhiyun default 200 if ARCH_EBSA110 1377*4882a593Smuzhiyun default 128 if SOC_AT91RM9200 1378*4882a593Smuzhiyun default 0 1379*4882a593Smuzhiyun 1380*4882a593Smuzhiyunchoice 1381*4882a593Smuzhiyun depends on HZ_FIXED = 0 1382*4882a593Smuzhiyun prompt "Timer frequency" 1383*4882a593Smuzhiyun 1384*4882a593Smuzhiyunconfig HZ_100 1385*4882a593Smuzhiyun bool "100 Hz" 1386*4882a593Smuzhiyun 1387*4882a593Smuzhiyunconfig HZ_200 1388*4882a593Smuzhiyun bool "200 Hz" 1389*4882a593Smuzhiyun 1390*4882a593Smuzhiyunconfig HZ_250 1391*4882a593Smuzhiyun bool "250 Hz" 1392*4882a593Smuzhiyun 1393*4882a593Smuzhiyunconfig HZ_300 1394*4882a593Smuzhiyun bool "300 Hz" 1395*4882a593Smuzhiyun 1396*4882a593Smuzhiyunconfig HZ_500 1397*4882a593Smuzhiyun bool "500 Hz" 1398*4882a593Smuzhiyun 1399*4882a593Smuzhiyunconfig HZ_1000 1400*4882a593Smuzhiyun bool "1000 Hz" 1401*4882a593Smuzhiyun 1402*4882a593Smuzhiyunendchoice 1403*4882a593Smuzhiyun 1404*4882a593Smuzhiyunconfig HZ 1405*4882a593Smuzhiyun int 1406*4882a593Smuzhiyun default HZ_FIXED if HZ_FIXED != 0 1407*4882a593Smuzhiyun default 100 if HZ_100 1408*4882a593Smuzhiyun default 200 if HZ_200 1409*4882a593Smuzhiyun default 250 if HZ_250 1410*4882a593Smuzhiyun default 300 if HZ_300 1411*4882a593Smuzhiyun default 500 if HZ_500 1412*4882a593Smuzhiyun default 1000 1413*4882a593Smuzhiyun 1414*4882a593Smuzhiyunconfig SCHED_HRTICK 1415*4882a593Smuzhiyun def_bool HIGH_RES_TIMERS 1416*4882a593Smuzhiyun 1417*4882a593Smuzhiyunconfig THUMB2_KERNEL 1418*4882a593Smuzhiyun bool "Compile the kernel in Thumb-2 mode" if !CPU_THUMBONLY 1419*4882a593Smuzhiyun depends on (CPU_V7 || CPU_V7M) && !CPU_V6 && !CPU_V6K 1420*4882a593Smuzhiyun default y if CPU_THUMBONLY 1421*4882a593Smuzhiyun select ARM_UNWIND 1422*4882a593Smuzhiyun help 1423*4882a593Smuzhiyun By enabling this option, the kernel will be compiled in 1424*4882a593Smuzhiyun Thumb-2 mode. 1425*4882a593Smuzhiyun 1426*4882a593Smuzhiyun If unsure, say N. 1427*4882a593Smuzhiyun 1428*4882a593Smuzhiyunconfig ARM_PATCH_IDIV 1429*4882a593Smuzhiyun bool "Runtime patch udiv/sdiv instructions into __aeabi_{u}idiv()" 1430*4882a593Smuzhiyun depends on CPU_32v7 && !XIP_KERNEL 1431*4882a593Smuzhiyun default y 1432*4882a593Smuzhiyun help 1433*4882a593Smuzhiyun The ARM compiler inserts calls to __aeabi_idiv() and 1434*4882a593Smuzhiyun __aeabi_uidiv() when it needs to perform division on signed 1435*4882a593Smuzhiyun and unsigned integers. Some v7 CPUs have support for the sdiv 1436*4882a593Smuzhiyun and udiv instructions that can be used to implement those 1437*4882a593Smuzhiyun functions. 1438*4882a593Smuzhiyun 1439*4882a593Smuzhiyun Enabling this option allows the kernel to modify itself to 1440*4882a593Smuzhiyun replace the first two instructions of these library functions 1441*4882a593Smuzhiyun with the sdiv or udiv plus "bx lr" instructions when the CPU 1442*4882a593Smuzhiyun it is running on supports them. Typically this will be faster 1443*4882a593Smuzhiyun and less power intensive than running the original library 1444*4882a593Smuzhiyun code to do integer division. 1445*4882a593Smuzhiyun 1446*4882a593Smuzhiyunconfig AEABI 1447*4882a593Smuzhiyun bool "Use the ARM EABI to compile the kernel" if !CPU_V7 && \ 1448*4882a593Smuzhiyun !CPU_V7M && !CPU_V6 && !CPU_V6K && !CC_IS_CLANG 1449*4882a593Smuzhiyun default CPU_V7 || CPU_V7M || CPU_V6 || CPU_V6K || CC_IS_CLANG 1450*4882a593Smuzhiyun help 1451*4882a593Smuzhiyun This option allows for the kernel to be compiled using the latest 1452*4882a593Smuzhiyun ARM ABI (aka EABI). This is only useful if you are using a user 1453*4882a593Smuzhiyun space environment that is also compiled with EABI. 1454*4882a593Smuzhiyun 1455*4882a593Smuzhiyun Since there are major incompatibilities between the legacy ABI and 1456*4882a593Smuzhiyun EABI, especially with regard to structure member alignment, this 1457*4882a593Smuzhiyun option also changes the kernel syscall calling convention to 1458*4882a593Smuzhiyun disambiguate both ABIs and allow for backward compatibility support 1459*4882a593Smuzhiyun (selected with CONFIG_OABI_COMPAT). 1460*4882a593Smuzhiyun 1461*4882a593Smuzhiyun To use this you need GCC version 4.0.0 or later. 1462*4882a593Smuzhiyun 1463*4882a593Smuzhiyunconfig OABI_COMPAT 1464*4882a593Smuzhiyun bool "Allow old ABI binaries to run with this kernel (EXPERIMENTAL)" 1465*4882a593Smuzhiyun depends on AEABI && !THUMB2_KERNEL 1466*4882a593Smuzhiyun help 1467*4882a593Smuzhiyun This option preserves the old syscall interface along with the 1468*4882a593Smuzhiyun new (ARM EABI) one. It also provides a compatibility layer to 1469*4882a593Smuzhiyun intercept syscalls that have structure arguments which layout 1470*4882a593Smuzhiyun in memory differs between the legacy ABI and the new ARM EABI 1471*4882a593Smuzhiyun (only for non "thumb" binaries). This option adds a tiny 1472*4882a593Smuzhiyun overhead to all syscalls and produces a slightly larger kernel. 1473*4882a593Smuzhiyun 1474*4882a593Smuzhiyun The seccomp filter system will not be available when this is 1475*4882a593Smuzhiyun selected, since there is no way yet to sensibly distinguish 1476*4882a593Smuzhiyun between calling conventions during filtering. 1477*4882a593Smuzhiyun 1478*4882a593Smuzhiyun If you know you'll be using only pure EABI user space then you 1479*4882a593Smuzhiyun can say N here. If this option is not selected and you attempt 1480*4882a593Smuzhiyun to execute a legacy ABI binary then the result will be 1481*4882a593Smuzhiyun UNPREDICTABLE (in fact it can be predicted that it won't work 1482*4882a593Smuzhiyun at all). If in doubt say N. 1483*4882a593Smuzhiyun 1484*4882a593Smuzhiyunconfig ARCH_SELECT_MEMORY_MODEL 1485*4882a593Smuzhiyun bool 1486*4882a593Smuzhiyun 1487*4882a593Smuzhiyunconfig ARCH_FLATMEM_ENABLE 1488*4882a593Smuzhiyun bool 1489*4882a593Smuzhiyun 1490*4882a593Smuzhiyunconfig ARCH_SPARSEMEM_ENABLE 1491*4882a593Smuzhiyun bool 1492*4882a593Smuzhiyun select SPARSEMEM_STATIC if SPARSEMEM 1493*4882a593Smuzhiyun 1494*4882a593Smuzhiyunconfig HAVE_ARCH_PFN_VALID 1495*4882a593Smuzhiyun def_bool y 1496*4882a593Smuzhiyun 1497*4882a593Smuzhiyunconfig HIGHMEM 1498*4882a593Smuzhiyun bool "High Memory Support" 1499*4882a593Smuzhiyun depends on MMU 1500*4882a593Smuzhiyun help 1501*4882a593Smuzhiyun The address space of ARM processors is only 4 Gigabytes large 1502*4882a593Smuzhiyun and it has to accommodate user address space, kernel address 1503*4882a593Smuzhiyun space as well as some memory mapped IO. That means that, if you 1504*4882a593Smuzhiyun have a large amount of physical memory and/or IO, not all of the 1505*4882a593Smuzhiyun memory can be "permanently mapped" by the kernel. The physical 1506*4882a593Smuzhiyun memory that is not permanently mapped is called "high memory". 1507*4882a593Smuzhiyun 1508*4882a593Smuzhiyun Depending on the selected kernel/user memory split, minimum 1509*4882a593Smuzhiyun vmalloc space and actual amount of RAM, you may not need this 1510*4882a593Smuzhiyun option which should result in a slightly faster kernel. 1511*4882a593Smuzhiyun 1512*4882a593Smuzhiyun If unsure, say n. 1513*4882a593Smuzhiyun 1514*4882a593Smuzhiyunconfig HIGHPTE 1515*4882a593Smuzhiyun bool "Allocate 2nd-level pagetables from highmem" if EXPERT 1516*4882a593Smuzhiyun depends on HIGHMEM 1517*4882a593Smuzhiyun default y 1518*4882a593Smuzhiyun help 1519*4882a593Smuzhiyun The VM uses one page of physical memory for each page table. 1520*4882a593Smuzhiyun For systems with a lot of processes, this can use a lot of 1521*4882a593Smuzhiyun precious low memory, eventually leading to low memory being 1522*4882a593Smuzhiyun consumed by page tables. Setting this option will allow 1523*4882a593Smuzhiyun user-space 2nd level page tables to reside in high memory. 1524*4882a593Smuzhiyun 1525*4882a593Smuzhiyunconfig CPU_SW_DOMAIN_PAN 1526*4882a593Smuzhiyun bool "Enable use of CPU domains to implement privileged no-access" 1527*4882a593Smuzhiyun depends on MMU && !ARM_LPAE 1528*4882a593Smuzhiyun default y 1529*4882a593Smuzhiyun help 1530*4882a593Smuzhiyun Increase kernel security by ensuring that normal kernel accesses 1531*4882a593Smuzhiyun are unable to access userspace addresses. This can help prevent 1532*4882a593Smuzhiyun use-after-free bugs becoming an exploitable privilege escalation 1533*4882a593Smuzhiyun by ensuring that magic values (such as LIST_POISON) will always 1534*4882a593Smuzhiyun fault when dereferenced. 1535*4882a593Smuzhiyun 1536*4882a593Smuzhiyun CPUs with low-vector mappings use a best-efforts implementation. 1537*4882a593Smuzhiyun Their lower 1MB needs to remain accessible for the vectors, but 1538*4882a593Smuzhiyun the remainder of userspace will become appropriately inaccessible. 1539*4882a593Smuzhiyun 1540*4882a593Smuzhiyunconfig HW_PERF_EVENTS 1541*4882a593Smuzhiyun def_bool y 1542*4882a593Smuzhiyun depends on ARM_PMU 1543*4882a593Smuzhiyun 1544*4882a593Smuzhiyunconfig SYS_SUPPORTS_HUGETLBFS 1545*4882a593Smuzhiyun def_bool y 1546*4882a593Smuzhiyun depends on ARM_LPAE 1547*4882a593Smuzhiyun 1548*4882a593Smuzhiyunconfig HAVE_ARCH_TRANSPARENT_HUGEPAGE 1549*4882a593Smuzhiyun def_bool y 1550*4882a593Smuzhiyun depends on ARM_LPAE 1551*4882a593Smuzhiyun 1552*4882a593Smuzhiyunconfig ARCH_WANT_GENERAL_HUGETLB 1553*4882a593Smuzhiyun def_bool y 1554*4882a593Smuzhiyun 1555*4882a593Smuzhiyunconfig ARM_MODULE_PLTS 1556*4882a593Smuzhiyun bool "Use PLTs to allow module memory to spill over into vmalloc area" 1557*4882a593Smuzhiyun depends on MODULES 1558*4882a593Smuzhiyun default y 1559*4882a593Smuzhiyun help 1560*4882a593Smuzhiyun Allocate PLTs when loading modules so that jumps and calls whose 1561*4882a593Smuzhiyun targets are too far away for their relative offsets to be encoded 1562*4882a593Smuzhiyun in the instructions themselves can be bounced via veneers in the 1563*4882a593Smuzhiyun module's PLT. This allows modules to be allocated in the generic 1564*4882a593Smuzhiyun vmalloc area after the dedicated module memory area has been 1565*4882a593Smuzhiyun exhausted. The modules will use slightly more memory, but after 1566*4882a593Smuzhiyun rounding up to page size, the actual memory footprint is usually 1567*4882a593Smuzhiyun the same. 1568*4882a593Smuzhiyun 1569*4882a593Smuzhiyun Disabling this is usually safe for small single-platform 1570*4882a593Smuzhiyun configurations. If unsure, say y. 1571*4882a593Smuzhiyun 1572*4882a593Smuzhiyunconfig FORCE_MAX_ZONEORDER 1573*4882a593Smuzhiyun int "Maximum zone order" 1574*4882a593Smuzhiyun default "12" if SOC_AM33XX 1575*4882a593Smuzhiyun default "9" if SA1111 || ARCH_EFM32 1576*4882a593Smuzhiyun default "11" 1577*4882a593Smuzhiyun help 1578*4882a593Smuzhiyun The kernel memory allocator divides physically contiguous memory 1579*4882a593Smuzhiyun blocks into "zones", where each zone is a power of two number of 1580*4882a593Smuzhiyun pages. This option selects the largest power of two that the kernel 1581*4882a593Smuzhiyun keeps in the memory allocator. If you need to allocate very large 1582*4882a593Smuzhiyun blocks of physically contiguous memory, then you may need to 1583*4882a593Smuzhiyun increase this value. 1584*4882a593Smuzhiyun 1585*4882a593Smuzhiyun This config option is actually maximum order plus one. For example, 1586*4882a593Smuzhiyun a value of 11 means that the largest free memory block is 2^10 pages. 1587*4882a593Smuzhiyun 1588*4882a593Smuzhiyunconfig ALIGNMENT_TRAP 1589*4882a593Smuzhiyun bool 1590*4882a593Smuzhiyun depends on CPU_CP15_MMU 1591*4882a593Smuzhiyun default y if !ARCH_EBSA110 1592*4882a593Smuzhiyun select HAVE_PROC_CPU if PROC_FS 1593*4882a593Smuzhiyun help 1594*4882a593Smuzhiyun ARM processors cannot fetch/store information which is not 1595*4882a593Smuzhiyun naturally aligned on the bus, i.e., a 4 byte fetch must start at an 1596*4882a593Smuzhiyun address divisible by 4. On 32-bit ARM processors, these non-aligned 1597*4882a593Smuzhiyun fetch/store instructions will be emulated in software if you say 1598*4882a593Smuzhiyun here, which has a severe performance impact. This is necessary for 1599*4882a593Smuzhiyun correct operation of some network protocols. With an IP-only 1600*4882a593Smuzhiyun configuration it is safe to say N, otherwise say Y. 1601*4882a593Smuzhiyun 1602*4882a593Smuzhiyunconfig UACCESS_WITH_MEMCPY 1603*4882a593Smuzhiyun bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()" 1604*4882a593Smuzhiyun depends on MMU 1605*4882a593Smuzhiyun default y if CPU_FEROCEON 1606*4882a593Smuzhiyun help 1607*4882a593Smuzhiyun Implement faster copy_to_user and clear_user methods for CPU 1608*4882a593Smuzhiyun cores where a 8-word STM instruction give significantly higher 1609*4882a593Smuzhiyun memory write throughput than a sequence of individual 32bit stores. 1610*4882a593Smuzhiyun 1611*4882a593Smuzhiyun A possible side effect is a slight increase in scheduling latency 1612*4882a593Smuzhiyun between threads sharing the same address space if they invoke 1613*4882a593Smuzhiyun such copy operations with large buffers. 1614*4882a593Smuzhiyun 1615*4882a593Smuzhiyun However, if the CPU data cache is using a write-allocate mode, 1616*4882a593Smuzhiyun this option is unlikely to provide any performance gain. 1617*4882a593Smuzhiyun 1618*4882a593Smuzhiyunconfig PARAVIRT 1619*4882a593Smuzhiyun bool "Enable paravirtualization code" 1620*4882a593Smuzhiyun help 1621*4882a593Smuzhiyun This changes the kernel so it can modify itself when it is run 1622*4882a593Smuzhiyun under a hypervisor, potentially improving performance significantly 1623*4882a593Smuzhiyun over full virtualization. 1624*4882a593Smuzhiyun 1625*4882a593Smuzhiyunconfig PARAVIRT_TIME_ACCOUNTING 1626*4882a593Smuzhiyun bool "Paravirtual steal time accounting" 1627*4882a593Smuzhiyun select PARAVIRT 1628*4882a593Smuzhiyun help 1629*4882a593Smuzhiyun Select this option to enable fine granularity task steal time 1630*4882a593Smuzhiyun accounting. Time spent executing other tasks in parallel with 1631*4882a593Smuzhiyun the current vCPU is discounted from the vCPU power. To account for 1632*4882a593Smuzhiyun that, there can be a small performance impact. 1633*4882a593Smuzhiyun 1634*4882a593Smuzhiyun If in doubt, say N here. 1635*4882a593Smuzhiyun 1636*4882a593Smuzhiyunconfig XEN_DOM0 1637*4882a593Smuzhiyun def_bool y 1638*4882a593Smuzhiyun depends on XEN 1639*4882a593Smuzhiyun 1640*4882a593Smuzhiyunconfig XEN 1641*4882a593Smuzhiyun bool "Xen guest support on ARM" 1642*4882a593Smuzhiyun depends on ARM && AEABI && OF 1643*4882a593Smuzhiyun depends on CPU_V7 && !CPU_V6 1644*4882a593Smuzhiyun depends on !GENERIC_ATOMIC64 1645*4882a593Smuzhiyun depends on MMU 1646*4882a593Smuzhiyun select ARCH_DMA_ADDR_T_64BIT 1647*4882a593Smuzhiyun select ARM_PSCI 1648*4882a593Smuzhiyun select SWIOTLB 1649*4882a593Smuzhiyun select SWIOTLB_XEN 1650*4882a593Smuzhiyun select PARAVIRT 1651*4882a593Smuzhiyun help 1652*4882a593Smuzhiyun Say Y if you want to run Linux in a Virtual Machine on Xen on ARM. 1653*4882a593Smuzhiyun 1654*4882a593Smuzhiyunconfig STACKPROTECTOR_PER_TASK 1655*4882a593Smuzhiyun bool "Use a unique stack canary value for each task" 1656*4882a593Smuzhiyun depends on GCC_PLUGINS && STACKPROTECTOR && SMP && !XIP_DEFLATED_DATA 1657*4882a593Smuzhiyun select GCC_PLUGIN_ARM_SSP_PER_TASK 1658*4882a593Smuzhiyun default y 1659*4882a593Smuzhiyun help 1660*4882a593Smuzhiyun Due to the fact that GCC uses an ordinary symbol reference from 1661*4882a593Smuzhiyun which to load the value of the stack canary, this value can only 1662*4882a593Smuzhiyun change at reboot time on SMP systems, and all tasks running in the 1663*4882a593Smuzhiyun kernel's address space are forced to use the same canary value for 1664*4882a593Smuzhiyun the entire duration that the system is up. 1665*4882a593Smuzhiyun 1666*4882a593Smuzhiyun Enable this option to switch to a different method that uses a 1667*4882a593Smuzhiyun different canary value for each task. 1668*4882a593Smuzhiyun 1669*4882a593Smuzhiyunendmenu 1670*4882a593Smuzhiyun 1671*4882a593Smuzhiyunmenu "Boot options" 1672*4882a593Smuzhiyun 1673*4882a593Smuzhiyunconfig USE_OF 1674*4882a593Smuzhiyun bool "Flattened Device Tree support" 1675*4882a593Smuzhiyun select IRQ_DOMAIN 1676*4882a593Smuzhiyun select OF 1677*4882a593Smuzhiyun help 1678*4882a593Smuzhiyun Include support for flattened device tree machine descriptions. 1679*4882a593Smuzhiyun 1680*4882a593Smuzhiyunconfig ATAGS 1681*4882a593Smuzhiyun bool "Support for the traditional ATAGS boot data passing" if USE_OF 1682*4882a593Smuzhiyun default y 1683*4882a593Smuzhiyun help 1684*4882a593Smuzhiyun This is the traditional way of passing data to the kernel at boot 1685*4882a593Smuzhiyun time. If you are solely relying on the flattened device tree (or 1686*4882a593Smuzhiyun the ARM_ATAG_DTB_COMPAT option) then you may unselect this option 1687*4882a593Smuzhiyun to remove ATAGS support from your kernel binary. If unsure, 1688*4882a593Smuzhiyun leave this to y. 1689*4882a593Smuzhiyun 1690*4882a593Smuzhiyunconfig DEPRECATED_PARAM_STRUCT 1691*4882a593Smuzhiyun bool "Provide old way to pass kernel parameters" 1692*4882a593Smuzhiyun depends on ATAGS 1693*4882a593Smuzhiyun help 1694*4882a593Smuzhiyun This was deprecated in 2001 and announced to live on for 5 years. 1695*4882a593Smuzhiyun Some old boot loaders still use this way. 1696*4882a593Smuzhiyun 1697*4882a593Smuzhiyun# Compressed boot loader in ROM. Yes, we really want to ask about 1698*4882a593Smuzhiyun# TEXT and BSS so we preserve their values in the config files. 1699*4882a593Smuzhiyunconfig ZBOOT_ROM_TEXT 1700*4882a593Smuzhiyun hex "Compressed ROM boot loader base address" 1701*4882a593Smuzhiyun default 0x0 1702*4882a593Smuzhiyun help 1703*4882a593Smuzhiyun The physical address at which the ROM-able zImage is to be 1704*4882a593Smuzhiyun placed in the target. Platforms which normally make use of 1705*4882a593Smuzhiyun ROM-able zImage formats normally set this to a suitable 1706*4882a593Smuzhiyun value in their defconfig file. 1707*4882a593Smuzhiyun 1708*4882a593Smuzhiyun If ZBOOT_ROM is not enabled, this has no effect. 1709*4882a593Smuzhiyun 1710*4882a593Smuzhiyunconfig ZBOOT_ROM_BSS 1711*4882a593Smuzhiyun hex "Compressed ROM boot loader BSS address" 1712*4882a593Smuzhiyun default 0x0 1713*4882a593Smuzhiyun help 1714*4882a593Smuzhiyun The base address of an area of read/write memory in the target 1715*4882a593Smuzhiyun for the ROM-able zImage which must be available while the 1716*4882a593Smuzhiyun decompressor is running. It must be large enough to hold the 1717*4882a593Smuzhiyun entire decompressed kernel plus an additional 128 KiB. 1718*4882a593Smuzhiyun Platforms which normally make use of ROM-able zImage formats 1719*4882a593Smuzhiyun normally set this to a suitable value in their defconfig file. 1720*4882a593Smuzhiyun 1721*4882a593Smuzhiyun If ZBOOT_ROM is not enabled, this has no effect. 1722*4882a593Smuzhiyun 1723*4882a593Smuzhiyunconfig ZBOOT_ROM 1724*4882a593Smuzhiyun bool "Compressed boot loader in ROM/flash" 1725*4882a593Smuzhiyun depends on ZBOOT_ROM_TEXT != ZBOOT_ROM_BSS 1726*4882a593Smuzhiyun depends on !ARM_APPENDED_DTB && !XIP_KERNEL && !AUTO_ZRELADDR 1727*4882a593Smuzhiyun help 1728*4882a593Smuzhiyun Say Y here if you intend to execute your compressed kernel image 1729*4882a593Smuzhiyun (zImage) directly from ROM or flash. If unsure, say N. 1730*4882a593Smuzhiyun 1731*4882a593Smuzhiyunconfig ARM_APPENDED_DTB 1732*4882a593Smuzhiyun bool "Use appended device tree blob to zImage (EXPERIMENTAL)" 1733*4882a593Smuzhiyun depends on OF 1734*4882a593Smuzhiyun help 1735*4882a593Smuzhiyun With this option, the boot code will look for a device tree binary 1736*4882a593Smuzhiyun (DTB) appended to zImage 1737*4882a593Smuzhiyun (e.g. cat zImage <filename>.dtb > zImage_w_dtb). 1738*4882a593Smuzhiyun 1739*4882a593Smuzhiyun This is meant as a backward compatibility convenience for those 1740*4882a593Smuzhiyun systems with a bootloader that can't be upgraded to accommodate 1741*4882a593Smuzhiyun the documented boot protocol using a device tree. 1742*4882a593Smuzhiyun 1743*4882a593Smuzhiyun Beware that there is very little in terms of protection against 1744*4882a593Smuzhiyun this option being confused by leftover garbage in memory that might 1745*4882a593Smuzhiyun look like a DTB header after a reboot if no actual DTB is appended 1746*4882a593Smuzhiyun to zImage. Do not leave this option active in a production kernel 1747*4882a593Smuzhiyun if you don't intend to always append a DTB. Proper passing of the 1748*4882a593Smuzhiyun location into r2 of a bootloader provided DTB is always preferable 1749*4882a593Smuzhiyun to this option. 1750*4882a593Smuzhiyun 1751*4882a593Smuzhiyunconfig ARM_ATAG_DTB_COMPAT 1752*4882a593Smuzhiyun bool "Supplement the appended DTB with traditional ATAG information" 1753*4882a593Smuzhiyun depends on ARM_APPENDED_DTB 1754*4882a593Smuzhiyun help 1755*4882a593Smuzhiyun Some old bootloaders can't be updated to a DTB capable one, yet 1756*4882a593Smuzhiyun they provide ATAGs with memory configuration, the ramdisk address, 1757*4882a593Smuzhiyun the kernel cmdline string, etc. Such information is dynamically 1758*4882a593Smuzhiyun provided by the bootloader and can't always be stored in a static 1759*4882a593Smuzhiyun DTB. To allow a device tree enabled kernel to be used with such 1760*4882a593Smuzhiyun bootloaders, this option allows zImage to extract the information 1761*4882a593Smuzhiyun from the ATAG list and store it at run time into the appended DTB. 1762*4882a593Smuzhiyun 1763*4882a593Smuzhiyunchoice 1764*4882a593Smuzhiyun prompt "Kernel command line type" if ARM_ATAG_DTB_COMPAT 1765*4882a593Smuzhiyun default ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER 1766*4882a593Smuzhiyun 1767*4882a593Smuzhiyunconfig ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER 1768*4882a593Smuzhiyun bool "Use bootloader kernel arguments if available" 1769*4882a593Smuzhiyun help 1770*4882a593Smuzhiyun Uses the command-line options passed by the boot loader instead of 1771*4882a593Smuzhiyun the device tree bootargs property. If the boot loader doesn't provide 1772*4882a593Smuzhiyun any, the device tree bootargs property will be used. 1773*4882a593Smuzhiyun 1774*4882a593Smuzhiyunconfig ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND 1775*4882a593Smuzhiyun bool "Extend with bootloader kernel arguments" 1776*4882a593Smuzhiyun help 1777*4882a593Smuzhiyun The command-line arguments provided by the boot loader will be 1778*4882a593Smuzhiyun appended to the the device tree bootargs property. 1779*4882a593Smuzhiyun 1780*4882a593Smuzhiyunendchoice 1781*4882a593Smuzhiyun 1782*4882a593Smuzhiyunconfig CMDLINE 1783*4882a593Smuzhiyun string "Default kernel command string" 1784*4882a593Smuzhiyun default "" 1785*4882a593Smuzhiyun help 1786*4882a593Smuzhiyun On some architectures (EBSA110 and CATS), there is currently no way 1787*4882a593Smuzhiyun for the boot loader to pass arguments to the kernel. For these 1788*4882a593Smuzhiyun architectures, you should supply some command-line options at build 1789*4882a593Smuzhiyun time by entering them here. As a minimum, you should specify the 1790*4882a593Smuzhiyun memory size and the root device (e.g., mem=64M root=/dev/nfs). 1791*4882a593Smuzhiyun 1792*4882a593Smuzhiyunchoice 1793*4882a593Smuzhiyun prompt "Kernel command line type" if CMDLINE != "" 1794*4882a593Smuzhiyun default CMDLINE_FROM_BOOTLOADER 1795*4882a593Smuzhiyun 1796*4882a593Smuzhiyunconfig CMDLINE_FROM_BOOTLOADER 1797*4882a593Smuzhiyun bool "Use bootloader kernel arguments if available" 1798*4882a593Smuzhiyun help 1799*4882a593Smuzhiyun Uses the command-line options passed by the boot loader. If 1800*4882a593Smuzhiyun the boot loader doesn't provide any, the default kernel command 1801*4882a593Smuzhiyun string provided in CMDLINE will be used. 1802*4882a593Smuzhiyun 1803*4882a593Smuzhiyunconfig CMDLINE_EXTEND 1804*4882a593Smuzhiyun bool "Extend bootloader kernel arguments" 1805*4882a593Smuzhiyun help 1806*4882a593Smuzhiyun The command-line arguments provided by the boot loader will be 1807*4882a593Smuzhiyun appended to the default kernel command string. 1808*4882a593Smuzhiyun 1809*4882a593Smuzhiyunconfig CMDLINE_FORCE 1810*4882a593Smuzhiyun bool "Always use the default kernel command string" 1811*4882a593Smuzhiyun help 1812*4882a593Smuzhiyun Always use the default kernel command string, even if the boot 1813*4882a593Smuzhiyun loader passes other arguments to the kernel. 1814*4882a593Smuzhiyun This is useful if you cannot or don't want to change the 1815*4882a593Smuzhiyun command-line options your boot loader passes to the kernel. 1816*4882a593Smuzhiyunendchoice 1817*4882a593Smuzhiyun 1818*4882a593Smuzhiyunconfig XIP_KERNEL 1819*4882a593Smuzhiyun bool "Kernel Execute-In-Place from ROM" 1820*4882a593Smuzhiyun depends on !ARM_LPAE && !ARCH_MULTIPLATFORM 1821*4882a593Smuzhiyun help 1822*4882a593Smuzhiyun Execute-In-Place allows the kernel to run from non-volatile storage 1823*4882a593Smuzhiyun directly addressable by the CPU, such as NOR flash. This saves RAM 1824*4882a593Smuzhiyun space since the text section of the kernel is not loaded from flash 1825*4882a593Smuzhiyun to RAM. Read-write sections, such as the data section and stack, 1826*4882a593Smuzhiyun are still copied to RAM. The XIP kernel is not compressed since 1827*4882a593Smuzhiyun it has to run directly from flash, so it will take more space to 1828*4882a593Smuzhiyun store it. The flash address used to link the kernel object files, 1829*4882a593Smuzhiyun and for storing it, is configuration dependent. Therefore, if you 1830*4882a593Smuzhiyun say Y here, you must know the proper physical address where to 1831*4882a593Smuzhiyun store the kernel image depending on your own flash memory usage. 1832*4882a593Smuzhiyun 1833*4882a593Smuzhiyun Also note that the make target becomes "make xipImage" rather than 1834*4882a593Smuzhiyun "make zImage" or "make Image". The final kernel binary to put in 1835*4882a593Smuzhiyun ROM memory will be arch/arm/boot/xipImage. 1836*4882a593Smuzhiyun 1837*4882a593Smuzhiyun If unsure, say N. 1838*4882a593Smuzhiyun 1839*4882a593Smuzhiyunconfig XIP_PHYS_ADDR 1840*4882a593Smuzhiyun hex "XIP Kernel Physical Location" 1841*4882a593Smuzhiyun depends on XIP_KERNEL 1842*4882a593Smuzhiyun default "0x00080000" 1843*4882a593Smuzhiyun help 1844*4882a593Smuzhiyun This is the physical address in your flash memory the kernel will 1845*4882a593Smuzhiyun be linked for and stored to. This address is dependent on your 1846*4882a593Smuzhiyun own flash usage. 1847*4882a593Smuzhiyun 1848*4882a593Smuzhiyunconfig XIP_DEFLATED_DATA 1849*4882a593Smuzhiyun bool "Store kernel .data section compressed in ROM" 1850*4882a593Smuzhiyun depends on XIP_KERNEL 1851*4882a593Smuzhiyun select ZLIB_INFLATE 1852*4882a593Smuzhiyun help 1853*4882a593Smuzhiyun Before the kernel is actually executed, its .data section has to be 1854*4882a593Smuzhiyun copied to RAM from ROM. This option allows for storing that data 1855*4882a593Smuzhiyun in compressed form and decompressed to RAM rather than merely being 1856*4882a593Smuzhiyun copied, saving some precious ROM space. A possible drawback is a 1857*4882a593Smuzhiyun slightly longer boot delay. 1858*4882a593Smuzhiyun 1859*4882a593Smuzhiyunconfig KEXEC 1860*4882a593Smuzhiyun bool "Kexec system call (EXPERIMENTAL)" 1861*4882a593Smuzhiyun depends on (!SMP || PM_SLEEP_SMP) 1862*4882a593Smuzhiyun depends on MMU 1863*4882a593Smuzhiyun select KEXEC_CORE 1864*4882a593Smuzhiyun help 1865*4882a593Smuzhiyun kexec is a system call that implements the ability to shutdown your 1866*4882a593Smuzhiyun current kernel, and to start another kernel. It is like a reboot 1867*4882a593Smuzhiyun but it is independent of the system firmware. And like a reboot 1868*4882a593Smuzhiyun you can start any kernel with it, not just Linux. 1869*4882a593Smuzhiyun 1870*4882a593Smuzhiyun It is an ongoing process to be certain the hardware in a machine 1871*4882a593Smuzhiyun is properly shutdown, so do not be surprised if this code does not 1872*4882a593Smuzhiyun initially work for you. 1873*4882a593Smuzhiyun 1874*4882a593Smuzhiyunconfig ATAGS_PROC 1875*4882a593Smuzhiyun bool "Export atags in procfs" 1876*4882a593Smuzhiyun depends on ATAGS && KEXEC 1877*4882a593Smuzhiyun default y 1878*4882a593Smuzhiyun help 1879*4882a593Smuzhiyun Should the atags used to boot the kernel be exported in an "atags" 1880*4882a593Smuzhiyun file in procfs. Useful with kexec. 1881*4882a593Smuzhiyun 1882*4882a593Smuzhiyunconfig CRASH_DUMP 1883*4882a593Smuzhiyun bool "Build kdump crash kernel (EXPERIMENTAL)" 1884*4882a593Smuzhiyun help 1885*4882a593Smuzhiyun Generate crash dump after being started by kexec. This should 1886*4882a593Smuzhiyun be normally only set in special crash dump kernels which are 1887*4882a593Smuzhiyun loaded in the main kernel with kexec-tools into a specially 1888*4882a593Smuzhiyun reserved region and then later executed after a crash by 1889*4882a593Smuzhiyun kdump/kexec. The crash dump kernel must be compiled to a 1890*4882a593Smuzhiyun memory address not used by the main kernel 1891*4882a593Smuzhiyun 1892*4882a593Smuzhiyun For more details see Documentation/admin-guide/kdump/kdump.rst 1893*4882a593Smuzhiyun 1894*4882a593Smuzhiyunconfig AUTO_ZRELADDR 1895*4882a593Smuzhiyun bool "Auto calculation of the decompressed kernel image address" 1896*4882a593Smuzhiyun help 1897*4882a593Smuzhiyun ZRELADDR is the physical address where the decompressed kernel 1898*4882a593Smuzhiyun image will be placed. If AUTO_ZRELADDR is selected, the address 1899*4882a593Smuzhiyun will be determined at run-time by masking the current IP with 1900*4882a593Smuzhiyun 0xf8000000. This assumes the zImage being placed in the first 128MB 1901*4882a593Smuzhiyun from start of memory. 1902*4882a593Smuzhiyun 1903*4882a593Smuzhiyunconfig EFI_STUB 1904*4882a593Smuzhiyun bool 1905*4882a593Smuzhiyun 1906*4882a593Smuzhiyunconfig EFI 1907*4882a593Smuzhiyun bool "UEFI runtime support" 1908*4882a593Smuzhiyun depends on OF && !CPU_BIG_ENDIAN && MMU && AUTO_ZRELADDR && !XIP_KERNEL 1909*4882a593Smuzhiyun select UCS2_STRING 1910*4882a593Smuzhiyun select EFI_PARAMS_FROM_FDT 1911*4882a593Smuzhiyun select EFI_STUB 1912*4882a593Smuzhiyun select EFI_GENERIC_STUB 1913*4882a593Smuzhiyun select EFI_RUNTIME_WRAPPERS 1914*4882a593Smuzhiyun help 1915*4882a593Smuzhiyun This option provides support for runtime services provided 1916*4882a593Smuzhiyun by UEFI firmware (such as non-volatile variables, realtime 1917*4882a593Smuzhiyun clock, and platform reset). A UEFI stub is also provided to 1918*4882a593Smuzhiyun allow the kernel to be booted as an EFI application. This 1919*4882a593Smuzhiyun is only useful for kernels that may run on systems that have 1920*4882a593Smuzhiyun UEFI firmware. 1921*4882a593Smuzhiyun 1922*4882a593Smuzhiyunconfig DMI 1923*4882a593Smuzhiyun bool "Enable support for SMBIOS (DMI) tables" 1924*4882a593Smuzhiyun depends on EFI 1925*4882a593Smuzhiyun default y 1926*4882a593Smuzhiyun help 1927*4882a593Smuzhiyun This enables SMBIOS/DMI feature for systems. 1928*4882a593Smuzhiyun 1929*4882a593Smuzhiyun This option is only useful on systems that have UEFI firmware. 1930*4882a593Smuzhiyun However, even with this option, the resultant kernel should 1931*4882a593Smuzhiyun continue to boot on existing non-UEFI platforms. 1932*4882a593Smuzhiyun 1933*4882a593Smuzhiyun NOTE: This does *NOT* enable or encourage the use of DMI quirks, 1934*4882a593Smuzhiyun i.e., the the practice of identifying the platform via DMI to 1935*4882a593Smuzhiyun decide whether certain workarounds for buggy hardware and/or 1936*4882a593Smuzhiyun firmware need to be enabled. This would require the DMI subsystem 1937*4882a593Smuzhiyun to be enabled much earlier than we do on ARM, which is non-trivial. 1938*4882a593Smuzhiyun 1939*4882a593Smuzhiyunendmenu 1940*4882a593Smuzhiyun 1941*4882a593Smuzhiyunmenu "CPU Power Management" 1942*4882a593Smuzhiyun 1943*4882a593Smuzhiyunsource "drivers/cpufreq/Kconfig" 1944*4882a593Smuzhiyun 1945*4882a593Smuzhiyunsource "drivers/cpuidle/Kconfig" 1946*4882a593Smuzhiyun 1947*4882a593Smuzhiyunendmenu 1948*4882a593Smuzhiyun 1949*4882a593Smuzhiyunmenu "Floating point emulation" 1950*4882a593Smuzhiyun 1951*4882a593Smuzhiyuncomment "At least one emulation must be selected" 1952*4882a593Smuzhiyun 1953*4882a593Smuzhiyunconfig FPE_NWFPE 1954*4882a593Smuzhiyun bool "NWFPE math emulation" 1955*4882a593Smuzhiyun depends on (!AEABI || OABI_COMPAT) && !THUMB2_KERNEL 1956*4882a593Smuzhiyun help 1957*4882a593Smuzhiyun Say Y to include the NWFPE floating point emulator in the kernel. 1958*4882a593Smuzhiyun This is necessary to run most binaries. Linux does not currently 1959*4882a593Smuzhiyun support floating point hardware so you need to say Y here even if 1960*4882a593Smuzhiyun your machine has an FPA or floating point co-processor podule. 1961*4882a593Smuzhiyun 1962*4882a593Smuzhiyun You may say N here if you are going to load the Acorn FPEmulator 1963*4882a593Smuzhiyun early in the bootup. 1964*4882a593Smuzhiyun 1965*4882a593Smuzhiyunconfig FPE_NWFPE_XP 1966*4882a593Smuzhiyun bool "Support extended precision" 1967*4882a593Smuzhiyun depends on FPE_NWFPE 1968*4882a593Smuzhiyun help 1969*4882a593Smuzhiyun Say Y to include 80-bit support in the kernel floating-point 1970*4882a593Smuzhiyun emulator. Otherwise, only 32 and 64-bit support is compiled in. 1971*4882a593Smuzhiyun Note that gcc does not generate 80-bit operations by default, 1972*4882a593Smuzhiyun so in most cases this option only enlarges the size of the 1973*4882a593Smuzhiyun floating point emulator without any good reason. 1974*4882a593Smuzhiyun 1975*4882a593Smuzhiyun You almost surely want to say N here. 1976*4882a593Smuzhiyun 1977*4882a593Smuzhiyunconfig FPE_FASTFPE 1978*4882a593Smuzhiyun bool "FastFPE math emulation (EXPERIMENTAL)" 1979*4882a593Smuzhiyun depends on (!AEABI || OABI_COMPAT) && !CPU_32v3 1980*4882a593Smuzhiyun help 1981*4882a593Smuzhiyun Say Y here to include the FAST floating point emulator in the kernel. 1982*4882a593Smuzhiyun This is an experimental much faster emulator which now also has full 1983*4882a593Smuzhiyun precision for the mantissa. It does not support any exceptions. 1984*4882a593Smuzhiyun It is very simple, and approximately 3-6 times faster than NWFPE. 1985*4882a593Smuzhiyun 1986*4882a593Smuzhiyun It should be sufficient for most programs. It may be not suitable 1987*4882a593Smuzhiyun for scientific calculations, but you have to check this for yourself. 1988*4882a593Smuzhiyun If you do not feel you need a faster FP emulation you should better 1989*4882a593Smuzhiyun choose NWFPE. 1990*4882a593Smuzhiyun 1991*4882a593Smuzhiyunconfig VFP 1992*4882a593Smuzhiyun bool "VFP-format floating point maths" 1993*4882a593Smuzhiyun depends on CPU_V6 || CPU_V6K || CPU_ARM926T || CPU_V7 || CPU_FEROCEON 1994*4882a593Smuzhiyun help 1995*4882a593Smuzhiyun Say Y to include VFP support code in the kernel. This is needed 1996*4882a593Smuzhiyun if your hardware includes a VFP unit. 1997*4882a593Smuzhiyun 1998*4882a593Smuzhiyun Please see <file:Documentation/arm/vfp/release-notes.rst> for 1999*4882a593Smuzhiyun release notes and additional status information. 2000*4882a593Smuzhiyun 2001*4882a593Smuzhiyun Say N if your target does not have VFP hardware. 2002*4882a593Smuzhiyun 2003*4882a593Smuzhiyunconfig VFPv3 2004*4882a593Smuzhiyun bool 2005*4882a593Smuzhiyun depends on VFP 2006*4882a593Smuzhiyun default y if CPU_V7 2007*4882a593Smuzhiyun 2008*4882a593Smuzhiyunconfig NEON 2009*4882a593Smuzhiyun bool "Advanced SIMD (NEON) Extension support" 2010*4882a593Smuzhiyun depends on VFPv3 && CPU_V7 2011*4882a593Smuzhiyun help 2012*4882a593Smuzhiyun Say Y to include support code for NEON, the ARMv7 Advanced SIMD 2013*4882a593Smuzhiyun Extension. 2014*4882a593Smuzhiyun 2015*4882a593Smuzhiyunconfig KERNEL_MODE_NEON 2016*4882a593Smuzhiyun bool "Support for NEON in kernel mode" 2017*4882a593Smuzhiyun depends on NEON && AEABI 2018*4882a593Smuzhiyun help 2019*4882a593Smuzhiyun Say Y to include support for NEON in kernel mode. 2020*4882a593Smuzhiyun 2021*4882a593Smuzhiyunendmenu 2022*4882a593Smuzhiyun 2023*4882a593Smuzhiyunmenu "Power management options" 2024*4882a593Smuzhiyun 2025*4882a593Smuzhiyunsource "kernel/power/Kconfig" 2026*4882a593Smuzhiyun 2027*4882a593Smuzhiyunconfig ARCH_SUSPEND_POSSIBLE 2028*4882a593Smuzhiyun depends on CPU_ARM920T || CPU_ARM926T || CPU_FEROCEON || CPU_SA1100 || \ 2029*4882a593Smuzhiyun CPU_V6 || CPU_V6K || CPU_V7 || CPU_V7M || CPU_XSC3 || CPU_XSCALE || CPU_MOHAWK 2030*4882a593Smuzhiyun def_bool y 2031*4882a593Smuzhiyun 2032*4882a593Smuzhiyunconfig ARM_CPU_SUSPEND 2033*4882a593Smuzhiyun def_bool PM_SLEEP || BL_SWITCHER || ARM_PSCI_FW 2034*4882a593Smuzhiyun depends on ARCH_SUSPEND_POSSIBLE 2035*4882a593Smuzhiyun 2036*4882a593Smuzhiyunconfig ARCH_HIBERNATION_POSSIBLE 2037*4882a593Smuzhiyun bool 2038*4882a593Smuzhiyun depends on MMU 2039*4882a593Smuzhiyun default y if ARCH_SUSPEND_POSSIBLE 2040*4882a593Smuzhiyun 2041*4882a593Smuzhiyunendmenu 2042*4882a593Smuzhiyun 2043*4882a593Smuzhiyunsource "drivers/firmware/Kconfig" 2044*4882a593Smuzhiyun 2045*4882a593Smuzhiyunif CRYPTO 2046*4882a593Smuzhiyunsource "arch/arm/crypto/Kconfig" 2047*4882a593Smuzhiyunendif 2048*4882a593Smuzhiyun 2049*4882a593Smuzhiyunsource "arch/arm/Kconfig.assembler" 2050