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