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