On 2021-11-09 00:14, Shirish S wrote: > update developers with next level of info about unsupported > display configuration query that led to atomic check failure. > > Signed-off-by: Shirish S <shirish.s@xxxxxxx> Reviewed-by: Harry Wentland <harry.wentland@xxxxxxx> Harry > --- > .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 69 ++++++++++++++----- > 1 file changed, 51 insertions(+), 18 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > index b1d9e89e5ae9..b7044c04a7c5 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -10755,8 +10755,10 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, > trace_amdgpu_dm_atomic_check_begin(state); > > ret = drm_atomic_helper_check_modeset(dev, state); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("drm_atomic_helper_check_modeset() failed\n"); > goto fail; > + } > > /* Check connector changes */ > for_each_oldnew_connector_in_state(state, connector, old_con_state, new_con_state, i) { > @@ -10772,6 +10774,7 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, > > new_crtc_state = drm_atomic_get_crtc_state(state, new_con_state->crtc); > if (IS_ERR(new_crtc_state)) { > + DRM_DEBUG_DRIVER("drm_atomic_get_crtc_state() failed\n"); > ret = PTR_ERR(new_crtc_state); > goto fail; > } > @@ -10786,8 +10789,10 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, > for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { > if (drm_atomic_crtc_needs_modeset(new_crtc_state)) { > ret = add_affected_mst_dsc_crtcs(state, crtc); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("add_affected_mst_dsc_crtcs() failed\n"); > goto fail; > + } > } > } > } > @@ -10802,19 +10807,25 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, > continue; > > ret = amdgpu_dm_verify_lut_sizes(new_crtc_state); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("amdgpu_dm_verify_lut_sizes() failed\n"); > goto fail; > + } > > if (!new_crtc_state->enable) > continue; > > ret = drm_atomic_add_affected_connectors(state, crtc); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("drm_atomic_add_affected_connectors() failed\n"); > goto fail; > + } > > ret = drm_atomic_add_affected_planes(state, crtc); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("drm_atomic_add_affected_planes() failed\n"); > goto fail; > + } > > if (dm_old_crtc_state->dsc_force_changed) > new_crtc_state->mode_changed = true; > @@ -10851,6 +10862,7 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, > > if (IS_ERR(new_plane_state)) { > ret = PTR_ERR(new_plane_state); > + DRM_DEBUG_DRIVER("new_plane_state is BAD\n"); > goto fail; > } > } > @@ -10863,8 +10875,10 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, > new_plane_state, > false, > &lock_and_validation_needed); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("dm_update_plane_state() failed\n"); > goto fail; > + } > } > > /* Disable all crtcs which require disable */ > @@ -10874,8 +10888,10 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, > new_crtc_state, > false, > &lock_and_validation_needed); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("DISABLE: dm_update_crtc_state() failed\n"); > goto fail; > + } > } > > /* Enable all crtcs which require enable */ > @@ -10885,8 +10901,10 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, > new_crtc_state, > true, > &lock_and_validation_needed); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("ENABLE: dm_update_crtc_state() failed\n"); > goto fail; > + } > } > > /* Add new/modified planes */ > @@ -10896,20 +10914,26 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, > new_plane_state, > true, > &lock_and_validation_needed); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("dm_update_plane_state() failed\n"); > goto fail; > + } > } > > /* Run this here since we want to validate the streams we created */ > ret = drm_atomic_helper_check_planes(dev, state); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("drm_atomic_helper_check_planes() failed\n"); > goto fail; > + } > > /* Check cursor planes scaling */ > for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { > ret = dm_check_crtc_cursor(state, crtc, new_crtc_state); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("dm_check_crtc_cursor() failed\n"); > goto fail; > + } > } > > if (state->legacy_cursor_update) { > @@ -10996,20 +11020,28 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, > */ > if (lock_and_validation_needed) { > ret = dm_atomic_get_state(state, &dm_state); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("dm_atomic_get_state() failed\n"); > goto fail; > + } > > ret = do_aquire_global_lock(dev, state); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("do_aquire_global_lock() failed\n"); > goto fail; > + } > > #if defined(CONFIG_DRM_AMD_DC_DCN) > - if (!compute_mst_dsc_configs_for_state(state, dm_state->context, vars)) > + if (!compute_mst_dsc_configs_for_state(state, dm_state->context, vars)) { > + DRM_DEBUG_DRIVER("compute_mst_dsc_configs_for_state() failed\n"); > goto fail; > + } > > ret = dm_update_mst_vcpi_slots_for_dsc(state, dm_state->context, vars); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("dm_update_mst_vcpi_slots_for_dsc() failed\n"); > goto fail; > + } > #endif > > /* > @@ -11019,12 +11051,13 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, > * to get stuck in an infinite loop and hang eventually. > */ > ret = drm_dp_mst_atomic_check(state); > - if (ret) > + if (ret) { > + DRM_DEBUG_DRIVER("drm_dp_mst_atomic_check() failed\n"); > goto fail; > + } > status = dc_validate_global_state(dc, dm_state->context, false); > if (status != DC_OK) { > - drm_dbg_atomic(dev, > - "DC global validation failure: %s (%d)", > + DRM_DEBUG_DRIVER("DC global validation failure: %s (%d)", > dc_status_to_str(status), status); > ret = -EINVAL; > goto fail; >