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