drm: rcar-du: Fix crash when enabling a non-visible plane
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Fri, 7 Aug 2020 21:07:21 +0000 (00:07 +0300)
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Tue, 22 Sep 2020 11:10:05 +0000 (14:10 +0300)
The DU driver handles non-visible planes (fully clipped by the display's
boundaries) by considering them as disabled. It thus disables the plane
at the hardware level when the plane is moved off-screen. However, if
the plane was previously disabled and is non-visible when it gets
enabled, the attempt to disable it crashes, as the plane wasn't
previously enabled. Fix it.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
drivers/gpu/drm/rcar-du/rcar_du_vsp.c

index f1a81c9b184d4c427b2de1df4ac588e966c92142..ff233a7b398d3b3e6b12634f45e3b85e56f1d7eb 100644 (file)
@@ -279,7 +279,7 @@ static void rcar_du_vsp_plane_atomic_update(struct drm_plane *plane,
 
        if (plane->state->visible)
                rcar_du_vsp_plane_setup(rplane);
-       else
+       else if (old_state->crtc)
                vsp1_du_atomic_update(rplane->vsp->vsp, crtc->vsp_pipe,
                                      rplane->index, NULL);
 }