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
17 menu "Processor support"
19 prompt "Processor Type"
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
30 If unsure, select 52xx/6xx/7xx/74xx/82xx/83xx/86xx.
33 bool "512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx"
36 select PPC_HAVE_PMU_SUPPORT
39 select HAVE_ARCH_VMAP_STACK
48 select SYS_SUPPORTS_HUGETLBFS
51 select HAVE_ARCH_VMAP_STACK
62 bool "AMCC 44x, 46x or 47x"
75 prompt "Processor Type"
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 ...)
82 The other are the "embedded" processors compliant with the
83 "Book 3E" variant of the architecture
86 bool "Server processors"
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
97 bool "Embedded processors"
98 select PPC_FPU # Make it a choice ?
99 select PPC_SMP_MUXED_IPI
105 prompt "CPU selection"
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.
111 If unsure, select Generic.
114 bool "Generic (POWER4 and above)"
115 depends on PPC64 && !CPU_LITTLE_ENDIAN
118 bool "Generic (POWER8 and above)"
119 depends on PPC64 && CPU_LITTLE_ENDIAN
120 select ARCH_HAS_FAST_MULTIPLIER
123 bool "Generic 32 bits powerpc"
124 depends on PPC32 && !PPC_8xx && !PPC_85xx
127 bool "Cell Broadband Engine"
128 depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
132 depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
136 depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
140 depends on PPC_BOOK3S_64
141 select ARCH_HAS_FAST_MULTIPLIER
145 depends on PPC_BOOK3S_64
146 select ARCH_HAS_FAST_MULTIPLIER
150 depends on PPC_BOOK3S_64
151 select ARCH_HAS_FAST_MULTIPLIER
154 bool "Freescale e5500"
155 depends on PPC64 && E500
158 bool "Freescale e6500"
159 depends on PPC64 && E500
167 depends on PPC_BOOK3S_32
171 depends on PPC_BOOK3S_32
175 depends on PPC_BOOK3S_32
180 depends on PPC_85xx && !PPC_E500MC
184 depends on PPC_85xx && PPC_E500MC
186 config TOOLCHAIN_DEFAULT_CPU
187 bool "Rely on the toolchain's implicit default CPU"
192 config TARGET_CPU_BOOL
194 default !GENERIC_CPU && !TOOLCHAIN_DEFAULT_CPU
198 depends on TARGET_CPU_BOOL
199 default "cell" if CELL_CPU
200 default "power5" if POWER5_CPU
201 default "power6" if POWER6_CPU
202 default "power7" if POWER7_CPU
203 default "power8" if POWER8_CPU
204 default "power9" if POWER9_CPU
205 default "860" if 860_CPU
206 default "e300c2" if E300C2_CPU
207 default "e300c3" if E300C3_CPU
208 default "G4" if G4_CPU
209 default "8540" if E500_CPU
210 default "e500mc" if E500MC_CPU
211 default "powerpc" if POWERPC_CPU
215 depends on PPC_BOOK3S_32 || PPC_BOOK3S_64
219 depends on PPC_BOOK3E_64
222 select FSL_EMB_PERFMON
223 select PPC_FSL_BOOK3E
227 bool "e500mc Support"
232 This must be enabled for running on e500mc (and derivatives
233 such as e5500/e6500), and must be disabled for running on
240 config FSL_EMB_PERFMON
241 bool "Freescale Embedded Perfmon"
242 depends on E500 || PPC_83xx
244 This is the Performance Monitor support found on the e500 core
245 and some e300 cores (c3 and c4). Select this only if your
246 core supports the Embedded Performance Monitor APU
248 config FSL_EMB_PERF_EVENT
250 depends on FSL_EMB_PERFMON && PERF_EVENTS && !PPC_PERF_CTRS
253 config FSL_EMB_PERF_EVENT_E500
255 depends on FSL_EMB_PERF_EVENT && E500
260 depends on 40x || 44x
265 depends on E200 || E500 || 44x || PPC_BOOK3E
270 depends on (E200 || E500) && PPC32
273 # this is for common code between PPC32 & PPC64 FSL BOOKE
274 config PPC_FSL_BOOK3E
276 select FSL_EMB_PERFMON
277 select PPC_SMP_MUXED_IPI
278 select SYS_SUPPORTS_HUGETLBFS if PHYS_64BIT || PPC64
280 default y if FSL_BOOKE
284 depends on 44x || E500 || PPC_86xx
285 default y if PHYS_64BIT
288 bool 'Large physical address support' if E500 || PPC_86xx
289 depends on (44x || E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx
290 select PHYS_ADDR_T_64BIT
292 This option enables kernel support for larger than 32-bit physical
293 addresses. This feature may not be available on all cores.
295 If you have more than 3.5GB of RAM or so, you also need to enable
296 SWIOTLB under Kernel Options for this to work. The actual number
297 is platform-dependent.
299 If in doubt, say N here.
302 bool "AltiVec Support"
303 depends on PPC_BOOK3S_32 || PPC_BOOK3S_64 || (PPC_E500MC && PPC64)
305 This option enables kernel support for the Altivec extensions to the
306 PowerPC processor. The kernel currently supports saving and restoring
307 altivec registers, and turning on the 'altivec enable' bit so user
308 processes can execute altivec instructions.
310 This option is only usefully if you have a processor that supports
311 altivec (G4, otherwise known as 74xx series), but does not have
312 any affect on a non-altivec cpu (it does, however add code to the
315 If in doubt, say Y here.
319 depends on PPC_BOOK3S_64 && ALTIVEC && PPC_FPU
322 This option enables kernel support for the Vector Scaler extensions
323 to the PowerPC processor. The kernel currently supports saving and
324 restoring VSX registers, and turning on the 'VSX enable' bit so user
325 processes can execute VSX instructions.
327 This option is only useful if you have a processor that supports
328 VSX (P7 and above), but does not have any affect on a non-VSX
329 CPUs (it does, however add code to the kernel).
331 If in doubt, say Y here.
335 depends on E200 || (E500 && !PPC_E500MC)
339 depends on SPE_POSSIBLE
342 This option enables kernel support for the Signal Processing
343 Extensions (SPE) to the PowerPC processor. The kernel currently
344 supports saving and restoring SPE registers, and turning on the
345 'spe enable' bit so user processes can execute SPE instructions.
347 This option is only useful if you have a processor that supports
348 SPE (e500, otherwise known as 85xx series), but does not have any
349 effect on a non-spe cpu (it does, however add code to the kernel).
351 If in doubt, say Y here.
353 config ARCH_ENABLE_SPLIT_PMD_PTLOCK
355 depends on PPC_BOOK3S_64
358 bool "Radix MMU Support"
359 depends on PPC_BOOK3S_64
360 select ARCH_HAS_GIGANTIC_PAGE
365 Enable support for the Power ISA 3.0 Radix style MMU. Currently this
366 is only implemented by IBM Power9 CPUs, if you don't have one of them
367 you can probably disable this.
369 config PPC_RADIX_MMU_DEFAULT
370 bool "Default to using the Radix MMU when possible"
371 depends on PPC_RADIX_MMU
374 When the hardware supports the Radix MMU, default to using it unless
375 "disable_radix[=yes]" is specified on the kernel command line.
377 If this option is disabled, the Hash MMU will be used by default,
378 unless "disable_radix=no" is specified on the kernel command line.
380 If you're unsure, say Y.
386 bool "Kernel Userspace Execution Prevention"
387 depends on PPC_HAVE_KUEP
388 default y if !PPC_BOOK3S_32
390 Enable support for Kernel Userspace Execution Prevention (KUEP)
392 If you're unsure, say Y.
398 bool "Kernel Userspace Access Protection"
399 depends on PPC_HAVE_KUAP
400 default y if !PPC_BOOK3S_32
402 Enable support for Kernel Userspace Access Protection (KUAP)
404 If you're unsure, say Y.
406 config PPC_KUAP_DEBUG
407 bool "Extra debugging for Kernel Userspace Access Protection"
408 depends on PPC_KUAP && (PPC_RADIX_MMU || PPC32)
410 Add extra debugging for Kernel Userspace Access Protection (KUAP)
411 If you're unsure, say N.
413 config ARCH_ENABLE_HUGEPAGE_MIGRATION
415 depends on PPC_BOOK3S_64 && HUGETLB_PAGE && MIGRATION
418 config PPC_MMU_NOHASH
420 depends on !PPC_BOOK3S
422 config PPC_MMU_NOHASH_32
424 depends on PPC_MMU_NOHASH && PPC32
426 config PPC_BOOK3E_MMU
428 depends on FSL_BOOKE || PPC_BOOK3E
433 config PPC_HAVE_PMU_SUPPORT
437 bool "Create PMU SPRs sysfs file"
440 This option enables sysfs file creation for PMU SPRs like MMCR* and PMC*.
444 depends on PERF_EVENTS && PPC_HAVE_PMU_SUPPORT
446 This enables the powerpc-specific perf_event back-end.
449 # Allow platforms to force SMP=y by selecting this
454 depends on PPC_BOOK3S || PPC_BOOK3E || FSL_BOOKE || PPC_47x
455 select GENERIC_IRQ_MIGRATION
456 bool "Symmetric multi-processing support" if !FORCE_SMP
458 This enables support for systems with more than one CPU. If you have
459 a system with only one CPU, say N. If you have a system with more
460 than one CPU, say Y. Note that the kernel does not currently
461 support SMP machines with 603/603e/603ev or PPC750 ("G3") processors
462 since they have inadequate hardware support for multiprocessor
465 If you say N here, the kernel will run on single and multiprocessor
466 machines, but will use only one CPU of a multiprocessor machine. If
467 you say Y here, the kernel will run on single-processor machines.
468 On a single-processor machine, the kernel will run faster if you say
471 If you don't know what to do here, say N.
474 int "Maximum number of CPUs (2-8192)"
477 default "32" if PPC64
480 config NOT_COHERENT_CACHE
482 depends on 4xx || PPC_8xx || E200 || PPC_MPC512x || \
483 GAMECUBE_COMMON || AMIGAONE
484 select ARCH_HAS_DMA_PREP_COHERENT
485 select ARCH_HAS_SYNC_DMA_FOR_DEVICE
486 select ARCH_HAS_SYNC_DMA_FOR_CPU
487 select DMA_DIRECT_REMAP
491 config CHECK_CACHE_COHERENCY
501 depends on PPC32 || COMPAT
503 This symbol controls whether we build the 32-bit VDSO. We obviously
504 want to do that if we're building a 32-bit kernel. If we're building
505 a 64-bit kernel then we only want a 32-bit VDSO if we're also enabling
509 prompt "Endianness selection"
510 default CPU_BIG_ENDIAN
512 This option selects whether a big endian or little endian kernel will
515 config CPU_BIG_ENDIAN
516 bool "Build big endian kernel"
518 Build a big endian kernel.
520 If unsure, select this option.
522 config CPU_LITTLE_ENDIAN
523 bool "Build little endian kernel"
524 depends on PPC_BOOK3S_64
525 select PPC64_BOOT_WRAPPER
527 Build a little endian kernel.
529 Note that if cross compiling a little endian kernel,
530 CROSS_COMPILE must point to a toolchain capable of targeting
531 little endian powerpc.
535 config PPC64_BOOT_WRAPPER
537 depends on CPU_LITTLE_ENDIAN