We should allow SIGIO and things to interrupt us before we get to the
no-error stage of the commit process.  This code is effectively copied
from drm_atomic_helper_commit().

Signed-off-by: Eric Anholt <[email protected]>
---
 drivers/gpu/drm/vc4/vc4_kms.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
index bc6ecdc6f104..6b1ccea76243 100644
--- a/drivers/gpu/drm/vc4/vc4_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_kms.c
@@ -142,6 +142,16 @@ static int vc4_atomic_commit(struct drm_device *dev,
                return ret;
        }
 
+       if (!nonblock) {
+               ret = drm_atomic_helper_wait_for_fences(dev, state, true);
+               if (ret) {
+                       drm_atomic_helper_cleanup_planes(dev, state);
+                       kfree(c);
+                       up(&vc4->async_modeset);
+                       return ret;
+               }
+       }
+
        for_each_plane_in_state(state, plane, new_state, i) {
                if ((plane->state->fb != new_state->fb) && new_state->fb) {
                        struct drm_gem_cma_object *cma_bo =
-- 
2.11.0

Reply via email to