On 2019-03-05 9:14 a.m., Nicholas Kazlauskas wrote:
> [Why]
> New DRM versions manage locking for private objects for us, so this
> is no longer needed.
> 
> This also prevents a WARN_ON from occurring when the private object is
> duplicated during the forced atomic commit that occurs from the HPD
> handler.
> 
> The HPD handler calls drm_modeset_lock_all before the forced commit
> and if the private object is duplicated then the
> DEBUG_LOCKS_WARN_ON(ww_ctx->done_acquire) warning will be triggered
> since we're trying to lock something when everything should have
> already been locked.
> 
> [How]
> Drop the lock and let DRM manage this.
> 
> Cc: Leo Li <[email protected]>
> Cc: Harry Wentland <[email protected]>

Reviewed-by: Leo Li <[email protected]>

Thanks,
Leo

> Signed-off-by: Nicholas Kazlauskas <[email protected]>
> ---
>   drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 7 -------
>   drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 2 --
>   2 files changed, 9 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 bdbc8006d9ea..e6d817b467e7 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -1569,15 +1569,10 @@ static int dm_atomic_get_state(struct 
> drm_atomic_state *state,
>       struct amdgpu_device *adev = dev->dev_private;
>       struct amdgpu_display_manager *dm = &adev->dm;
>       struct drm_private_state *priv_state;
> -     int ret;
>   
>       if (*dm_state)
>               return 0;
>   
> -     ret = drm_modeset_lock(&dm->atomic_obj_lock, state->acquire_ctx);
> -     if (ret)
> -             return ret;
> -
>       priv_state = drm_atomic_get_private_obj_state(state, &dm->atomic_obj);
>       if (IS_ERR(priv_state))
>               return PTR_ERR(priv_state);
> @@ -1684,8 +1679,6 @@ static int amdgpu_dm_mode_config_init(struct 
> amdgpu_device *adev)
>   
>       adev->ddev->mode_config.fb_base = adev->gmc.aper_base;
>   
> -     drm_modeset_lock_init(&adev->dm.atomic_obj_lock);
> -
>       state = kzalloc(sizeof(*state), GFP_KERNEL);
>       if (!state)
>               return -ENOMEM;
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h 
> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
> index 74e3a52f4f71..12e3b697ccef 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
> @@ -132,8 +132,6 @@ struct amdgpu_display_manager {
>        */
>       struct drm_private_obj atomic_obj;
>   
> -     struct drm_modeset_lock atomic_obj_lock;
> -
>       /**
>        * @dc_lock:
>        *
> 
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to