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