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