|
@@ -127,7 +127,8 @@ interfaces to fix these issues:
|
|
|
the acquire context explicitly on stack and then also pass it down into
|
|
|
drivers explicitly so that the legacy-on-atomic functions can use them.
|
|
|
|
|
|
- Except for some driver code this is done.
|
|
|
+ Except for some driver code this is done. This task should be finished by
|
|
|
+ adding WARN_ON(!drm_drv_uses_atomic_modeset) in drm_modeset_lock_all().
|
|
|
|
|
|
* A bunch of the vtable hooks are now in the wrong place: DRM has a split
|
|
|
between core vfunc tables (named ``drm_foo_funcs``), which are used to
|
|
@@ -137,13 +138,6 @@ interfaces to fix these issues:
|
|
|
``_helper_funcs`` since they are not part of the core ABI. There's a
|
|
|
``FIXME`` comment in the kerneldoc for each such case in ``drm_crtc.h``.
|
|
|
|
|
|
-* There's a new helper ``drm_atomic_helper_best_encoder()`` which could be
|
|
|
- used by all atomic drivers which don't select the encoder for a given
|
|
|
- connector at runtime. That's almost all of them, and would allow us to get
|
|
|
- rid of a lot of ``best_encoder`` boilerplate in drivers.
|
|
|
-
|
|
|
- This was almost done, but new drivers added a few more cases again.
|
|
|
-
|
|
|
Contact: Daniel Vetter
|
|
|
|
|
|
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
|
|
|
reliably take that lock any more. Instead state needs to be protected with
|
|
|
suitable subordinate locks or some cleanup work pushed to a worker thread. For
|
|
|
performance-critical drivers it might also be better to go with a more
|
|
|
-fine-grained per-buffer object and per-context lockings scheme. Currently the
|
|
|
-following drivers still use ``struct_mutex``: ``msm``, ``omapdrm`` and
|
|
|
-``udl``.
|
|
|
+fine-grained per-buffer object and per-context lockings scheme. Currently only the
|
|
|
+``msm`` driver still use ``struct_mutex``.
|
|
|
|
|
|
Contact: Daniel Vetter, respective driver maintainers
|
|
|
|
|
@@ -190,7 +183,8 @@ Convert drivers to use simple modeset suspend/resume
|
|
|
|
|
|
Most drivers (except i915 and nouveau) that use
|
|
|
drm_atomic_helper_suspend/resume() can probably be converted to use
|
|
|
-drm_mode_config_helper_suspend/resume().
|
|
|
+drm_mode_config_helper_suspend/resume(). Also there's still open-coded version
|
|
|
+of the atomic suspend/resume code in older atomic modeset drivers.
|
|
|
|
|
|
Contact: Maintainer of the driver you plan to convert
|
|
|
|
|
@@ -246,20 +240,10 @@ Core refactorings
|
|
|
Clean up the DRM header mess
|
|
|
----------------------------
|
|
|
|
|
|
-Currently the DRM subsystem has only one global header, ``drmP.h``. This is
|
|
|
-used both for functions exported to helper libraries and drivers and functions
|
|
|
-only used internally in the ``drm.ko`` module. The goal would be to move all
|
|
|
-header declarations not needed outside of ``drm.ko`` into
|
|
|
-``drivers/gpu/drm/drm_*_internal.h`` header files. ``EXPORT_SYMBOL`` also
|
|
|
-needs to be dropped for these functions.
|
|
|
-
|
|
|
-This would nicely tie in with the below task to create kerneldoc after the API
|
|
|
-is cleaned up. Or with the "hide legacy cruft better" task.
|
|
|
-
|
|
|
-Note that this is well in progress, but ``drmP.h`` is still huge. The updated
|
|
|
-plan is to switch to per-file driver API headers, which will also structure
|
|
|
-the kerneldoc better. This should also allow more fine-grained ``#include``
|
|
|
-directives.
|
|
|
+The DRM subsystem originally had only one huge global header, ``drmP.h``. This
|
|
|
+is now split up, but many source files still include it. The remaining part of
|
|
|
+the cleanup work here is to replace any ``#include <drm/drmP.h>`` by only the
|
|
|
+headers needed (and fixing up any missing pre-declarations in the headers).
|
|
|
|
|
|
In the end no .c file should need to include ``drmP.h`` anymore.
|
|
|
|
|
@@ -278,26 +262,6 @@ See https://dri.freedesktop.org/docs/drm/ for what's there already.
|
|
|
|
|
|
Contact: Daniel Vetter
|
|
|
|
|
|
-Hide legacy cruft better
|
|
|
-------------------------
|
|
|
-
|
|
|
-Way back DRM supported only drivers which shadow-attached to PCI devices with
|
|
|
-userspace or fbdev drivers setting up outputs. Modern DRM drivers take charge
|
|
|
-of the entire device, you can spot them with the DRIVER_MODESET flag.
|
|
|
-
|
|
|
-Unfortunately there's still large piles of legacy code around which needs to
|
|
|
-be hidden so that driver writers don't accidentally end up using it. And to
|
|
|
-prevent security issues in those legacy IOCTLs from being exploited on modern
|
|
|
-drivers. This has multiple possible subtasks:
|
|
|
-
|
|
|
-* Extract support code for legacy features into a ``drm-legacy.ko`` kernel
|
|
|
- module and compile it only when one of the legacy drivers is enabled.
|
|
|
-
|
|
|
-This is mostly done, the only thing left is to split up ``drm_irq.c`` into
|
|
|
-legacy cruft and the parts needed by modern KMS drivers.
|
|
|
-
|
|
|
-Contact: Daniel Vetter
|
|
|
-
|
|
|
Make panic handling work
|
|
|
------------------------
|
|
|
|
|
@@ -398,18 +362,6 @@ the non-i915 specific modeset tests.
|
|
|
|
|
|
Contact: Daniel Vetter
|
|
|
|
|
|
-Create a virtual KMS driver for testing (vkms)
|
|
|
-----------------------------------------------
|
|
|
-
|
|
|
-With all the latest helpers it should be fairly simple to create a virtual KMS
|
|
|
-driver useful for testing, or for running X or similar on headless machines
|
|
|
-(to be able to still use the GPU). This would be similar to vgem, but aimed at
|
|
|
-the modeset side.
|
|
|
-
|
|
|
-Once the basics are there there's tons of possibilities to extend it.
|
|
|
-
|
|
|
-Contact: Daniel Vetter
|
|
|
-
|
|
|
Driver Specific
|
|
|
===============
|
|
|
|