Message ID | 20180724133215.31917-1-boris.brezillon@bootlin.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] drm/atomic: Check old_plane_state->crtc in drm_atomic_helper_async_check() | expand |
On Tue, 24 Jul 2018 15:32:15 +0200 Boris Brezillon <boris.brezillon@bootlin.com> wrote: > Async plane update is supposed to work only when updating the FB or FB > position of an already enabled plane. That does not apply to requests > where the plane was previously disabled or assigned to a different > CTRC. > > Check old_plane_state->crtc value to make sure async plane update is > allowed. > > Fixes: fef9df8b5945 ("drm/atomic: initial support for asynchronous plane update") > Cc: <stable@vger.kernel.org> > Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com> > Reviewed-by: Eric Anholt <eric@anholt.net> Applied to drm-misc-fixes. > --- > Changes in v2: > - Cc stable > - Add Eric's R-b > --- > drivers/gpu/drm/drm_atomic_helper.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index 866a2cc72ef6..f7ccfebd3ca8 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -1555,7 +1555,8 @@ int drm_atomic_helper_async_check(struct drm_device *dev, > if (n_planes != 1) > return -EINVAL; > > - if (!new_plane_state->crtc) > + if (!new_plane_state->crtc || > + old_plane_state->crtc != new_plane_state->crtc) > return -EINVAL; > > funcs = plane->helper_private;
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 866a2cc72ef6..f7ccfebd3ca8 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1555,7 +1555,8 @@ int drm_atomic_helper_async_check(struct drm_device *dev, if (n_planes != 1) return -EINVAL; - if (!new_plane_state->crtc) + if (!new_plane_state->crtc || + old_plane_state->crtc != new_plane_state->crtc) return -EINVAL; funcs = plane->helper_private;