From: Ville Syrjälä <ville.syrj...@linux.intel.com>

Create the drm_printer at the start of intel_pipe_config_compare()
and pass it on to all the mismatch() functions.

Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 101 +++++++++----------
 1 file changed, 46 insertions(+), 55 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 26580d4aef2d..69c9693dcc8d 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -4787,11 +4787,11 @@ intel_compare_buffer(const u8 *a, const u8 *b, size_t 
len)
        return memcmp(a, b, len) == 0;
 }
 
-static void __printf(4, 5)
-pipe_config_mismatch(bool fastset, const struct intel_crtc *crtc,
+static void __printf(5, 6)
+pipe_config_mismatch(struct drm_printer *p, bool fastset,
+                    const struct intel_crtc *crtc,
                     const char *name, const char *format, ...)
 {
-       struct drm_i915_private *i915 = to_i915(crtc->base.dev);
        struct va_format vaf;
        va_list args;
 
@@ -4800,65 +4800,55 @@ pipe_config_mismatch(bool fastset, const struct 
intel_crtc *crtc,
        vaf.va = &args;
 
        if (fastset)
-               drm_dbg_kms(&i915->drm,
-                           "[CRTC:%d:%s] fastset requirement not met in %s 
%pV\n",
-                           crtc->base.base.id, crtc->base.name, name, &vaf);
+               drm_printf(p, "[CRTC:%d:%s] fastset requirement not met in %s 
%pV\n",
+                          crtc->base.base.id, crtc->base.name, name, &vaf);
        else
-               drm_err(&i915->drm, "[CRTC:%d:%s] mismatch in %s %pV\n",
-                       crtc->base.base.id, crtc->base.name, name, &vaf);
+               drm_printf(p, "[CRTC:%d:%s] mismatch in %s %pV\n",
+                          crtc->base.base.id, crtc->base.name, name, &vaf);
 
        va_end(args);
 }
 
 static void
-pipe_config_infoframe_mismatch(bool fastset, const struct intel_crtc *crtc,
+pipe_config_infoframe_mismatch(struct drm_printer *p, bool fastset,
+                              const struct intel_crtc *crtc,
                               const char *name,
                               const union hdmi_infoframe *a,
                               const union hdmi_infoframe *b)
 {
        struct drm_i915_private *i915 = to_i915(crtc->base.dev);
-       struct drm_printer p;
        const char *loglevel;
 
        if (fastset) {
                if (!drm_debug_enabled(DRM_UT_KMS))
                        return;
 
-               p = drm_dbg_printer(&i915->drm, DRM_UT_KMS, NULL);
                loglevel = KERN_DEBUG;
        } else {
-               p = drm_err_printer(&i915->drm, NULL);
                loglevel = KERN_ERR;
        }
 
-       pipe_config_mismatch(fastset, crtc, name, "infoframe");
+       pipe_config_mismatch(p, fastset, crtc, name, "infoframe");
 
-       drm_printf(&p, "expected:\n");
+       drm_printf(p, "expected:\n");
        hdmi_infoframe_log(loglevel, i915->drm.dev, a);
-       drm_printf(&p, "found:\n");
+       drm_printf(p, "found:\n");
        hdmi_infoframe_log(loglevel, i915->drm.dev, b);
 }
 
 static void
-pipe_config_dp_vsc_sdp_mismatch(bool fastset, const struct intel_crtc *crtc,
+pipe_config_dp_vsc_sdp_mismatch(struct drm_printer *p, bool fastset,
+                               const struct intel_crtc *crtc,
                                const char *name,
                                const struct drm_dp_vsc_sdp *a,
                                const struct drm_dp_vsc_sdp *b)
 {
-       struct drm_i915_private *i915 = to_i915(crtc->base.dev);
-       struct drm_printer p;
+       pipe_config_mismatch(p, fastset, crtc, name, "dp sdp");
 
-       if (fastset)
-               p = drm_dbg_printer(&i915->drm, DRM_UT_KMS, NULL);
-       else
-               p = drm_err_printer(&i915->drm, NULL);
-
-       pipe_config_mismatch(fastset, crtc, name, "dp sdp");
-
-       drm_printf(&p, "expected:\n");
-       drm_dp_vsc_sdp_log(&p, a);
-       drm_printf(&p, "found:\n");
-       drm_dp_vsc_sdp_log(&p, b);
+       drm_printf(p, "expected:\n");
+       drm_dp_vsc_sdp_log(p, a);
+       drm_printf(p, "found:\n");
+       drm_dp_vsc_sdp_log(p, b);
 }
 
 /* Returns the length up to and including the last differing byte */
@@ -4876,7 +4866,8 @@ memcmp_diff_len(const u8 *a, const u8 *b, size_t len)
 }
 
 static void
-pipe_config_buffer_mismatch(bool fastset, const struct intel_crtc *crtc,
+pipe_config_buffer_mismatch(struct drm_printer *p, bool fastset,
+                           const struct intel_crtc *crtc,
                            const char *name,
                            const u8 *a, const u8 *b, size_t len)
 {
@@ -4891,7 +4882,7 @@ pipe_config_buffer_mismatch(bool fastset, const struct 
intel_crtc *crtc,
                loglevel = KERN_ERR;
        }
 
-       pipe_config_mismatch(fastset, crtc, name, "buffer");
+       pipe_config_mismatch(p, fastset, crtc, name, "buffer");
 
        /* only dump up to the last difference */
        len = memcmp_diff_len(a, b, len);
@@ -4903,26 +4894,20 @@ pipe_config_buffer_mismatch(bool fastset, const struct 
intel_crtc *crtc,
 }
 
 static void
-pipe_config_pll_mismatch(bool fastset,
+pipe_config_pll_mismatch(struct drm_printer *p, bool fastset,
                         const struct intel_crtc *crtc,
                         const char *name,
                         const struct intel_dpll_hw_state *a,
                         const struct intel_dpll_hw_state *b)
 {
        struct drm_i915_private *i915 = to_i915(crtc->base.dev);
-       struct drm_printer p;
 
-       if (fastset)
-               p = drm_dbg_printer(&i915->drm, DRM_UT_KMS, NULL);
-       else
-               p = drm_err_printer(&i915->drm, NULL);
+       pipe_config_mismatch(p, fastset, crtc, name, " "); /* stupid 
-Werror=format-zero-length */
 
-       pipe_config_mismatch(fastset, crtc, name, " "); /* stupid 
-Werror=format-zero-length */
-
-       drm_dbg_kms(&i915->drm, "expected:\n");
-       intel_dpll_dump_hw_state(i915, &p, a);
-       drm_dbg_kms(&i915->drm, "found:\n");
-       intel_dpll_dump_hw_state(i915, &p, b);
+       drm_printf(p, "expected:\n");
+       intel_dpll_dump_hw_state(i915, p, a);
+       drm_printf(p, "found:\n");
+       intel_dpll_dump_hw_state(i915, p, b);
 }
 
 bool
@@ -4932,13 +4917,19 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
 {
        struct drm_i915_private *dev_priv = 
to_i915(current_config->uapi.crtc->dev);
        struct intel_crtc *crtc = to_intel_crtc(pipe_config->uapi.crtc);
+       struct drm_printer p;
        bool ret = true;
 
+       if (fastset)
+               p = drm_dbg_printer(&dev_priv->drm, DRM_UT_KMS, NULL);
+       else
+               p = drm_err_printer(&dev_priv->drm, NULL);
+
 #define PIPE_CONF_CHECK_X(name) do { \
        if (current_config->name != pipe_config->name) { \
                BUILD_BUG_ON_MSG(__same_type(current_config->name, bool), \
                                 __stringify(name) " is bool"); \
-               pipe_config_mismatch(fastset, crtc, __stringify(name), \
+               pipe_config_mismatch(&p, fastset, crtc, __stringify(name), \
                                     "(expected 0x%08x, found 0x%08x)", \
                                     current_config->name, \
                                     pipe_config->name); \
@@ -4950,7 +4941,7 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
        if ((current_config->name & (mask)) != (pipe_config->name & (mask))) { \
                BUILD_BUG_ON_MSG(__same_type(current_config->name, bool), \
                                 __stringify(name) " is bool"); \
-               pipe_config_mismatch(fastset, crtc, __stringify(name), \
+               pipe_config_mismatch(&p, fastset, crtc, __stringify(name), \
                                     "(expected 0x%08x, found 0x%08x)", \
                                     current_config->name & (mask), \
                                     pipe_config->name & (mask)); \
@@ -4962,7 +4953,7 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
        if (current_config->name != pipe_config->name) { \
                BUILD_BUG_ON_MSG(__same_type(current_config->name, bool), \
                                 __stringify(name) " is bool"); \
-               pipe_config_mismatch(fastset, crtc, __stringify(name), \
+               pipe_config_mismatch(&p, fastset, crtc, __stringify(name), \
                                     "(expected %i, found %i)", \
                                     current_config->name, \
                                     pipe_config->name); \
@@ -4974,7 +4965,7 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
        if (current_config->name != pipe_config->name) { \
                BUILD_BUG_ON_MSG(!__same_type(current_config->name, bool), \
                                 __stringify(name) " is not bool");     \
-               pipe_config_mismatch(fastset, crtc,  __stringify(name), \
+               pipe_config_mismatch(&p, fastset, crtc,  __stringify(name), \
                                     "(expected %s, found %s)", \
                                     str_yes_no(current_config->name), \
                                     str_yes_no(pipe_config->name)); \
@@ -4984,7 +4975,7 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
 
 #define PIPE_CONF_CHECK_P(name) do { \
        if (current_config->name != pipe_config->name) { \
-               pipe_config_mismatch(fastset, crtc, __stringify(name), \
+               pipe_config_mismatch(&p, fastset, crtc, __stringify(name), \
                                     "(expected %p, found %p)", \
                                     current_config->name, \
                                     pipe_config->name); \
@@ -4995,7 +4986,7 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
 #define PIPE_CONF_CHECK_M_N(name) do { \
        if (!intel_compare_link_m_n(&current_config->name, \
                                    &pipe_config->name)) { \
-               pipe_config_mismatch(fastset, crtc, __stringify(name), \
+               pipe_config_mismatch(&p, fastset, crtc, __stringify(name), \
                                     "(expected tu %i data %i/%i link %i/%i, " \
                                     "found tu %i, data %i/%i link %i/%i)", \
                                     current_config->name.tu, \
@@ -5015,7 +5006,7 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
 #define PIPE_CONF_CHECK_PLL(name) do { \
        if (!intel_dpll_compare_hw_state(dev_priv, &current_config->name, \
                                         &pipe_config->name)) { \
-               pipe_config_pll_mismatch(fastset, crtc, __stringify(name), \
+               pipe_config_pll_mismatch(&p, fastset, crtc, __stringify(name), \
                                         &current_config->name, \
                                         &pipe_config->name); \
                ret = false; \
@@ -5048,7 +5039,7 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
 
 #define PIPE_CONF_CHECK_FLAGS(name, mask) do { \
        if ((current_config->name ^ pipe_config->name) & (mask)) { \
-               pipe_config_mismatch(fastset, crtc, __stringify(name), \
+               pipe_config_mismatch(&p, fastset, crtc, __stringify(name), \
                                     "(%x) (expected %i, found %i)", \
                                     (mask), \
                                     current_config->name & (mask), \
@@ -5060,7 +5051,7 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
 #define PIPE_CONF_CHECK_INFOFRAME(name) do { \
        if (!intel_compare_infoframe(&current_config->infoframes.name, \
                                     &pipe_config->infoframes.name)) { \
-               pipe_config_infoframe_mismatch(fastset, crtc, 
__stringify(name), \
+               pipe_config_infoframe_mismatch(&p, fastset, crtc, 
__stringify(name), \
                                               
&current_config->infoframes.name, \
                                               &pipe_config->infoframes.name); \
                ret = false; \
@@ -5070,7 +5061,7 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
 #define PIPE_CONF_CHECK_DP_VSC_SDP(name) do { \
        if (!intel_compare_dp_vsc_sdp(&current_config->infoframes.name, \
                                      &pipe_config->infoframes.name)) { \
-               pipe_config_dp_vsc_sdp_mismatch(fastset, crtc, 
__stringify(name), \
+               pipe_config_dp_vsc_sdp_mismatch(&p, fastset, crtc, 
__stringify(name), \
                                                
&current_config->infoframes.name, \
                                                &pipe_config->infoframes.name); 
\
                ret = false; \
@@ -5081,7 +5072,7 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
        BUILD_BUG_ON(sizeof(current_config->name) != (len)); \
        BUILD_BUG_ON(sizeof(pipe_config->name) != (len)); \
        if (!intel_compare_buffer(current_config->name, pipe_config->name, 
(len))) { \
-               pipe_config_buffer_mismatch(fastset, crtc, __stringify(name), \
+               pipe_config_buffer_mismatch(&p, fastset, crtc, 
__stringify(name), \
                                            current_config->name, \
                                            pipe_config->name, \
                                            (len)); \
@@ -5094,7 +5085,7 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
            !intel_color_lut_equal(current_config, \
                                   current_config->lut, pipe_config->lut, \
                                   is_pre_csc_lut)) {   \
-               pipe_config_mismatch(fastset, crtc, __stringify(lut), \
+               pipe_config_mismatch(&p, fastset, crtc, __stringify(lut), \
                                     "hw_state doesn't match sw_state"); \
                ret = false; \
        } \
-- 
2.43.0

Reply via email to