162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ciconfig ARM 362306a36Sopenharmony_ci bool 462306a36Sopenharmony_ci default y 562306a36Sopenharmony_ci select ARCH_32BIT_OFF_T 662306a36Sopenharmony_ci select ARCH_CORRECT_STACKTRACE_ON_KRETPROBE if HAVE_KRETPROBES && FRAME_POINTER && !ARM_UNWIND 762306a36Sopenharmony_ci select ARCH_HAS_BINFMT_FLAT 862306a36Sopenharmony_ci select ARCH_HAS_CPU_FINALIZE_INIT if MMU 962306a36Sopenharmony_ci select ARCH_HAS_CURRENT_STACK_POINTER 1062306a36Sopenharmony_ci select ARCH_HAS_DEBUG_VIRTUAL if MMU 1162306a36Sopenharmony_ci select ARCH_HAS_DMA_WRITE_COMBINE if !ARM_DMA_MEM_BUFFERABLE 1262306a36Sopenharmony_ci select ARCH_HAS_ELF_RANDOMIZE 1362306a36Sopenharmony_ci select ARCH_HAS_FORTIFY_SOURCE 1462306a36Sopenharmony_ci select ARCH_HAS_KEEPINITRD 1562306a36Sopenharmony_ci select ARCH_HAS_KCOV 1662306a36Sopenharmony_ci select ARCH_HAS_MEMBARRIER_SYNC_CORE 1762306a36Sopenharmony_ci select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 1862306a36Sopenharmony_ci select ARCH_HAS_PTE_SPECIAL if ARM_LPAE 1962306a36Sopenharmony_ci select ARCH_HAS_SETUP_DMA_OPS 2062306a36Sopenharmony_ci select ARCH_HAS_SET_MEMORY 2162306a36Sopenharmony_ci select ARCH_STACKWALK 2262306a36Sopenharmony_ci select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL 2362306a36Sopenharmony_ci select ARCH_HAS_STRICT_MODULE_RWX if MMU 2462306a36Sopenharmony_ci select ARCH_HAS_SYNC_DMA_FOR_DEVICE 2562306a36Sopenharmony_ci select ARCH_HAS_SYNC_DMA_FOR_CPU 2662306a36Sopenharmony_ci select ARCH_HAS_TEARDOWN_DMA_OPS if MMU 2762306a36Sopenharmony_ci select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST 2862306a36Sopenharmony_ci select ARCH_HAVE_NMI_SAFE_CMPXCHG if CPU_V7 || CPU_V7M || CPU_V6K 2962306a36Sopenharmony_ci select ARCH_HAS_GCOV_PROFILE_ALL 3062306a36Sopenharmony_ci select ARCH_KEEP_MEMBLOCK 3162306a36Sopenharmony_ci select ARCH_HAS_UBSAN_SANITIZE_ALL 3262306a36Sopenharmony_ci select ARCH_MIGHT_HAVE_PC_PARPORT 3362306a36Sopenharmony_ci select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX 3462306a36Sopenharmony_ci select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT if CPU_V7 3562306a36Sopenharmony_ci select ARCH_SUPPORTS_ATOMIC_RMW 3662306a36Sopenharmony_ci select ARCH_SUPPORTS_HUGETLBFS if ARM_LPAE 3762306a36Sopenharmony_ci select ARCH_USE_BUILTIN_BSWAP 3862306a36Sopenharmony_ci select ARCH_USE_CMPXCHG_LOCKREF 3962306a36Sopenharmony_ci select ARCH_USE_MEMTEST 4062306a36Sopenharmony_ci select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU 4162306a36Sopenharmony_ci select ARCH_WANT_GENERAL_HUGETLB 4262306a36Sopenharmony_ci select ARCH_WANT_IPC_PARSE_VERSION 4362306a36Sopenharmony_ci select ARCH_WANT_LD_ORPHAN_WARN 4462306a36Sopenharmony_ci select BINFMT_FLAT_ARGVP_ENVP_ON_STACK 4562306a36Sopenharmony_ci select BUILDTIME_TABLE_SORT if MMU 4662306a36Sopenharmony_ci select COMMON_CLK if !(ARCH_RPC || ARCH_FOOTBRIDGE) 4762306a36Sopenharmony_ci select CLONE_BACKWARDS 4862306a36Sopenharmony_ci select CPU_PM if SUSPEND || CPU_IDLE 4962306a36Sopenharmony_ci select DCACHE_WORD_ACCESS if HAVE_EFFICIENT_UNALIGNED_ACCESS 5062306a36Sopenharmony_ci select DMA_DECLARE_COHERENT 5162306a36Sopenharmony_ci select DMA_GLOBAL_POOL if !MMU 5262306a36Sopenharmony_ci select DMA_OPS 5362306a36Sopenharmony_ci select DMA_NONCOHERENT_MMAP if MMU 5462306a36Sopenharmony_ci select EDAC_SUPPORT 5562306a36Sopenharmony_ci select EDAC_ATOMIC_SCRUB 5662306a36Sopenharmony_ci select GENERIC_ALLOCATOR 5762306a36Sopenharmony_ci select GENERIC_ARCH_TOPOLOGY if ARM_CPU_TOPOLOGY 5862306a36Sopenharmony_ci select GENERIC_ATOMIC64 if CPU_V7M || CPU_V6 || !CPU_32v6K || !AEABI 5962306a36Sopenharmony_ci select GENERIC_CLOCKEVENTS_BROADCAST if SMP 6062306a36Sopenharmony_ci select GENERIC_IRQ_IPI if SMP 6162306a36Sopenharmony_ci select GENERIC_CPU_AUTOPROBE 6262306a36Sopenharmony_ci select GENERIC_EARLY_IOREMAP 6362306a36Sopenharmony_ci select GENERIC_IDLE_POLL_SETUP 6462306a36Sopenharmony_ci select GENERIC_IRQ_MULTI_HANDLER 6562306a36Sopenharmony_ci select GENERIC_IRQ_PROBE 6662306a36Sopenharmony_ci select GENERIC_IRQ_SHOW 6762306a36Sopenharmony_ci select GENERIC_IRQ_SHOW_LEVEL 6862306a36Sopenharmony_ci select GENERIC_LIB_DEVMEM_IS_ALLOWED 6962306a36Sopenharmony_ci select GENERIC_PCI_IOMAP 7062306a36Sopenharmony_ci select GENERIC_SCHED_CLOCK 7162306a36Sopenharmony_ci select GENERIC_SMP_IDLE_THREAD 7262306a36Sopenharmony_ci select HARDIRQS_SW_RESEND 7362306a36Sopenharmony_ci select HAS_IOPORT 7462306a36Sopenharmony_ci select HAVE_ARCH_AUDITSYSCALL if AEABI && !OABI_COMPAT 7562306a36Sopenharmony_ci select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 7662306a36Sopenharmony_ci select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU 7762306a36Sopenharmony_ci select HAVE_ARCH_KFENCE if MMU && !XIP_KERNEL 7862306a36Sopenharmony_ci select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU 7962306a36Sopenharmony_ci select HAVE_ARCH_KASAN if MMU && !XIP_KERNEL 8062306a36Sopenharmony_ci select HAVE_ARCH_KASAN_VMALLOC if HAVE_ARCH_KASAN 8162306a36Sopenharmony_ci select HAVE_ARCH_MMAP_RND_BITS if MMU 8262306a36Sopenharmony_ci select HAVE_ARCH_PFN_VALID 8362306a36Sopenharmony_ci select HAVE_ARCH_SECCOMP 8462306a36Sopenharmony_ci select HAVE_ARCH_SECCOMP_FILTER if AEABI && !OABI_COMPAT 8562306a36Sopenharmony_ci select HAVE_ARCH_THREAD_STRUCT_WHITELIST 8662306a36Sopenharmony_ci select HAVE_ARCH_TRACEHOOK 8762306a36Sopenharmony_ci select HAVE_ARCH_TRANSPARENT_HUGEPAGE if ARM_LPAE 8862306a36Sopenharmony_ci select HAVE_ARM_SMCCC if CPU_V7 8962306a36Sopenharmony_ci select HAVE_EBPF_JIT if !CPU_ENDIAN_BE32 9062306a36Sopenharmony_ci select HAVE_CONTEXT_TRACKING_USER 9162306a36Sopenharmony_ci select HAVE_C_RECORDMCOUNT 9262306a36Sopenharmony_ci select HAVE_BUILDTIME_MCOUNT_SORT 9362306a36Sopenharmony_ci select HAVE_DEBUG_KMEMLEAK if !XIP_KERNEL 9462306a36Sopenharmony_ci select HAVE_DMA_CONTIGUOUS if MMU 9562306a36Sopenharmony_ci select HAVE_DYNAMIC_FTRACE if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU 9662306a36Sopenharmony_ci select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE 9762306a36Sopenharmony_ci select HAVE_EFFICIENT_UNALIGNED_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && MMU 9862306a36Sopenharmony_ci select HAVE_EXIT_THREAD 9962306a36Sopenharmony_ci select HAVE_FAST_GUP if ARM_LPAE 10062306a36Sopenharmony_ci select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL 10162306a36Sopenharmony_ci select HAVE_FUNCTION_ERROR_INJECTION 10262306a36Sopenharmony_ci select HAVE_FUNCTION_GRAPH_TRACER 10362306a36Sopenharmony_ci select HAVE_FUNCTION_TRACER if !XIP_KERNEL 10462306a36Sopenharmony_ci select HAVE_GCC_PLUGINS 10562306a36Sopenharmony_ci select HAVE_HW_BREAKPOINT if PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7) 10662306a36Sopenharmony_ci select HAVE_IRQ_TIME_ACCOUNTING 10762306a36Sopenharmony_ci select HAVE_KERNEL_GZIP 10862306a36Sopenharmony_ci select HAVE_KERNEL_LZ4 10962306a36Sopenharmony_ci select HAVE_KERNEL_LZMA 11062306a36Sopenharmony_ci select HAVE_KERNEL_LZO 11162306a36Sopenharmony_ci select HAVE_KERNEL_XZ 11262306a36Sopenharmony_ci select HAVE_KPROBES if !XIP_KERNEL && !CPU_ENDIAN_BE32 && !CPU_V7M 11362306a36Sopenharmony_ci select HAVE_KRETPROBES if HAVE_KPROBES 11462306a36Sopenharmony_ci select HAVE_MOD_ARCH_SPECIFIC 11562306a36Sopenharmony_ci select HAVE_NMI 11662306a36Sopenharmony_ci select HAVE_OPTPROBES if !THUMB2_KERNEL 11762306a36Sopenharmony_ci select HAVE_PCI if MMU 11862306a36Sopenharmony_ci select HAVE_PERF_EVENTS 11962306a36Sopenharmony_ci select HAVE_PERF_REGS 12062306a36Sopenharmony_ci select HAVE_PERF_USER_STACK_DUMP 12162306a36Sopenharmony_ci select MMU_GATHER_RCU_TABLE_FREE if SMP && ARM_LPAE 12262306a36Sopenharmony_ci select HAVE_REGS_AND_STACK_ACCESS_API 12362306a36Sopenharmony_ci select HAVE_RSEQ 12462306a36Sopenharmony_ci select HAVE_STACKPROTECTOR 12562306a36Sopenharmony_ci select HAVE_SYSCALL_TRACEPOINTS 12662306a36Sopenharmony_ci select HAVE_UID16 12762306a36Sopenharmony_ci select HAVE_VIRT_CPU_ACCOUNTING_GEN 12862306a36Sopenharmony_ci select HOTPLUG_CORE_SYNC_DEAD if HOTPLUG_CPU 12962306a36Sopenharmony_ci select IRQ_FORCED_THREADING 13062306a36Sopenharmony_ci select LOCK_MM_AND_FIND_VMA 13162306a36Sopenharmony_ci select MODULES_USE_ELF_REL 13262306a36Sopenharmony_ci select NEED_DMA_MAP_STATE 13362306a36Sopenharmony_ci select OF_EARLY_FLATTREE if OF 13462306a36Sopenharmony_ci select OLD_SIGACTION 13562306a36Sopenharmony_ci select OLD_SIGSUSPEND3 13662306a36Sopenharmony_ci select PCI_DOMAINS_GENERIC if PCI 13762306a36Sopenharmony_ci select PCI_SYSCALL if PCI 13862306a36Sopenharmony_ci select PERF_USE_VMALLOC 13962306a36Sopenharmony_ci select RTC_LIB 14062306a36Sopenharmony_ci select SPARSE_IRQ if !(ARCH_FOOTBRIDGE || ARCH_RPC) 14162306a36Sopenharmony_ci select SYS_SUPPORTS_APM_EMULATION 14262306a36Sopenharmony_ci select THREAD_INFO_IN_TASK 14362306a36Sopenharmony_ci select TIMER_OF if OF 14462306a36Sopenharmony_ci select HAVE_ARCH_VMAP_STACK if MMU && ARM_HAS_GROUP_RELOCS 14562306a36Sopenharmony_ci select TRACE_IRQFLAGS_SUPPORT if !CPU_V7M 14662306a36Sopenharmony_ci select USE_OF if !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100) 14762306a36Sopenharmony_ci # Above selects are sorted alphabetically; please add new ones 14862306a36Sopenharmony_ci # according to that. Thanks. 14962306a36Sopenharmony_ci help 15062306a36Sopenharmony_ci The ARM series is a line of low-power-consumption RISC chip designs 15162306a36Sopenharmony_ci licensed by ARM Ltd and targeted at embedded applications and 15262306a36Sopenharmony_ci handhelds such as the Compaq IPAQ. ARM-based PCs are no longer 15362306a36Sopenharmony_ci manufactured, but legacy ARM-based PC hardware remains popular in 15462306a36Sopenharmony_ci Europe. There is an ARM Linux project with a web page at 15562306a36Sopenharmony_ci <http://www.arm.linux.org.uk/>. 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ciconfig ARM_HAS_GROUP_RELOCS 15862306a36Sopenharmony_ci def_bool y 15962306a36Sopenharmony_ci depends on !LD_IS_LLD || LLD_VERSION >= 140000 16062306a36Sopenharmony_ci depends on !COMPILE_TEST 16162306a36Sopenharmony_ci help 16262306a36Sopenharmony_ci Whether or not to use R_ARM_ALU_PC_Gn or R_ARM_LDR_PC_Gn group 16362306a36Sopenharmony_ci relocations, which have been around for a long time, but were not 16462306a36Sopenharmony_ci supported in LLD until version 14. The combined range is -/+ 256 MiB, 16562306a36Sopenharmony_ci which is usually sufficient, but not for allyesconfig, so we disable 16662306a36Sopenharmony_ci this feature when doing compile testing. 16762306a36Sopenharmony_ci 16862306a36Sopenharmony_ciconfig ARM_DMA_USE_IOMMU 16962306a36Sopenharmony_ci bool 17062306a36Sopenharmony_ci select NEED_SG_DMA_LENGTH 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ciif ARM_DMA_USE_IOMMU 17362306a36Sopenharmony_ci 17462306a36Sopenharmony_ciconfig ARM_DMA_IOMMU_ALIGNMENT 17562306a36Sopenharmony_ci int "Maximum PAGE_SIZE order of alignment for DMA IOMMU buffers" 17662306a36Sopenharmony_ci range 4 9 17762306a36Sopenharmony_ci default 8 17862306a36Sopenharmony_ci help 17962306a36Sopenharmony_ci DMA mapping framework by default aligns all buffers to the smallest 18062306a36Sopenharmony_ci PAGE_SIZE order which is greater than or equal to the requested buffer 18162306a36Sopenharmony_ci size. This works well for buffers up to a few hundreds kilobytes, but 18262306a36Sopenharmony_ci for larger buffers it just a waste of address space. Drivers which has 18362306a36Sopenharmony_ci relatively small addressing window (like 64Mib) might run out of 18462306a36Sopenharmony_ci virtual space with just a few allocations. 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_ci With this parameter you can specify the maximum PAGE_SIZE order for 18762306a36Sopenharmony_ci DMA IOMMU buffers. Larger buffers will be aligned only to this 18862306a36Sopenharmony_ci specified order. The order is expressed as a power of two multiplied 18962306a36Sopenharmony_ci by the PAGE_SIZE. 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ciendif 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_ciconfig SYS_SUPPORTS_APM_EMULATION 19462306a36Sopenharmony_ci bool 19562306a36Sopenharmony_ci 19662306a36Sopenharmony_ciconfig HAVE_TCM 19762306a36Sopenharmony_ci bool 19862306a36Sopenharmony_ci select GENERIC_ALLOCATOR 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ciconfig HAVE_PROC_CPU 20162306a36Sopenharmony_ci bool 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ciconfig NO_IOPORT_MAP 20462306a36Sopenharmony_ci bool 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ciconfig SBUS 20762306a36Sopenharmony_ci bool 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ciconfig STACKTRACE_SUPPORT 21062306a36Sopenharmony_ci bool 21162306a36Sopenharmony_ci default y 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ciconfig LOCKDEP_SUPPORT 21462306a36Sopenharmony_ci bool 21562306a36Sopenharmony_ci default y 21662306a36Sopenharmony_ci 21762306a36Sopenharmony_ciconfig ARCH_HAS_ILOG2_U32 21862306a36Sopenharmony_ci bool 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ciconfig ARCH_HAS_ILOG2_U64 22162306a36Sopenharmony_ci bool 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ciconfig ARCH_HAS_BANDGAP 22462306a36Sopenharmony_ci bool 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_ciconfig FIX_EARLYCON_MEM 22762306a36Sopenharmony_ci def_bool y if MMU 22862306a36Sopenharmony_ci 22962306a36Sopenharmony_ciconfig GENERIC_HWEIGHT 23062306a36Sopenharmony_ci bool 23162306a36Sopenharmony_ci default y 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ciconfig GENERIC_CALIBRATE_DELAY 23462306a36Sopenharmony_ci bool 23562306a36Sopenharmony_ci default y 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ciconfig ARCH_MAY_HAVE_PC_FDC 23862306a36Sopenharmony_ci bool 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_ciconfig ARCH_SUPPORTS_UPROBES 24162306a36Sopenharmony_ci def_bool y 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_ciconfig GENERIC_ISA_DMA 24462306a36Sopenharmony_ci bool 24562306a36Sopenharmony_ci 24662306a36Sopenharmony_ciconfig FIQ 24762306a36Sopenharmony_ci bool 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_ciconfig ARCH_MTD_XIP 25062306a36Sopenharmony_ci bool 25162306a36Sopenharmony_ci 25262306a36Sopenharmony_ciconfig ARM_PATCH_PHYS_VIRT 25362306a36Sopenharmony_ci bool "Patch physical to virtual translations at runtime" if !ARCH_MULTIPLATFORM 25462306a36Sopenharmony_ci default y 25562306a36Sopenharmony_ci depends on MMU 25662306a36Sopenharmony_ci help 25762306a36Sopenharmony_ci Patch phys-to-virt and virt-to-phys translation functions at 25862306a36Sopenharmony_ci boot and module load time according to the position of the 25962306a36Sopenharmony_ci kernel in system memory. 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_ci This can only be used with non-XIP MMU kernels where the base 26262306a36Sopenharmony_ci of physical memory is at a 2 MiB boundary. 26362306a36Sopenharmony_ci 26462306a36Sopenharmony_ci Only disable this option if you know that you do not require 26562306a36Sopenharmony_ci this feature (eg, building a kernel for a single machine) and 26662306a36Sopenharmony_ci you need to shrink the kernel to the minimal size. 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ciconfig NEED_MACH_IO_H 26962306a36Sopenharmony_ci bool 27062306a36Sopenharmony_ci help 27162306a36Sopenharmony_ci Select this when mach/io.h is required to provide special 27262306a36Sopenharmony_ci definitions for this platform. The need for mach/io.h should 27362306a36Sopenharmony_ci be avoided when possible. 27462306a36Sopenharmony_ci 27562306a36Sopenharmony_ciconfig NEED_MACH_MEMORY_H 27662306a36Sopenharmony_ci bool 27762306a36Sopenharmony_ci help 27862306a36Sopenharmony_ci Select this when mach/memory.h is required to provide special 27962306a36Sopenharmony_ci definitions for this platform. The need for mach/memory.h should 28062306a36Sopenharmony_ci be avoided when possible. 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ciconfig PHYS_OFFSET 28362306a36Sopenharmony_ci hex "Physical address of main memory" if MMU 28462306a36Sopenharmony_ci depends on !ARM_PATCH_PHYS_VIRT || !AUTO_ZRELADDR 28562306a36Sopenharmony_ci default DRAM_BASE if !MMU 28662306a36Sopenharmony_ci default 0x00000000 if ARCH_FOOTBRIDGE 28762306a36Sopenharmony_ci default 0x10000000 if ARCH_OMAP1 || ARCH_RPC 28862306a36Sopenharmony_ci default 0xa0000000 if ARCH_PXA 28962306a36Sopenharmony_ci default 0xc0000000 if ARCH_EP93XX || ARCH_SA1100 29062306a36Sopenharmony_ci default 0 29162306a36Sopenharmony_ci help 29262306a36Sopenharmony_ci Please provide the physical address corresponding to the 29362306a36Sopenharmony_ci location of main memory in your system. 29462306a36Sopenharmony_ci 29562306a36Sopenharmony_ciconfig GENERIC_BUG 29662306a36Sopenharmony_ci def_bool y 29762306a36Sopenharmony_ci depends on BUG 29862306a36Sopenharmony_ci 29962306a36Sopenharmony_ciconfig PGTABLE_LEVELS 30062306a36Sopenharmony_ci int 30162306a36Sopenharmony_ci default 3 if ARM_LPAE 30262306a36Sopenharmony_ci default 2 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_cimenu "System Type" 30562306a36Sopenharmony_ci 30662306a36Sopenharmony_ciconfig MMU 30762306a36Sopenharmony_ci bool "MMU-based Paged Memory Management Support" 30862306a36Sopenharmony_ci default y 30962306a36Sopenharmony_ci help 31062306a36Sopenharmony_ci Select if you want MMU-based virtualised addressing space 31162306a36Sopenharmony_ci support by paged memory management. If unsure, say 'Y'. 31262306a36Sopenharmony_ci 31362306a36Sopenharmony_ciconfig ARM_SINGLE_ARMV7M 31462306a36Sopenharmony_ci def_bool !MMU 31562306a36Sopenharmony_ci select ARM_NVIC 31662306a36Sopenharmony_ci select CPU_V7M 31762306a36Sopenharmony_ci select NO_IOPORT_MAP 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_ciconfig ARCH_MMAP_RND_BITS_MIN 32062306a36Sopenharmony_ci default 8 32162306a36Sopenharmony_ci 32262306a36Sopenharmony_ciconfig ARCH_MMAP_RND_BITS_MAX 32362306a36Sopenharmony_ci default 14 if PAGE_OFFSET=0x40000000 32462306a36Sopenharmony_ci default 15 if PAGE_OFFSET=0x80000000 32562306a36Sopenharmony_ci default 16 32662306a36Sopenharmony_ci 32762306a36Sopenharmony_ciconfig ARCH_MULTIPLATFORM 32862306a36Sopenharmony_ci bool "Require kernel to be portable to multiple machines" if EXPERT 32962306a36Sopenharmony_ci depends on MMU && !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100) 33062306a36Sopenharmony_ci default y 33162306a36Sopenharmony_ci help 33262306a36Sopenharmony_ci In general, all Arm machines can be supported in a single 33362306a36Sopenharmony_ci kernel image, covering either Armv4/v5 or Armv6/v7. 33462306a36Sopenharmony_ci 33562306a36Sopenharmony_ci However, some configuration options require hardcoding machine 33662306a36Sopenharmony_ci specific physical addresses or enable errata workarounds that may 33762306a36Sopenharmony_ci break other machines. 33862306a36Sopenharmony_ci 33962306a36Sopenharmony_ci Selecting N here allows using those options, including 34062306a36Sopenharmony_ci DEBUG_UNCOMPRESS, XIP_KERNEL and ZBOOT_ROM. If unsure, say Y. 34162306a36Sopenharmony_ci 34262306a36Sopenharmony_cimenu "Platform selection" 34362306a36Sopenharmony_ci depends on MMU 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_cicomment "CPU Core family selection" 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_ciconfig ARCH_MULTI_V4 34862306a36Sopenharmony_ci bool "ARMv4 based platforms (FA526, StrongARM)" 34962306a36Sopenharmony_ci depends on !ARCH_MULTI_V6_V7 35062306a36Sopenharmony_ci # https://github.com/llvm/llvm-project/issues/50764 35162306a36Sopenharmony_ci depends on !LD_IS_LLD || LLD_VERSION >= 160000 35262306a36Sopenharmony_ci select ARCH_MULTI_V4_V5 35362306a36Sopenharmony_ci select CPU_FA526 if !(CPU_SA110 || CPU_SA1100) 35462306a36Sopenharmony_ci 35562306a36Sopenharmony_ciconfig ARCH_MULTI_V4T 35662306a36Sopenharmony_ci bool "ARMv4T based platforms (ARM720T, ARM920T, ...)" 35762306a36Sopenharmony_ci depends on !ARCH_MULTI_V6_V7 35862306a36Sopenharmony_ci # https://github.com/llvm/llvm-project/issues/50764 35962306a36Sopenharmony_ci depends on !LD_IS_LLD || LLD_VERSION >= 160000 36062306a36Sopenharmony_ci select ARCH_MULTI_V4_V5 36162306a36Sopenharmony_ci select CPU_ARM920T if !(CPU_ARM7TDMI || CPU_ARM720T || \ 36262306a36Sopenharmony_ci CPU_ARM740T || CPU_ARM9TDMI || CPU_ARM922T || \ 36362306a36Sopenharmony_ci CPU_ARM925T || CPU_ARM940T) 36462306a36Sopenharmony_ci 36562306a36Sopenharmony_ciconfig ARCH_MULTI_V5 36662306a36Sopenharmony_ci bool "ARMv5 based platforms (ARM926T, XSCALE, PJ1, ...)" 36762306a36Sopenharmony_ci depends on !ARCH_MULTI_V6_V7 36862306a36Sopenharmony_ci select ARCH_MULTI_V4_V5 36962306a36Sopenharmony_ci select CPU_ARM926T if !(CPU_ARM946E || CPU_ARM1020 || \ 37062306a36Sopenharmony_ci CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || \ 37162306a36Sopenharmony_ci CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_FEROCEON) 37262306a36Sopenharmony_ci 37362306a36Sopenharmony_ciconfig ARCH_MULTI_V4_V5 37462306a36Sopenharmony_ci bool 37562306a36Sopenharmony_ci 37662306a36Sopenharmony_ciconfig ARCH_MULTI_V6 37762306a36Sopenharmony_ci bool "ARMv6 based platforms (ARM11)" 37862306a36Sopenharmony_ci select ARCH_MULTI_V6_V7 37962306a36Sopenharmony_ci select CPU_V6K 38062306a36Sopenharmony_ci 38162306a36Sopenharmony_ciconfig ARCH_MULTI_V7 38262306a36Sopenharmony_ci bool "ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)" 38362306a36Sopenharmony_ci default y 38462306a36Sopenharmony_ci select ARCH_MULTI_V6_V7 38562306a36Sopenharmony_ci select CPU_V7 38662306a36Sopenharmony_ci select HAVE_SMP 38762306a36Sopenharmony_ci 38862306a36Sopenharmony_ciconfig ARCH_MULTI_V6_V7 38962306a36Sopenharmony_ci bool 39062306a36Sopenharmony_ci select MIGHT_HAVE_CACHE_L2X0 39162306a36Sopenharmony_ci 39262306a36Sopenharmony_ciconfig ARCH_MULTI_CPU_AUTO 39362306a36Sopenharmony_ci def_bool !(ARCH_MULTI_V4 || ARCH_MULTI_V4T || ARCH_MULTI_V6_V7) 39462306a36Sopenharmony_ci select ARCH_MULTI_V5 39562306a36Sopenharmony_ci 39662306a36Sopenharmony_ciendmenu 39762306a36Sopenharmony_ci 39862306a36Sopenharmony_ciconfig ARCH_VIRT 39962306a36Sopenharmony_ci bool "Dummy Virtual Machine" 40062306a36Sopenharmony_ci depends on ARCH_MULTI_V7 40162306a36Sopenharmony_ci select ARM_AMBA 40262306a36Sopenharmony_ci select ARM_GIC 40362306a36Sopenharmony_ci select ARM_GIC_V2M if PCI 40462306a36Sopenharmony_ci select ARM_GIC_V3 40562306a36Sopenharmony_ci select ARM_GIC_V3_ITS if PCI 40662306a36Sopenharmony_ci select ARM_PSCI 40762306a36Sopenharmony_ci select HAVE_ARM_ARCH_TIMER 40862306a36Sopenharmony_ci 40962306a36Sopenharmony_ciconfig ARCH_AIROHA 41062306a36Sopenharmony_ci bool "Airoha SoC Support" 41162306a36Sopenharmony_ci depends on ARCH_MULTI_V7 41262306a36Sopenharmony_ci select ARM_AMBA 41362306a36Sopenharmony_ci select ARM_GIC 41462306a36Sopenharmony_ci select ARM_GIC_V3 41562306a36Sopenharmony_ci select ARM_PSCI 41662306a36Sopenharmony_ci select HAVE_ARM_ARCH_TIMER 41762306a36Sopenharmony_ci help 41862306a36Sopenharmony_ci Support for Airoha EN7523 SoCs 41962306a36Sopenharmony_ci 42062306a36Sopenharmony_ci# 42162306a36Sopenharmony_ci# This is sorted alphabetically by mach-* pathname. However, plat-* 42262306a36Sopenharmony_ci# Kconfigs may be included either alphabetically (according to the 42362306a36Sopenharmony_ci# plat- suffix) or along side the corresponding mach-* source. 42462306a36Sopenharmony_ci# 42562306a36Sopenharmony_cisource "arch/arm/mach-actions/Kconfig" 42662306a36Sopenharmony_ci 42762306a36Sopenharmony_cisource "arch/arm/mach-alpine/Kconfig" 42862306a36Sopenharmony_ci 42962306a36Sopenharmony_cisource "arch/arm/mach-artpec/Kconfig" 43062306a36Sopenharmony_ci 43162306a36Sopenharmony_cisource "arch/arm/mach-asm9260/Kconfig" 43262306a36Sopenharmony_ci 43362306a36Sopenharmony_cisource "arch/arm/mach-aspeed/Kconfig" 43462306a36Sopenharmony_ci 43562306a36Sopenharmony_cisource "arch/arm/mach-at91/Kconfig" 43662306a36Sopenharmony_ci 43762306a36Sopenharmony_cisource "arch/arm/mach-axxia/Kconfig" 43862306a36Sopenharmony_ci 43962306a36Sopenharmony_cisource "arch/arm/mach-bcm/Kconfig" 44062306a36Sopenharmony_ci 44162306a36Sopenharmony_cisource "arch/arm/mach-berlin/Kconfig" 44262306a36Sopenharmony_ci 44362306a36Sopenharmony_cisource "arch/arm/mach-clps711x/Kconfig" 44462306a36Sopenharmony_ci 44562306a36Sopenharmony_cisource "arch/arm/mach-davinci/Kconfig" 44662306a36Sopenharmony_ci 44762306a36Sopenharmony_cisource "arch/arm/mach-digicolor/Kconfig" 44862306a36Sopenharmony_ci 44962306a36Sopenharmony_cisource "arch/arm/mach-dove/Kconfig" 45062306a36Sopenharmony_ci 45162306a36Sopenharmony_cisource "arch/arm/mach-ep93xx/Kconfig" 45262306a36Sopenharmony_ci 45362306a36Sopenharmony_cisource "arch/arm/mach-exynos/Kconfig" 45462306a36Sopenharmony_ci 45562306a36Sopenharmony_cisource "arch/arm/mach-footbridge/Kconfig" 45662306a36Sopenharmony_ci 45762306a36Sopenharmony_cisource "arch/arm/mach-gemini/Kconfig" 45862306a36Sopenharmony_ci 45962306a36Sopenharmony_cisource "arch/arm/mach-highbank/Kconfig" 46062306a36Sopenharmony_ci 46162306a36Sopenharmony_cisource "arch/arm/mach-hisi/Kconfig" 46262306a36Sopenharmony_ci 46362306a36Sopenharmony_cisource "arch/arm/mach-hpe/Kconfig" 46462306a36Sopenharmony_ci 46562306a36Sopenharmony_cisource "arch/arm/mach-imx/Kconfig" 46662306a36Sopenharmony_ci 46762306a36Sopenharmony_cisource "arch/arm/mach-ixp4xx/Kconfig" 46862306a36Sopenharmony_ci 46962306a36Sopenharmony_cisource "arch/arm/mach-keystone/Kconfig" 47062306a36Sopenharmony_ci 47162306a36Sopenharmony_cisource "arch/arm/mach-lpc32xx/Kconfig" 47262306a36Sopenharmony_ci 47362306a36Sopenharmony_cisource "arch/arm/mach-mediatek/Kconfig" 47462306a36Sopenharmony_ci 47562306a36Sopenharmony_cisource "arch/arm/mach-meson/Kconfig" 47662306a36Sopenharmony_ci 47762306a36Sopenharmony_cisource "arch/arm/mach-milbeaut/Kconfig" 47862306a36Sopenharmony_ci 47962306a36Sopenharmony_cisource "arch/arm/mach-mmp/Kconfig" 48062306a36Sopenharmony_ci 48162306a36Sopenharmony_cisource "arch/arm/mach-moxart/Kconfig" 48262306a36Sopenharmony_ci 48362306a36Sopenharmony_cisource "arch/arm/mach-mstar/Kconfig" 48462306a36Sopenharmony_ci 48562306a36Sopenharmony_cisource "arch/arm/mach-mv78xx0/Kconfig" 48662306a36Sopenharmony_ci 48762306a36Sopenharmony_cisource "arch/arm/mach-mvebu/Kconfig" 48862306a36Sopenharmony_ci 48962306a36Sopenharmony_cisource "arch/arm/mach-mxs/Kconfig" 49062306a36Sopenharmony_ci 49162306a36Sopenharmony_cisource "arch/arm/mach-nomadik/Kconfig" 49262306a36Sopenharmony_ci 49362306a36Sopenharmony_cisource "arch/arm/mach-npcm/Kconfig" 49462306a36Sopenharmony_ci 49562306a36Sopenharmony_cisource "arch/arm/mach-nspire/Kconfig" 49662306a36Sopenharmony_ci 49762306a36Sopenharmony_cisource "arch/arm/mach-omap1/Kconfig" 49862306a36Sopenharmony_ci 49962306a36Sopenharmony_cisource "arch/arm/mach-omap2/Kconfig" 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_cisource "arch/arm/mach-orion5x/Kconfig" 50262306a36Sopenharmony_ci 50362306a36Sopenharmony_cisource "arch/arm/mach-pxa/Kconfig" 50462306a36Sopenharmony_ci 50562306a36Sopenharmony_cisource "arch/arm/mach-qcom/Kconfig" 50662306a36Sopenharmony_ci 50762306a36Sopenharmony_cisource "arch/arm/mach-rda/Kconfig" 50862306a36Sopenharmony_ci 50962306a36Sopenharmony_cisource "arch/arm/mach-realtek/Kconfig" 51062306a36Sopenharmony_ci 51162306a36Sopenharmony_cisource "arch/arm/mach-rpc/Kconfig" 51262306a36Sopenharmony_ci 51362306a36Sopenharmony_cisource "arch/arm/mach-rockchip/Kconfig" 51462306a36Sopenharmony_ci 51562306a36Sopenharmony_cisource "arch/arm/mach-s3c/Kconfig" 51662306a36Sopenharmony_ci 51762306a36Sopenharmony_cisource "arch/arm/mach-s5pv210/Kconfig" 51862306a36Sopenharmony_ci 51962306a36Sopenharmony_cisource "arch/arm/mach-sa1100/Kconfig" 52062306a36Sopenharmony_ci 52162306a36Sopenharmony_cisource "arch/arm/mach-shmobile/Kconfig" 52262306a36Sopenharmony_ci 52362306a36Sopenharmony_cisource "arch/arm/mach-socfpga/Kconfig" 52462306a36Sopenharmony_ci 52562306a36Sopenharmony_cisource "arch/arm/mach-spear/Kconfig" 52662306a36Sopenharmony_ci 52762306a36Sopenharmony_cisource "arch/arm/mach-sti/Kconfig" 52862306a36Sopenharmony_ci 52962306a36Sopenharmony_cisource "arch/arm/mach-stm32/Kconfig" 53062306a36Sopenharmony_ci 53162306a36Sopenharmony_cisource "arch/arm/mach-sunplus/Kconfig" 53262306a36Sopenharmony_ci 53362306a36Sopenharmony_cisource "arch/arm/mach-sunxi/Kconfig" 53462306a36Sopenharmony_ci 53562306a36Sopenharmony_cisource "arch/arm/mach-tegra/Kconfig" 53662306a36Sopenharmony_ci 53762306a36Sopenharmony_cisource "arch/arm/mach-uniphier/Kconfig" 53862306a36Sopenharmony_ci 53962306a36Sopenharmony_cisource "arch/arm/mach-ux500/Kconfig" 54062306a36Sopenharmony_ci 54162306a36Sopenharmony_cisource "arch/arm/mach-versatile/Kconfig" 54262306a36Sopenharmony_ci 54362306a36Sopenharmony_cisource "arch/arm/mach-vt8500/Kconfig" 54462306a36Sopenharmony_ci 54562306a36Sopenharmony_cisource "arch/arm/mach-zynq/Kconfig" 54662306a36Sopenharmony_ci 54762306a36Sopenharmony_ci# ARMv7-M architecture 54862306a36Sopenharmony_ciconfig ARCH_LPC18XX 54962306a36Sopenharmony_ci bool "NXP LPC18xx/LPC43xx" 55062306a36Sopenharmony_ci depends on ARM_SINGLE_ARMV7M 55162306a36Sopenharmony_ci select ARCH_HAS_RESET_CONTROLLER 55262306a36Sopenharmony_ci select ARM_AMBA 55362306a36Sopenharmony_ci select CLKSRC_LPC32XX 55462306a36Sopenharmony_ci select PINCTRL 55562306a36Sopenharmony_ci help 55662306a36Sopenharmony_ci Support for NXP's LPC18xx Cortex-M3 and LPC43xx Cortex-M4 55762306a36Sopenharmony_ci high performance microcontrollers. 55862306a36Sopenharmony_ci 55962306a36Sopenharmony_ciconfig ARCH_MPS2 56062306a36Sopenharmony_ci bool "ARM MPS2 platform" 56162306a36Sopenharmony_ci depends on ARM_SINGLE_ARMV7M 56262306a36Sopenharmony_ci select ARM_AMBA 56362306a36Sopenharmony_ci select CLKSRC_MPS2 56462306a36Sopenharmony_ci help 56562306a36Sopenharmony_ci Support for Cortex-M Prototyping System (or V2M-MPS2) which comes 56662306a36Sopenharmony_ci with a range of available cores like Cortex-M3/M4/M7. 56762306a36Sopenharmony_ci 56862306a36Sopenharmony_ci Please, note that depends which Application Note is used memory map 56962306a36Sopenharmony_ci for the platform may vary, so adjustment of RAM base might be needed. 57062306a36Sopenharmony_ci 57162306a36Sopenharmony_ci# Definitions to make life easier 57262306a36Sopenharmony_ciconfig ARCH_ACORN 57362306a36Sopenharmony_ci bool 57462306a36Sopenharmony_ci 57562306a36Sopenharmony_ciconfig PLAT_ORION 57662306a36Sopenharmony_ci bool 57762306a36Sopenharmony_ci select CLKSRC_MMIO 57862306a36Sopenharmony_ci select GENERIC_IRQ_CHIP 57962306a36Sopenharmony_ci select IRQ_DOMAIN 58062306a36Sopenharmony_ci 58162306a36Sopenharmony_ciconfig PLAT_ORION_LEGACY 58262306a36Sopenharmony_ci bool 58362306a36Sopenharmony_ci select PLAT_ORION 58462306a36Sopenharmony_ci 58562306a36Sopenharmony_ciconfig PLAT_VERSATILE 58662306a36Sopenharmony_ci bool 58762306a36Sopenharmony_ci 58862306a36Sopenharmony_cisource "arch/arm/mm/Kconfig" 58962306a36Sopenharmony_ci 59062306a36Sopenharmony_ciconfig IWMMXT 59162306a36Sopenharmony_ci bool "Enable iWMMXt support" 59262306a36Sopenharmony_ci depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4 || CPU_PJ4B 59362306a36Sopenharmony_ci default y if PXA27x || PXA3xx || ARCH_MMP || CPU_PJ4 || CPU_PJ4B 59462306a36Sopenharmony_ci help 59562306a36Sopenharmony_ci Enable support for iWMMXt context switching at run time if 59662306a36Sopenharmony_ci running on a CPU that supports it. 59762306a36Sopenharmony_ci 59862306a36Sopenharmony_ciif !MMU 59962306a36Sopenharmony_cisource "arch/arm/Kconfig-nommu" 60062306a36Sopenharmony_ciendif 60162306a36Sopenharmony_ci 60262306a36Sopenharmony_ciconfig PJ4B_ERRATA_4742 60362306a36Sopenharmony_ci bool "PJ4B Errata 4742: IDLE Wake Up Commands can Cause the CPU Core to Cease Operation" 60462306a36Sopenharmony_ci depends on CPU_PJ4B && MACH_ARMADA_370 60562306a36Sopenharmony_ci default y 60662306a36Sopenharmony_ci help 60762306a36Sopenharmony_ci When coming out of either a Wait for Interrupt (WFI) or a Wait for 60862306a36Sopenharmony_ci Event (WFE) IDLE states, a specific timing sensitivity exists between 60962306a36Sopenharmony_ci the retiring WFI/WFE instructions and the newly issued subsequent 61062306a36Sopenharmony_ci instructions. This sensitivity can result in a CPU hang scenario. 61162306a36Sopenharmony_ci Workaround: 61262306a36Sopenharmony_ci The software must insert either a Data Synchronization Barrier (DSB) 61362306a36Sopenharmony_ci or Data Memory Barrier (DMB) command immediately after the WFI/WFE 61462306a36Sopenharmony_ci instruction 61562306a36Sopenharmony_ci 61662306a36Sopenharmony_ciconfig ARM_ERRATA_326103 61762306a36Sopenharmony_ci bool "ARM errata: FSR write bit incorrect on a SWP to read-only memory" 61862306a36Sopenharmony_ci depends on CPU_V6 61962306a36Sopenharmony_ci help 62062306a36Sopenharmony_ci Executing a SWP instruction to read-only memory does not set bit 11 62162306a36Sopenharmony_ci of the FSR on the ARM 1136 prior to r1p0. This causes the kernel to 62262306a36Sopenharmony_ci treat the access as a read, preventing a COW from occurring and 62362306a36Sopenharmony_ci causing the faulting task to livelock. 62462306a36Sopenharmony_ci 62562306a36Sopenharmony_ciconfig ARM_ERRATA_411920 62662306a36Sopenharmony_ci bool "ARM errata: Invalidation of the Instruction Cache operation can fail" 62762306a36Sopenharmony_ci depends on CPU_V6 || CPU_V6K 62862306a36Sopenharmony_ci help 62962306a36Sopenharmony_ci Invalidation of the Instruction Cache operation can 63062306a36Sopenharmony_ci fail. This erratum is present in 1136 (before r1p4), 1156 and 1176. 63162306a36Sopenharmony_ci It does not affect the MPCore. This option enables the ARM Ltd. 63262306a36Sopenharmony_ci recommended workaround. 63362306a36Sopenharmony_ci 63462306a36Sopenharmony_ciconfig ARM_ERRATA_430973 63562306a36Sopenharmony_ci bool "ARM errata: Stale prediction on replaced interworking branch" 63662306a36Sopenharmony_ci depends on CPU_V7 63762306a36Sopenharmony_ci help 63862306a36Sopenharmony_ci This option enables the workaround for the 430973 Cortex-A8 63962306a36Sopenharmony_ci r1p* erratum. If a code sequence containing an ARM/Thumb 64062306a36Sopenharmony_ci interworking branch is replaced with another code sequence at the 64162306a36Sopenharmony_ci same virtual address, whether due to self-modifying code or virtual 64262306a36Sopenharmony_ci to physical address re-mapping, Cortex-A8 does not recover from the 64362306a36Sopenharmony_ci stale interworking branch prediction. This results in Cortex-A8 64462306a36Sopenharmony_ci executing the new code sequence in the incorrect ARM or Thumb state. 64562306a36Sopenharmony_ci The workaround enables the BTB/BTAC operations by setting ACTLR.IBE 64662306a36Sopenharmony_ci and also flushes the branch target cache at every context switch. 64762306a36Sopenharmony_ci Note that setting specific bits in the ACTLR register may not be 64862306a36Sopenharmony_ci available in non-secure mode. 64962306a36Sopenharmony_ci 65062306a36Sopenharmony_ciconfig ARM_ERRATA_458693 65162306a36Sopenharmony_ci bool "ARM errata: Processor deadlock when a false hazard is created" 65262306a36Sopenharmony_ci depends on CPU_V7 65362306a36Sopenharmony_ci depends on !ARCH_MULTIPLATFORM 65462306a36Sopenharmony_ci help 65562306a36Sopenharmony_ci This option enables the workaround for the 458693 Cortex-A8 (r2p0) 65662306a36Sopenharmony_ci erratum. For very specific sequences of memory operations, it is 65762306a36Sopenharmony_ci possible for a hazard condition intended for a cache line to instead 65862306a36Sopenharmony_ci be incorrectly associated with a different cache line. This false 65962306a36Sopenharmony_ci hazard might then cause a processor deadlock. The workaround enables 66062306a36Sopenharmony_ci the L1 caching of the NEON accesses and disables the PLD instruction 66162306a36Sopenharmony_ci in the ACTLR register. Note that setting specific bits in the ACTLR 66262306a36Sopenharmony_ci register may not be available in non-secure mode and thus is not 66362306a36Sopenharmony_ci available on a multiplatform kernel. This should be applied by the 66462306a36Sopenharmony_ci bootloader instead. 66562306a36Sopenharmony_ci 66662306a36Sopenharmony_ciconfig ARM_ERRATA_460075 66762306a36Sopenharmony_ci bool "ARM errata: Data written to the L2 cache can be overwritten with stale data" 66862306a36Sopenharmony_ci depends on CPU_V7 66962306a36Sopenharmony_ci depends on !ARCH_MULTIPLATFORM 67062306a36Sopenharmony_ci help 67162306a36Sopenharmony_ci This option enables the workaround for the 460075 Cortex-A8 (r2p0) 67262306a36Sopenharmony_ci erratum. Any asynchronous access to the L2 cache may encounter a 67362306a36Sopenharmony_ci situation in which recent store transactions to the L2 cache are lost 67462306a36Sopenharmony_ci and overwritten with stale memory contents from external memory. The 67562306a36Sopenharmony_ci workaround disables the write-allocate mode for the L2 cache via the 67662306a36Sopenharmony_ci ACTLR register. Note that setting specific bits in the ACTLR register 67762306a36Sopenharmony_ci may not be available in non-secure mode and thus is not available on 67862306a36Sopenharmony_ci a multiplatform kernel. This should be applied by the bootloader 67962306a36Sopenharmony_ci instead. 68062306a36Sopenharmony_ci 68162306a36Sopenharmony_ciconfig ARM_ERRATA_742230 68262306a36Sopenharmony_ci bool "ARM errata: DMB operation may be faulty" 68362306a36Sopenharmony_ci depends on CPU_V7 && SMP 68462306a36Sopenharmony_ci depends on !ARCH_MULTIPLATFORM 68562306a36Sopenharmony_ci help 68662306a36Sopenharmony_ci This option enables the workaround for the 742230 Cortex-A9 68762306a36Sopenharmony_ci (r1p0..r2p2) erratum. Under rare circumstances, a DMB instruction 68862306a36Sopenharmony_ci between two write operations may not ensure the correct visibility 68962306a36Sopenharmony_ci ordering of the two writes. This workaround sets a specific bit in 69062306a36Sopenharmony_ci the diagnostic register of the Cortex-A9 which causes the DMB 69162306a36Sopenharmony_ci instruction to behave as a DSB, ensuring the correct behaviour of 69262306a36Sopenharmony_ci the two writes. Note that setting specific bits in the diagnostics 69362306a36Sopenharmony_ci register may not be available in non-secure mode and thus is not 69462306a36Sopenharmony_ci available on a multiplatform kernel. This should be applied by the 69562306a36Sopenharmony_ci bootloader instead. 69662306a36Sopenharmony_ci 69762306a36Sopenharmony_ciconfig ARM_ERRATA_742231 69862306a36Sopenharmony_ci bool "ARM errata: Incorrect hazard handling in the SCU may lead to data corruption" 69962306a36Sopenharmony_ci depends on CPU_V7 && SMP 70062306a36Sopenharmony_ci depends on !ARCH_MULTIPLATFORM 70162306a36Sopenharmony_ci help 70262306a36Sopenharmony_ci This option enables the workaround for the 742231 Cortex-A9 70362306a36Sopenharmony_ci (r2p0..r2p2) erratum. Under certain conditions, specific to the 70462306a36Sopenharmony_ci Cortex-A9 MPCore micro-architecture, two CPUs working in SMP mode, 70562306a36Sopenharmony_ci accessing some data located in the same cache line, may get corrupted 70662306a36Sopenharmony_ci data due to bad handling of the address hazard when the line gets 70762306a36Sopenharmony_ci replaced from one of the CPUs at the same time as another CPU is 70862306a36Sopenharmony_ci accessing it. This workaround sets specific bits in the diagnostic 70962306a36Sopenharmony_ci register of the Cortex-A9 which reduces the linefill issuing 71062306a36Sopenharmony_ci capabilities of the processor. Note that setting specific bits in the 71162306a36Sopenharmony_ci diagnostics register may not be available in non-secure mode and thus 71262306a36Sopenharmony_ci is not available on a multiplatform kernel. This should be applied by 71362306a36Sopenharmony_ci the bootloader instead. 71462306a36Sopenharmony_ci 71562306a36Sopenharmony_ciconfig ARM_ERRATA_643719 71662306a36Sopenharmony_ci bool "ARM errata: LoUIS bit field in CLIDR register is incorrect" 71762306a36Sopenharmony_ci depends on CPU_V7 && SMP 71862306a36Sopenharmony_ci default y 71962306a36Sopenharmony_ci help 72062306a36Sopenharmony_ci This option enables the workaround for the 643719 Cortex-A9 (prior to 72162306a36Sopenharmony_ci r1p0) erratum. On affected cores the LoUIS bit field of the CLIDR 72262306a36Sopenharmony_ci register returns zero when it should return one. The workaround 72362306a36Sopenharmony_ci corrects this value, ensuring cache maintenance operations which use 72462306a36Sopenharmony_ci it behave as intended and avoiding data corruption. 72562306a36Sopenharmony_ci 72662306a36Sopenharmony_ciconfig ARM_ERRATA_720789 72762306a36Sopenharmony_ci bool "ARM errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID" 72862306a36Sopenharmony_ci depends on CPU_V7 72962306a36Sopenharmony_ci help 73062306a36Sopenharmony_ci This option enables the workaround for the 720789 Cortex-A9 (prior to 73162306a36Sopenharmony_ci r2p0) erratum. A faulty ASID can be sent to the other CPUs for the 73262306a36Sopenharmony_ci broadcasted CP15 TLB maintenance operations TLBIASIDIS and TLBIMVAIS. 73362306a36Sopenharmony_ci As a consequence of this erratum, some TLB entries which should be 73462306a36Sopenharmony_ci invalidated are not, resulting in an incoherency in the system page 73562306a36Sopenharmony_ci tables. The workaround changes the TLB flushing routines to invalidate 73662306a36Sopenharmony_ci entries regardless of the ASID. 73762306a36Sopenharmony_ci 73862306a36Sopenharmony_ciconfig ARM_ERRATA_743622 73962306a36Sopenharmony_ci bool "ARM errata: Faulty hazard checking in the Store Buffer may lead to data corruption" 74062306a36Sopenharmony_ci depends on CPU_V7 74162306a36Sopenharmony_ci depends on !ARCH_MULTIPLATFORM 74262306a36Sopenharmony_ci help 74362306a36Sopenharmony_ci This option enables the workaround for the 743622 Cortex-A9 74462306a36Sopenharmony_ci (r2p*) erratum. Under very rare conditions, a faulty 74562306a36Sopenharmony_ci optimisation in the Cortex-A9 Store Buffer may lead to data 74662306a36Sopenharmony_ci corruption. This workaround sets a specific bit in the diagnostic 74762306a36Sopenharmony_ci register of the Cortex-A9 which disables the Store Buffer 74862306a36Sopenharmony_ci optimisation, preventing the defect from occurring. This has no 74962306a36Sopenharmony_ci visible impact on the overall performance or power consumption of the 75062306a36Sopenharmony_ci processor. Note that setting specific bits in the diagnostics register 75162306a36Sopenharmony_ci may not be available in non-secure mode and thus is not available on a 75262306a36Sopenharmony_ci multiplatform kernel. This should be applied by the bootloader instead. 75362306a36Sopenharmony_ci 75462306a36Sopenharmony_ciconfig ARM_ERRATA_751472 75562306a36Sopenharmony_ci bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation" 75662306a36Sopenharmony_ci depends on CPU_V7 75762306a36Sopenharmony_ci depends on !ARCH_MULTIPLATFORM 75862306a36Sopenharmony_ci help 75962306a36Sopenharmony_ci This option enables the workaround for the 751472 Cortex-A9 (prior 76062306a36Sopenharmony_ci to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the 76162306a36Sopenharmony_ci completion of a following broadcasted operation if the second 76262306a36Sopenharmony_ci operation is received by a CPU before the ICIALLUIS has completed, 76362306a36Sopenharmony_ci potentially leading to corrupted entries in the cache or TLB. 76462306a36Sopenharmony_ci Note that setting specific bits in the diagnostics register may 76562306a36Sopenharmony_ci not be available in non-secure mode and thus is not available on 76662306a36Sopenharmony_ci a multiplatform kernel. This should be applied by the bootloader 76762306a36Sopenharmony_ci instead. 76862306a36Sopenharmony_ci 76962306a36Sopenharmony_ciconfig ARM_ERRATA_754322 77062306a36Sopenharmony_ci bool "ARM errata: possible faulty MMU translations following an ASID switch" 77162306a36Sopenharmony_ci depends on CPU_V7 77262306a36Sopenharmony_ci help 77362306a36Sopenharmony_ci This option enables the workaround for the 754322 Cortex-A9 (r2p*, 77462306a36Sopenharmony_ci r3p*) erratum. A speculative memory access may cause a page table walk 77562306a36Sopenharmony_ci which starts prior to an ASID switch but completes afterwards. This 77662306a36Sopenharmony_ci can populate the micro-TLB with a stale entry which may be hit with 77762306a36Sopenharmony_ci the new ASID. This workaround places two dsb instructions in the mm 77862306a36Sopenharmony_ci switching code so that no page table walks can cross the ASID switch. 77962306a36Sopenharmony_ci 78062306a36Sopenharmony_ciconfig ARM_ERRATA_754327 78162306a36Sopenharmony_ci bool "ARM errata: no automatic Store Buffer drain" 78262306a36Sopenharmony_ci depends on CPU_V7 && SMP 78362306a36Sopenharmony_ci help 78462306a36Sopenharmony_ci This option enables the workaround for the 754327 Cortex-A9 (prior to 78562306a36Sopenharmony_ci r2p0) erratum. The Store Buffer does not have any automatic draining 78662306a36Sopenharmony_ci mechanism and therefore a livelock may occur if an external agent 78762306a36Sopenharmony_ci continuously polls a memory location waiting to observe an update. 78862306a36Sopenharmony_ci This workaround defines cpu_relax() as smp_mb(), preventing correctly 78962306a36Sopenharmony_ci written polling loops from denying visibility of updates to memory. 79062306a36Sopenharmony_ci 79162306a36Sopenharmony_ciconfig ARM_ERRATA_364296 79262306a36Sopenharmony_ci bool "ARM errata: Possible cache data corruption with hit-under-miss enabled" 79362306a36Sopenharmony_ci depends on CPU_V6 79462306a36Sopenharmony_ci help 79562306a36Sopenharmony_ci This options enables the workaround for the 364296 ARM1136 79662306a36Sopenharmony_ci r0p2 erratum (possible cache data corruption with 79762306a36Sopenharmony_ci hit-under-miss enabled). It sets the undocumented bit 31 in 79862306a36Sopenharmony_ci the auxiliary control register and the FI bit in the control 79962306a36Sopenharmony_ci register, thus disabling hit-under-miss without putting the 80062306a36Sopenharmony_ci processor into full low interrupt latency mode. ARM11MPCore 80162306a36Sopenharmony_ci is not affected. 80262306a36Sopenharmony_ci 80362306a36Sopenharmony_ciconfig ARM_ERRATA_764369 80462306a36Sopenharmony_ci bool "ARM errata: Data cache line maintenance operation by MVA may not succeed" 80562306a36Sopenharmony_ci depends on CPU_V7 && SMP 80662306a36Sopenharmony_ci help 80762306a36Sopenharmony_ci This option enables the workaround for erratum 764369 80862306a36Sopenharmony_ci affecting Cortex-A9 MPCore with two or more processors (all 80962306a36Sopenharmony_ci current revisions). Under certain timing circumstances, a data 81062306a36Sopenharmony_ci cache line maintenance operation by MVA targeting an Inner 81162306a36Sopenharmony_ci Shareable memory region may fail to proceed up to either the 81262306a36Sopenharmony_ci Point of Coherency or to the Point of Unification of the 81362306a36Sopenharmony_ci system. This workaround adds a DSB instruction before the 81462306a36Sopenharmony_ci relevant cache maintenance functions and sets a specific bit 81562306a36Sopenharmony_ci in the diagnostic control register of the SCU. 81662306a36Sopenharmony_ci 81762306a36Sopenharmony_ciconfig ARM_ERRATA_764319 81862306a36Sopenharmony_ci bool "ARM errata: Read to DBGPRSR and DBGOSLSR may generate Undefined instruction" 81962306a36Sopenharmony_ci depends on CPU_V7 82062306a36Sopenharmony_ci help 82162306a36Sopenharmony_ci This option enables the workaround for the 764319 Cortex A-9 erratum. 82262306a36Sopenharmony_ci CP14 read accesses to the DBGPRSR and DBGOSLSR registers generate an 82362306a36Sopenharmony_ci unexpected Undefined Instruction exception when the DBGSWENABLE 82462306a36Sopenharmony_ci external pin is set to 0, even when the CP14 accesses are performed 82562306a36Sopenharmony_ci from a privileged mode. This work around catches the exception in a 82662306a36Sopenharmony_ci way the kernel does not stop execution. 82762306a36Sopenharmony_ci 82862306a36Sopenharmony_ciconfig ARM_ERRATA_775420 82962306a36Sopenharmony_ci bool "ARM errata: A data cache maintenance operation which aborts, might lead to deadlock" 83062306a36Sopenharmony_ci depends on CPU_V7 83162306a36Sopenharmony_ci help 83262306a36Sopenharmony_ci This option enables the workaround for the 775420 Cortex-A9 (r2p2, 83362306a36Sopenharmony_ci r2p6,r2p8,r2p10,r3p0) erratum. In case a data cache maintenance 83462306a36Sopenharmony_ci operation aborts with MMU exception, it might cause the processor 83562306a36Sopenharmony_ci to deadlock. This workaround puts DSB before executing ISB if 83662306a36Sopenharmony_ci an abort may occur on cache maintenance. 83762306a36Sopenharmony_ci 83862306a36Sopenharmony_ciconfig ARM_ERRATA_798181 83962306a36Sopenharmony_ci bool "ARM errata: TLBI/DSB failure on Cortex-A15" 84062306a36Sopenharmony_ci depends on CPU_V7 && SMP 84162306a36Sopenharmony_ci help 84262306a36Sopenharmony_ci On Cortex-A15 (r0p0..r3p2) the TLBI*IS/DSB operations are not 84362306a36Sopenharmony_ci adequately shooting down all use of the old entries. This 84462306a36Sopenharmony_ci option enables the Linux kernel workaround for this erratum 84562306a36Sopenharmony_ci which sends an IPI to the CPUs that are running the same ASID 84662306a36Sopenharmony_ci as the one being invalidated. 84762306a36Sopenharmony_ci 84862306a36Sopenharmony_ciconfig ARM_ERRATA_773022 84962306a36Sopenharmony_ci bool "ARM errata: incorrect instructions may be executed from loop buffer" 85062306a36Sopenharmony_ci depends on CPU_V7 85162306a36Sopenharmony_ci help 85262306a36Sopenharmony_ci This option enables the workaround for the 773022 Cortex-A15 85362306a36Sopenharmony_ci (up to r0p4) erratum. In certain rare sequences of code, the 85462306a36Sopenharmony_ci loop buffer may deliver incorrect instructions. This 85562306a36Sopenharmony_ci workaround disables the loop buffer to avoid the erratum. 85662306a36Sopenharmony_ci 85762306a36Sopenharmony_ciconfig ARM_ERRATA_818325_852422 85862306a36Sopenharmony_ci bool "ARM errata: A12: some seqs of opposed cond code instrs => deadlock or corruption" 85962306a36Sopenharmony_ci depends on CPU_V7 86062306a36Sopenharmony_ci help 86162306a36Sopenharmony_ci This option enables the workaround for: 86262306a36Sopenharmony_ci - Cortex-A12 818325: Execution of an UNPREDICTABLE STR or STM 86362306a36Sopenharmony_ci instruction might deadlock. Fixed in r0p1. 86462306a36Sopenharmony_ci - Cortex-A12 852422: Execution of a sequence of instructions might 86562306a36Sopenharmony_ci lead to either a data corruption or a CPU deadlock. Not fixed in 86662306a36Sopenharmony_ci any Cortex-A12 cores yet. 86762306a36Sopenharmony_ci This workaround for all both errata involves setting bit[12] of the 86862306a36Sopenharmony_ci Feature Register. This bit disables an optimisation applied to a 86962306a36Sopenharmony_ci sequence of 2 instructions that use opposing condition codes. 87062306a36Sopenharmony_ci 87162306a36Sopenharmony_ciconfig ARM_ERRATA_821420 87262306a36Sopenharmony_ci bool "ARM errata: A12: sequence of VMOV to core registers might lead to a dead lock" 87362306a36Sopenharmony_ci depends on CPU_V7 87462306a36Sopenharmony_ci help 87562306a36Sopenharmony_ci This option enables the workaround for the 821420 Cortex-A12 87662306a36Sopenharmony_ci (all revs) erratum. In very rare timing conditions, a sequence 87762306a36Sopenharmony_ci of VMOV to Core registers instructions, for which the second 87862306a36Sopenharmony_ci one is in the shadow of a branch or abort, can lead to a 87962306a36Sopenharmony_ci deadlock when the VMOV instructions are issued out-of-order. 88062306a36Sopenharmony_ci 88162306a36Sopenharmony_ciconfig ARM_ERRATA_825619 88262306a36Sopenharmony_ci bool "ARM errata: A12: DMB NSHST/ISHST mixed ... might cause deadlock" 88362306a36Sopenharmony_ci depends on CPU_V7 88462306a36Sopenharmony_ci help 88562306a36Sopenharmony_ci This option enables the workaround for the 825619 Cortex-A12 88662306a36Sopenharmony_ci (all revs) erratum. Within rare timing constraints, executing a 88762306a36Sopenharmony_ci DMB NSHST or DMB ISHST instruction followed by a mix of Cacheable 88862306a36Sopenharmony_ci and Device/Strongly-Ordered loads and stores might cause deadlock 88962306a36Sopenharmony_ci 89062306a36Sopenharmony_ciconfig ARM_ERRATA_857271 89162306a36Sopenharmony_ci bool "ARM errata: A12: CPU might deadlock under some very rare internal conditions" 89262306a36Sopenharmony_ci depends on CPU_V7 89362306a36Sopenharmony_ci help 89462306a36Sopenharmony_ci This option enables the workaround for the 857271 Cortex-A12 89562306a36Sopenharmony_ci (all revs) erratum. Under very rare timing conditions, the CPU might 89662306a36Sopenharmony_ci hang. The workaround is expected to have a < 1% performance impact. 89762306a36Sopenharmony_ci 89862306a36Sopenharmony_ciconfig ARM_ERRATA_852421 89962306a36Sopenharmony_ci bool "ARM errata: A17: DMB ST might fail to create order between stores" 90062306a36Sopenharmony_ci depends on CPU_V7 90162306a36Sopenharmony_ci help 90262306a36Sopenharmony_ci This option enables the workaround for the 852421 Cortex-A17 90362306a36Sopenharmony_ci (r1p0, r1p1, r1p2) erratum. Under very rare timing conditions, 90462306a36Sopenharmony_ci execution of a DMB ST instruction might fail to properly order 90562306a36Sopenharmony_ci stores from GroupA and stores from GroupB. 90662306a36Sopenharmony_ci 90762306a36Sopenharmony_ciconfig ARM_ERRATA_852423 90862306a36Sopenharmony_ci bool "ARM errata: A17: some seqs of opposed cond code instrs => deadlock or corruption" 90962306a36Sopenharmony_ci depends on CPU_V7 91062306a36Sopenharmony_ci help 91162306a36Sopenharmony_ci This option enables the workaround for: 91262306a36Sopenharmony_ci - Cortex-A17 852423: Execution of a sequence of instructions might 91362306a36Sopenharmony_ci lead to either a data corruption or a CPU deadlock. Not fixed in 91462306a36Sopenharmony_ci any Cortex-A17 cores yet. 91562306a36Sopenharmony_ci This is identical to Cortex-A12 erratum 852422. It is a separate 91662306a36Sopenharmony_ci config option from the A12 erratum due to the way errata are checked 91762306a36Sopenharmony_ci for and handled. 91862306a36Sopenharmony_ci 91962306a36Sopenharmony_ciconfig ARM_ERRATA_857272 92062306a36Sopenharmony_ci bool "ARM errata: A17: CPU might deadlock under some very rare internal conditions" 92162306a36Sopenharmony_ci depends on CPU_V7 92262306a36Sopenharmony_ci help 92362306a36Sopenharmony_ci This option enables the workaround for the 857272 Cortex-A17 erratum. 92462306a36Sopenharmony_ci This erratum is not known to be fixed in any A17 revision. 92562306a36Sopenharmony_ci This is identical to Cortex-A12 erratum 857271. It is a separate 92662306a36Sopenharmony_ci config option from the A12 erratum due to the way errata are checked 92762306a36Sopenharmony_ci for and handled. 92862306a36Sopenharmony_ci 92962306a36Sopenharmony_ciendmenu 93062306a36Sopenharmony_ci 93162306a36Sopenharmony_cisource "arch/arm/common/Kconfig" 93262306a36Sopenharmony_ci 93362306a36Sopenharmony_cimenu "Bus support" 93462306a36Sopenharmony_ci 93562306a36Sopenharmony_ciconfig ISA 93662306a36Sopenharmony_ci bool 93762306a36Sopenharmony_ci help 93862306a36Sopenharmony_ci Find out whether you have ISA slots on your motherboard. ISA is the 93962306a36Sopenharmony_ci name of a bus system, i.e. the way the CPU talks to the other stuff 94062306a36Sopenharmony_ci inside your box. Other bus systems are PCI, EISA, MicroChannel 94162306a36Sopenharmony_ci (MCA) or VESA. ISA is an older system, now being displaced by PCI; 94262306a36Sopenharmony_ci newer boards don't support it. If you have ISA, say Y, otherwise N. 94362306a36Sopenharmony_ci 94462306a36Sopenharmony_ci# Select ISA DMA interface 94562306a36Sopenharmony_ciconfig ISA_DMA_API 94662306a36Sopenharmony_ci bool 94762306a36Sopenharmony_ci 94862306a36Sopenharmony_ciconfig ARM_ERRATA_814220 94962306a36Sopenharmony_ci bool "ARM errata: Cache maintenance by set/way operations can execute out of order" 95062306a36Sopenharmony_ci depends on CPU_V7 95162306a36Sopenharmony_ci help 95262306a36Sopenharmony_ci The v7 ARM states that all cache and branch predictor maintenance 95362306a36Sopenharmony_ci operations that do not specify an address execute, relative to 95462306a36Sopenharmony_ci each other, in program order. 95562306a36Sopenharmony_ci However, because of this erratum, an L2 set/way cache maintenance 95662306a36Sopenharmony_ci operation can overtake an L1 set/way cache maintenance operation. 95762306a36Sopenharmony_ci This ERRATA only affected the Cortex-A7 and present in r0p2, r0p3, 95862306a36Sopenharmony_ci r0p4, r0p5. 95962306a36Sopenharmony_ci 96062306a36Sopenharmony_ciendmenu 96162306a36Sopenharmony_ci 96262306a36Sopenharmony_cimenu "Kernel Features" 96362306a36Sopenharmony_ci 96462306a36Sopenharmony_ciconfig HAVE_SMP 96562306a36Sopenharmony_ci bool 96662306a36Sopenharmony_ci help 96762306a36Sopenharmony_ci This option should be selected by machines which have an SMP- 96862306a36Sopenharmony_ci capable CPU. 96962306a36Sopenharmony_ci 97062306a36Sopenharmony_ci The only effect of this option is to make the SMP-related 97162306a36Sopenharmony_ci options available to the user for configuration. 97262306a36Sopenharmony_ci 97362306a36Sopenharmony_ciconfig SMP 97462306a36Sopenharmony_ci bool "Symmetric Multi-Processing" 97562306a36Sopenharmony_ci depends on CPU_V6K || CPU_V7 97662306a36Sopenharmony_ci depends on HAVE_SMP 97762306a36Sopenharmony_ci depends on MMU || ARM_MPU 97862306a36Sopenharmony_ci select IRQ_WORK 97962306a36Sopenharmony_ci help 98062306a36Sopenharmony_ci This enables support for systems with more than one CPU. If you have 98162306a36Sopenharmony_ci a system with only one CPU, say N. If you have a system with more 98262306a36Sopenharmony_ci than one CPU, say Y. 98362306a36Sopenharmony_ci 98462306a36Sopenharmony_ci If you say N here, the kernel will run on uni- and multiprocessor 98562306a36Sopenharmony_ci machines, but will use only one CPU of a multiprocessor machine. If 98662306a36Sopenharmony_ci you say Y here, the kernel will run on many, but not all, 98762306a36Sopenharmony_ci uniprocessor machines. On a uniprocessor machine, the kernel 98862306a36Sopenharmony_ci will run faster if you say N here. 98962306a36Sopenharmony_ci 99062306a36Sopenharmony_ci See also <file:Documentation/arch/x86/i386/IO-APIC.rst>, 99162306a36Sopenharmony_ci <file:Documentation/admin-guide/lockup-watchdogs.rst> and the SMP-HOWTO available at 99262306a36Sopenharmony_ci <http://tldp.org/HOWTO/SMP-HOWTO.html>. 99362306a36Sopenharmony_ci 99462306a36Sopenharmony_ci If you don't know what to do here, say N. 99562306a36Sopenharmony_ci 99662306a36Sopenharmony_ciconfig SMP_ON_UP 99762306a36Sopenharmony_ci bool "Allow booting SMP kernel on uniprocessor systems" 99862306a36Sopenharmony_ci depends on SMP && MMU 99962306a36Sopenharmony_ci default y 100062306a36Sopenharmony_ci help 100162306a36Sopenharmony_ci SMP kernels contain instructions which fail on non-SMP processors. 100262306a36Sopenharmony_ci Enabling this option allows the kernel to modify itself to make 100362306a36Sopenharmony_ci these instructions safe. Disabling it allows about 1K of space 100462306a36Sopenharmony_ci savings. 100562306a36Sopenharmony_ci 100662306a36Sopenharmony_ci If you don't know what to do here, say Y. 100762306a36Sopenharmony_ci 100862306a36Sopenharmony_ci 100962306a36Sopenharmony_ciconfig CURRENT_POINTER_IN_TPIDRURO 101062306a36Sopenharmony_ci def_bool y 101162306a36Sopenharmony_ci depends on CPU_32v6K && !CPU_V6 101262306a36Sopenharmony_ci 101362306a36Sopenharmony_ciconfig IRQSTACKS 101462306a36Sopenharmony_ci def_bool y 101562306a36Sopenharmony_ci select HAVE_IRQ_EXIT_ON_IRQ_STACK 101662306a36Sopenharmony_ci select HAVE_SOFTIRQ_ON_OWN_STACK 101762306a36Sopenharmony_ci 101862306a36Sopenharmony_ciconfig ARM_CPU_TOPOLOGY 101962306a36Sopenharmony_ci bool "Support cpu topology definition" 102062306a36Sopenharmony_ci depends on SMP && CPU_V7 102162306a36Sopenharmony_ci default y 102262306a36Sopenharmony_ci help 102362306a36Sopenharmony_ci Support ARM cpu topology definition. The MPIDR register defines 102462306a36Sopenharmony_ci affinity between processors which is then used to describe the cpu 102562306a36Sopenharmony_ci topology of an ARM System. 102662306a36Sopenharmony_ci 102762306a36Sopenharmony_ciconfig SCHED_MC 102862306a36Sopenharmony_ci bool "Multi-core scheduler support" 102962306a36Sopenharmony_ci depends on ARM_CPU_TOPOLOGY 103062306a36Sopenharmony_ci help 103162306a36Sopenharmony_ci Multi-core scheduler support improves the CPU scheduler's decision 103262306a36Sopenharmony_ci making when dealing with multi-core CPU chips at a cost of slightly 103362306a36Sopenharmony_ci increased overhead in some places. If unsure say N here. 103462306a36Sopenharmony_ci 103562306a36Sopenharmony_ciconfig SCHED_SMT 103662306a36Sopenharmony_ci bool "SMT scheduler support" 103762306a36Sopenharmony_ci depends on ARM_CPU_TOPOLOGY 103862306a36Sopenharmony_ci help 103962306a36Sopenharmony_ci Improves the CPU scheduler's decision making when dealing with 104062306a36Sopenharmony_ci MultiThreading at a cost of slightly increased overhead in some 104162306a36Sopenharmony_ci places. If unsure say N here. 104262306a36Sopenharmony_ci 104362306a36Sopenharmony_ciconfig HAVE_ARM_SCU 104462306a36Sopenharmony_ci bool 104562306a36Sopenharmony_ci help 104662306a36Sopenharmony_ci This option enables support for the ARM snoop control unit 104762306a36Sopenharmony_ci 104862306a36Sopenharmony_ciconfig HAVE_ARM_ARCH_TIMER 104962306a36Sopenharmony_ci bool "Architected timer support" 105062306a36Sopenharmony_ci depends on CPU_V7 105162306a36Sopenharmony_ci select ARM_ARCH_TIMER 105262306a36Sopenharmony_ci help 105362306a36Sopenharmony_ci This option enables support for the ARM architected timer 105462306a36Sopenharmony_ci 105562306a36Sopenharmony_ciconfig HAVE_ARM_TWD 105662306a36Sopenharmony_ci bool 105762306a36Sopenharmony_ci help 105862306a36Sopenharmony_ci This options enables support for the ARM timer and watchdog unit 105962306a36Sopenharmony_ci 106062306a36Sopenharmony_ciconfig MCPM 106162306a36Sopenharmony_ci bool "Multi-Cluster Power Management" 106262306a36Sopenharmony_ci depends on CPU_V7 && SMP 106362306a36Sopenharmony_ci help 106462306a36Sopenharmony_ci This option provides the common power management infrastructure 106562306a36Sopenharmony_ci for (multi-)cluster based systems, such as big.LITTLE based 106662306a36Sopenharmony_ci systems. 106762306a36Sopenharmony_ci 106862306a36Sopenharmony_ciconfig MCPM_QUAD_CLUSTER 106962306a36Sopenharmony_ci bool 107062306a36Sopenharmony_ci depends on MCPM 107162306a36Sopenharmony_ci help 107262306a36Sopenharmony_ci To avoid wasting resources unnecessarily, MCPM only supports up 107362306a36Sopenharmony_ci to 2 clusters by default. 107462306a36Sopenharmony_ci Platforms with 3 or 4 clusters that use MCPM must select this 107562306a36Sopenharmony_ci option to allow the additional clusters to be managed. 107662306a36Sopenharmony_ci 107762306a36Sopenharmony_ciconfig BIG_LITTLE 107862306a36Sopenharmony_ci bool "big.LITTLE support (Experimental)" 107962306a36Sopenharmony_ci depends on CPU_V7 && SMP 108062306a36Sopenharmony_ci select MCPM 108162306a36Sopenharmony_ci help 108262306a36Sopenharmony_ci This option enables support selections for the big.LITTLE 108362306a36Sopenharmony_ci system architecture. 108462306a36Sopenharmony_ci 108562306a36Sopenharmony_ciconfig BL_SWITCHER 108662306a36Sopenharmony_ci bool "big.LITTLE switcher support" 108762306a36Sopenharmony_ci depends on BIG_LITTLE && MCPM && HOTPLUG_CPU && ARM_GIC 108862306a36Sopenharmony_ci select CPU_PM 108962306a36Sopenharmony_ci help 109062306a36Sopenharmony_ci The big.LITTLE "switcher" provides the core functionality to 109162306a36Sopenharmony_ci transparently handle transition between a cluster of A15's 109262306a36Sopenharmony_ci and a cluster of A7's in a big.LITTLE system. 109362306a36Sopenharmony_ci 109462306a36Sopenharmony_ciconfig BL_SWITCHER_DUMMY_IF 109562306a36Sopenharmony_ci tristate "Simple big.LITTLE switcher user interface" 109662306a36Sopenharmony_ci depends on BL_SWITCHER && DEBUG_KERNEL 109762306a36Sopenharmony_ci help 109862306a36Sopenharmony_ci This is a simple and dummy char dev interface to control 109962306a36Sopenharmony_ci the big.LITTLE switcher core code. It is meant for 110062306a36Sopenharmony_ci debugging purposes only. 110162306a36Sopenharmony_ci 110262306a36Sopenharmony_cichoice 110362306a36Sopenharmony_ci prompt "Memory split" 110462306a36Sopenharmony_ci depends on MMU 110562306a36Sopenharmony_ci default VMSPLIT_3G 110662306a36Sopenharmony_ci help 110762306a36Sopenharmony_ci Select the desired split between kernel and user memory. 110862306a36Sopenharmony_ci 110962306a36Sopenharmony_ci If you are not absolutely sure what you are doing, leave this 111062306a36Sopenharmony_ci option alone! 111162306a36Sopenharmony_ci 111262306a36Sopenharmony_ci config VMSPLIT_3G 111362306a36Sopenharmony_ci bool "3G/1G user/kernel split" 111462306a36Sopenharmony_ci config VMSPLIT_3G_OPT 111562306a36Sopenharmony_ci depends on !ARM_LPAE 111662306a36Sopenharmony_ci bool "3G/1G user/kernel split (for full 1G low memory)" 111762306a36Sopenharmony_ci config VMSPLIT_2G 111862306a36Sopenharmony_ci bool "2G/2G user/kernel split" 111962306a36Sopenharmony_ci config VMSPLIT_1G 112062306a36Sopenharmony_ci bool "1G/3G user/kernel split" 112162306a36Sopenharmony_ciendchoice 112262306a36Sopenharmony_ci 112362306a36Sopenharmony_ciconfig PAGE_OFFSET 112462306a36Sopenharmony_ci hex 112562306a36Sopenharmony_ci default PHYS_OFFSET if !MMU 112662306a36Sopenharmony_ci default 0x40000000 if VMSPLIT_1G 112762306a36Sopenharmony_ci default 0x80000000 if VMSPLIT_2G 112862306a36Sopenharmony_ci default 0xB0000000 if VMSPLIT_3G_OPT 112962306a36Sopenharmony_ci default 0xC0000000 113062306a36Sopenharmony_ci 113162306a36Sopenharmony_ciconfig KASAN_SHADOW_OFFSET 113262306a36Sopenharmony_ci hex 113362306a36Sopenharmony_ci depends on KASAN 113462306a36Sopenharmony_ci default 0x1f000000 if PAGE_OFFSET=0x40000000 113562306a36Sopenharmony_ci default 0x5f000000 if PAGE_OFFSET=0x80000000 113662306a36Sopenharmony_ci default 0x9f000000 if PAGE_OFFSET=0xC0000000 113762306a36Sopenharmony_ci default 0x8f000000 if PAGE_OFFSET=0xB0000000 113862306a36Sopenharmony_ci default 0xffffffff 113962306a36Sopenharmony_ci 114062306a36Sopenharmony_ciconfig NR_CPUS 114162306a36Sopenharmony_ci int "Maximum number of CPUs (2-32)" 114262306a36Sopenharmony_ci range 2 16 if DEBUG_KMAP_LOCAL 114362306a36Sopenharmony_ci range 2 32 if !DEBUG_KMAP_LOCAL 114462306a36Sopenharmony_ci depends on SMP 114562306a36Sopenharmony_ci default "4" 114662306a36Sopenharmony_ci help 114762306a36Sopenharmony_ci The maximum number of CPUs that the kernel can support. 114862306a36Sopenharmony_ci Up to 32 CPUs can be supported, or up to 16 if kmap_local() 114962306a36Sopenharmony_ci debugging is enabled, which uses half of the per-CPU fixmap 115062306a36Sopenharmony_ci slots as guard regions. 115162306a36Sopenharmony_ci 115262306a36Sopenharmony_ciconfig HOTPLUG_CPU 115362306a36Sopenharmony_ci bool "Support for hot-pluggable CPUs" 115462306a36Sopenharmony_ci depends on SMP 115562306a36Sopenharmony_ci select GENERIC_IRQ_MIGRATION 115662306a36Sopenharmony_ci help 115762306a36Sopenharmony_ci Say Y here to experiment with turning CPUs off and on. CPUs 115862306a36Sopenharmony_ci can be controlled through /sys/devices/system/cpu. 115962306a36Sopenharmony_ci 116062306a36Sopenharmony_ciconfig ARM_PSCI 116162306a36Sopenharmony_ci bool "Support for the ARM Power State Coordination Interface (PSCI)" 116262306a36Sopenharmony_ci depends on HAVE_ARM_SMCCC 116362306a36Sopenharmony_ci select ARM_PSCI_FW 116462306a36Sopenharmony_ci help 116562306a36Sopenharmony_ci Say Y here if you want Linux to communicate with system firmware 116662306a36Sopenharmony_ci implementing the PSCI specification for CPU-centric power 116762306a36Sopenharmony_ci management operations described in ARM document number ARM DEN 116862306a36Sopenharmony_ci 0022A ("Power State Coordination Interface System Software on 116962306a36Sopenharmony_ci ARM processors"). 117062306a36Sopenharmony_ci 117162306a36Sopenharmony_ciconfig HZ_FIXED 117262306a36Sopenharmony_ci int 117362306a36Sopenharmony_ci default 128 if SOC_AT91RM9200 117462306a36Sopenharmony_ci default 0 117562306a36Sopenharmony_ci 117662306a36Sopenharmony_cichoice 117762306a36Sopenharmony_ci depends on HZ_FIXED = 0 117862306a36Sopenharmony_ci prompt "Timer frequency" 117962306a36Sopenharmony_ci 118062306a36Sopenharmony_ciconfig HZ_100 118162306a36Sopenharmony_ci bool "100 Hz" 118262306a36Sopenharmony_ci 118362306a36Sopenharmony_ciconfig HZ_200 118462306a36Sopenharmony_ci bool "200 Hz" 118562306a36Sopenharmony_ci 118662306a36Sopenharmony_ciconfig HZ_250 118762306a36Sopenharmony_ci bool "250 Hz" 118862306a36Sopenharmony_ci 118962306a36Sopenharmony_ciconfig HZ_300 119062306a36Sopenharmony_ci bool "300 Hz" 119162306a36Sopenharmony_ci 119262306a36Sopenharmony_ciconfig HZ_500 119362306a36Sopenharmony_ci bool "500 Hz" 119462306a36Sopenharmony_ci 119562306a36Sopenharmony_ciconfig HZ_1000 119662306a36Sopenharmony_ci bool "1000 Hz" 119762306a36Sopenharmony_ci 119862306a36Sopenharmony_ciendchoice 119962306a36Sopenharmony_ci 120062306a36Sopenharmony_ciconfig HZ 120162306a36Sopenharmony_ci int 120262306a36Sopenharmony_ci default HZ_FIXED if HZ_FIXED != 0 120362306a36Sopenharmony_ci default 100 if HZ_100 120462306a36Sopenharmony_ci default 200 if HZ_200 120562306a36Sopenharmony_ci default 250 if HZ_250 120662306a36Sopenharmony_ci default 300 if HZ_300 120762306a36Sopenharmony_ci default 500 if HZ_500 120862306a36Sopenharmony_ci default 1000 120962306a36Sopenharmony_ci 121062306a36Sopenharmony_ciconfig SCHED_HRTICK 121162306a36Sopenharmony_ci def_bool HIGH_RES_TIMERS 121262306a36Sopenharmony_ci 121362306a36Sopenharmony_ciconfig THUMB2_KERNEL 121462306a36Sopenharmony_ci bool "Compile the kernel in Thumb-2 mode" if !CPU_THUMBONLY 121562306a36Sopenharmony_ci depends on (CPU_V7 || CPU_V7M) && !CPU_V6 && !CPU_V6K 121662306a36Sopenharmony_ci default y if CPU_THUMBONLY 121762306a36Sopenharmony_ci select ARM_UNWIND 121862306a36Sopenharmony_ci help 121962306a36Sopenharmony_ci By enabling this option, the kernel will be compiled in 122062306a36Sopenharmony_ci Thumb-2 mode. 122162306a36Sopenharmony_ci 122262306a36Sopenharmony_ci If unsure, say N. 122362306a36Sopenharmony_ci 122462306a36Sopenharmony_ciconfig ARM_PATCH_IDIV 122562306a36Sopenharmony_ci bool "Runtime patch udiv/sdiv instructions into __aeabi_{u}idiv()" 122662306a36Sopenharmony_ci depends on CPU_32v7 122762306a36Sopenharmony_ci default y 122862306a36Sopenharmony_ci help 122962306a36Sopenharmony_ci The ARM compiler inserts calls to __aeabi_idiv() and 123062306a36Sopenharmony_ci __aeabi_uidiv() when it needs to perform division on signed 123162306a36Sopenharmony_ci and unsigned integers. Some v7 CPUs have support for the sdiv 123262306a36Sopenharmony_ci and udiv instructions that can be used to implement those 123362306a36Sopenharmony_ci functions. 123462306a36Sopenharmony_ci 123562306a36Sopenharmony_ci Enabling this option allows the kernel to modify itself to 123662306a36Sopenharmony_ci replace the first two instructions of these library functions 123762306a36Sopenharmony_ci with the sdiv or udiv plus "bx lr" instructions when the CPU 123862306a36Sopenharmony_ci it is running on supports them. Typically this will be faster 123962306a36Sopenharmony_ci and less power intensive than running the original library 124062306a36Sopenharmony_ci code to do integer division. 124162306a36Sopenharmony_ci 124262306a36Sopenharmony_ciconfig AEABI 124362306a36Sopenharmony_ci bool "Use the ARM EABI to compile the kernel" if !CPU_V7 && \ 124462306a36Sopenharmony_ci !CPU_V7M && !CPU_V6 && !CPU_V6K && !CC_IS_CLANG 124562306a36Sopenharmony_ci default CPU_V7 || CPU_V7M || CPU_V6 || CPU_V6K || CC_IS_CLANG 124662306a36Sopenharmony_ci help 124762306a36Sopenharmony_ci This option allows for the kernel to be compiled using the latest 124862306a36Sopenharmony_ci ARM ABI (aka EABI). This is only useful if you are using a user 124962306a36Sopenharmony_ci space environment that is also compiled with EABI. 125062306a36Sopenharmony_ci 125162306a36Sopenharmony_ci Since there are major incompatibilities between the legacy ABI and 125262306a36Sopenharmony_ci EABI, especially with regard to structure member alignment, this 125362306a36Sopenharmony_ci option also changes the kernel syscall calling convention to 125462306a36Sopenharmony_ci disambiguate both ABIs and allow for backward compatibility support 125562306a36Sopenharmony_ci (selected with CONFIG_OABI_COMPAT). 125662306a36Sopenharmony_ci 125762306a36Sopenharmony_ci To use this you need GCC version 4.0.0 or later. 125862306a36Sopenharmony_ci 125962306a36Sopenharmony_ciconfig OABI_COMPAT 126062306a36Sopenharmony_ci bool "Allow old ABI binaries to run with this kernel (EXPERIMENTAL)" 126162306a36Sopenharmony_ci depends on AEABI && !THUMB2_KERNEL 126262306a36Sopenharmony_ci help 126362306a36Sopenharmony_ci This option preserves the old syscall interface along with the 126462306a36Sopenharmony_ci new (ARM EABI) one. It also provides a compatibility layer to 126562306a36Sopenharmony_ci intercept syscalls that have structure arguments which layout 126662306a36Sopenharmony_ci in memory differs between the legacy ABI and the new ARM EABI 126762306a36Sopenharmony_ci (only for non "thumb" binaries). This option adds a tiny 126862306a36Sopenharmony_ci overhead to all syscalls and produces a slightly larger kernel. 126962306a36Sopenharmony_ci 127062306a36Sopenharmony_ci The seccomp filter system will not be available when this is 127162306a36Sopenharmony_ci selected, since there is no way yet to sensibly distinguish 127262306a36Sopenharmony_ci between calling conventions during filtering. 127362306a36Sopenharmony_ci 127462306a36Sopenharmony_ci If you know you'll be using only pure EABI user space then you 127562306a36Sopenharmony_ci can say N here. If this option is not selected and you attempt 127662306a36Sopenharmony_ci to execute a legacy ABI binary then the result will be 127762306a36Sopenharmony_ci UNPREDICTABLE (in fact it can be predicted that it won't work 127862306a36Sopenharmony_ci at all). If in doubt say N. 127962306a36Sopenharmony_ci 128062306a36Sopenharmony_ciconfig ARCH_SELECT_MEMORY_MODEL 128162306a36Sopenharmony_ci def_bool y 128262306a36Sopenharmony_ci 128362306a36Sopenharmony_ciconfig ARCH_FLATMEM_ENABLE 128462306a36Sopenharmony_ci def_bool !(ARCH_RPC || ARCH_SA1100) 128562306a36Sopenharmony_ci 128662306a36Sopenharmony_ciconfig ARCH_SPARSEMEM_ENABLE 128762306a36Sopenharmony_ci def_bool !ARCH_FOOTBRIDGE 128862306a36Sopenharmony_ci select SPARSEMEM_STATIC if SPARSEMEM 128962306a36Sopenharmony_ci 129062306a36Sopenharmony_ciconfig HIGHMEM 129162306a36Sopenharmony_ci bool "High Memory Support" 129262306a36Sopenharmony_ci depends on MMU 129362306a36Sopenharmony_ci select KMAP_LOCAL 129462306a36Sopenharmony_ci select KMAP_LOCAL_NON_LINEAR_PTE_ARRAY 129562306a36Sopenharmony_ci help 129662306a36Sopenharmony_ci The address space of ARM processors is only 4 Gigabytes large 129762306a36Sopenharmony_ci and it has to accommodate user address space, kernel address 129862306a36Sopenharmony_ci space as well as some memory mapped IO. That means that, if you 129962306a36Sopenharmony_ci have a large amount of physical memory and/or IO, not all of the 130062306a36Sopenharmony_ci memory can be "permanently mapped" by the kernel. The physical 130162306a36Sopenharmony_ci memory that is not permanently mapped is called "high memory". 130262306a36Sopenharmony_ci 130362306a36Sopenharmony_ci Depending on the selected kernel/user memory split, minimum 130462306a36Sopenharmony_ci vmalloc space and actual amount of RAM, you may not need this 130562306a36Sopenharmony_ci option which should result in a slightly faster kernel. 130662306a36Sopenharmony_ci 130762306a36Sopenharmony_ci If unsure, say n. 130862306a36Sopenharmony_ci 130962306a36Sopenharmony_ciconfig HIGHPTE 131062306a36Sopenharmony_ci bool "Allocate 2nd-level pagetables from highmem" if EXPERT 131162306a36Sopenharmony_ci depends on HIGHMEM 131262306a36Sopenharmony_ci default y 131362306a36Sopenharmony_ci help 131462306a36Sopenharmony_ci The VM uses one page of physical memory for each page table. 131562306a36Sopenharmony_ci For systems with a lot of processes, this can use a lot of 131662306a36Sopenharmony_ci precious low memory, eventually leading to low memory being 131762306a36Sopenharmony_ci consumed by page tables. Setting this option will allow 131862306a36Sopenharmony_ci user-space 2nd level page tables to reside in high memory. 131962306a36Sopenharmony_ci 132062306a36Sopenharmony_ciconfig CPU_SW_DOMAIN_PAN 132162306a36Sopenharmony_ci bool "Enable use of CPU domains to implement privileged no-access" 132262306a36Sopenharmony_ci depends on MMU && !ARM_LPAE 132362306a36Sopenharmony_ci default y 132462306a36Sopenharmony_ci help 132562306a36Sopenharmony_ci Increase kernel security by ensuring that normal kernel accesses 132662306a36Sopenharmony_ci are unable to access userspace addresses. This can help prevent 132762306a36Sopenharmony_ci use-after-free bugs becoming an exploitable privilege escalation 132862306a36Sopenharmony_ci by ensuring that magic values (such as LIST_POISON) will always 132962306a36Sopenharmony_ci fault when dereferenced. 133062306a36Sopenharmony_ci 133162306a36Sopenharmony_ci CPUs with low-vector mappings use a best-efforts implementation. 133262306a36Sopenharmony_ci Their lower 1MB needs to remain accessible for the vectors, but 133362306a36Sopenharmony_ci the remainder of userspace will become appropriately inaccessible. 133462306a36Sopenharmony_ci 133562306a36Sopenharmony_ciconfig HW_PERF_EVENTS 133662306a36Sopenharmony_ci def_bool y 133762306a36Sopenharmony_ci depends on ARM_PMU 133862306a36Sopenharmony_ci 133962306a36Sopenharmony_ciconfig ARM_MODULE_PLTS 134062306a36Sopenharmony_ci bool "Use PLTs to allow module memory to spill over into vmalloc area" 134162306a36Sopenharmony_ci depends on MODULES 134262306a36Sopenharmony_ci select KASAN_VMALLOC if KASAN 134362306a36Sopenharmony_ci default y 134462306a36Sopenharmony_ci help 134562306a36Sopenharmony_ci Allocate PLTs when loading modules so that jumps and calls whose 134662306a36Sopenharmony_ci targets are too far away for their relative offsets to be encoded 134762306a36Sopenharmony_ci in the instructions themselves can be bounced via veneers in the 134862306a36Sopenharmony_ci module's PLT. This allows modules to be allocated in the generic 134962306a36Sopenharmony_ci vmalloc area after the dedicated module memory area has been 135062306a36Sopenharmony_ci exhausted. The modules will use slightly more memory, but after 135162306a36Sopenharmony_ci rounding up to page size, the actual memory footprint is usually 135262306a36Sopenharmony_ci the same. 135362306a36Sopenharmony_ci 135462306a36Sopenharmony_ci Disabling this is usually safe for small single-platform 135562306a36Sopenharmony_ci configurations. If unsure, say y. 135662306a36Sopenharmony_ci 135762306a36Sopenharmony_ciconfig ARCH_FORCE_MAX_ORDER 135862306a36Sopenharmony_ci int "Order of maximal physically contiguous allocations" 135962306a36Sopenharmony_ci default "11" if SOC_AM33XX 136062306a36Sopenharmony_ci default "8" if SA1111 136162306a36Sopenharmony_ci default "10" 136262306a36Sopenharmony_ci help 136362306a36Sopenharmony_ci The kernel page allocator limits the size of maximal physically 136462306a36Sopenharmony_ci contiguous allocations. The limit is called MAX_ORDER and it 136562306a36Sopenharmony_ci defines the maximal power of two of number of pages that can be 136662306a36Sopenharmony_ci allocated as a single contiguous block. This option allows 136762306a36Sopenharmony_ci overriding the default setting when ability to allocate very 136862306a36Sopenharmony_ci large blocks of physically contiguous memory is required. 136962306a36Sopenharmony_ci 137062306a36Sopenharmony_ci Don't change if unsure. 137162306a36Sopenharmony_ci 137262306a36Sopenharmony_ciconfig ALIGNMENT_TRAP 137362306a36Sopenharmony_ci def_bool CPU_CP15_MMU 137462306a36Sopenharmony_ci select HAVE_PROC_CPU if PROC_FS 137562306a36Sopenharmony_ci help 137662306a36Sopenharmony_ci ARM processors cannot fetch/store information which is not 137762306a36Sopenharmony_ci naturally aligned on the bus, i.e., a 4 byte fetch must start at an 137862306a36Sopenharmony_ci address divisible by 4. On 32-bit ARM processors, these non-aligned 137962306a36Sopenharmony_ci fetch/store instructions will be emulated in software if you say 138062306a36Sopenharmony_ci here, which has a severe performance impact. This is necessary for 138162306a36Sopenharmony_ci correct operation of some network protocols. With an IP-only 138262306a36Sopenharmony_ci configuration it is safe to say N, otherwise say Y. 138362306a36Sopenharmony_ci 138462306a36Sopenharmony_ciconfig UACCESS_WITH_MEMCPY 138562306a36Sopenharmony_ci bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()" 138662306a36Sopenharmony_ci depends on MMU 138762306a36Sopenharmony_ci default y if CPU_FEROCEON 138862306a36Sopenharmony_ci help 138962306a36Sopenharmony_ci Implement faster copy_to_user and clear_user methods for CPU 139062306a36Sopenharmony_ci cores where a 8-word STM instruction give significantly higher 139162306a36Sopenharmony_ci memory write throughput than a sequence of individual 32bit stores. 139262306a36Sopenharmony_ci 139362306a36Sopenharmony_ci A possible side effect is a slight increase in scheduling latency 139462306a36Sopenharmony_ci between threads sharing the same address space if they invoke 139562306a36Sopenharmony_ci such copy operations with large buffers. 139662306a36Sopenharmony_ci 139762306a36Sopenharmony_ci However, if the CPU data cache is using a write-allocate mode, 139862306a36Sopenharmony_ci this option is unlikely to provide any performance gain. 139962306a36Sopenharmony_ci 140062306a36Sopenharmony_ciconfig PARAVIRT 140162306a36Sopenharmony_ci bool "Enable paravirtualization code" 140262306a36Sopenharmony_ci help 140362306a36Sopenharmony_ci This changes the kernel so it can modify itself when it is run 140462306a36Sopenharmony_ci under a hypervisor, potentially improving performance significantly 140562306a36Sopenharmony_ci over full virtualization. 140662306a36Sopenharmony_ci 140762306a36Sopenharmony_ciconfig PARAVIRT_TIME_ACCOUNTING 140862306a36Sopenharmony_ci bool "Paravirtual steal time accounting" 140962306a36Sopenharmony_ci select PARAVIRT 141062306a36Sopenharmony_ci help 141162306a36Sopenharmony_ci Select this option to enable fine granularity task steal time 141262306a36Sopenharmony_ci accounting. Time spent executing other tasks in parallel with 141362306a36Sopenharmony_ci the current vCPU is discounted from the vCPU power. To account for 141462306a36Sopenharmony_ci that, there can be a small performance impact. 141562306a36Sopenharmony_ci 141662306a36Sopenharmony_ci If in doubt, say N here. 141762306a36Sopenharmony_ci 141862306a36Sopenharmony_ciconfig XEN_DOM0 141962306a36Sopenharmony_ci def_bool y 142062306a36Sopenharmony_ci depends on XEN 142162306a36Sopenharmony_ci 142262306a36Sopenharmony_ciconfig XEN 142362306a36Sopenharmony_ci bool "Xen guest support on ARM" 142462306a36Sopenharmony_ci depends on ARM && AEABI && OF 142562306a36Sopenharmony_ci depends on CPU_V7 && !CPU_V6 142662306a36Sopenharmony_ci depends on !GENERIC_ATOMIC64 142762306a36Sopenharmony_ci depends on MMU 142862306a36Sopenharmony_ci select ARCH_DMA_ADDR_T_64BIT 142962306a36Sopenharmony_ci select ARM_PSCI 143062306a36Sopenharmony_ci select SWIOTLB 143162306a36Sopenharmony_ci select SWIOTLB_XEN 143262306a36Sopenharmony_ci select PARAVIRT 143362306a36Sopenharmony_ci help 143462306a36Sopenharmony_ci Say Y if you want to run Linux in a Virtual Machine on Xen on ARM. 143562306a36Sopenharmony_ci 143662306a36Sopenharmony_ciconfig CC_HAVE_STACKPROTECTOR_TLS 143762306a36Sopenharmony_ci def_bool $(cc-option,-mtp=cp15 -mstack-protector-guard=tls -mstack-protector-guard-offset=0) 143862306a36Sopenharmony_ci 143962306a36Sopenharmony_ciconfig STACKPROTECTOR_PER_TASK 144062306a36Sopenharmony_ci bool "Use a unique stack canary value for each task" 144162306a36Sopenharmony_ci depends on STACKPROTECTOR && CURRENT_POINTER_IN_TPIDRURO && !XIP_DEFLATED_DATA 144262306a36Sopenharmony_ci depends on GCC_PLUGINS || CC_HAVE_STACKPROTECTOR_TLS 144362306a36Sopenharmony_ci select GCC_PLUGIN_ARM_SSP_PER_TASK if !CC_HAVE_STACKPROTECTOR_TLS 144462306a36Sopenharmony_ci default y 144562306a36Sopenharmony_ci help 144662306a36Sopenharmony_ci Due to the fact that GCC uses an ordinary symbol reference from 144762306a36Sopenharmony_ci which to load the value of the stack canary, this value can only 144862306a36Sopenharmony_ci change at reboot time on SMP systems, and all tasks running in the 144962306a36Sopenharmony_ci kernel's address space are forced to use the same canary value for 145062306a36Sopenharmony_ci the entire duration that the system is up. 145162306a36Sopenharmony_ci 145262306a36Sopenharmony_ci Enable this option to switch to a different method that uses a 145362306a36Sopenharmony_ci different canary value for each task. 145462306a36Sopenharmony_ci 145562306a36Sopenharmony_ciendmenu 145662306a36Sopenharmony_ci 145762306a36Sopenharmony_cimenu "Boot options" 145862306a36Sopenharmony_ci 145962306a36Sopenharmony_ciconfig USE_OF 146062306a36Sopenharmony_ci bool "Flattened Device Tree support" 146162306a36Sopenharmony_ci select IRQ_DOMAIN 146262306a36Sopenharmony_ci select OF 146362306a36Sopenharmony_ci help 146462306a36Sopenharmony_ci Include support for flattened device tree machine descriptions. 146562306a36Sopenharmony_ci 146662306a36Sopenharmony_ciconfig ARCH_WANT_FLAT_DTB_INSTALL 146762306a36Sopenharmony_ci def_bool y 146862306a36Sopenharmony_ci 146962306a36Sopenharmony_ciconfig ATAGS 147062306a36Sopenharmony_ci bool "Support for the traditional ATAGS boot data passing" 147162306a36Sopenharmony_ci default y 147262306a36Sopenharmony_ci help 147362306a36Sopenharmony_ci This is the traditional way of passing data to the kernel at boot 147462306a36Sopenharmony_ci time. If you are solely relying on the flattened device tree (or 147562306a36Sopenharmony_ci the ARM_ATAG_DTB_COMPAT option) then you may unselect this option 147662306a36Sopenharmony_ci to remove ATAGS support from your kernel binary. 147762306a36Sopenharmony_ci 147862306a36Sopenharmony_ciconfig DEPRECATED_PARAM_STRUCT 147962306a36Sopenharmony_ci bool "Provide old way to pass kernel parameters" 148062306a36Sopenharmony_ci depends on ATAGS 148162306a36Sopenharmony_ci help 148262306a36Sopenharmony_ci This was deprecated in 2001 and announced to live on for 5 years. 148362306a36Sopenharmony_ci Some old boot loaders still use this way. 148462306a36Sopenharmony_ci 148562306a36Sopenharmony_ci# Compressed boot loader in ROM. Yes, we really want to ask about 148662306a36Sopenharmony_ci# TEXT and BSS so we preserve their values in the config files. 148762306a36Sopenharmony_ciconfig ZBOOT_ROM_TEXT 148862306a36Sopenharmony_ci hex "Compressed ROM boot loader base address" 148962306a36Sopenharmony_ci default 0x0 149062306a36Sopenharmony_ci help 149162306a36Sopenharmony_ci The physical address at which the ROM-able zImage is to be 149262306a36Sopenharmony_ci placed in the target. Platforms which normally make use of 149362306a36Sopenharmony_ci ROM-able zImage formats normally set this to a suitable 149462306a36Sopenharmony_ci value in their defconfig file. 149562306a36Sopenharmony_ci 149662306a36Sopenharmony_ci If ZBOOT_ROM is not enabled, this has no effect. 149762306a36Sopenharmony_ci 149862306a36Sopenharmony_ciconfig ZBOOT_ROM_BSS 149962306a36Sopenharmony_ci hex "Compressed ROM boot loader BSS address" 150062306a36Sopenharmony_ci default 0x0 150162306a36Sopenharmony_ci help 150262306a36Sopenharmony_ci The base address of an area of read/write memory in the target 150362306a36Sopenharmony_ci for the ROM-able zImage which must be available while the 150462306a36Sopenharmony_ci decompressor is running. It must be large enough to hold the 150562306a36Sopenharmony_ci entire decompressed kernel plus an additional 128 KiB. 150662306a36Sopenharmony_ci Platforms which normally make use of ROM-able zImage formats 150762306a36Sopenharmony_ci normally set this to a suitable value in their defconfig file. 150862306a36Sopenharmony_ci 150962306a36Sopenharmony_ci If ZBOOT_ROM is not enabled, this has no effect. 151062306a36Sopenharmony_ci 151162306a36Sopenharmony_ciconfig ZBOOT_ROM 151262306a36Sopenharmony_ci bool "Compressed boot loader in ROM/flash" 151362306a36Sopenharmony_ci depends on ZBOOT_ROM_TEXT != ZBOOT_ROM_BSS 151462306a36Sopenharmony_ci depends on !ARM_APPENDED_DTB && !XIP_KERNEL && !AUTO_ZRELADDR 151562306a36Sopenharmony_ci help 151662306a36Sopenharmony_ci Say Y here if you intend to execute your compressed kernel image 151762306a36Sopenharmony_ci (zImage) directly from ROM or flash. If unsure, say N. 151862306a36Sopenharmony_ci 151962306a36Sopenharmony_ciconfig ARM_APPENDED_DTB 152062306a36Sopenharmony_ci bool "Use appended device tree blob to zImage (EXPERIMENTAL)" 152162306a36Sopenharmony_ci depends on OF 152262306a36Sopenharmony_ci help 152362306a36Sopenharmony_ci With this option, the boot code will look for a device tree binary 152462306a36Sopenharmony_ci (DTB) appended to zImage 152562306a36Sopenharmony_ci (e.g. cat zImage <filename>.dtb > zImage_w_dtb). 152662306a36Sopenharmony_ci 152762306a36Sopenharmony_ci This is meant as a backward compatibility convenience for those 152862306a36Sopenharmony_ci systems with a bootloader that can't be upgraded to accommodate 152962306a36Sopenharmony_ci the documented boot protocol using a device tree. 153062306a36Sopenharmony_ci 153162306a36Sopenharmony_ci Beware that there is very little in terms of protection against 153262306a36Sopenharmony_ci this option being confused by leftover garbage in memory that might 153362306a36Sopenharmony_ci look like a DTB header after a reboot if no actual DTB is appended 153462306a36Sopenharmony_ci to zImage. Do not leave this option active in a production kernel 153562306a36Sopenharmony_ci if you don't intend to always append a DTB. Proper passing of the 153662306a36Sopenharmony_ci location into r2 of a bootloader provided DTB is always preferable 153762306a36Sopenharmony_ci to this option. 153862306a36Sopenharmony_ci 153962306a36Sopenharmony_ciconfig ARM_ATAG_DTB_COMPAT 154062306a36Sopenharmony_ci bool "Supplement the appended DTB with traditional ATAG information" 154162306a36Sopenharmony_ci depends on ARM_APPENDED_DTB 154262306a36Sopenharmony_ci help 154362306a36Sopenharmony_ci Some old bootloaders can't be updated to a DTB capable one, yet 154462306a36Sopenharmony_ci they provide ATAGs with memory configuration, the ramdisk address, 154562306a36Sopenharmony_ci the kernel cmdline string, etc. Such information is dynamically 154662306a36Sopenharmony_ci provided by the bootloader and can't always be stored in a static 154762306a36Sopenharmony_ci DTB. To allow a device tree enabled kernel to be used with such 154862306a36Sopenharmony_ci bootloaders, this option allows zImage to extract the information 154962306a36Sopenharmony_ci from the ATAG list and store it at run time into the appended DTB. 155062306a36Sopenharmony_ci 155162306a36Sopenharmony_cichoice 155262306a36Sopenharmony_ci prompt "Kernel command line type" if ARM_ATAG_DTB_COMPAT 155362306a36Sopenharmony_ci default ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER 155462306a36Sopenharmony_ci 155562306a36Sopenharmony_ciconfig ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER 155662306a36Sopenharmony_ci bool "Use bootloader kernel arguments if available" 155762306a36Sopenharmony_ci help 155862306a36Sopenharmony_ci Uses the command-line options passed by the boot loader instead of 155962306a36Sopenharmony_ci the device tree bootargs property. If the boot loader doesn't provide 156062306a36Sopenharmony_ci any, the device tree bootargs property will be used. 156162306a36Sopenharmony_ci 156262306a36Sopenharmony_ciconfig ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND 156362306a36Sopenharmony_ci bool "Extend with bootloader kernel arguments" 156462306a36Sopenharmony_ci help 156562306a36Sopenharmony_ci The command-line arguments provided by the boot loader will be 156662306a36Sopenharmony_ci appended to the the device tree bootargs property. 156762306a36Sopenharmony_ci 156862306a36Sopenharmony_ciendchoice 156962306a36Sopenharmony_ci 157062306a36Sopenharmony_ciconfig CMDLINE 157162306a36Sopenharmony_ci string "Default kernel command string" 157262306a36Sopenharmony_ci default "" 157362306a36Sopenharmony_ci help 157462306a36Sopenharmony_ci On some architectures (e.g. CATS), there is currently no way 157562306a36Sopenharmony_ci for the boot loader to pass arguments to the kernel. For these 157662306a36Sopenharmony_ci architectures, you should supply some command-line options at build 157762306a36Sopenharmony_ci time by entering them here. As a minimum, you should specify the 157862306a36Sopenharmony_ci memory size and the root device (e.g., mem=64M root=/dev/nfs). 157962306a36Sopenharmony_ci 158062306a36Sopenharmony_cichoice 158162306a36Sopenharmony_ci prompt "Kernel command line type" if CMDLINE != "" 158262306a36Sopenharmony_ci default CMDLINE_FROM_BOOTLOADER 158362306a36Sopenharmony_ci 158462306a36Sopenharmony_ciconfig CMDLINE_FROM_BOOTLOADER 158562306a36Sopenharmony_ci bool "Use bootloader kernel arguments if available" 158662306a36Sopenharmony_ci help 158762306a36Sopenharmony_ci Uses the command-line options passed by the boot loader. If 158862306a36Sopenharmony_ci the boot loader doesn't provide any, the default kernel command 158962306a36Sopenharmony_ci string provided in CMDLINE will be used. 159062306a36Sopenharmony_ci 159162306a36Sopenharmony_ciconfig CMDLINE_EXTEND 159262306a36Sopenharmony_ci bool "Extend bootloader kernel arguments" 159362306a36Sopenharmony_ci help 159462306a36Sopenharmony_ci The command-line arguments provided by the boot loader will be 159562306a36Sopenharmony_ci appended to the default kernel command string. 159662306a36Sopenharmony_ci 159762306a36Sopenharmony_ciconfig CMDLINE_FORCE 159862306a36Sopenharmony_ci bool "Always use the default kernel command string" 159962306a36Sopenharmony_ci help 160062306a36Sopenharmony_ci Always use the default kernel command string, even if the boot 160162306a36Sopenharmony_ci loader passes other arguments to the kernel. 160262306a36Sopenharmony_ci This is useful if you cannot or don't want to change the 160362306a36Sopenharmony_ci command-line options your boot loader passes to the kernel. 160462306a36Sopenharmony_ciendchoice 160562306a36Sopenharmony_ci 160662306a36Sopenharmony_ciconfig XIP_KERNEL 160762306a36Sopenharmony_ci bool "Kernel Execute-In-Place from ROM" 160862306a36Sopenharmony_ci depends on !ARM_LPAE && !ARCH_MULTIPLATFORM 160962306a36Sopenharmony_ci depends on !ARM_PATCH_IDIV && !ARM_PATCH_PHYS_VIRT && !SMP_ON_UP 161062306a36Sopenharmony_ci help 161162306a36Sopenharmony_ci Execute-In-Place allows the kernel to run from non-volatile storage 161262306a36Sopenharmony_ci directly addressable by the CPU, such as NOR flash. This saves RAM 161362306a36Sopenharmony_ci space since the text section of the kernel is not loaded from flash 161462306a36Sopenharmony_ci to RAM. Read-write sections, such as the data section and stack, 161562306a36Sopenharmony_ci are still copied to RAM. The XIP kernel is not compressed since 161662306a36Sopenharmony_ci it has to run directly from flash, so it will take more space to 161762306a36Sopenharmony_ci store it. The flash address used to link the kernel object files, 161862306a36Sopenharmony_ci and for storing it, is configuration dependent. Therefore, if you 161962306a36Sopenharmony_ci say Y here, you must know the proper physical address where to 162062306a36Sopenharmony_ci store the kernel image depending on your own flash memory usage. 162162306a36Sopenharmony_ci 162262306a36Sopenharmony_ci Also note that the make target becomes "make xipImage" rather than 162362306a36Sopenharmony_ci "make zImage" or "make Image". The final kernel binary to put in 162462306a36Sopenharmony_ci ROM memory will be arch/arm/boot/xipImage. 162562306a36Sopenharmony_ci 162662306a36Sopenharmony_ci If unsure, say N. 162762306a36Sopenharmony_ci 162862306a36Sopenharmony_ciconfig XIP_PHYS_ADDR 162962306a36Sopenharmony_ci hex "XIP Kernel Physical Location" 163062306a36Sopenharmony_ci depends on XIP_KERNEL 163162306a36Sopenharmony_ci default "0x00080000" 163262306a36Sopenharmony_ci help 163362306a36Sopenharmony_ci This is the physical address in your flash memory the kernel will 163462306a36Sopenharmony_ci be linked for and stored to. This address is dependent on your 163562306a36Sopenharmony_ci own flash usage. 163662306a36Sopenharmony_ci 163762306a36Sopenharmony_ciconfig XIP_DEFLATED_DATA 163862306a36Sopenharmony_ci bool "Store kernel .data section compressed in ROM" 163962306a36Sopenharmony_ci depends on XIP_KERNEL 164062306a36Sopenharmony_ci select ZLIB_INFLATE 164162306a36Sopenharmony_ci help 164262306a36Sopenharmony_ci Before the kernel is actually executed, its .data section has to be 164362306a36Sopenharmony_ci copied to RAM from ROM. This option allows for storing that data 164462306a36Sopenharmony_ci in compressed form and decompressed to RAM rather than merely being 164562306a36Sopenharmony_ci copied, saving some precious ROM space. A possible drawback is a 164662306a36Sopenharmony_ci slightly longer boot delay. 164762306a36Sopenharmony_ci 164862306a36Sopenharmony_ciconfig ARCH_SUPPORTS_KEXEC 164962306a36Sopenharmony_ci def_bool (!SMP || PM_SLEEP_SMP) && MMU 165062306a36Sopenharmony_ci 165162306a36Sopenharmony_ciconfig ATAGS_PROC 165262306a36Sopenharmony_ci bool "Export atags in procfs" 165362306a36Sopenharmony_ci depends on ATAGS && KEXEC 165462306a36Sopenharmony_ci default y 165562306a36Sopenharmony_ci help 165662306a36Sopenharmony_ci Should the atags used to boot the kernel be exported in an "atags" 165762306a36Sopenharmony_ci file in procfs. Useful with kexec. 165862306a36Sopenharmony_ci 165962306a36Sopenharmony_ciconfig ARCH_SUPPORTS_CRASH_DUMP 166062306a36Sopenharmony_ci def_bool y 166162306a36Sopenharmony_ci 166262306a36Sopenharmony_ciconfig AUTO_ZRELADDR 166362306a36Sopenharmony_ci bool "Auto calculation of the decompressed kernel image address" if !ARCH_MULTIPLATFORM 166462306a36Sopenharmony_ci default !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100) 166562306a36Sopenharmony_ci help 166662306a36Sopenharmony_ci ZRELADDR is the physical address where the decompressed kernel 166762306a36Sopenharmony_ci image will be placed. If AUTO_ZRELADDR is selected, the address 166862306a36Sopenharmony_ci will be determined at run-time, either by masking the current IP 166962306a36Sopenharmony_ci with 0xf8000000, or, if invalid, from the DTB passed in r2. 167062306a36Sopenharmony_ci This assumes the zImage being placed in the first 128MB from 167162306a36Sopenharmony_ci start of memory. 167262306a36Sopenharmony_ci 167362306a36Sopenharmony_ciconfig EFI_STUB 167462306a36Sopenharmony_ci bool 167562306a36Sopenharmony_ci 167662306a36Sopenharmony_ciconfig EFI 167762306a36Sopenharmony_ci bool "UEFI runtime support" 167862306a36Sopenharmony_ci depends on OF && !CPU_BIG_ENDIAN && MMU && AUTO_ZRELADDR && !XIP_KERNEL 167962306a36Sopenharmony_ci select UCS2_STRING 168062306a36Sopenharmony_ci select EFI_PARAMS_FROM_FDT 168162306a36Sopenharmony_ci select EFI_STUB 168262306a36Sopenharmony_ci select EFI_GENERIC_STUB 168362306a36Sopenharmony_ci select EFI_RUNTIME_WRAPPERS 168462306a36Sopenharmony_ci help 168562306a36Sopenharmony_ci This option provides support for runtime services provided 168662306a36Sopenharmony_ci by UEFI firmware (such as non-volatile variables, realtime 168762306a36Sopenharmony_ci clock, and platform reset). A UEFI stub is also provided to 168862306a36Sopenharmony_ci allow the kernel to be booted as an EFI application. This 168962306a36Sopenharmony_ci is only useful for kernels that may run on systems that have 169062306a36Sopenharmony_ci UEFI firmware. 169162306a36Sopenharmony_ci 169262306a36Sopenharmony_ciconfig DMI 169362306a36Sopenharmony_ci bool "Enable support for SMBIOS (DMI) tables" 169462306a36Sopenharmony_ci depends on EFI 169562306a36Sopenharmony_ci default y 169662306a36Sopenharmony_ci help 169762306a36Sopenharmony_ci This enables SMBIOS/DMI feature for systems. 169862306a36Sopenharmony_ci 169962306a36Sopenharmony_ci This option is only useful on systems that have UEFI firmware. 170062306a36Sopenharmony_ci However, even with this option, the resultant kernel should 170162306a36Sopenharmony_ci continue to boot on existing non-UEFI platforms. 170262306a36Sopenharmony_ci 170362306a36Sopenharmony_ci NOTE: This does *NOT* enable or encourage the use of DMI quirks, 170462306a36Sopenharmony_ci i.e., the the practice of identifying the platform via DMI to 170562306a36Sopenharmony_ci decide whether certain workarounds for buggy hardware and/or 170662306a36Sopenharmony_ci firmware need to be enabled. This would require the DMI subsystem 170762306a36Sopenharmony_ci to be enabled much earlier than we do on ARM, which is non-trivial. 170862306a36Sopenharmony_ci 170962306a36Sopenharmony_ciendmenu 171062306a36Sopenharmony_ci 171162306a36Sopenharmony_cimenu "CPU Power Management" 171262306a36Sopenharmony_ci 171362306a36Sopenharmony_cisource "drivers/cpufreq/Kconfig" 171462306a36Sopenharmony_ci 171562306a36Sopenharmony_cisource "drivers/cpuidle/Kconfig" 171662306a36Sopenharmony_ci 171762306a36Sopenharmony_ciendmenu 171862306a36Sopenharmony_ci 171962306a36Sopenharmony_cimenu "Floating point emulation" 172062306a36Sopenharmony_ci 172162306a36Sopenharmony_cicomment "At least one emulation must be selected" 172262306a36Sopenharmony_ci 172362306a36Sopenharmony_ciconfig FPE_NWFPE 172462306a36Sopenharmony_ci bool "NWFPE math emulation" 172562306a36Sopenharmony_ci depends on (!AEABI || OABI_COMPAT) && !THUMB2_KERNEL 172662306a36Sopenharmony_ci help 172762306a36Sopenharmony_ci Say Y to include the NWFPE floating point emulator in the kernel. 172862306a36Sopenharmony_ci This is necessary to run most binaries. Linux does not currently 172962306a36Sopenharmony_ci support floating point hardware so you need to say Y here even if 173062306a36Sopenharmony_ci your machine has an FPA or floating point co-processor podule. 173162306a36Sopenharmony_ci 173262306a36Sopenharmony_ci You may say N here if you are going to load the Acorn FPEmulator 173362306a36Sopenharmony_ci early in the bootup. 173462306a36Sopenharmony_ci 173562306a36Sopenharmony_ciconfig FPE_NWFPE_XP 173662306a36Sopenharmony_ci bool "Support extended precision" 173762306a36Sopenharmony_ci depends on FPE_NWFPE 173862306a36Sopenharmony_ci help 173962306a36Sopenharmony_ci Say Y to include 80-bit support in the kernel floating-point 174062306a36Sopenharmony_ci emulator. Otherwise, only 32 and 64-bit support is compiled in. 174162306a36Sopenharmony_ci Note that gcc does not generate 80-bit operations by default, 174262306a36Sopenharmony_ci so in most cases this option only enlarges the size of the 174362306a36Sopenharmony_ci floating point emulator without any good reason. 174462306a36Sopenharmony_ci 174562306a36Sopenharmony_ci You almost surely want to say N here. 174662306a36Sopenharmony_ci 174762306a36Sopenharmony_ciconfig FPE_FASTFPE 174862306a36Sopenharmony_ci bool "FastFPE math emulation (EXPERIMENTAL)" 174962306a36Sopenharmony_ci depends on (!AEABI || OABI_COMPAT) && !CPU_32v3 175062306a36Sopenharmony_ci help 175162306a36Sopenharmony_ci Say Y here to include the FAST floating point emulator in the kernel. 175262306a36Sopenharmony_ci This is an experimental much faster emulator which now also has full 175362306a36Sopenharmony_ci precision for the mantissa. It does not support any exceptions. 175462306a36Sopenharmony_ci It is very simple, and approximately 3-6 times faster than NWFPE. 175562306a36Sopenharmony_ci 175662306a36Sopenharmony_ci It should be sufficient for most programs. It may be not suitable 175762306a36Sopenharmony_ci for scientific calculations, but you have to check this for yourself. 175862306a36Sopenharmony_ci If you do not feel you need a faster FP emulation you should better 175962306a36Sopenharmony_ci choose NWFPE. 176062306a36Sopenharmony_ci 176162306a36Sopenharmony_ciconfig VFP 176262306a36Sopenharmony_ci bool "VFP-format floating point maths" 176362306a36Sopenharmony_ci depends on CPU_V6 || CPU_V6K || CPU_ARM926T || CPU_V7 || CPU_FEROCEON 176462306a36Sopenharmony_ci help 176562306a36Sopenharmony_ci Say Y to include VFP support code in the kernel. This is needed 176662306a36Sopenharmony_ci if your hardware includes a VFP unit. 176762306a36Sopenharmony_ci 176862306a36Sopenharmony_ci Please see <file:Documentation/arch/arm/vfp/release-notes.rst> for 176962306a36Sopenharmony_ci release notes and additional status information. 177062306a36Sopenharmony_ci 177162306a36Sopenharmony_ci Say N if your target does not have VFP hardware. 177262306a36Sopenharmony_ci 177362306a36Sopenharmony_ciconfig VFPv3 177462306a36Sopenharmony_ci bool 177562306a36Sopenharmony_ci depends on VFP 177662306a36Sopenharmony_ci default y if CPU_V7 177762306a36Sopenharmony_ci 177862306a36Sopenharmony_ciconfig NEON 177962306a36Sopenharmony_ci bool "Advanced SIMD (NEON) Extension support" 178062306a36Sopenharmony_ci depends on VFPv3 && CPU_V7 178162306a36Sopenharmony_ci help 178262306a36Sopenharmony_ci Say Y to include support code for NEON, the ARMv7 Advanced SIMD 178362306a36Sopenharmony_ci Extension. 178462306a36Sopenharmony_ci 178562306a36Sopenharmony_ciconfig KERNEL_MODE_NEON 178662306a36Sopenharmony_ci bool "Support for NEON in kernel mode" 178762306a36Sopenharmony_ci depends on NEON && AEABI 178862306a36Sopenharmony_ci help 178962306a36Sopenharmony_ci Say Y to include support for NEON in kernel mode. 179062306a36Sopenharmony_ci 179162306a36Sopenharmony_ciendmenu 179262306a36Sopenharmony_ci 179362306a36Sopenharmony_cimenu "Power management options" 179462306a36Sopenharmony_ci 179562306a36Sopenharmony_cisource "kernel/power/Kconfig" 179662306a36Sopenharmony_ci 179762306a36Sopenharmony_ciconfig ARCH_SUSPEND_POSSIBLE 179862306a36Sopenharmony_ci depends on CPU_ARM920T || CPU_ARM926T || CPU_FEROCEON || CPU_SA1100 || \ 179962306a36Sopenharmony_ci CPU_V6 || CPU_V6K || CPU_V7 || CPU_V7M || CPU_XSC3 || CPU_XSCALE || CPU_MOHAWK 180062306a36Sopenharmony_ci def_bool y 180162306a36Sopenharmony_ci 180262306a36Sopenharmony_ciconfig ARM_CPU_SUSPEND 180362306a36Sopenharmony_ci def_bool PM_SLEEP || BL_SWITCHER || ARM_PSCI_FW 180462306a36Sopenharmony_ci depends on ARCH_SUSPEND_POSSIBLE 180562306a36Sopenharmony_ci 180662306a36Sopenharmony_ciconfig ARCH_HIBERNATION_POSSIBLE 180762306a36Sopenharmony_ci bool 180862306a36Sopenharmony_ci depends on MMU 180962306a36Sopenharmony_ci default y if ARCH_SUSPEND_POSSIBLE 181062306a36Sopenharmony_ci 181162306a36Sopenharmony_ciendmenu 181262306a36Sopenharmony_ci 181362306a36Sopenharmony_cisource "arch/arm/Kconfig.assembler" 1814