GNU Linux-libre 5.10.217-gnu1
[releases.git] / arch / powerpc / platforms / Kconfig.cputype
1 # SPDX-License-Identifier: GPL-2.0
2 config PPC32
3         bool
4         default y if !PPC64
5         select KASAN_VMALLOC if KASAN && MODULES
6
7 config PPC64
8         bool "64-bit kernel"
9         select ZLIB_DEFLATE
10         help
11           This option selects whether a 32-bit or a 64-bit kernel
12           will be built.
13
14 config PPC_BOOK3S_32
15         bool
16
17 menu "Processor support"
18 choice
19         prompt "Processor Type"
20         depends on PPC32
21         help
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
28           with the others.
29
30           If unsure, select 52xx/6xx/7xx/74xx/82xx/83xx/86xx.
31
32 config PPC_BOOK3S_6xx
33         bool "512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx"
34         select PPC_BOOK3S_32
35         select PPC_FPU
36         select PPC_HAVE_PMU_SUPPORT
37         select PPC_HAVE_KUEP
38         select PPC_HAVE_KUAP
39         select HAVE_ARCH_VMAP_STACK
40
41 config PPC_85xx
42         bool "Freescale 85xx"
43         select E500
44
45 config PPC_8xx
46         bool "Freescale 8xx"
47         select FSL_SOC
48         select SYS_SUPPORTS_HUGETLBFS
49         select PPC_HAVE_KUEP
50         select PPC_HAVE_KUAP
51         select HAVE_ARCH_VMAP_STACK
52         select HUGETLBFS
53
54 config 40x
55         bool "AMCC 40x"
56         select PPC_DCR_NATIVE
57         select PPC_UDBG_16550
58         select 4xx_SOC
59         select HAVE_PCI
60
61 config 44x
62         bool "AMCC 44x, 46x or 47x"
63         select PPC_DCR_NATIVE
64         select PPC_UDBG_16550
65         select 4xx_SOC
66         select HAVE_PCI
67         select PHYS_64BIT
68
69 config E200
70         bool "Freescale e200"
71
72 endchoice
73
74 choice
75         prompt "Processor Type"
76         depends on PPC64
77         help
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 ...)
81
82           The other are the "embedded" processors compliant with the
83           "Book 3E" variant of the architecture
84
85 config PPC_BOOK3S_64
86         bool "Server processors"
87         select PPC_FPU
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
93         select IRQ_WORK
94         select PPC_MM_SLICES
95
96 config PPC_BOOK3E_64
97         bool "Embedded processors"
98         select PPC_FPU # Make it a choice ?
99         select PPC_SMP_MUXED_IPI
100         select PPC_DOORBELL
101
102 endchoice
103
104 choice
105         prompt "CPU selection"
106         default GENERIC_CPU
107         help
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.
110
111           If unsure, select Generic.
112
113 config GENERIC_CPU
114         bool "Generic (POWER4 and above)"
115         depends on PPC64 && !CPU_LITTLE_ENDIAN
116
117 config GENERIC_CPU
118         bool "Generic (POWER8 and above)"
119         depends on PPC64 && CPU_LITTLE_ENDIAN
120         select ARCH_HAS_FAST_MULTIPLIER
121
122 config POWERPC_CPU
123         bool "Generic 32 bits powerpc"
124         depends on PPC32 && !PPC_8xx && !PPC_85xx
125
126 config CELL_CPU
127         bool "Cell Broadband Engine"
128         depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
129
130 config POWER5_CPU
131         bool "POWER5"
132         depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
133
134 config POWER6_CPU
135         bool "POWER6"
136         depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
137
138 config POWER7_CPU
139         bool "POWER7"
140         depends on PPC_BOOK3S_64
141         select ARCH_HAS_FAST_MULTIPLIER
142
143 config POWER8_CPU
144         bool "POWER8"
145         depends on PPC_BOOK3S_64
146         select ARCH_HAS_FAST_MULTIPLIER
147
148 config POWER9_CPU
149         bool "POWER9"
150         depends on PPC_BOOK3S_64
151         select ARCH_HAS_FAST_MULTIPLIER
152
153 config E5500_CPU
154         bool "Freescale e5500"
155         depends on PPC64 && E500
156
157 config E6500_CPU
158         bool "Freescale e6500"
159         depends on PPC64 && E500
160
161 config 860_CPU
162         bool "8xx family"
163         depends on PPC_8xx
164
165 config E300C2_CPU
166         bool "e300c2 (832x)"
167         depends on PPC_BOOK3S_32
168
169 config E300C3_CPU
170         bool "e300c3 (831x)"
171         depends on PPC_BOOK3S_32
172
173 config G4_CPU
174         bool "G4 (74xx)"
175         depends on PPC_BOOK3S_32
176         select ALTIVEC
177
178 config E500_CPU
179         bool "e500 (8540)"
180         depends on PPC_85xx && !PPC_E500MC
181
182 config E500MC_CPU
183         bool "e500mc"
184         depends on PPC_85xx && PPC_E500MC
185
186 config TOOLCHAIN_DEFAULT_CPU
187         bool "Rely on the toolchain's implicit default CPU"
188         depends on PPC32
189
190 endchoice
191
192 config TARGET_CPU_BOOL
193         bool
194         default !GENERIC_CPU && !TOOLCHAIN_DEFAULT_CPU
195
196 config TARGET_CPU
197         string
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
212
213 config PPC_BOOK3S
214         def_bool y
215         depends on PPC_BOOK3S_32 || PPC_BOOK3S_64
216
217 config PPC_BOOK3E
218         def_bool y
219         depends on PPC_BOOK3E_64
220
221 config E500
222         select FSL_EMB_PERFMON
223         select PPC_FSL_BOOK3E
224         bool
225
226 config PPC_E500MC
227         bool "e500mc Support"
228         select PPC_FPU
229         select COMMON_CLK
230         depends on E500
231         help
232           This must be enabled for running on e500mc (and derivatives
233           such as e5500/e6500), and must be disabled for running on
234           e500v1 or e500v2.
235
236 config PPC_FPU
237         bool
238         default y if PPC64
239
240 config FSL_EMB_PERFMON
241         bool "Freescale Embedded Perfmon"
242         depends on E500 || PPC_83xx
243         help
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
247
248 config FSL_EMB_PERF_EVENT
249         bool
250         depends on FSL_EMB_PERFMON && PERF_EVENTS && !PPC_PERF_CTRS
251         default y
252
253 config FSL_EMB_PERF_EVENT_E500
254         bool
255         depends on FSL_EMB_PERF_EVENT && E500
256         default y
257
258 config 4xx
259         bool
260         depends on 40x || 44x
261         default y
262
263 config BOOKE
264         bool
265         depends on E200 || E500 || 44x || PPC_BOOK3E
266         default y
267
268 config FSL_BOOKE
269         bool
270         depends on (E200 || E500) && PPC32
271         default y
272
273 # this is for common code between PPC32 & PPC64 FSL BOOKE
274 config PPC_FSL_BOOK3E
275         bool
276         select FSL_EMB_PERFMON
277         select PPC_SMP_MUXED_IPI
278         select SYS_SUPPORTS_HUGETLBFS if PHYS_64BIT || PPC64
279         select PPC_DOORBELL
280         default y if FSL_BOOKE
281
282 config PTE_64BIT
283         bool
284         depends on 44x || E500 || PPC_86xx
285         default y if PHYS_64BIT
286
287 config 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
291         help
292           This option enables kernel support for larger than 32-bit physical
293           addresses.  This feature may not be available on all cores.
294
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.
298
299           If in doubt, say N here.
300
301 config ALTIVEC
302         bool "AltiVec Support"
303         depends on PPC_BOOK3S_32 || PPC_BOOK3S_64 || (PPC_E500MC && PPC64)
304         help
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.
309
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
313           kernel).
314
315           If in doubt, say Y here.
316
317 config VSX
318         bool "VSX Support"
319         depends on PPC_BOOK3S_64 && ALTIVEC && PPC_FPU
320         help
321
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.
326
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).
330
331           If in doubt, say Y here.
332
333 config SPE_POSSIBLE
334         def_bool y
335         depends on E200 || (E500 && !PPC_E500MC)
336
337 config SPE
338         bool "SPE Support"
339         depends on SPE_POSSIBLE
340         default y
341         help
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.
346
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).
350
351           If in doubt, say Y here.
352
353 config ARCH_ENABLE_SPLIT_PMD_PTLOCK
354         def_bool y
355         depends on PPC_BOOK3S_64
356
357 config PPC_RADIX_MMU
358         bool "Radix MMU Support"
359         depends on PPC_BOOK3S_64
360         select ARCH_HAS_GIGANTIC_PAGE
361         select PPC_HAVE_KUEP
362         select PPC_HAVE_KUAP
363         default y
364         help
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.
368
369 config PPC_RADIX_MMU_DEFAULT
370         bool "Default to using the Radix MMU when possible"
371         depends on PPC_RADIX_MMU
372         default y
373         help
374           When the hardware supports the Radix MMU, default to using it unless
375           "disable_radix[=yes]" is specified on the kernel command line.
376
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.
379
380           If you're unsure, say Y.
381
382 config PPC_HAVE_KUEP
383         bool
384
385 config PPC_KUEP
386         bool "Kernel Userspace Execution Prevention"
387         depends on PPC_HAVE_KUEP
388         default y if !PPC_BOOK3S_32
389         help
390           Enable support for Kernel Userspace Execution Prevention (KUEP)
391
392           If you're unsure, say Y.
393
394 config PPC_HAVE_KUAP
395         bool
396
397 config PPC_KUAP
398         bool "Kernel Userspace Access Protection"
399         depends on PPC_HAVE_KUAP
400         default y if !PPC_BOOK3S_32
401         help
402           Enable support for Kernel Userspace Access Protection (KUAP)
403
404           If you're unsure, say Y.
405
406 config PPC_KUAP_DEBUG
407         bool "Extra debugging for Kernel Userspace Access Protection"
408         depends on PPC_KUAP && (PPC_RADIX_MMU || PPC32)
409         help
410           Add extra debugging for Kernel Userspace Access Protection (KUAP)
411           If you're unsure, say N.
412
413 config ARCH_ENABLE_HUGEPAGE_MIGRATION
414         def_bool y
415         depends on PPC_BOOK3S_64 && HUGETLB_PAGE && MIGRATION
416
417
418 config PPC_MMU_NOHASH
419         def_bool y
420         depends on !PPC_BOOK3S
421
422 config PPC_MMU_NOHASH_32
423         def_bool y
424         depends on PPC_MMU_NOHASH && PPC32
425
426 config PPC_BOOK3E_MMU
427         def_bool y
428         depends on FSL_BOOKE || PPC_BOOK3E
429
430 config PPC_MM_SLICES
431         bool
432
433 config PPC_HAVE_PMU_SUPPORT
434         bool
435
436 config PMU_SYSFS
437         bool "Create PMU SPRs sysfs file"
438         default n
439         help
440           This option enables sysfs file creation for PMU SPRs like MMCR* and PMC*.
441
442 config PPC_PERF_CTRS
443         def_bool y
444         depends on PERF_EVENTS && PPC_HAVE_PMU_SUPPORT
445         help
446          This enables the powerpc-specific perf_event back-end.
447
448 config FORCE_SMP
449         # Allow platforms to force SMP=y by selecting this
450         bool
451         select SMP
452
453 config SMP
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
457         help
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
463           operation.
464
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
469           N here.
470
471           If you don't know what to do here, say N.
472
473 config NR_CPUS
474         int "Maximum number of CPUs (2-8192)"
475         range 2 8192
476         depends on SMP
477         default "32" if PPC64
478         default "4"
479
480 config NOT_COHERENT_CACHE
481         bool
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
488         default n if PPC_47x
489         default y
490
491 config CHECK_CACHE_COHERENCY
492         bool
493
494 config PPC_DOORBELL
495         bool
496
497 endmenu
498
499 config VDSO32
500         def_bool y
501         depends on PPC32 || COMPAT
502         help
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
506           COMPAT.
507
508 choice
509         prompt "Endianness selection"
510         default CPU_BIG_ENDIAN
511         help
512           This option selects whether a big endian or little endian kernel will
513           be built.
514
515 config CPU_BIG_ENDIAN
516         bool "Build big endian kernel"
517         help
518           Build a big endian kernel.
519
520           If unsure, select this option.
521
522 config CPU_LITTLE_ENDIAN
523         bool "Build little endian kernel"
524         depends on PPC_BOOK3S_64
525         select PPC64_BOOT_WRAPPER
526         help
527           Build a little endian kernel.
528
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.
532
533 endchoice
534
535 config PPC64_BOOT_WRAPPER
536         def_bool n
537         depends on CPU_LITTLE_ENDIAN