[PATCH] drm/atomic: Add sanity checks to drm_atomic_helper_async_commit()
Boris Brezillon
boris.brezillon at bootlin.com
Fri Mar 30 14:55:18 UTC 2018
->atomic_async_update() requires that drivers update the plane->state
object before returning. Make sure at least common properties have been
updated.
Cc: Gustavo Padovan <gustavo at padovan.org>
Signed-off-by: Boris Brezillon <boris.brezillon at bootlin.com>
---
Hello,
This is a problem I had when debugging the VC4 ->atomic_async_update()
implementation. The function was not updating plane->fb as it's
supposed thus leaving plane->state->fb in an inconsistent state after
each async update.
Not sure if such WARN_ON_ONCE() are accepted in the core though, so
I'll maintainers decide whether this is relevant or not and whether
they prefer to have WARN_ON() or DRM_ERROR() messages.
Regards,
Boris
---
drivers/gpu/drm/drm_atomic_helper.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index c35654591c12..d2b2583487ee 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -1561,6 +1561,17 @@ void drm_atomic_helper_async_commit(struct drm_device *dev,
for_each_new_plane_in_state(state, plane, plane_state, i) {
funcs = plane->helper_private;
funcs->atomic_async_update(plane, plane_state);
+
+ /*
+ * ->atomic_async_update() is supposed to update the
+ * plane->state in-place, make sure at least common
+ * properties have been properly updated.
+ */
+ WARN_ON_ONCE(plane->state->fb != plane_state->fb);
+ WARN_ON_ONCE(plane->state->crtc_x != plane_state->crtc_x);
+ WARN_ON_ONCE(plane->state->crtc_y != plane_state->crtc_y);
+ WARN_ON_ONCE(plane->state->src_x != plane_state->src_x);
+ WARN_ON_ONCE(plane->state->src_y != plane_state->src_y);
}
}
EXPORT_SYMBOL(drm_atomic_helper_async_commit);
--
2.14.1
More information about the dri-devel
mailing list