aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0902-drm-amd-dal-Avoid-mutex-aquire-while-holding-spinloc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0902-drm-amd-dal-Avoid-mutex-aquire-while-holding-spinloc.patch')
-rw-r--r--common/recipes-kernel/linux/files/0902-drm-amd-dal-Avoid-mutex-aquire-while-holding-spinloc.patch113
1 files changed, 0 insertions, 113 deletions
diff --git a/common/recipes-kernel/linux/files/0902-drm-amd-dal-Avoid-mutex-aquire-while-holding-spinloc.patch b/common/recipes-kernel/linux/files/0902-drm-amd-dal-Avoid-mutex-aquire-while-holding-spinloc.patch
deleted file mode 100644
index 1e86e463..00000000
--- a/common/recipes-kernel/linux/files/0902-drm-amd-dal-Avoid-mutex-aquire-while-holding-spinloc.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From b4ff2947a681ac22f0686a45d697f8e0c28eb5ff Mon Sep 17 00:00:00 2001
-From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
-Date: Fri, 11 Mar 2016 22:47:54 -0500
-Subject: [PATCH 0902/1110] drm/amd/dal: Avoid mutex aquire while holding
- spinlock.
-
-Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
-Acked-by: Harry Wentland <harry.wentland@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
----
- drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c | 43 +++++++++++++---------
- .../gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c | 16 +++-----
- 2 files changed, 32 insertions(+), 27 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c
-index 6cea7e2..1564485 100644
---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c
-+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c
-@@ -1073,31 +1073,40 @@ void amdgpu_dm_flip_cleanup(
- struct amdgpu_crtc *acrtc)
- {
- int r;
-- struct amdgpu_flip_work *works = acrtc->pflip_works;
-+ unsigned long flags;
-+ struct amdgpu_flip_work *works = NULL;
-
-- acrtc->pflip_works = NULL;
-- acrtc->pflip_status = AMDGPU_FLIP_NONE;
-+ spin_lock_irqsave(&adev->ddev->event_lock, flags);
-+ if (acrtc->pflip_status != AMDGPU_FLIP_NONE) {
-+ works = acrtc->pflip_works;
-+ acrtc->pflip_works = NULL;
-+ acrtc->pflip_status = AMDGPU_FLIP_NONE;
-
-- if (works) {
-- if(works->event)
-+ if (works && works->event) {
- drm_send_vblank_event(
- adev->ddev,
- acrtc->crtc_id,
- works->event);
-+ }
-+ spin_unlock_irqrestore(&adev->ddev->event_lock, flags);
-
-- r = amdgpu_bo_reserve(works->old_rbo, false);
-- if (likely(r == 0)) {
-- r = amdgpu_bo_unpin(works->old_rbo);
-- if (unlikely(r != 0)) {
-- DRM_ERROR("failed to unpin buffer after flip\n");
-- }
-- amdgpu_bo_unreserve(works->old_rbo);
-- } else
-- DRM_ERROR("failed to reserve buffer after flip\n");
-+ if (works) {
-+ r = amdgpu_bo_reserve(works->old_rbo, false);
-+ if (likely(r == 0)) {
-+ r = amdgpu_bo_unpin(works->old_rbo);
-+ if (unlikely(r != 0)) {
-+ DRM_ERROR("failed to unpin buffer after flip\n");
-+ }
-+ amdgpu_bo_unreserve(works->old_rbo);
-+ } else
-+ DRM_ERROR("failed to reserve buffer after flip\n");
-
-- amdgpu_bo_unref(&works->old_rbo);
-- kfree(works->shared);
-- kfree(works);
-+ amdgpu_bo_unref(&works->old_rbo);
-+ kfree(works->shared);
-+ kfree(works);
-+ }
-+ } else {
-+ spin_unlock_irqrestore(&adev->ddev->event_lock, flags);
- }
- }
-
-diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
-index 474439f..a085559 100644
---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
-+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
-@@ -2071,7 +2071,6 @@ static void manage_dm_interrupts(
- &adev->pageflip_irq,
- irq_type);
- } else {
-- unsigned long flags;
- amdgpu_irq_put(
- adev,
- &adev->pageflip_irq,
-@@ -2094,15 +2093,12 @@ static void manage_dm_interrupts(
- * lock and check to amdgpu_dm_flip_cleanup function
- */
-
-- spin_lock_irqsave(&adev->ddev->event_lock, flags);
-- if (acrtc->pflip_status != AMDGPU_FLIP_NONE) {
-- /*
-- * this is the case when on reset, last pending pflip
-- * interrupt did not not occur. Clean-up
-- */
-- amdgpu_dm_flip_cleanup(adev, acrtc);
-- }
-- spin_unlock_irqrestore(&adev->ddev->event_lock, flags);
-+
-+ /*
-+ * this is the case when on reset, last pending pflip
-+ * interrupt did not not occur. Clean-up
-+ */
-+ amdgpu_dm_flip_cleanup(adev, acrtc);
- }
- }
-
---
-2.7.4
-