summaryrefslogtreecommitdiffstats
path: root/drm-amdgpu-Disable-RPM-helpers-while-reprobing.patch
diff options
context:
space:
mode:
authorLaura Abbott <labbott@fedoraproject.org>2016-08-10 17:55:23 -0700
committerLaura Abbott <labbott@fedoraproject.org>2016-08-10 17:56:05 -0700
commit46396fbe5385265ff5cabdfd1c62750e1b61195b (patch)
tree29b9f2de8e65a84f93270e6b389387d3a4e64e9b /drm-amdgpu-Disable-RPM-helpers-while-reprobing.patch
parent14ee8bf7eb054ae4fcac68981a046dc5e37e91cb (diff)
downloadkernel-46396fbe5385265ff5cabdfd1c62750e1b61195b.tar.gz
kernel-46396fbe5385265ff5cabdfd1c62750e1b61195b.tar.xz
kernel-46396fbe5385265ff5cabdfd1c62750e1b61195b.zip
Cleanup patches/PatchList.txt
Now that we have a script to check the state of the tree, make it useful again.
Diffstat (limited to 'drm-amdgpu-Disable-RPM-helpers-while-reprobing.patch')
-rw-r--r--drm-amdgpu-Disable-RPM-helpers-while-reprobing.patch70
1 files changed, 0 insertions, 70 deletions
diff --git a/drm-amdgpu-Disable-RPM-helpers-while-reprobing.patch b/drm-amdgpu-Disable-RPM-helpers-while-reprobing.patch
deleted file mode 100644
index 562d20eb5..000000000
--- a/drm-amdgpu-Disable-RPM-helpers-while-reprobing.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From patchwork Fri Jul 8 15:37:35 2016
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: drm/amdgpu: Disable RPM helpers while reprobing connectors on resume
-From: cpaul@redhat.com
-X-Patchwork-Id: 97837
-Message-Id: <1467992256-23832-1-git-send-email-cpaul@redhat.com>
-To: amd-gfx@lists.freedesktop.org
-Cc: Tom St Denis <tom.stdenis@amd.com>, Jammy Zhou <Jammy.Zhou@amd.com>,
- open list <linux-kernel@vger.kernel.org>, stable@vger.kernel.org,
- "open list:RADEON and AMDGPU DRM DRIVERS"
- <dri-devel@lists.freedesktop.org>,
- Alex Deucher <alexander.deucher@amd.com>, Lyude <cpaul@redhat.com>,
- Flora Cui <Flora.Cui@amd.com>,
- =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
- Monk Liu <Monk.Liu@amd.com>
-Date: Fri, 8 Jul 2016 11:37:35 -0400
-
-Just about all of amdgpu's connector probing functions try to acquire
-runtime PM refs. If we try to do this in the context of
-amdgpu_resume_kms by calling drm_helper_hpd_irq_event(), we end up
-deadlocking the system.
-
-Since we're guaranteed to be holding the spinlock for RPM in
-amdgpu_resume_kms, and we already know the GPU is in working order, we
-need to prevent the RPM helpers from trying to run during the initial
-connector reprobe on resume.
-
-There's a couple of solutions I've explored for fixing this, but this
-one by far seems to be the simplest and most reliable (plus I'm pretty
-sure that's what disable_depth is there for anyway).
-
-Reproduction recipe:
- - Get any laptop dual GPUs using PRIME
- - Make sure runtime PM is enabled for amdgpu
- - Boot the machine
- - If the machine managed to boot without hanging, switch out of X to
- another VT. This should definitely cause X to hang infinitely.
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Lyude <cpaul@redhat.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-index 6e92008..46c1fee 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-@@ -1841,7 +1841,19 @@ int amdgpu_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
- }
-
- drm_kms_helper_poll_enable(dev);
-+
-+ /*
-+ * Most of the connector probing functions try to acquire runtime pm
-+ * refs to ensure that the GPU is powered on when connector polling is
-+ * performed. Since we're calling this from a runtime PM callback,
-+ * trying to acquire rpm refs will cause us to deadlock.
-+ *
-+ * Since we're guaranteed to be holding the rpm lock, it's safe to
-+ * temporarily disable the rpm helpers so this doesn't deadlock us.
-+ */
-+ dev->dev->power.disable_depth++;
- drm_helper_hpd_irq_event(dev);
-+ dev->dev->power.disable_depth--;
-
- if (fbcon) {
- amdgpu_fbdev_set_suspend(adev, 0);