1# SPDX-License-Identifier: GPL-2.0
2
3config PPC_DISABLE_WERROR
4	bool "Don't build arch/powerpc code with -Werror"
5	help
6	  This option tells the compiler NOT to build the code under
7	  arch/powerpc with the -Werror flag (which means warnings
8	  are treated as errors).
9
10	  Only enable this if you are hitting a build failure in the
11	  arch/powerpc code caused by a warning, and you don't feel
12	  inclined to fix it.
13
14config PPC_WERROR
15	bool
16	depends on !PPC_DISABLE_WERROR
17	default y
18
19config PRINT_STACK_DEPTH
20	int "Stack depth to print" if DEBUG_KERNEL
21	default 64
22	help
23	  This option allows you to set the stack depth that the kernel
24	  prints in stack traces. This can be useful if your display is
25	  too small and stack traces cause important information to
26	  scroll off the screen.
27
28config HCALL_STATS
29	bool "Hypervisor call instrumentation"
30	depends on PPC_PSERIES && DEBUG_FS && TRACEPOINTS
31	help
32	  Adds code to keep track of the number of hypervisor calls made and
33	  the amount of time spent in hypervisor calls.  Wall time spent in
34	  each call is always calculated, and if available CPU cycles spent
35	  are also calculated.  A directory named hcall_inst is added at the
36	  root of the debugfs filesystem.  Within the hcall_inst directory
37	  are files that contain CPU specific call statistics.
38
39	  This option will add a small amount of overhead to all hypervisor
40	  calls.
41
42config PPC_EMULATED_STATS
43	bool "Emulated instructions tracking"
44	depends on DEBUG_FS
45	help
46	  Adds code to keep track of the number of instructions that are
47	  emulated by the in-kernel emulator. Counters for the various classes
48	  of emulated instructions are available under
49	  powerpc/emulated_instructions/ in the root of the debugfs file
50	  system. Optionally (controlled by
51	  powerpc/emulated_instructions/do_warn in debugfs), rate-limited
52	  warnings can be printed to the console when instructions are
53	  emulated.
54
55config CODE_PATCHING_SELFTEST
56	bool "Run self-tests of the code-patching code"
57	depends on DEBUG_KERNEL
58
59config JUMP_LABEL_FEATURE_CHECKS
60	bool "Enable use of jump label for cpu/mmu_has_feature()"
61	depends on JUMP_LABEL
62	default y
63	help
64	  Selecting this options enables use of jump labels for some internal
65	  feature checks. This should generate more optimal code for those
66	  checks.
67
68config JUMP_LABEL_FEATURE_CHECK_DEBUG
69	bool "Do extra check on feature fixup calls"
70	depends on DEBUG_KERNEL && JUMP_LABEL_FEATURE_CHECKS
71	help
72	  This tries to catch incorrect usage of cpu_has_feature() and
73	  mmu_has_feature() in the code.
74
75	  If you don't know what this means, say N.
76
77config FTR_FIXUP_SELFTEST
78	bool "Run self-tests of the feature-fixup code"
79	depends on DEBUG_KERNEL
80
81config MSI_BITMAP_SELFTEST
82	bool "Run self-tests of the MSI bitmap code"
83	depends on DEBUG_KERNEL
84
85config GUEST_STATE_BUFFER_TEST
86	def_tristate n
87	prompt "Enable Guest State Buffer unit tests"
88	depends on KUNIT
89	depends on KVM_BOOK3S_HV_POSSIBLE
90	default KUNIT_ALL_TESTS
91	help
92	  The Guest State Buffer is a data format specified in the PAPR.
93	  It is by hcalls to communicate the state of L2 guests between
94	  the L1 and L0 hypervisors. Enable unit tests for the library
95	  used to create and use guest state buffers.
96
97config PPC_IRQ_SOFT_MASK_DEBUG
98	bool "Include extra checks for powerpc irq soft masking"
99	depends on PPC64
100
101config PPC_RFI_SRR_DEBUG
102	bool "Include extra checks for RFI SRR register validity"
103	depends on PPC_BOOK3S_64
104
105config XMON
106	bool "Include xmon kernel debugger"
107	depends on DEBUG_KERNEL
108	select CONSOLE_POLL if SERIAL_CPM_CONSOLE
109	help
110	  Include in-kernel hooks for the xmon kernel monitor/debugger.
111	  Unless you are intending to debug the kernel, say N here.
112	  Make sure to enable also CONFIG_BOOTX_TEXT on Macs. Otherwise
113	  nothing will appear on the screen (xmon writes directly to the
114	  framebuffer memory).
115	  The cmdline option 'xmon' or 'xmon=early' will drop into xmon
116	  very early during boot. 'xmon=on' will just enable the xmon
117	  debugger hooks.  'xmon=off' will disable the debugger hooks
118	  if CONFIG_XMON_DEFAULT is set.
119	  xmon will print a backtrace on the very first invocation.
120	  'xmon=nobt' will disable this autobacktrace.
121
122config XMON_DEFAULT
123	bool "Enable xmon by default"
124	depends on XMON
125	help
126	  xmon is normally disabled unless booted with 'xmon=on'.
127	  Use 'xmon=off' to disable xmon init during runtime.
128
129config XMON_DISASSEMBLY
130	bool "Include disassembly support in xmon"
131	depends on XMON
132	default y
133	help
134	  Include support for disassembling in xmon. You probably want
135	  to say Y here, unless you're building for a memory-constrained
136	  system.
137
138config XMON_DEFAULT_RO_MODE
139	bool "Restrict xmon to read-only operations by default"
140	depends on XMON
141	default y
142	help
143	  Operate xmon in read-only mode. The cmdline options 'xmon=rw' and
144	  'xmon=ro' override this default.
145
146config DEBUGGER
147	bool
148	depends on KGDB || XMON
149	default y
150
151config BDI_SWITCH
152	bool "Include BDI-2000 user context switcher"
153	depends on DEBUG_KERNEL && PPC32
154	help
155	  Include in-kernel support for the Abatron BDI2000 debugger.
156	  Unless you are intending to debug the kernel with one of these
157	  machines, say N here.
158
159config BOOTX_TEXT
160	bool "Support for early boot text console (BootX or OpenFirmware only)"
161	depends on PPC_BOOK3S
162	select FONT_SUN8x16
163	select FONT_SUPPORT
164	help
165	  Say Y here to see progress messages from the boot firmware in text
166	  mode. Requires either BootX or Open Firmware.
167
168config PPC_EARLY_DEBUG
169	bool "Early debugging (dangerous)"
170	help
171	  Say Y to enable some early debugging facilities that may be available
172	  for your processor/board combination. Those facilities are hacks
173	  intended to debug problems early during boot, this should not be
174	  enabled in a production kernel.
175	  Note that enabling this will also cause the kernel default log level
176	  to be pushed to max automatically very early during boot
177
178choice
179	prompt "Early debugging console"
180	depends on PPC_EARLY_DEBUG
181	help
182	  Use the selected console for early debugging. Careful, if you
183	  enable debugging for the wrong type of machine your kernel
184	  _will not boot_.
185
186config PPC_EARLY_DEBUG_BOOTX
187	bool "BootX or OpenFirmware"
188	depends on BOOTX_TEXT
189	help
190	  Select this to enable early debugging for a machine using BootX
191	  or OpenFirmware.
192
193config PPC_EARLY_DEBUG_LPAR
194	bool "LPAR HV Console"
195	depends on PPC_PSERIES && HVC_CONSOLE
196	help
197	  Select this to enable early debugging for a machine with a HVC
198	  console on vterm 0.
199
200config PPC_EARLY_DEBUG_LPAR_HVSI
201	bool "LPAR HVSI Console"
202	depends on PPC_PSERIES && HVC_CONSOLE
203	help
204	  Select this to enable early debugging for a machine with a HVSI
205	  console on a specified vterm.
206
207config PPC_EARLY_DEBUG_G5
208	bool "Apple G5"
209	depends on PPC_PMAC64
210	help
211	  Select this to enable early debugging for Apple G5 machines.
212
213config PPC_EARLY_DEBUG_RTAS_PANEL
214	bool "RTAS Panel"
215	depends on PPC_RTAS
216	help
217	  Select this to enable early debugging via the RTAS panel.
218
219config PPC_EARLY_DEBUG_RTAS_CONSOLE
220	bool "RTAS Console"
221	depends on PPC_RTAS
222	select UDBG_RTAS_CONSOLE
223	help
224	  Select this to enable early debugging via the RTAS console.
225
226config PPC_EARLY_DEBUG_MAPLE
227	bool "Maple real mode"
228	depends on PPC_MAPLE
229	help
230	  Select this to enable early debugging for Maple.
231
232config PPC_EARLY_DEBUG_PAS_REALMODE
233	bool "PA Semi real mode"
234	depends on PPC_PASEMI
235	help
236	  Select this to enable early debugging for PA Semi.
237	  Output will be on UART0.
238
239config PPC_EARLY_DEBUG_44x
240	bool "Early serial debugging for IBM/AMCC 44x CPUs"
241	depends on 44x
242	help
243	  Select this to enable early debugging for IBM 44x chips via the
244	  inbuilt serial port.  If you enable this, ensure you set
245	  PPC_EARLY_DEBUG_44x_PHYSLOW below to suit your target board.
246
247config PPC_EARLY_DEBUG_40x
248	bool "Early serial debugging for IBM/AMCC 40x CPUs"
249	depends on 40x
250	help
251	  Select this to enable early debugging for IBM 40x chips via the
252	  inbuilt serial port. This works on chips with a 16550 compatible
253	  UART.
254
255config PPC_EARLY_DEBUG_CPM
256	bool "Early serial debugging for Freescale CPM-based serial ports"
257	depends on SERIAL_CPM=y
258	help
259	  Select this to enable early debugging for Freescale chips
260	  using a CPM-based serial port.  This assumes that the bootwrapper
261	  has run, and set up the CPM in a particular way.
262
263config PPC_EARLY_DEBUG_USBGECKO
264	bool "Early debugging through the USB Gecko adapter"
265	depends on GAMECUBE_COMMON
266	select USBGECKO_UDBG
267	help
268	  Select this to enable early debugging for Nintendo GameCube/Wii
269	  consoles via an external USB Gecko adapter.
270
271config PPC_EARLY_DEBUG_PS3GELIC
272	bool "Early debugging through the PS3 Ethernet port"
273	depends on PPC_PS3
274	help
275	  Select this to enable early debugging for the PlayStation3 via
276	  UDP broadcasts sent out through the Ethernet port.
277
278config PPC_EARLY_DEBUG_OPAL_RAW
279	bool "OPAL raw console"
280	depends on HVC_OPAL
281	help
282	  Select this to enable early debugging for the PowerNV platform
283	  using a "raw" console
284
285config PPC_EARLY_DEBUG_OPAL_HVSI
286	bool "OPAL hvsi console"
287	depends on HVC_OPAL
288	help
289	  Select this to enable early debugging for the PowerNV platform
290	  using an "hvsi" console
291
292config PPC_EARLY_DEBUG_MEMCONS
293	bool "In memory console"
294	help
295	  Select this to enable early debugging using an in memory console.
296	  This console provides input and output buffers stored within the
297	  kernel BSS and should be safe to select on any system. A debugger
298	  can then be used to read kernel output or send input to the console.
299
300config PPC_EARLY_DEBUG_16550
301	bool "Serial 16550"
302	depends on PPC_UDBG_16550
303	help
304	  Select this to enable early debugging via Serial 16550 console
305endchoice
306
307config PPC_MEMCONS_OUTPUT_SIZE
308	int "In memory console output buffer size"
309	depends on PPC_EARLY_DEBUG_MEMCONS
310	default 4096
311	help
312	  Selects the size of the output buffer (in bytes) of the in memory
313	  console.
314
315config PPC_MEMCONS_INPUT_SIZE
316	int "In memory console input buffer size"
317	depends on PPC_EARLY_DEBUG_MEMCONS
318	default 128
319	help
320	  Selects the size of the input buffer (in bytes) of the in memory
321	  console.
322
323config PPC_EARLY_DEBUG_OPAL
324	def_bool y
325	depends on PPC_EARLY_DEBUG_OPAL_RAW || PPC_EARLY_DEBUG_OPAL_HVSI
326
327config PPC_EARLY_DEBUG_HVSI_VTERMNO
328	hex "vterm number to use with early debug HVSI"
329	depends on PPC_EARLY_DEBUG_LPAR_HVSI
330	default "0x30000000"
331	help
332	  You probably want 0x30000000 for your first serial port and
333	  0x30000001 for your second one
334
335config PPC_EARLY_DEBUG_OPAL_VTERMNO
336	hex "vterm number to use with OPAL early debug"
337	depends on PPC_EARLY_DEBUG_OPAL
338	default "0"
339	help
340	  This correspond to which /dev/hvcN you want to use for early
341	  debug.
342
343	  On OPAL v2, this will be 0 for network console and 1 or 2 for
344	  the machine built-in serial ports.
345
346config PPC_EARLY_DEBUG_44x_PHYSLOW
347	hex "Low 32 bits of early debug UART physical address"
348	depends on PPC_EARLY_DEBUG_44x
349	default "0x40000200"
350	help
351	  You probably want 0x40000200 for ebony boards and
352	  0x40000300 for taishan
353
354config PPC_EARLY_DEBUG_44x_PHYSHIGH
355	hex "EPRN of early debug UART physical address"
356	depends on PPC_EARLY_DEBUG_44x
357	default "0x1"
358
359config PPC_EARLY_DEBUG_40x_PHYSADDR
360	hex "Early debug UART physical address"
361	depends on PPC_EARLY_DEBUG_40x
362	default "0xef600300"
363
364config PPC_EARLY_DEBUG_CPM_ADDR
365	hex "CPM UART early debug transmit descriptor address"
366	depends on PPC_EARLY_DEBUG_CPM
367	default "0xfa202008" if PPC_EP88XC
368	default "0xf0001ff8" if CPM2
369	default "0xff002008" if CPM1
370	help
371	  This specifies the address of the transmit descriptor
372	  used for early debug output.  Because it is needed before
373	  platform probing is done, all platforms selected must
374	  share the same address.
375
376config PPC_EARLY_DEBUG_16550_PHYSADDR
377	hex "Early debug Serial 16550 physical address"
378	depends on PPC_EARLY_DEBUG_16550
379
380config PPC_EARLY_DEBUG_16550_STRIDE
381	int "Early debug Serial 16550 stride"
382	depends on PPC_EARLY_DEBUG_16550
383	default 1
384
385config FAIL_IOMMU
386	bool "Fault-injection capability for IOMMU"
387	depends on FAULT_INJECTION
388	depends on PCI || IBMVIO
389	help
390	  Provide fault-injection capability for IOMMU. Each device can
391	  be selectively enabled via the fail_iommu property.
392
393	  If you are unsure, say N.
394
395config PPC_FAST_ENDIAN_SWITCH
396	bool "Deprecated fast endian-switch syscall"
397	depends on DEBUG_KERNEL && PPC_BOOK3S_64
398	help
399	  If you're unsure what this is, say N.
400
401config KASAN_SHADOW_OFFSET
402	hex
403	depends on KASAN
404	default 0xe0000000 if PPC32
405	default 0xa80e000000000000 if PPC_BOOK3S_64
406	default 0xa8001c0000000000 if PPC_BOOK3E_64
407