1config ARM64 2 def_bool y 3 select ACPI_CCA_REQUIRED if ACPI 4 select ACPI_GENERIC_GSI if ACPI 5 select ACPI_REDUCED_HARDWARE_ONLY if ACPI 6 select ARCH_HAS_DEVMEM_IS_ALLOWED 7 select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE 8 select ARCH_HAS_ELF_RANDOMIZE 9 select ARCH_HAS_GCOV_PROFILE_ALL 10 select ARCH_HAS_SG_CHAIN 11 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST 12 select ARCH_USE_CMPXCHG_LOCKREF 13 select ARCH_SUPPORTS_ATOMIC_RMW 14 select ARCH_SUPPORTS_NUMA_BALANCING 15 select ARCH_WANT_OPTIONAL_GPIOLIB 16 select ARCH_WANT_COMPAT_IPC_PARSE_VERSION 17 select ARCH_WANT_FRAME_POINTERS 18 select ARCH_HAS_UBSAN_SANITIZE_ALL 19 select ARM_AMBA 20 select ARM_ARCH_TIMER 21 select ARM_GIC 22 select AUDIT_ARCH_COMPAT_GENERIC 23 select ARM_GIC_V2M if PCI_MSI 24 select ARM_GIC_V3 25 select ARM_GIC_V3_ITS if PCI_MSI 26 select ARM_PSCI_FW 27 select BUILDTIME_EXTABLE_SORT 28 select CLONE_BACKWARDS 29 select COMMON_CLK 30 select CPU_PM if (SUSPEND || CPU_IDLE) 31 select DCACHE_WORD_ACCESS 32 select EDAC_SUPPORT 33 select FRAME_POINTER 34 select GENERIC_ALLOCATOR 35 select GENERIC_CLOCKEVENTS 36 select GENERIC_CLOCKEVENTS_BROADCAST 37 select GENERIC_CPU_AUTOPROBE 38 select GENERIC_EARLY_IOREMAP 39 select GENERIC_IDLE_POLL_SETUP 40 select GENERIC_IRQ_PROBE 41 select GENERIC_IRQ_SHOW 42 select GENERIC_IRQ_SHOW_LEVEL 43 select GENERIC_PCI_IOMAP 44 select GENERIC_SCHED_CLOCK 45 select GENERIC_SMP_IDLE_THREAD 46 select GENERIC_STRNCPY_FROM_USER 47 select GENERIC_STRNLEN_USER 48 select GENERIC_TIME_VSYSCALL 49 select HANDLE_DOMAIN_IRQ 50 select HARDIRQS_SW_RESEND 51 select HAVE_ALIGNED_STRUCT_PAGE if SLUB 52 select HAVE_ARCH_AUDITSYSCALL 53 select HAVE_ARCH_BITREVERSE 54 select HAVE_ARCH_HUGE_VMAP 55 select HAVE_ARCH_JUMP_LABEL 56 select HAVE_ARCH_KASAN if SPARSEMEM_VMEMMAP && !(ARM64_16K_PAGES && ARM64_VA_BITS_48) 57 select HAVE_ARCH_KGDB 58 select HAVE_ARCH_MMAP_RND_BITS 59 select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT 60 select HAVE_ARCH_SECCOMP_FILTER 61 select HAVE_ARCH_TRACEHOOK 62 select HAVE_ARCH_TRANSPARENT_HUGEPAGE 63 select HAVE_ARM_SMCCC 64 select HAVE_EBPF_JIT 65 select HAVE_C_RECORDMCOUNT 66 select HAVE_CC_STACKPROTECTOR 67 select HAVE_CMPXCHG_DOUBLE 68 select HAVE_CMPXCHG_LOCAL 69 select HAVE_CONTEXT_TRACKING 70 select HAVE_DEBUG_BUGVERBOSE 71 select HAVE_DEBUG_KMEMLEAK 72 select HAVE_DMA_API_DEBUG 73 select HAVE_DMA_CONTIGUOUS 74 select HAVE_DYNAMIC_FTRACE 75 select HAVE_EFFICIENT_UNALIGNED_ACCESS 76 select HAVE_FTRACE_MCOUNT_RECORD 77 select HAVE_FUNCTION_TRACER 78 select HAVE_FUNCTION_GRAPH_TRACER 79 select HAVE_GCC_PLUGINS 80 select HAVE_GENERIC_DMA_COHERENT 81 select HAVE_HW_BREAKPOINT if PERF_EVENTS 82 select HAVE_IRQ_TIME_ACCOUNTING 83 select HAVE_MEMBLOCK 84 select HAVE_MEMBLOCK_NODE_MAP if NUMA 85 select HAVE_PATA_PLATFORM 86 select HAVE_PERF_EVENTS 87 select HAVE_PERF_REGS 88 select HAVE_PERF_USER_STACK_DUMP 89 select HAVE_RCU_TABLE_FREE 90 select HAVE_SYSCALL_TRACEPOINTS 91 select IOMMU_DMA if IOMMU_SUPPORT 92 select IRQ_DOMAIN 93 select IRQ_FORCED_THREADING 94 select MODULES_USE_ELF_RELA 95 select NO_BOOTMEM 96 select OF 97 select OF_EARLY_FLATTREE 98 select OF_NUMA if NUMA && OF 99 select OF_RESERVED_MEM 100 select PERF_USE_VMALLOC 101 select POWER_RESET 102 select POWER_SUPPLY 103 select SPARSE_IRQ 104 select SYSCTL_EXCEPTION_TRACE 105 help 106 ARM 64-bit (AArch64) Linux support. 107 108config 64BIT 109 def_bool y 110 111config ARCH_PHYS_ADDR_T_64BIT 112 def_bool y 113 114config MMU 115 def_bool y 116 117config ARCH_MMAP_RND_BITS_MIN 118 default 14 if ARM64_64K_PAGES 119 default 16 if ARM64_16K_PAGES 120 default 18 121 122# max bits determined by the following formula: 123# VA_BITS - PAGE_SHIFT - 3 124config ARCH_MMAP_RND_BITS_MAX 125 default 19 if ARM64_VA_BITS=36 126 default 24 if ARM64_VA_BITS=39 127 default 27 if ARM64_VA_BITS=42 128 default 30 if ARM64_VA_BITS=47 129 default 29 if ARM64_VA_BITS=48 && ARM64_64K_PAGES 130 default 31 if ARM64_VA_BITS=48 && ARM64_16K_PAGES 131 default 33 if ARM64_VA_BITS=48 132 default 14 if ARM64_64K_PAGES 133 default 16 if ARM64_16K_PAGES 134 default 18 135 136config ARCH_MMAP_RND_COMPAT_BITS_MIN 137 default 7 if ARM64_64K_PAGES 138 default 9 if ARM64_16K_PAGES 139 default 11 140 141config ARCH_MMAP_RND_COMPAT_BITS_MAX 142 default 16 143 144config NO_IOPORT_MAP 145 def_bool y if !PCI 146 147config STACKTRACE_SUPPORT 148 def_bool y 149 150config ILLEGAL_POINTER_VALUE 151 hex 152 default 0xdead000000000000 153 154config LOCKDEP_SUPPORT 155 def_bool y 156 157config TRACE_IRQFLAGS_SUPPORT 158 def_bool y 159 160config RWSEM_XCHGADD_ALGORITHM 161 def_bool y 162 163config GENERIC_BUG 164 def_bool y 165 depends on BUG 166 167config GENERIC_BUG_RELATIVE_POINTERS 168 def_bool y 169 depends on GENERIC_BUG 170 171config GENERIC_HWEIGHT 172 def_bool y 173 174config GENERIC_CSUM 175 def_bool y 176 177config GENERIC_CALIBRATE_DELAY 178 def_bool y 179 180config ZONE_DMA 181 def_bool y 182 183config HAVE_GENERIC_RCU_GUP 184 def_bool y 185 186config ARCH_DMA_ADDR_T_64BIT 187 def_bool y 188 189config NEED_DMA_MAP_STATE 190 def_bool y 191 192config NEED_SG_DMA_LENGTH 193 def_bool y 194 195config SMP 196 def_bool y 197 198config SWIOTLB 199 def_bool y 200 201config IOMMU_HELPER 202 def_bool SWIOTLB 203 204config KERNEL_MODE_NEON 205 def_bool y 206 207config FIX_EARLYCON_MEM 208 def_bool y 209 210config PGTABLE_LEVELS 211 int 212 default 2 if ARM64_16K_PAGES && ARM64_VA_BITS_36 213 default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42 214 default 3 if ARM64_64K_PAGES && ARM64_VA_BITS_48 215 default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39 216 default 3 if ARM64_16K_PAGES && ARM64_VA_BITS_47 217 default 4 if !ARM64_64K_PAGES && ARM64_VA_BITS_48 218 219source "init/Kconfig" 220 221source "kernel/Kconfig.freezer" 222 223source "arch/arm64/Kconfig.platforms" 224 225menu "Bus support" 226 227config PCI 228 bool "PCI support" 229 help 230 This feature enables support for PCI bus system. If you say Y 231 here, the kernel will include drivers and infrastructure code 232 to support PCI bus devices. 233 234config PCI_DOMAINS 235 def_bool PCI 236 237config PCI_DOMAINS_GENERIC 238 def_bool PCI 239 240config PCI_SYSCALL 241 def_bool PCI 242 243source "drivers/pci/Kconfig" 244 245endmenu 246 247menu "Kernel Features" 248 249menu "ARM errata workarounds via the alternatives framework" 250 251config ARM64_ERRATUM_826319 252 bool "Cortex-A53: 826319: System might deadlock if a write cannot complete until read data is accepted" 253 default y 254 help 255 This option adds an alternative code sequence to work around ARM 256 erratum 826319 on Cortex-A53 parts up to r0p2 with an AMBA 4 ACE or 257 AXI master interface and an L2 cache. 258 259 If a Cortex-A53 uses an AMBA AXI4 ACE interface to other processors 260 and is unable to accept a certain write via this interface, it will 261 not progress on read data presented on the read data channel and the 262 system can deadlock. 263 264 The workaround promotes data cache clean instructions to 265 data cache clean-and-invalidate. 266 Please note that this does not necessarily enable the workaround, 267 as it depends on the alternative framework, which will only patch 268 the kernel if an affected CPU is detected. 269 270 If unsure, say Y. 271 272config ARM64_ERRATUM_827319 273 bool "Cortex-A53: 827319: Data cache clean instructions might cause overlapping transactions to the interconnect" 274 default y 275 help 276 This option adds an alternative code sequence to work around ARM 277 erratum 827319 on Cortex-A53 parts up to r0p2 with an AMBA 5 CHI 278 master interface and an L2 cache. 279 280 Under certain conditions this erratum can cause a clean line eviction 281 to occur at the same time as another transaction to the same address 282 on the AMBA 5 CHI interface, which can cause data corruption if the 283 interconnect reorders the two transactions. 284 285 The workaround promotes data cache clean instructions to 286 data cache clean-and-invalidate. 287 Please note that this does not necessarily enable the workaround, 288 as it depends on the alternative framework, which will only patch 289 the kernel if an affected CPU is detected. 290 291 If unsure, say Y. 292 293config ARM64_ERRATUM_824069 294 bool "Cortex-A53: 824069: Cache line might not be marked as clean after a CleanShared snoop" 295 default y 296 help 297 This option adds an alternative code sequence to work around ARM 298 erratum 824069 on Cortex-A53 parts up to r0p2 when it is connected 299 to a coherent interconnect. 300 301 If a Cortex-A53 processor is executing a store or prefetch for 302 write instruction at the same time as a processor in another 303 cluster is executing a cache maintenance operation to the same 304 address, then this erratum might cause a clean cache line to be 305 incorrectly marked as dirty. 306 307 The workaround promotes data cache clean instructions to 308 data cache clean-and-invalidate. 309 Please note that this option does not necessarily enable the 310 workaround, as it depends on the alternative framework, which will 311 only patch the kernel if an affected CPU is detected. 312 313 If unsure, say Y. 314 315config ARM64_ERRATUM_819472 316 bool "Cortex-A53: 819472: Store exclusive instructions might cause data corruption" 317 default y 318 help 319 This option adds an alternative code sequence to work around ARM 320 erratum 819472 on Cortex-A53 parts up to r0p1 with an L2 cache 321 present when it is connected to a coherent interconnect. 322 323 If the processor is executing a load and store exclusive sequence at 324 the same time as a processor in another cluster is executing a cache 325 maintenance operation to the same address, then this erratum might 326 cause data corruption. 327 328 The workaround promotes data cache clean instructions to 329 data cache clean-and-invalidate. 330 Please note that this does not necessarily enable the workaround, 331 as it depends on the alternative framework, which will only patch 332 the kernel if an affected CPU is detected. 333 334 If unsure, say Y. 335 336config ARM64_ERRATUM_832075 337 bool "Cortex-A57: 832075: possible deadlock on mixing exclusive memory accesses with device loads" 338 default y 339 help 340 This option adds an alternative code sequence to work around ARM 341 erratum 832075 on Cortex-A57 parts up to r1p2. 342 343 Affected Cortex-A57 parts might deadlock when exclusive load/store 344 instructions to Write-Back memory are mixed with Device loads. 345 346 The workaround is to promote device loads to use Load-Acquire 347 semantics. 348 Please note that this does not necessarily enable the workaround, 349 as it depends on the alternative framework, which will only patch 350 the kernel if an affected CPU is detected. 351 352 If unsure, say Y. 353 354config ARM64_ERRATUM_834220 355 bool "Cortex-A57: 834220: Stage 2 translation fault might be incorrectly reported in presence of a Stage 1 fault" 356 depends on KVM 357 default y 358 help 359 This option adds an alternative code sequence to work around ARM 360 erratum 834220 on Cortex-A57 parts up to r1p2. 361 362 Affected Cortex-A57 parts might report a Stage 2 translation 363 fault as the result of a Stage 1 fault for load crossing a 364 page boundary when there is a permission or device memory 365 alignment fault at Stage 1 and a translation fault at Stage 2. 366 367 The workaround is to verify that the Stage 1 translation 368 doesn't generate a fault before handling the Stage 2 fault. 369 Please note that this does not necessarily enable the workaround, 370 as it depends on the alternative framework, which will only patch 371 the kernel if an affected CPU is detected. 372 373 If unsure, say Y. 374 375config ARM64_ERRATUM_845719 376 bool "Cortex-A53: 845719: a load might read incorrect data" 377 depends on COMPAT 378 default y 379 help 380 This option adds an alternative code sequence to work around ARM 381 erratum 845719 on Cortex-A53 parts up to r0p4. 382 383 When running a compat (AArch32) userspace on an affected Cortex-A53 384 part, a load at EL0 from a virtual address that matches the bottom 32 385 bits of the virtual address used by a recent load at (AArch64) EL1 386 might return incorrect data. 387 388 The workaround is to write the contextidr_el1 register on exception 389 return to a 32-bit task. 390 Please note that this does not necessarily enable the workaround, 391 as it depends on the alternative framework, which will only patch 392 the kernel if an affected CPU is detected. 393 394 If unsure, say Y. 395 396config ARM64_ERRATUM_843419 397 bool "Cortex-A53: 843419: A load or store might access an incorrect address" 398 depends on MODULES 399 default y 400 select ARM64_MODULE_CMODEL_LARGE 401 help 402 This option builds kernel modules using the large memory model in 403 order to avoid the use of the ADRP instruction, which can cause 404 a subsequent memory access to use an incorrect address on Cortex-A53 405 parts up to r0p4. 406 407 Note that the kernel itself must be linked with a version of ld 408 which fixes potentially affected ADRP instructions through the 409 use of veneers. 410 411 If unsure, say Y. 412 413config CAVIUM_ERRATUM_22375 414 bool "Cavium erratum 22375, 24313" 415 default y 416 help 417 Enable workaround for erratum 22375, 24313. 418 419 This implements two gicv3-its errata workarounds for ThunderX. Both 420 with small impact affecting only ITS table allocation. 421 422 erratum 22375: only alloc 8MB table size 423 erratum 24313: ignore memory access type 424 425 The fixes are in ITS initialization and basically ignore memory access 426 type and table size provided by the TYPER and BASER registers. 427 428 If unsure, say Y. 429 430config CAVIUM_ERRATUM_23154 431 bool "Cavium erratum 23154: Access to ICC_IAR1_EL1 is not sync'ed" 432 default y 433 help 434 The gicv3 of ThunderX requires a modified version for 435 reading the IAR status to ensure data synchronization 436 (access to icc_iar1_el1 is not sync'ed before and after). 437 438 If unsure, say Y. 439 440config CAVIUM_ERRATUM_27456 441 bool "Cavium erratum 27456: Broadcast TLBI instructions may cause icache corruption" 442 default y 443 help 444 On ThunderX T88 pass 1.x through 2.1 parts, broadcast TLBI 445 instructions may cause the icache to become corrupted if it 446 contains data for a non-current ASID. The fix is to 447 invalidate the icache when changing the mm context. 448 449 If unsure, say Y. 450 451endmenu 452 453 454choice 455 prompt "Page size" 456 default ARM64_4K_PAGES 457 help 458 Page size (translation granule) configuration. 459 460config ARM64_4K_PAGES 461 bool "4KB" 462 help 463 This feature enables 4KB pages support. 464 465config ARM64_16K_PAGES 466 bool "16KB" 467 help 468 The system will use 16KB pages support. AArch32 emulation 469 requires applications compiled with 16K (or a multiple of 16K) 470 aligned segments. 471 472config ARM64_64K_PAGES 473 bool "64KB" 474 help 475 This feature enables 64KB pages support (4KB by default) 476 allowing only two levels of page tables and faster TLB 477 look-up. AArch32 emulation requires applications compiled 478 with 64K aligned segments. 479 480endchoice 481 482choice 483 prompt "Virtual address space size" 484 default ARM64_VA_BITS_39 if ARM64_4K_PAGES 485 default ARM64_VA_BITS_47 if ARM64_16K_PAGES 486 default ARM64_VA_BITS_42 if ARM64_64K_PAGES 487 help 488 Allows choosing one of multiple possible virtual address 489 space sizes. The level of translation table is determined by 490 a combination of page size and virtual address space size. 491 492config ARM64_VA_BITS_36 493 bool "36-bit" if EXPERT 494 depends on ARM64_16K_PAGES 495 496config ARM64_VA_BITS_39 497 bool "39-bit" 498 depends on ARM64_4K_PAGES 499 500config ARM64_VA_BITS_42 501 bool "42-bit" 502 depends on ARM64_64K_PAGES 503 504config ARM64_VA_BITS_47 505 bool "47-bit" 506 depends on ARM64_16K_PAGES 507 508config ARM64_VA_BITS_48 509 bool "48-bit" 510 511endchoice 512 513config ARM64_VA_BITS 514 int 515 default 36 if ARM64_VA_BITS_36 516 default 39 if ARM64_VA_BITS_39 517 default 42 if ARM64_VA_BITS_42 518 default 47 if ARM64_VA_BITS_47 519 default 48 if ARM64_VA_BITS_48 520 521config CPU_BIG_ENDIAN 522 bool "Build big-endian kernel" 523 help 524 Say Y if you plan on running a kernel in big-endian mode. 525 526config SCHED_MC 527 bool "Multi-core scheduler support" 528 help 529 Multi-core scheduler support improves the CPU scheduler's decision 530 making when dealing with multi-core CPU chips at a cost of slightly 531 increased overhead in some places. If unsure say N here. 532 533config SCHED_SMT 534 bool "SMT scheduler support" 535 help 536 Improves the CPU scheduler's decision making when dealing with 537 MultiThreading at a cost of slightly increased overhead in some 538 places. If unsure say N here. 539 540config NR_CPUS 541 int "Maximum number of CPUs (2-4096)" 542 range 2 4096 543 # These have to remain sorted largest to smallest 544 default "64" 545 546config HOTPLUG_CPU 547 bool "Support for hot-pluggable CPUs" 548 select GENERIC_IRQ_MIGRATION 549 help 550 Say Y here to experiment with turning CPUs off and on. CPUs 551 can be controlled through /sys/devices/system/cpu. 552 553# Common NUMA Features 554config NUMA 555 bool "Numa Memory Allocation and Scheduler Support" 556 depends on SMP 557 help 558 Enable NUMA (Non Uniform Memory Access) support. 559 560 The kernel will try to allocate memory used by a CPU on the 561 local memory of the CPU and add some more 562 NUMA awareness to the kernel. 563 564config NODES_SHIFT 565 int "Maximum NUMA Nodes (as a power of 2)" 566 range 1 10 567 default "2" 568 depends on NEED_MULTIPLE_NODES 569 help 570 Specify the maximum number of NUMA Nodes available on the target 571 system. Increases memory reserved to accommodate various tables. 572 573config USE_PERCPU_NUMA_NODE_ID 574 def_bool y 575 depends on NUMA 576 577source kernel/Kconfig.preempt 578source kernel/Kconfig.hz 579 580config ARCH_SUPPORTS_DEBUG_PAGEALLOC 581 depends on !HIBERNATION 582 def_bool y 583 584config ARCH_HAS_HOLES_MEMORYMODEL 585 def_bool y if SPARSEMEM 586 587config ARCH_SPARSEMEM_ENABLE 588 def_bool y 589 select SPARSEMEM_VMEMMAP_ENABLE 590 591config ARCH_SPARSEMEM_DEFAULT 592 def_bool ARCH_SPARSEMEM_ENABLE 593 594config ARCH_SELECT_MEMORY_MODEL 595 def_bool ARCH_SPARSEMEM_ENABLE 596 597config HAVE_ARCH_PFN_VALID 598 def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM 599 600config HW_PERF_EVENTS 601 def_bool y 602 depends on ARM_PMU 603 604config SYS_SUPPORTS_HUGETLBFS 605 def_bool y 606 607config ARCH_WANT_HUGE_PMD_SHARE 608 def_bool y if ARM64_4K_PAGES || (ARM64_16K_PAGES && !ARM64_VA_BITS_36) 609 610config ARCH_HAS_CACHE_LINE_SIZE 611 def_bool y 612 613source "mm/Kconfig" 614 615config SECCOMP 616 bool "Enable seccomp to safely compute untrusted bytecode" 617 ---help--- 618 This kernel feature is useful for number crunching applications 619 that may need to compute untrusted bytecode during their 620 execution. By using pipes or other transports made available to 621 the process as file descriptors supporting the read/write 622 syscalls, it's possible to isolate those applications in 623 their own address space using seccomp. Once seccomp is 624 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled 625 and the task is only allowed to execute a few safe syscalls 626 defined by each seccomp mode. 627 628config PARAVIRT 629 bool "Enable paravirtualization code" 630 help 631 This changes the kernel so it can modify itself when it is run 632 under a hypervisor, potentially improving performance significantly 633 over full virtualization. 634 635config PARAVIRT_TIME_ACCOUNTING 636 bool "Paravirtual steal time accounting" 637 select PARAVIRT 638 default n 639 help 640 Select this option to enable fine granularity task steal time 641 accounting. Time spent executing other tasks in parallel with 642 the current vCPU is discounted from the vCPU power. To account for 643 that, there can be a small performance impact. 644 645 If in doubt, say N here. 646 647config XEN_DOM0 648 def_bool y 649 depends on XEN 650 651config XEN 652 bool "Xen guest support on ARM64" 653 depends on ARM64 && OF 654 select SWIOTLB_XEN 655 select PARAVIRT 656 help 657 Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64. 658 659config FORCE_MAX_ZONEORDER 660 int 661 default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE) 662 default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE) 663 default "11" 664 help 665 The kernel memory allocator divides physically contiguous memory 666 blocks into "zones", where each zone is a power of two number of 667 pages. This option selects the largest power of two that the kernel 668 keeps in the memory allocator. If you need to allocate very large 669 blocks of physically contiguous memory, then you may need to 670 increase this value. 671 672 This config option is actually maximum order plus one. For example, 673 a value of 11 means that the largest free memory block is 2^10 pages. 674 675 We make sure that we can allocate upto a HugePage size for each configuration. 676 Hence we have : 677 MAX_ORDER = (PMD_SHIFT - PAGE_SHIFT) + 1 => PAGE_SHIFT - 2 678 679 However for 4K, we choose a higher default value, 11 as opposed to 10, giving us 680 4M allocations matching the default size used by generic code. 681 682menuconfig ARMV8_DEPRECATED 683 bool "Emulate deprecated/obsolete ARMv8 instructions" 684 depends on COMPAT 685 help 686 Legacy software support may require certain instructions 687 that have been deprecated or obsoleted in the architecture. 688 689 Enable this config to enable selective emulation of these 690 features. 691 692 If unsure, say Y 693 694if ARMV8_DEPRECATED 695 696config SWP_EMULATION 697 bool "Emulate SWP/SWPB instructions" 698 help 699 ARMv8 obsoletes the use of A32 SWP/SWPB instructions such that 700 they are always undefined. Say Y here to enable software 701 emulation of these instructions for userspace using LDXR/STXR. 702 703 In some older versions of glibc [<=2.8] SWP is used during futex 704 trylock() operations with the assumption that the code will not 705 be preempted. This invalid assumption may be more likely to fail 706 with SWP emulation enabled, leading to deadlock of the user 707 application. 708 709 NOTE: when accessing uncached shared regions, LDXR/STXR rely 710 on an external transaction monitoring block called a global 711 monitor to maintain update atomicity. If your system does not 712 implement a global monitor, this option can cause programs that 713 perform SWP operations to uncached memory to deadlock. 714 715 If unsure, say Y 716 717config CP15_BARRIER_EMULATION 718 bool "Emulate CP15 Barrier instructions" 719 help 720 The CP15 barrier instructions - CP15ISB, CP15DSB, and 721 CP15DMB - are deprecated in ARMv8 (and ARMv7). It is 722 strongly recommended to use the ISB, DSB, and DMB 723 instructions instead. 724 725 Say Y here to enable software emulation of these 726 instructions for AArch32 userspace code. When this option is 727 enabled, CP15 barrier usage is traced which can help 728 identify software that needs updating. 729 730 If unsure, say Y 731 732config SETEND_EMULATION 733 bool "Emulate SETEND instruction" 734 help 735 The SETEND instruction alters the data-endianness of the 736 AArch32 EL0, and is deprecated in ARMv8. 737 738 Say Y here to enable software emulation of the instruction 739 for AArch32 userspace code. 740 741 Note: All the cpus on the system must have mixed endian support at EL0 742 for this feature to be enabled. If a new CPU - which doesn't support mixed 743 endian - is hotplugged in after this feature has been enabled, there could 744 be unexpected results in the applications. 745 746 If unsure, say Y 747endif 748 749menu "ARMv8.1 architectural features" 750 751config ARM64_HW_AFDBM 752 bool "Support for hardware updates of the Access and Dirty page flags" 753 default y 754 help 755 The ARMv8.1 architecture extensions introduce support for 756 hardware updates of the access and dirty information in page 757 table entries. When enabled in TCR_EL1 (HA and HD bits) on 758 capable processors, accesses to pages with PTE_AF cleared will 759 set this bit instead of raising an access flag fault. 760 Similarly, writes to read-only pages with the DBM bit set will 761 clear the read-only bit (AP[2]) instead of raising a 762 permission fault. 763 764 Kernels built with this configuration option enabled continue 765 to work on pre-ARMv8.1 hardware and the performance impact is 766 minimal. If unsure, say Y. 767 768config ARM64_PAN 769 bool "Enable support for Privileged Access Never (PAN)" 770 default y 771 help 772 Privileged Access Never (PAN; part of the ARMv8.1 Extensions) 773 prevents the kernel or hypervisor from accessing user-space (EL0) 774 memory directly. 775 776 Choosing this option will cause any unprotected (not using 777 copy_to_user et al) memory access to fail with a permission fault. 778 779 The feature is detected at runtime, and will remain as a 'nop' 780 instruction if the cpu does not implement the feature. 781 782config ARM64_LSE_ATOMICS 783 bool "Atomic instructions" 784 help 785 As part of the Large System Extensions, ARMv8.1 introduces new 786 atomic instructions that are designed specifically to scale in 787 very large systems. 788 789 Say Y here to make use of these instructions for the in-kernel 790 atomic routines. This incurs a small overhead on CPUs that do 791 not support these instructions and requires the kernel to be 792 built with binutils >= 2.25. 793 794config ARM64_VHE 795 bool "Enable support for Virtualization Host Extensions (VHE)" 796 default y 797 help 798 Virtualization Host Extensions (VHE) allow the kernel to run 799 directly at EL2 (instead of EL1) on processors that support 800 it. This leads to better performance for KVM, as they reduce 801 the cost of the world switch. 802 803 Selecting this option allows the VHE feature to be detected 804 at runtime, and does not affect processors that do not 805 implement this feature. 806 807endmenu 808 809menu "ARMv8.2 architectural features" 810 811config ARM64_UAO 812 bool "Enable support for User Access Override (UAO)" 813 default y 814 help 815 User Access Override (UAO; part of the ARMv8.2 Extensions) 816 causes the 'unprivileged' variant of the load/store instructions to 817 be overriden to be privileged. 818 819 This option changes get_user() and friends to use the 'unprivileged' 820 variant of the load/store instructions. This ensures that user-space 821 really did have access to the supplied memory. When addr_limit is 822 set to kernel memory the UAO bit will be set, allowing privileged 823 access to kernel memory. 824 825 Choosing this option will cause copy_to_user() et al to use user-space 826 memory permissions. 827 828 The feature is detected at runtime, the kernel will use the 829 regular load/store instructions if the cpu does not implement the 830 feature. 831 832endmenu 833 834config ARM64_MODULE_CMODEL_LARGE 835 bool 836 837config ARM64_MODULE_PLTS 838 bool 839 select ARM64_MODULE_CMODEL_LARGE 840 select HAVE_MOD_ARCH_SPECIFIC 841 842config RELOCATABLE 843 bool 844 help 845 This builds the kernel as a Position Independent Executable (PIE), 846 which retains all relocation metadata required to relocate the 847 kernel binary at runtime to a different virtual address than the 848 address it was linked at. 849 Since AArch64 uses the RELA relocation format, this requires a 850 relocation pass at runtime even if the kernel is loaded at the 851 same address it was linked at. 852 853config RANDOMIZE_BASE 854 bool "Randomize the address of the kernel image" 855 select ARM64_MODULE_PLTS 856 select RELOCATABLE 857 help 858 Randomizes the virtual address at which the kernel image is 859 loaded, as a security feature that deters exploit attempts 860 relying on knowledge of the location of kernel internals. 861 862 It is the bootloader's job to provide entropy, by passing a 863 random u64 value in /chosen/kaslr-seed at kernel entry. 864 865 When booting via the UEFI stub, it will invoke the firmware's 866 EFI_RNG_PROTOCOL implementation (if available) to supply entropy 867 to the kernel proper. In addition, it will randomise the physical 868 location of the kernel Image as well. 869 870 If unsure, say N. 871 872config RANDOMIZE_MODULE_REGION_FULL 873 bool "Randomize the module region independently from the core kernel" 874 depends on RANDOMIZE_BASE 875 default y 876 help 877 Randomizes the location of the module region without considering the 878 location of the core kernel. This way, it is impossible for modules 879 to leak information about the location of core kernel data structures 880 but it does imply that function calls between modules and the core 881 kernel will need to be resolved via veneers in the module PLT. 882 883 When this option is not set, the module region will be randomized over 884 a limited range that contains the [_stext, _etext] interval of the 885 core kernel, so branch relocations are always in range. 886 887endmenu 888 889menu "Boot options" 890 891config ARM64_ACPI_PARKING_PROTOCOL 892 bool "Enable support for the ARM64 ACPI parking protocol" 893 depends on ACPI 894 help 895 Enable support for the ARM64 ACPI parking protocol. If disabled 896 the kernel will not allow booting through the ARM64 ACPI parking 897 protocol even if the corresponding data is present in the ACPI 898 MADT table. 899 900config CMDLINE 901 string "Default kernel command string" 902 default "" 903 help 904 Provide a set of default command-line options at build time by 905 entering them here. As a minimum, you should specify the the 906 root device (e.g. root=/dev/nfs). 907 908config CMDLINE_FORCE 909 bool "Always use the default kernel command string" 910 help 911 Always use the default kernel command string, even if the boot 912 loader passes other arguments to the kernel. 913 This is useful if you cannot or don't want to change the 914 command-line options your boot loader passes to the kernel. 915 916config EFI_STUB 917 bool 918 919config EFI 920 bool "UEFI runtime support" 921 depends on OF && !CPU_BIG_ENDIAN 922 select LIBFDT 923 select UCS2_STRING 924 select EFI_PARAMS_FROM_FDT 925 select EFI_RUNTIME_WRAPPERS 926 select EFI_STUB 927 select EFI_ARMSTUB 928 default y 929 help 930 This option provides support for runtime services provided 931 by UEFI firmware (such as non-volatile variables, realtime 932 clock, and platform reset). A UEFI stub is also provided to 933 allow the kernel to be booted as an EFI application. This 934 is only useful on systems that have UEFI firmware. 935 936config DMI 937 bool "Enable support for SMBIOS (DMI) tables" 938 depends on EFI 939 default y 940 help 941 This enables SMBIOS/DMI feature for systems. 942 943 This option is only useful on systems that have UEFI firmware. 944 However, even with this option, the resultant kernel should 945 continue to boot on existing non-UEFI platforms. 946 947endmenu 948 949menu "Userspace binary formats" 950 951source "fs/Kconfig.binfmt" 952 953config COMPAT 954 bool "Kernel support for 32-bit EL0" 955 depends on ARM64_4K_PAGES || EXPERT 956 select COMPAT_BINFMT_ELF 957 select HAVE_UID16 958 select OLD_SIGSUSPEND3 959 select COMPAT_OLD_SIGACTION 960 help 961 This option enables support for a 32-bit EL0 running under a 64-bit 962 kernel at EL1. AArch32-specific components such as system calls, 963 the user helper functions, VFP support and the ptrace interface are 964 handled appropriately by the kernel. 965 966 If you use a page size other than 4KB (i.e, 16KB or 64KB), please be aware 967 that you will only be able to execute AArch32 binaries that were compiled 968 with page size aligned segments. 969 970 If you want to execute 32-bit userspace applications, say Y. 971 972config SYSVIPC_COMPAT 973 def_bool y 974 depends on COMPAT && SYSVIPC 975 976endmenu 977 978menu "Power management options" 979 980source "kernel/power/Kconfig" 981 982config ARCH_HIBERNATION_POSSIBLE 983 def_bool y 984 depends on CPU_PM 985 986config ARCH_HIBERNATION_HEADER 987 def_bool y 988 depends on HIBERNATION 989 990config ARCH_SUSPEND_POSSIBLE 991 def_bool y 992 993endmenu 994 995menu "CPU Power Management" 996 997source "drivers/cpuidle/Kconfig" 998 999source "drivers/cpufreq/Kconfig" 1000 1001endmenu 1002 1003source "net/Kconfig" 1004 1005source "drivers/Kconfig" 1006 1007source "drivers/firmware/Kconfig" 1008 1009source "drivers/acpi/Kconfig" 1010 1011source "fs/Kconfig" 1012 1013source "arch/arm64/kvm/Kconfig" 1014 1015source "arch/arm64/Kconfig.debug" 1016 1017source "security/Kconfig" 1018 1019source "crypto/Kconfig" 1020if CRYPTO 1021source "arch/arm64/crypto/Kconfig" 1022endif 1023 1024source "lib/Kconfig" 1025