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