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