diff options
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-.patch | 85 |
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 - |