@@ -127,7 +127,8 @@ interfaces to fix these issues:
127
127
the acquire context explicitly on stack and then also pass it down into
128
128
drivers explicitly so that the legacy-on-atomic functions can use them.
129
129
130
- Except for some driver code this is done.
130
+ Except for some driver code this is done. This task should be finished by
131
+ adding WARN_ON(!drm_drv_uses_atomic_modeset) in drm_modeset_lock_all().
131
132
132
133
* A bunch of the vtable hooks are now in the wrong place: DRM has a split
133
134
between core vfunc tables (named ``drm_foo_funcs ``), which are used to
@@ -137,13 +138,6 @@ interfaces to fix these issues:
137
138
``_helper_funcs `` since they are not part of the core ABI. There's a
138
139
``FIXME `` comment in the kerneldoc for each such case in ``drm_crtc.h ``.
139
140
140
- * There's a new helper ``drm_atomic_helper_best_encoder() `` which could be
141
- used by all atomic drivers which don't select the encoder for a given
142
- connector at runtime. That's almost all of them, and would allow us to get
143
- rid of a lot of ``best_encoder `` boilerplate in drivers.
144
-
145
- This was almost done, but new drivers added a few more cases again.
146
-
147
141
Contact: Daniel Vetter
148
142
149
143
Get rid of dev->struct_mutex from GEM drivers
@@ -164,9 +158,8 @@ private lock. The tricky part is the BO free functions, since those can't
164
158
reliably take that lock any more. Instead state needs to be protected with
165
159
suitable subordinate locks or some cleanup work pushed to a worker thread. For
166
160
performance-critical drivers it might also be better to go with a more
167
- fine-grained per-buffer object and per-context lockings scheme. Currently the
168
- following drivers still use ``struct_mutex ``: ``msm ``, ``omapdrm `` and
169
- ``udl ``.
161
+ fine-grained per-buffer object and per-context lockings scheme. Currently only the
162
+ ``msm `` driver still use ``struct_mutex ``.
170
163
171
164
Contact: Daniel Vetter, respective driver maintainers
172
165
@@ -190,7 +183,8 @@ Convert drivers to use simple modeset suspend/resume
190
183
191
184
Most drivers (except i915 and nouveau) that use
192
185
drm_atomic_helper_suspend/resume() can probably be converted to use
193
- drm_mode_config_helper_suspend/resume().
186
+ drm_mode_config_helper_suspend/resume(). Also there's still open-coded version
187
+ of the atomic suspend/resume code in older atomic modeset drivers.
194
188
195
189
Contact: Maintainer of the driver you plan to convert
196
190
@@ -246,20 +240,10 @@ Core refactorings
246
240
Clean up the DRM header mess
247
241
----------------------------
248
242
249
- Currently the DRM subsystem has only one global header, ``drmP.h ``. This is
250
- used both for functions exported to helper libraries and drivers and functions
251
- only used internally in the ``drm.ko `` module. The goal would be to move all
252
- header declarations not needed outside of ``drm.ko `` into
253
- ``drivers/gpu/drm/drm_*_internal.h `` header files. ``EXPORT_SYMBOL `` also
254
- needs to be dropped for these functions.
255
-
256
- This would nicely tie in with the below task to create kerneldoc after the API
257
- is cleaned up. Or with the "hide legacy cruft better" task.
258
-
259
- Note that this is well in progress, but ``drmP.h `` is still huge. The updated
260
- plan is to switch to per-file driver API headers, which will also structure
261
- the kerneldoc better. This should also allow more fine-grained ``#include ``
262
- directives.
243
+ The DRM subsystem originally had only one huge global header, ``drmP.h ``. This
244
+ is now split up, but many source files still include it. The remaining part of
245
+ the cleanup work here is to replace any ``#include <drm/drmP.h> `` by only the
246
+ headers needed (and fixing up any missing pre-declarations in the headers).
263
247
264
248
In the end no .c file should need to include ``drmP.h `` anymore.
265
249
@@ -278,26 +262,6 @@ See https://dri.freedesktop.org/docs/drm/ for what's there already.
278
262
279
263
Contact: Daniel Vetter
280
264
281
- Hide legacy cruft better
282
- ------------------------
283
-
284
- Way back DRM supported only drivers which shadow-attached to PCI devices with
285
- userspace or fbdev drivers setting up outputs. Modern DRM drivers take charge
286
- of the entire device, you can spot them with the DRIVER_MODESET flag.
287
-
288
- Unfortunately there's still large piles of legacy code around which needs to
289
- be hidden so that driver writers don't accidentally end up using it. And to
290
- prevent security issues in those legacy IOCTLs from being exploited on modern
291
- drivers. This has multiple possible subtasks:
292
-
293
- * Extract support code for legacy features into a ``drm-legacy.ko `` kernel
294
- module and compile it only when one of the legacy drivers is enabled.
295
-
296
- This is mostly done, the only thing left is to split up ``drm_irq.c `` into
297
- legacy cruft and the parts needed by modern KMS drivers.
298
-
299
- Contact: Daniel Vetter
300
-
301
265
Make panic handling work
302
266
------------------------
303
267
@@ -396,17 +360,12 @@ converting things over. For modeset tests we also first need a bit of
396
360
infrastructure to use dumb buffers for untiled buffers, to be able to run all
397
361
the non-i915 specific modeset tests.
398
362
399
- Contact: Daniel Vetter
400
-
401
- Create a virtual KMS driver for testing (vkms)
402
- ----------------------------------------------
403
-
404
- With all the latest helpers it should be fairly simple to create a virtual KMS
405
- driver useful for testing, or for running X or similar on headless machines
406
- (to be able to still use the GPU). This would be similar to vgem, but aimed at
407
- the modeset side.
363
+ Extend virtual test driver (VKMS)
364
+ ---------------------------------
408
365
409
- Once the basics are there there's tons of possibilities to extend it.
366
+ See the documentation of :ref: `VKMS <vkms >` for more details. This is an ideal
367
+ internship task, since it only requires a virtual machine and can be sized to
368
+ fit the available time.
410
369
411
370
Contact: Daniel Vetter
412
371
0 commit comments