Replace the deprecated API with new helpers, according to the TODO list of the DRM subsystem. In this first patch drm_modeset_lock_all() is replaced with drm_modeset_lock_all_ctx(). Unlike drm_modeset_lock_all(), the latter doesn’t take the global drm_mode_config.mutex since that lock isn’t required for modeset state changes. Signed-off-by: Fabio M. De Francesco <fmdefrancesco@xxxxxxxxx> --- Changes from v2: The work is split in two consecutive logical steps. Changes from v1: Added further information to the commit message. drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index 671ec1002230..856903db34c5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -1438,8 +1438,15 @@ static int amdgpu_pmops_runtime_idle(struct device *dev) if (amdgpu_device_has_dc_support(adev)) { struct drm_crtc *crtc; - - drm_modeset_lock_all(drm_dev); + struct drm_modeset_acquire_ctx ctx; + int ret_lock = 0; + +retry: + drm_modeset_lock_all_ctx(drm_dev, &ctx); + if(ret_lock == -EDEADLK) { + drm_modeset_backoff(&ctx); + goto retry; + } drm_for_each_crtc(crtc, drm_dev) { if (crtc->state->active) { @@ -1448,7 +1455,7 @@ static int amdgpu_pmops_runtime_idle(struct device *dev) } } - drm_modeset_unlock_all(drm_dev); + drm_modeset_drop_locks(&ctx); } else { struct drm_connector *list_connector; -- 2.31.1 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel