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