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