drm/amd/display: Drop atomic_obj_lock for private obj
authorNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Tue, 5 Mar 2019 14:14:17 +0000 (09:14 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 19 Mar 2019 20:36:48 +0000 (15:36 -0500)
[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: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Leo Li <sunpeng.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h

index 0fbc27e282cf91d395d99790bd619c71f872833c..279cd6e52c900fe16010b46454519edbf998d5bf 100644 (file)
@@ -1568,15 +1568,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);
@@ -1683,8 +1678,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;
index fbd161ddc3f43f9bd56d07fbc2ea0a97e6849743..f741ea35c3ab1fa7dab144f9e3b51c0ddd473364 100644 (file)
@@ -132,8 +132,6 @@ struct amdgpu_display_manager {
         */
        struct drm_private_obj atomic_obj;
 
-       struct drm_modeset_lock atomic_obj_lock;
-
        /**
         * @dc_lock:
         *