Re: [PATCH 1/3] drm/atomic: Improve debug messages
On 2018-06-11 03:34 PM, Ville Syrjala wrote: > From: Ville Syrjälä > > Print the id/name of the object we're dealing with. Makes it easier to > figure out what's going on. Also toss in a few extra debug prints that > might be useful. > > Signed-off-by: Ville Syrjälä Reviewed-by: Harry Wentland Harry > --- > drivers/gpu/drm/drm_atomic.c | 88 > ++-- > 1 file changed, 61 insertions(+), 27 deletions(-) > > diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c > index ee4b43b9404e..d7de83a6c1c2 100644 > --- a/drivers/gpu/drm/drm_atomic.c > +++ b/drivers/gpu/drm/drm_atomic.c > @@ -339,6 +339,7 @@ static s32 __user *get_out_fence_for_crtc(struct > drm_atomic_state *state, > int drm_atomic_set_mode_for_crtc(struct drm_crtc_state *state, >const struct drm_display_mode *mode) > { > + struct drm_crtc *crtc = state->crtc; > struct drm_mode_modeinfo umode; > > /* Early return for no change. */ > @@ -359,13 +360,13 @@ int drm_atomic_set_mode_for_crtc(struct drm_crtc_state > *state, > > drm_mode_copy(>mode, mode); > state->enable = true; > - DRM_DEBUG_ATOMIC("Set [MODE:%s] for CRTC state %p\n", > - mode->name, state); > + DRM_DEBUG_ATOMIC("Set [MODE:%s] for [CRTC:%d:%s] state %p\n", > + mode->name, crtc->base.id, crtc->name, state); > } else { > memset(>mode, 0, sizeof(state->mode)); > state->enable = false; > - DRM_DEBUG_ATOMIC("Set [NOMODE] for CRTC state %p\n", > - state); > + DRM_DEBUG_ATOMIC("Set [NOMODE] for [CRTC:%d:%s] state %p\n", > + crtc->base.id, crtc->name, state); > } > > return 0; > @@ -388,6 +389,8 @@ EXPORT_SYMBOL(drm_atomic_set_mode_for_crtc); > int drm_atomic_set_mode_prop_for_crtc(struct drm_crtc_state *state, >struct drm_property_blob *blob) > { > + struct drm_crtc *crtc = state->crtc; > + > if (blob == state->mode_blob) > return 0; > > @@ -404,12 +407,13 @@ int drm_atomic_set_mode_prop_for_crtc(struct > drm_crtc_state *state, > > state->mode_blob = drm_property_blob_get(blob); > state->enable = true; > - DRM_DEBUG_ATOMIC("Set [MODE:%s] for CRTC state %p\n", > - state->mode.name, state); > + DRM_DEBUG_ATOMIC("Set [MODE:%s] for [CRTC:%d:%s] state %p\n", > + state->mode.name, crtc->base.id, crtc->name, > + state); > } else { > state->enable = false; > - DRM_DEBUG_ATOMIC("Set [NOMODE] for CRTC state %p\n", > - state); > + DRM_DEBUG_ATOMIC("Set [NOMODE] for [CRTC:%d:%s] state %p\n", > + crtc->base.id, crtc->name, state); > } > > return 0; > @@ -539,10 +543,14 @@ int drm_atomic_crtc_set_property(struct drm_crtc *crtc, > return -EFAULT; > > set_out_fence_for_crtc(state->state, crtc, fence_ptr); > - } else if (crtc->funcs->atomic_set_property) > + } else if (crtc->funcs->atomic_set_property) { > return crtc->funcs->atomic_set_property(crtc, state, property, > val); > - else > + } else { > + DRM_DEBUG_ATOMIC("[CRTC:%d:%s] unknown property > [PROP:%d:%s]]\n", > + crtc->base.id, crtc->name, > + property->base.id, property->name); > return -EINVAL; > + } > > return 0; > } > @@ -799,8 +807,11 @@ static int drm_atomic_plane_set_property(struct > drm_plane *plane, > } else if (property == plane->alpha_property) { > state->alpha = val; > } else if (property == plane->rotation_property) { > - if (!is_power_of_2(val & DRM_MODE_ROTATE_MASK)) > + if (!is_power_of_2(val & DRM_MODE_ROTATE_MASK)) { > + DRM_DEBUG_ATOMIC("[PLANE:%d:%s] bad rotation bitmask: > 0x%llx\n", > + plane->base.id, plane->name, val); > return -EINVAL; > + } > state->rotation = val; > } else if (property == plane->zpos_property) { > state->zpos = val; > @@ -812,6 +823,9 @@ static int drm_atomic_plane_set_property(struct drm_plane > *plane, > return plane->funcs->atomic_set_property(plane, state, > property, val); > } else { > + DRM_DEBUG_ATOMIC("[PLANE:%d:%s] unknown property > [PROP:%d:%s]]\n", > + plane->base.id, plane->name, > + property->base.id, property->name); > return -EINVAL; > } >
[PATCH 1/3] drm/atomic: Improve debug messages
From: Ville Syrjälä Print the id/name of the object we're dealing with. Makes it easier to figure out what's going on. Also toss in a few extra debug prints that might be useful. Signed-off-by: Ville Syrjälä --- drivers/gpu/drm/drm_atomic.c | 88 ++-- 1 file changed, 61 insertions(+), 27 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c index ee4b43b9404e..d7de83a6c1c2 100644 --- a/drivers/gpu/drm/drm_atomic.c +++ b/drivers/gpu/drm/drm_atomic.c @@ -339,6 +339,7 @@ static s32 __user *get_out_fence_for_crtc(struct drm_atomic_state *state, int drm_atomic_set_mode_for_crtc(struct drm_crtc_state *state, const struct drm_display_mode *mode) { + struct drm_crtc *crtc = state->crtc; struct drm_mode_modeinfo umode; /* Early return for no change. */ @@ -359,13 +360,13 @@ int drm_atomic_set_mode_for_crtc(struct drm_crtc_state *state, drm_mode_copy(>mode, mode); state->enable = true; - DRM_DEBUG_ATOMIC("Set [MODE:%s] for CRTC state %p\n", -mode->name, state); + DRM_DEBUG_ATOMIC("Set [MODE:%s] for [CRTC:%d:%s] state %p\n", +mode->name, crtc->base.id, crtc->name, state); } else { memset(>mode, 0, sizeof(state->mode)); state->enable = false; - DRM_DEBUG_ATOMIC("Set [NOMODE] for CRTC state %p\n", -state); + DRM_DEBUG_ATOMIC("Set [NOMODE] for [CRTC:%d:%s] state %p\n", +crtc->base.id, crtc->name, state); } return 0; @@ -388,6 +389,8 @@ EXPORT_SYMBOL(drm_atomic_set_mode_for_crtc); int drm_atomic_set_mode_prop_for_crtc(struct drm_crtc_state *state, struct drm_property_blob *blob) { + struct drm_crtc *crtc = state->crtc; + if (blob == state->mode_blob) return 0; @@ -404,12 +407,13 @@ int drm_atomic_set_mode_prop_for_crtc(struct drm_crtc_state *state, state->mode_blob = drm_property_blob_get(blob); state->enable = true; - DRM_DEBUG_ATOMIC("Set [MODE:%s] for CRTC state %p\n", -state->mode.name, state); + DRM_DEBUG_ATOMIC("Set [MODE:%s] for [CRTC:%d:%s] state %p\n", +state->mode.name, crtc->base.id, crtc->name, +state); } else { state->enable = false; - DRM_DEBUG_ATOMIC("Set [NOMODE] for CRTC state %p\n", -state); + DRM_DEBUG_ATOMIC("Set [NOMODE] for [CRTC:%d:%s] state %p\n", +crtc->base.id, crtc->name, state); } return 0; @@ -539,10 +543,14 @@ int drm_atomic_crtc_set_property(struct drm_crtc *crtc, return -EFAULT; set_out_fence_for_crtc(state->state, crtc, fence_ptr); - } else if (crtc->funcs->atomic_set_property) + } else if (crtc->funcs->atomic_set_property) { return crtc->funcs->atomic_set_property(crtc, state, property, val); - else + } else { + DRM_DEBUG_ATOMIC("[CRTC:%d:%s] unknown property [PROP:%d:%s]]\n", +crtc->base.id, crtc->name, +property->base.id, property->name); return -EINVAL; + } return 0; } @@ -799,8 +807,11 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane, } else if (property == plane->alpha_property) { state->alpha = val; } else if (property == plane->rotation_property) { - if (!is_power_of_2(val & DRM_MODE_ROTATE_MASK)) + if (!is_power_of_2(val & DRM_MODE_ROTATE_MASK)) { + DRM_DEBUG_ATOMIC("[PLANE:%d:%s] bad rotation bitmask: 0x%llx\n", +plane->base.id, plane->name, val); return -EINVAL; + } state->rotation = val; } else if (property == plane->zpos_property) { state->zpos = val; @@ -812,6 +823,9 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane, return plane->funcs->atomic_set_property(plane, state, property, val); } else { + DRM_DEBUG_ATOMIC("[PLANE:%d:%s] unknown property [PROP:%d:%s]]\n", +plane->base.id, plane->name, +property->base.id, property->name); return -EINVAL; } @@ -919,10 +933,12 @@ static int drm_atomic_plane_check(struct drm_plane *plane, /* either *both* CRTC and FB must be set, or neither */ if (state->crtc &&