• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# SPDX-License-Identifier: GPL-2.0
2config 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
10menu "Processor support"
11choice
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
25config PPC_BOOK3S_32
26	bool "512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx"
27	select PPC_FPU
28
29config PPC_85xx
30	bool "Freescale 85xx"
31	select E500
32
33config PPC_8xx
34	bool "Freescale 8xx"
35	select FSL_SOC
36	select PPC_LIB_RHEAP
37	select SYS_SUPPORTS_HUGETLBFS
38
39config 40x
40	bool "AMCC 40x"
41	select PPC_DCR_NATIVE
42	select PPC_UDBG_16550
43	select 4xx_SOC
44	select PPC_PCI_CHOICE
45
46config 44x
47	bool "AMCC 44x, 46x or 47x"
48	select PPC_DCR_NATIVE
49	select PPC_UDBG_16550
50	select 4xx_SOC
51	select PPC_PCI_CHOICE
52	select PHYS_64BIT
53
54config E200
55	bool "Freescale e200"
56
57endchoice
58
59choice
60	prompt "Processor Type"
61	depends on PPC64
62	help
63	  There are two families of 64 bit PowerPC chips supported.
64	  The most common ones are the desktop and server CPUs
65	  (POWER4, POWER5, 970, POWER5+, POWER6, POWER7, POWER8 ...)
66
67	  The other are the "embedded" processors compliant with the
68	  "Book 3E" variant of the architecture
69
70config PPC_BOOK3S_64
71	bool "Server processors"
72	select PPC_FPU
73	select PPC_HAVE_PMU_SUPPORT
74	select SYS_SUPPORTS_HUGETLBFS
75	select HAVE_ARCH_TRANSPARENT_HUGEPAGE
76	select ARCH_SUPPORTS_NUMA_BALANCING
77	select IRQ_WORK
78	select HAVE_KERNEL_XZ
79
80config PPC_BOOK3E_64
81	bool "Embedded processors"
82	select PPC_FPU # Make it a choice ?
83	select PPC_SMP_MUXED_IPI
84	select PPC_DOORBELL
85
86endchoice
87
88choice
89	prompt "CPU selection"
90	depends on PPC64
91	default POWER8_CPU if CPU_LITTLE_ENDIAN
92	default GENERIC_CPU
93	help
94	  This will create a kernel which is optimised for a particular CPU.
95	  The resulting kernel may not run on other CPUs, so use this with care.
96
97	  If unsure, select Generic.
98
99config GENERIC_CPU
100	bool "Generic"
101	depends on !CPU_LITTLE_ENDIAN
102
103config CELL_CPU
104	bool "Cell Broadband Engine"
105	depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
106
107config POWER4_CPU
108	bool "POWER4"
109	depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
110
111config POWER5_CPU
112	bool "POWER5"
113	depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
114
115config POWER6_CPU
116	bool "POWER6"
117	depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
118
119config POWER7_CPU
120	bool "POWER7"
121	depends on PPC_BOOK3S_64
122	select ARCH_HAS_FAST_MULTIPLIER
123
124config POWER8_CPU
125	bool "POWER8"
126	depends on PPC_BOOK3S_64
127	select ARCH_HAS_FAST_MULTIPLIER
128
129config E5500_CPU
130	bool "Freescale e5500"
131	depends on E500
132
133config E6500_CPU
134	bool "Freescale e6500"
135	depends on E500
136
137endchoice
138
139config PPC_BOOK3S
140	def_bool y
141	depends on PPC_BOOK3S_32 || PPC_BOOK3S_64
142
143config PPC_BOOK3E
144	def_bool y
145	depends on PPC_BOOK3E_64
146
147config 6xx
148	def_bool y
149	depends on PPC32 && PPC_BOOK3S
150	select PPC_HAVE_PMU_SUPPORT
151
152config E500
153	select FSL_EMB_PERFMON
154	select PPC_FSL_BOOK3E
155	bool
156
157config PPC_E500MC
158	bool "e500mc Support"
159	select PPC_FPU
160	select COMMON_CLK
161	depends on E500
162	help
163	  This must be enabled for running on e500mc (and derivatives
164	  such as e5500/e6500), and must be disabled for running on
165	  e500v1 or e500v2.
166
167config PPC_FPU
168	bool
169	default y if PPC64
170
171config PPC_8xx_PERF_EVENT
172	bool "PPC 8xx perf events"
173	depends on PPC_8xx && PERF_EVENTS
174	help
175	  This is Performance Events support for PPC 8xx. The 8xx doesn't
176	  have a PMU but some events are emulated using 8xx features.
177
178config FSL_EMB_PERFMON
179	bool "Freescale Embedded Perfmon"
180	depends on E500 || PPC_83xx
181	help
182	  This is the Performance Monitor support found on the e500 core
183	  and some e300 cores (c3 and c4).  Select this only if your
184	  core supports the Embedded Performance Monitor APU
185
186config FSL_EMB_PERF_EVENT
187	bool
188	depends on FSL_EMB_PERFMON && PERF_EVENTS && !PPC_PERF_CTRS
189	default y
190
191config FSL_EMB_PERF_EVENT_E500
192	bool
193	depends on FSL_EMB_PERF_EVENT && E500
194	default y
195
196config 4xx
197	bool
198	depends on 40x || 44x
199	default y
200
201config BOOKE
202	bool
203	depends on E200 || E500 || 44x || PPC_BOOK3E
204	default y
205
206config FSL_BOOKE
207	bool
208	depends on (E200 || E500) && PPC32
209	default y
210
211# this is for common code between PPC32 & PPC64 FSL BOOKE
212config PPC_FSL_BOOK3E
213	bool
214	select FSL_EMB_PERFMON
215	select PPC_SMP_MUXED_IPI
216	select SYS_SUPPORTS_HUGETLBFS if PHYS_64BIT || PPC64
217	select PPC_DOORBELL
218	default y if FSL_BOOKE
219
220config PTE_64BIT
221	bool
222	depends on 44x || E500 || PPC_86xx
223	default y if PHYS_64BIT
224
225config PHYS_64BIT
226	bool 'Large physical address support' if E500 || PPC_86xx
227	depends on (44x || E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx
228	---help---
229	  This option enables kernel support for larger than 32-bit physical
230	  addresses.  This feature may not be available on all cores.
231
232	  If you have more than 3.5GB of RAM or so, you also need to enable
233	  SWIOTLB under Kernel Options for this to work.  The actual number
234	  is platform-dependent.
235
236	  If in doubt, say N here.
237
238config ALTIVEC
239	bool "AltiVec Support"
240	depends on 6xx || PPC_BOOK3S_64 || (PPC_E500MC && PPC64)
241	---help---
242	  This option enables kernel support for the Altivec extensions to the
243	  PowerPC processor. The kernel currently supports saving and restoring
244	  altivec registers, and turning on the 'altivec enable' bit so user
245	  processes can execute altivec instructions.
246
247	  This option is only usefully if you have a processor that supports
248	  altivec (G4, otherwise known as 74xx series), but does not have
249	  any affect on a non-altivec cpu (it does, however add code to the
250	  kernel).
251
252	  If in doubt, say Y here.
253
254config VSX
255	bool "VSX Support"
256	depends on PPC_BOOK3S_64 && ALTIVEC && PPC_FPU
257	---help---
258
259	  This option enables kernel support for the Vector Scaler extensions
260	  to the PowerPC processor. The kernel currently supports saving and
261	  restoring VSX registers, and turning on the 'VSX enable' bit so user
262	  processes can execute VSX instructions.
263
264	  This option is only useful if you have a processor that supports
265	  VSX (P7 and above), but does not have any affect on a non-VSX
266	  CPUs (it does, however add code to the kernel).
267
268	  If in doubt, say Y here.
269
270config SPE_POSSIBLE
271	def_bool y
272	depends on E200 || (E500 && !PPC_E500MC)
273
274config SPE
275	bool "SPE Support"
276	depends on SPE_POSSIBLE
277	default y
278	---help---
279	  This option enables kernel support for the Signal Processing
280	  Extensions (SPE) to the PowerPC processor. The kernel currently
281	  supports saving and restoring SPE registers, and turning on the
282	  'spe enable' bit so user processes can execute SPE instructions.
283
284	  This option is only useful if you have a processor that supports
285	  SPE (e500, otherwise known as 85xx series), but does not have any
286	  effect on a non-spe cpu (it does, however add code to the kernel).
287
288	  If in doubt, say Y here.
289
290config PPC_STD_MMU
291	def_bool y
292	depends on PPC_BOOK3S
293
294config PPC_STD_MMU_32
295	def_bool y
296	depends on PPC_STD_MMU && PPC32
297
298config PPC_STD_MMU_64
299	def_bool y
300	depends on PPC_STD_MMU && PPC64
301
302config PPC_RADIX_MMU
303	bool "Radix MMU Support"
304	depends on PPC_BOOK3S_64
305	select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA
306	default y
307	help
308	  Enable support for the Power ISA 3.0 Radix style MMU. Currently this
309	  is only implemented by IBM Power9 CPUs, if you don't have one of them
310	  you can probably disable this.
311
312config ARCH_ENABLE_HUGEPAGE_MIGRATION
313	def_bool y
314	depends on PPC_BOOK3S_64 && HUGETLB_PAGE && MIGRATION
315
316
317config PPC_MMU_NOHASH
318	def_bool y
319	depends on !PPC_STD_MMU
320
321config PPC_BOOK3E_MMU
322	def_bool y
323	depends on FSL_BOOKE || PPC_BOOK3E
324
325config PPC_MM_SLICES
326	bool
327	default y if PPC_STD_MMU_64
328	default y if PPC_8xx && HUGETLB_PAGE
329	default n
330
331config PPC_HAVE_PMU_SUPPORT
332       bool
333
334config 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
340config FORCE_SMP
341	# Allow platforms to force SMP=y by selecting this
342	bool
343	default n
344	select SMP
345
346config 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
366config 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
373config 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
379config CHECK_CACHE_COHERENCY
380	bool
381
382config PPC_DOORBELL
383	bool
384	default n
385
386endmenu
387
388config 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
398choice
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
405config 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
412config 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
423endchoice
424
425config PPC64_BOOT_WRAPPER
426	def_bool n
427	depends on CPU_LITTLE_ENDIAN
428