]> asedeno.scripts.mit.edu Git - linux.git/blob - arch/powerpc/platforms/Kconfig.cputype
Merge tag 'leaks-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tobin/leaks
[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           (POWER4, POWER5, 970, POWER5+, POWER6, POWER7, POWER8 ...)
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 POWER8_CPU if CPU_LITTLE_ENDIAN
91         default GENERIC_CPU
92         help
93           This will create a kernel which is optimised for a particular CPU.
94           The resulting kernel may not run on other CPUs, so use this with care.
95
96           If unsure, select Generic.
97
98 config GENERIC_CPU
99         bool "Generic"
100         depends on !CPU_LITTLE_ENDIAN
101
102 config CELL_CPU
103         bool "Cell Broadband Engine"
104         depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
105
106 config POWER4_CPU
107         bool "POWER4"
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 E5500_CPU
129         bool "Freescale e5500"
130         depends on E500
131
132 config E6500_CPU
133         bool "Freescale e6500"
134         depends on E500
135
136 endchoice
137
138 config PPC_BOOK3S
139         def_bool y
140         depends on PPC_BOOK3S_32 || PPC_BOOK3S_64
141
142 config PPC_BOOK3E
143         def_bool y
144         depends on PPC_BOOK3E_64
145
146 config 6xx
147         def_bool y
148         depends on PPC32 && PPC_BOOK3S
149         select PPC_HAVE_PMU_SUPPORT
150
151 config E500
152         select FSL_EMB_PERFMON
153         select PPC_FSL_BOOK3E
154         bool
155
156 config PPC_E500MC
157         bool "e500mc Support"
158         select PPC_FPU
159         select COMMON_CLK
160         depends on E500
161         help
162           This must be enabled for running on e500mc (and derivatives
163           such as e5500/e6500), and must be disabled for running on
164           e500v1 or e500v2.
165
166 config PPC_FPU
167         bool
168         default y if PPC64
169
170 config FSL_EMB_PERFMON
171         bool "Freescale Embedded Perfmon"
172         depends on E500 || PPC_83xx
173         help
174           This is the Performance Monitor support found on the e500 core
175           and some e300 cores (c3 and c4).  Select this only if your
176           core supports the Embedded Performance Monitor APU
177
178 config FSL_EMB_PERF_EVENT
179         bool
180         depends on FSL_EMB_PERFMON && PERF_EVENTS && !PPC_PERF_CTRS
181         default y
182
183 config FSL_EMB_PERF_EVENT_E500
184         bool
185         depends on FSL_EMB_PERF_EVENT && E500
186         default y
187
188 config 4xx
189         bool
190         depends on 40x || 44x
191         default y
192
193 config BOOKE
194         bool
195         depends on E200 || E500 || 44x || PPC_BOOK3E
196         default y
197
198 config FSL_BOOKE
199         bool
200         depends on (E200 || E500) && PPC32
201         default y
202
203 # this is for common code between PPC32 & PPC64 FSL BOOKE
204 config PPC_FSL_BOOK3E
205         bool
206         select FSL_EMB_PERFMON
207         select PPC_SMP_MUXED_IPI
208         select SYS_SUPPORTS_HUGETLBFS if PHYS_64BIT || PPC64
209         select PPC_DOORBELL
210         default y if FSL_BOOKE
211
212 config PTE_64BIT
213         bool
214         depends on 44x || E500 || PPC_86xx
215         default y if PHYS_64BIT
216
217 config PHYS_64BIT
218         bool 'Large physical address support' if E500 || PPC_86xx
219         depends on (44x || E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx
220         ---help---
221           This option enables kernel support for larger than 32-bit physical
222           addresses.  This feature may not be available on all cores.
223
224           If you have more than 3.5GB of RAM or so, you also need to enable
225           SWIOTLB under Kernel Options for this to work.  The actual number
226           is platform-dependent.
227
228           If in doubt, say N here.
229
230 config ALTIVEC
231         bool "AltiVec Support"
232         depends on 6xx || PPC_BOOK3S_64 || (PPC_E500MC && PPC64)
233         ---help---
234           This option enables kernel support for the Altivec extensions to the
235           PowerPC processor. The kernel currently supports saving and restoring
236           altivec registers, and turning on the 'altivec enable' bit so user
237           processes can execute altivec instructions.
238
239           This option is only usefully if you have a processor that supports
240           altivec (G4, otherwise known as 74xx series), but does not have
241           any affect on a non-altivec cpu (it does, however add code to the
242           kernel).
243
244           If in doubt, say Y here.
245
246 config VSX
247         bool "VSX Support"
248         depends on PPC_BOOK3S_64 && ALTIVEC && PPC_FPU
249         ---help---
250
251           This option enables kernel support for the Vector Scaler extensions
252           to the PowerPC processor. The kernel currently supports saving and
253           restoring VSX registers, and turning on the 'VSX enable' bit so user
254           processes can execute VSX instructions.
255
256           This option is only useful if you have a processor that supports
257           VSX (P7 and above), but does not have any affect on a non-VSX
258           CPUs (it does, however add code to the kernel).
259
260           If in doubt, say Y here.
261
262 config SPE_POSSIBLE
263         def_bool y
264         depends on E200 || (E500 && !PPC_E500MC)
265
266 config SPE
267         bool "SPE Support"
268         depends on SPE_POSSIBLE
269         default y
270         ---help---
271           This option enables kernel support for the Signal Processing
272           Extensions (SPE) to the PowerPC processor. The kernel currently
273           supports saving and restoring SPE registers, and turning on the
274           'spe enable' bit so user processes can execute SPE instructions.
275
276           This option is only useful if you have a processor that supports
277           SPE (e500, otherwise known as 85xx series), but does not have any
278           effect on a non-spe cpu (it does, however add code to the kernel).
279
280           If in doubt, say Y here.
281
282 config PPC_STD_MMU
283         def_bool y
284         depends on PPC_BOOK3S
285
286 config PPC_STD_MMU_32
287         def_bool y
288         depends on PPC_STD_MMU && PPC32
289
290 config PPC_RADIX_MMU
291         bool "Radix MMU Support"
292         depends on PPC_BOOK3S_64
293         select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA
294         default y
295         help
296           Enable support for the Power ISA 3.0 Radix style MMU. Currently this
297           is only implemented by IBM Power9 CPUs, if you don't have one of them
298           you can probably disable this.
299
300 config PPC_RADIX_MMU_DEFAULT
301         bool "Default to using the Radix MMU when possible"
302         depends on PPC_RADIX_MMU
303         default y
304         help
305           When the hardware supports the Radix MMU, default to using it unless
306           "disable_radix[=yes]" is specified on the kernel command line.
307
308           If this option is disabled, the Hash MMU will be used by default,
309           unless "disable_radix=no" is specified on the kernel command line.
310
311           If you're unsure, say Y.
312
313 config ARCH_ENABLE_HUGEPAGE_MIGRATION
314         def_bool y
315         depends on PPC_BOOK3S_64 && HUGETLB_PAGE && MIGRATION
316
317
318 config PPC_MMU_NOHASH
319         def_bool y
320         depends on !PPC_STD_MMU
321
322 config PPC_BOOK3E_MMU
323         def_bool y
324         depends on FSL_BOOKE || PPC_BOOK3E
325
326 config PPC_MM_SLICES
327         bool
328         default y if PPC_BOOK3S_64
329         default n
330
331 config PPC_HAVE_PMU_SUPPORT
332        bool
333
334 config PPC_PERF_CTRS
335        def_bool y
336        depends on PERF_EVENTS && PPC_HAVE_PMU_SUPPORT
337        help
338          This enables the powerpc-specific perf_event back-end.
339
340 config FORCE_SMP
341         # Allow platforms to force SMP=y by selecting this
342         bool
343         default n
344         select SMP
345
346 config SMP
347         depends on PPC_BOOK3S || PPC_BOOK3E || FSL_BOOKE || PPC_47x
348         select GENERIC_IRQ_MIGRATION
349         bool "Symmetric multi-processing support" if !FORCE_SMP
350         ---help---
351           This enables support for systems with more than one CPU. If you have
352           a system with only one CPU, say N. If you have a system with more
353           than one CPU, say Y.  Note that the kernel does not currently
354           support SMP machines with 603/603e/603ev or PPC750 ("G3") processors
355           since they have inadequate hardware support for multiprocessor
356           operation.
357
358           If you say N here, the kernel will run on single and multiprocessor
359           machines, but will use only one CPU of a multiprocessor machine. If
360           you say Y here, the kernel will run on single-processor machines.
361           On a single-processor machine, the kernel will run faster if you say
362           N here.
363
364           If you don't know what to do here, say N.
365
366 config NR_CPUS
367         int "Maximum number of CPUs (2-8192)"
368         range 2 8192
369         depends on SMP
370         default "32" if PPC64
371         default "4"
372
373 config NOT_COHERENT_CACHE
374         bool
375         depends on 4xx || PPC_8xx || E200 || PPC_MPC512x || GAMECUBE_COMMON
376         default n if PPC_47x
377         default y
378
379 config CHECK_CACHE_COHERENCY
380         bool
381
382 config PPC_DOORBELL
383         bool
384         default n
385
386 endmenu
387
388 config VDSO32
389         def_bool y
390         depends on PPC32 || CPU_BIG_ENDIAN
391         help
392           This symbol controls whether we build the 32-bit VDSO. We obviously
393           want to do that if we're building a 32-bit kernel. If we're building
394           a 64-bit kernel then we only want a 32-bit VDSO if we're building for
395           big endian. That is because the only little endian configuration we
396           support is ppc64le which is 64-bit only.
397
398 choice
399         prompt "Endianness selection"
400         default CPU_BIG_ENDIAN
401         help
402           This option selects whether a big endian or little endian kernel will
403           be built.
404
405 config CPU_BIG_ENDIAN
406         bool "Build big endian kernel"
407         help
408           Build a big endian kernel.
409
410           If unsure, select this option.
411
412 config CPU_LITTLE_ENDIAN
413         bool "Build little endian kernel"
414         depends on PPC_BOOK3S_64
415         select PPC64_BOOT_WRAPPER
416         help
417           Build a little endian kernel.
418
419           Note that if cross compiling a little endian kernel,
420           CROSS_COMPILE must point to a toolchain capable of targeting
421           little endian powerpc.
422
423 endchoice
424
425 config PPC64_BOOT_WRAPPER
426         def_bool n
427         depends on CPU_LITTLE_ENDIAN