1 # SPDX-License-Identifier: GPL-2.0
5 select KASAN_VMALLOC if KASAN && MODULES
11 This option selects whether a 32-bit or a 64-bit kernel
14 menu "Processor support"
16 prompt "Processor Type"
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
27 If unsure, select 52xx/6xx/7xx/74xx/82xx/83xx/86xx.
30 bool "512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx"
32 select PPC_HAVE_PMU_SUPPORT
35 select HAVE_ARCH_VMAP_STACK
43 select ARCH_SUPPORTS_HUGETLBFS
47 select HAVE_ARCH_VMAP_STACK
58 bool "AMCC 44x, 46x or 47x"
68 bool "Support for 603 SW loaded TLB"
69 depends on PPC_BOOK3S_32
72 Provide support for processors based on the 603 cores. Those
73 processors don't have a HASH MMU and provide SW TLB loading.
76 bool "Support for 604+ HASH MMU" if PPC_BOOK3S_603
77 depends on PPC_BOOK3S_32
80 Provide support for processors not based on the 603 cores.
81 Those processors have a HASH MMU.
84 prompt "Processor Type"
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 ...)
91 The other are the "embedded" processors compliant with the
92 "Book 3E" variant of the architecture
95 bool "Server processors"
97 select PPC_HAVE_PMU_SUPPORT
98 select HAVE_ARCH_TRANSPARENT_HUGEPAGE
99 select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION
100 select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE
101 select ARCH_SUPPORTS_HUGETLBFS
102 select ARCH_SUPPORTS_NUMA_BALANCING
107 bool "Embedded processors"
108 select PPC_FPU # Make it a choice ?
109 select PPC_SMP_MUXED_IPI
115 prompt "CPU selection"
118 This will create a kernel which is optimised for a particular CPU.
119 The resulting kernel may not run on other CPUs, so use this with care.
121 If unsure, select Generic.
124 bool "Generic (POWER4 and above)"
125 depends on PPC64 && !CPU_LITTLE_ENDIAN
128 bool "Generic (POWER8 and above)"
129 depends on PPC64 && CPU_LITTLE_ENDIAN
130 select ARCH_HAS_FAST_MULTIPLIER
133 bool "Generic 32 bits powerpc"
134 depends on PPC32 && !PPC_8xx
137 bool "Cell Broadband Engine"
138 depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
142 depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
146 depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
150 depends on PPC_BOOK3S_64
151 select ARCH_HAS_FAST_MULTIPLIER
155 depends on PPC_BOOK3S_64
156 select ARCH_HAS_FAST_MULTIPLIER
160 depends on PPC_BOOK3S_64
161 select ARCH_HAS_FAST_MULTIPLIER
164 bool "Freescale e5500"
168 bool "Freescale e6500"
177 depends on PPC_BOOK3S_32
181 depends on PPC_BOOK3S_32
185 depends on PPC_BOOK3S_32
190 config TARGET_CPU_BOOL
196 depends on TARGET_CPU_BOOL
197 default "cell" if CELL_CPU
198 default "power5" if POWER5_CPU
199 default "power6" if POWER6_CPU
200 default "power7" if POWER7_CPU
201 default "power8" if POWER8_CPU
202 default "power9" if POWER9_CPU
203 default "860" if 860_CPU
204 default "e300c2" if E300C2_CPU
205 default "e300c3" if E300C3_CPU
206 default "G4" if G4_CPU
210 depends on PPC_BOOK3S_32 || PPC_BOOK3S_64
214 depends on PPC_BOOK3E_64
217 select FSL_EMB_PERFMON
218 select PPC_FSL_BOOK3E
222 bool "e500mc Support"
227 This must be enabled for running on e500mc (and derivatives
228 such as e5500/e6500), and must be disabled for running on
235 bool "Support for Floating Point Unit (FPU)" if PPC_MPC832x
239 This must be enabled to support the Floating Point Unit
240 Most 6xx have an FPU but e300c2 core (mpc832x) don't have
241 an FPU, so when building an embedded kernel for that target
242 you can disable FPU support.
246 config FSL_EMB_PERFMON
247 bool "Freescale Embedded Perfmon"
248 depends on E500 || PPC_83xx
250 This is the Performance Monitor support found on the e500 core
251 and some e300 cores (c3 and c4). Select this only if your
252 core supports the Embedded Performance Monitor APU
254 config FSL_EMB_PERF_EVENT
256 depends on FSL_EMB_PERFMON && PERF_EVENTS && !PPC_PERF_CTRS
259 config FSL_EMB_PERF_EVENT_E500
261 depends on FSL_EMB_PERF_EVENT && E500
266 depends on 40x || 44x
271 depends on E500 || 44x || PPC_BOOK3E
276 depends on E500 && PPC32
279 # this is for common code between PPC32 & PPC64 FSL BOOKE
280 config PPC_FSL_BOOK3E
282 select ARCH_SUPPORTS_HUGETLBFS if PHYS_64BIT || PPC64
283 select FSL_EMB_PERFMON
284 select PPC_SMP_MUXED_IPI
286 default y if FSL_BOOKE
290 depends on 44x || E500 || PPC_86xx
291 default y if PHYS_64BIT
294 bool 'Large physical address support' if E500 || PPC_86xx
295 depends on (44x || E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx
296 select PHYS_ADDR_T_64BIT
298 This option enables kernel support for larger than 32-bit physical
299 addresses. This feature may not be available on all cores.
301 If you have more than 3.5GB of RAM or so, you also need to enable
302 SWIOTLB under Kernel Options for this to work. The actual number
303 is platform-dependent.
305 If in doubt, say N here.
308 bool "AltiVec Support"
309 depends on PPC_BOOK3S_32 || PPC_BOOK3S_64 || (PPC_E500MC && PPC64)
311 This option enables kernel support for the Altivec extensions to the
312 PowerPC processor. The kernel currently supports saving and restoring
313 altivec registers, and turning on the 'altivec enable' bit so user
314 processes can execute altivec instructions.
316 This option is only usefully if you have a processor that supports
317 altivec (G4, otherwise known as 74xx series), but does not have
318 any affect on a non-altivec cpu (it does, however add code to the
321 If in doubt, say Y here.
325 depends on PPC_BOOK3S_64 && ALTIVEC && PPC_FPU
328 This option enables kernel support for the Vector Scaler extensions
329 to the PowerPC processor. The kernel currently supports saving and
330 restoring VSX registers, and turning on the 'VSX enable' bit so user
331 processes can execute VSX instructions.
333 This option is only useful if you have a processor that supports
334 VSX (P7 and above), but does not have any affect on a non-VSX
335 CPUs (it does, however add code to the kernel).
337 If in doubt, say Y here.
341 depends on E500 && !PPC_E500MC
345 depends on SPE_POSSIBLE
348 This option enables kernel support for the Signal Processing
349 Extensions (SPE) to the PowerPC processor. The kernel currently
350 supports saving and restoring SPE registers, and turning on the
351 'spe enable' bit so user processes can execute SPE instructions.
353 This option is only useful if you have a processor that supports
354 SPE (e500, otherwise known as 85xx series), but does not have any
355 effect on a non-spe cpu (it does, however add code to the kernel).
357 If in doubt, say Y here.
359 config ARCH_ENABLE_SPLIT_PMD_PTLOCK
361 depends on PPC_BOOK3S_64
364 bool "Radix MMU Support"
365 depends on PPC_BOOK3S_64
366 select ARCH_HAS_GIGANTIC_PAGE
371 Enable support for the Power ISA 3.0 Radix style MMU. Currently this
372 is only implemented by IBM Power9 CPUs, if you don't have one of them
373 you can probably disable this.
375 config PPC_RADIX_MMU_DEFAULT
376 bool "Default to using the Radix MMU when possible"
377 depends on PPC_RADIX_MMU
380 When the hardware supports the Radix MMU, default to using it unless
381 "disable_radix[=yes]" is specified on the kernel command line.
383 If this option is disabled, the Hash MMU will be used by default,
384 unless "disable_radix=no" is specified on the kernel command line.
386 If you're unsure, say Y.
392 bool "Kernel Userspace Execution Prevention"
393 depends on PPC_HAVE_KUEP
394 default y if !PPC_BOOK3S_32
396 Enable support for Kernel Userspace Execution Prevention (KUEP)
398 If you're unsure, say Y.
404 bool "Kernel Userspace Access Protection"
405 depends on PPC_HAVE_KUAP
406 default y if !PPC_BOOK3S_32
408 Enable support for Kernel Userspace Access Protection (KUAP)
410 If you're unsure, say Y.
412 config PPC_KUAP_DEBUG
413 bool "Extra debugging for Kernel Userspace Access Protection"
414 depends on PPC_KUAP && (PPC_RADIX_MMU || PPC32)
416 Add extra debugging for Kernel Userspace Access Protection (KUAP)
417 If you're unsure, say N.
421 depends on PPC_BOOK3S_64
422 depends on PPC_MEM_KEYS || PPC_KUAP || PPC_KUEP
425 config PPC_MMU_NOHASH
427 depends on !PPC_BOOK3S
429 config PPC_MMU_NOHASH_32
431 depends on PPC_MMU_NOHASH && PPC32
433 config PPC_BOOK3E_MMU
435 depends on FSL_BOOKE || PPC_BOOK3E
440 config PPC_HAVE_PMU_SUPPORT
444 bool "Create PMU SPRs sysfs file"
447 This option enables sysfs file creation for PMU SPRs like MMCR* and PMC*.
451 depends on PERF_EVENTS && PPC_HAVE_PMU_SUPPORT
453 This enables the powerpc-specific perf_event back-end.
456 # Allow platforms to force SMP=y by selecting this
461 depends on PPC_BOOK3S || PPC_BOOK3E || FSL_BOOKE || PPC_47x
462 select GENERIC_IRQ_MIGRATION
463 bool "Symmetric multi-processing support" if !FORCE_SMP
465 This enables support for systems with more than one CPU. If you have
466 a system with only one CPU, say N. If you have a system with more
467 than one CPU, say Y. Note that the kernel does not currently
468 support SMP machines with 603/603e/603ev or PPC750 ("G3") processors
469 since they have inadequate hardware support for multiprocessor
472 If you say N here, the kernel will run on single and multiprocessor
473 machines, but will use only one CPU of a multiprocessor machine. If
474 you say Y here, the kernel will run on single-processor machines.
475 On a single-processor machine, the kernel will run faster if you say
478 If you don't know what to do here, say N.
481 int "Maximum number of CPUs (2-8192)"
484 default "32" if PPC64
487 config NOT_COHERENT_CACHE
489 depends on 4xx || PPC_8xx || PPC_MPC512x || \
490 GAMECUBE_COMMON || AMIGAONE
491 select ARCH_HAS_DMA_PREP_COHERENT
492 select ARCH_HAS_SYNC_DMA_FOR_DEVICE
493 select ARCH_HAS_SYNC_DMA_FOR_CPU
494 select DMA_DIRECT_REMAP
498 config CHECK_CACHE_COHERENCY
508 depends on PPC32 || COMPAT
510 This symbol controls whether we build the 32-bit VDSO. We obviously
511 want to do that if we're building a 32-bit kernel. If we're building
512 a 64-bit kernel then we only want a 32-bit VDSO if we're also enabling
516 prompt "Endianness selection"
517 default CPU_BIG_ENDIAN
519 This option selects whether a big endian or little endian kernel will
522 config CPU_BIG_ENDIAN
523 bool "Build big endian kernel"
525 Build a big endian kernel.
527 If unsure, select this option.
529 config CPU_LITTLE_ENDIAN
530 bool "Build little endian kernel"
531 depends on PPC_BOOK3S_64
532 select PPC64_BOOT_WRAPPER
534 Build a little endian kernel.
536 Note that if cross compiling a little endian kernel,
537 CROSS_COMPILE must point to a toolchain capable of targeting
538 little endian powerpc.
542 config PPC64_BOOT_WRAPPER
544 depends on CPU_LITTLE_ENDIAN