drm: drm_plane_force_disable is not for atomic drivers
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 22 Mar 2017 21:50:42 +0000 (22:50 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 29 Mar 2017 07:14:49 +0000 (09:14 +0200)
This way I can explain why it'll be fine to pass a NULL acquire ctx
here in the next patch.

Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170322215058.8671-4-daniel.vetter@ffwll.ch
drivers/gpu/drm/drm_plane.c

index 8a4e75929810f3c8874eb00e0f896495fdb7c365..67119332c4413526a85280cb0510effeb090a8fc 100644 (file)
@@ -277,6 +277,12 @@ EXPORT_SYMBOL(drm_plane_from_index);
  *
  * Used when the plane's current framebuffer is destroyed,
  * and when restoring fbdev mode.
+ *
+ * Note that this function is not suitable for atomic drivers, since it doesn't
+ * wire through the lock acquisition context properly and hence can't handle
+ * retries or driver private locks. You probably want to use
+ * drm_atomic_helper_disable_plane() or
+ * drm_atomic_helper_disable_planes_on_crtc() instead.
  */
 void drm_plane_force_disable(struct drm_plane *plane)
 {
@@ -285,6 +291,8 @@ void drm_plane_force_disable(struct drm_plane *plane)
        if (!plane->fb)
                return;
 
+       WARN_ON(drm_drv_uses_atomic_modeset(plane->dev));
+
        plane->old_fb = plane->fb;
        ret = plane->funcs->disable_plane(plane);
        if (ret) {