diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1566-drm-amd-display-Drop-atomic_obj_lock-for-private-obj.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/1566-drm-amd-display-Drop-atomic_obj_lock-for-private-obj.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1566-drm-amd-display-Drop-atomic_obj_lock-for-private-obj.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1566-drm-amd-display-Drop-atomic_obj_lock-for-private-obj.patch new file mode 100644 index 00000000..e96b1f6d --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1566-drm-amd-display-Drop-atomic_obj_lock-for-private-obj.patch @@ -0,0 +1,76 @@ +From a7dcba9d323c171d02d1dcfcee436ad7754db77e Mon Sep 17 00:00:00 2001 +From: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> +Date: Tue, 5 Mar 2019 09:14:17 -0500 +Subject: [PATCH 1566/2940] drm/amd/display: Drop atomic_obj_lock for private + obj + +[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> +--- + 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 dec79f1c5868..ccf759ae87e7 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -1572,15 +1572,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); +@@ -1687,8 +1682,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 4c3bd81323e1..624bb2e69e94 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +@@ -130,8 +130,6 @@ struct amdgpu_display_manager { + */ + struct drm_private_obj atomic_obj; + +- struct drm_modeset_lock atomic_obj_lock; +- + /** + * @dc_lock: + * +-- +2.17.1 + |