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
44 select SYS_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 SYS_SUPPORTS_HUGETLBFS
99 select HAVE_ARCH_TRANSPARENT_HUGEPAGE
100 select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE
101 select ARCH_SUPPORTS_NUMA_BALANCING
106 bool "Embedded processors"
107 select PPC_FPU # Make it a choice ?
108 select PPC_SMP_MUXED_IPI
114 prompt "CPU selection"
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.
120 If unsure, select Generic.
123 bool "Generic (POWER4 and above)"
124 depends on PPC64 && !CPU_LITTLE_ENDIAN
127 bool "Generic (POWER8 and above)"
128 depends on PPC64 && CPU_LITTLE_ENDIAN
129 select ARCH_HAS_FAST_MULTIPLIER
132 bool "Generic 32 bits powerpc"
133 depends on PPC32 && !PPC_8xx
136 bool "Cell Broadband Engine"
137 depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
141 depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
145 depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
149 depends on PPC_BOOK3S_64
150 select ARCH_HAS_FAST_MULTIPLIER
154 depends on PPC_BOOK3S_64
155 select ARCH_HAS_FAST_MULTIPLIER
159 depends on PPC_BOOK3S_64
160 select ARCH_HAS_FAST_MULTIPLIER
163 bool "Freescale e5500"
167 bool "Freescale e6500"
176 depends on PPC_BOOK3S_32
180 depends on PPC_BOOK3S_32
184 depends on PPC_BOOK3S_32
189 config TARGET_CPU_BOOL
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
209 depends on PPC_BOOK3S_32 || PPC_BOOK3S_64
213 depends on PPC_BOOK3E_64
216 select FSL_EMB_PERFMON
217 select PPC_FSL_BOOK3E
221 bool "e500mc Support"
226 This must be enabled for running on e500mc (and derivatives
227 such as e5500/e6500), and must be disabled for running on
234 bool "Support for Floating Point Unit (FPU)" if PPC_MPC832x
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.
245 config FSL_EMB_PERFMON
246 bool "Freescale Embedded Perfmon"
247 depends on E500 || PPC_83xx
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
253 config FSL_EMB_PERF_EVENT
255 depends on FSL_EMB_PERFMON && PERF_EVENTS && !PPC_PERF_CTRS
258 config FSL_EMB_PERF_EVENT_E500
260 depends on FSL_EMB_PERF_EVENT && E500
265 depends on 40x || 44x
270 depends on E500 || 44x || PPC_BOOK3E
275 depends on E500 && PPC32
278 # this is for common code between PPC32 & PPC64 FSL BOOKE
279 config PPC_FSL_BOOK3E
281 select FSL_EMB_PERFMON
282 select PPC_SMP_MUXED_IPI
283 select SYS_SUPPORTS_HUGETLBFS if PHYS_64BIT || PPC64
285 default y if FSL_BOOKE
289 depends on 44x || E500 || PPC_86xx
290 default y if 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
297 This option enables kernel support for larger than 32-bit physical
298 addresses. This feature may not be available on all cores.
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.
304 If in doubt, say N here.
307 bool "AltiVec Support"
308 depends on PPC_BOOK3S_32 || PPC_BOOK3S_64 || (PPC_E500MC && PPC64)
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.
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
320 If in doubt, say Y here.
324 depends on PPC_BOOK3S_64 && ALTIVEC && PPC_FPU
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.
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).
336 If in doubt, say Y here.
340 depends on E500 && !PPC_E500MC
344 depends on SPE_POSSIBLE
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.
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).
356 If in doubt, say Y here.
358 config ARCH_ENABLE_SPLIT_PMD_PTLOCK
360 depends on PPC_BOOK3S_64
363 bool "Radix MMU Support"
364 depends on PPC_BOOK3S_64
365 select ARCH_HAS_GIGANTIC_PAGE
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.
374 config PPC_RADIX_MMU_DEFAULT
375 bool "Default to using the Radix MMU when possible"
376 depends on PPC_RADIX_MMU
379 When the hardware supports the Radix MMU, default to using it unless
380 "disable_radix[=yes]" is specified on the kernel command line.
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.
385 If you're unsure, say Y.
391 bool "Kernel Userspace Execution Prevention"
392 depends on PPC_HAVE_KUEP
393 default y if !PPC_BOOK3S_32
395 Enable support for Kernel Userspace Execution Prevention (KUEP)
397 If you're unsure, say Y.
403 bool "Kernel Userspace Access Protection"
404 depends on PPC_HAVE_KUAP
405 default y if !PPC_BOOK3S_32
407 Enable support for Kernel Userspace Access Protection (KUAP)
409 If you're unsure, say Y.
411 config PPC_KUAP_DEBUG
412 bool "Extra debugging for Kernel Userspace Access Protection"
413 depends on PPC_KUAP && (PPC_RADIX_MMU || PPC32)
415 Add extra debugging for Kernel Userspace Access Protection (KUAP)
416 If you're unsure, say N.
420 depends on PPC_BOOK3S_64
421 depends on PPC_MEM_KEYS || PPC_KUAP || PPC_KUEP
423 config ARCH_ENABLE_HUGEPAGE_MIGRATION
425 depends on PPC_BOOK3S_64 && HUGETLB_PAGE && MIGRATION
428 config PPC_MMU_NOHASH
430 depends on !PPC_BOOK3S
432 config PPC_MMU_NOHASH_32
434 depends on PPC_MMU_NOHASH && PPC32
436 config PPC_BOOK3E_MMU
438 depends on FSL_BOOKE || PPC_BOOK3E
443 config PPC_HAVE_PMU_SUPPORT
447 bool "Create PMU SPRs sysfs file"
450 This option enables sysfs file creation for PMU SPRs like MMCR* and PMC*.
454 depends on PERF_EVENTS && PPC_HAVE_PMU_SUPPORT
456 This enables the powerpc-specific perf_event back-end.
459 # Allow platforms to force SMP=y by selecting this
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
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
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
481 If you don't know what to do here, say N.
484 int "Maximum number of CPUs (2-8192)"
487 default "32" if PPC64
490 config NOT_COHERENT_CACHE
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
501 config CHECK_CACHE_COHERENCY
511 depends on PPC32 || COMPAT
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
519 prompt "Endianness selection"
520 default CPU_BIG_ENDIAN
522 This option selects whether a big endian or little endian kernel will
525 config CPU_BIG_ENDIAN
526 bool "Build big endian kernel"
528 Build a big endian kernel.
530 If unsure, select this option.
532 config CPU_LITTLE_ENDIAN
533 bool "Build little endian kernel"
534 depends on PPC_BOOK3S_64
535 select PPC64_BOOT_WRAPPER
537 Build a little endian kernel.
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.
545 config PPC64_BOOT_WRAPPER
547 depends on CPU_LITTLE_ENDIAN