1# SPDX-License-Identifier: GPL-2.0-only
2config DRM_I915_WERROR
3	bool "Force GCC to throw an error instead of a warning when compiling"
4	# As this may inadvertently break the build, only allow the user
5	# to shoot oneself in the foot iff they aim really hard
6	depends on EXPERT
7	# We use the dependency on !COMPILE_TEST to not be enabled in
8	# allmodconfig or allyesconfig configurations
9	depends on !COMPILE_TEST
10	default n
11	help
12	  Add -Werror to the build flags for (and only for) i915.ko.
13	  Do not enable this unless you are writing code for the i915.ko module.
14
15	  Recommended for driver developers only.
16
17	  If in doubt, say "N".
18
19config DRM_I915_REPLAY_GPU_HANGS_API
20	bool "Enable GPU hang replay userspace API"
21	depends on DRM_I915
22	depends on EXPERT
23	default n
24	help
25	  Choose this option if you want to enable special and unstable
26	  userspace API used for replaying GPU hangs on a running system.
27
28	  This API is intended to be used by userspace graphics stack developers
29	  and provides no stability guarantees.
30
31	  The API needs to be activated at boot time using the
32	  enable_debug_only_api module parameter.
33
34	  If in doubt, say "N".
35
36config DRM_I915_DEBUG
37	bool "Enable additional driver debugging"
38	depends on DRM_I915
39	depends on EXPERT # only for developers
40	depends on !COMPILE_TEST # never built by robots
41	select DEBUG_FS
42	select PREEMPT_COUNT
43	select I2C_CHARDEV
44	select REF_TRACKER
45	select STACKDEPOT
46	select STACKTRACE
47	select DRM_DISPLAY_DP_AUX_CHARDEV
48	select DRM_DISPLAY_DP_TUNNEL_STATE_DEBUG if DRM_I915_DP_TUNNEL
49	select X86_MSR # used by igt/pm_rpm
50	select DRM_VGEM # used by igt/prime_vgem (dmabuf interop checks)
51	select DRM_DEBUG_MM if DRM=y
52	select DRM_EXPORT_FOR_TESTS if m
53	select DRM_DEBUG_SELFTEST
54	select DMABUF_SELFTESTS
55	select SW_SYNC # signaling validation framework (igt/syncobj*)
56	select DRM_I915_WERROR
57	select DRM_I915_DEBUG_GEM
58	select DRM_I915_DEBUG_GEM_ONCE
59	select DRM_I915_DEBUG_MMIO
60	select DRM_I915_DEBUG_RUNTIME_PM
61	select DRM_I915_DEBUG_WAKEREF
62	select DRM_I915_SW_FENCE_DEBUG_OBJECTS
63	select DRM_I915_SELFTEST
64	default n
65	help
66	  Choose this option to turn on extra driver debugging that may affect
67	  performance but will catch some internal issues.
68
69	  Recommended for driver developers only.
70
71	  If in doubt, say "N".
72
73config DRM_I915_DEBUG_MMIO
74	bool "Always insert extra checks around mmio access by default"
75	default n
76	help
77	  By default, always enables the extra sanity checks (extra register
78	  reads) around every mmio (register) access that will slow the system
79	  down. This sets the default value of i915.mmio_debug to -1 and can
80	  be overridden at module load.
81
82	  Recommended for driver developers only.
83
84	  If in doubt, say "N".
85
86config DRM_I915_DEBUG_GEM
87	bool "Insert extra checks into the GEM internals"
88	default n
89	depends on DRM_I915_WERROR
90	help
91	  Enable extra sanity checks (including BUGs) along the GEM driver
92	  paths that may slow the system down and if hit hang the machine.
93
94	  Recommended for driver developers only.
95
96	  If in doubt, say "N".
97
98config DRM_I915_DEBUG_GEM_ONCE
99	bool "Make a GEM debug failure fatal"
100	default n
101	depends on DRM_I915_DEBUG_GEM
102	help
103	  During development, we often only want the very first failure
104	  as that would otherwise be lost in the deluge of subsequent
105	  failures. However, more casual testers may not want to trigger
106	  a hard BUG_ON and hope that the system remains sufficiently usable
107	  to capture a bug report in situ.
108
109	  Recommended for driver developers only.
110
111	  If in doubt, say "N".
112
113config DRM_I915_ERRLOG_GEM
114	bool "Insert extra logging (very verbose) for common GEM errors"
115	default n
116	depends on DRM_I915_DEBUG_GEM
117	help
118	  Enable additional logging that may help track down the cause of
119	  principally userspace errors.
120
121	  Recommended for driver developers only.
122
123	  If in doubt, say "N".
124
125config DRM_I915_TRACE_GEM
126	bool "Insert extra ftrace output from the GEM internals"
127	depends on DRM_I915_DEBUG_GEM
128	select TRACING
129	default n
130	help
131	  Enable additional and verbose debugging output that will spam
132	  ordinary tests, but may be vital for post-mortem debugging when
133	  used with /proc/sys/kernel/ftrace_dump_on_oops
134
135	  Recommended for driver developers only.
136
137	  If in doubt, say "N".
138
139config DRM_I915_TRACE_GTT
140	bool "Insert extra ftrace output from the GTT internals"
141	depends on DRM_I915_DEBUG_GEM
142	select TRACING
143	default n
144	help
145	  Enable additional and verbose debugging output that will spam
146	  ordinary tests, but may be vital for post-mortem debugging when
147	  used with /proc/sys/kernel/ftrace_dump_on_oops
148
149	  Recommended for driver developers only.
150
151	  If in doubt, say "N".
152
153config DRM_I915_SW_FENCE_DEBUG_OBJECTS
154	bool "Enable additional driver debugging for fence objects"
155	depends on DRM_I915
156	select DEBUG_OBJECTS
157	default n
158	help
159	  Choose this option to turn on extra driver debugging that may affect
160	  performance but will catch some internal issues.
161
162	  Recommended for driver developers only.
163
164	  If in doubt, say "N".
165
166config DRM_I915_SW_FENCE_CHECK_DAG
167	bool "Enable additional driver debugging for detecting dependency cycles"
168	depends on DRM_I915
169	default n
170	help
171	  Choose this option to turn on extra driver debugging that may affect
172	  performance but will catch some internal issues.
173
174	  Recommended for driver developers only.
175
176	  If in doubt, say "N".
177
178config DRM_I915_DEBUG_GUC
179	bool "Enable additional driver debugging for GuC"
180	depends on DRM_I915
181	select STACKDEPOT
182	default n
183	help
184	  Choose this option to turn on extra driver debugging that may affect
185	  performance but will help resolve GuC related issues.
186
187	  Recommended for driver developers only.
188
189	  If in doubt, say "N".
190
191config DRM_I915_SELFTEST
192	bool "Enable selftests upon driver load"
193	depends on DRM_I915
194	default n
195	select DRM_EXPORT_FOR_TESTS if m
196	select FAULT_INJECTION
197	select PRIME_NUMBERS
198	select CRC32
199	help
200	  Choose this option to allow the driver to perform selftests upon
201	  loading; also requires the i915.selftest=1 module parameter. To
202	  exit the module after running the selftests (i.e. to prevent normal
203	  module initialisation afterwards) use i915.selftest=-1.
204
205	  Recommended for driver developers only.
206
207	  If in doubt, say "N".
208
209config DRM_I915_SELFTEST_BROKEN
210	bool "Enable broken and dangerous selftests"
211	depends on DRM_I915_SELFTEST
212	depends on BROKEN
213	default n
214	help
215	  This option enables the execution of selftests that are "dangerous"
216	  and may trigger unintended HW side-effects as they break strict
217	  rules given in the HW specification. For science.
218
219	  Recommended for masochistic driver developers only.
220
221	  If in doubt, say "N".
222
223config DRM_I915_LOW_LEVEL_TRACEPOINTS
224	bool "Enable low level request tracing events"
225	depends on DRM_I915
226	default n
227	help
228	  Choose this option to turn on low level request tracing events.
229	  This provides the ability to precisely monitor engine utilisation
230	  and also analyze the request dependency resolving timeline.
231
232	  Recommended for driver developers only.
233
234	  If in doubt, say "N".
235
236config DRM_I915_DEBUG_VBLANK_EVADE
237	bool "Enable extra debug warnings for vblank evasion"
238	depends on DRM_I915
239	default n
240	help
241	  Choose this option to turn on extra debug warnings for the
242	  vblank evade mechanism. This gives a warning every time the
243	  the deadline allotted for the vblank evade critical section
244	  is exceeded, even if there isn't an actual risk of missing
245	  the vblank.
246
247	  Recommended for driver developers only.
248
249	  If in doubt, say "N".
250
251config DRM_I915_DEBUG_RUNTIME_PM
252	bool "Enable extra state checking for runtime PM"
253	depends on DRM_I915
254	default n
255	select REF_TRACKER
256	select STACKDEPOT
257	select STACKTRACE
258	help
259	  Choose this option to turn on extra state checking for the
260	  runtime PM functionality. This may introduce overhead during
261	  driver loading, suspend and resume operations.
262
263	  Recommended for driver developers only.
264
265	  If in doubt, say "N"
266
267config DRM_I915_DEBUG_WAKEREF
268	bool "Enable extra tracking for wakerefs"
269	depends on DRM_I915
270	select REF_TRACKER
271	select STACKDEPOT
272	select STACKTRACE
273	help
274	  Choose this option to turn on extra state checking and usage
275	  tracking for the wakerefPM functionality. This may introduce
276	  overhead during driver runtime.
277
278	  If in doubt, say "N"
279