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