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