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