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 <sunpeng.li@xxxxxxx> > Cc: Harry Wentland <harry.wentland@xxxxxxx> Reviewed-by: Leo Li <sunpeng.li@xxxxxxx> Thanks, Leo > Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@xxxxxxx> > --- > 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 amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx