1# SPDX-License-Identifier: GPL-2.0-only 2config ARM64 3 def_bool y 4 select ACPI_APMT if ACPI 5 select ACPI_CCA_REQUIRED if ACPI 6 select ACPI_GENERIC_GSI if ACPI 7 select ACPI_GTDT if ACPI 8 select ACPI_IORT if ACPI 9 select ACPI_REDUCED_HARDWARE_ONLY if ACPI 10 select ACPI_MCFG if (ACPI && PCI) 11 select ACPI_SPCR_TABLE if ACPI 12 select ACPI_PPTT if ACPI 13 select ARCH_HAS_DEBUG_WX 14 select ARCH_BINFMT_ELF_EXTRA_PHDRS 15 select ARCH_BINFMT_ELF_STATE 16 select ARCH_CORRECT_STACKTRACE_ON_KRETPROBE 17 select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION 18 select ARCH_ENABLE_MEMORY_HOTPLUG 19 select ARCH_ENABLE_MEMORY_HOTREMOVE 20 select ARCH_ENABLE_SPLIT_PMD_PTLOCK if PGTABLE_LEVELS > 2 21 select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE 22 select ARCH_HAS_CACHE_LINE_SIZE 23 select ARCH_HAS_CURRENT_STACK_POINTER 24 select ARCH_HAS_DEBUG_VIRTUAL 25 select ARCH_HAS_DEBUG_VM_PGTABLE 26 select ARCH_HAS_DMA_PREP_COHERENT 27 select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI 28 select ARCH_HAS_FAST_MULTIPLIER 29 select ARCH_HAS_FORTIFY_SOURCE 30 select ARCH_HAS_GCOV_PROFILE_ALL 31 select ARCH_HAS_GIGANTIC_PAGE 32 select ARCH_HAS_KCOV 33 select ARCH_HAS_KEEPINITRD 34 select ARCH_HAS_MEMBARRIER_SYNC_CORE 35 select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS 36 select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 37 select ARCH_HAS_PTE_DEVMAP 38 select ARCH_HAS_PTE_SPECIAL 39 select ARCH_HAS_SETUP_DMA_OPS 40 select ARCH_HAS_SET_DIRECT_MAP 41 select ARCH_HAS_SET_MEMORY 42 select ARCH_STACKWALK 43 select ARCH_HAS_STRICT_KERNEL_RWX 44 select ARCH_HAS_STRICT_MODULE_RWX 45 select ARCH_HAS_SYNC_DMA_FOR_DEVICE 46 select ARCH_HAS_SYNC_DMA_FOR_CPU 47 select ARCH_HAS_SYSCALL_WRAPPER 48 select ARCH_HAS_TEARDOWN_DMA_OPS if IOMMU_SUPPORT 49 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST 50 select ARCH_HAS_ZONE_DMA_SET if EXPERT 51 select ARCH_HAVE_ELF_PROT 52 select ARCH_HAVE_NMI_SAFE_CMPXCHG 53 select ARCH_HAVE_TRACE_MMIO_ACCESS 54 select ARCH_INLINE_READ_LOCK if !PREEMPTION 55 select ARCH_INLINE_READ_LOCK_BH if !PREEMPTION 56 select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPTION 57 select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPTION 58 select ARCH_INLINE_READ_UNLOCK if !PREEMPTION 59 select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPTION 60 select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPTION 61 select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPTION 62 select ARCH_INLINE_WRITE_LOCK if !PREEMPTION 63 select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPTION 64 select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPTION 65 select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPTION 66 select ARCH_INLINE_WRITE_UNLOCK if !PREEMPTION 67 select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPTION 68 select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPTION 69 select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPTION 70 select ARCH_INLINE_SPIN_TRYLOCK if !PREEMPTION 71 select ARCH_INLINE_SPIN_TRYLOCK_BH if !PREEMPTION 72 select ARCH_INLINE_SPIN_LOCK if !PREEMPTION 73 select ARCH_INLINE_SPIN_LOCK_BH if !PREEMPTION 74 select ARCH_INLINE_SPIN_LOCK_IRQ if !PREEMPTION 75 select ARCH_INLINE_SPIN_LOCK_IRQSAVE if !PREEMPTION 76 select ARCH_INLINE_SPIN_UNLOCK if !PREEMPTION 77 select ARCH_INLINE_SPIN_UNLOCK_BH if !PREEMPTION 78 select ARCH_INLINE_SPIN_UNLOCK_IRQ if !PREEMPTION 79 select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE if !PREEMPTION 80 select ARCH_KEEP_MEMBLOCK 81 select ARCH_USE_CMPXCHG_LOCKREF 82 select ARCH_USE_GNU_PROPERTY 83 select ARCH_USE_MEMTEST 84 select ARCH_USE_QUEUED_RWLOCKS 85 select ARCH_USE_QUEUED_SPINLOCKS 86 select ARCH_USE_SYM_ANNOTATIONS 87 select ARCH_SUPPORTS_DEBUG_PAGEALLOC 88 select ARCH_SUPPORTS_HUGETLBFS 89 select ARCH_SUPPORTS_MEMORY_FAILURE 90 select ARCH_SUPPORTS_SHADOW_CALL_STACK if CC_HAVE_SHADOW_CALL_STACK 91 select ARCH_SUPPORTS_LTO_CLANG if CPU_LITTLE_ENDIAN 92 select ARCH_SUPPORTS_LTO_CLANG_THIN 93 select ARCH_SUPPORTS_CFI_CLANG 94 select ARCH_SUPPORTS_ATOMIC_RMW 95 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 96 select ARCH_SUPPORTS_NUMA_BALANCING 97 select ARCH_SUPPORTS_PAGE_TABLE_CHECK 98 select ARCH_SUPPORTS_PER_VMA_LOCK 99 select ARCH_WANT_COMPAT_IPC_PARSE_VERSION if COMPAT 100 select ARCH_WANT_DEFAULT_BPF_JIT 101 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT 102 select ARCH_WANT_FRAME_POINTERS 103 select ARCH_WANT_HUGE_PMD_SHARE if ARM64_4K_PAGES || (ARM64_16K_PAGES && !ARM64_VA_BITS_36) 104 select ARCH_WANT_LD_ORPHAN_WARN 105 select ARCH_WANTS_NO_INSTR 106 select ARCH_WANTS_THP_SWAP if ARM64_4K_PAGES 107 select ARCH_HAS_UBSAN_SANITIZE_ALL 108 select ARM_AMBA 109 select ARM_ARCH_TIMER 110 select ARM_GIC 111 select AUDIT_ARCH_COMPAT_GENERIC 112 select ARM_GIC_V2M if PCI 113 select ARM_GIC_V3 114 select ARM_GIC_V3_ITS if PCI 115 select ARM_PSCI_FW 116 select BUILDTIME_TABLE_SORT 117 select CLONE_BACKWARDS 118 select COMMON_CLK 119 select CPU_PM if (SUSPEND || CPU_IDLE) 120 select CRC32 121 select DCACHE_WORD_ACCESS 122 select DYNAMIC_FTRACE if FUNCTION_TRACER 123 select DMA_BOUNCE_UNALIGNED_KMALLOC 124 select DMA_DIRECT_REMAP 125 select EDAC_SUPPORT 126 select FRAME_POINTER 127 select FUNCTION_ALIGNMENT_4B 128 select FUNCTION_ALIGNMENT_8B if DYNAMIC_FTRACE_WITH_CALL_OPS 129 select GENERIC_ALLOCATOR 130 select GENERIC_ARCH_TOPOLOGY 131 select GENERIC_CLOCKEVENTS_BROADCAST 132 select GENERIC_CPU_AUTOPROBE 133 select GENERIC_CPU_VULNERABILITIES 134 select GENERIC_EARLY_IOREMAP 135 select GENERIC_IDLE_POLL_SETUP 136 select GENERIC_IOREMAP 137 select GENERIC_IRQ_IPI 138 select GENERIC_IRQ_PROBE 139 select GENERIC_IRQ_SHOW 140 select GENERIC_IRQ_SHOW_LEVEL 141 select GENERIC_LIB_DEVMEM_IS_ALLOWED 142 select GENERIC_PCI_IOMAP 143 select GENERIC_PTDUMP 144 select GENERIC_SCHED_CLOCK 145 select GENERIC_SMP_IDLE_THREAD 146 select GENERIC_TIME_VSYSCALL 147 select GENERIC_GETTIMEOFDAY 148 select GENERIC_VDSO_TIME_NS 149 select HARDIRQS_SW_RESEND 150 select HAS_IOPORT 151 select HAVE_MOVE_PMD 152 select HAVE_MOVE_PUD 153 select HAVE_PCI 154 select HAVE_ACPI_APEI if (ACPI && EFI) 155 select HAVE_ALIGNED_STRUCT_PAGE if SLUB 156 select HAVE_ARCH_AUDITSYSCALL 157 select HAVE_ARCH_BITREVERSE 158 select HAVE_ARCH_COMPILER_H 159 select HAVE_ARCH_HUGE_VMALLOC 160 select HAVE_ARCH_HUGE_VMAP 161 select HAVE_ARCH_JUMP_LABEL 162 select HAVE_ARCH_JUMP_LABEL_RELATIVE 163 select HAVE_ARCH_KASAN if !(ARM64_16K_PAGES && ARM64_VA_BITS_48) 164 select HAVE_ARCH_KASAN_VMALLOC if HAVE_ARCH_KASAN 165 select HAVE_ARCH_KASAN_SW_TAGS if HAVE_ARCH_KASAN 166 select HAVE_ARCH_KASAN_HW_TAGS if (HAVE_ARCH_KASAN && ARM64_MTE) 167 # Some instrumentation may be unsound, hence EXPERT 168 select HAVE_ARCH_KCSAN if EXPERT 169 select HAVE_ARCH_KFENCE 170 select HAVE_ARCH_KGDB 171 select HAVE_ARCH_MMAP_RND_BITS 172 select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT 173 select HAVE_ARCH_PREL32_RELOCATIONS 174 select HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET 175 select HAVE_ARCH_SECCOMP_FILTER 176 select HAVE_ARCH_STACKLEAK 177 select HAVE_ARCH_THREAD_STRUCT_WHITELIST 178 select HAVE_ARCH_TRACEHOOK 179 select HAVE_ARCH_TRANSPARENT_HUGEPAGE 180 select HAVE_ARCH_VMAP_STACK 181 select HAVE_ARM_SMCCC 182 select HAVE_ASM_MODVERSIONS 183 select HAVE_EBPF_JIT 184 select HAVE_C_RECORDMCOUNT 185 select HAVE_CMPXCHG_DOUBLE 186 select HAVE_CMPXCHG_LOCAL 187 select HAVE_CONTEXT_TRACKING_USER 188 select HAVE_DEBUG_KMEMLEAK 189 select HAVE_DMA_CONTIGUOUS 190 select HAVE_DYNAMIC_FTRACE 191 select HAVE_DYNAMIC_FTRACE_WITH_ARGS \ 192 if $(cc-option,-fpatchable-function-entry=2) 193 select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS \ 194 if DYNAMIC_FTRACE_WITH_ARGS && DYNAMIC_FTRACE_WITH_CALL_OPS 195 select HAVE_DYNAMIC_FTRACE_WITH_CALL_OPS \ 196 if (DYNAMIC_FTRACE_WITH_ARGS && !CFI_CLANG && \ 197 !CC_OPTIMIZE_FOR_SIZE) 198 select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY \ 199 if DYNAMIC_FTRACE_WITH_ARGS 200 select HAVE_EFFICIENT_UNALIGNED_ACCESS 201 select HAVE_FAST_GUP 202 select HAVE_FTRACE_MCOUNT_RECORD 203 select HAVE_FUNCTION_TRACER 204 select HAVE_FUNCTION_ERROR_INJECTION 205 select HAVE_FUNCTION_GRAPH_TRACER 206 select HAVE_GCC_PLUGINS 207 select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && \ 208 HW_PERF_EVENTS && HAVE_PERF_EVENTS_NMI 209 select HAVE_HW_BREAKPOINT if PERF_EVENTS 210 select HAVE_IOREMAP_PROT 211 select HAVE_IRQ_TIME_ACCOUNTING 212 select HAVE_KVM 213 select HAVE_MOD_ARCH_SPECIFIC 214 select HAVE_NMI 215 select HAVE_PERF_EVENTS 216 select HAVE_PERF_EVENTS_NMI if ARM64_PSEUDO_NMI 217 select HAVE_PERF_REGS 218 select HAVE_PERF_USER_STACK_DUMP 219 select HAVE_PREEMPT_DYNAMIC_KEY 220 select HAVE_REGS_AND_STACK_ACCESS_API 221 select HAVE_POSIX_CPU_TIMERS_TASK_WORK 222 select HAVE_FUNCTION_ARG_ACCESS_API 223 select MMU_GATHER_RCU_TABLE_FREE 224 select HAVE_RSEQ 225 select HAVE_STACKPROTECTOR 226 select HAVE_SYSCALL_TRACEPOINTS 227 select HAVE_KPROBES 228 select HAVE_KRETPROBES 229 select HAVE_GENERIC_VDSO 230 select HOTPLUG_CORE_SYNC_DEAD if HOTPLUG_CPU 231 select IRQ_DOMAIN 232 select IRQ_FORCED_THREADING 233 select KASAN_VMALLOC if KASAN 234 select LOCK_MM_AND_FIND_VMA 235 select MODULES_USE_ELF_RELA 236 select NEED_DMA_MAP_STATE 237 select NEED_SG_DMA_LENGTH 238 select OF 239 select OF_EARLY_FLATTREE 240 select PCI_DOMAINS_GENERIC if PCI 241 select PCI_ECAM if (ACPI && PCI) 242 select PCI_SYSCALL if PCI 243 select POWER_RESET 244 select POWER_SUPPLY 245 select SPARSE_IRQ 246 select SWIOTLB 247 select SYSCTL_EXCEPTION_TRACE 248 select THREAD_INFO_IN_TASK 249 select HAVE_ARCH_USERFAULTFD_MINOR if USERFAULTFD 250 select TRACE_IRQFLAGS_SUPPORT 251 select TRACE_IRQFLAGS_NMI_SUPPORT 252 select HAVE_SOFTIRQ_ON_OWN_STACK 253 help 254 ARM 64-bit (AArch64) Linux support. 255 256config CLANG_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS 257 def_bool CC_IS_CLANG 258 # https://github.com/ClangBuiltLinux/linux/issues/1507 259 depends on AS_IS_GNU || (AS_IS_LLVM && (LD_IS_LLD || LD_VERSION >= 23600)) 260 select HAVE_DYNAMIC_FTRACE_WITH_ARGS 261 262config GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS 263 def_bool CC_IS_GCC 264 depends on $(cc-option,-fpatchable-function-entry=2) 265 select HAVE_DYNAMIC_FTRACE_WITH_ARGS 266 267config 64BIT 268 def_bool y 269 270config MMU 271 def_bool y 272 273config ARM64_PAGE_SHIFT 274 int 275 default 16 if ARM64_64K_PAGES 276 default 14 if ARM64_16K_PAGES 277 default 12 278 279config ARM64_CONT_PTE_SHIFT 280 int 281 default 5 if ARM64_64K_PAGES 282 default 7 if ARM64_16K_PAGES 283 default 4 284 285config ARM64_CONT_PMD_SHIFT 286 int 287 default 5 if ARM64_64K_PAGES 288 default 5 if ARM64_16K_PAGES 289 default 4 290 291config ARCH_MMAP_RND_BITS_MIN 292 default 14 if ARM64_64K_PAGES 293 default 16 if ARM64_16K_PAGES 294 default 18 295 296# max bits determined by the following formula: 297# VA_BITS - PAGE_SHIFT - 3 298config ARCH_MMAP_RND_BITS_MAX 299 default 19 if ARM64_VA_BITS=36 300 default 24 if ARM64_VA_BITS=39 301 default 27 if ARM64_VA_BITS=42 302 default 30 if ARM64_VA_BITS=47 303 default 29 if ARM64_VA_BITS=48 && ARM64_64K_PAGES 304 default 31 if ARM64_VA_BITS=48 && ARM64_16K_PAGES 305 default 33 if ARM64_VA_BITS=48 306 default 14 if ARM64_64K_PAGES 307 default 16 if ARM64_16K_PAGES 308 default 18 309 310config ARCH_MMAP_RND_COMPAT_BITS_MIN 311 default 7 if ARM64_64K_PAGES 312 default 9 if ARM64_16K_PAGES 313 default 11 314 315config ARCH_MMAP_RND_COMPAT_BITS_MAX 316 default 16 317 318config NO_IOPORT_MAP 319 def_bool y if !PCI 320 321config STACKTRACE_SUPPORT 322 def_bool y 323 324config ILLEGAL_POINTER_VALUE 325 hex 326 default 0xdead000000000000 327 328config LOCKDEP_SUPPORT 329 def_bool y 330 331config GENERIC_BUG 332 def_bool y 333 depends on BUG 334 335config GENERIC_BUG_RELATIVE_POINTERS 336 def_bool y 337 depends on GENERIC_BUG 338 339config GENERIC_HWEIGHT 340 def_bool y 341 342config GENERIC_CSUM 343 def_bool y 344 345config GENERIC_CALIBRATE_DELAY 346 def_bool y 347 348config ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE 349 def_bool y 350 351config SMP 352 def_bool y 353 354config KERNEL_MODE_NEON 355 def_bool y 356 357config FIX_EARLYCON_MEM 358 def_bool y 359 360config PGTABLE_LEVELS 361 int 362 default 2 if ARM64_16K_PAGES && ARM64_VA_BITS_36 363 default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42 364 default 3 if ARM64_64K_PAGES && (ARM64_VA_BITS_48 || ARM64_VA_BITS_52) 365 default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39 366 default 3 if ARM64_16K_PAGES && ARM64_VA_BITS_47 367 default 4 if !ARM64_64K_PAGES && ARM64_VA_BITS_48 368 369config ARCH_SUPPORTS_UPROBES 370 def_bool y 371 372config ARCH_PROC_KCORE_TEXT 373 def_bool y 374 375config BROKEN_GAS_INST 376 def_bool !$(as-instr,1:\n.inst 0\n.rept . - 1b\n\nnop\n.endr\n) 377 378config BUILTIN_RETURN_ADDRESS_STRIPS_PAC 379 bool 380 # Clang's __builtin_return_adddress() strips the PAC since 12.0.0 381 # https://reviews.llvm.org/D75044 382 default y if CC_IS_CLANG && (CLANG_VERSION >= 120000) 383 # GCC's __builtin_return_address() strips the PAC since 11.1.0, 384 # and this was backported to 10.2.0, 9.4.0, 8.5.0, but not earlier 385 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94891 386 default y if CC_IS_GCC && (GCC_VERSION >= 110100) 387 default y if CC_IS_GCC && (GCC_VERSION >= 100200) && (GCC_VERSION < 110000) 388 default y if CC_IS_GCC && (GCC_VERSION >= 90400) && (GCC_VERSION < 100000) 389 default y if CC_IS_GCC && (GCC_VERSION >= 80500) && (GCC_VERSION < 90000) 390 default n 391 392config KASAN_SHADOW_OFFSET 393 hex 394 depends on KASAN_GENERIC || KASAN_SW_TAGS 395 default 0xdfff800000000000 if (ARM64_VA_BITS_48 || ARM64_VA_BITS_52) && !KASAN_SW_TAGS 396 default 0xdfffc00000000000 if ARM64_VA_BITS_47 && !KASAN_SW_TAGS 397 default 0xdffffe0000000000 if ARM64_VA_BITS_42 && !KASAN_SW_TAGS 398 default 0xdfffffc000000000 if ARM64_VA_BITS_39 && !KASAN_SW_TAGS 399 default 0xdffffff800000000 if ARM64_VA_BITS_36 && !KASAN_SW_TAGS 400 default 0xefff800000000000 if (ARM64_VA_BITS_48 || ARM64_VA_BITS_52) && KASAN_SW_TAGS 401 default 0xefffc00000000000 if ARM64_VA_BITS_47 && KASAN_SW_TAGS 402 default 0xeffffe0000000000 if ARM64_VA_BITS_42 && KASAN_SW_TAGS 403 default 0xefffffc000000000 if ARM64_VA_BITS_39 && KASAN_SW_TAGS 404 default 0xeffffff800000000 if ARM64_VA_BITS_36 && KASAN_SW_TAGS 405 default 0xffffffffffffffff 406 407config UNWIND_TABLES 408 bool 409 410source "arch/arm64/Kconfig.platforms" 411 412menu "Kernel Features" 413 414menu "ARM errata workarounds via the alternatives framework" 415 416config ARM64_WORKAROUND_CLEAN_CACHE 417 bool 418 419config ARM64_ERRATUM_826319 420 bool "Cortex-A53: 826319: System might deadlock if a write cannot complete until read data is accepted" 421 default y 422 select ARM64_WORKAROUND_CLEAN_CACHE 423 help 424 This option adds an alternative code sequence to work around ARM 425 erratum 826319 on Cortex-A53 parts up to r0p2 with an AMBA 4 ACE or 426 AXI master interface and an L2 cache. 427 428 If a Cortex-A53 uses an AMBA AXI4 ACE interface to other processors 429 and is unable to accept a certain write via this interface, it will 430 not progress on read data presented on the read data channel and the 431 system can deadlock. 432 433 The workaround promotes data cache clean instructions to 434 data cache clean-and-invalidate. 435 Please note that this does not necessarily enable the workaround, 436 as it depends on the alternative framework, which will only patch 437 the kernel if an affected CPU is detected. 438 439 If unsure, say Y. 440 441config ARM64_ERRATUM_827319 442 bool "Cortex-A53: 827319: Data cache clean instructions might cause overlapping transactions to the interconnect" 443 default y 444 select ARM64_WORKAROUND_CLEAN_CACHE 445 help 446 This option adds an alternative code sequence to work around ARM 447 erratum 827319 on Cortex-A53 parts up to r0p2 with an AMBA 5 CHI 448 master interface and an L2 cache. 449 450 Under certain conditions this erratum can cause a clean line eviction 451 to occur at the same time as another transaction to the same address 452 on the AMBA 5 CHI interface, which can cause data corruption if the 453 interconnect reorders the two transactions. 454 455 The workaround promotes data cache clean instructions to 456 data cache clean-and-invalidate. 457 Please note that this does not necessarily enable the workaround, 458 as it depends on the alternative framework, which will only patch 459 the kernel if an affected CPU is detected. 460 461 If unsure, say Y. 462 463config ARM64_ERRATUM_824069 464 bool "Cortex-A53: 824069: Cache line might not be marked as clean after a CleanShared snoop" 465 default y 466 select ARM64_WORKAROUND_CLEAN_CACHE 467 help 468 This option adds an alternative code sequence to work around ARM 469 erratum 824069 on Cortex-A53 parts up to r0p2 when it is connected 470 to a coherent interconnect. 471 472 If a Cortex-A53 processor is executing a store or prefetch for 473 write instruction at the same time as a processor in another 474 cluster is executing a cache maintenance operation to the same 475 address, then this erratum might cause a clean cache line to be 476 incorrectly marked as dirty. 477 478 The workaround promotes data cache clean instructions to 479 data cache clean-and-invalidate. 480 Please note that this option does not necessarily enable the 481 workaround, as it depends on the alternative framework, which will 482 only patch the kernel if an affected CPU is detected. 483 484 If unsure, say Y. 485 486config ARM64_ERRATUM_819472 487 bool "Cortex-A53: 819472: Store exclusive instructions might cause data corruption" 488 default y 489 select ARM64_WORKAROUND_CLEAN_CACHE 490 help 491 This option adds an alternative code sequence to work around ARM 492 erratum 819472 on Cortex-A53 parts up to r0p1 with an L2 cache 493 present when it is connected to a coherent interconnect. 494 495 If the processor is executing a load and store exclusive sequence at 496 the same time as a processor in another cluster is executing a cache 497 maintenance operation to the same address, then this erratum might 498 cause data corruption. 499 500 The workaround promotes data cache clean instructions to 501 data cache clean-and-invalidate. 502 Please note that this does not necessarily enable the workaround, 503 as it depends on the alternative framework, which will only patch 504 the kernel if an affected CPU is detected. 505 506 If unsure, say Y. 507 508config ARM64_ERRATUM_832075 509 bool "Cortex-A57: 832075: possible deadlock on mixing exclusive memory accesses with device loads" 510 default y 511 help 512 This option adds an alternative code sequence to work around ARM 513 erratum 832075 on Cortex-A57 parts up to r1p2. 514 515 Affected Cortex-A57 parts might deadlock when exclusive load/store 516 instructions to Write-Back memory are mixed with Device loads. 517 518 The workaround is to promote device loads to use Load-Acquire 519 semantics. 520 Please note that this does not necessarily enable the workaround, 521 as it depends on the alternative framework, which will only patch 522 the kernel if an affected CPU is detected. 523 524 If unsure, say Y. 525 526config ARM64_ERRATUM_834220 527 bool "Cortex-A57: 834220: Stage 2 translation fault might be incorrectly reported in presence of a Stage 1 fault" 528 depends on KVM 529 default y 530 help 531 This option adds an alternative code sequence to work around ARM 532 erratum 834220 on Cortex-A57 parts up to r1p2. 533 534 Affected Cortex-A57 parts might report a Stage 2 translation 535 fault as the result of a Stage 1 fault for load crossing a 536 page boundary when there is a permission or device memory 537 alignment fault at Stage 1 and a translation fault at Stage 2. 538 539 The workaround is to verify that the Stage 1 translation 540 doesn't generate a fault before handling the Stage 2 fault. 541 Please note that this does not necessarily enable the workaround, 542 as it depends on the alternative framework, which will only patch 543 the kernel if an affected CPU is detected. 544 545 If unsure, say Y. 546 547config ARM64_ERRATUM_1742098 548 bool "Cortex-A57/A72: 1742098: ELR recorded incorrectly on interrupt taken between cryptographic instructions in a sequence" 549 depends on COMPAT 550 default y 551 help 552 This option removes the AES hwcap for aarch32 user-space to 553 workaround erratum 1742098 on Cortex-A57 and Cortex-A72. 554 555 Affected parts may corrupt the AES state if an interrupt is 556 taken between a pair of AES instructions. These instructions 557 are only present if the cryptography extensions are present. 558 All software should have a fallback implementation for CPUs 559 that don't implement the cryptography extensions. 560 561 If unsure, say Y. 562 563config ARM64_ERRATUM_845719 564 bool "Cortex-A53: 845719: a load might read incorrect data" 565 depends on COMPAT 566 default y 567 help 568 This option adds an alternative code sequence to work around ARM 569 erratum 845719 on Cortex-A53 parts up to r0p4. 570 571 When running a compat (AArch32) userspace on an affected Cortex-A53 572 part, a load at EL0 from a virtual address that matches the bottom 32 573 bits of the virtual address used by a recent load at (AArch64) EL1 574 might return incorrect data. 575 576 The workaround is to write the contextidr_el1 register on exception 577 return to a 32-bit task. 578 Please note that this does not necessarily enable the workaround, 579 as it depends on the alternative framework, which will only patch 580 the kernel if an affected CPU is detected. 581 582 If unsure, say Y. 583 584config ARM64_ERRATUM_843419 585 bool "Cortex-A53: 843419: A load or store might access an incorrect address" 586 default y 587 help 588 This option links the kernel with '--fix-cortex-a53-843419' and 589 enables PLT support to replace certain ADRP instructions, which can 590 cause subsequent memory accesses to use an incorrect address on 591 Cortex-A53 parts up to r0p4. 592 593 If unsure, say Y. 594 595config ARM64_LD_HAS_FIX_ERRATUM_843419 596 def_bool $(ld-option,--fix-cortex-a53-843419) 597 598config ARM64_ERRATUM_1024718 599 bool "Cortex-A55: 1024718: Update of DBM/AP bits without break before make might result in incorrect update" 600 default y 601 help 602 This option adds a workaround for ARM Cortex-A55 Erratum 1024718. 603 604 Affected Cortex-A55 cores (all revisions) could cause incorrect 605 update of the hardware dirty bit when the DBM/AP bits are updated 606 without a break-before-make. The workaround is to disable the usage 607 of hardware DBM locally on the affected cores. CPUs not affected by 608 this erratum will continue to use the feature. 609 610 If unsure, say Y. 611 612config ARM64_ERRATUM_1418040 613 bool "Cortex-A76/Neoverse-N1: MRC read following MRRC read of specific Generic Timer in AArch32 might give incorrect result" 614 default y 615 depends on COMPAT 616 help 617 This option adds a workaround for ARM Cortex-A76/Neoverse-N1 618 errata 1188873 and 1418040. 619 620 Affected Cortex-A76/Neoverse-N1 cores (r0p0 to r3p1) could 621 cause register corruption when accessing the timer registers 622 from AArch32 userspace. 623 624 If unsure, say Y. 625 626config ARM64_WORKAROUND_SPECULATIVE_AT 627 bool 628 629config ARM64_ERRATUM_1165522 630 bool "Cortex-A76: 1165522: Speculative AT instruction using out-of-context translation regime could cause subsequent request to generate an incorrect translation" 631 default y 632 select ARM64_WORKAROUND_SPECULATIVE_AT 633 help 634 This option adds a workaround for ARM Cortex-A76 erratum 1165522. 635 636 Affected Cortex-A76 cores (r0p0, r1p0, r2p0) could end-up with 637 corrupted TLBs by speculating an AT instruction during a guest 638 context switch. 639 640 If unsure, say Y. 641 642config ARM64_ERRATUM_1319367 643 bool "Cortex-A57/A72: 1319537: Speculative AT instruction using out-of-context translation regime could cause subsequent request to generate an incorrect translation" 644 default y 645 select ARM64_WORKAROUND_SPECULATIVE_AT 646 help 647 This option adds work arounds for ARM Cortex-A57 erratum 1319537 648 and A72 erratum 1319367 649 650 Cortex-A57 and A72 cores could end-up with corrupted TLBs by 651 speculating an AT instruction during a guest context switch. 652 653 If unsure, say Y. 654 655config ARM64_ERRATUM_1530923 656 bool "Cortex-A55: 1530923: Speculative AT instruction using out-of-context translation regime could cause subsequent request to generate an incorrect translation" 657 default y 658 select ARM64_WORKAROUND_SPECULATIVE_AT 659 help 660 This option adds a workaround for ARM Cortex-A55 erratum 1530923. 661 662 Affected Cortex-A55 cores (r0p0, r0p1, r1p0, r2p0) could end-up with 663 corrupted TLBs by speculating an AT instruction during a guest 664 context switch. 665 666 If unsure, say Y. 667 668config ARM64_WORKAROUND_REPEAT_TLBI 669 bool 670 671config ARM64_ERRATUM_2441007 672 bool "Cortex-A55: Completion of affected memory accesses might not be guaranteed by completion of a TLBI" 673 default y 674 select ARM64_WORKAROUND_REPEAT_TLBI 675 help 676 This option adds a workaround for ARM Cortex-A55 erratum #2441007. 677 678 Under very rare circumstances, affected Cortex-A55 CPUs 679 may not handle a race between a break-before-make sequence on one 680 CPU, and another CPU accessing the same page. This could allow a 681 store to a page that has been unmapped. 682 683 Work around this by adding the affected CPUs to the list that needs 684 TLB sequences to be done twice. 685 686 If unsure, say Y. 687 688config ARM64_ERRATUM_1286807 689 bool "Cortex-A76: Modification of the translation table for a virtual address might lead to read-after-read ordering violation" 690 default y 691 select ARM64_WORKAROUND_REPEAT_TLBI 692 help 693 This option adds a workaround for ARM Cortex-A76 erratum 1286807. 694 695 On the affected Cortex-A76 cores (r0p0 to r3p0), if a virtual 696 address for a cacheable mapping of a location is being 697 accessed by a core while another core is remapping the virtual 698 address to a new physical page using the recommended 699 break-before-make sequence, then under very rare circumstances 700 TLBI+DSB completes before a read using the translation being 701 invalidated has been observed by other observers. The 702 workaround repeats the TLBI+DSB operation. 703 704config ARM64_ERRATUM_1463225 705 bool "Cortex-A76: Software Step might prevent interrupt recognition" 706 default y 707 help 708 This option adds a workaround for Arm Cortex-A76 erratum 1463225. 709 710 On the affected Cortex-A76 cores (r0p0 to r3p1), software stepping 711 of a system call instruction (SVC) can prevent recognition of 712 subsequent interrupts when software stepping is disabled in the 713 exception handler of the system call and either kernel debugging 714 is enabled or VHE is in use. 715 716 Work around the erratum by triggering a dummy step exception 717 when handling a system call from a task that is being stepped 718 in a VHE configuration of the kernel. 719 720 If unsure, say Y. 721 722config ARM64_ERRATUM_1542419 723 bool "Neoverse-N1: workaround mis-ordering of instruction fetches" 724 default y 725 help 726 This option adds a workaround for ARM Neoverse-N1 erratum 727 1542419. 728 729 Affected Neoverse-N1 cores could execute a stale instruction when 730 modified by another CPU. The workaround depends on a firmware 731 counterpart. 732 733 Workaround the issue by hiding the DIC feature from EL0. This 734 forces user-space to perform cache maintenance. 735 736 If unsure, say Y. 737 738config ARM64_ERRATUM_1508412 739 bool "Cortex-A77: 1508412: workaround deadlock on sequence of NC/Device load and store exclusive or PAR read" 740 default y 741 help 742 This option adds a workaround for Arm Cortex-A77 erratum 1508412. 743 744 Affected Cortex-A77 cores (r0p0, r1p0) could deadlock on a sequence 745 of a store-exclusive or read of PAR_EL1 and a load with device or 746 non-cacheable memory attributes. The workaround depends on a firmware 747 counterpart. 748 749 KVM guests must also have the workaround implemented or they can 750 deadlock the system. 751 752 Work around the issue by inserting DMB SY barriers around PAR_EL1 753 register reads and warning KVM users. The DMB barrier is sufficient 754 to prevent a speculative PAR_EL1 read. 755 756 If unsure, say Y. 757 758config ARM64_WORKAROUND_TRBE_OVERWRITE_FILL_MODE 759 bool 760 761config ARM64_ERRATUM_2051678 762 bool "Cortex-A510: 2051678: disable Hardware Update of the page table dirty bit" 763 default y 764 help 765 This options adds the workaround for ARM Cortex-A510 erratum ARM64_ERRATUM_2051678. 766 Affected Cortex-A510 might not respect the ordering rules for 767 hardware update of the page table's dirty bit. The workaround 768 is to not enable the feature on affected CPUs. 769 770 If unsure, say Y. 771 772config ARM64_ERRATUM_2077057 773 bool "Cortex-A510: 2077057: workaround software-step corrupting SPSR_EL2" 774 default y 775 help 776 This option adds the workaround for ARM Cortex-A510 erratum 2077057. 777 Affected Cortex-A510 may corrupt SPSR_EL2 when the a step exception is 778 expected, but a Pointer Authentication trap is taken instead. The 779 erratum causes SPSR_EL1 to be copied to SPSR_EL2, which could allow 780 EL1 to cause a return to EL2 with a guest controlled ELR_EL2. 781 782 This can only happen when EL2 is stepping EL1. 783 784 When these conditions occur, the SPSR_EL2 value is unchanged from the 785 previous guest entry, and can be restored from the in-memory copy. 786 787 If unsure, say Y. 788 789config ARM64_ERRATUM_2658417 790 bool "Cortex-A510: 2658417: remove BF16 support due to incorrect result" 791 default y 792 help 793 This option adds the workaround for ARM Cortex-A510 erratum 2658417. 794 Affected Cortex-A510 (r0p0 to r1p1) may produce the wrong result for 795 BFMMLA or VMMLA instructions in rare circumstances when a pair of 796 A510 CPUs are using shared neon hardware. As the sharing is not 797 discoverable by the kernel, hide the BF16 HWCAP to indicate that 798 user-space should not be using these instructions. 799 800 If unsure, say Y. 801 802config ARM64_ERRATUM_2119858 803 bool "Cortex-A710/X2: 2119858: workaround TRBE overwriting trace data in FILL mode" 804 default y 805 depends on CORESIGHT_TRBE 806 select ARM64_WORKAROUND_TRBE_OVERWRITE_FILL_MODE 807 help 808 This option adds the workaround for ARM Cortex-A710/X2 erratum 2119858. 809 810 Affected Cortex-A710/X2 cores could overwrite up to 3 cache lines of trace 811 data at the base of the buffer (pointed to by TRBASER_EL1) in FILL mode in 812 the event of a WRAP event. 813 814 Work around the issue by always making sure we move the TRBPTR_EL1 by 815 256 bytes before enabling the buffer and filling the first 256 bytes of 816 the buffer with ETM ignore packets upon disabling. 817 818 If unsure, say Y. 819 820config ARM64_ERRATUM_2139208 821 bool "Neoverse-N2: 2139208: workaround TRBE overwriting trace data in FILL mode" 822 default y 823 depends on CORESIGHT_TRBE 824 select ARM64_WORKAROUND_TRBE_OVERWRITE_FILL_MODE 825 help 826 This option adds the workaround for ARM Neoverse-N2 erratum 2139208. 827 828 Affected Neoverse-N2 cores could overwrite up to 3 cache lines of trace 829 data at the base of the buffer (pointed to by TRBASER_EL1) in FILL mode in 830 the event of a WRAP event. 831 832 Work around the issue by always making sure we move the TRBPTR_EL1 by 833 256 bytes before enabling the buffer and filling the first 256 bytes of 834 the buffer with ETM ignore packets upon disabling. 835 836 If unsure, say Y. 837 838config ARM64_WORKAROUND_TSB_FLUSH_FAILURE 839 bool 840 841config ARM64_ERRATUM_2054223 842 bool "Cortex-A710: 2054223: workaround TSB instruction failing to flush trace" 843 default y 844 select ARM64_WORKAROUND_TSB_FLUSH_FAILURE 845 help 846 Enable workaround for ARM Cortex-A710 erratum 2054223 847 848 Affected cores may fail to flush the trace data on a TSB instruction, when 849 the PE is in trace prohibited state. This will cause losing a few bytes 850 of the trace cached. 851 852 Workaround is to issue two TSB consecutively on affected cores. 853 854 If unsure, say Y. 855 856config ARM64_ERRATUM_2067961 857 bool "Neoverse-N2: 2067961: workaround TSB instruction failing to flush trace" 858 default y 859 select ARM64_WORKAROUND_TSB_FLUSH_FAILURE 860 help 861 Enable workaround for ARM Neoverse-N2 erratum 2067961 862 863 Affected cores may fail to flush the trace data on a TSB instruction, when 864 the PE is in trace prohibited state. This will cause losing a few bytes 865 of the trace cached. 866 867 Workaround is to issue two TSB consecutively on affected cores. 868 869 If unsure, say Y. 870 871config ARM64_WORKAROUND_TRBE_WRITE_OUT_OF_RANGE 872 bool 873 874config ARM64_ERRATUM_2253138 875 bool "Neoverse-N2: 2253138: workaround TRBE writing to address out-of-range" 876 depends on CORESIGHT_TRBE 877 default y 878 select ARM64_WORKAROUND_TRBE_WRITE_OUT_OF_RANGE 879 help 880 This option adds the workaround for ARM Neoverse-N2 erratum 2253138. 881 882 Affected Neoverse-N2 cores might write to an out-of-range address, not reserved 883 for TRBE. Under some conditions, the TRBE might generate a write to the next 884 virtually addressed page following the last page of the TRBE address space 885 (i.e., the TRBLIMITR_EL1.LIMIT), instead of wrapping around to the base. 886 887 Work around this in the driver by always making sure that there is a 888 page beyond the TRBLIMITR_EL1.LIMIT, within the space allowed for the TRBE. 889 890 If unsure, say Y. 891 892config ARM64_ERRATUM_2224489 893 bool "Cortex-A710/X2: 2224489: workaround TRBE writing to address out-of-range" 894 depends on CORESIGHT_TRBE 895 default y 896 select ARM64_WORKAROUND_TRBE_WRITE_OUT_OF_RANGE 897 help 898 This option adds the workaround for ARM Cortex-A710/X2 erratum 2224489. 899 900 Affected Cortex-A710/X2 cores might write to an out-of-range address, not reserved 901 for TRBE. Under some conditions, the TRBE might generate a write to the next 902 virtually addressed page following the last page of the TRBE address space 903 (i.e., the TRBLIMITR_EL1.LIMIT), instead of wrapping around to the base. 904 905 Work around this in the driver by always making sure that there is a 906 page beyond the TRBLIMITR_EL1.LIMIT, within the space allowed for the TRBE. 907 908 If unsure, say Y. 909 910config ARM64_ERRATUM_2441009 911 bool "Cortex-A510: Completion of affected memory accesses might not be guaranteed by completion of a TLBI" 912 default y 913 select ARM64_WORKAROUND_REPEAT_TLBI 914 help 915 This option adds a workaround for ARM Cortex-A510 erratum #2441009. 916 917 Under very rare circumstances, affected Cortex-A510 CPUs 918 may not handle a race between a break-before-make sequence on one 919 CPU, and another CPU accessing the same page. This could allow a 920 store to a page that has been unmapped. 921 922 Work around this by adding the affected CPUs to the list that needs 923 TLB sequences to be done twice. 924 925 If unsure, say Y. 926 927config ARM64_ERRATUM_2064142 928 bool "Cortex-A510: 2064142: workaround TRBE register writes while disabled" 929 depends on CORESIGHT_TRBE 930 default y 931 help 932 This option adds the workaround for ARM Cortex-A510 erratum 2064142. 933 934 Affected Cortex-A510 core might fail to write into system registers after the 935 TRBE has been disabled. Under some conditions after the TRBE has been disabled 936 writes into TRBE registers TRBLIMITR_EL1, TRBPTR_EL1, TRBBASER_EL1, TRBSR_EL1, 937 and TRBTRG_EL1 will be ignored and will not be effected. 938 939 Work around this in the driver by executing TSB CSYNC and DSB after collection 940 is stopped and before performing a system register write to one of the affected 941 registers. 942 943 If unsure, say Y. 944 945config ARM64_ERRATUM_2038923 946 bool "Cortex-A510: 2038923: workaround TRBE corruption with enable" 947 depends on CORESIGHT_TRBE 948 default y 949 help 950 This option adds the workaround for ARM Cortex-A510 erratum 2038923. 951 952 Affected Cortex-A510 core might cause an inconsistent view on whether trace is 953 prohibited within the CPU. As a result, the trace buffer or trace buffer state 954 might be corrupted. This happens after TRBE buffer has been enabled by setting 955 TRBLIMITR_EL1.E, followed by just a single context synchronization event before 956 execution changes from a context, in which trace is prohibited to one where it 957 isn't, or vice versa. In these mentioned conditions, the view of whether trace 958 is prohibited is inconsistent between parts of the CPU, and the trace buffer or 959 the trace buffer state might be corrupted. 960 961 Work around this in the driver by preventing an inconsistent view of whether the 962 trace is prohibited or not based on TRBLIMITR_EL1.E by immediately following a 963 change to TRBLIMITR_EL1.E with at least one ISB instruction before an ERET, or 964 two ISB instructions if no ERET is to take place. 965 966 If unsure, say Y. 967 968config ARM64_ERRATUM_1902691 969 bool "Cortex-A510: 1902691: workaround TRBE trace corruption" 970 depends on CORESIGHT_TRBE 971 default y 972 help 973 This option adds the workaround for ARM Cortex-A510 erratum 1902691. 974 975 Affected Cortex-A510 core might cause trace data corruption, when being written 976 into the memory. Effectively TRBE is broken and hence cannot be used to capture 977 trace data. 978 979 Work around this problem in the driver by just preventing TRBE initialization on 980 affected cpus. The firmware must have disabled the access to TRBE for the kernel 981 on such implementations. This will cover the kernel for any firmware that doesn't 982 do this already. 983 984 If unsure, say Y. 985 986config ARM64_ERRATUM_2457168 987 bool "Cortex-A510: 2457168: workaround for AMEVCNTR01 incrementing incorrectly" 988 depends on ARM64_AMU_EXTN 989 default y 990 help 991 This option adds the workaround for ARM Cortex-A510 erratum 2457168. 992 993 The AMU counter AMEVCNTR01 (constant counter) should increment at the same rate 994 as the system counter. On affected Cortex-A510 cores AMEVCNTR01 increments 995 incorrectly giving a significantly higher output value. 996 997 Work around this problem by returning 0 when reading the affected counter in 998 key locations that results in disabling all users of this counter. This effect 999 is the same to firmware disabling affected counters. 1000 1001 If unsure, say Y. 1002 1003config ARM64_ERRATUM_2645198 1004 bool "Cortex-A715: 2645198: Workaround possible [ESR|FAR]_ELx corruption" 1005 default y 1006 help 1007 This option adds the workaround for ARM Cortex-A715 erratum 2645198. 1008 1009 If a Cortex-A715 cpu sees a page mapping permissions change from executable 1010 to non-executable, it may corrupt the ESR_ELx and FAR_ELx registers on the 1011 next instruction abort caused by permission fault. 1012 1013 Only user-space does executable to non-executable permission transition via 1014 mprotect() system call. Workaround the problem by doing a break-before-make 1015 TLB invalidation, for all changes to executable user space mappings. 1016 1017 If unsure, say Y. 1018 1019config CAVIUM_ERRATUM_22375 1020 bool "Cavium erratum 22375, 24313" 1021 default y 1022 help 1023 Enable workaround for errata 22375 and 24313. 1024 1025 This implements two gicv3-its errata workarounds for ThunderX. Both 1026 with a small impact affecting only ITS table allocation. 1027 1028 erratum 22375: only alloc 8MB table size 1029 erratum 24313: ignore memory access type 1030 1031 The fixes are in ITS initialization and basically ignore memory access 1032 type and table size provided by the TYPER and BASER registers. 1033 1034 If unsure, say Y. 1035 1036config CAVIUM_ERRATUM_23144 1037 bool "Cavium erratum 23144: ITS SYNC hang on dual socket system" 1038 depends on NUMA 1039 default y 1040 help 1041 ITS SYNC command hang for cross node io and collections/cpu mapping. 1042 1043 If unsure, say Y. 1044 1045config CAVIUM_ERRATUM_23154 1046 bool "Cavium errata 23154 and 38545: GICv3 lacks HW synchronisation" 1047 default y 1048 help 1049 The ThunderX GICv3 implementation requires a modified version for 1050 reading the IAR status to ensure data synchronization 1051 (access to icc_iar1_el1 is not sync'ed before and after). 1052 1053 It also suffers from erratum 38545 (also present on Marvell's 1054 OcteonTX and OcteonTX2), resulting in deactivated interrupts being 1055 spuriously presented to the CPU interface. 1056 1057 If unsure, say Y. 1058 1059config CAVIUM_ERRATUM_27456 1060 bool "Cavium erratum 27456: Broadcast TLBI instructions may cause icache corruption" 1061 default y 1062 help 1063 On ThunderX T88 pass 1.x through 2.1 parts, broadcast TLBI 1064 instructions may cause the icache to become corrupted if it 1065 contains data for a non-current ASID. The fix is to 1066 invalidate the icache when changing the mm context. 1067 1068 If unsure, say Y. 1069 1070config CAVIUM_ERRATUM_30115 1071 bool "Cavium erratum 30115: Guest may disable interrupts in host" 1072 default y 1073 help 1074 On ThunderX T88 pass 1.x through 2.2, T81 pass 1.0 through 1075 1.2, and T83 Pass 1.0, KVM guest execution may disable 1076 interrupts in host. Trapping both GICv3 group-0 and group-1 1077 accesses sidesteps the issue. 1078 1079 If unsure, say Y. 1080 1081config CAVIUM_TX2_ERRATUM_219 1082 bool "Cavium ThunderX2 erratum 219: PRFM between TTBR change and ISB fails" 1083 default y 1084 help 1085 On Cavium ThunderX2, a load, store or prefetch instruction between a 1086 TTBR update and the corresponding context synchronizing operation can 1087 cause a spurious Data Abort to be delivered to any hardware thread in 1088 the CPU core. 1089 1090 Work around the issue by avoiding the problematic code sequence and 1091 trapping KVM guest TTBRx_EL1 writes to EL2 when SMT is enabled. The 1092 trap handler performs the corresponding register access, skips the 1093 instruction and ensures context synchronization by virtue of the 1094 exception return. 1095 1096 If unsure, say Y. 1097 1098config FUJITSU_ERRATUM_010001 1099 bool "Fujitsu-A64FX erratum E#010001: Undefined fault may occur wrongly" 1100 default y 1101 help 1102 This option adds a workaround for Fujitsu-A64FX erratum E#010001. 1103 On some variants of the Fujitsu-A64FX cores ver(1.0, 1.1), memory 1104 accesses may cause undefined fault (Data abort, DFSC=0b111111). 1105 This fault occurs under a specific hardware condition when a 1106 load/store instruction performs an address translation using: 1107 case-1 TTBR0_EL1 with TCR_EL1.NFD0 == 1. 1108 case-2 TTBR0_EL2 with TCR_EL2.NFD0 == 1. 1109 case-3 TTBR1_EL1 with TCR_EL1.NFD1 == 1. 1110 case-4 TTBR1_EL2 with TCR_EL2.NFD1 == 1. 1111 1112 The workaround is to ensure these bits are clear in TCR_ELx. 1113 The workaround only affects the Fujitsu-A64FX. 1114 1115 If unsure, say Y. 1116 1117config HISILICON_ERRATUM_161600802 1118 bool "Hip07 161600802: Erroneous redistributor VLPI base" 1119 default y 1120 help 1121 The HiSilicon Hip07 SoC uses the wrong redistributor base 1122 when issued ITS commands such as VMOVP and VMAPP, and requires 1123 a 128kB offset to be applied to the target address in this commands. 1124 1125 If unsure, say Y. 1126 1127config QCOM_FALKOR_ERRATUM_1003 1128 bool "Falkor E1003: Incorrect translation due to ASID change" 1129 default y 1130 help 1131 On Falkor v1, an incorrect ASID may be cached in the TLB when ASID 1132 and BADDR are changed together in TTBRx_EL1. Since we keep the ASID 1133 in TTBR1_EL1, this situation only occurs in the entry trampoline and 1134 then only for entries in the walk cache, since the leaf translation 1135 is unchanged. Work around the erratum by invalidating the walk cache 1136 entries for the trampoline before entering the kernel proper. 1137 1138config QCOM_FALKOR_ERRATUM_1009 1139 bool "Falkor E1009: Prematurely complete a DSB after a TLBI" 1140 default y 1141 select ARM64_WORKAROUND_REPEAT_TLBI 1142 help 1143 On Falkor v1, the CPU may prematurely complete a DSB following a 1144 TLBI xxIS invalidate maintenance operation. Repeat the TLBI operation 1145 one more time to fix the issue. 1146 1147 If unsure, say Y. 1148 1149config QCOM_QDF2400_ERRATUM_0065 1150 bool "QDF2400 E0065: Incorrect GITS_TYPER.ITT_Entry_size" 1151 default y 1152 help 1153 On Qualcomm Datacenter Technologies QDF2400 SoC, ITS hardware reports 1154 ITE size incorrectly. The GITS_TYPER.ITT_Entry_size field should have 1155 been indicated as 16Bytes (0xf), not 8Bytes (0x7). 1156 1157 If unsure, say Y. 1158 1159config QCOM_FALKOR_ERRATUM_E1041 1160 bool "Falkor E1041: Speculative instruction fetches might cause errant memory access" 1161 default y 1162 help 1163 Falkor CPU may speculatively fetch instructions from an improper 1164 memory location when MMU translation is changed from SCTLR_ELn[M]=1 1165 to SCTLR_ELn[M]=0. Prefix an ISB instruction to fix the problem. 1166 1167 If unsure, say Y. 1168 1169config NVIDIA_CARMEL_CNP_ERRATUM 1170 bool "NVIDIA Carmel CNP: CNP on Carmel semantically different than ARM cores" 1171 default y 1172 help 1173 If CNP is enabled on Carmel cores, non-sharable TLBIs on a core will not 1174 invalidate shared TLB entries installed by a different core, as it would 1175 on standard ARM cores. 1176 1177 If unsure, say Y. 1178 1179config ROCKCHIP_ERRATUM_3588001 1180 bool "Rockchip 3588001: GIC600 can not support shareability attributes" 1181 default y 1182 help 1183 The Rockchip RK3588 GIC600 SoC integration does not support ACE/ACE-lite. 1184 This means, that its sharability feature may not be used, even though it 1185 is supported by the IP itself. 1186 1187 If unsure, say Y. 1188 1189config SOCIONEXT_SYNQUACER_PREITS 1190 bool "Socionext Synquacer: Workaround for GICv3 pre-ITS" 1191 default y 1192 help 1193 Socionext Synquacer SoCs implement a separate h/w block to generate 1194 MSI doorbell writes with non-zero values for the device ID. 1195 1196 If unsure, say Y. 1197 1198endmenu # "ARM errata workarounds via the alternatives framework" 1199 1200choice 1201 prompt "Page size" 1202 default ARM64_4K_PAGES 1203 help 1204 Page size (translation granule) configuration. 1205 1206config ARM64_4K_PAGES 1207 bool "4KB" 1208 help 1209 This feature enables 4KB pages support. 1210 1211config ARM64_16K_PAGES 1212 bool "16KB" 1213 help 1214 The system will use 16KB pages support. AArch32 emulation 1215 requires applications compiled with 16K (or a multiple of 16K) 1216 aligned segments. 1217 1218config ARM64_64K_PAGES 1219 bool "64KB" 1220 help 1221 This feature enables 64KB pages support (4KB by default) 1222 allowing only two levels of page tables and faster TLB 1223 look-up. AArch32 emulation requires applications compiled 1224 with 64K aligned segments. 1225 1226endchoice 1227 1228choice 1229 prompt "Virtual address space size" 1230 default ARM64_VA_BITS_39 if ARM64_4K_PAGES 1231 default ARM64_VA_BITS_47 if ARM64_16K_PAGES 1232 default ARM64_VA_BITS_42 if ARM64_64K_PAGES 1233 help 1234 Allows choosing one of multiple possible virtual address 1235 space sizes. The level of translation table is determined by 1236 a combination of page size and virtual address space size. 1237 1238config ARM64_VA_BITS_36 1239 bool "36-bit" if EXPERT 1240 depends on ARM64_16K_PAGES 1241 1242config ARM64_VA_BITS_39 1243 bool "39-bit" 1244 depends on ARM64_4K_PAGES 1245 1246config ARM64_VA_BITS_42 1247 bool "42-bit" 1248 depends on ARM64_64K_PAGES 1249 1250config ARM64_VA_BITS_47 1251 bool "47-bit" 1252 depends on ARM64_16K_PAGES 1253 1254config ARM64_VA_BITS_48 1255 bool "48-bit" 1256 1257config ARM64_VA_BITS_52 1258 bool "52-bit" 1259 depends on ARM64_64K_PAGES && (ARM64_PAN || !ARM64_SW_TTBR0_PAN) 1260 help 1261 Enable 52-bit virtual addressing for userspace when explicitly 1262 requested via a hint to mmap(). The kernel will also use 52-bit 1263 virtual addresses for its own mappings (provided HW support for 1264 this feature is available, otherwise it reverts to 48-bit). 1265 1266 NOTE: Enabling 52-bit virtual addressing in conjunction with 1267 ARMv8.3 Pointer Authentication will result in the PAC being 1268 reduced from 7 bits to 3 bits, which may have a significant 1269 impact on its susceptibility to brute-force attacks. 1270 1271 If unsure, select 48-bit virtual addressing instead. 1272 1273endchoice 1274 1275config ARM64_FORCE_52BIT 1276 bool "Force 52-bit virtual addresses for userspace" 1277 depends on ARM64_VA_BITS_52 && EXPERT 1278 help 1279 For systems with 52-bit userspace VAs enabled, the kernel will attempt 1280 to maintain compatibility with older software by providing 48-bit VAs 1281 unless a hint is supplied to mmap. 1282 1283 This configuration option disables the 48-bit compatibility logic, and 1284 forces all userspace addresses to be 52-bit on HW that supports it. One 1285 should only enable this configuration option for stress testing userspace 1286 memory management code. If unsure say N here. 1287 1288config ARM64_VA_BITS 1289 int 1290 default 36 if ARM64_VA_BITS_36 1291 default 39 if ARM64_VA_BITS_39 1292 default 42 if ARM64_VA_BITS_42 1293 default 47 if ARM64_VA_BITS_47 1294 default 48 if ARM64_VA_BITS_48 1295 default 52 if ARM64_VA_BITS_52 1296 1297choice 1298 prompt "Physical address space size" 1299 default ARM64_PA_BITS_48 1300 help 1301 Choose the maximum physical address range that the kernel will 1302 support. 1303 1304config ARM64_PA_BITS_48 1305 bool "48-bit" 1306 1307config ARM64_PA_BITS_52 1308 bool "52-bit (ARMv8.2)" 1309 depends on ARM64_64K_PAGES 1310 depends on ARM64_PAN || !ARM64_SW_TTBR0_PAN 1311 help 1312 Enable support for a 52-bit physical address space, introduced as 1313 part of the ARMv8.2-LPA extension. 1314 1315 With this enabled, the kernel will also continue to work on CPUs that 1316 do not support ARMv8.2-LPA, but with some added memory overhead (and 1317 minor performance overhead). 1318 1319endchoice 1320 1321config ARM64_PA_BITS 1322 int 1323 default 48 if ARM64_PA_BITS_48 1324 default 52 if ARM64_PA_BITS_52 1325 1326choice 1327 prompt "Endianness" 1328 default CPU_LITTLE_ENDIAN 1329 help 1330 Select the endianness of data accesses performed by the CPU. Userspace 1331 applications will need to be compiled and linked for the endianness 1332 that is selected here. 1333 1334config CPU_BIG_ENDIAN 1335 bool "Build big-endian kernel" 1336 depends on !LD_IS_LLD || LLD_VERSION >= 130000 1337 help 1338 Say Y if you plan on running a kernel with a big-endian userspace. 1339 1340config CPU_LITTLE_ENDIAN 1341 bool "Build little-endian kernel" 1342 help 1343 Say Y if you plan on running a kernel with a little-endian userspace. 1344 This is usually the case for distributions targeting arm64. 1345 1346endchoice 1347 1348config SCHED_MC 1349 bool "Multi-core scheduler support" 1350 help 1351 Multi-core scheduler support improves the CPU scheduler's decision 1352 making when dealing with multi-core CPU chips at a cost of slightly 1353 increased overhead in some places. If unsure say N here. 1354 1355config SCHED_CLUSTER 1356 bool "Cluster scheduler support" 1357 help 1358 Cluster scheduler support improves the CPU scheduler's decision 1359 making when dealing with machines that have clusters of CPUs. 1360 Cluster usually means a couple of CPUs which are placed closely 1361 by sharing mid-level caches, last-level cache tags or internal 1362 busses. 1363 1364config SCHED_SMT 1365 bool "SMT scheduler support" 1366 help 1367 Improves the CPU scheduler's decision making when dealing with 1368 MultiThreading at a cost of slightly increased overhead in some 1369 places. If unsure say N here. 1370 1371config NR_CPUS 1372 int "Maximum number of CPUs (2-4096)" 1373 range 2 4096 1374 default "256" 1375 1376config HOTPLUG_CPU 1377 bool "Support for hot-pluggable CPUs" 1378 select GENERIC_IRQ_MIGRATION 1379 help 1380 Say Y here to experiment with turning CPUs off and on. CPUs 1381 can be controlled through /sys/devices/system/cpu. 1382 1383# Common NUMA Features 1384config NUMA 1385 bool "NUMA Memory Allocation and Scheduler Support" 1386 select GENERIC_ARCH_NUMA 1387 select ACPI_NUMA if ACPI 1388 select OF_NUMA 1389 select HAVE_SETUP_PER_CPU_AREA 1390 select NEED_PER_CPU_EMBED_FIRST_CHUNK 1391 select NEED_PER_CPU_PAGE_FIRST_CHUNK 1392 select USE_PERCPU_NUMA_NODE_ID 1393 help 1394 Enable NUMA (Non-Uniform Memory Access) support. 1395 1396 The kernel will try to allocate memory used by a CPU on the 1397 local memory of the CPU and add some more 1398 NUMA awareness to the kernel. 1399 1400config NODES_SHIFT 1401 int "Maximum NUMA Nodes (as a power of 2)" 1402 range 1 10 1403 default "4" 1404 depends on NUMA 1405 help 1406 Specify the maximum number of NUMA Nodes available on the target 1407 system. Increases memory reserved to accommodate various tables. 1408 1409source "kernel/Kconfig.hz" 1410 1411config ARCH_SPARSEMEM_ENABLE 1412 def_bool y 1413 select SPARSEMEM_VMEMMAP_ENABLE 1414 select SPARSEMEM_VMEMMAP 1415 1416config HW_PERF_EVENTS 1417 def_bool y 1418 depends on ARM_PMU 1419 1420# Supported by clang >= 7.0 or GCC >= 12.0.0 1421config CC_HAVE_SHADOW_CALL_STACK 1422 def_bool $(cc-option, -fsanitize=shadow-call-stack -ffixed-x18) 1423 1424config PARAVIRT 1425 bool "Enable paravirtualization code" 1426 help 1427 This changes the kernel so it can modify itself when it is run 1428 under a hypervisor, potentially improving performance significantly 1429 over full virtualization. 1430 1431config PARAVIRT_TIME_ACCOUNTING 1432 bool "Paravirtual steal time accounting" 1433 select PARAVIRT 1434 help 1435 Select this option to enable fine granularity task steal time 1436 accounting. Time spent executing other tasks in parallel with 1437 the current vCPU is discounted from the vCPU power. To account for 1438 that, there can be a small performance impact. 1439 1440 If in doubt, say N here. 1441 1442config KEXEC 1443 depends on PM_SLEEP_SMP 1444 select KEXEC_CORE 1445 bool "kexec system call" 1446 help 1447 kexec is a system call that implements the ability to shutdown your 1448 current kernel, and to start another kernel. It is like a reboot 1449 but it is independent of the system firmware. And like a reboot 1450 you can start any kernel with it, not just Linux. 1451 1452config KEXEC_FILE 1453 bool "kexec file based system call" 1454 select KEXEC_CORE 1455 select HAVE_IMA_KEXEC if IMA 1456 help 1457 This is new version of kexec system call. This system call is 1458 file based and takes file descriptors as system call argument 1459 for kernel and initramfs as opposed to list of segments as 1460 accepted by previous system call. 1461 1462config KEXEC_SIG 1463 bool "Verify kernel signature during kexec_file_load() syscall" 1464 depends on KEXEC_FILE 1465 help 1466 Select this option to verify a signature with loaded kernel 1467 image. If configured, any attempt of loading a image without 1468 valid signature will fail. 1469 1470 In addition to that option, you need to enable signature 1471 verification for the corresponding kernel image type being 1472 loaded in order for this to work. 1473 1474config KEXEC_IMAGE_VERIFY_SIG 1475 bool "Enable Image signature verification support" 1476 default y 1477 depends on KEXEC_SIG 1478 depends on EFI && SIGNED_PE_FILE_VERIFICATION 1479 help 1480 Enable Image signature verification support. 1481 1482comment "Support for PE file signature verification disabled" 1483 depends on KEXEC_SIG 1484 depends on !EFI || !SIGNED_PE_FILE_VERIFICATION 1485 1486config CRASH_DUMP 1487 bool "Build kdump crash kernel" 1488 help 1489 Generate crash dump after being started by kexec. This should 1490 be normally only set in special crash dump kernels which are 1491 loaded in the main kernel with kexec-tools into a specially 1492 reserved region and then later executed after a crash by 1493 kdump/kexec. 1494 1495 For more details see Documentation/admin-guide/kdump/kdump.rst 1496 1497config TRANS_TABLE 1498 def_bool y 1499 depends on HIBERNATION || KEXEC_CORE 1500 1501config XEN_DOM0 1502 def_bool y 1503 depends on XEN 1504 1505config XEN 1506 bool "Xen guest support on ARM64" 1507 depends on ARM64 && OF 1508 select SWIOTLB_XEN 1509 select PARAVIRT 1510 help 1511 Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64. 1512 1513# include/linux/mmzone.h requires the following to be true: 1514# 1515# MAX_ORDER + PAGE_SHIFT <= SECTION_SIZE_BITS 1516# 1517# so the maximum value of MAX_ORDER is SECTION_SIZE_BITS - PAGE_SHIFT: 1518# 1519# | SECTION_SIZE_BITS | PAGE_SHIFT | max MAX_ORDER | default MAX_ORDER | 1520# ----+-------------------+--------------+-----------------+--------------------+ 1521# 4K | 27 | 12 | 15 | 10 | 1522# 16K | 27 | 14 | 13 | 11 | 1523# 64K | 29 | 16 | 13 | 13 | 1524config ARCH_FORCE_MAX_ORDER 1525 int 1526 default "13" if ARM64_64K_PAGES 1527 default "11" if ARM64_16K_PAGES 1528 default "10" 1529 help 1530 The kernel page allocator limits the size of maximal physically 1531 contiguous allocations. The limit is called MAX_ORDER and it 1532 defines the maximal power of two of number of pages that can be 1533 allocated as a single contiguous block. This option allows 1534 overriding the default setting when ability to allocate very 1535 large blocks of physically contiguous memory is required. 1536 1537 The maximal size of allocation cannot exceed the size of the 1538 section, so the value of MAX_ORDER should satisfy 1539 1540 MAX_ORDER + PAGE_SHIFT <= SECTION_SIZE_BITS 1541 1542 Don't change if unsure. 1543 1544config UNMAP_KERNEL_AT_EL0 1545 bool "Unmap kernel when running in userspace (aka \"KAISER\")" if EXPERT 1546 default y 1547 help 1548 Speculation attacks against some high-performance processors can 1549 be used to bypass MMU permission checks and leak kernel data to 1550 userspace. This can be defended against by unmapping the kernel 1551 when running in userspace, mapping it back in on exception entry 1552 via a trampoline page in the vector table. 1553 1554 If unsure, say Y. 1555 1556config MITIGATE_SPECTRE_BRANCH_HISTORY 1557 bool "Mitigate Spectre style attacks against branch history" if EXPERT 1558 default y 1559 help 1560 Speculation attacks against some high-performance processors can 1561 make use of branch history to influence future speculation. 1562 When taking an exception from user-space, a sequence of branches 1563 or a firmware call overwrites the branch history. 1564 1565config RODATA_FULL_DEFAULT_ENABLED 1566 bool "Apply r/o permissions of VM areas also to their linear aliases" 1567 default y 1568 help 1569 Apply read-only attributes of VM areas to the linear alias of 1570 the backing pages as well. This prevents code or read-only data 1571 from being modified (inadvertently or intentionally) via another 1572 mapping of the same memory page. This additional enhancement can 1573 be turned off at runtime by passing rodata=[off|on] (and turned on 1574 with rodata=full if this option is set to 'n') 1575 1576 This requires the linear region to be mapped down to pages, 1577 which may adversely affect performance in some cases. 1578 1579config ARM64_SW_TTBR0_PAN 1580 bool "Emulate Privileged Access Never using TTBR0_EL1 switching" 1581 help 1582 Enabling this option prevents the kernel from accessing 1583 user-space memory directly by pointing TTBR0_EL1 to a reserved 1584 zeroed area and reserved ASID. The user access routines 1585 restore the valid TTBR0_EL1 temporarily. 1586 1587config ARM64_TAGGED_ADDR_ABI 1588 bool "Enable the tagged user addresses syscall ABI" 1589 default y 1590 help 1591 When this option is enabled, user applications can opt in to a 1592 relaxed ABI via prctl() allowing tagged addresses to be passed 1593 to system calls as pointer arguments. For details, see 1594 Documentation/arch/arm64/tagged-address-abi.rst. 1595 1596menuconfig COMPAT 1597 bool "Kernel support for 32-bit EL0" 1598 depends on ARM64_4K_PAGES || EXPERT 1599 select HAVE_UID16 1600 select OLD_SIGSUSPEND3 1601 select COMPAT_OLD_SIGACTION 1602 help 1603 This option enables support for a 32-bit EL0 running under a 64-bit 1604 kernel at EL1. AArch32-specific components such as system calls, 1605 the user helper functions, VFP support and the ptrace interface are 1606 handled appropriately by the kernel. 1607 1608 If you use a page size other than 4KB (i.e, 16KB or 64KB), please be aware 1609 that you will only be able to execute AArch32 binaries that were compiled 1610 with page size aligned segments. 1611 1612 If you want to execute 32-bit userspace applications, say Y. 1613 1614if COMPAT 1615 1616config KUSER_HELPERS 1617 bool "Enable kuser helpers page for 32-bit applications" 1618 default y 1619 help 1620 Warning: disabling this option may break 32-bit user programs. 1621 1622 Provide kuser helpers to compat tasks. The kernel provides 1623 helper code to userspace in read only form at a fixed location 1624 to allow userspace to be independent of the CPU type fitted to 1625 the system. This permits binaries to be run on ARMv4 through 1626 to ARMv8 without modification. 1627 1628 See Documentation/arch/arm/kernel_user_helpers.rst for details. 1629 1630 However, the fixed address nature of these helpers can be used 1631 by ROP (return orientated programming) authors when creating 1632 exploits. 1633 1634 If all of the binaries and libraries which run on your platform 1635 are built specifically for your platform, and make no use of 1636 these helpers, then you can turn this option off to hinder 1637 such exploits. However, in that case, if a binary or library 1638 relying on those helpers is run, it will not function correctly. 1639 1640 Say N here only if you are absolutely certain that you do not 1641 need these helpers; otherwise, the safe option is to say Y. 1642 1643config COMPAT_VDSO 1644 bool "Enable vDSO for 32-bit applications" 1645 depends on !CPU_BIG_ENDIAN 1646 depends on (CC_IS_CLANG && LD_IS_LLD) || "$(CROSS_COMPILE_COMPAT)" != "" 1647 select GENERIC_COMPAT_VDSO 1648 default y 1649 help 1650 Place in the process address space of 32-bit applications an 1651 ELF shared object providing fast implementations of gettimeofday 1652 and clock_gettime. 1653 1654 You must have a 32-bit build of glibc 2.22 or later for programs 1655 to seamlessly take advantage of this. 1656 1657config THUMB2_COMPAT_VDSO 1658 bool "Compile the 32-bit vDSO for Thumb-2 mode" if EXPERT 1659 depends on COMPAT_VDSO 1660 default y 1661 help 1662 Compile the compat vDSO with '-mthumb -fomit-frame-pointer' if y, 1663 otherwise with '-marm'. 1664 1665config COMPAT_ALIGNMENT_FIXUPS 1666 bool "Fix up misaligned multi-word loads and stores in user space" 1667 1668menuconfig ARMV8_DEPRECATED 1669 bool "Emulate deprecated/obsolete ARMv8 instructions" 1670 depends on SYSCTL 1671 help 1672 Legacy software support may require certain instructions 1673 that have been deprecated or obsoleted in the architecture. 1674 1675 Enable this config to enable selective emulation of these 1676 features. 1677 1678 If unsure, say Y 1679 1680if ARMV8_DEPRECATED 1681 1682config SWP_EMULATION 1683 bool "Emulate SWP/SWPB instructions" 1684 help 1685 ARMv8 obsoletes the use of A32 SWP/SWPB instructions such that 1686 they are always undefined. Say Y here to enable software 1687 emulation of these instructions for userspace using LDXR/STXR. 1688 This feature can be controlled at runtime with the abi.swp 1689 sysctl which is disabled by default. 1690 1691 In some older versions of glibc [<=2.8] SWP is used during futex 1692 trylock() operations with the assumption that the code will not 1693 be preempted. This invalid assumption may be more likely to fail 1694 with SWP emulation enabled, leading to deadlock of the user 1695 application. 1696 1697 NOTE: when accessing uncached shared regions, LDXR/STXR rely 1698 on an external transaction monitoring block called a global 1699 monitor to maintain update atomicity. If your system does not 1700 implement a global monitor, this option can cause programs that 1701 perform SWP operations to uncached memory to deadlock. 1702 1703 If unsure, say Y 1704 1705config CP15_BARRIER_EMULATION 1706 bool "Emulate CP15 Barrier instructions" 1707 help 1708 The CP15 barrier instructions - CP15ISB, CP15DSB, and 1709 CP15DMB - are deprecated in ARMv8 (and ARMv7). It is 1710 strongly recommended to use the ISB, DSB, and DMB 1711 instructions instead. 1712 1713 Say Y here to enable software emulation of these 1714 instructions for AArch32 userspace code. When this option is 1715 enabled, CP15 barrier usage is traced which can help 1716 identify software that needs updating. This feature can be 1717 controlled at runtime with the abi.cp15_barrier sysctl. 1718 1719 If unsure, say Y 1720 1721config SETEND_EMULATION 1722 bool "Emulate SETEND instruction" 1723 help 1724 The SETEND instruction alters the data-endianness of the 1725 AArch32 EL0, and is deprecated in ARMv8. 1726 1727 Say Y here to enable software emulation of the instruction 1728 for AArch32 userspace code. This feature can be controlled 1729 at runtime with the abi.setend sysctl. 1730 1731 Note: All the cpus on the system must have mixed endian support at EL0 1732 for this feature to be enabled. If a new CPU - which doesn't support mixed 1733 endian - is hotplugged in after this feature has been enabled, there could 1734 be unexpected results in the applications. 1735 1736 If unsure, say Y 1737endif # ARMV8_DEPRECATED 1738 1739endif # COMPAT 1740 1741menu "ARMv8.1 architectural features" 1742 1743config ARM64_HW_AFDBM 1744 bool "Support for hardware updates of the Access and Dirty page flags" 1745 default y 1746 help 1747 The ARMv8.1 architecture extensions introduce support for 1748 hardware updates of the access and dirty information in page 1749 table entries. When enabled in TCR_EL1 (HA and HD bits) on 1750 capable processors, accesses to pages with PTE_AF cleared will 1751 set this bit instead of raising an access flag fault. 1752 Similarly, writes to read-only pages with the DBM bit set will 1753 clear the read-only bit (AP[2]) instead of raising a 1754 permission fault. 1755 1756 Kernels built with this configuration option enabled continue 1757 to work on pre-ARMv8.1 hardware and the performance impact is 1758 minimal. If unsure, say Y. 1759 1760config ARM64_PAN 1761 bool "Enable support for Privileged Access Never (PAN)" 1762 default y 1763 help 1764 Privileged Access Never (PAN; part of the ARMv8.1 Extensions) 1765 prevents the kernel or hypervisor from accessing user-space (EL0) 1766 memory directly. 1767 1768 Choosing this option will cause any unprotected (not using 1769 copy_to_user et al) memory access to fail with a permission fault. 1770 1771 The feature is detected at runtime, and will remain as a 'nop' 1772 instruction if the cpu does not implement the feature. 1773 1774config AS_HAS_LDAPR 1775 def_bool $(as-instr,.arch_extension rcpc) 1776 1777config AS_HAS_LSE_ATOMICS 1778 def_bool $(as-instr,.arch_extension lse) 1779 1780config ARM64_LSE_ATOMICS 1781 bool 1782 default ARM64_USE_LSE_ATOMICS 1783 depends on AS_HAS_LSE_ATOMICS 1784 1785config ARM64_USE_LSE_ATOMICS 1786 bool "Atomic instructions" 1787 default y 1788 help 1789 As part of the Large System Extensions, ARMv8.1 introduces new 1790 atomic instructions that are designed specifically to scale in 1791 very large systems. 1792 1793 Say Y here to make use of these instructions for the in-kernel 1794 atomic routines. This incurs a small overhead on CPUs that do 1795 not support these instructions and requires the kernel to be 1796 built with binutils >= 2.25 in order for the new instructions 1797 to be used. 1798 1799endmenu # "ARMv8.1 architectural features" 1800 1801menu "ARMv8.2 architectural features" 1802 1803config AS_HAS_ARMV8_2 1804 def_bool $(cc-option,-Wa$(comma)-march=armv8.2-a) 1805 1806config AS_HAS_SHA3 1807 def_bool $(as-instr,.arch armv8.2-a+sha3) 1808 1809config ARM64_PMEM 1810 bool "Enable support for persistent memory" 1811 select ARCH_HAS_PMEM_API 1812 select ARCH_HAS_UACCESS_FLUSHCACHE 1813 help 1814 Say Y to enable support for the persistent memory API based on the 1815 ARMv8.2 DCPoP feature. 1816 1817 The feature is detected at runtime, and the kernel will use DC CVAC 1818 operations if DC CVAP is not supported (following the behaviour of 1819 DC CVAP itself if the system does not define a point of persistence). 1820 1821config ARM64_RAS_EXTN 1822 bool "Enable support for RAS CPU Extensions" 1823 default y 1824 help 1825 CPUs that support the Reliability, Availability and Serviceability 1826 (RAS) Extensions, part of ARMv8.2 are able to track faults and 1827 errors, classify them and report them to software. 1828 1829 On CPUs with these extensions system software can use additional 1830 barriers to determine if faults are pending and read the 1831 classification from a new set of registers. 1832 1833 Selecting this feature will allow the kernel to use these barriers 1834 and access the new registers if the system supports the extension. 1835 Platform RAS features may additionally depend on firmware support. 1836 1837config ARM64_CNP 1838 bool "Enable support for Common Not Private (CNP) translations" 1839 default y 1840 depends on ARM64_PAN || !ARM64_SW_TTBR0_PAN 1841 help 1842 Common Not Private (CNP) allows translation table entries to 1843 be shared between different PEs in the same inner shareable 1844 domain, so the hardware can use this fact to optimise the 1845 caching of such entries in the TLB. 1846 1847 Selecting this option allows the CNP feature to be detected 1848 at runtime, and does not affect PEs that do not implement 1849 this feature. 1850 1851endmenu # "ARMv8.2 architectural features" 1852 1853menu "ARMv8.3 architectural features" 1854 1855config ARM64_PTR_AUTH 1856 bool "Enable support for pointer authentication" 1857 default y 1858 help 1859 Pointer authentication (part of the ARMv8.3 Extensions) provides 1860 instructions for signing and authenticating pointers against secret 1861 keys, which can be used to mitigate Return Oriented Programming (ROP) 1862 and other attacks. 1863 1864 This option enables these instructions at EL0 (i.e. for userspace). 1865 Choosing this option will cause the kernel to initialise secret keys 1866 for each process at exec() time, with these keys being 1867 context-switched along with the process. 1868 1869 The feature is detected at runtime. If the feature is not present in 1870 hardware it will not be advertised to userspace/KVM guest nor will it 1871 be enabled. 1872 1873 If the feature is present on the boot CPU but not on a late CPU, then 1874 the late CPU will be parked. Also, if the boot CPU does not have 1875 address auth and the late CPU has then the late CPU will still boot 1876 but with the feature disabled. On such a system, this option should 1877 not be selected. 1878 1879config ARM64_PTR_AUTH_KERNEL 1880 bool "Use pointer authentication for kernel" 1881 default y 1882 depends on ARM64_PTR_AUTH 1883 depends on (CC_HAS_SIGN_RETURN_ADDRESS || CC_HAS_BRANCH_PROT_PAC_RET) && AS_HAS_ARMV8_3 1884 # Modern compilers insert a .note.gnu.property section note for PAC 1885 # which is only understood by binutils starting with version 2.33.1. 1886 depends on LD_IS_LLD || LD_VERSION >= 23301 || (CC_IS_GCC && GCC_VERSION < 90100) 1887 depends on !CC_IS_CLANG || AS_HAS_CFI_NEGATE_RA_STATE 1888 depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_ARGS) 1889 help 1890 If the compiler supports the -mbranch-protection or 1891 -msign-return-address flag (e.g. GCC 7 or later), then this option 1892 will cause the kernel itself to be compiled with return address 1893 protection. In this case, and if the target hardware is known to 1894 support pointer authentication, then CONFIG_STACKPROTECTOR can be 1895 disabled with minimal loss of protection. 1896 1897 This feature works with FUNCTION_GRAPH_TRACER option only if 1898 DYNAMIC_FTRACE_WITH_ARGS is enabled. 1899 1900config CC_HAS_BRANCH_PROT_PAC_RET 1901 # GCC 9 or later, clang 8 or later 1902 def_bool $(cc-option,-mbranch-protection=pac-ret+leaf) 1903 1904config CC_HAS_SIGN_RETURN_ADDRESS 1905 # GCC 7, 8 1906 def_bool $(cc-option,-msign-return-address=all) 1907 1908config AS_HAS_ARMV8_3 1909 def_bool $(cc-option,-Wa$(comma)-march=armv8.3-a) 1910 1911config AS_HAS_CFI_NEGATE_RA_STATE 1912 def_bool $(as-instr,.cfi_startproc\n.cfi_negate_ra_state\n.cfi_endproc\n) 1913 1914endmenu # "ARMv8.3 architectural features" 1915 1916menu "ARMv8.4 architectural features" 1917 1918config ARM64_AMU_EXTN 1919 bool "Enable support for the Activity Monitors Unit CPU extension" 1920 default y 1921 help 1922 The activity monitors extension is an optional extension introduced 1923 by the ARMv8.4 CPU architecture. This enables support for version 1 1924 of the activity monitors architecture, AMUv1. 1925 1926 To enable the use of this extension on CPUs that implement it, say Y. 1927 1928 Note that for architectural reasons, firmware _must_ implement AMU 1929 support when running on CPUs that present the activity monitors 1930 extension. The required support is present in: 1931 * Version 1.5 and later of the ARM Trusted Firmware 1932 1933 For kernels that have this configuration enabled but boot with broken 1934 firmware, you may need to say N here until the firmware is fixed. 1935 Otherwise you may experience firmware panics or lockups when 1936 accessing the counter registers. Even if you are not observing these 1937 symptoms, the values returned by the register reads might not 1938 correctly reflect reality. Most commonly, the value read will be 0, 1939 indicating that the counter is not enabled. 1940 1941config AS_HAS_ARMV8_4 1942 def_bool $(cc-option,-Wa$(comma)-march=armv8.4-a) 1943 1944config ARM64_TLB_RANGE 1945 bool "Enable support for tlbi range feature" 1946 default y 1947 depends on AS_HAS_ARMV8_4 1948 help 1949 ARMv8.4-TLBI provides TLBI invalidation instruction that apply to a 1950 range of input addresses. 1951 1952 The feature introduces new assembly instructions, and they were 1953 support when binutils >= 2.30. 1954 1955endmenu # "ARMv8.4 architectural features" 1956 1957menu "ARMv8.5 architectural features" 1958 1959config AS_HAS_ARMV8_5 1960 def_bool $(cc-option,-Wa$(comma)-march=armv8.5-a) 1961 1962config ARM64_BTI 1963 bool "Branch Target Identification support" 1964 default y 1965 help 1966 Branch Target Identification (part of the ARMv8.5 Extensions) 1967 provides a mechanism to limit the set of locations to which computed 1968 branch instructions such as BR or BLR can jump. 1969 1970 To make use of BTI on CPUs that support it, say Y. 1971 1972 BTI is intended to provide complementary protection to other control 1973 flow integrity protection mechanisms, such as the Pointer 1974 authentication mechanism provided as part of the ARMv8.3 Extensions. 1975 For this reason, it does not make sense to enable this option without 1976 also enabling support for pointer authentication. Thus, when 1977 enabling this option you should also select ARM64_PTR_AUTH=y. 1978 1979 Userspace binaries must also be specifically compiled to make use of 1980 this mechanism. If you say N here or the hardware does not support 1981 BTI, such binaries can still run, but you get no additional 1982 enforcement of branch destinations. 1983 1984config ARM64_BTI_KERNEL 1985 bool "Use Branch Target Identification for kernel" 1986 default y 1987 depends on ARM64_BTI 1988 depends on ARM64_PTR_AUTH_KERNEL 1989 depends on CC_HAS_BRANCH_PROT_PAC_RET_BTI 1990 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94697 1991 depends on !CC_IS_GCC || GCC_VERSION >= 100100 1992 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106671 1993 depends on !CC_IS_GCC 1994 # https://github.com/llvm/llvm-project/commit/a88c722e687e6780dcd6a58718350dc76fcc4cc9 1995 depends on !CC_IS_CLANG || CLANG_VERSION >= 120000 1996 depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_ARGS) 1997 help 1998 Build the kernel with Branch Target Identification annotations 1999 and enable enforcement of this for kernel code. When this option 2000 is enabled and the system supports BTI all kernel code including 2001 modular code must have BTI enabled. 2002 2003config CC_HAS_BRANCH_PROT_PAC_RET_BTI 2004 # GCC 9 or later, clang 8 or later 2005 def_bool $(cc-option,-mbranch-protection=pac-ret+leaf+bti) 2006 2007config ARM64_E0PD 2008 bool "Enable support for E0PD" 2009 default y 2010 help 2011 E0PD (part of the ARMv8.5 extensions) allows us to ensure 2012 that EL0 accesses made via TTBR1 always fault in constant time, 2013 providing similar benefits to KASLR as those provided by KPTI, but 2014 with lower overhead and without disrupting legitimate access to 2015 kernel memory such as SPE. 2016 2017 This option enables E0PD for TTBR1 where available. 2018 2019config ARM64_AS_HAS_MTE 2020 # Initial support for MTE went in binutils 2.32.0, checked with 2021 # ".arch armv8.5-a+memtag" below. However, this was incomplete 2022 # as a late addition to the final architecture spec (LDGM/STGM) 2023 # is only supported in the newer 2.32.x and 2.33 binutils 2024 # versions, hence the extra "stgm" instruction check below. 2025 def_bool $(as-instr,.arch armv8.5-a+memtag\nstgm xzr$(comma)[x0]) 2026 2027config ARM64_MTE 2028 bool "Memory Tagging Extension support" 2029 default y 2030 depends on ARM64_AS_HAS_MTE && ARM64_TAGGED_ADDR_ABI 2031 depends on AS_HAS_ARMV8_5 2032 depends on AS_HAS_LSE_ATOMICS 2033 # Required for tag checking in the uaccess routines 2034 depends on ARM64_PAN 2035 select ARCH_HAS_SUBPAGE_FAULTS 2036 select ARCH_USES_HIGH_VMA_FLAGS 2037 select ARCH_USES_PG_ARCH_X 2038 help 2039 Memory Tagging (part of the ARMv8.5 Extensions) provides 2040 architectural support for run-time, always-on detection of 2041 various classes of memory error to aid with software debugging 2042 to eliminate vulnerabilities arising from memory-unsafe 2043 languages. 2044 2045 This option enables the support for the Memory Tagging 2046 Extension at EL0 (i.e. for userspace). 2047 2048 Selecting this option allows the feature to be detected at 2049 runtime. Any secondary CPU not implementing this feature will 2050 not be allowed a late bring-up. 2051 2052 Userspace binaries that want to use this feature must 2053 explicitly opt in. The mechanism for the userspace is 2054 described in: 2055 2056 Documentation/arch/arm64/memory-tagging-extension.rst. 2057 2058endmenu # "ARMv8.5 architectural features" 2059 2060menu "ARMv8.7 architectural features" 2061 2062config ARM64_EPAN 2063 bool "Enable support for Enhanced Privileged Access Never (EPAN)" 2064 default y 2065 depends on ARM64_PAN 2066 help 2067 Enhanced Privileged Access Never (EPAN) allows Privileged 2068 Access Never to be used with Execute-only mappings. 2069 2070 The feature is detected at runtime, and will remain disabled 2071 if the cpu does not implement the feature. 2072endmenu # "ARMv8.7 architectural features" 2073 2074config ARM64_SVE 2075 bool "ARM Scalable Vector Extension support" 2076 default y 2077 help 2078 The Scalable Vector Extension (SVE) is an extension to the AArch64 2079 execution state which complements and extends the SIMD functionality 2080 of the base architecture to support much larger vectors and to enable 2081 additional vectorisation opportunities. 2082 2083 To enable use of this extension on CPUs that implement it, say Y. 2084 2085 On CPUs that support the SVE2 extensions, this option will enable 2086 those too. 2087 2088 Note that for architectural reasons, firmware _must_ implement SVE 2089 support when running on SVE capable hardware. The required support 2090 is present in: 2091 2092 * version 1.5 and later of the ARM Trusted Firmware 2093 * the AArch64 boot wrapper since commit 5e1261e08abf 2094 ("bootwrapper: SVE: Enable SVE for EL2 and below"). 2095 2096 For other firmware implementations, consult the firmware documentation 2097 or vendor. 2098 2099 If you need the kernel to boot on SVE-capable hardware with broken 2100 firmware, you may need to say N here until you get your firmware 2101 fixed. Otherwise, you may experience firmware panics or lockups when 2102 booting the kernel. If unsure and you are not observing these 2103 symptoms, you should assume that it is safe to say Y. 2104 2105config ARM64_SME 2106 bool "ARM Scalable Matrix Extension support" 2107 default y 2108 depends on ARM64_SVE 2109 help 2110 The Scalable Matrix Extension (SME) is an extension to the AArch64 2111 execution state which utilises a substantial subset of the SVE 2112 instruction set, together with the addition of new architectural 2113 register state capable of holding two dimensional matrix tiles to 2114 enable various matrix operations. 2115 2116config ARM64_PSEUDO_NMI 2117 bool "Support for NMI-like interrupts" 2118 select ARM_GIC_V3 2119 help 2120 Adds support for mimicking Non-Maskable Interrupts through the use of 2121 GIC interrupt priority. This support requires version 3 or later of 2122 ARM GIC. 2123 2124 This high priority configuration for interrupts needs to be 2125 explicitly enabled by setting the kernel parameter 2126 "irqchip.gicv3_pseudo_nmi" to 1. 2127 2128 If unsure, say N 2129 2130if ARM64_PSEUDO_NMI 2131config ARM64_DEBUG_PRIORITY_MASKING 2132 bool "Debug interrupt priority masking" 2133 help 2134 This adds runtime checks to functions enabling/disabling 2135 interrupts when using priority masking. The additional checks verify 2136 the validity of ICC_PMR_EL1 when calling concerned functions. 2137 2138 If unsure, say N 2139endif # ARM64_PSEUDO_NMI 2140 2141config RELOCATABLE 2142 bool "Build a relocatable kernel image" if EXPERT 2143 select ARCH_HAS_RELR 2144 default y 2145 help 2146 This builds the kernel as a Position Independent Executable (PIE), 2147 which retains all relocation metadata required to relocate the 2148 kernel binary at runtime to a different virtual address than the 2149 address it was linked at. 2150 Since AArch64 uses the RELA relocation format, this requires a 2151 relocation pass at runtime even if the kernel is loaded at the 2152 same address it was linked at. 2153 2154config RANDOMIZE_BASE 2155 bool "Randomize the address of the kernel image" 2156 select RELOCATABLE 2157 help 2158 Randomizes the virtual address at which the kernel image is 2159 loaded, as a security feature that deters exploit attempts 2160 relying on knowledge of the location of kernel internals. 2161 2162 It is the bootloader's job to provide entropy, by passing a 2163 random u64 value in /chosen/kaslr-seed at kernel entry. 2164 2165 When booting via the UEFI stub, it will invoke the firmware's 2166 EFI_RNG_PROTOCOL implementation (if available) to supply entropy 2167 to the kernel proper. In addition, it will randomise the physical 2168 location of the kernel Image as well. 2169 2170 If unsure, say N. 2171 2172config RANDOMIZE_MODULE_REGION_FULL 2173 bool "Randomize the module region over a 2 GB range" 2174 depends on RANDOMIZE_BASE 2175 default y 2176 help 2177 Randomizes the location of the module region inside a 2 GB window 2178 covering the core kernel. This way, it is less likely for modules 2179 to leak information about the location of core kernel data structures 2180 but it does imply that function calls between modules and the core 2181 kernel will need to be resolved via veneers in the module PLT. 2182 2183 When this option is not set, the module region will be randomized over 2184 a limited range that contains the [_stext, _etext] interval of the 2185 core kernel, so branch relocations are almost always in range unless 2186 the region is exhausted. In this particular case of region 2187 exhaustion, modules might be able to fall back to a larger 2GB area. 2188 2189config CC_HAVE_STACKPROTECTOR_SYSREG 2190 def_bool $(cc-option,-mstack-protector-guard=sysreg -mstack-protector-guard-reg=sp_el0 -mstack-protector-guard-offset=0) 2191 2192config STACKPROTECTOR_PER_TASK 2193 def_bool y 2194 depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_SYSREG 2195 2196config UNWIND_PATCH_PAC_INTO_SCS 2197 bool "Enable shadow call stack dynamically using code patching" 2198 # needs Clang with https://reviews.llvm.org/D111780 incorporated 2199 depends on CC_IS_CLANG && CLANG_VERSION >= 150000 2200 depends on ARM64_PTR_AUTH_KERNEL && CC_HAS_BRANCH_PROT_PAC_RET 2201 depends on SHADOW_CALL_STACK 2202 select UNWIND_TABLES 2203 select DYNAMIC_SCS 2204 2205endmenu # "Kernel Features" 2206 2207menu "Boot options" 2208 2209config ARM64_ACPI_PARKING_PROTOCOL 2210 bool "Enable support for the ARM64 ACPI parking protocol" 2211 depends on ACPI 2212 help 2213 Enable support for the ARM64 ACPI parking protocol. If disabled 2214 the kernel will not allow booting through the ARM64 ACPI parking 2215 protocol even if the corresponding data is present in the ACPI 2216 MADT table. 2217 2218config CMDLINE 2219 string "Default kernel command string" 2220 default "" 2221 help 2222 Provide a set of default command-line options at build time by 2223 entering them here. As a minimum, you should specify the the 2224 root device (e.g. root=/dev/nfs). 2225 2226choice 2227 prompt "Kernel command line type" if CMDLINE != "" 2228 default CMDLINE_FROM_BOOTLOADER 2229 help 2230 Choose how the kernel will handle the provided default kernel 2231 command line string. 2232 2233config CMDLINE_FROM_BOOTLOADER 2234 bool "Use bootloader kernel arguments if available" 2235 help 2236 Uses the command-line options passed by the boot loader. If 2237 the boot loader doesn't provide any, the default kernel command 2238 string provided in CMDLINE will be used. 2239 2240config CMDLINE_FORCE 2241 bool "Always use the default kernel command string" 2242 help 2243 Always use the default kernel command string, even if the boot 2244 loader passes other arguments to the kernel. 2245 This is useful if you cannot or don't want to change the 2246 command-line options your boot loader passes to the kernel. 2247 2248endchoice 2249 2250config EFI_STUB 2251 bool 2252 2253config EFI 2254 bool "UEFI runtime support" 2255 depends on OF && !CPU_BIG_ENDIAN 2256 depends on KERNEL_MODE_NEON 2257 select ARCH_SUPPORTS_ACPI 2258 select LIBFDT 2259 select UCS2_STRING 2260 select EFI_PARAMS_FROM_FDT 2261 select EFI_RUNTIME_WRAPPERS 2262 select EFI_STUB 2263 select EFI_GENERIC_STUB 2264 imply IMA_SECURE_AND_OR_TRUSTED_BOOT 2265 default y 2266 help 2267 This option provides support for runtime services provided 2268 by UEFI firmware (such as non-volatile variables, realtime 2269 clock, and platform reset). A UEFI stub is also provided to 2270 allow the kernel to be booted as an EFI application. This 2271 is only useful on systems that have UEFI firmware. 2272 2273config DMI 2274 bool "Enable support for SMBIOS (DMI) tables" 2275 depends on EFI 2276 default y 2277 help 2278 This enables SMBIOS/DMI feature for systems. 2279 2280 This option is only useful on systems that have UEFI firmware. 2281 However, even with this option, the resultant kernel should 2282 continue to boot on existing non-UEFI platforms. 2283 2284endmenu # "Boot options" 2285 2286menu "Power management options" 2287 2288source "kernel/power/Kconfig" 2289 2290config ARCH_HIBERNATION_POSSIBLE 2291 def_bool y 2292 depends on CPU_PM 2293 2294config ARCH_HIBERNATION_HEADER 2295 def_bool y 2296 depends on HIBERNATION 2297 2298config ARCH_SUSPEND_POSSIBLE 2299 def_bool y 2300 2301endmenu # "Power management options" 2302 2303menu "CPU Power Management" 2304 2305source "drivers/cpuidle/Kconfig" 2306 2307source "drivers/cpufreq/Kconfig" 2308 2309endmenu # "CPU Power Management" 2310 2311source "drivers/acpi/Kconfig" 2312 2313source "arch/arm64/kvm/Kconfig" 2314 2315