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