For failures in async flip atomic check/commit path return user readable
error codes in struct drm_atomic_state.

Signed-off-by: Arun R Murthy <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_display.c | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 
b57efd8707743eb1b5a2b377fba8d6955af89825..6639f9168cf775c220fb653d69f8e27c5a4e6b88
 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -5911,9 +5911,10 @@ static int intel_async_flip_check_uapi(struct 
intel_atomic_state *state,
        }
 
        if (intel_crtc_needs_modeset(new_crtc_state)) {
-               drm_dbg_kms(display->drm,
-                           "[CRTC:%d:%s] modeset required\n",
-                           crtc->base.base.id, crtc->base.name);
+               drm_mode_atomic_add_error_msg(&state->base.error_code,
+                                             
DRM_MODE_ATOMIC_CRTC_NEED_FULL_MODESET,
+                                             "[CRTC:%d:%s] requires full 
modeset",
+                                             crtc->base.base.id, 
crtc->base.name);
                return -EINVAL;
        }
 
@@ -5980,9 +5981,10 @@ static int intel_async_flip_check_hw(struct 
intel_atomic_state *state, struct in
        }
 
        if (intel_crtc_needs_modeset(new_crtc_state)) {
-               drm_dbg_kms(display->drm,
-                           "[CRTC:%d:%s] modeset required\n",
-                           crtc->base.base.id, crtc->base.name);
+               drm_mode_atomic_add_error_msg(&state->base.error_code,
+                                             
DRM_MODE_ATOMIC_CRTC_NEED_FULL_MODESET,
+                                             "[CRTC:%d:%s] requires full 
modeset",
+                                             crtc->base.base.id, 
crtc->base.name);
                return -EINVAL;
        }
 
@@ -6020,11 +6022,12 @@ static int intel_async_flip_check_hw(struct 
intel_atomic_state *state, struct in
 
                if (!intel_plane_can_async_flip(plane, 
new_plane_state->hw.fb->format->format,
                                                
new_plane_state->hw.fb->modifier)) {
-                       drm_dbg_kms(display->drm,
-                                   "[PLANE:%d:%s] pixel format %p4cc / 
modifier 0x%llx does not support async flip\n",
-                                   plane->base.base.id, plane->base.name,
-                                   &new_plane_state->hw.fb->format->format,
-                                   new_plane_state->hw.fb->modifier);
+                       drm_mode_atomic_add_error_msg(&state->base.error_code,
+                                                     
DRM_MODE_ATOMIC_ASYNC_MODIFIER_NOT_SUPP,
+                                                     "[PLANE:%d:%s] pixel 
format %p4cc / 0x%llx modifier does not support async flip",
+                                                     plane->base.base.id, 
plane->base.name,
+                                                     
&new_plane_state->hw.fb->format->format,
+                                                     
new_plane_state->hw.fb->modifier);
                        return -EINVAL;
                }
 

-- 
2.25.1

Reply via email to