[Intel-gfx] [PATCH 1/5] drm: Add DRM_DEBUG_ATOMIC

Rob Clark robdclark at gmail.com
Sun Feb 22 08:09:02 PST 2015


On Sun, Feb 22, 2015 at 6:24 AM, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> Atomic state handling adds a lot of indirection and complexity between
> simple updates and drivers. For easier debugging the diagnostic output
> is therefore rather chatty. Which is great for tracking down atomic
> issues, but really annoying otherwise.
>
> Add a new DRM_DEBUG_ATOMIC to be able to filter this out.
>
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>

Reviewed-by: Rob Clark <robdclark at gmail.com>

> ---
>  drivers/gpu/drm/drm_atomic.c        | 100 +++++++++++++++--------------
>  drivers/gpu/drm/drm_atomic_helper.c | 124 ++++++++++++++++++------------------
>  include/drm/drmP.h                  |   9 +++
>  3 files changed, 122 insertions(+), 111 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
> index c2e9c5283136..321e098ddf04 100644
> --- a/drivers/gpu/drm/drm_atomic.c
> +++ b/drivers/gpu/drm/drm_atomic.c
> @@ -92,7 +92,7 @@ drm_atomic_state_alloc(struct drm_device *dev)
>
>         state->dev = dev;
>
> -       DRM_DEBUG_KMS("Allocate atomic state %p\n", state);
> +       DRM_DEBUG_ATOMIC("Allocate atomic state %p\n", state);
>
>         return state;
>  fail:
> @@ -122,7 +122,7 @@ void drm_atomic_state_clear(struct drm_atomic_state *state)
>         struct drm_mode_config *config = &dev->mode_config;
>         int i;
>
> -       DRM_DEBUG_KMS("Clearing atomic state %p\n", state);
> +       DRM_DEBUG_ATOMIC("Clearing atomic state %p\n", state);
>
>         for (i = 0; i < state->num_connector; i++) {
>                 struct drm_connector *connector = state->connectors[i];
> @@ -172,7 +172,7 @@ void drm_atomic_state_free(struct drm_atomic_state *state)
>  {
>         drm_atomic_state_clear(state);
>
> -       DRM_DEBUG_KMS("Freeing atomic state %p\n", state);
> +       DRM_DEBUG_ATOMIC("Freeing atomic state %p\n", state);
>
>         kfree_state(state);
>  }
> @@ -217,8 +217,8 @@ drm_atomic_get_crtc_state(struct drm_atomic_state *state,
>         state->crtcs[index] = crtc;
>         crtc_state->state = state;
>
> -       DRM_DEBUG_KMS("Added [CRTC:%d] %p state to %p\n",
> -                     crtc->base.id, crtc_state, state);
> +       DRM_DEBUG_ATOMIC("Added [CRTC:%d] %p state to %p\n",
> +                        crtc->base.id, crtc_state, state);
>
>         return crtc_state;
>  }
> @@ -293,8 +293,8 @@ static int drm_atomic_crtc_check(struct drm_crtc *crtc,
>          */
>
>         if (state->active && !state->enable) {
> -               DRM_DEBUG_KMS("[CRTC:%d] active without enabled\n",
> -                             crtc->base.id);
> +               DRM_DEBUG_ATOMIC("[CRTC:%d] active without enabled\n",
> +                                crtc->base.id);
>                 return -EINVAL;
>         }
>
> @@ -340,8 +340,8 @@ drm_atomic_get_plane_state(struct drm_atomic_state *state,
>         state->planes[index] = plane;
>         plane_state->state = state;
>
> -       DRM_DEBUG_KMS("Added [PLANE:%d] %p state to %p\n",
> -                     plane->base.id, plane_state, state);
> +       DRM_DEBUG_ATOMIC("Added [PLANE:%d] %p state to %p\n",
> +                        plane->base.id, plane_state, state);
>
>         if (plane_state->crtc) {
>                 struct drm_crtc_state *crtc_state;
> @@ -477,10 +477,10 @@ static int drm_atomic_plane_check(struct drm_plane *plane,
>
>         /* either *both* CRTC and FB must be set, or neither */
>         if (WARN_ON(state->crtc && !state->fb)) {
> -               DRM_DEBUG_KMS("CRTC set but no FB\n");
> +               DRM_DEBUG_ATOMIC("CRTC set but no FB\n");
>                 return -EINVAL;
>         } else if (WARN_ON(state->fb && !state->crtc)) {
> -               DRM_DEBUG_KMS("FB set but no CRTC\n");
> +               DRM_DEBUG_ATOMIC("FB set but no CRTC\n");
>                 return -EINVAL;
>         }
>
> @@ -490,7 +490,7 @@ static int drm_atomic_plane_check(struct drm_plane *plane,
>
>         /* Check whether this plane is usable on this CRTC */
>         if (!(plane->possible_crtcs & drm_crtc_mask(state->crtc))) {
> -               DRM_DEBUG_KMS("Invalid crtc for plane\n");
> +               DRM_DEBUG_ATOMIC("Invalid crtc for plane\n");
>                 return -EINVAL;
>         }
>
> @@ -499,8 +499,8 @@ static int drm_atomic_plane_check(struct drm_plane *plane,
>                 if (state->fb->pixel_format == plane->format_types[i])
>                         break;
>         if (i == plane->format_count) {
> -               DRM_DEBUG_KMS("Invalid pixel format %s\n",
> -                             drm_get_format_name(state->fb->pixel_format));
> +               DRM_DEBUG_ATOMIC("Invalid pixel format %s\n",
> +                                drm_get_format_name(state->fb->pixel_format));
>                 return -EINVAL;
>         }
>
> @@ -509,9 +509,9 @@ static int drm_atomic_plane_check(struct drm_plane *plane,
>             state->crtc_x > INT_MAX - (int32_t) state->crtc_w ||
>             state->crtc_h > INT_MAX ||
>             state->crtc_y > INT_MAX - (int32_t) state->crtc_h) {
> -               DRM_DEBUG_KMS("Invalid CRTC coordinates %ux%u+%d+%d\n",
> -                             state->crtc_w, state->crtc_h,
> -                             state->crtc_x, state->crtc_y);
> +               DRM_DEBUG_ATOMIC("Invalid CRTC coordinates %ux%u+%d+%d\n",
> +                                state->crtc_w, state->crtc_h,
> +                                state->crtc_x, state->crtc_y);
>                 return -ERANGE;
>         }
>
> @@ -523,12 +523,12 @@ static int drm_atomic_plane_check(struct drm_plane *plane,
>             state->src_x > fb_width - state->src_w ||
>             state->src_h > fb_height ||
>             state->src_y > fb_height - state->src_h) {
> -               DRM_DEBUG_KMS("Invalid source coordinates "
> -                             "%u.%06ux%u.%06u+%u.%06u+%u.%06u\n",
> -                             state->src_w >> 16, ((state->src_w & 0xffff) * 15625) >> 10,
> -                             state->src_h >> 16, ((state->src_h & 0xffff) * 15625) >> 10,
> -                             state->src_x >> 16, ((state->src_x & 0xffff) * 15625) >> 10,
> -                             state->src_y >> 16, ((state->src_y & 0xffff) * 15625) >> 10);
> +               DRM_DEBUG_ATOMIC("Invalid source coordinates "
> +                                "%u.%06ux%u.%06u+%u.%06u+%u.%06u\n",
> +                                state->src_w >> 16, ((state->src_w & 0xffff) * 15625) >> 10,
> +                                state->src_h >> 16, ((state->src_h & 0xffff) * 15625) >> 10,
> +                                state->src_x >> 16, ((state->src_x & 0xffff) * 15625) >> 10,
> +                                state->src_y >> 16, ((state->src_y & 0xffff) * 15625) >> 10);
>                 return -ENOSPC;
>         }
>
> @@ -575,7 +575,7 @@ drm_atomic_get_connector_state(struct drm_atomic_state *state,
>          * at most the array is a bit too large.
>          */
>         if (index >= state->num_connector) {
> -               DRM_DEBUG_KMS("Hot-added connector would overflow state array, restarting\n");
> +               DRM_DEBUG_ATOMIC("Hot-added connector would overflow state array, restarting\n");
>                 return ERR_PTR(-EAGAIN);
>         }
>
> @@ -590,8 +590,8 @@ drm_atomic_get_connector_state(struct drm_atomic_state *state,
>         state->connectors[index] = connector;
>         connector_state->state = state;
>
> -       DRM_DEBUG_KMS("Added [CONNECTOR:%d] %p state to %p\n",
> -                     connector->base.id, connector_state, state);
> +       DRM_DEBUG_ATOMIC("Added [CONNECTOR:%d] %p state to %p\n",
> +                        connector->base.id, connector_state, state);
>
>         if (connector_state->crtc) {
>                 struct drm_crtc_state *crtc_state;
> @@ -752,10 +752,11 @@ drm_atomic_set_crtc_for_plane(struct drm_plane_state *plane_state,
>         }
>
>         if (crtc)
> -               DRM_DEBUG_KMS("Link plane state %p to [CRTC:%d]\n",
> -                             plane_state, crtc->base.id);
> +               DRM_DEBUG_ATOMIC("Link plane state %p to [CRTC:%d]\n",
> +                                plane_state, crtc->base.id);
>         else
> -               DRM_DEBUG_KMS("Link plane state %p to [NOCRTC]\n", plane_state);
> +               DRM_DEBUG_ATOMIC("Link plane state %p to [NOCRTC]\n",
> +                                plane_state);
>
>         return 0;
>  }
> @@ -782,10 +783,11 @@ drm_atomic_set_fb_for_plane(struct drm_plane_state *plane_state,
>         plane_state->fb = fb;
>
>         if (fb)
> -               DRM_DEBUG_KMS("Set [FB:%d] for plane state %p\n",
> -                             fb->base.id, plane_state);
> +               DRM_DEBUG_ATOMIC("Set [FB:%d] for plane state %p\n",
> +                                fb->base.id, plane_state);
>         else
> -               DRM_DEBUG_KMS("Set [NOFB] for plane state %p\n", plane_state);
> +               DRM_DEBUG_ATOMIC("Set [NOFB] for plane state %p\n",
> +                                plane_state);
>  }
>  EXPORT_SYMBOL(drm_atomic_set_fb_for_plane);
>
> @@ -818,11 +820,11 @@ drm_atomic_set_crtc_for_connector(struct drm_connector_state *conn_state,
>         conn_state->crtc = crtc;
>
>         if (crtc)
> -               DRM_DEBUG_KMS("Link connector state %p to [CRTC:%d]\n",
> -                             conn_state, crtc->base.id);
> +               DRM_DEBUG_ATOMIC("Link connector state %p to [CRTC:%d]\n",
> +                                conn_state, crtc->base.id);
>         else
> -               DRM_DEBUG_KMS("Link connector state %p to [NOCRTC]\n",
> -                             conn_state);
> +               DRM_DEBUG_ATOMIC("Link connector state %p to [NOCRTC]\n",
> +                                conn_state);
>
>         return 0;
>  }
> @@ -858,8 +860,8 @@ drm_atomic_add_affected_connectors(struct drm_atomic_state *state,
>         if (ret)
>                 return ret;
>
> -       DRM_DEBUG_KMS("Adding all current connectors for [CRTC:%d] to %p\n",
> -                     crtc->base.id, state);
> +       DRM_DEBUG_ATOMIC("Adding all current connectors for [CRTC:%d] to %p\n",
> +                        crtc->base.id, state);
>
>         /*
>          * Changed connectors are already in @state, so only need to look at the
> @@ -901,8 +903,8 @@ drm_atomic_connectors_for_crtc(struct drm_atomic_state *state,
>                         num_connected_connectors++;
>         }
>
> -       DRM_DEBUG_KMS("State %p has %i connectors for [CRTC:%d]\n",
> -                     state, num_connected_connectors, crtc->base.id);
> +       DRM_DEBUG_ATOMIC("State %p has %i connectors for [CRTC:%d]\n",
> +                        state, num_connected_connectors, crtc->base.id);
>
>         return num_connected_connectors;
>  }
> @@ -953,7 +955,7 @@ int drm_atomic_check_only(struct drm_atomic_state *state)
>         int ncrtcs = config->num_crtc;
>         int i, ret = 0;
>
> -       DRM_DEBUG_KMS("checking %p\n", state);
> +       DRM_DEBUG_ATOMIC("checking %p\n", state);
>
>         for (i = 0; i < nplanes; i++) {
>                 struct drm_plane *plane = state->planes[i];
> @@ -963,8 +965,8 @@ int drm_atomic_check_only(struct drm_atomic_state *state)
>
>                 ret = drm_atomic_plane_check(plane, state->plane_states[i]);
>                 if (ret) {
> -                       DRM_DEBUG_KMS("[PLANE:%d] atomic core check failed\n",
> -                                     plane->base.id);
> +                       DRM_DEBUG_ATOMIC("[PLANE:%d] atomic core check failed\n",
> +                                        plane->base.id);
>                         return ret;
>                 }
>         }
> @@ -977,8 +979,8 @@ int drm_atomic_check_only(struct drm_atomic_state *state)
>
>                 ret = drm_atomic_crtc_check(crtc, state->crtc_states[i]);
>                 if (ret) {
> -                       DRM_DEBUG_KMS("[CRTC:%d] atomic core check failed\n",
> -                                     crtc->base.id);
> +                       DRM_DEBUG_ATOMIC("[CRTC:%d] atomic core check failed\n",
> +                                        crtc->base.id);
>                         return ret;
>                 }
>         }
> @@ -996,8 +998,8 @@ int drm_atomic_check_only(struct drm_atomic_state *state)
>
>                         if (crtc_state->mode_changed ||
>                             crtc_state->active_changed) {
> -                               DRM_DEBUG_KMS("[CRTC:%d] requires full modeset\n",
> -                                             crtc->base.id);
> +                               DRM_DEBUG_ATOMIC("[CRTC:%d] requires full modeset\n",
> +                                                crtc->base.id);
>                                 return -EINVAL;
>                         }
>                 }
> @@ -1032,7 +1034,7 @@ int drm_atomic_commit(struct drm_atomic_state *state)
>         if (ret)
>                 return ret;
>
> -       DRM_DEBUG_KMS("commiting %p\n", state);
> +       DRM_DEBUG_ATOMIC("commiting %p\n", state);
>
>         return config->funcs->atomic_commit(state->dev, state, false);
>  }
> @@ -1063,7 +1065,7 @@ int drm_atomic_async_commit(struct drm_atomic_state *state)
>         if (ret)
>                 return ret;
>
> -       DRM_DEBUG_KMS("commiting %p asynchronously\n", state);
> +       DRM_DEBUG_ATOMIC("commiting %p asynchronously\n", state);
>
>         return config->funcs->atomic_commit(state->dev, state, true);
>  }
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> index 7e3a52b97c7d..5ac38c89be94 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -116,9 +116,9 @@ steal_encoder(struct drm_atomic_state *state,
>          */
>         WARN_ON(!drm_modeset_is_locked(&config->connection_mutex));
>
> -       DRM_DEBUG_KMS("[ENCODER:%d:%s] in use on [CRTC:%d], stealing it\n",
> -                     encoder->base.id, encoder->name,
> -                     encoder_crtc->base.id);
> +       DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] in use on [CRTC:%d], stealing it\n",
> +                        encoder->base.id, encoder->name,
> +                        encoder_crtc->base.id);
>
>         crtc_state = drm_atomic_get_crtc_state(state, encoder_crtc);
>         if (IS_ERR(crtc_state))
> @@ -130,9 +130,9 @@ steal_encoder(struct drm_atomic_state *state,
>                 if (connector->state->best_encoder != encoder)
>                         continue;
>
> -               DRM_DEBUG_KMS("Stealing encoder from [CONNECTOR:%d:%s]\n",
> -                             connector->base.id,
> -                             connector->name);
> +               DRM_DEBUG_ATOMIC("Stealing encoder from [CONNECTOR:%d:%s]\n",
> +                                connector->base.id,
> +                                connector->name);
>
>                 connector_state = drm_atomic_get_connector_state(state,
>                                                                  connector);
> @@ -165,9 +165,9 @@ update_connector_routing(struct drm_atomic_state *state, int conn_idx)
>         if (!connector)
>                 return 0;
>
> -       DRM_DEBUG_KMS("Updating routing for [CONNECTOR:%d:%s]\n",
> -                       connector->base.id,
> -                       connector->name);
> +       DRM_DEBUG_ATOMIC("Updating routing for [CONNECTOR:%d:%s]\n",
> +                        connector->base.id,
> +                        connector->name);
>
>         if (connector->state->crtc != connector_state->crtc) {
>                 if (connector->state->crtc) {
> @@ -186,7 +186,7 @@ update_connector_routing(struct drm_atomic_state *state, int conn_idx)
>         }
>
>         if (!connector_state->crtc) {
> -               DRM_DEBUG_KMS("Disabling [CONNECTOR:%d:%s]\n",
> +               DRM_DEBUG_ATOMIC("Disabling [CONNECTOR:%d:%s]\n",
>                                 connector->base.id,
>                                 connector->name);
>
> @@ -199,19 +199,19 @@ update_connector_routing(struct drm_atomic_state *state, int conn_idx)
>         new_encoder = funcs->best_encoder(connector);
>
>         if (!new_encoder) {
> -               DRM_DEBUG_KMS("No suitable encoder found for [CONNECTOR:%d:%s]\n",
> -                             connector->base.id,
> -                             connector->name);
> +               DRM_DEBUG_ATOMIC("No suitable encoder found for [CONNECTOR:%d:%s]\n",
> +                                connector->base.id,
> +                                connector->name);
>                 return -EINVAL;
>         }
>
>         if (new_encoder == connector_state->best_encoder) {
> -               DRM_DEBUG_KMS("[CONNECTOR:%d:%s] keeps [ENCODER:%d:%s], now on [CRTC:%d]\n",
> -                             connector->base.id,
> -                             connector->name,
> -                             new_encoder->base.id,
> -                             new_encoder->name,
> -                             connector_state->crtc->base.id);
> +               DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] keeps [ENCODER:%d:%s], now on [CRTC:%d]\n",
> +                                connector->base.id,
> +                                connector->name,
> +                                new_encoder->base.id,
> +                                new_encoder->name,
> +                                connector_state->crtc->base.id);
>
>                 return 0;
>         }
> @@ -222,9 +222,9 @@ update_connector_routing(struct drm_atomic_state *state, int conn_idx)
>         if (encoder_crtc) {
>                 ret = steal_encoder(state, new_encoder, encoder_crtc);
>                 if (ret) {
> -                       DRM_DEBUG_KMS("Encoder stealing failed for [CONNECTOR:%d:%s]\n",
> -                                     connector->base.id,
> -                                     connector->name);
> +                       DRM_DEBUG_ATOMIC("Encoder stealing failed for [CONNECTOR:%d:%s]\n",
> +                                        connector->base.id,
> +                                        connector->name);
>                         return ret;
>                 }
>         }
> @@ -235,12 +235,12 @@ update_connector_routing(struct drm_atomic_state *state, int conn_idx)
>         crtc_state = state->crtc_states[idx];
>         crtc_state->mode_changed = true;
>
> -       DRM_DEBUG_KMS("[CONNECTOR:%d:%s] using [ENCODER:%d:%s] on [CRTC:%d]\n",
> -                     connector->base.id,
> -                     connector->name,
> -                     new_encoder->base.id,
> -                     new_encoder->name,
> -                     connector_state->crtc->base.id);
> +       DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] using [ENCODER:%d:%s] on [CRTC:%d]\n",
> +                        connector->base.id,
> +                        connector->name,
> +                        new_encoder->base.id,
> +                        new_encoder->name,
> +                        connector_state->crtc->base.id);
>
>         return 0;
>  }
> @@ -292,7 +292,7 @@ mode_fixup(struct drm_atomic_state *state)
>                                         encoder->bridge, &crtc_state->mode,
>                                         &crtc_state->adjusted_mode);
>                         if (!ret) {
> -                               DRM_DEBUG_KMS("Bridge fixup failed\n");
> +                               DRM_DEBUG_ATOMIC("Bridge fixup failed\n");
>                                 return -EINVAL;
>                         }
>                 }
> @@ -301,16 +301,16 @@ mode_fixup(struct drm_atomic_state *state)
>                         ret = funcs->atomic_check(encoder, crtc_state,
>                                                   conn_state);
>                         if (ret) {
> -                               DRM_DEBUG_KMS("[ENCODER:%d:%s] check failed\n",
> -                                             encoder->base.id, encoder->name);
> +                               DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] check failed\n",
> +                                                encoder->base.id, encoder->name);
>                                 return ret;
>                         }
>                 } else {
>                         ret = funcs->mode_fixup(encoder, &crtc_state->mode,
>                                                 &crtc_state->adjusted_mode);
>                         if (!ret) {
> -                               DRM_DEBUG_KMS("[ENCODER:%d:%s] fixup failed\n",
> -                                             encoder->base.id, encoder->name);
> +                               DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] fixup failed\n",
> +                                                encoder->base.id, encoder->name);
>                                 return -EINVAL;
>                         }
>                 }
> @@ -330,8 +330,8 @@ mode_fixup(struct drm_atomic_state *state)
>                 ret = funcs->mode_fixup(crtc, &crtc_state->mode,
>                                         &crtc_state->adjusted_mode);
>                 if (!ret) {
> -                       DRM_DEBUG_KMS("[CRTC:%d] fixup failed\n",
> -                                     crtc->base.id);
> +                       DRM_DEBUG_ATOMIC("[CRTC:%d] fixup failed\n",
> +                                        crtc->base.id);
>                         return -EINVAL;
>                 }
>         }
> @@ -384,14 +384,14 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
>                         continue;
>
>                 if (!drm_mode_equal(&crtc->state->mode, &crtc_state->mode)) {
> -                       DRM_DEBUG_KMS("[CRTC:%d] mode changed\n",
> -                                     crtc->base.id);
> +                       DRM_DEBUG_ATOMIC("[CRTC:%d] mode changed\n",
> +                                        crtc->base.id);
>                         crtc_state->mode_changed = true;
>                 }
>
>                 if (crtc->state->enable != crtc_state->enable) {
> -                       DRM_DEBUG_KMS("[CRTC:%d] enable changed\n",
> -                                     crtc->base.id);
> +                       DRM_DEBUG_ATOMIC("[CRTC:%d] enable changed\n",
> +                                        crtc->base.id);
>                         crtc_state->mode_changed = true;
>                 }
>         }
> @@ -428,17 +428,17 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
>                  * a full modeset because update_connector_routing force that.
>                  */
>                 if (crtc->state->active != crtc_state->active) {
> -                       DRM_DEBUG_KMS("[CRTC:%d] active changed\n",
> -                                     crtc->base.id);
> +                       DRM_DEBUG_ATOMIC("[CRTC:%d] active changed\n",
> +                                        crtc->base.id);
>                         crtc_state->active_changed = true;
>                 }
>
>                 if (!needs_modeset(crtc_state))
>                         continue;
>
> -               DRM_DEBUG_KMS("[CRTC:%d] needs all connectors, enable: %c, active: %c\n",
> -                             crtc->base.id,
> -                             crtc_state->enable ? 'y' : 'n',
> +               DRM_DEBUG_ATOMIC("[CRTC:%d] needs all connectors, enable: %c, active: %c\n",
> +                                crtc->base.id,
> +                                crtc_state->enable ? 'y' : 'n',
>                               crtc_state->active ? 'y' : 'n');
>
>                 ret = drm_atomic_add_affected_connectors(state, crtc);
> @@ -449,8 +449,8 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
>                                                                 crtc);
>
>                 if (crtc_state->enable != !!num_connectors) {
> -                       DRM_DEBUG_KMS("[CRTC:%d] enabled/connectors mismatch\n",
> -                                     crtc->base.id);
> +                       DRM_DEBUG_ATOMIC("[CRTC:%d] enabled/connectors mismatch\n",
> +                                        crtc->base.id);
>
>                         return -EINVAL;
>                 }
> @@ -497,8 +497,8 @@ drm_atomic_helper_check_planes(struct drm_device *dev,
>
>                 ret = funcs->atomic_check(plane, plane_state);
>                 if (ret) {
> -                       DRM_DEBUG_KMS("[PLANE:%d] atomic driver check failed\n",
> -                                     plane->base.id);
> +                       DRM_DEBUG_ATOMIC("[PLANE:%d] atomic driver check failed\n",
> +                                        plane->base.id);
>                         return ret;
>                 }
>         }
> @@ -517,8 +517,8 @@ drm_atomic_helper_check_planes(struct drm_device *dev,
>
>                 ret = funcs->atomic_check(crtc, state->crtc_states[i]);
>                 if (ret) {
> -                       DRM_DEBUG_KMS("[CRTC:%d] atomic driver check failed\n",
> -                                     crtc->base.id);
> +                       DRM_DEBUG_ATOMIC("[CRTC:%d] atomic driver check failed\n",
> +                                        crtc->base.id);
>                         return ret;
>                 }
>         }
> @@ -600,8 +600,8 @@ disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state)
>
>                 funcs = encoder->helper_private;
>
> -               DRM_DEBUG_KMS("disabling [ENCODER:%d:%s]\n",
> -                             encoder->base.id, encoder->name);
> +               DRM_DEBUG_ATOMIC("disabling [ENCODER:%d:%s]\n",
> +                                encoder->base.id, encoder->name);
>
>                 /*
>                  * Each encoder has at most one connector (since we always steal
> @@ -639,8 +639,8 @@ disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state)
>
>                 funcs = crtc->helper_private;
>
> -               DRM_DEBUG_KMS("disabling [CRTC:%d]\n",
> -                             crtc->base.id);
> +               DRM_DEBUG_ATOMIC("disabling [CRTC:%d]\n",
> +                                crtc->base.id);
>
>
>                 /* Right function depends upon target state. */
> @@ -724,8 +724,8 @@ crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state)
>                 funcs = crtc->helper_private;
>
>                 if (crtc->state->enable) {
> -                       DRM_DEBUG_KMS("modeset on [CRTC:%d]\n",
> -                                     crtc->base.id);
> +                       DRM_DEBUG_ATOMIC("modeset on [CRTC:%d]\n",
> +                                        crtc->base.id);
>
>                         funcs->mode_set_nofb(crtc);
>                 }
> @@ -752,8 +752,8 @@ crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state)
>                 if (!new_crtc_state->mode_changed)
>                         continue;
>
> -               DRM_DEBUG_KMS("modeset on [ENCODER:%d:%s]\n",
> -                             encoder->base.id, encoder->name);
> +               DRM_DEBUG_ATOMIC("modeset on [ENCODER:%d:%s]\n",
> +                                encoder->base.id, encoder->name);
>
>                 /*
>                  * Each encoder has at most one connector (since we always steal
> @@ -816,8 +816,8 @@ void drm_atomic_helper_commit_post_planes(struct drm_device *dev,
>                 funcs = crtc->helper_private;
>
>                 if (crtc->state->enable) {
> -                       DRM_DEBUG_KMS("enabling [CRTC:%d]\n",
> -                                     crtc->base.id);
> +                       DRM_DEBUG_ATOMIC("enabling [CRTC:%d]\n",
> +                                        crtc->base.id);
>
>                         if (funcs->enable)
>                                 funcs->enable(crtc);
> @@ -842,8 +842,8 @@ void drm_atomic_helper_commit_post_planes(struct drm_device *dev,
>                 encoder = connector->state->best_encoder;
>                 funcs = encoder->helper_private;
>
> -               DRM_DEBUG_KMS("enabling [ENCODER:%d:%s]\n",
> -                             encoder->base.id, encoder->name);
> +               DRM_DEBUG_ATOMIC("enabling [ENCODER:%d:%s]\n",
> +                                encoder->base.id, encoder->name);
>
>                 /*
>                  * Each encoder has at most one connector (since we always steal
> diff --git a/include/drm/drmP.h b/include/drm/drmP.h
> index e928625a9da0..52999ba9fbaf 100644
> --- a/include/drm/drmP.h
> +++ b/include/drm/drmP.h
> @@ -104,6 +104,9 @@ struct dma_buf_attachment;
>   * PRIME: used in the prime code.
>   *       This is the category used by the DRM_DEBUG_PRIME() macro.
>   *
> + * ATOMIC: used in the atomic code.
> + *       This is the category used by the DRM_DEBUG_ATOMIC() macro.
> + *
>   * Enabling verbose debug messages is done through the drm.debug parameter,
>   * each category being enabled by a bit.
>   *
> @@ -121,6 +124,7 @@ struct dma_buf_attachment;
>  #define DRM_UT_DRIVER          0x02
>  #define DRM_UT_KMS             0x04
>  #define DRM_UT_PRIME           0x08
> +#define DRM_UT_ATOMIC          0x10
>
>  extern __printf(2, 3)
>  void drm_ut_debug_printk(const char *function_name,
> @@ -207,6 +211,11 @@ void drm_err(const char *format, ...);
>                 if (unlikely(drm_debug & DRM_UT_PRIME))                 \
>                         drm_ut_debug_printk(__func__, fmt, ##args);     \
>         } while (0)
> +#define DRM_DEBUG_ATOMIC(fmt, args...)                                 \
> +       do {                                                            \
> +               if (unlikely(drm_debug & DRM_UT_ATOMIC))                \
> +                       drm_ut_debug_printk(__func__, fmt, ##args);     \
> +       } while (0)
>
>  /*@}*/
>
> --
> 2.1.4
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel


More information about the Intel-gfx mailing list