GNU Linux-libre 5.15.72-gnu
[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 menu "Processor support"
15 choice
16         prompt "Processor Type"
17         depends on PPC32
18         help
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
25           with the others.
26
27           If unsure, select 52xx/6xx/7xx/74xx/82xx/83xx/86xx.
28
29 config PPC_BOOK3S_32
30         bool "512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx"
31         imply PPC_FPU
32         select PPC_HAVE_PMU_SUPPORT
33         select PPC_HAVE_KUEP
34         select PPC_HAVE_KUAP
35         select HAVE_ARCH_VMAP_STACK
36
37 config PPC_85xx
38         bool "Freescale 85xx"
39         select E500
40
41 config PPC_8xx
42         bool "Freescale 8xx"
43         select ARCH_SUPPORTS_HUGETLBFS
44         select FSL_SOC
45         select PPC_HAVE_KUEP
46         select PPC_HAVE_KUAP
47         select HAVE_ARCH_VMAP_STACK
48         select HUGETLBFS
49
50 config 40x
51         bool "AMCC 40x"
52         select PPC_DCR_NATIVE
53         select PPC_UDBG_16550
54         select 4xx_SOC
55         select HAVE_PCI
56
57 config 44x
58         bool "AMCC 44x, 46x or 47x"
59         select PPC_DCR_NATIVE
60         select PPC_UDBG_16550
61         select 4xx_SOC
62         select HAVE_PCI
63         select PHYS_64BIT
64         select PPC_HAVE_KUEP
65
66 endchoice
67
68 config PPC_BOOK3S_603
69         bool "Support for 603 SW loaded TLB"
70         depends on PPC_BOOK3S_32
71         default y
72         help
73           Provide support for processors based on the 603 cores. Those
74           processors don't have a HASH MMU and provide SW TLB loading.
75
76 config PPC_BOOK3S_604
77         bool "Support for 604+ HASH MMU" if PPC_BOOK3S_603
78         depends on PPC_BOOK3S_32
79         default y
80         help
81           Provide support for processors not based on the 603 cores.
82           Those processors have a HASH MMU.
83
84 choice
85         prompt "Processor Type"
86         depends on PPC64
87         help
88           There are two families of 64 bit PowerPC chips supported.
89           The most common ones are the desktop and server CPUs
90           (POWER5, 970, POWER5+, POWER6, POWER7, POWER8, POWER9 ...)
91
92           The other are the "embedded" processors compliant with the
93           "Book 3E" variant of the architecture
94
95 config PPC_BOOK3S_64
96         bool "Server processors"
97         select PPC_FPU
98         select PPC_HAVE_PMU_SUPPORT
99         select HAVE_ARCH_TRANSPARENT_HUGEPAGE
100         select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION
101         select ARCH_ENABLE_SPLIT_PMD_PTLOCK
102         select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE
103         select ARCH_SUPPORTS_HUGETLBFS
104         select ARCH_SUPPORTS_NUMA_BALANCING
105         select HAVE_MOVE_PMD
106         select HAVE_MOVE_PUD
107         select IRQ_WORK
108         select PPC_MM_SLICES
109         select PPC_HAVE_KUEP
110         select PPC_HAVE_KUAP
111
112 config PPC_BOOK3E_64
113         bool "Embedded processors"
114         select PPC_FSL_BOOK3E
115         select PPC_FPU # Make it a choice ?
116         select PPC_SMP_MUXED_IPI
117         select PPC_DOORBELL
118         select ZONE_DMA
119
120 endchoice
121
122 choice
123         prompt "CPU selection"
124         default GENERIC_CPU
125         help
126           This will create a kernel which is optimised for a particular CPU.
127           The resulting kernel may not run on other CPUs, so use this with care.
128
129           If unsure, select Generic.
130
131 config GENERIC_CPU
132         bool "Generic (POWER4 and above)"
133         depends on PPC64 && !CPU_LITTLE_ENDIAN
134
135 config GENERIC_CPU
136         bool "Generic (POWER8 and above)"
137         depends on PPC64 && CPU_LITTLE_ENDIAN
138         select ARCH_HAS_FAST_MULTIPLIER
139
140 config POWERPC_CPU
141         bool "Generic 32 bits powerpc"
142         depends on PPC32 && !PPC_8xx && !PPC_85xx
143
144 config CELL_CPU
145         bool "Cell Broadband Engine"
146         depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
147
148 config POWER5_CPU
149         bool "POWER5"
150         depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
151
152 config POWER6_CPU
153         bool "POWER6"
154         depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
155
156 config POWER7_CPU
157         bool "POWER7"
158         depends on PPC_BOOK3S_64
159         select ARCH_HAS_FAST_MULTIPLIER
160
161 config POWER8_CPU
162         bool "POWER8"
163         depends on PPC_BOOK3S_64
164         select ARCH_HAS_FAST_MULTIPLIER
165
166 config POWER9_CPU
167         bool "POWER9"
168         depends on PPC_BOOK3S_64
169         select ARCH_HAS_FAST_MULTIPLIER
170
171 config E5500_CPU
172         bool "Freescale e5500"
173         depends on PPC64 && E500
174
175 config E6500_CPU
176         bool "Freescale e6500"
177         depends on PPC64 && E500
178
179 config 860_CPU
180         bool "8xx family"
181         depends on PPC_8xx
182
183 config E300C2_CPU
184         bool "e300c2 (832x)"
185         depends on PPC_BOOK3S_32
186
187 config E300C3_CPU
188         bool "e300c3 (831x)"
189         depends on PPC_BOOK3S_32
190
191 config G4_CPU
192         bool "G4 (74xx)"
193         depends on PPC_BOOK3S_32
194         select ALTIVEC
195
196 config E500_CPU
197         bool "e500 (8540)"
198         depends on PPC_85xx && !PPC_E500MC
199
200 config E500MC_CPU
201         bool "e500mc"
202         depends on PPC_85xx && PPC_E500MC
203
204 config TOOLCHAIN_DEFAULT_CPU
205         bool "Rely on the toolchain's implicit default CPU"
206         depends on PPC32
207
208 endchoice
209
210 config TARGET_CPU_BOOL
211         bool
212         default !GENERIC_CPU && !TOOLCHAIN_DEFAULT_CPU
213
214 config TARGET_CPU
215         string
216         depends on TARGET_CPU_BOOL
217         default "cell" if CELL_CPU
218         default "power5" if POWER5_CPU
219         default "power6" if POWER6_CPU
220         default "power7" if POWER7_CPU
221         default "power8" if POWER8_CPU
222         default "power9" if POWER9_CPU
223         default "860" if 860_CPU
224         default "e300c2" if E300C2_CPU
225         default "e300c3" if E300C3_CPU
226         default "G4" if G4_CPU
227         default "8540" if E500_CPU
228         default "e500mc" if E500MC_CPU
229         default "powerpc" if POWERPC_CPU
230
231 config PPC_BOOK3S
232         def_bool y
233         depends on PPC_BOOK3S_32 || PPC_BOOK3S_64
234
235 config PPC_BOOK3E
236         def_bool y
237         depends on PPC_BOOK3E_64
238
239 config E500
240         select FSL_EMB_PERFMON
241         select PPC_FSL_BOOK3E
242         bool
243
244 config PPC_E500MC
245         bool "e500mc Support"
246         select PPC_FPU
247         select COMMON_CLK
248         depends on E500
249         help
250           This must be enabled for running on e500mc (and derivatives
251           such as e5500/e6500), and must be disabled for running on
252           e500v1 or e500v2.
253
254 config PPC_FPU_REGS
255         bool
256
257 config PPC_FPU
258         bool "Support for Floating Point Unit (FPU)" if PPC_MPC832x
259         default y if PPC64
260         select PPC_FPU_REGS
261         help
262           This must be enabled to support the Floating Point Unit
263           Most 6xx have an FPU but e300c2 core (mpc832x) don't have
264           an FPU, so when building an embedded kernel for that target
265           you can disable FPU support.
266
267           If unsure say Y.
268
269 config FSL_EMB_PERFMON
270         bool "Freescale Embedded Perfmon"
271         depends on E500 || PPC_83xx
272         help
273           This is the Performance Monitor support found on the e500 core
274           and some e300 cores (c3 and c4).  Select this only if your
275           core supports the Embedded Performance Monitor APU
276
277 config FSL_EMB_PERF_EVENT
278         bool
279         depends on FSL_EMB_PERFMON && PERF_EVENTS && !PPC_PERF_CTRS
280         default y
281
282 config FSL_EMB_PERF_EVENT_E500
283         bool
284         depends on FSL_EMB_PERF_EVENT && E500
285         default y
286
287 config 4xx
288         bool
289         depends on 40x || 44x
290         default y
291
292 config BOOKE
293         bool
294         depends on E500 || 44x || PPC_BOOK3E
295         default y
296
297 config FSL_BOOKE
298         bool
299         depends on E500 && PPC32
300         default y
301
302 # this is for common code between PPC32 & PPC64 FSL BOOKE
303 config PPC_FSL_BOOK3E
304         bool
305         select ARCH_SUPPORTS_HUGETLBFS if PHYS_64BIT || PPC64
306         imply FSL_EMB_PERFMON
307         select PPC_SMP_MUXED_IPI
308         select PPC_DOORBELL
309         default y if FSL_BOOKE
310
311 config PTE_64BIT
312         bool
313         depends on 44x || E500 || PPC_86xx
314         default y if PHYS_64BIT
315
316 config PHYS_64BIT
317         bool 'Large physical address support' if E500 || PPC_86xx
318         depends on (44x || E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx
319         select PHYS_ADDR_T_64BIT
320         help
321           This option enables kernel support for larger than 32-bit physical
322           addresses.  This feature may not be available on all cores.
323
324           If you have more than 3.5GB of RAM or so, you also need to enable
325           SWIOTLB under Kernel Options for this to work.  The actual number
326           is platform-dependent.
327
328           If in doubt, say N here.
329
330 config ALTIVEC
331         bool "AltiVec Support"
332         depends on PPC_BOOK3S_32 || PPC_BOOK3S_64 || (PPC_E500MC && PPC64)
333         select PPC_FPU
334         help
335           This option enables kernel support for the Altivec extensions to the
336           PowerPC processor. The kernel currently supports saving and restoring
337           altivec registers, and turning on the 'altivec enable' bit so user
338           processes can execute altivec instructions.
339
340           This option is only usefully if you have a processor that supports
341           altivec (G4, otherwise known as 74xx series), but does not have
342           any affect on a non-altivec cpu (it does, however add code to the
343           kernel).
344
345           If in doubt, say Y here.
346
347 config VSX
348         bool "VSX Support"
349         depends on PPC_BOOK3S_64 && ALTIVEC && PPC_FPU
350         help
351
352           This option enables kernel support for the Vector Scaler extensions
353           to the PowerPC processor. The kernel currently supports saving and
354           restoring VSX registers, and turning on the 'VSX enable' bit so user
355           processes can execute VSX instructions.
356
357           This option is only useful if you have a processor that supports
358           VSX (P7 and above), but does not have any affect on a non-VSX
359           CPUs (it does, however add code to the kernel).
360
361           If in doubt, say Y here.
362
363 config SPE_POSSIBLE
364         def_bool y
365         depends on E500 && !PPC_E500MC
366
367 config SPE
368         bool "SPE Support"
369         depends on SPE_POSSIBLE
370         default y
371         help
372           This option enables kernel support for the Signal Processing
373           Extensions (SPE) to the PowerPC processor. The kernel currently
374           supports saving and restoring SPE registers, and turning on the
375           'spe enable' bit so user processes can execute SPE instructions.
376
377           This option is only useful if you have a processor that supports
378           SPE (e500, otherwise known as 85xx series), but does not have any
379           effect on a non-spe cpu (it does, however add code to the kernel).
380
381           If in doubt, say Y here.
382
383 config PPC_RADIX_MMU
384         bool "Radix MMU Support"
385         depends on PPC_BOOK3S_64
386         select ARCH_HAS_GIGANTIC_PAGE
387         default y
388         help
389           Enable support for the Power ISA 3.0 Radix style MMU. Currently this
390           is only implemented by IBM Power9 CPUs, if you don't have one of them
391           you can probably disable this.
392
393 config PPC_RADIX_MMU_DEFAULT
394         bool "Default to using the Radix MMU when possible"
395         depends on PPC_RADIX_MMU
396         default y
397         help
398           When the hardware supports the Radix MMU, default to using it unless
399           "disable_radix[=yes]" is specified on the kernel command line.
400
401           If this option is disabled, the Hash MMU will be used by default,
402           unless "disable_radix=no" is specified on the kernel command line.
403
404           If you're unsure, say Y.
405
406 config PPC_HAVE_KUEP
407         bool
408
409 config PPC_KUEP
410         bool "Kernel Userspace Execution Prevention"
411         depends on PPC_HAVE_KUEP
412         default y
413         help
414           Enable support for Kernel Userspace Execution Prevention (KUEP)
415
416           If you're unsure, say Y.
417
418 config PPC_HAVE_KUAP
419         bool
420
421 config PPC_KUAP
422         bool "Kernel Userspace Access Protection"
423         depends on PPC_HAVE_KUAP
424         default y
425         help
426           Enable support for Kernel Userspace Access Protection (KUAP)
427
428           If you're unsure, say Y.
429
430 config PPC_KUAP_DEBUG
431         bool "Extra debugging for Kernel Userspace Access Protection"
432         depends on PPC_KUAP && (PPC_RADIX_MMU || PPC32)
433         help
434           Add extra debugging for Kernel Userspace Access Protection (KUAP)
435           If you're unsure, say N.
436
437 config PPC_PKEY
438         def_bool y
439         depends on PPC_BOOK3S_64
440         depends on PPC_MEM_KEYS || PPC_KUAP || PPC_KUEP
441
442
443 config PPC_MMU_NOHASH
444         def_bool y
445         depends on !PPC_BOOK3S
446
447 config PPC_BOOK3E_MMU
448         def_bool y
449         depends on FSL_BOOKE || PPC_BOOK3E
450
451 config PPC_MM_SLICES
452         bool
453
454 config PPC_HAVE_PMU_SUPPORT
455         bool
456
457 config PMU_SYSFS
458         bool "Create PMU SPRs sysfs file"
459         default n
460         help
461           This option enables sysfs file creation for PMU SPRs like MMCR* and PMC*.
462
463 config PPC_PERF_CTRS
464         def_bool y
465         depends on PERF_EVENTS && PPC_HAVE_PMU_SUPPORT
466         help
467          This enables the powerpc-specific perf_event back-end.
468
469 config FORCE_SMP
470         # Allow platforms to force SMP=y by selecting this
471         bool
472         select SMP
473
474 config SMP
475         depends on PPC_BOOK3S || PPC_BOOK3E || FSL_BOOKE || PPC_47x
476         select GENERIC_IRQ_MIGRATION
477         bool "Symmetric multi-processing support" if !FORCE_SMP
478         help
479           This enables support for systems with more than one CPU. If you have
480           a system with only one CPU, say N. If you have a system with more
481           than one CPU, say Y.  Note that the kernel does not currently
482           support SMP machines with 603/603e/603ev or PPC750 ("G3") processors
483           since they have inadequate hardware support for multiprocessor
484           operation.
485
486           If you say N here, the kernel will run on single and multiprocessor
487           machines, but will use only one CPU of a multiprocessor machine. If
488           you say Y here, the kernel will run on single-processor machines.
489           On a single-processor machine, the kernel will run faster if you say
490           N here.
491
492           If you don't know what to do here, say N.
493
494 config NR_CPUS
495         int "Maximum number of CPUs (2-8192)" if SMP
496         range 2 8192 if SMP
497         default "1" if !SMP
498         default "32" if PPC64
499         default "4"
500
501 config NOT_COHERENT_CACHE
502         bool
503         depends on 4xx || PPC_8xx || PPC_MPC512x || \
504                 GAMECUBE_COMMON || AMIGAONE
505         select ARCH_HAS_DMA_PREP_COHERENT
506         select ARCH_HAS_SYNC_DMA_FOR_DEVICE
507         select ARCH_HAS_SYNC_DMA_FOR_CPU
508         select DMA_DIRECT_REMAP
509         default n if PPC_47x
510         default y
511
512 config CHECK_CACHE_COHERENCY
513         bool
514
515 config PPC_DOORBELL
516         bool
517
518 endmenu
519
520 config VDSO32
521         def_bool y
522         depends on PPC32 || COMPAT
523         help
524           This symbol controls whether we build the 32-bit VDSO. We obviously
525           want to do that if we're building a 32-bit kernel. If we're building
526           a 64-bit kernel then we only want a 32-bit VDSO if we're also enabling
527           COMPAT.
528
529 choice
530         prompt "Endianness selection"
531         default CPU_BIG_ENDIAN
532         help
533           This option selects whether a big endian or little endian kernel will
534           be built.
535
536 config CPU_BIG_ENDIAN
537         bool "Build big endian kernel"
538         help
539           Build a big endian kernel.
540
541           If unsure, select this option.
542
543 config CPU_LITTLE_ENDIAN
544         bool "Build little endian kernel"
545         depends on PPC_BOOK3S_64
546         select PPC64_BOOT_WRAPPER
547         help
548           Build a little endian kernel.
549
550           Note that if cross compiling a little endian kernel,
551           CROSS_COMPILE must point to a toolchain capable of targeting
552           little endian powerpc.
553
554 endchoice
555
556 config PPC64_BOOT_WRAPPER
557         def_bool n
558         depends on CPU_LITTLE_ENDIAN