18c2c3df3SCatalin Marinasconfig ARM64 28c2c3df3SCatalin Marinas def_bool y 3b6197b93SSuthikulpanit, Suravee select ACPI_CCA_REQUIRED if ACPI 4d8f4f161SLorenzo Pieralisi select ACPI_GENERIC_GSI if ACPI 55f1ae4ebSFu Wei select ACPI_GTDT if ACPI 6c6bb8f89SLorenzo Pieralisi select ACPI_IORT if ACPI 76933de0cSAl Stone select ACPI_REDUCED_HARDWARE_ONLY if ACPI 80cb0786bSTomasz Nowicki select ACPI_MCFG if ACPI 9888125a7SAleksey Makarov select ACPI_SPCR_TABLE if ACPI 101d8f51d4SScott Wood select ARCH_CLOCKSOURCE_DATA 11ec6d06efSLaura Abbott select ARCH_HAS_DEBUG_VIRTUAL 1221266be9SDan Williams select ARCH_HAS_DEVMEM_IS_ALLOWED 1338b04a74SJon Masters select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI 142b68f6caSKees Cook select ARCH_HAS_ELF_RANDOMIZE 156974f0c4SDaniel Micay select ARCH_HAS_FORTIFY_SOURCE 16957e3facSRiku Voipio select ARCH_HAS_GCOV_PROFILE_ALL 17e1073d1eSAneesh Kumar K.V select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA 185e4c7549SAlexander Potapenko select ARCH_HAS_KCOV 19d2852a22SDaniel Borkmann select ARCH_HAS_SET_MEMORY 20308c09f1SLaura Abbott select ARCH_HAS_SG_CHAIN 21ad21fc4fSLaura Abbott select ARCH_HAS_STRICT_KERNEL_RWX 22ad21fc4fSLaura Abbott select ARCH_HAS_STRICT_MODULE_RWX 231f85008eSLorenzo Pieralisi select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST 24396a5d4aSStephen Boyd select ARCH_HAVE_NMI_SAFE_CMPXCHG 25087133acSWill Deacon select ARCH_INLINE_READ_LOCK if !PREEMPT 26087133acSWill Deacon select ARCH_INLINE_READ_LOCK_BH if !PREEMPT 27087133acSWill Deacon select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPT 28087133acSWill Deacon select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPT 29087133acSWill Deacon select ARCH_INLINE_READ_UNLOCK if !PREEMPT 30087133acSWill Deacon select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPT 31087133acSWill Deacon select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPT 32087133acSWill Deacon select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPT 33087133acSWill Deacon select ARCH_INLINE_WRITE_LOCK if !PREEMPT 34087133acSWill Deacon select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPT 35087133acSWill Deacon select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPT 36087133acSWill Deacon select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPT 37087133acSWill Deacon select ARCH_INLINE_WRITE_UNLOCK if !PREEMPT 38087133acSWill Deacon select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPT 39087133acSWill Deacon select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPT 40087133acSWill Deacon select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPT 41c63c8700SSudeep Holla select ARCH_USE_CMPXCHG_LOCKREF 42087133acSWill Deacon select ARCH_USE_QUEUED_RWLOCKS 43c484f256SJonathan (Zhixiong) Zhang select ARCH_SUPPORTS_MEMORY_FAILURE 444badad35SPeter Zijlstra select ARCH_SUPPORTS_ATOMIC_RMW 4556166230SGanapatrao Kulkarni select ARCH_SUPPORTS_NUMA_BALANCING 466212a512SWill Deacon select ARCH_WANT_COMPAT_IPC_PARSE_VERSION 47b6f35981SCatalin Marinas select ARCH_WANT_FRAME_POINTERS 48f0b7f8a4SYang Shi select ARCH_HAS_UBSAN_SANITIZE_ALL 4925c92a37SCatalin Marinas select ARM_AMBA 501aee5d7aSMark Rutland select ARM_ARCH_TIMER 51c4188edcSCatalin Marinas select ARM_GIC 52875cbf3eSAKASHI Takahiro select AUDIT_ARCH_COMPAT_GENERIC 533ee80364SArnd Bergmann select ARM_GIC_V2M if PCI 54021f6537SMarc Zyngier select ARM_GIC_V3 553ee80364SArnd Bergmann select ARM_GIC_V3_ITS if PCI 56bff60792SMark Rutland select ARM_PSCI_FW 57adace895SWill Deacon select BUILDTIME_EXTABLE_SORT 58db2789b5SCatalin Marinas select CLONE_BACKWARDS 597ca2ef33SDeepak Saxena select COMMON_CLK 60166936baSLorenzo Pieralisi select CPU_PM if (SUSPEND || CPU_IDLE) 617bc13fd3SWill Deacon select DCACHE_WORD_ACCESS 62ef37566cSCatalin Marinas select EDAC_SUPPORT 632f34f173SYang Shi select FRAME_POINTER 64d4932f9eSLaura Abbott select GENERIC_ALLOCATOR 652ef7a295SJuri Lelli select GENERIC_ARCH_TOPOLOGY 668c2c3df3SCatalin Marinas select GENERIC_CLOCKEVENTS 674b3dc967SWill Deacon select GENERIC_CLOCKEVENTS_BROADCAST 683be1a5c4SArd Biesheuvel select GENERIC_CPU_AUTOPROBE 69bf4b558eSMark Salter select GENERIC_EARLY_IOREMAP 702314ee4dSLeo Yan select GENERIC_IDLE_POLL_SETUP 718c2c3df3SCatalin Marinas select GENERIC_IRQ_PROBE 728c2c3df3SCatalin Marinas select GENERIC_IRQ_SHOW 736544e67bSSudeep Holla select GENERIC_IRQ_SHOW_LEVEL 74cb61f676SArnd Bergmann select GENERIC_PCI_IOMAP 7565cd4f6cSStephen Boyd select GENERIC_SCHED_CLOCK 768c2c3df3SCatalin Marinas select GENERIC_SMP_IDLE_THREAD 7712a0ef7bSWill Deacon select GENERIC_STRNCPY_FROM_USER 7812a0ef7bSWill Deacon select GENERIC_STRNLEN_USER 798c2c3df3SCatalin Marinas select GENERIC_TIME_VSYSCALL 80a1ddc74aSMarc Zyngier select HANDLE_DOMAIN_IRQ 818c2c3df3SCatalin Marinas select HARDIRQS_SW_RESEND 829f9a35a7STomasz Nowicki select HAVE_ACPI_APEI if (ACPI && EFI) 835284e1b4SSteve Capper select HAVE_ALIGNED_STRUCT_PAGE if SLUB 84875cbf3eSAKASHI Takahiro select HAVE_ARCH_AUDITSYSCALL 858e7a4cefSYalin Wang select HAVE_ARCH_BITREVERSE 86324420bfSArd Biesheuvel select HAVE_ARCH_HUGE_VMAP 879732cafdSJiang Liu select HAVE_ARCH_JUMP_LABEL 88e17d8025SWill Deacon select HAVE_ARCH_KASAN if !(ARM64_16K_PAGES && ARM64_VA_BITS_48) 899529247dSVijaya Kumar K select HAVE_ARCH_KGDB 908f0d3aa9SDaniel Cashman select HAVE_ARCH_MMAP_RND_BITS 918f0d3aa9SDaniel Cashman select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT 92a1ae65b2SAKASHI Takahiro select HAVE_ARCH_SECCOMP_FILTER 938c2c3df3SCatalin Marinas select HAVE_ARCH_TRACEHOOK 948ee70879SYang Shi select HAVE_ARCH_TRANSPARENT_HUGEPAGE 95e3067861SMark Rutland select HAVE_ARCH_VMAP_STACK 968ee70879SYang Shi select HAVE_ARM_SMCCC 976077776bSDaniel Borkmann select HAVE_EBPF_JIT 98af64d2aaSAKASHI Takahiro select HAVE_C_RECORDMCOUNT 99c0c264aeSLaura Abbott select HAVE_CC_STACKPROTECTOR 1005284e1b4SSteve Capper select HAVE_CMPXCHG_DOUBLE 10195eff6b2SWill Deacon select HAVE_CMPXCHG_LOCAL 1028ee70879SYang Shi select HAVE_CONTEXT_TRACKING 1039b2a60c4SCatalin Marinas select HAVE_DEBUG_BUGVERBOSE 104b69ec42bSCatalin Marinas select HAVE_DEBUG_KMEMLEAK 1058c2c3df3SCatalin Marinas select HAVE_DMA_API_DEBUG 1066ac2104dSLaura Abbott select HAVE_DMA_CONTIGUOUS 107bd7d38dbSAKASHI Takahiro select HAVE_DYNAMIC_FTRACE 10850afc33aSWill Deacon select HAVE_EFFICIENT_UNALIGNED_ACCESS 109af64d2aaSAKASHI Takahiro select HAVE_FTRACE_MCOUNT_RECORD 110819e50e2SAKASHI Takahiro select HAVE_FUNCTION_TRACER 111819e50e2SAKASHI Takahiro select HAVE_FUNCTION_GRAPH_TRACER 1126b90bd4bSEmese Revfy select HAVE_GCC_PLUGINS 1138c2c3df3SCatalin Marinas select HAVE_GENERIC_DMA_COHERENT 1148c2c3df3SCatalin Marinas select HAVE_HW_BREAKPOINT if PERF_EVENTS 11524da208dSWill Deacon select HAVE_IRQ_TIME_ACCOUNTING 1168c2c3df3SCatalin Marinas select HAVE_MEMBLOCK 1171a2db300SGanapatrao Kulkarni select HAVE_MEMBLOCK_NODE_MAP if NUMA 118396a5d4aSStephen Boyd select HAVE_NMI 11955834a77SMark Rutland select HAVE_PATA_PLATFORM 1208c2c3df3SCatalin Marinas select HAVE_PERF_EVENTS 1212ee0d7fdSJean Pihet select HAVE_PERF_REGS 1222ee0d7fdSJean Pihet select HAVE_PERF_USER_STACK_DUMP 1230a8ea52cSDavid A. Long select HAVE_REGS_AND_STACK_ACCESS_API 1245e5f6dc1SSteve Capper select HAVE_RCU_TABLE_FREE 125055b1212SAKASHI Takahiro select HAVE_SYSCALL_TRACEPOINTS 1262dd0e8d2SSandeepa Prabhu select HAVE_KPROBES 127cd1ee3b1SMasami Hiramatsu select HAVE_KRETPROBES 128876945dbSRobin Murphy select IOMMU_DMA if IOMMU_SUPPORT 1298c2c3df3SCatalin Marinas select IRQ_DOMAIN 130e8557d1fSAnders Roxell select IRQ_FORCED_THREADING 131fea2acaaSCatalin Marinas select MODULES_USE_ELF_RELA 1328c2c3df3SCatalin Marinas select NO_BOOTMEM 1338c2c3df3SCatalin Marinas select OF 1348c2c3df3SCatalin Marinas select OF_EARLY_FLATTREE 1359bf14b7cSMarek Szyprowski select OF_RESERVED_MEM 1360cb0786bSTomasz Nowicki select PCI_ECAM if ACPI 137aa1e8ec1SCatalin Marinas select POWER_RESET 138aa1e8ec1SCatalin Marinas select POWER_SUPPLY 1394adcec11SKees Cook select REFCOUNT_FULL 1408c2c3df3SCatalin Marinas select SPARSE_IRQ 1417ac57a89SCatalin Marinas select SYSCTL_EXCEPTION_TRACE 142c02433ddSMark Rutland select THREAD_INFO_IN_TASK 1438c2c3df3SCatalin Marinas help 1448c2c3df3SCatalin Marinas ARM 64-bit (AArch64) Linux support. 1458c2c3df3SCatalin Marinas 1468c2c3df3SCatalin Marinasconfig 64BIT 1478c2c3df3SCatalin Marinas def_bool y 1488c2c3df3SCatalin Marinas 1498c2c3df3SCatalin Marinasconfig ARCH_PHYS_ADDR_T_64BIT 1508c2c3df3SCatalin Marinas def_bool y 1518c2c3df3SCatalin Marinas 1528c2c3df3SCatalin Marinasconfig MMU 1538c2c3df3SCatalin Marinas def_bool y 1548c2c3df3SCatalin Marinas 155030c4d24SMark Rutlandconfig ARM64_PAGE_SHIFT 156030c4d24SMark Rutland int 157030c4d24SMark Rutland default 16 if ARM64_64K_PAGES 158030c4d24SMark Rutland default 14 if ARM64_16K_PAGES 159030c4d24SMark Rutland default 12 160030c4d24SMark Rutland 161030c4d24SMark Rutlandconfig ARM64_CONT_SHIFT 162030c4d24SMark Rutland int 163030c4d24SMark Rutland default 5 if ARM64_64K_PAGES 164030c4d24SMark Rutland default 7 if ARM64_16K_PAGES 165030c4d24SMark Rutland default 4 166030c4d24SMark Rutland 1678f0d3aa9SDaniel Cashmanconfig ARCH_MMAP_RND_BITS_MIN 1688f0d3aa9SDaniel Cashman default 14 if ARM64_64K_PAGES 1698f0d3aa9SDaniel Cashman default 16 if ARM64_16K_PAGES 1708f0d3aa9SDaniel Cashman default 18 1718f0d3aa9SDaniel Cashman 1728f0d3aa9SDaniel Cashman# max bits determined by the following formula: 1738f0d3aa9SDaniel Cashman# VA_BITS - PAGE_SHIFT - 3 1748f0d3aa9SDaniel Cashmanconfig ARCH_MMAP_RND_BITS_MAX 1758f0d3aa9SDaniel Cashman default 19 if ARM64_VA_BITS=36 1768f0d3aa9SDaniel Cashman default 24 if ARM64_VA_BITS=39 1778f0d3aa9SDaniel Cashman default 27 if ARM64_VA_BITS=42 1788f0d3aa9SDaniel Cashman default 30 if ARM64_VA_BITS=47 1798f0d3aa9SDaniel Cashman default 29 if ARM64_VA_BITS=48 && ARM64_64K_PAGES 1808f0d3aa9SDaniel Cashman default 31 if ARM64_VA_BITS=48 && ARM64_16K_PAGES 1818f0d3aa9SDaniel Cashman default 33 if ARM64_VA_BITS=48 1828f0d3aa9SDaniel Cashman default 14 if ARM64_64K_PAGES 1838f0d3aa9SDaniel Cashman default 16 if ARM64_16K_PAGES 1848f0d3aa9SDaniel Cashman default 18 1858f0d3aa9SDaniel Cashman 1868f0d3aa9SDaniel Cashmanconfig ARCH_MMAP_RND_COMPAT_BITS_MIN 1878f0d3aa9SDaniel Cashman default 7 if ARM64_64K_PAGES 1888f0d3aa9SDaniel Cashman default 9 if ARM64_16K_PAGES 1898f0d3aa9SDaniel Cashman default 11 1908f0d3aa9SDaniel Cashman 1918f0d3aa9SDaniel Cashmanconfig ARCH_MMAP_RND_COMPAT_BITS_MAX 1928f0d3aa9SDaniel Cashman default 16 1938f0d3aa9SDaniel Cashman 194ce816fa8SUwe Kleine-Königconfig NO_IOPORT_MAP 195d1e6dc91SLiviu Dudau def_bool y if !PCI 1968c2c3df3SCatalin Marinas 1978c2c3df3SCatalin Marinasconfig STACKTRACE_SUPPORT 1988c2c3df3SCatalin Marinas def_bool y 1998c2c3df3SCatalin Marinas 200bf0c4e04SJeff Vander Stoepconfig ILLEGAL_POINTER_VALUE 201bf0c4e04SJeff Vander Stoep hex 202bf0c4e04SJeff Vander Stoep default 0xdead000000000000 203bf0c4e04SJeff Vander Stoep 2048c2c3df3SCatalin Marinasconfig LOCKDEP_SUPPORT 2058c2c3df3SCatalin Marinas def_bool y 2068c2c3df3SCatalin Marinas 2078c2c3df3SCatalin Marinasconfig TRACE_IRQFLAGS_SUPPORT 2088c2c3df3SCatalin Marinas def_bool y 2098c2c3df3SCatalin Marinas 210c209f799SWill Deaconconfig RWSEM_XCHGADD_ALGORITHM 2118c2c3df3SCatalin Marinas def_bool y 2128c2c3df3SCatalin Marinas 2139fb7410fSDave P Martinconfig GENERIC_BUG 2149fb7410fSDave P Martin def_bool y 2159fb7410fSDave P Martin depends on BUG 2169fb7410fSDave P Martin 2179fb7410fSDave P Martinconfig GENERIC_BUG_RELATIVE_POINTERS 2189fb7410fSDave P Martin def_bool y 2199fb7410fSDave P Martin depends on GENERIC_BUG 2209fb7410fSDave P Martin 2218c2c3df3SCatalin Marinasconfig GENERIC_HWEIGHT 2228c2c3df3SCatalin Marinas def_bool y 2238c2c3df3SCatalin Marinas 2248c2c3df3SCatalin Marinasconfig GENERIC_CSUM 2258c2c3df3SCatalin Marinas def_bool y 2268c2c3df3SCatalin Marinas 2278c2c3df3SCatalin Marinasconfig GENERIC_CALIBRATE_DELAY 2288c2c3df3SCatalin Marinas def_bool y 2298c2c3df3SCatalin Marinas 23019e7640dSCatalin Marinasconfig ZONE_DMA 2318c2c3df3SCatalin Marinas def_bool y 2328c2c3df3SCatalin Marinas 233e585513bSKirill A. Shutemovconfig HAVE_GENERIC_GUP 23429e56940SSteve Capper def_bool y 23529e56940SSteve Capper 2368c2c3df3SCatalin Marinasconfig ARCH_DMA_ADDR_T_64BIT 2378c2c3df3SCatalin Marinas def_bool y 2388c2c3df3SCatalin Marinas 2398c2c3df3SCatalin Marinasconfig NEED_DMA_MAP_STATE 2408c2c3df3SCatalin Marinas def_bool y 2418c2c3df3SCatalin Marinas 2428c2c3df3SCatalin Marinasconfig NEED_SG_DMA_LENGTH 2438c2c3df3SCatalin Marinas def_bool y 2448c2c3df3SCatalin Marinas 2454b3dc967SWill Deaconconfig SMP 2464b3dc967SWill Deacon def_bool y 2474b3dc967SWill Deacon 2488c2c3df3SCatalin Marinasconfig SWIOTLB 2498c2c3df3SCatalin Marinas def_bool y 2508c2c3df3SCatalin Marinas 2518c2c3df3SCatalin Marinasconfig IOMMU_HELPER 2528c2c3df3SCatalin Marinas def_bool SWIOTLB 2538c2c3df3SCatalin Marinas 2544cfb3613SArd Biesheuvelconfig KERNEL_MODE_NEON 2554cfb3613SArd Biesheuvel def_bool y 2564cfb3613SArd Biesheuvel 25792cc15fcSRob Herringconfig FIX_EARLYCON_MEM 25892cc15fcSRob Herring def_bool y 25992cc15fcSRob Herring 2609f25e6adSKirill A. Shutemovconfig PGTABLE_LEVELS 2619f25e6adSKirill A. Shutemov int 26221539939SSuzuki K. Poulose default 2 if ARM64_16K_PAGES && ARM64_VA_BITS_36 2639f25e6adSKirill A. Shutemov default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42 2649f25e6adSKirill A. Shutemov default 3 if ARM64_64K_PAGES && ARM64_VA_BITS_48 2659f25e6adSKirill A. Shutemov default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39 26644eaacf1SSuzuki K. Poulose default 3 if ARM64_16K_PAGES && ARM64_VA_BITS_47 26744eaacf1SSuzuki K. Poulose default 4 if !ARM64_64K_PAGES && ARM64_VA_BITS_48 2689f25e6adSKirill A. Shutemov 2699842ceaeSPratyush Anandconfig ARCH_SUPPORTS_UPROBES 2709842ceaeSPratyush Anand def_bool y 2719842ceaeSPratyush Anand 2728f360948SArd Biesheuvelconfig ARCH_PROC_KCORE_TEXT 2738f360948SArd Biesheuvel def_bool y 2748f360948SArd Biesheuvel 2758c2c3df3SCatalin Marinassource "init/Kconfig" 2768c2c3df3SCatalin Marinas 2778c2c3df3SCatalin Marinassource "kernel/Kconfig.freezer" 2788c2c3df3SCatalin Marinas 2796a377491SOlof Johanssonsource "arch/arm64/Kconfig.platforms" 2808c2c3df3SCatalin Marinas 2818c2c3df3SCatalin Marinasmenu "Bus support" 2828c2c3df3SCatalin Marinas 283d1e6dc91SLiviu Dudauconfig PCI 284d1e6dc91SLiviu Dudau bool "PCI support" 285d1e6dc91SLiviu Dudau help 286d1e6dc91SLiviu Dudau This feature enables support for PCI bus system. If you say Y 287d1e6dc91SLiviu Dudau here, the kernel will include drivers and infrastructure code 288d1e6dc91SLiviu Dudau to support PCI bus devices. 289d1e6dc91SLiviu Dudau 290d1e6dc91SLiviu Dudauconfig PCI_DOMAINS 291d1e6dc91SLiviu Dudau def_bool PCI 292d1e6dc91SLiviu Dudau 293d1e6dc91SLiviu Dudauconfig PCI_DOMAINS_GENERIC 294d1e6dc91SLiviu Dudau def_bool PCI 295d1e6dc91SLiviu Dudau 296d1e6dc91SLiviu Dudauconfig PCI_SYSCALL 297d1e6dc91SLiviu Dudau def_bool PCI 298d1e6dc91SLiviu Dudau 299d1e6dc91SLiviu Dudausource "drivers/pci/Kconfig" 300d1e6dc91SLiviu Dudau 3018c2c3df3SCatalin Marinasendmenu 3028c2c3df3SCatalin Marinas 3038c2c3df3SCatalin Marinasmenu "Kernel Features" 3048c2c3df3SCatalin Marinas 305c0a01b84SAndre Przywaramenu "ARM errata workarounds via the alternatives framework" 306c0a01b84SAndre Przywara 307c0a01b84SAndre Przywaraconfig ARM64_ERRATUM_826319 308c0a01b84SAndre Przywara bool "Cortex-A53: 826319: System might deadlock if a write cannot complete until read data is accepted" 309c0a01b84SAndre Przywara default y 310c0a01b84SAndre Przywara help 311c0a01b84SAndre Przywara This option adds an alternative code sequence to work around ARM 312c0a01b84SAndre Przywara erratum 826319 on Cortex-A53 parts up to r0p2 with an AMBA 4 ACE or 313c0a01b84SAndre Przywara AXI master interface and an L2 cache. 314c0a01b84SAndre Przywara 315c0a01b84SAndre Przywara If a Cortex-A53 uses an AMBA AXI4 ACE interface to other processors 316c0a01b84SAndre Przywara and is unable to accept a certain write via this interface, it will 317c0a01b84SAndre Przywara not progress on read data presented on the read data channel and the 318c0a01b84SAndre Przywara system can deadlock. 319c0a01b84SAndre Przywara 320c0a01b84SAndre Przywara The workaround promotes data cache clean instructions to 321c0a01b84SAndre Przywara data cache clean-and-invalidate. 322c0a01b84SAndre Przywara Please note that this does not necessarily enable the workaround, 323c0a01b84SAndre Przywara as it depends on the alternative framework, which will only patch 324c0a01b84SAndre Przywara the kernel if an affected CPU is detected. 325c0a01b84SAndre Przywara 326c0a01b84SAndre Przywara If unsure, say Y. 327c0a01b84SAndre Przywara 328c0a01b84SAndre Przywaraconfig ARM64_ERRATUM_827319 329c0a01b84SAndre Przywara bool "Cortex-A53: 827319: Data cache clean instructions might cause overlapping transactions to the interconnect" 330c0a01b84SAndre Przywara default y 331c0a01b84SAndre Przywara help 332c0a01b84SAndre Przywara This option adds an alternative code sequence to work around ARM 333c0a01b84SAndre Przywara erratum 827319 on Cortex-A53 parts up to r0p2 with an AMBA 5 CHI 334c0a01b84SAndre Przywara master interface and an L2 cache. 335c0a01b84SAndre Przywara 336c0a01b84SAndre Przywara Under certain conditions this erratum can cause a clean line eviction 337c0a01b84SAndre Przywara to occur at the same time as another transaction to the same address 338c0a01b84SAndre Przywara on the AMBA 5 CHI interface, which can cause data corruption if the 339c0a01b84SAndre Przywara interconnect reorders the two transactions. 340c0a01b84SAndre Przywara 341c0a01b84SAndre Przywara The workaround promotes data cache clean instructions to 342c0a01b84SAndre Przywara data cache clean-and-invalidate. 343c0a01b84SAndre Przywara Please note that this does not necessarily enable the workaround, 344c0a01b84SAndre Przywara as it depends on the alternative framework, which will only patch 345c0a01b84SAndre Przywara the kernel if an affected CPU is detected. 346c0a01b84SAndre Przywara 347c0a01b84SAndre Przywara If unsure, say Y. 348c0a01b84SAndre Przywara 349c0a01b84SAndre Przywaraconfig ARM64_ERRATUM_824069 350c0a01b84SAndre Przywara bool "Cortex-A53: 824069: Cache line might not be marked as clean after a CleanShared snoop" 351c0a01b84SAndre Przywara default y 352c0a01b84SAndre Przywara help 353c0a01b84SAndre Przywara This option adds an alternative code sequence to work around ARM 354c0a01b84SAndre Przywara erratum 824069 on Cortex-A53 parts up to r0p2 when it is connected 355c0a01b84SAndre Przywara to a coherent interconnect. 356c0a01b84SAndre Przywara 357c0a01b84SAndre Przywara If a Cortex-A53 processor is executing a store or prefetch for 358c0a01b84SAndre Przywara write instruction at the same time as a processor in another 359c0a01b84SAndre Przywara cluster is executing a cache maintenance operation to the same 360c0a01b84SAndre Przywara address, then this erratum might cause a clean cache line to be 361c0a01b84SAndre Przywara incorrectly marked as dirty. 362c0a01b84SAndre Przywara 363c0a01b84SAndre Przywara The workaround promotes data cache clean instructions to 364c0a01b84SAndre Przywara data cache clean-and-invalidate. 365c0a01b84SAndre Przywara Please note that this option does not necessarily enable the 366c0a01b84SAndre Przywara workaround, as it depends on the alternative framework, which will 367c0a01b84SAndre Przywara only patch the kernel if an affected CPU is detected. 368c0a01b84SAndre Przywara 369c0a01b84SAndre Przywara If unsure, say Y. 370c0a01b84SAndre Przywara 371c0a01b84SAndre Przywaraconfig ARM64_ERRATUM_819472 372c0a01b84SAndre Przywara bool "Cortex-A53: 819472: Store exclusive instructions might cause data corruption" 373c0a01b84SAndre Przywara default y 374c0a01b84SAndre Przywara help 375c0a01b84SAndre Przywara This option adds an alternative code sequence to work around ARM 376c0a01b84SAndre Przywara erratum 819472 on Cortex-A53 parts up to r0p1 with an L2 cache 377c0a01b84SAndre Przywara present when it is connected to a coherent interconnect. 378c0a01b84SAndre Przywara 379c0a01b84SAndre Przywara If the processor is executing a load and store exclusive sequence at 380c0a01b84SAndre Przywara the same time as a processor in another cluster is executing a cache 381c0a01b84SAndre Przywara maintenance operation to the same address, then this erratum might 382c0a01b84SAndre Przywara cause data corruption. 383c0a01b84SAndre Przywara 384c0a01b84SAndre Przywara The workaround promotes data cache clean instructions to 385c0a01b84SAndre Przywara data cache clean-and-invalidate. 386c0a01b84SAndre Przywara Please note that this does not necessarily enable the workaround, 387c0a01b84SAndre Przywara as it depends on the alternative framework, which will only patch 388c0a01b84SAndre Przywara the kernel if an affected CPU is detected. 389c0a01b84SAndre Przywara 390c0a01b84SAndre Przywara If unsure, say Y. 391c0a01b84SAndre Przywara 392c0a01b84SAndre Przywaraconfig ARM64_ERRATUM_832075 393c0a01b84SAndre Przywara bool "Cortex-A57: 832075: possible deadlock on mixing exclusive memory accesses with device loads" 394c0a01b84SAndre Przywara default y 395c0a01b84SAndre Przywara help 396c0a01b84SAndre Przywara This option adds an alternative code sequence to work around ARM 397c0a01b84SAndre Przywara erratum 832075 on Cortex-A57 parts up to r1p2. 398c0a01b84SAndre Przywara 399c0a01b84SAndre Przywara Affected Cortex-A57 parts might deadlock when exclusive load/store 400c0a01b84SAndre Przywara instructions to Write-Back memory are mixed with Device loads. 401c0a01b84SAndre Przywara 402c0a01b84SAndre Przywara The workaround is to promote device loads to use Load-Acquire 403c0a01b84SAndre Przywara semantics. 404c0a01b84SAndre Przywara Please note that this does not necessarily enable the workaround, 405c0a01b84SAndre Przywara as it depends on the alternative framework, which will only patch 406c0a01b84SAndre Przywara the kernel if an affected CPU is detected. 407c0a01b84SAndre Przywara 408c0a01b84SAndre Przywara If unsure, say Y. 409c0a01b84SAndre Przywara 410498cd5c3SMarc Zyngierconfig ARM64_ERRATUM_834220 411498cd5c3SMarc Zyngier bool "Cortex-A57: 834220: Stage 2 translation fault might be incorrectly reported in presence of a Stage 1 fault" 412498cd5c3SMarc Zyngier depends on KVM 413498cd5c3SMarc Zyngier default y 414498cd5c3SMarc Zyngier help 415498cd5c3SMarc Zyngier This option adds an alternative code sequence to work around ARM 416498cd5c3SMarc Zyngier erratum 834220 on Cortex-A57 parts up to r1p2. 417498cd5c3SMarc Zyngier 418498cd5c3SMarc Zyngier Affected Cortex-A57 parts might report a Stage 2 translation 419498cd5c3SMarc Zyngier fault as the result of a Stage 1 fault for load crossing a 420498cd5c3SMarc Zyngier page boundary when there is a permission or device memory 421498cd5c3SMarc Zyngier alignment fault at Stage 1 and a translation fault at Stage 2. 422498cd5c3SMarc Zyngier 423498cd5c3SMarc Zyngier The workaround is to verify that the Stage 1 translation 424498cd5c3SMarc Zyngier doesn't generate a fault before handling the Stage 2 fault. 425498cd5c3SMarc Zyngier Please note that this does not necessarily enable the workaround, 426498cd5c3SMarc Zyngier as it depends on the alternative framework, which will only patch 427498cd5c3SMarc Zyngier the kernel if an affected CPU is detected. 428498cd5c3SMarc Zyngier 429498cd5c3SMarc Zyngier If unsure, say Y. 430498cd5c3SMarc Zyngier 431905e8c5dSWill Deaconconfig ARM64_ERRATUM_845719 432905e8c5dSWill Deacon bool "Cortex-A53: 845719: a load might read incorrect data" 433905e8c5dSWill Deacon depends on COMPAT 434905e8c5dSWill Deacon default y 435905e8c5dSWill Deacon help 436905e8c5dSWill Deacon This option adds an alternative code sequence to work around ARM 437905e8c5dSWill Deacon erratum 845719 on Cortex-A53 parts up to r0p4. 438905e8c5dSWill Deacon 439905e8c5dSWill Deacon When running a compat (AArch32) userspace on an affected Cortex-A53 440905e8c5dSWill Deacon part, a load at EL0 from a virtual address that matches the bottom 32 441905e8c5dSWill Deacon bits of the virtual address used by a recent load at (AArch64) EL1 442905e8c5dSWill Deacon might return incorrect data. 443905e8c5dSWill Deacon 444905e8c5dSWill Deacon The workaround is to write the contextidr_el1 register on exception 445905e8c5dSWill Deacon return to a 32-bit task. 446905e8c5dSWill Deacon Please note that this does not necessarily enable the workaround, 447905e8c5dSWill Deacon as it depends on the alternative framework, which will only patch 448905e8c5dSWill Deacon the kernel if an affected CPU is detected. 449905e8c5dSWill Deacon 450905e8c5dSWill Deacon If unsure, say Y. 451905e8c5dSWill Deacon 452df057cc7SWill Deaconconfig ARM64_ERRATUM_843419 453df057cc7SWill Deacon bool "Cortex-A53: 843419: A load or store might access an incorrect address" 454df057cc7SWill Deacon default y 4556ffe9923SWill Deacon select ARM64_MODULE_CMODEL_LARGE if MODULES 456df057cc7SWill Deacon help 4576ffe9923SWill Deacon This option links the kernel with '--fix-cortex-a53-843419' and 4586ffe9923SWill Deacon builds modules using the large memory model in order to avoid the use 4596ffe9923SWill Deacon of the ADRP instruction, which can cause a subsequent memory access 4606ffe9923SWill Deacon to use an incorrect address on Cortex-A53 parts up to r0p4. 461df057cc7SWill Deacon 462df057cc7SWill Deacon If unsure, say Y. 463df057cc7SWill Deacon 46494100970SRobert Richterconfig CAVIUM_ERRATUM_22375 46594100970SRobert Richter bool "Cavium erratum 22375, 24313" 46694100970SRobert Richter default y 46794100970SRobert Richter help 46894100970SRobert Richter Enable workaround for erratum 22375, 24313. 46994100970SRobert Richter 47094100970SRobert Richter This implements two gicv3-its errata workarounds for ThunderX. Both 47194100970SRobert Richter with small impact affecting only ITS table allocation. 47294100970SRobert Richter 47394100970SRobert Richter erratum 22375: only alloc 8MB table size 47494100970SRobert Richter erratum 24313: ignore memory access type 47594100970SRobert Richter 47694100970SRobert Richter The fixes are in ITS initialization and basically ignore memory access 47794100970SRobert Richter type and table size provided by the TYPER and BASER registers. 47894100970SRobert Richter 47994100970SRobert Richter If unsure, say Y. 48094100970SRobert Richter 481fbf8f40eSGanapatrao Kulkarniconfig CAVIUM_ERRATUM_23144 482fbf8f40eSGanapatrao Kulkarni bool "Cavium erratum 23144: ITS SYNC hang on dual socket system" 483fbf8f40eSGanapatrao Kulkarni depends on NUMA 484fbf8f40eSGanapatrao Kulkarni default y 485fbf8f40eSGanapatrao Kulkarni help 486fbf8f40eSGanapatrao Kulkarni ITS SYNC command hang for cross node io and collections/cpu mapping. 487fbf8f40eSGanapatrao Kulkarni 488fbf8f40eSGanapatrao Kulkarni If unsure, say Y. 489fbf8f40eSGanapatrao Kulkarni 4906d4e11c5SRobert Richterconfig CAVIUM_ERRATUM_23154 4916d4e11c5SRobert Richter bool "Cavium erratum 23154: Access to ICC_IAR1_EL1 is not sync'ed" 4926d4e11c5SRobert Richter default y 4936d4e11c5SRobert Richter help 4946d4e11c5SRobert Richter The gicv3 of ThunderX requires a modified version for 4956d4e11c5SRobert Richter reading the IAR status to ensure data synchronization 4966d4e11c5SRobert Richter (access to icc_iar1_el1 is not sync'ed before and after). 4976d4e11c5SRobert Richter 4986d4e11c5SRobert Richter If unsure, say Y. 4996d4e11c5SRobert Richter 500104a0c02SAndrew Pinskiconfig CAVIUM_ERRATUM_27456 501104a0c02SAndrew Pinski bool "Cavium erratum 27456: Broadcast TLBI instructions may cause icache corruption" 502104a0c02SAndrew Pinski default y 503104a0c02SAndrew Pinski help 504104a0c02SAndrew Pinski On ThunderX T88 pass 1.x through 2.1 parts, broadcast TLBI 505104a0c02SAndrew Pinski instructions may cause the icache to become corrupted if it 506104a0c02SAndrew Pinski contains data for a non-current ASID. The fix is to 507104a0c02SAndrew Pinski invalidate the icache when changing the mm context. 508104a0c02SAndrew Pinski 509104a0c02SAndrew Pinski If unsure, say Y. 510104a0c02SAndrew Pinski 511690a3415SDavid Daneyconfig CAVIUM_ERRATUM_30115 512690a3415SDavid Daney bool "Cavium erratum 30115: Guest may disable interrupts in host" 513690a3415SDavid Daney default y 514690a3415SDavid Daney help 515690a3415SDavid Daney On ThunderX T88 pass 1.x through 2.2, T81 pass 1.0 through 516690a3415SDavid Daney 1.2, and T83 Pass 1.0, KVM guest execution may disable 517690a3415SDavid Daney interrupts in host. Trapping both GICv3 group-0 and group-1 518690a3415SDavid Daney accesses sidesteps the issue. 519690a3415SDavid Daney 520690a3415SDavid Daney If unsure, say Y. 521690a3415SDavid Daney 52238fd94b0SChristopher Covingtonconfig QCOM_FALKOR_ERRATUM_1003 52338fd94b0SChristopher Covington bool "Falkor E1003: Incorrect translation due to ASID change" 52438fd94b0SChristopher Covington default y 52538fd94b0SChristopher Covington help 52638fd94b0SChristopher Covington On Falkor v1, an incorrect ASID may be cached in the TLB when ASID 527d1777e68SWill Deacon and BADDR are changed together in TTBRx_EL1. Since we keep the ASID 528d1777e68SWill Deacon in TTBR1_EL1, this situation only occurs in the entry trampoline and 529d1777e68SWill Deacon then only for entries in the walk cache, since the leaf translation 530d1777e68SWill Deacon is unchanged. Work around the erratum by invalidating the walk cache 531d1777e68SWill Deacon entries for the trampoline before entering the kernel proper. 53238fd94b0SChristopher Covington 533d9ff80f8SChristopher Covingtonconfig QCOM_FALKOR_ERRATUM_1009 534d9ff80f8SChristopher Covington bool "Falkor E1009: Prematurely complete a DSB after a TLBI" 535d9ff80f8SChristopher Covington default y 536d9ff80f8SChristopher Covington help 537d9ff80f8SChristopher Covington On Falkor v1, the CPU may prematurely complete a DSB following a 538d9ff80f8SChristopher Covington TLBI xxIS invalidate maintenance operation. Repeat the TLBI operation 539d9ff80f8SChristopher Covington one more time to fix the issue. 540d9ff80f8SChristopher Covington 541d9ff80f8SChristopher Covington If unsure, say Y. 542d9ff80f8SChristopher Covington 54390922a2dSShanker Donthineniconfig QCOM_QDF2400_ERRATUM_0065 54490922a2dSShanker Donthineni bool "QDF2400 E0065: Incorrect GITS_TYPER.ITT_Entry_size" 54590922a2dSShanker Donthineni default y 54690922a2dSShanker Donthineni help 54790922a2dSShanker Donthineni On Qualcomm Datacenter Technologies QDF2400 SoC, ITS hardware reports 54890922a2dSShanker Donthineni ITE size incorrectly. The GITS_TYPER.ITT_Entry_size field should have 54990922a2dSShanker Donthineni been indicated as 16Bytes (0xf), not 8Bytes (0x7). 55090922a2dSShanker Donthineni 55190922a2dSShanker Donthineni If unsure, say Y. 55290922a2dSShanker Donthineni 5535c9a882eSMarc Zyngier 554558b0165SArd Biesheuvelconfig SOCIONEXT_SYNQUACER_PREITS 555558b0165SArd Biesheuvel bool "Socionext Synquacer: Workaround for GICv3 pre-ITS" 556558b0165SArd Biesheuvel default y 557558b0165SArd Biesheuvel help 558558b0165SArd Biesheuvel Socionext Synquacer SoCs implement a separate h/w block to generate 559558b0165SArd Biesheuvel MSI doorbell writes with non-zero values for the device ID. 560558b0165SArd Biesheuvel 561558b0165SArd Biesheuvel If unsure, say Y. 5625c9a882eSMarc Zyngier 5635c9a882eSMarc Zyngierconfig HISILICON_ERRATUM_161600802 5645c9a882eSMarc Zyngier bool "Hip07 161600802: Erroneous redistributor VLPI base" 5655c9a882eSMarc Zyngier default y 5665c9a882eSMarc Zyngier help 5675c9a882eSMarc Zyngier The HiSilicon Hip07 SoC usees the wrong redistributor base 5685c9a882eSMarc Zyngier when issued ITS commands such as VMOVP and VMAPP, and requires 5695c9a882eSMarc Zyngier a 128kB offset to be applied to the target address in this commands. 5705c9a882eSMarc Zyngier 5715c9a882eSMarc Zyngier If unsure, say Y. 572c0a01b84SAndre Przywaraendmenu 573c0a01b84SAndre Przywara 574c0a01b84SAndre Przywara 575e41ceed0SJungseok Leechoice 576e41ceed0SJungseok Lee prompt "Page size" 577e41ceed0SJungseok Lee default ARM64_4K_PAGES 578e41ceed0SJungseok Lee help 579e41ceed0SJungseok Lee Page size (translation granule) configuration. 580e41ceed0SJungseok Lee 581e41ceed0SJungseok Leeconfig ARM64_4K_PAGES 582e41ceed0SJungseok Lee bool "4KB" 583e41ceed0SJungseok Lee help 584e41ceed0SJungseok Lee This feature enables 4KB pages support. 585e41ceed0SJungseok Lee 58644eaacf1SSuzuki K. Pouloseconfig ARM64_16K_PAGES 58744eaacf1SSuzuki K. Poulose bool "16KB" 58844eaacf1SSuzuki K. Poulose help 58944eaacf1SSuzuki K. Poulose The system will use 16KB pages support. AArch32 emulation 59044eaacf1SSuzuki K. Poulose requires applications compiled with 16K (or a multiple of 16K) 59144eaacf1SSuzuki K. Poulose aligned segments. 59244eaacf1SSuzuki K. Poulose 5938c2c3df3SCatalin Marinasconfig ARM64_64K_PAGES 594e41ceed0SJungseok Lee bool "64KB" 5958c2c3df3SCatalin Marinas help 5968c2c3df3SCatalin Marinas This feature enables 64KB pages support (4KB by default) 5978c2c3df3SCatalin Marinas allowing only two levels of page tables and faster TLB 598db488be3SSuzuki K. Poulose look-up. AArch32 emulation requires applications compiled 599db488be3SSuzuki K. Poulose with 64K aligned segments. 6008c2c3df3SCatalin Marinas 601e41ceed0SJungseok Leeendchoice 602e41ceed0SJungseok Lee 603e41ceed0SJungseok Leechoice 604e41ceed0SJungseok Lee prompt "Virtual address space size" 605e41ceed0SJungseok Lee default ARM64_VA_BITS_39 if ARM64_4K_PAGES 60644eaacf1SSuzuki K. Poulose default ARM64_VA_BITS_47 if ARM64_16K_PAGES 607e41ceed0SJungseok Lee default ARM64_VA_BITS_42 if ARM64_64K_PAGES 608e41ceed0SJungseok Lee help 609e41ceed0SJungseok Lee Allows choosing one of multiple possible virtual address 610e41ceed0SJungseok Lee space sizes. The level of translation table is determined by 611e41ceed0SJungseok Lee a combination of page size and virtual address space size. 612e41ceed0SJungseok Lee 61321539939SSuzuki K. Pouloseconfig ARM64_VA_BITS_36 61456a3f30eSCatalin Marinas bool "36-bit" if EXPERT 61521539939SSuzuki K. Poulose depends on ARM64_16K_PAGES 61621539939SSuzuki K. Poulose 617e41ceed0SJungseok Leeconfig ARM64_VA_BITS_39 618e41ceed0SJungseok Lee bool "39-bit" 619e41ceed0SJungseok Lee depends on ARM64_4K_PAGES 620e41ceed0SJungseok Lee 621e41ceed0SJungseok Leeconfig ARM64_VA_BITS_42 622e41ceed0SJungseok Lee bool "42-bit" 623e41ceed0SJungseok Lee depends on ARM64_64K_PAGES 624e41ceed0SJungseok Lee 62544eaacf1SSuzuki K. Pouloseconfig ARM64_VA_BITS_47 62644eaacf1SSuzuki K. Poulose bool "47-bit" 62744eaacf1SSuzuki K. Poulose depends on ARM64_16K_PAGES 62844eaacf1SSuzuki K. Poulose 629c79b954bSJungseok Leeconfig ARM64_VA_BITS_48 630c79b954bSJungseok Lee bool "48-bit" 631c79b954bSJungseok Lee 632e41ceed0SJungseok Leeendchoice 633e41ceed0SJungseok Lee 634e41ceed0SJungseok Leeconfig ARM64_VA_BITS 635e41ceed0SJungseok Lee int 63621539939SSuzuki K. Poulose default 36 if ARM64_VA_BITS_36 637e41ceed0SJungseok Lee default 39 if ARM64_VA_BITS_39 638e41ceed0SJungseok Lee default 42 if ARM64_VA_BITS_42 63944eaacf1SSuzuki K. Poulose default 47 if ARM64_VA_BITS_47 640c79b954bSJungseok Lee default 48 if ARM64_VA_BITS_48 641e41ceed0SJungseok Lee 642982aa7c5SKristina Martsenkochoice 643982aa7c5SKristina Martsenko prompt "Physical address space size" 644982aa7c5SKristina Martsenko default ARM64_PA_BITS_48 645982aa7c5SKristina Martsenko help 646982aa7c5SKristina Martsenko Choose the maximum physical address range that the kernel will 647982aa7c5SKristina Martsenko support. 648982aa7c5SKristina Martsenko 649982aa7c5SKristina Martsenkoconfig ARM64_PA_BITS_48 650982aa7c5SKristina Martsenko bool "48-bit" 651982aa7c5SKristina Martsenko 652f77d2817SKristina Martsenkoconfig ARM64_PA_BITS_52 653f77d2817SKristina Martsenko bool "52-bit (ARMv8.2)" 654f77d2817SKristina Martsenko depends on ARM64_64K_PAGES 655f77d2817SKristina Martsenko depends on ARM64_PAN || !ARM64_SW_TTBR0_PAN 656f77d2817SKristina Martsenko help 657f77d2817SKristina Martsenko Enable support for a 52-bit physical address space, introduced as 658f77d2817SKristina Martsenko part of the ARMv8.2-LPA extension. 659f77d2817SKristina Martsenko 660f77d2817SKristina Martsenko With this enabled, the kernel will also continue to work on CPUs that 661f77d2817SKristina Martsenko do not support ARMv8.2-LPA, but with some added memory overhead (and 662f77d2817SKristina Martsenko minor performance overhead). 663f77d2817SKristina Martsenko 664982aa7c5SKristina Martsenkoendchoice 665982aa7c5SKristina Martsenko 666982aa7c5SKristina Martsenkoconfig ARM64_PA_BITS 667982aa7c5SKristina Martsenko int 668982aa7c5SKristina Martsenko default 48 if ARM64_PA_BITS_48 669f77d2817SKristina Martsenko default 52 if ARM64_PA_BITS_52 670982aa7c5SKristina Martsenko 671a872013dSWill Deaconconfig CPU_BIG_ENDIAN 672a872013dSWill Deacon bool "Build big-endian kernel" 673a872013dSWill Deacon help 674a872013dSWill Deacon Say Y if you plan on running a kernel in big-endian mode. 675a872013dSWill Deacon 676f6e763b9SMark Brownconfig SCHED_MC 677f6e763b9SMark Brown bool "Multi-core scheduler support" 678f6e763b9SMark Brown help 679f6e763b9SMark Brown Multi-core scheduler support improves the CPU scheduler's decision 680f6e763b9SMark Brown making when dealing with multi-core CPU chips at a cost of slightly 681f6e763b9SMark Brown increased overhead in some places. If unsure say N here. 682f6e763b9SMark Brown 683f6e763b9SMark Brownconfig SCHED_SMT 684f6e763b9SMark Brown bool "SMT scheduler support" 685f6e763b9SMark Brown help 686f6e763b9SMark Brown Improves the CPU scheduler's decision making when dealing with 687f6e763b9SMark Brown MultiThreading at a cost of slightly increased overhead in some 688f6e763b9SMark Brown places. If unsure say N here. 689f6e763b9SMark Brown 6908c2c3df3SCatalin Marinasconfig NR_CPUS 69162aa9655SGanapatrao Kulkarni int "Maximum number of CPUs (2-4096)" 69262aa9655SGanapatrao Kulkarni range 2 4096 69315942853SVinayak Kale # These have to remain sorted largest to smallest 694e3672649SRobert Richter default "64" 6958c2c3df3SCatalin Marinas 6969327e2c6SMark Rutlandconfig HOTPLUG_CPU 6979327e2c6SMark Rutland bool "Support for hot-pluggable CPUs" 698217d453dSYang Yingliang select GENERIC_IRQ_MIGRATION 6999327e2c6SMark Rutland help 7009327e2c6SMark Rutland Say Y here to experiment with turning CPUs off and on. CPUs 7019327e2c6SMark Rutland can be controlled through /sys/devices/system/cpu. 7029327e2c6SMark Rutland 7031a2db300SGanapatrao Kulkarni# Common NUMA Features 7041a2db300SGanapatrao Kulkarniconfig NUMA 7051a2db300SGanapatrao Kulkarni bool "Numa Memory Allocation and Scheduler Support" 7060c2a6cceSKefeng Wang select ACPI_NUMA if ACPI 7070c2a6cceSKefeng Wang select OF_NUMA 7081a2db300SGanapatrao Kulkarni help 7091a2db300SGanapatrao Kulkarni Enable NUMA (Non Uniform Memory Access) support. 7101a2db300SGanapatrao Kulkarni 7111a2db300SGanapatrao Kulkarni The kernel will try to allocate memory used by a CPU on the 7121a2db300SGanapatrao Kulkarni local memory of the CPU and add some more 7131a2db300SGanapatrao Kulkarni NUMA awareness to the kernel. 7141a2db300SGanapatrao Kulkarni 7151a2db300SGanapatrao Kulkarniconfig NODES_SHIFT 7161a2db300SGanapatrao Kulkarni int "Maximum NUMA Nodes (as a power of 2)" 7171a2db300SGanapatrao Kulkarni range 1 10 7181a2db300SGanapatrao Kulkarni default "2" 7191a2db300SGanapatrao Kulkarni depends on NEED_MULTIPLE_NODES 7201a2db300SGanapatrao Kulkarni help 7211a2db300SGanapatrao Kulkarni Specify the maximum number of NUMA Nodes available on the target 7221a2db300SGanapatrao Kulkarni system. Increases memory reserved to accommodate various tables. 7231a2db300SGanapatrao Kulkarni 7241a2db300SGanapatrao Kulkarniconfig USE_PERCPU_NUMA_NODE_ID 7251a2db300SGanapatrao Kulkarni def_bool y 7261a2db300SGanapatrao Kulkarni depends on NUMA 7271a2db300SGanapatrao Kulkarni 7287af3a0a9SZhen Leiconfig HAVE_SETUP_PER_CPU_AREA 7297af3a0a9SZhen Lei def_bool y 7307af3a0a9SZhen Lei depends on NUMA 7317af3a0a9SZhen Lei 7327af3a0a9SZhen Leiconfig NEED_PER_CPU_EMBED_FIRST_CHUNK 7337af3a0a9SZhen Lei def_bool y 7347af3a0a9SZhen Lei depends on NUMA 7357af3a0a9SZhen Lei 7366d526ee2SArd Biesheuvelconfig HOLES_IN_ZONE 7376d526ee2SArd Biesheuvel def_bool y 7386d526ee2SArd Biesheuvel depends on NUMA 7396d526ee2SArd Biesheuvel 7408c2c3df3SCatalin Marinassource kernel/Kconfig.preempt 741f90df5e2SKefeng Wangsource kernel/Kconfig.hz 7428c2c3df3SCatalin Marinas 74383863f25SLaura Abbottconfig ARCH_SUPPORTS_DEBUG_PAGEALLOC 74483863f25SLaura Abbott def_bool y 74583863f25SLaura Abbott 7468c2c3df3SCatalin Marinasconfig ARCH_HAS_HOLES_MEMORYMODEL 7478c2c3df3SCatalin Marinas def_bool y if SPARSEMEM 7488c2c3df3SCatalin Marinas 7498c2c3df3SCatalin Marinasconfig ARCH_SPARSEMEM_ENABLE 7508c2c3df3SCatalin Marinas def_bool y 7518c2c3df3SCatalin Marinas select SPARSEMEM_VMEMMAP_ENABLE 7528c2c3df3SCatalin Marinas 7538c2c3df3SCatalin Marinasconfig ARCH_SPARSEMEM_DEFAULT 7548c2c3df3SCatalin Marinas def_bool ARCH_SPARSEMEM_ENABLE 7558c2c3df3SCatalin Marinas 7568c2c3df3SCatalin Marinasconfig ARCH_SELECT_MEMORY_MODEL 7578c2c3df3SCatalin Marinas def_bool ARCH_SPARSEMEM_ENABLE 7588c2c3df3SCatalin Marinas 7598c2c3df3SCatalin Marinasconfig HAVE_ARCH_PFN_VALID 7608c2c3df3SCatalin Marinas def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM 7618c2c3df3SCatalin Marinas 7628c2c3df3SCatalin Marinasconfig HW_PERF_EVENTS 7636475b2d8SMark Rutland def_bool y 7646475b2d8SMark Rutland depends on ARM_PMU 7658c2c3df3SCatalin Marinas 766084bd298SSteve Capperconfig SYS_SUPPORTS_HUGETLBFS 767084bd298SSteve Capper def_bool y 768084bd298SSteve Capper 769084bd298SSteve Capperconfig ARCH_WANT_HUGE_PMD_SHARE 77021539939SSuzuki K. Poulose def_bool y if ARM64_4K_PAGES || (ARM64_16K_PAGES && !ARM64_VA_BITS_36) 771084bd298SSteve Capper 772a41dc0e8SCatalin Marinasconfig ARCH_HAS_CACHE_LINE_SIZE 773a41dc0e8SCatalin Marinas def_bool y 774a41dc0e8SCatalin Marinas 7758c2c3df3SCatalin Marinassource "mm/Kconfig" 7768c2c3df3SCatalin Marinas 777a1ae65b2SAKASHI Takahiroconfig SECCOMP 778a1ae65b2SAKASHI Takahiro bool "Enable seccomp to safely compute untrusted bytecode" 779a1ae65b2SAKASHI Takahiro ---help--- 780a1ae65b2SAKASHI Takahiro This kernel feature is useful for number crunching applications 781a1ae65b2SAKASHI Takahiro that may need to compute untrusted bytecode during their 782a1ae65b2SAKASHI Takahiro execution. By using pipes or other transports made available to 783a1ae65b2SAKASHI Takahiro the process as file descriptors supporting the read/write 784a1ae65b2SAKASHI Takahiro syscalls, it's possible to isolate those applications in 785a1ae65b2SAKASHI Takahiro their own address space using seccomp. Once seccomp is 786a1ae65b2SAKASHI Takahiro enabled via prctl(PR_SET_SECCOMP), it cannot be disabled 787a1ae65b2SAKASHI Takahiro and the task is only allowed to execute a few safe syscalls 788a1ae65b2SAKASHI Takahiro defined by each seccomp mode. 789a1ae65b2SAKASHI Takahiro 790dfd57bc3SStefano Stabelliniconfig PARAVIRT 791dfd57bc3SStefano Stabellini bool "Enable paravirtualization code" 792dfd57bc3SStefano Stabellini help 793dfd57bc3SStefano Stabellini This changes the kernel so it can modify itself when it is run 794dfd57bc3SStefano Stabellini under a hypervisor, potentially improving performance significantly 795dfd57bc3SStefano Stabellini over full virtualization. 796dfd57bc3SStefano Stabellini 797dfd57bc3SStefano Stabelliniconfig PARAVIRT_TIME_ACCOUNTING 798dfd57bc3SStefano Stabellini bool "Paravirtual steal time accounting" 799dfd57bc3SStefano Stabellini select PARAVIRT 800dfd57bc3SStefano Stabellini default n 801dfd57bc3SStefano Stabellini help 802dfd57bc3SStefano Stabellini Select this option to enable fine granularity task steal time 803dfd57bc3SStefano Stabellini accounting. Time spent executing other tasks in parallel with 804dfd57bc3SStefano Stabellini the current vCPU is discounted from the vCPU power. To account for 805dfd57bc3SStefano Stabellini that, there can be a small performance impact. 806dfd57bc3SStefano Stabellini 807dfd57bc3SStefano Stabellini If in doubt, say N here. 808dfd57bc3SStefano Stabellini 809d28f6df1SGeoff Levandconfig KEXEC 810d28f6df1SGeoff Levand depends on PM_SLEEP_SMP 811d28f6df1SGeoff Levand select KEXEC_CORE 812d28f6df1SGeoff Levand bool "kexec system call" 813d28f6df1SGeoff Levand ---help--- 814d28f6df1SGeoff Levand kexec is a system call that implements the ability to shutdown your 815d28f6df1SGeoff Levand current kernel, and to start another kernel. It is like a reboot 816d28f6df1SGeoff Levand but it is independent of the system firmware. And like a reboot 817d28f6df1SGeoff Levand you can start any kernel with it, not just Linux. 818d28f6df1SGeoff Levand 819e62aaeacSAKASHI Takahiroconfig CRASH_DUMP 820e62aaeacSAKASHI Takahiro bool "Build kdump crash kernel" 821e62aaeacSAKASHI Takahiro help 822e62aaeacSAKASHI Takahiro Generate crash dump after being started by kexec. This should 823e62aaeacSAKASHI Takahiro be normally only set in special crash dump kernels which are 824e62aaeacSAKASHI Takahiro loaded in the main kernel with kexec-tools into a specially 825e62aaeacSAKASHI Takahiro reserved region and then later executed after a crash by 826e62aaeacSAKASHI Takahiro kdump/kexec. 827e62aaeacSAKASHI Takahiro 828e62aaeacSAKASHI Takahiro For more details see Documentation/kdump/kdump.txt 829e62aaeacSAKASHI Takahiro 830aa42aa13SStefano Stabelliniconfig XEN_DOM0 831aa42aa13SStefano Stabellini def_bool y 832aa42aa13SStefano Stabellini depends on XEN 833aa42aa13SStefano Stabellini 834aa42aa13SStefano Stabelliniconfig XEN 835c2ba1f7dSJulien Grall bool "Xen guest support on ARM64" 836aa42aa13SStefano Stabellini depends on ARM64 && OF 83783862ccfSStefano Stabellini select SWIOTLB_XEN 838dfd57bc3SStefano Stabellini select PARAVIRT 839aa42aa13SStefano Stabellini help 840aa42aa13SStefano Stabellini Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64. 841aa42aa13SStefano Stabellini 842d03bb145SSteve Capperconfig FORCE_MAX_ZONEORDER 843d03bb145SSteve Capper int 844d03bb145SSteve Capper default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE) 84544eaacf1SSuzuki K. Poulose default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE) 846d03bb145SSteve Capper default "11" 84744eaacf1SSuzuki K. Poulose help 84844eaacf1SSuzuki K. Poulose The kernel memory allocator divides physically contiguous memory 84944eaacf1SSuzuki K. Poulose blocks into "zones", where each zone is a power of two number of 85044eaacf1SSuzuki K. Poulose pages. This option selects the largest power of two that the kernel 85144eaacf1SSuzuki K. Poulose keeps in the memory allocator. If you need to allocate very large 85244eaacf1SSuzuki K. Poulose blocks of physically contiguous memory, then you may need to 85344eaacf1SSuzuki K. Poulose increase this value. 85444eaacf1SSuzuki K. Poulose 85544eaacf1SSuzuki K. Poulose This config option is actually maximum order plus one. For example, 85644eaacf1SSuzuki K. Poulose a value of 11 means that the largest free memory block is 2^10 pages. 85744eaacf1SSuzuki K. Poulose 85844eaacf1SSuzuki K. Poulose We make sure that we can allocate upto a HugePage size for each configuration. 85944eaacf1SSuzuki K. Poulose Hence we have : 86044eaacf1SSuzuki K. Poulose MAX_ORDER = (PMD_SHIFT - PAGE_SHIFT) + 1 => PAGE_SHIFT - 2 86144eaacf1SSuzuki K. Poulose 86244eaacf1SSuzuki K. Poulose However for 4K, we choose a higher default value, 11 as opposed to 10, giving us 86344eaacf1SSuzuki K. Poulose 4M allocations matching the default size used by generic code. 864d03bb145SSteve Capper 865084eb77cSWill Deaconconfig UNMAP_KERNEL_AT_EL0 866*0617052dSWill Deacon bool "Unmap kernel when running in userspace (aka \"KAISER\")" if EXPERT 867084eb77cSWill Deacon default y 868084eb77cSWill Deacon help 869*0617052dSWill Deacon Speculation attacks against some high-performance processors can 870*0617052dSWill Deacon be used to bypass MMU permission checks and leak kernel data to 871*0617052dSWill Deacon userspace. This can be defended against by unmapping the kernel 872*0617052dSWill Deacon when running in userspace, mapping it back in on exception entry 873*0617052dSWill Deacon via a trampoline page in the vector table. 874084eb77cSWill Deacon 875084eb77cSWill Deacon If unsure, say Y. 876084eb77cSWill Deacon 8771b907f46SWill Deaconmenuconfig ARMV8_DEPRECATED 8781b907f46SWill Deacon bool "Emulate deprecated/obsolete ARMv8 instructions" 8791b907f46SWill Deacon depends on COMPAT 8806cfa7cc4SDave Martin depends on SYSCTL 8811b907f46SWill Deacon help 8821b907f46SWill Deacon Legacy software support may require certain instructions 8831b907f46SWill Deacon that have been deprecated or obsoleted in the architecture. 8841b907f46SWill Deacon 8851b907f46SWill Deacon Enable this config to enable selective emulation of these 8861b907f46SWill Deacon features. 8871b907f46SWill Deacon 8881b907f46SWill Deacon If unsure, say Y 8891b907f46SWill Deacon 8901b907f46SWill Deaconif ARMV8_DEPRECATED 8911b907f46SWill Deacon 8921b907f46SWill Deaconconfig SWP_EMULATION 8931b907f46SWill Deacon bool "Emulate SWP/SWPB instructions" 8941b907f46SWill Deacon help 8951b907f46SWill Deacon ARMv8 obsoletes the use of A32 SWP/SWPB instructions such that 8961b907f46SWill Deacon they are always undefined. Say Y here to enable software 8971b907f46SWill Deacon emulation of these instructions for userspace using LDXR/STXR. 8981b907f46SWill Deacon 8991b907f46SWill Deacon In some older versions of glibc [<=2.8] SWP is used during futex 9001b907f46SWill Deacon trylock() operations with the assumption that the code will not 9011b907f46SWill Deacon be preempted. This invalid assumption may be more likely to fail 9021b907f46SWill Deacon with SWP emulation enabled, leading to deadlock of the user 9031b907f46SWill Deacon application. 9041b907f46SWill Deacon 9051b907f46SWill Deacon NOTE: when accessing uncached shared regions, LDXR/STXR rely 9061b907f46SWill Deacon on an external transaction monitoring block called a global 9071b907f46SWill Deacon monitor to maintain update atomicity. If your system does not 9081b907f46SWill Deacon implement a global monitor, this option can cause programs that 9091b907f46SWill Deacon perform SWP operations to uncached memory to deadlock. 9101b907f46SWill Deacon 9111b907f46SWill Deacon If unsure, say Y 9121b907f46SWill Deacon 9131b907f46SWill Deaconconfig CP15_BARRIER_EMULATION 9141b907f46SWill Deacon bool "Emulate CP15 Barrier instructions" 9151b907f46SWill Deacon help 9161b907f46SWill Deacon The CP15 barrier instructions - CP15ISB, CP15DSB, and 9171b907f46SWill Deacon CP15DMB - are deprecated in ARMv8 (and ARMv7). It is 9181b907f46SWill Deacon strongly recommended to use the ISB, DSB, and DMB 9191b907f46SWill Deacon instructions instead. 9201b907f46SWill Deacon 9211b907f46SWill Deacon Say Y here to enable software emulation of these 9221b907f46SWill Deacon instructions for AArch32 userspace code. When this option is 9231b907f46SWill Deacon enabled, CP15 barrier usage is traced which can help 9241b907f46SWill Deacon identify software that needs updating. 9251b907f46SWill Deacon 9261b907f46SWill Deacon If unsure, say Y 9271b907f46SWill Deacon 9282d888f48SSuzuki K. Pouloseconfig SETEND_EMULATION 9292d888f48SSuzuki K. Poulose bool "Emulate SETEND instruction" 9302d888f48SSuzuki K. Poulose help 9312d888f48SSuzuki K. Poulose The SETEND instruction alters the data-endianness of the 9322d888f48SSuzuki K. Poulose AArch32 EL0, and is deprecated in ARMv8. 9332d888f48SSuzuki K. Poulose 9342d888f48SSuzuki K. Poulose Say Y here to enable software emulation of the instruction 9352d888f48SSuzuki K. Poulose for AArch32 userspace code. 9362d888f48SSuzuki K. Poulose 9372d888f48SSuzuki K. Poulose Note: All the cpus on the system must have mixed endian support at EL0 9382d888f48SSuzuki K. Poulose for this feature to be enabled. If a new CPU - which doesn't support mixed 9392d888f48SSuzuki K. Poulose endian - is hotplugged in after this feature has been enabled, there could 9402d888f48SSuzuki K. Poulose be unexpected results in the applications. 9412d888f48SSuzuki K. Poulose 9422d888f48SSuzuki K. Poulose If unsure, say Y 9431b907f46SWill Deaconendif 9441b907f46SWill Deacon 945ba42822aSCatalin Marinasconfig ARM64_SW_TTBR0_PAN 946ba42822aSCatalin Marinas bool "Emulate Privileged Access Never using TTBR0_EL1 switching" 947ba42822aSCatalin Marinas help 948ba42822aSCatalin Marinas Enabling this option prevents the kernel from accessing 949ba42822aSCatalin Marinas user-space memory directly by pointing TTBR0_EL1 to a reserved 950ba42822aSCatalin Marinas zeroed area and reserved ASID. The user access routines 951ba42822aSCatalin Marinas restore the valid TTBR0_EL1 temporarily. 952ba42822aSCatalin Marinas 9530e4a0709SWill Deaconmenu "ARMv8.1 architectural features" 9540e4a0709SWill Deacon 9550e4a0709SWill Deaconconfig ARM64_HW_AFDBM 9560e4a0709SWill Deacon bool "Support for hardware updates of the Access and Dirty page flags" 9570e4a0709SWill Deacon default y 9580e4a0709SWill Deacon help 9590e4a0709SWill Deacon The ARMv8.1 architecture extensions introduce support for 9600e4a0709SWill Deacon hardware updates of the access and dirty information in page 9610e4a0709SWill Deacon table entries. When enabled in TCR_EL1 (HA and HD bits) on 9620e4a0709SWill Deacon capable processors, accesses to pages with PTE_AF cleared will 9630e4a0709SWill Deacon set this bit instead of raising an access flag fault. 9640e4a0709SWill Deacon Similarly, writes to read-only pages with the DBM bit set will 9650e4a0709SWill Deacon clear the read-only bit (AP[2]) instead of raising a 9660e4a0709SWill Deacon permission fault. 9670e4a0709SWill Deacon 9680e4a0709SWill Deacon Kernels built with this configuration option enabled continue 9690e4a0709SWill Deacon to work on pre-ARMv8.1 hardware and the performance impact is 9700e4a0709SWill Deacon minimal. If unsure, say Y. 9710e4a0709SWill Deacon 9720e4a0709SWill Deaconconfig ARM64_PAN 9730e4a0709SWill Deacon bool "Enable support for Privileged Access Never (PAN)" 9740e4a0709SWill Deacon default y 9750e4a0709SWill Deacon help 9760e4a0709SWill Deacon Privileged Access Never (PAN; part of the ARMv8.1 Extensions) 9770e4a0709SWill Deacon prevents the kernel or hypervisor from accessing user-space (EL0) 9780e4a0709SWill Deacon memory directly. 9790e4a0709SWill Deacon 9800e4a0709SWill Deacon Choosing this option will cause any unprotected (not using 9810e4a0709SWill Deacon copy_to_user et al) memory access to fail with a permission fault. 9820e4a0709SWill Deacon 9830e4a0709SWill Deacon The feature is detected at runtime, and will remain as a 'nop' 9840e4a0709SWill Deacon instruction if the cpu does not implement the feature. 9850e4a0709SWill Deacon 9860e4a0709SWill Deaconconfig ARM64_LSE_ATOMICS 9870e4a0709SWill Deacon bool "Atomic instructions" 9880e4a0709SWill Deacon help 9890e4a0709SWill Deacon As part of the Large System Extensions, ARMv8.1 introduces new 9900e4a0709SWill Deacon atomic instructions that are designed specifically to scale in 9910e4a0709SWill Deacon very large systems. 9920e4a0709SWill Deacon 9930e4a0709SWill Deacon Say Y here to make use of these instructions for the in-kernel 9940e4a0709SWill Deacon atomic routines. This incurs a small overhead on CPUs that do 9950e4a0709SWill Deacon not support these instructions and requires the kernel to be 9960e4a0709SWill Deacon built with binutils >= 2.25. 9970e4a0709SWill Deacon 9981f364c8cSMarc Zyngierconfig ARM64_VHE 9991f364c8cSMarc Zyngier bool "Enable support for Virtualization Host Extensions (VHE)" 10001f364c8cSMarc Zyngier default y 10011f364c8cSMarc Zyngier help 10021f364c8cSMarc Zyngier Virtualization Host Extensions (VHE) allow the kernel to run 10031f364c8cSMarc Zyngier directly at EL2 (instead of EL1) on processors that support 10041f364c8cSMarc Zyngier it. This leads to better performance for KVM, as they reduce 10051f364c8cSMarc Zyngier the cost of the world switch. 10061f364c8cSMarc Zyngier 10071f364c8cSMarc Zyngier Selecting this option allows the VHE feature to be detected 10081f364c8cSMarc Zyngier at runtime, and does not affect processors that do not 10091f364c8cSMarc Zyngier implement this feature. 10101f364c8cSMarc Zyngier 10110e4a0709SWill Deaconendmenu 10120e4a0709SWill Deacon 1013f993318bSWill Deaconmenu "ARMv8.2 architectural features" 1014f993318bSWill Deacon 101557f4959bSJames Morseconfig ARM64_UAO 101657f4959bSJames Morse bool "Enable support for User Access Override (UAO)" 101757f4959bSJames Morse default y 101857f4959bSJames Morse help 101957f4959bSJames Morse User Access Override (UAO; part of the ARMv8.2 Extensions) 102057f4959bSJames Morse causes the 'unprivileged' variant of the load/store instructions to 102183fc61a5SMasanari Iida be overridden to be privileged. 102257f4959bSJames Morse 102357f4959bSJames Morse This option changes get_user() and friends to use the 'unprivileged' 102457f4959bSJames Morse variant of the load/store instructions. This ensures that user-space 102557f4959bSJames Morse really did have access to the supplied memory. When addr_limit is 102657f4959bSJames Morse set to kernel memory the UAO bit will be set, allowing privileged 102757f4959bSJames Morse access to kernel memory. 102857f4959bSJames Morse 102957f4959bSJames Morse Choosing this option will cause copy_to_user() et al to use user-space 103057f4959bSJames Morse memory permissions. 103157f4959bSJames Morse 103257f4959bSJames Morse The feature is detected at runtime, the kernel will use the 103357f4959bSJames Morse regular load/store instructions if the cpu does not implement the 103457f4959bSJames Morse feature. 103557f4959bSJames Morse 1036d50e071fSRobin Murphyconfig ARM64_PMEM 1037d50e071fSRobin Murphy bool "Enable support for persistent memory" 1038d50e071fSRobin Murphy select ARCH_HAS_PMEM_API 10395d7bdeb1SRobin Murphy select ARCH_HAS_UACCESS_FLUSHCACHE 1040d50e071fSRobin Murphy help 1041d50e071fSRobin Murphy Say Y to enable support for the persistent memory API based on the 1042d50e071fSRobin Murphy ARMv8.2 DCPoP feature. 1043d50e071fSRobin Murphy 1044d50e071fSRobin Murphy The feature is detected at runtime, and the kernel will use DC CVAC 1045d50e071fSRobin Murphy operations if DC CVAP is not supported (following the behaviour of 1046d50e071fSRobin Murphy DC CVAP itself if the system does not define a point of persistence). 1047d50e071fSRobin Murphy 1048f993318bSWill Deaconendmenu 1049f993318bSWill Deacon 1050ddd25ad1SDave Martinconfig ARM64_SVE 1051ddd25ad1SDave Martin bool "ARM Scalable Vector Extension support" 1052ddd25ad1SDave Martin default y 1053ddd25ad1SDave Martin help 1054ddd25ad1SDave Martin The Scalable Vector Extension (SVE) is an extension to the AArch64 1055ddd25ad1SDave Martin execution state which complements and extends the SIMD functionality 1056ddd25ad1SDave Martin of the base architecture to support much larger vectors and to enable 1057ddd25ad1SDave Martin additional vectorisation opportunities. 1058ddd25ad1SDave Martin 1059ddd25ad1SDave Martin To enable use of this extension on CPUs that implement it, say Y. 1060ddd25ad1SDave Martin 1061fd045f6cSArd Biesheuvelconfig ARM64_MODULE_CMODEL_LARGE 1062fd045f6cSArd Biesheuvel bool 1063fd045f6cSArd Biesheuvel 1064fd045f6cSArd Biesheuvelconfig ARM64_MODULE_PLTS 1065fd045f6cSArd Biesheuvel bool 1066fd045f6cSArd Biesheuvel select ARM64_MODULE_CMODEL_LARGE 1067fd045f6cSArd Biesheuvel select HAVE_MOD_ARCH_SPECIFIC 1068fd045f6cSArd Biesheuvel 10691e48ef7fSArd Biesheuvelconfig RELOCATABLE 10701e48ef7fSArd Biesheuvel bool 10711e48ef7fSArd Biesheuvel help 10721e48ef7fSArd Biesheuvel This builds the kernel as a Position Independent Executable (PIE), 10731e48ef7fSArd Biesheuvel which retains all relocation metadata required to relocate the 10741e48ef7fSArd Biesheuvel kernel binary at runtime to a different virtual address than the 10751e48ef7fSArd Biesheuvel address it was linked at. 10761e48ef7fSArd Biesheuvel Since AArch64 uses the RELA relocation format, this requires a 10771e48ef7fSArd Biesheuvel relocation pass at runtime even if the kernel is loaded at the 10781e48ef7fSArd Biesheuvel same address it was linked at. 10791e48ef7fSArd Biesheuvel 1080f80fb3a3SArd Biesheuvelconfig RANDOMIZE_BASE 1081f80fb3a3SArd Biesheuvel bool "Randomize the address of the kernel image" 1082b9c220b5SCatalin Marinas select ARM64_MODULE_PLTS if MODULES 1083f80fb3a3SArd Biesheuvel select RELOCATABLE 1084f80fb3a3SArd Biesheuvel help 1085f80fb3a3SArd Biesheuvel Randomizes the virtual address at which the kernel image is 1086f80fb3a3SArd Biesheuvel loaded, as a security feature that deters exploit attempts 1087f80fb3a3SArd Biesheuvel relying on knowledge of the location of kernel internals. 1088f80fb3a3SArd Biesheuvel 1089f80fb3a3SArd Biesheuvel It is the bootloader's job to provide entropy, by passing a 1090f80fb3a3SArd Biesheuvel random u64 value in /chosen/kaslr-seed at kernel entry. 1091f80fb3a3SArd Biesheuvel 10922b5fe07aSArd Biesheuvel When booting via the UEFI stub, it will invoke the firmware's 10932b5fe07aSArd Biesheuvel EFI_RNG_PROTOCOL implementation (if available) to supply entropy 10942b5fe07aSArd Biesheuvel to the kernel proper. In addition, it will randomise the physical 10952b5fe07aSArd Biesheuvel location of the kernel Image as well. 10962b5fe07aSArd Biesheuvel 1097f80fb3a3SArd Biesheuvel If unsure, say N. 1098f80fb3a3SArd Biesheuvel 1099f80fb3a3SArd Biesheuvelconfig RANDOMIZE_MODULE_REGION_FULL 1100f80fb3a3SArd Biesheuvel bool "Randomize the module region independently from the core kernel" 1101e71a4e1bSArd Biesheuvel depends on RANDOMIZE_BASE 1102f80fb3a3SArd Biesheuvel default y 1103f80fb3a3SArd Biesheuvel help 1104f80fb3a3SArd Biesheuvel Randomizes the location of the module region without considering the 1105f80fb3a3SArd Biesheuvel location of the core kernel. This way, it is impossible for modules 1106f80fb3a3SArd Biesheuvel to leak information about the location of core kernel data structures 1107f80fb3a3SArd Biesheuvel but it does imply that function calls between modules and the core 1108f80fb3a3SArd Biesheuvel kernel will need to be resolved via veneers in the module PLT. 1109f80fb3a3SArd Biesheuvel 1110f80fb3a3SArd Biesheuvel When this option is not set, the module region will be randomized over 1111f80fb3a3SArd Biesheuvel a limited range that contains the [_stext, _etext] interval of the 1112f80fb3a3SArd Biesheuvel core kernel, so branch relocations are always in range. 1113f80fb3a3SArd Biesheuvel 11148c2c3df3SCatalin Marinasendmenu 11158c2c3df3SCatalin Marinas 11168c2c3df3SCatalin Marinasmenu "Boot options" 11178c2c3df3SCatalin Marinas 11185e89c55eSLorenzo Pieralisiconfig ARM64_ACPI_PARKING_PROTOCOL 11195e89c55eSLorenzo Pieralisi bool "Enable support for the ARM64 ACPI parking protocol" 11205e89c55eSLorenzo Pieralisi depends on ACPI 11215e89c55eSLorenzo Pieralisi help 11225e89c55eSLorenzo Pieralisi Enable support for the ARM64 ACPI parking protocol. If disabled 11235e89c55eSLorenzo Pieralisi the kernel will not allow booting through the ARM64 ACPI parking 11245e89c55eSLorenzo Pieralisi protocol even if the corresponding data is present in the ACPI 11255e89c55eSLorenzo Pieralisi MADT table. 11265e89c55eSLorenzo Pieralisi 11278c2c3df3SCatalin Marinasconfig CMDLINE 11288c2c3df3SCatalin Marinas string "Default kernel command string" 11298c2c3df3SCatalin Marinas default "" 11308c2c3df3SCatalin Marinas help 11318c2c3df3SCatalin Marinas Provide a set of default command-line options at build time by 11328c2c3df3SCatalin Marinas entering them here. As a minimum, you should specify the the 11338c2c3df3SCatalin Marinas root device (e.g. root=/dev/nfs). 11348c2c3df3SCatalin Marinas 11358c2c3df3SCatalin Marinasconfig CMDLINE_FORCE 11368c2c3df3SCatalin Marinas bool "Always use the default kernel command string" 11378c2c3df3SCatalin Marinas help 11388c2c3df3SCatalin Marinas Always use the default kernel command string, even if the boot 11398c2c3df3SCatalin Marinas loader passes other arguments to the kernel. 11408c2c3df3SCatalin Marinas This is useful if you cannot or don't want to change the 11418c2c3df3SCatalin Marinas command-line options your boot loader passes to the kernel. 11428c2c3df3SCatalin Marinas 1143f4f75ad5SArd Biesheuvelconfig EFI_STUB 1144f4f75ad5SArd Biesheuvel bool 1145f4f75ad5SArd Biesheuvel 1146f84d0275SMark Salterconfig EFI 1147f84d0275SMark Salter bool "UEFI runtime support" 1148f84d0275SMark Salter depends on OF && !CPU_BIG_ENDIAN 1149b472db6cSDave Martin depends on KERNEL_MODE_NEON 1150f84d0275SMark Salter select LIBFDT 1151f84d0275SMark Salter select UCS2_STRING 1152f84d0275SMark Salter select EFI_PARAMS_FROM_FDT 1153e15dd494SArd Biesheuvel select EFI_RUNTIME_WRAPPERS 1154f4f75ad5SArd Biesheuvel select EFI_STUB 1155f4f75ad5SArd Biesheuvel select EFI_ARMSTUB 1156f84d0275SMark Salter default y 1157f84d0275SMark Salter help 1158f84d0275SMark Salter This option provides support for runtime services provided 1159f84d0275SMark Salter by UEFI firmware (such as non-volatile variables, realtime 11603c7f2550SMark Salter clock, and platform reset). A UEFI stub is also provided to 11613c7f2550SMark Salter allow the kernel to be booted as an EFI application. This 11623c7f2550SMark Salter is only useful on systems that have UEFI firmware. 1163f84d0275SMark Salter 1164d1ae8c00SYi Liconfig DMI 1165d1ae8c00SYi Li bool "Enable support for SMBIOS (DMI) tables" 1166d1ae8c00SYi Li depends on EFI 1167d1ae8c00SYi Li default y 1168d1ae8c00SYi Li help 1169d1ae8c00SYi Li This enables SMBIOS/DMI feature for systems. 1170d1ae8c00SYi Li 1171d1ae8c00SYi Li This option is only useful on systems that have UEFI firmware. 1172d1ae8c00SYi Li However, even with this option, the resultant kernel should 1173d1ae8c00SYi Li continue to boot on existing non-UEFI platforms. 1174d1ae8c00SYi Li 11758c2c3df3SCatalin Marinasendmenu 11768c2c3df3SCatalin Marinas 11778c2c3df3SCatalin Marinasmenu "Userspace binary formats" 11788c2c3df3SCatalin Marinas 11798c2c3df3SCatalin Marinassource "fs/Kconfig.binfmt" 11808c2c3df3SCatalin Marinas 11818c2c3df3SCatalin Marinasconfig COMPAT 11828c2c3df3SCatalin Marinas bool "Kernel support for 32-bit EL0" 1183755e70b7SSuzuki K. Poulose depends on ARM64_4K_PAGES || EXPERT 11842e449048SKefeng Wang select COMPAT_BINFMT_ELF if BINFMT_ELF 1185af1839ebSCatalin Marinas select HAVE_UID16 118684b9e9b4SAl Viro select OLD_SIGSUSPEND3 118751682036SAl Viro select COMPAT_OLD_SIGACTION 11888c2c3df3SCatalin Marinas help 11898c2c3df3SCatalin Marinas This option enables support for a 32-bit EL0 running under a 64-bit 11908c2c3df3SCatalin Marinas kernel at EL1. AArch32-specific components such as system calls, 11918c2c3df3SCatalin Marinas the user helper functions, VFP support and the ptrace interface are 11928c2c3df3SCatalin Marinas handled appropriately by the kernel. 11938c2c3df3SCatalin Marinas 119444eaacf1SSuzuki K. Poulose If you use a page size other than 4KB (i.e, 16KB or 64KB), please be aware 119544eaacf1SSuzuki K. Poulose that you will only be able to execute AArch32 binaries that were compiled 119644eaacf1SSuzuki K. Poulose with page size aligned segments. 1197a8fcd8b1SAlexander Graf 11988c2c3df3SCatalin Marinas If you want to execute 32-bit userspace applications, say Y. 11998c2c3df3SCatalin Marinas 12008c2c3df3SCatalin Marinasconfig SYSVIPC_COMPAT 12018c2c3df3SCatalin Marinas def_bool y 12028c2c3df3SCatalin Marinas depends on COMPAT && SYSVIPC 12038c2c3df3SCatalin Marinas 12048c2c3df3SCatalin Marinasendmenu 12058c2c3df3SCatalin Marinas 1206166936baSLorenzo Pieralisimenu "Power management options" 1207166936baSLorenzo Pieralisi 1208166936baSLorenzo Pieralisisource "kernel/power/Kconfig" 1209166936baSLorenzo Pieralisi 121082869ac5SJames Morseconfig ARCH_HIBERNATION_POSSIBLE 121182869ac5SJames Morse def_bool y 121282869ac5SJames Morse depends on CPU_PM 121382869ac5SJames Morse 121482869ac5SJames Morseconfig ARCH_HIBERNATION_HEADER 121582869ac5SJames Morse def_bool y 121682869ac5SJames Morse depends on HIBERNATION 121782869ac5SJames Morse 1218166936baSLorenzo Pieralisiconfig ARCH_SUSPEND_POSSIBLE 1219166936baSLorenzo Pieralisi def_bool y 1220166936baSLorenzo Pieralisi 1221166936baSLorenzo Pieralisiendmenu 1222166936baSLorenzo Pieralisi 12231307220dSLorenzo Pieralisimenu "CPU Power Management" 12241307220dSLorenzo Pieralisi 12251307220dSLorenzo Pieralisisource "drivers/cpuidle/Kconfig" 12261307220dSLorenzo Pieralisi 122752e7e816SRob Herringsource "drivers/cpufreq/Kconfig" 122852e7e816SRob Herring 122952e7e816SRob Herringendmenu 123052e7e816SRob Herring 12318c2c3df3SCatalin Marinassource "net/Kconfig" 12328c2c3df3SCatalin Marinas 12338c2c3df3SCatalin Marinassource "drivers/Kconfig" 12348c2c3df3SCatalin Marinas 1235f84d0275SMark Saltersource "drivers/firmware/Kconfig" 1236f84d0275SMark Salter 1237b6a02173SGraeme Gregorysource "drivers/acpi/Kconfig" 1238b6a02173SGraeme Gregory 12398c2c3df3SCatalin Marinassource "fs/Kconfig" 12408c2c3df3SCatalin Marinas 1241c3eb5b14SMarc Zyngiersource "arch/arm64/kvm/Kconfig" 1242c3eb5b14SMarc Zyngier 12438c2c3df3SCatalin Marinassource "arch/arm64/Kconfig.debug" 12448c2c3df3SCatalin Marinas 12458c2c3df3SCatalin Marinassource "security/Kconfig" 12468c2c3df3SCatalin Marinas 12478c2c3df3SCatalin Marinassource "crypto/Kconfig" 12482c98833aSArd Biesheuvelif CRYPTO 12492c98833aSArd Biesheuvelsource "arch/arm64/crypto/Kconfig" 12502c98833aSArd Biesheuvelendif 12518c2c3df3SCatalin Marinas 12528c2c3df3SCatalin Marinassource "lib/Kconfig" 1253