aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0604-drm-amdgpu-unpin-cursor-BOs-on-suspend-and-pin-them-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0604-drm-amdgpu-unpin-cursor-BOs-on-suspend-and-pin-them-.patch')
-rw-r--r--common/recipes-kernel/linux/files/0604-drm-amdgpu-unpin-cursor-BOs-on-suspend-and-pin-them-.patch85
1 files changed, 0 insertions, 85 deletions
diff --git a/common/recipes-kernel/linux/files/0604-drm-amdgpu-unpin-cursor-BOs-on-suspend-and-pin-them-.patch b/common/recipes-kernel/linux/files/0604-drm-amdgpu-unpin-cursor-BOs-on-suspend-and-pin-them-.patch
deleted file mode 100644
index 13070b7d..00000000
--- a/common/recipes-kernel/linux/files/0604-drm-amdgpu-unpin-cursor-BOs-on-suspend-and-pin-them-.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 756e6880c51376d2e4d53050582d66d88fc281c7 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher@amd.com>
-Date: Thu, 8 Oct 2015 00:03:36 -0400
-Subject: [PATCH 0604/1565] drm/amdgpu: unpin cursor BOs on suspend and pin
- them again on resume
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Everything is evicted from VRAM before suspend, so we need to make
-sure all BOs are unpinned and re-pinned after resume. Fixes broken
-mouse cursor after resume introduced by commit b9729b17.
-
-Port of radeon commit:
-f3cbb17bcf676a2fc6aedebe9fbebd59e550c51a
-
-Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 31 +++++++++++++++++++++++++++++-
- 1 file changed, 30 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-index 4256b00..901a460 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-@@ -1657,11 +1657,21 @@ int amdgpu_suspend_kms(struct drm_device *dev, bool suspend, bool fbcon)
- }
- drm_modeset_unlock_all(dev);
-
-- /* unpin the front buffers */
-+ /* unpin the front buffers and cursors */
- list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
-+ struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
- struct amdgpu_framebuffer *rfb = to_amdgpu_framebuffer(crtc->primary->fb);
- struct amdgpu_bo *robj;
-
-+ if (amdgpu_crtc->cursor_bo) {
-+ struct amdgpu_bo *aobj = gem_to_amdgpu_bo(amdgpu_crtc->cursor_bo);
-+ r = amdgpu_bo_reserve(aobj, false);
-+ if (r == 0) {
-+ amdgpu_bo_unpin(aobj);
-+ amdgpu_bo_unreserve(aobj);
-+ }
-+ }
-+
- if (rfb == NULL || rfb->obj == NULL) {
- continue;
- }
-@@ -1713,6 +1723,7 @@ int amdgpu_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
- {
- struct drm_connector *connector;
- struct amdgpu_device *adev = dev->dev_private;
-+ struct drm_crtc *crtc;
- int r;
-
- if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
-@@ -1746,6 +1757,24 @@ int amdgpu_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
- if (r)
- return r;
-
-+ /* pin cursors */
-+ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
-+ struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-+
-+ if (amdgpu_crtc->cursor_bo) {
-+ struct amdgpu_bo *aobj = gem_to_amdgpu_bo(amdgpu_crtc->cursor_bo);
-+ r = amdgpu_bo_reserve(aobj, false);
-+ if (r == 0) {
-+ r = amdgpu_bo_pin(aobj,
-+ AMDGPU_GEM_DOMAIN_VRAM,
-+ &amdgpu_crtc->cursor_addr);
-+ if (r != 0)
-+ DRM_ERROR("Failed to pin cursor BO (%d)\n", r);
-+ amdgpu_bo_unreserve(aobj);
-+ }
-+ }
-+ }
-+
- /* blat the mode back in */
- if (fbcon) {
- drm_helper_resume_force_mode(dev);
---
-1.9.1
-