drm/i915: Move state dump to the end of atomic_check()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 17 May 2019 19:31:28 +0000 (22:31 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 4 Jun 2019 13:42:53 +0000 (16:42 +0300)
Currently we're dumping the crtc states before they have
been fully calculated. Move the dumping to the end of
.atomic_check() so we get a fully up to date dump.

Let's also do the dump for fully disabled pipes, but we'll
limit that to just saying that the pipe is disabled since
the rest of the state is going to be nonsense in that case.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190517193132.8140-10-ville.syrjala@linux.intel.com
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
drivers/gpu/drm/i915/intel_display.c

index 7ce61ecca78bcc969094019870074ddf4e8f084c..b7fc89986793ef66064fb230d852adb3b5586637 100644 (file)
@@ -11805,8 +11805,9 @@ static void intel_dump_pipe_config(struct intel_crtc_state *pipe_config,
        struct drm_framebuffer *fb;
        char buf[64];
 
-       DRM_DEBUG_KMS("[CRTC:%d:%s]%s\n",
-                     crtc->base.base.id, crtc->base.name, context);
+       DRM_DEBUG_KMS("[CRTC:%d:%s] enable: %s %s\n",
+                     crtc->base.base.id, crtc->base.name,
+                     yesno(pipe_config->base.enable), context);
 
        snprintf_output_types(buf, sizeof(buf), pipe_config->output_types);
        DRM_DEBUG_KMS("output_types: %s (0x%x)\n",
@@ -13399,10 +13400,6 @@ static int intel_atomic_check(struct drm_device *dev,
 
                if (needs_modeset(&new_crtc_state->base))
                        any_ms = true;
-
-               intel_dump_pipe_config(new_crtc_state,
-                                      needs_modeset(&new_crtc_state->base) ?
-                                      "[modeset]" : "[fastset]");
        }
 
        ret = drm_dp_mst_atomic_check(&state->base);
@@ -13434,6 +13431,17 @@ static int intel_atomic_check(struct drm_device *dev,
        if (ret)
                return ret;
 
+       for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
+                                           new_crtc_state, i) {
+               if (!needs_modeset(&new_crtc_state->base) &&
+                   !new_crtc_state->update_pipe)
+                       continue;
+
+               intel_dump_pipe_config(new_crtc_state,
+                                      needs_modeset(&new_crtc_state->base) ?
+                                      "[modeset]" : "[fastset]");
+       }
+
        return 0;
 }