aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1566-drm-amd-display-Drop-atomic_obj_lock-for-private-obj.patch
diff options
context:
space:
mode:
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.patch76
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
+