Currently there's no indication if fence wait timed out. Debug log about
timeouts and other errors.

Cc: Ville Syrjälä <[email protected]>
Cc: Maarten Lankhorst <[email protected]>
Signed-off-by: Jani Nikula <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_display.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index eed906a30749..aa5d41dac8a9 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -7274,6 +7274,7 @@ static void skl_commit_modeset_enables(struct 
intel_atomic_state *state)
 
 static void intel_atomic_commit_fence_wait(struct intel_atomic_state *state)
 {
+       struct intel_display *display = to_intel_display(state);
        struct drm_plane *plane;
        struct drm_plane_state *new_plane_state;
        long ret;
@@ -7285,8 +7286,13 @@ static void intel_atomic_commit_fence_wait(struct 
intel_atomic_state *state)
 
                ret = dma_fence_wait_timeout(new_plane_state->fence, false,
                                             i915_fence_timeout());
-               if (ret <= 0)
+               if (!ret)
+                       ret = -ETIMEDOUT;
+               if (ret < 0) {
+                       drm_dbg_kms(display->drm, "[PLANE:%d:%s] fence wait 
failed (%pe)\n",
+                                   plane->base.id, plane->name, ERR_PTR(ret));
                        break;
+               }
 
                dma_fence_put(new_plane_state->fence);
                new_plane_state->fence = NULL;
-- 
2.47.3

Reply via email to