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