1# SPDX-License-Identifier: GPL-2.0 2config PPC32 3 bool 4 default y if !PPC64 5 6config PPC64 7 bool "64-bit kernel" 8 select ZLIB_DEFLATE 9 help 10 This option selects whether a 32-bit or a 64-bit kernel 11 will be built. 12 13menu "Processor support" 14choice 15 prompt "Processor Type" 16 depends on PPC32 17 help 18 There are five families of 32 bit PowerPC chips supported. 19 The most common ones are the desktop and server CPUs (603, 20 604, 740, 750, 74xx) CPUs from Freescale and IBM, with their 21 embedded 512x/52xx/82xx/83xx/86xx counterparts. 22 The other embedded parts, namely 4xx, 8xx and e500 23 (85xx) each form a family of their own that is not compatible 24 with the others. 25 26 If unsure, select 52xx/6xx/7xx/74xx/82xx/83xx/86xx. 27 28config PPC_BOOK3S_32 29 bool "512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx" 30 imply PPC_FPU 31 select PPC_HAVE_PMU_SUPPORT 32 select HAVE_ARCH_VMAP_STACK 33 34config PPC_85xx 35 bool "Freescale 85xx" 36 select PPC_E500 37 38config PPC_8xx 39 bool "Freescale 8xx" 40 select ARCH_SUPPORTS_HUGETLBFS 41 select FSL_SOC 42 select PPC_KUEP 43 select HAVE_ARCH_VMAP_STACK 44 select HUGETLBFS 45 46config 40x 47 bool "AMCC 40x" 48 select PPC_DCR_NATIVE 49 select PPC_UDBG_16550 50 select 4xx_SOC 51 select HAVE_PCI 52 select PPC_KUEP if PPC_KUAP 53 54config 44x 55 bool "AMCC 44x, 46x or 47x" 56 select PPC_DCR_NATIVE 57 select PPC_UDBG_16550 58 select 4xx_SOC 59 select HAVE_PCI 60 select PHYS_64BIT 61 select PPC_KUEP 62 63endchoice 64 65config PPC_BOOK3S_603 66 bool "Support for 603 SW loaded TLB" 67 depends on PPC_BOOK3S_32 68 default y 69 help 70 Provide support for processors based on the 603 cores. Those 71 processors don't have a HASH MMU and provide SW TLB loading. 72 73config PPC_BOOK3S_604 74 bool "Support for 604+ HASH MMU" if PPC_BOOK3S_603 75 depends on PPC_BOOK3S_32 76 default y 77 help 78 Provide support for processors not based on the 603 cores. 79 Those processors have a HASH MMU. 80 81choice 82 prompt "Processor Type" 83 depends on PPC64 84 help 85 There are two families of 64 bit PowerPC chips supported. 86 The most common ones are the desktop and server CPUs 87 (POWER5, 970, POWER5+, POWER6, POWER7, POWER8, POWER9 ...) 88 89 The other are the "embedded" processors compliant with the 90 "Book 3E" variant of the architecture 91 92config PPC_BOOK3S_64 93 bool "Server processors" 94 select PPC_FPU 95 select PPC_HAVE_PMU_SUPPORT 96 select HAVE_ARCH_TRANSPARENT_HUGEPAGE 97 select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION 98 select ARCH_ENABLE_SPLIT_PMD_PTLOCK 99 select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE 100 select ARCH_SUPPORTS_HUGETLBFS 101 select ARCH_SUPPORTS_NUMA_BALANCING 102 select HAVE_MOVE_PMD 103 select HAVE_MOVE_PUD 104 select IRQ_WORK 105 select PPC_64S_HASH_MMU if !PPC_RADIX_MMU 106 select KASAN_VMALLOC if KASAN 107 108config PPC_BOOK3E_64 109 bool "Embedded processors" 110 select PPC_E500 111 select PPC_E500MC 112 select PPC_FPU # Make it a choice ? 113 select PPC_SMP_MUXED_IPI 114 select PPC_DOORBELL 115 select ZONE_DMA 116 117endchoice 118 119choice 120 prompt "CPU selection" 121 help 122 This will create a kernel which is optimised for a particular CPU. 123 The resulting kernel may not run on other CPUs, so use this with care. 124 125 If unsure, select Generic. 126 127config POWERPC64_CPU 128 bool "Generic (POWER5 and PowerPC 970 and above)" 129 depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN 130 select PPC_64S_HASH_MMU 131 132config POWERPC64_CPU 133 bool "Generic (POWER8 and above)" 134 depends on PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN 135 select ARCH_HAS_FAST_MULTIPLIER 136 select PPC_64S_HASH_MMU 137 select PPC_HAS_LBARX_LHARX 138 139config POWERPC_CPU 140 bool "Generic 32 bits powerpc" 141 depends on PPC_BOOK3S_32 142 143config CELL_CPU 144 bool "Cell Broadband Engine" 145 depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN 146 depends on !CC_IS_CLANG 147 select PPC_64S_HASH_MMU 148 149config PPC_970_CPU 150 bool "PowerPC 970 (including PowerPC G5)" 151 depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN 152 select PPC_64S_HASH_MMU 153 154config POWER6_CPU 155 bool "POWER6" 156 depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN 157 select PPC_64S_HASH_MMU 158 159config POWER7_CPU 160 bool "POWER7" 161 depends on PPC_BOOK3S_64 162 select ARCH_HAS_FAST_MULTIPLIER 163 select PPC_64S_HASH_MMU 164 select PPC_HAS_LBARX_LHARX 165 166config POWER8_CPU 167 bool "POWER8" 168 depends on PPC_BOOK3S_64 169 select ARCH_HAS_FAST_MULTIPLIER 170 select PPC_64S_HASH_MMU 171 select PPC_HAS_LBARX_LHARX 172 173config POWER9_CPU 174 bool "POWER9" 175 depends on PPC_BOOK3S_64 176 select ARCH_HAS_FAST_MULTIPLIER 177 select PPC_HAS_LBARX_LHARX 178 179config POWER10_CPU 180 bool "POWER10" 181 depends on PPC_BOOK3S_64 182 select ARCH_HAS_FAST_MULTIPLIER 183 select PPC_HAVE_PREFIXED_SUPPORT 184 select PPC_HAVE_PCREL_SUPPORT 185 186config E5500_CPU 187 bool "Freescale e5500" 188 depends on PPC64 && PPC_E500 189 190config E6500_CPU 191 bool "Freescale e6500" 192 depends on PPC64 && PPC_E500 193 depends on !CC_IS_CLANG 194 select PPC_HAS_LBARX_LHARX 195 196config 405_CPU 197 bool "40x family" 198 depends on 40x 199 depends on !CC_IS_CLANG 200 201config 440_CPU 202 bool "440 (44x family)" 203 depends on 44x 204 205config 464_CPU 206 bool "464 (44x family)" 207 depends on 44x 208 depends on !CC_IS_CLANG 209 210config 476_CPU 211 bool "476 (47x family)" 212 depends on PPC_47x 213 depends on !CC_IS_CLANG 214 215config 860_CPU 216 bool "8xx family" 217 depends on PPC_8xx 218 depends on !CC_IS_CLANG 219 220config E300C2_CPU 221 bool "e300c2 (832x)" 222 depends on PPC_BOOK3S_32 223 depends on !CC_IS_CLANG 224 225config E300C3_CPU 226 bool "e300c3 (831x)" 227 depends on PPC_BOOK3S_32 228 depends on !CC_IS_CLANG 229 230config G4_CPU 231 bool "G4 (74xx)" 232 depends on PPC_BOOK3S_32 233 select ALTIVEC 234 235config E500_CPU 236 bool "e500 (8540)" 237 depends on PPC_85xx && !PPC_E500MC 238 239config E500MC_CPU 240 bool "e500mc" 241 depends on PPC_85xx && PPC_E500MC 242 243config TOOLCHAIN_DEFAULT_CPU 244 bool "Rely on the toolchain's implicit default CPU" 245 246endchoice 247 248config TARGET_CPU_BOOL 249 bool 250 default !TOOLCHAIN_DEFAULT_CPU 251 252config TARGET_CPU 253 string 254 depends on TARGET_CPU_BOOL 255 default "cell" if CELL_CPU 256 default "970" if PPC_970_CPU 257 default "power6" if POWER6_CPU 258 default "power7" if POWER7_CPU 259 default "power8" if POWER8_CPU 260 default "power9" if POWER9_CPU 261 default "power10" if POWER10_CPU 262 default "e5500" if E5500_CPU 263 default "e6500" if E6500_CPU 264 default "power4" if POWERPC64_CPU && !CPU_LITTLE_ENDIAN 265 default "power8" if POWERPC64_CPU && CPU_LITTLE_ENDIAN 266 default "405" if 405_CPU 267 default "440" if 440_CPU 268 default "464" if 464_CPU 269 default "476" if 476_CPU 270 default "860" if 860_CPU 271 default "e300c2" if E300C2_CPU 272 default "e300c3" if E300C3_CPU 273 default "G4" if G4_CPU 274 default "8540" if E500_CPU 275 default "e500mc" if E500MC_CPU 276 default "powerpc" if POWERPC_CPU 277 278config PPC_BOOK3S 279 def_bool y 280 depends on PPC_BOOK3S_32 || PPC_BOOK3S_64 281 282config PPC_E500 283 select FSL_EMB_PERFMON 284 bool 285 select ARCH_SUPPORTS_HUGETLBFS if PHYS_64BIT || PPC64 286 select PPC_SMP_MUXED_IPI 287 select PPC_DOORBELL 288 select PPC_KUEP 289 290config PPC_E500MC 291 bool "e500mc Support" 292 select PPC_FPU 293 select COMMON_CLK 294 depends on PPC_E500 295 help 296 This must be enabled for running on e500mc (and derivatives 297 such as e5500/e6500), and must be disabled for running on 298 e500v1 or e500v2. 299 300config PPC_FPU_REGS 301 bool 302 303config PPC_FPU 304 bool "Support for Floating Point Unit (FPU)" if PPC_MPC832x 305 default y if PPC64 306 select PPC_FPU_REGS 307 help 308 This must be enabled to support the Floating Point Unit 309 Most 6xx have an FPU but e300c2 core (mpc832x) don't have 310 an FPU, so when building an embedded kernel for that target 311 you can disable FPU support. 312 313 If unsure say Y. 314 315config FSL_EMB_PERFMON 316 bool "Freescale Embedded Perfmon" 317 depends on PPC_E500 || PPC_83xx 318 help 319 This is the Performance Monitor support found on the e500 core 320 and some e300 cores (c3 and c4). Select this only if your 321 core supports the Embedded Performance Monitor APU 322 323config FSL_EMB_PERF_EVENT 324 bool 325 depends on FSL_EMB_PERFMON && PERF_EVENTS && !PPC_PERF_CTRS 326 default y 327 328config FSL_EMB_PERF_EVENT_E500 329 bool 330 depends on FSL_EMB_PERF_EVENT && PPC_E500 331 default y 332 333config 4xx 334 bool 335 depends on 40x || 44x 336 default y 337 338config BOOKE 339 bool 340 depends on PPC_E500 || 44x 341 default y 342 343config BOOKE_OR_40x 344 bool 345 depends on BOOKE || 40x 346 default y 347 348config PTE_64BIT 349 bool 350 depends on 44x || PPC_E500 || PPC_86xx 351 default y if PHYS_64BIT 352 353config PHYS_64BIT 354 bool 'Large physical address support' if PPC_E500 || PPC_86xx 355 depends on (44x || PPC_E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx 356 select PHYS_ADDR_T_64BIT 357 help 358 This option enables kernel support for larger than 32-bit physical 359 addresses. This feature may not be available on all cores. 360 361 If you have more than 3.5GB of RAM or so, you also need to enable 362 SWIOTLB under Kernel Options for this to work. The actual number 363 is platform-dependent. 364 365 If in doubt, say N here. 366 367config ALTIVEC 368 bool "AltiVec Support" 369 depends on PPC_BOOK3S || (PPC_E500MC && PPC64 && !E5500_CPU) 370 select PPC_FPU 371 help 372 This option enables kernel support for the Altivec extensions to the 373 PowerPC processor. The kernel currently supports saving and restoring 374 altivec registers, and turning on the 'altivec enable' bit so user 375 processes can execute altivec instructions. 376 377 This option is only usefully if you have a processor that supports 378 altivec (G4, otherwise known as 74xx series), but does not have 379 any affect on a non-altivec cpu (it does, however add code to the 380 kernel). 381 382 If in doubt, say Y here. 383 384config VSX 385 bool "VSX Support" 386 depends on PPC_BOOK3S_64 && ALTIVEC && PPC_FPU 387 help 388 389 This option enables kernel support for the Vector Scaler extensions 390 to the PowerPC processor. The kernel currently supports saving and 391 restoring VSX registers, and turning on the 'VSX enable' bit so user 392 processes can execute VSX instructions. 393 394 This option is only useful if you have a processor that supports 395 VSX (P7 and above), but does not have any affect on a non-VSX 396 CPUs (it does, however add code to the kernel). 397 398 If in doubt, say Y here. 399 400config SPE_POSSIBLE 401 def_bool y 402 depends on PPC_E500 && !PPC_E500MC 403 404config SPE 405 bool "SPE Support" 406 depends on SPE_POSSIBLE 407 default y 408 help 409 This option enables kernel support for the Signal Processing 410 Extensions (SPE) to the PowerPC processor. The kernel currently 411 supports saving and restoring SPE registers, and turning on the 412 'spe enable' bit so user processes can execute SPE instructions. 413 414 This option is only useful if you have a processor that supports 415 SPE (e500, otherwise known as 85xx series), but does not have any 416 effect on a non-spe cpu (it does, however add code to the kernel). 417 418 If in doubt, say Y here. 419 420config PPC_64S_HASH_MMU 421 bool "Hash MMU Support" 422 depends on PPC_BOOK3S_64 423 default y 424 help 425 Enable support for the Power ISA Hash style MMU. This is implemented 426 by all IBM Power and other 64-bit Book3S CPUs before ISA v3.0. The 427 OpenPOWER ISA does not mandate the hash MMU and some CPUs do not 428 implement it (e.g., Microwatt). 429 430 Note that POWER9 PowerVM platforms only support the hash 431 MMU. From POWER10 radix is also supported by PowerVM. 432 433 If you're unsure, say Y. 434 435config PPC_RADIX_MMU 436 bool "Radix MMU Support" 437 depends on PPC_BOOK3S_64 438 select ARCH_HAS_GIGANTIC_PAGE 439 default y 440 help 441 Enable support for the Power ISA 3.0 Radix style MMU. Currently this 442 is only implemented by IBM Power9 CPUs, if you don't have one of them 443 you can probably disable this. 444 445config PPC_RADIX_MMU_DEFAULT 446 bool "Default to using the Radix MMU when possible" if PPC_64S_HASH_MMU 447 depends on PPC_BOOK3S_64 448 depends on PPC_RADIX_MMU 449 default y 450 help 451 When the hardware supports the Radix MMU, default to using it unless 452 "disable_radix[=yes]" is specified on the kernel command line. 453 454 If this option is disabled, the Hash MMU will be used by default, 455 unless "disable_radix=no" is specified on the kernel command line. 456 457 If you're unsure, say Y. 458 459config PPC_KERNEL_PREFIXED 460 depends on PPC_HAVE_PREFIXED_SUPPORT 461 depends on CC_HAS_PREFIXED 462 default n 463 bool "Build Kernel with Prefixed Instructions" 464 help 465 POWER10 and later CPUs support prefixed instructions, 8 byte 466 instructions that include large immediate, pc relative addressing, 467 and various floating point, vector, MMA. 468 469 This option builds the kernel with prefixed instructions, and 470 allows a pc relative addressing option to be selected. 471 472 Kernel support for prefixed instructions in applications and guests 473 is not affected by this option. 474 475config PPC_KERNEL_PCREL 476 depends on PPC_HAVE_PCREL_SUPPORT 477 depends on PPC_HAVE_PREFIXED_SUPPORT 478 depends on CC_HAS_PCREL 479 default n 480 select PPC_KERNEL_PREFIXED 481 bool "Build Kernel with PC-Relative addressing model" 482 help 483 POWER10 and later CPUs support pc relative addressing. Recent 484 compilers have support for an ELF ABI extension for a pc relative 485 ABI. 486 487 This option builds the kernel with the pc relative ABI model. 488 489config PPC_KUEP 490 bool "Kernel Userspace Execution Prevention" if !40x 491 default y if !40x 492 help 493 Enable support for Kernel Userspace Execution Prevention (KUEP) 494 495 If you're unsure, say Y. 496 497config PPC_KUAP 498 bool "Kernel Userspace Access Protection" 499 default y 500 help 501 Enable support for Kernel Userspace Access Protection (KUAP) 502 503 If you're unsure, say Y. 504 505config PPC_KUAP_DEBUG 506 bool "Extra debugging for Kernel Userspace Access Protection" 507 depends on PPC_KUAP 508 help 509 Add extra debugging for Kernel Userspace Access Protection (KUAP) 510 If you're unsure, say N. 511 512config PPC_PKEY 513 def_bool y 514 depends on PPC_BOOK3S_64 515 depends on PPC_MEM_KEYS || PPC_KUAP || PPC_KUEP 516 517 518config PPC_MMU_NOHASH 519 def_bool y 520 depends on !PPC_BOOK3S 521 522config PPC_HAVE_PMU_SUPPORT 523 bool 524 525config PPC_HAVE_PREFIXED_SUPPORT 526 bool 527 528config PPC_HAVE_PCREL_SUPPORT 529 bool 530 531config PMU_SYSFS 532 bool "Create PMU SPRs sysfs file" 533 default n 534 help 535 This option enables sysfs file creation for PMU SPRs like MMCR* and PMC*. 536 537config PPC_PERF_CTRS 538 def_bool y 539 depends on PERF_EVENTS && PPC_HAVE_PMU_SUPPORT 540 help 541 This enables the powerpc-specific perf_event back-end. 542 543config FORCE_SMP 544 # Allow platforms to force SMP=y by selecting this 545 bool 546 select SMP 547 548config SMP 549 depends on PPC_BOOK3S || PPC_E500 || PPC_47x 550 select GENERIC_IRQ_MIGRATION 551 bool "Symmetric multi-processing support" if !FORCE_SMP 552 help 553 This enables support for systems with more than one CPU. If you have 554 a system with only one CPU, say N. If you have a system with more 555 than one CPU, say Y. Note that the kernel does not currently 556 support SMP machines with 603/603e/603ev or PPC750 ("G3") processors 557 since they have inadequate hardware support for multiprocessor 558 operation. 559 560 If you say N here, the kernel will run on single and multiprocessor 561 machines, but will use only one CPU of a multiprocessor machine. If 562 you say Y here, the kernel will run on single-processor machines. 563 On a single-processor machine, the kernel will run faster if you say 564 N here. 565 566 If you don't know what to do here, say N. 567 568config NR_CPUS 569 int "Maximum number of CPUs (2-8192)" if SMP 570 range 2 8192 if SMP 571 default "1" if !SMP 572 default "32" if PPC64 573 default "4" 574 575config NOT_COHERENT_CACHE 576 bool 577 depends on 4xx || PPC_8xx || PPC_MPC512x || \ 578 GAMECUBE_COMMON || AMIGAONE 579 select ARCH_HAS_DMA_PREP_COHERENT 580 select ARCH_HAS_SYNC_DMA_FOR_DEVICE 581 select ARCH_HAS_SYNC_DMA_FOR_CPU 582 select DMA_DIRECT_REMAP 583 default n if PPC_47x 584 default y 585 586config CHECK_CACHE_COHERENCY 587 bool 588 589config PPC_DOORBELL 590 bool 591 592endmenu 593 594config VDSO32 595 def_bool y 596 depends on PPC32 || COMPAT 597 help 598 This symbol controls whether we build the 32-bit VDSO. We obviously 599 want to do that if we're building a 32-bit kernel. If we're building 600 a 64-bit kernel then we only want a 32-bit VDSO if we're also enabling 601 COMPAT. 602 603choice 604 prompt "Endianness selection" 605 default CPU_BIG_ENDIAN 606 help 607 This option selects whether a big endian or little endian kernel will 608 be built. 609 610config CPU_BIG_ENDIAN 611 bool "Build big endian kernel" 612 help 613 Build a big endian kernel. 614 615 If unsure, select this option. 616 617config CPU_LITTLE_ENDIAN 618 bool "Build little endian kernel" 619 depends on PPC_BOOK3S_64 620 select PPC64_BOOT_WRAPPER 621 help 622 Build a little endian kernel. 623 624 Note that if cross compiling a little endian kernel, 625 CROSS_COMPILE must point to a toolchain capable of targeting 626 little endian powerpc. 627 628endchoice 629 630config PPC64_ELF_ABI_V1 631 def_bool PPC64 && (CPU_BIG_ENDIAN && !PPC64_BIG_ENDIAN_ELF_ABI_V2) 632 633config PPC64_ELF_ABI_V2 634 def_bool PPC64 && !PPC64_ELF_ABI_V1 635 636config PPC64_BOOT_WRAPPER 637 def_bool n 638 depends on CPU_LITTLE_ENDIAN 639