1# SPDX-License-Identifier: GPL-2.0 2source "arch/powerpc/platforms/Kconfig.cputype" 3 4config 32BIT 5 bool 6 default y if PPC32 7 8config 64BIT 9 bool 10 default y if PPC64 11 12config MMU 13 bool 14 default y 15 16config ARCH_MMAP_RND_BITS_MAX 17 # On Book3S 64, the default virtual address space for 64-bit processes 18 # is 2^47 (128TB). As a maximum, allow randomisation to consume up to 19 # 32T of address space (2^45), which should ensure a reasonable gap 20 # between bottom-up and top-down allocations for applications that 21 # consume "normal" amounts of address space. Book3S 64 only supports 64K 22 # and 4K page sizes. 23 default 29 if PPC_BOOK3S_64 && PPC_64K_PAGES # 29 = 45 (32T) - 16 (64K) 24 default 33 if PPC_BOOK3S_64 # 33 = 45 (32T) - 12 (4K) 25 # 26 # On all other 64-bit platforms (currently only Book3E), the virtual 27 # address space is 2^46 (64TB). Allow randomisation to consume up to 16T 28 # of address space (2^44). Only 4K page sizes are supported. 29 default 32 if 64BIT # 32 = 44 (16T) - 12 (4K) 30 # 31 # For 32-bit, use the compat values, as they're the same. 32 default ARCH_MMAP_RND_COMPAT_BITS_MAX 33 34config ARCH_MMAP_RND_BITS_MIN 35 # Allow randomisation to consume up to 1GB of address space (2^30). 36 default 14 if 64BIT && PPC_64K_PAGES # 14 = 30 (1GB) - 16 (64K) 37 default 18 if 64BIT # 18 = 30 (1GB) - 12 (4K) 38 # 39 # For 32-bit, use the compat values, as they're the same. 40 default ARCH_MMAP_RND_COMPAT_BITS_MIN 41 42config ARCH_MMAP_RND_COMPAT_BITS_MAX 43 # Total virtual address space for 32-bit processes is 2^31 (2GB). 44 # Allow randomisation to consume up to 512MB of address space (2^29). 45 default 11 if PPC_256K_PAGES # 11 = 29 (512MB) - 18 (256K) 46 default 13 if PPC_64K_PAGES # 13 = 29 (512MB) - 16 (64K) 47 default 15 if PPC_16K_PAGES # 15 = 29 (512MB) - 14 (16K) 48 default 17 # 17 = 29 (512MB) - 12 (4K) 49 50config ARCH_MMAP_RND_COMPAT_BITS_MIN 51 # Total virtual address space for 32-bit processes is 2^31 (2GB). 52 # Allow randomisation to consume up to 8MB of address space (2^23). 53 default 5 if PPC_256K_PAGES # 5 = 23 (8MB) - 18 (256K) 54 default 7 if PPC_64K_PAGES # 7 = 23 (8MB) - 16 (64K) 55 default 9 if PPC_16K_PAGES # 9 = 23 (8MB) - 14 (16K) 56 default 11 # 11 = 23 (8MB) - 12 (4K) 57 58config HAVE_SETUP_PER_CPU_AREA 59 def_bool PPC64 60 61config NEED_PER_CPU_EMBED_FIRST_CHUNK 62 def_bool y if PPC64 63 64config NEED_PER_CPU_PAGE_FIRST_CHUNK 65 def_bool y if PPC64 66 67config NR_IRQS 68 int "Number of virtual interrupt numbers" 69 range 32 1048576 70 default "512" 71 help 72 This defines the number of virtual interrupt numbers the kernel 73 can manage. Virtual interrupt numbers are what you see in 74 /proc/interrupts. If you configure your system to have too few, 75 drivers will fail to load or worse - handle with care. 76 77config NMI_IPI 78 bool 79 depends on SMP && (DEBUGGER || KEXEC_CORE || HARDLOCKUP_DETECTOR) 80 default y 81 82config PPC_WATCHDOG 83 bool 84 depends on HARDLOCKUP_DETECTOR 85 depends on HAVE_HARDLOCKUP_DETECTOR_ARCH 86 default y 87 help 88 This is a placeholder when the powerpc hardlockup detector 89 watchdog is selected (arch/powerpc/kernel/watchdog.c). It is 90 selected via the generic lockup detector menu which is why we 91 have no standalone config option for it here. 92 93config STACKTRACE_SUPPORT 94 bool 95 default y 96 97config TRACE_IRQFLAGS_SUPPORT 98 bool 99 default y 100 101config LOCKDEP_SUPPORT 102 bool 103 default y 104 105config GENERIC_LOCKBREAK 106 bool 107 default y 108 depends on SMP && PREEMPTION 109 110config GENERIC_HWEIGHT 111 bool 112 default y 113 114config PPC 115 bool 116 default y 117 # 118 # Please keep this list sorted alphabetically. 119 # 120 select ARCH_32BIT_OFF_T if PPC32 121 select ARCH_HAS_DEBUG_VIRTUAL 122 select ARCH_HAS_DEVMEM_IS_ALLOWED 123 select ARCH_HAS_ELF_RANDOMIZE 124 select ARCH_HAS_FORTIFY_SOURCE 125 select ARCH_HAS_GCOV_PROFILE_ALL 126 select ARCH_HAS_KCOV 127 select ARCH_HAS_HUGEPD if HUGETLB_PAGE 128 select ARCH_HAS_MEMREMAP_COMPAT_ALIGN 129 select ARCH_HAS_MMIOWB if PPC64 130 select ARCH_HAS_PHYS_TO_DMA 131 select ARCH_HAS_PMEM_API 132 select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 133 select ARCH_HAS_PTE_DEVMAP if PPC_BOOK3S_64 134 select ARCH_HAS_PTE_SPECIAL 135 select ARCH_HAS_MEMBARRIER_CALLBACKS 136 select ARCH_HAS_MEMBARRIER_SYNC_CORE 137 select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE && PPC_BOOK3S_64 138 select ARCH_HAS_STRICT_KERNEL_RWX if (PPC32 && !HIBERNATION) 139 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST 140 select ARCH_HAS_UACCESS_FLUSHCACHE 141 select ARCH_HAS_COPY_MC if PPC64 142 select ARCH_HAS_UBSAN_SANITIZE_ALL 143 select ARCH_HAVE_NMI_SAFE_CMPXCHG 144 select ARCH_KEEP_MEMBLOCK 145 select ARCH_MIGHT_HAVE_PC_PARPORT 146 select ARCH_MIGHT_HAVE_PC_SERIO 147 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX 148 select ARCH_SUPPORTS_ATOMIC_RMW 149 select ARCH_SUPPORTS_DEBUG_PAGEALLOC if PPC32 || PPC_BOOK3S_64 150 select ARCH_USE_BUILTIN_BSWAP 151 select ARCH_USE_CMPXCHG_LOCKREF if PPC64 152 select ARCH_USE_QUEUED_RWLOCKS if PPC_QUEUED_SPINLOCKS 153 select ARCH_USE_QUEUED_SPINLOCKS if PPC_QUEUED_SPINLOCKS 154 select ARCH_WANT_IPC_PARSE_VERSION 155 select ARCH_WANT_IRQS_OFF_ACTIVATE_MM 156 select ARCH_WANT_LD_ORPHAN_WARN 157 select ARCH_WEAK_RELEASE_ACQUIRE 158 select BINFMT_ELF 159 select BUILDTIME_TABLE_SORT 160 select CLONE_BACKWARDS 161 select DCACHE_WORD_ACCESS if PPC64 && CPU_LITTLE_ENDIAN 162 select DMA_OPS if PPC64 163 select DMA_OPS_BYPASS if PPC64 164 select ARCH_HAS_DMA_MAP_DIRECT if PPC64 && PPC_PSERIES 165 select DYNAMIC_FTRACE if FUNCTION_TRACER 166 select EDAC_ATOMIC_SCRUB 167 select EDAC_SUPPORT 168 select GENERIC_ATOMIC64 if PPC32 169 select GENERIC_CLOCKEVENTS_BROADCAST if SMP 170 select GENERIC_CMOS_UPDATE 171 select GENERIC_CPU_AUTOPROBE 172 select GENERIC_CPU_VULNERABILITIES if PPC_BARRIER_NOSPEC 173 select GENERIC_EARLY_IOREMAP 174 select GENERIC_IRQ_SHOW 175 select GENERIC_IRQ_SHOW_LEVEL 176 select GENERIC_PCI_IOMAP if PCI 177 select GENERIC_SMP_IDLE_THREAD 178 select GENERIC_STRNCPY_FROM_USER 179 select GENERIC_STRNLEN_USER 180 select GENERIC_TIME_VSYSCALL 181 select GENERIC_GETTIMEOFDAY 182 select HAVE_ARCH_AUDITSYSCALL 183 select HAVE_ARCH_HUGE_VMAP if PPC_BOOK3S_64 && PPC_RADIX_MMU 184 select HAVE_ARCH_JUMP_LABEL 185 select HAVE_ARCH_KASAN if PPC32 && PPC_PAGE_SHIFT <= 14 186 select HAVE_ARCH_KASAN_VMALLOC if PPC32 && PPC_PAGE_SHIFT <= 14 187 select HAVE_ARCH_KGDB 188 select HAVE_ARCH_MMAP_RND_BITS 189 select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT 190 select HAVE_ARCH_NVRAM_OPS 191 select HAVE_ARCH_SECCOMP_FILTER 192 select HAVE_ARCH_TRACEHOOK 193 select HAVE_ASM_MODVERSIONS 194 select HAVE_C_RECORDMCOUNT 195 select HAVE_CBPF_JIT if !PPC64 196 select HAVE_STACKPROTECTOR if PPC64 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r13) 197 select HAVE_STACKPROTECTOR if PPC32 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r2) 198 select HAVE_CONTEXT_TRACKING if PPC64 199 select HAVE_TIF_NOHZ if PPC64 200 select HAVE_DEBUG_KMEMLEAK 201 select HAVE_DEBUG_STACKOVERFLOW 202 select HAVE_DYNAMIC_FTRACE 203 select HAVE_DYNAMIC_FTRACE_WITH_REGS if MPROFILE_KERNEL 204 select HAVE_EBPF_JIT if PPC64 205 select HAVE_EFFICIENT_UNALIGNED_ACCESS if !(CPU_LITTLE_ENDIAN && POWER7_CPU) 206 select HAVE_FAST_GUP 207 select HAVE_FTRACE_MCOUNT_RECORD 208 select HAVE_FUNCTION_ERROR_INJECTION 209 select HAVE_FUNCTION_GRAPH_TRACER 210 select HAVE_FUNCTION_TRACER 211 select HAVE_GCC_PLUGINS if GCC_VERSION >= 50200 # plugin support on gcc <= 5.1 is buggy on PPC 212 select HAVE_GENERIC_VDSO 213 select HAVE_HW_BREAKPOINT if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx) 214 select HAVE_IDE 215 select HAVE_IOREMAP_PROT 216 select HAVE_IRQ_EXIT_ON_IRQ_STACK 217 select HAVE_KERNEL_GZIP 218 select HAVE_KERNEL_LZMA if DEFAULT_UIMAGE 219 select HAVE_KERNEL_LZO if DEFAULT_UIMAGE 220 select HAVE_KERNEL_XZ if PPC_BOOK3S || 44x 221 select HAVE_KPROBES 222 select HAVE_KPROBES_ON_FTRACE 223 select HAVE_KRETPROBES 224 select HAVE_LD_DEAD_CODE_DATA_ELIMINATION 225 select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS 226 select HAVE_MOD_ARCH_SPECIFIC 227 select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S) 228 select HAVE_HARDLOCKUP_DETECTOR_ARCH if (PPC64 && PPC_BOOK3S) 229 select HAVE_OPROFILE 230 select HAVE_OPTPROBES if PPC64 231 select HAVE_PERF_EVENTS 232 select HAVE_PERF_EVENTS_NMI if PPC64 233 select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH 234 select HAVE_PERF_REGS 235 select HAVE_PERF_USER_STACK_DUMP 236 select MMU_GATHER_RCU_TABLE_FREE 237 select MMU_GATHER_PAGE_SIZE 238 select HAVE_REGS_AND_STACK_ACCESS_API 239 select HAVE_RELIABLE_STACKTRACE if PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN 240 select HAVE_SYSCALL_TRACEPOINTS 241 select HAVE_VIRT_CPU_ACCOUNTING 242 select HAVE_IRQ_TIME_ACCOUNTING 243 select HAVE_RSEQ 244 select IOMMU_HELPER if PPC64 245 select IRQ_DOMAIN 246 select IRQ_FORCED_THREADING 247 select MODULES_USE_ELF_RELA 248 select NEED_DMA_MAP_STATE if PPC64 || NOT_COHERENT_CACHE 249 select NEED_SG_DMA_LENGTH 250 select OF 251 select OF_DMA_DEFAULT_COHERENT if !NOT_COHERENT_CACHE 252 select OF_EARLY_FLATTREE 253 select OLD_SIGACTION if PPC32 254 select OLD_SIGSUSPEND 255 select PCI_DOMAINS if PCI 256 select PCI_MSI_ARCH_FALLBACKS if PCI_MSI 257 select PCI_SYSCALL if PCI 258 select PPC_DAWR if PPC64 259 select RTC_LIB 260 select SPARSE_IRQ 261 select SYSCTL_EXCEPTION_TRACE 262 select THREAD_INFO_IN_TASK 263 select VIRT_TO_BUS if !PPC64 264 # 265 # Please keep this list sorted alphabetically. 266 # 267 268config PPC_BARRIER_NOSPEC 269 bool 270 default y 271 depends on PPC_BOOK3S_64 || PPC_FSL_BOOK3E 272 273config EARLY_PRINTK 274 bool 275 default y 276 277config PANIC_TIMEOUT 278 int 279 default 180 280 281config COMPAT 282 bool "Enable support for 32bit binaries" 283 depends on PPC64 284 default y if !CPU_LITTLE_ENDIAN 285 select COMPAT_BINFMT_ELF 286 select ARCH_WANT_OLD_COMPAT_IPC 287 select COMPAT_OLD_SIGACTION 288 289config SYSVIPC_COMPAT 290 bool 291 depends on COMPAT && SYSVIPC 292 default y 293 294config SCHED_OMIT_FRAME_POINTER 295 bool 296 default y 297 298config ARCH_MAY_HAVE_PC_FDC 299 bool 300 default PCI 301 302config PPC_UDBG_16550 303 bool 304 305config GENERIC_TBSYNC 306 bool 307 default y if PPC32 && SMP 308 309config AUDIT_ARCH 310 bool 311 default y 312 313config GENERIC_BUG 314 bool 315 default y 316 depends on BUG 317 318config GENERIC_BUG_RELATIVE_POINTERS 319 def_bool y 320 depends on GENERIC_BUG 321 322config SYS_SUPPORTS_APM_EMULATION 323 default y if PMAC_APM_EMU 324 bool 325 326config EPAPR_BOOT 327 bool 328 help 329 Used to allow a board to specify it wants an ePAPR compliant wrapper. 330 331config DEFAULT_UIMAGE 332 bool 333 help 334 Used to allow a board to specify it wants a uImage built by default 335 336config ARCH_HIBERNATION_POSSIBLE 337 bool 338 default y 339 340config ARCH_SUSPEND_POSSIBLE 341 def_bool y 342 depends on ADB_PMU || PPC_EFIKA || PPC_LITE5200 || PPC_83xx || \ 343 (PPC_85xx && !PPC_E500MC) || PPC_86xx || PPC_PSERIES \ 344 || 44x || 40x 345 346config ARCH_SUSPEND_NONZERO_CPU 347 def_bool y 348 depends on PPC_POWERNV || PPC_PSERIES 349 350config PPC_DCR_NATIVE 351 bool 352 353config PPC_DCR_MMIO 354 bool 355 356config PPC_DCR 357 bool 358 depends on PPC_DCR_NATIVE || PPC_DCR_MMIO 359 default y 360 361config PPC_OF_PLATFORM_PCI 362 bool 363 depends on PCI 364 depends on PPC64 # not supported on 32 bits yet 365 366config ARCH_SUPPORTS_UPROBES 367 def_bool y 368 369config PPC_ADV_DEBUG_REGS 370 bool 371 depends on 40x || BOOKE 372 default y 373 374config PPC_ADV_DEBUG_IACS 375 int 376 depends on PPC_ADV_DEBUG_REGS 377 default 4 if 44x 378 default 2 379 380config PPC_ADV_DEBUG_DACS 381 int 382 depends on PPC_ADV_DEBUG_REGS 383 default 2 384 385config PPC_ADV_DEBUG_DVCS 386 int 387 depends on PPC_ADV_DEBUG_REGS 388 default 2 if 44x 389 default 0 390 391config PPC_ADV_DEBUG_DAC_RANGE 392 bool 393 depends on PPC_ADV_DEBUG_REGS && 44x 394 default y 395 396config PPC_DAWR 397 bool 398 399config ZONE_DMA 400 bool 401 default y if PPC_BOOK3E_64 402 403config PGTABLE_LEVELS 404 int 405 default 2 if !PPC64 406 default 4 407 408source "arch/powerpc/sysdev/Kconfig" 409source "arch/powerpc/platforms/Kconfig" 410 411menu "Kernel options" 412 413config HIGHMEM 414 bool "High memory support" 415 depends on PPC32 416 select KMAP_LOCAL 417 418source "kernel/Kconfig.hz" 419 420config HUGETLB_PAGE_SIZE_VARIABLE 421 bool 422 depends on HUGETLB_PAGE && PPC_BOOK3S_64 423 default y 424 425config MATH_EMULATION 426 bool "Math emulation" 427 depends on 4xx || PPC_8xx || PPC_MPC832x || BOOKE 428 select PPC_FPU_REGS 429 help 430 Some PowerPC chips designed for embedded applications do not have 431 a floating-point unit and therefore do not implement the 432 floating-point instructions in the PowerPC instruction set. If you 433 say Y here, the kernel will include code to emulate a floating-point 434 unit, which will allow programs that use floating-point 435 instructions to run. 436 437 This is also useful to emulate missing (optional) instructions 438 such as fsqrt on cores that do have an FPU but do not implement 439 them (such as Freescale BookE). 440 441choice 442 prompt "Math emulation options" 443 default MATH_EMULATION_FULL 444 depends on MATH_EMULATION 445 446config MATH_EMULATION_FULL 447 bool "Emulate all the floating point instructions" 448 help 449 Select this option will enable the kernel to support to emulate 450 all the floating point instructions. If your SoC doesn't have 451 a FPU, you should select this. 452 453config MATH_EMULATION_HW_UNIMPLEMENTED 454 bool "Just emulate the FPU unimplemented instructions" 455 help 456 Select this if you know there does have a hardware FPU on your 457 SoC, but some floating point instructions are not implemented by that. 458 459endchoice 460 461config PPC_TRANSACTIONAL_MEM 462 bool "Transactional Memory support for POWERPC" 463 depends on PPC_BOOK3S_64 464 depends on SMP 465 select ALTIVEC 466 select VSX 467 help 468 Support user-mode Transactional Memory on POWERPC. 469 470config PPC_UV 471 bool "Ultravisor support" 472 depends on KVM_BOOK3S_HV_POSSIBLE 473 depends on DEVICE_PRIVATE 474 default n 475 help 476 This option paravirtualizes the kernel to run in POWER platforms that 477 supports the Protected Execution Facility (PEF). On such platforms, 478 the ultravisor firmware runs at a privilege level above the 479 hypervisor. 480 481 If unsure, say "N". 482 483config LD_HEAD_STUB_CATCH 484 bool "Reserve 256 bytes to cope with linker stubs in HEAD text" if EXPERT 485 depends on PPC64 486 help 487 Very large kernels can cause linker branch stubs to be generated by 488 code in head_64.S, which moves the head text sections out of their 489 specified location. This option can work around the problem. 490 491 If unsure, say "N". 492 493config MPROFILE_KERNEL 494 depends on PPC64 && CPU_LITTLE_ENDIAN && FUNCTION_TRACER 495 def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-mprofile-kernel.sh $(CC) -I$(srctree)/include -D__KERNEL__) 496 497config HOTPLUG_CPU 498 bool "Support for enabling/disabling CPUs" 499 depends on SMP && (PPC_PSERIES || \ 500 PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE) 501 help 502 Say Y here to be able to disable and re-enable individual 503 CPUs at runtime on SMP machines. 504 505 Say N if you are unsure. 506 507config PPC_QUEUED_SPINLOCKS 508 bool "Queued spinlocks" 509 depends on SMP 510 help 511 Say Y here to use queued spinlocks which give better scalability and 512 fairness on large SMP and NUMA systems without harming single threaded 513 performance. 514 515 This option is currently experimental, the code is more complex and 516 less tested so it defaults to "N" for the moment. 517 518 If unsure, say "N". 519 520config ARCH_CPU_PROBE_RELEASE 521 def_bool y 522 depends on HOTPLUG_CPU 523 524config ARCH_ENABLE_MEMORY_HOTPLUG 525 def_bool y 526 527config ARCH_ENABLE_MEMORY_HOTREMOVE 528 def_bool y 529 530config PPC64_SUPPORTS_MEMORY_FAILURE 531 bool "Add support for memory hwpoison" 532 depends on PPC_BOOK3S_64 533 default "y" if PPC_POWERNV 534 select ARCH_SUPPORTS_MEMORY_FAILURE 535 536config KEXEC 537 bool "kexec system call" 538 depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) || PPC_BOOK3E 539 select KEXEC_CORE 540 help 541 kexec is a system call that implements the ability to shutdown your 542 current kernel, and to start another kernel. It is like a reboot 543 but it is independent of the system firmware. And like a reboot 544 you can start any kernel with it, not just Linux. 545 546 The name comes from the similarity to the exec system call. 547 548 It is an ongoing process to be certain the hardware in a machine 549 is properly shutdown, so do not be surprised if this code does not 550 initially work for you. As of this writing the exact hardware 551 interface is strongly in flux, so no good recommendation can be 552 made. 553 554config KEXEC_FILE 555 bool "kexec file based system call" 556 select KEXEC_CORE 557 select HAVE_IMA_KEXEC 558 select BUILD_BIN2C 559 select KEXEC_ELF 560 depends on PPC64 561 depends on CRYPTO=y 562 depends on CRYPTO_SHA256=y 563 help 564 This is a new version of the kexec system call. This call is 565 file based and takes in file descriptors as system call arguments 566 for kernel and initramfs as opposed to a list of segments as is the 567 case for the older kexec call. 568 569config ARCH_HAS_KEXEC_PURGATORY 570 def_bool KEXEC_FILE 571 572config RELOCATABLE 573 bool "Build a relocatable kernel" 574 depends on PPC64 || (FLATMEM && (44x || FSL_BOOKE)) 575 select NONSTATIC_KERNEL 576 select MODULE_REL_CRCS if MODVERSIONS 577 help 578 This builds a kernel image that is capable of running at the 579 location the kernel is loaded at. For ppc32, there is no any 580 alignment restrictions, and this feature is a superset of 581 DYNAMIC_MEMSTART and hence overrides it. For ppc64, we should use 582 16k-aligned base address. The kernel is linked as a 583 position-independent executable (PIE) and contains dynamic relocations 584 which are processed early in the bootup process. 585 586 One use is for the kexec on panic case where the recovery kernel 587 must live at a different physical address than the primary 588 kernel. 589 590 Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address 591 it has been loaded at and the compile time physical addresses 592 CONFIG_PHYSICAL_START is ignored. However CONFIG_PHYSICAL_START 593 setting can still be useful to bootwrappers that need to know the 594 load address of the kernel (eg. u-boot/mkimage). 595 596config RANDOMIZE_BASE 597 bool "Randomize the address of the kernel image" 598 depends on (FSL_BOOKE && FLATMEM && PPC32) 599 depends on RELOCATABLE 600 help 601 Randomizes the virtual address at which the kernel image is 602 loaded, as a security feature that deters exploit attempts 603 relying on knowledge of the location of kernel internals. 604 605 If unsure, say Y. 606 607config RELOCATABLE_TEST 608 bool "Test relocatable kernel" 609 depends on (PPC64 && RELOCATABLE) 610 help 611 This runs the relocatable kernel at the address it was initially 612 loaded at, which tends to be non-zero and therefore test the 613 relocation code. 614 615config CRASH_DUMP 616 bool "Build a dump capture kernel" 617 depends on PPC64 || PPC_BOOK3S_32 || FSL_BOOKE || (44x && !SMP) 618 select RELOCATABLE if PPC64 || 44x || FSL_BOOKE 619 help 620 Build a kernel suitable for use as a dump capture kernel. 621 The same kernel binary can be used as production kernel and dump 622 capture kernel. 623 624config FA_DUMP 625 bool "Firmware-assisted dump" 626 depends on PPC64 && (PPC_RTAS || PPC_POWERNV) 627 select CRASH_CORE 628 select CRASH_DUMP 629 help 630 A robust mechanism to get reliable kernel crash dump with 631 assistance from firmware. This approach does not use kexec, 632 instead firmware assists in booting the capture kernel 633 while preserving memory contents. Firmware-assisted dump 634 is meant to be a kdump replacement offering robustness and 635 speed not possible without system firmware assistance. 636 637 If unsure, say "y". Only special kernels like petitboot may 638 need to say "N" here. 639 640config PRESERVE_FA_DUMP 641 bool "Preserve Firmware-assisted dump" 642 depends on PPC64 && PPC_POWERNV && !FA_DUMP 643 help 644 On a kernel with FA_DUMP disabled, this option helps to preserve 645 crash data from a previously crash'ed kernel. Useful when the next 646 memory preserving kernel boot would process this crash data. 647 Petitboot kernel is the typical usecase for this option. 648 649config OPAL_CORE 650 bool "Export OPAL memory as /sys/firmware/opal/core" 651 depends on PPC64 && PPC_POWERNV 652 help 653 This option uses the MPIPL support in firmware to provide an 654 ELF core of OPAL memory after a crash. The ELF core is exported 655 as /sys/firmware/opal/core file which is helpful in debugging 656 OPAL crashes using GDB. 657 658config IRQ_ALL_CPUS 659 bool "Distribute interrupts on all CPUs by default" 660 depends on SMP 661 help 662 This option gives the kernel permission to distribute IRQs across 663 multiple CPUs. Saying N here will route all IRQs to the first 664 CPU. Generally saying Y is safe, although some problems have been 665 reported with SMP Power Macintoshes with this option enabled. 666 667config NUMA 668 bool "NUMA Memory Allocation and Scheduler Support" 669 depends on PPC64 && SMP 670 default y if PPC_PSERIES || PPC_POWERNV 671 help 672 Enable NUMA (Non-Uniform Memory Access) support. 673 674 The kernel will try to allocate memory used by a CPU on the 675 local memory controller of the CPU and add some more 676 NUMA awareness to the kernel. 677 678config NODES_SHIFT 679 int 680 default "8" if PPC64 681 default "4" 682 depends on NEED_MULTIPLE_NODES 683 684config USE_PERCPU_NUMA_NODE_ID 685 def_bool y 686 depends on NUMA 687 688config HAVE_MEMORYLESS_NODES 689 def_bool y 690 depends on NUMA 691 692config ARCH_SELECT_MEMORY_MODEL 693 def_bool y 694 depends on PPC64 695 696config ARCH_FLATMEM_ENABLE 697 def_bool y 698 depends on (PPC64 && !NUMA) || PPC32 699 700config ARCH_SPARSEMEM_ENABLE 701 def_bool y 702 depends on PPC64 703 select SPARSEMEM_VMEMMAP_ENABLE 704 705config ARCH_SPARSEMEM_DEFAULT 706 def_bool y 707 depends on PPC_BOOK3S_64 708 709config SYS_SUPPORTS_HUGETLBFS 710 bool 711 712config ILLEGAL_POINTER_VALUE 713 hex 714 # This is roughly half way between the top of user space and the bottom 715 # of kernel space, which seems about as good as we can get. 716 default 0x5deadbeef0000000 if PPC64 717 default 0 718 719config ARCH_MEMORY_PROBE 720 def_bool y 721 depends on MEMORY_HOTPLUG 722 723config STDBINUTILS 724 bool "Using standard binutils settings" 725 depends on 44x 726 default y 727 help 728 Turning this option off allows you to select 256KB PAGE_SIZE on 44x. 729 Note, that kernel will be able to run only those applications, 730 which had been compiled using binutils later than 2.17.50.0.3 with 731 '-zmax-page-size' set to 256K (the default is 64K). Or, if using 732 the older binutils, you can patch them with a trivial patch, which 733 changes the ELF_MAXPAGESIZE definition from 0x10000 to 0x40000. 734 735choice 736 prompt "Page size" 737 default PPC_4K_PAGES 738 help 739 Select the kernel logical page size. Increasing the page size 740 will reduce software overhead at each page boundary, allow 741 hardware prefetch mechanisms to be more effective, and allow 742 larger dma transfers increasing IO efficiency and reducing 743 overhead. However the utilization of memory will increase. 744 For example, each cached file will using a multiple of the 745 page size to hold its contents and the difference between the 746 end of file and the end of page is wasted. 747 748 Some dedicated systems, such as software raid serving with 749 accelerated calculations, have shown significant increases. 750 751 If you configure a 64 bit kernel for 64k pages but the 752 processor does not support them, then the kernel will simulate 753 them with 4k pages, loading them on demand, but with the 754 reduced software overhead and larger internal fragmentation. 755 For the 32 bit kernel, a large page option will not be offered 756 unless it is supported by the configured processor. 757 758 If unsure, choose 4K_PAGES. 759 760config PPC_4K_PAGES 761 bool "4k page size" 762 select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64 763 764config PPC_16K_PAGES 765 bool "16k page size" 766 depends on 44x || PPC_8xx 767 768config PPC_64K_PAGES 769 bool "64k page size" 770 depends on 44x || PPC_BOOK3S_64 771 select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64 772 773config PPC_256K_PAGES 774 bool "256k page size" 775 depends on 44x && !STDBINUTILS 776 help 777 Make the page size 256k. 778 779 As the ELF standard only requires alignment to support page 780 sizes up to 64k, you will need to compile all of your user 781 space applications with a non-standard binutils settings 782 (see the STDBINUTILS description for details). 783 784 Say N unless you know what you are doing. 785 786endchoice 787 788config PPC_PAGE_SHIFT 789 int 790 default 18 if PPC_256K_PAGES 791 default 16 if PPC_64K_PAGES 792 default 14 if PPC_16K_PAGES 793 default 12 794 795config THREAD_SHIFT 796 int "Thread shift" if EXPERT 797 range 13 15 798 default "15" if PPC_256K_PAGES 799 default "14" if PPC64 800 default "14" if KASAN 801 default "13" 802 help 803 Used to define the stack size. The default is almost always what you 804 want. Only change this if you know what you are doing. 805 806config DATA_SHIFT_BOOL 807 bool "Set custom data alignment" 808 depends on ADVANCED_OPTIONS 809 depends on STRICT_KERNEL_RWX || DEBUG_PAGEALLOC 810 depends on PPC_BOOK3S_32 || (PPC_8xx && !PIN_TLB_DATA && !STRICT_KERNEL_RWX) 811 help 812 This option allows you to set the kernel data alignment. When 813 RAM is mapped by blocks, the alignment needs to fit the size and 814 number of possible blocks. The default should be OK for most configs. 815 816 Say N here unless you know what you are doing. 817 818config DATA_SHIFT 819 int "Data shift" if DATA_SHIFT_BOOL 820 default 24 if STRICT_KERNEL_RWX && PPC64 821 range 17 28 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC) && PPC_BOOK3S_32 822 range 19 23 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC) && PPC_8xx 823 default 22 if STRICT_KERNEL_RWX && PPC_BOOK3S_32 824 default 18 if DEBUG_PAGEALLOC && PPC_BOOK3S_32 825 default 23 if STRICT_KERNEL_RWX && PPC_8xx 826 default 23 if DEBUG_PAGEALLOC && PPC_8xx && PIN_TLB_DATA 827 default 19 if DEBUG_PAGEALLOC && PPC_8xx 828 default PPC_PAGE_SHIFT 829 help 830 On Book3S 32 (603+), DBATs are used to map kernel text and rodata RO. 831 Smaller is the alignment, greater is the number of necessary DBATs. 832 833 On 8xx, large pages (512kb or 8M) are used to map kernel linear 834 memory. Aligning to 8M reduces TLB misses as only 8M pages are used 835 in that case. If PIN_TLB is selected, it must be aligned to 8M as 836 8M pages will be pinned. 837 838config FORCE_MAX_ZONEORDER 839 int "Maximum zone order" 840 range 8 9 if PPC64 && PPC_64K_PAGES 841 default "9" if PPC64 && PPC_64K_PAGES 842 range 13 13 if PPC64 && !PPC_64K_PAGES 843 default "13" if PPC64 && !PPC_64K_PAGES 844 range 9 64 if PPC32 && PPC_16K_PAGES 845 default "9" if PPC32 && PPC_16K_PAGES 846 range 7 64 if PPC32 && PPC_64K_PAGES 847 default "7" if PPC32 && PPC_64K_PAGES 848 range 5 64 if PPC32 && PPC_256K_PAGES 849 default "5" if PPC32 && PPC_256K_PAGES 850 range 11 64 851 default "11" 852 help 853 The kernel memory allocator divides physically contiguous memory 854 blocks into "zones", where each zone is a power of two number of 855 pages. This option selects the largest power of two that the kernel 856 keeps in the memory allocator. If you need to allocate very large 857 blocks of physically contiguous memory, then you may need to 858 increase this value. 859 860 This config option is actually maximum order plus one. For example, 861 a value of 11 means that the largest free memory block is 2^10 pages. 862 863 The page size is not necessarily 4KB. For example, on 64-bit 864 systems, 64KB pages can be enabled via CONFIG_PPC_64K_PAGES. Keep 865 this in mind when choosing a value for this option. 866 867config PPC_SUBPAGE_PROT 868 bool "Support setting protections for 4k subpages (subpage_prot syscall)" 869 default n 870 depends on PPC_BOOK3S_64 && PPC_64K_PAGES 871 help 872 This option adds support for system call to allow user programs 873 to set access permissions (read/write, readonly, or no access) 874 on the 4k subpages of each 64k page. 875 876 If unsure, say N here. 877 878config PPC_PROT_SAO_LPAR 879 bool "Support PROT_SAO mappings in LPARs" 880 depends on PPC_BOOK3S_64 881 help 882 This option adds support for PROT_SAO mappings from userspace 883 inside LPARs on supported CPUs. 884 885 This may cause issues when performing guest migration from 886 a CPU that supports SAO to one that does not. 887 888 If unsure, say N here. 889 890config PPC_COPRO_BASE 891 bool 892 893config SCHED_SMT 894 bool "SMT (Hyperthreading) scheduler support" 895 depends on PPC64 && SMP 896 help 897 SMT scheduler support improves the CPU scheduler's decision making 898 when dealing with POWER5 cpus at a cost of slightly increased 899 overhead in some places. If unsure say N here. 900 901config PPC_DENORMALISATION 902 bool "PowerPC denormalisation exception handling" 903 depends on PPC_BOOK3S_64 904 default "y" if PPC_POWERNV 905 help 906 Add support for handling denormalisation of single precision 907 values. Useful for bare metal only. If unsure say Y here. 908 909config CMDLINE 910 string "Initial kernel command string" 911 default "" 912 help 913 On some platforms, there is currently no way for the boot loader to 914 pass arguments to the kernel. For these platforms, you can supply 915 some command-line options at build time by entering them here. In 916 most cases you will need to specify the root device here. 917 918choice 919 prompt "Kernel command line type" if CMDLINE != "" 920 default CMDLINE_FROM_BOOTLOADER 921 922config CMDLINE_FROM_BOOTLOADER 923 bool "Use bootloader kernel arguments if available" 924 help 925 Uses the command-line options passed by the boot loader. If 926 the boot loader doesn't provide any, the default kernel command 927 string provided in CMDLINE will be used. 928 929config CMDLINE_EXTEND 930 bool "Extend bootloader kernel arguments" 931 help 932 The command-line arguments provided by the boot loader will be 933 appended to the default kernel command string. 934 935config CMDLINE_FORCE 936 bool "Always use the default kernel command string" 937 help 938 Always use the default kernel command string, even if the boot 939 loader passes other arguments to the kernel. 940 This is useful if you cannot or don't want to change the 941 command-line options your boot loader passes to the kernel. 942 943endchoice 944 945config EXTRA_TARGETS 946 string "Additional default image types" 947 help 948 List additional targets to be built by the bootwrapper here (separated 949 by spaces). This is useful for targets that depend of device tree 950 files in the .dts directory. 951 952 Targets in this list will be build as part of the default build 953 target, or when the user does a 'make zImage' or a 954 'make zImage.initrd'. 955 956 If unsure, leave blank 957 958config ARCH_WANTS_FREEZER_CONTROL 959 def_bool y 960 depends on ADB_PMU 961 962source "kernel/power/Kconfig" 963 964config PPC_MEM_KEYS 965 prompt "PowerPC Memory Protection Keys" 966 def_bool y 967 depends on PPC_BOOK3S_64 968 select ARCH_USES_HIGH_VMA_FLAGS 969 select ARCH_HAS_PKEYS 970 help 971 Memory Protection Keys provides a mechanism for enforcing 972 page-based protections, but without requiring modification of the 973 page tables when an application changes protection domains. 974 975 For details, see Documentation/core-api/protection-keys.rst 976 977 If unsure, say y. 978 979config PPC_SECURE_BOOT 980 prompt "Enable secure boot support" 981 bool 982 depends on PPC_POWERNV || PPC_PSERIES 983 depends on IMA_ARCH_POLICY 984 imply IMA_SECURE_AND_OR_TRUSTED_BOOT 985 help 986 Systems with firmware secure boot enabled need to define security 987 policies to extend secure boot to the OS. This config allows a user 988 to enable OS secure boot on systems that have firmware support for 989 it. If in doubt say N. 990 991config PPC_SECVAR_SYSFS 992 bool "Enable sysfs interface for POWER secure variables" 993 default y 994 depends on PPC_SECURE_BOOT 995 depends on SYSFS 996 help 997 POWER secure variables are managed and controlled by firmware. 998 These variables are exposed to userspace via sysfs to enable 999 read/write operations on these variables. Say Y if you have 1000 secure boot enabled and want to expose variables to userspace. 1001 1002config PPC_RTAS_FILTER 1003 bool "Enable filtering of RTAS syscalls" 1004 default y 1005 depends on PPC_RTAS 1006 help 1007 The RTAS syscall API has security issues that could be used to 1008 compromise system integrity. This option enforces restrictions on the 1009 RTAS calls and arguments passed by userspace programs to mitigate 1010 these issues. 1011 1012 Say Y unless you know what you are doing and the filter is causing 1013 problems for you. 1014 1015endmenu 1016 1017config ISA_DMA_API 1018 bool 1019 default PCI 1020 1021menu "Bus options" 1022 1023config ISA 1024 bool "Support for ISA-bus hardware" 1025 depends on PPC_CHRP 1026 select PPC_I8259 1027 help 1028 Find out whether you have ISA slots on your motherboard. ISA is the 1029 name of a bus system, i.e. the way the CPU talks to the other stuff 1030 inside your box. If you have an Apple machine, say N here; if you 1031 have an IBM RS/6000 or pSeries machine, say Y. If you have an 1032 embedded board, consult your board documentation. 1033 1034config GENERIC_ISA_DMA 1035 bool 1036 depends on ISA_DMA_API 1037 default y 1038 1039config PPC_INDIRECT_PCI 1040 bool 1041 depends on PCI 1042 default y if 40x || 44x 1043 1044config SBUS 1045 bool 1046 1047config FSL_SOC 1048 bool 1049 1050config FSL_PCI 1051 bool 1052 select ARCH_HAS_DMA_SET_MASK 1053 select PPC_INDIRECT_PCI 1054 select PCI_QUIRKS 1055 1056config FSL_PMC 1057 bool 1058 default y 1059 depends on SUSPEND && (PPC_85xx || PPC_86xx) 1060 help 1061 Freescale MPC85xx/MPC86xx power management controller support 1062 (suspend/resume). For MPC83xx see platforms/83xx/suspend.c 1063 1064config PPC4xx_CPM 1065 bool 1066 default y 1067 depends on SUSPEND && (44x || 40x) 1068 help 1069 PPC4xx Clock Power Management (CPM) support (suspend/resume). 1070 It also enables support for two different idle states (idle-wait 1071 and idle-doze). 1072 1073config 4xx_SOC 1074 bool 1075 1076config FSL_LBC 1077 bool "Freescale Local Bus support" 1078 help 1079 Enables reporting of errors from the Freescale local bus 1080 controller. Also contains some common code used by 1081 drivers for specific local bus peripherals. 1082 1083config FSL_GTM 1084 bool 1085 depends on PPC_83xx || QUICC_ENGINE || CPM2 1086 help 1087 Freescale General-purpose Timers support 1088 1089config PCI_8260 1090 bool 1091 depends on PCI && 8260 1092 select PPC_INDIRECT_PCI 1093 default y 1094 1095config FSL_RIO 1096 bool "Freescale Embedded SRIO Controller support" 1097 depends on RAPIDIO = y && HAVE_RAPIDIO 1098 default "n" 1099 help 1100 Include support for RapidIO controller on Freescale embedded 1101 processors (MPC8548, MPC8641, etc). 1102 1103endmenu 1104 1105config NONSTATIC_KERNEL 1106 bool 1107 1108menu "Advanced setup" 1109 depends on PPC32 1110 1111config ADVANCED_OPTIONS 1112 bool "Prompt for advanced kernel configuration options" 1113 help 1114 This option will enable prompting for a variety of advanced kernel 1115 configuration options. These options can cause the kernel to not 1116 work if they are set incorrectly, but can be used to optimize certain 1117 aspects of kernel memory management. 1118 1119 Unless you know what you are doing, say N here. 1120 1121comment "Default settings for advanced configuration options are used" 1122 depends on !ADVANCED_OPTIONS 1123 1124config LOWMEM_SIZE_BOOL 1125 bool "Set maximum low memory" 1126 depends on ADVANCED_OPTIONS 1127 help 1128 This option allows you to set the maximum amount of memory which 1129 will be used as "low memory", that is, memory which the kernel can 1130 access directly, without having to set up a kernel virtual mapping. 1131 This can be useful in optimizing the layout of kernel virtual 1132 memory. 1133 1134 Say N here unless you know what you are doing. 1135 1136config LOWMEM_SIZE 1137 hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL 1138 default "0x30000000" 1139 1140config LOWMEM_CAM_NUM_BOOL 1141 bool "Set number of CAMs to use to map low memory" 1142 depends on ADVANCED_OPTIONS && FSL_BOOKE 1143 help 1144 This option allows you to set the maximum number of CAM slots that 1145 will be used to map low memory. There are a limited number of slots 1146 available and even more limited number that will fit in the L1 MMU. 1147 However, using more entries will allow mapping more low memory. This 1148 can be useful in optimizing the layout of kernel virtual memory. 1149 1150 Say N here unless you know what you are doing. 1151 1152config LOWMEM_CAM_NUM 1153 depends on FSL_BOOKE 1154 int "Number of CAMs to use to map low memory" if LOWMEM_CAM_NUM_BOOL 1155 default 3 1156 1157config DYNAMIC_MEMSTART 1158 bool "Enable page aligned dynamic load address for kernel" 1159 depends on ADVANCED_OPTIONS && FLATMEM && (FSL_BOOKE || 44x) 1160 select NONSTATIC_KERNEL 1161 help 1162 This option enables the kernel to be loaded at any page aligned 1163 physical address. The kernel creates a mapping from KERNELBASE to 1164 the address where the kernel is loaded. The page size here implies 1165 the TLB page size of the mapping for kernel on the particular platform. 1166 Please refer to the init code for finding the TLB page size. 1167 1168 DYNAMIC_MEMSTART is an easy way of implementing pseudo-RELOCATABLE 1169 kernel image, where the only restriction is the page aligned kernel 1170 load address. When this option is enabled, the compile time physical 1171 address CONFIG_PHYSICAL_START is ignored. 1172 1173 This option is overridden by CONFIG_RELOCATABLE 1174 1175config PAGE_OFFSET_BOOL 1176 bool "Set custom page offset address" 1177 depends on ADVANCED_OPTIONS 1178 help 1179 This option allows you to set the kernel virtual address at which 1180 the kernel will map low memory. This can be useful in optimizing 1181 the virtual memory layout of the system. 1182 1183 Say N here unless you know what you are doing. 1184 1185config PAGE_OFFSET 1186 hex "Virtual address of memory base" if PAGE_OFFSET_BOOL 1187 default "0xc0000000" 1188 1189config KERNEL_START_BOOL 1190 bool "Set custom kernel base address" 1191 depends on ADVANCED_OPTIONS 1192 help 1193 This option allows you to set the kernel virtual address at which 1194 the kernel will be loaded. Normally this should match PAGE_OFFSET 1195 however there are times (like kdump) that one might not want them 1196 to be the same. 1197 1198 Say N here unless you know what you are doing. 1199 1200config KERNEL_START 1201 hex "Virtual address of kernel base" if KERNEL_START_BOOL 1202 default PAGE_OFFSET if PAGE_OFFSET_BOOL 1203 default "0xc2000000" if CRASH_DUMP && !NONSTATIC_KERNEL 1204 default "0xc0000000" 1205 1206config PHYSICAL_START_BOOL 1207 bool "Set physical address where the kernel is loaded" 1208 depends on ADVANCED_OPTIONS && FLATMEM && FSL_BOOKE 1209 help 1210 This gives the physical address where the kernel is loaded. 1211 1212 Say N here unless you know what you are doing. 1213 1214config PHYSICAL_START 1215 hex "Physical address where the kernel is loaded" if PHYSICAL_START_BOOL 1216 default "0x02000000" if PPC_BOOK3S && CRASH_DUMP && !NONSTATIC_KERNEL 1217 default "0x00000000" 1218 1219config PHYSICAL_ALIGN 1220 hex 1221 default "0x04000000" if FSL_BOOKE 1222 help 1223 This value puts the alignment restrictions on physical address 1224 where kernel is loaded and run from. Kernel is compiled for an 1225 address which meets above alignment restriction. 1226 1227config TASK_SIZE_BOOL 1228 bool "Set custom user task size" 1229 depends on ADVANCED_OPTIONS 1230 help 1231 This option allows you to set the amount of virtual address space 1232 allocated to user tasks. This can be useful in optimizing the 1233 virtual memory layout of the system. 1234 1235 Say N here unless you know what you are doing. 1236 1237config TASK_SIZE 1238 hex "Size of user task space" if TASK_SIZE_BOOL 1239 default "0x80000000" if PPC_8xx 1240 default "0xb0000000" if PPC_BOOK3S_32 && STRICT_KERNEL_RWX 1241 default "0xc0000000" 1242endmenu 1243 1244if PPC64 1245# This value must have zeroes in the bottom 60 bits otherwise lots will break 1246config PAGE_OFFSET 1247 hex 1248 default "0xc000000000000000" 1249config KERNEL_START 1250 hex 1251 default "0xc000000000000000" 1252config PHYSICAL_START 1253 hex 1254 default "0x00000000" 1255endif 1256 1257config ARCH_RANDOM 1258 def_bool n 1259 1260config PPC_LIB_RHEAP 1261 bool 1262 1263source "arch/powerpc/kvm/Kconfig" 1264 1265source "kernel/livepatch/Kconfig" 1266