Patch "drm/amdgpu: Store CRTC relative amdgpu_crtc->cursor_x/y values" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
drm/amdgpu: Store CRTC relative amdgpu_crtc->cursor_x/y values
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
drm-amdgpu-store-crtc-relative-amdgpu_crtc-cursor_x-y-values.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
8e57ec613df7d6bfa8ffe7512290c5415ebb8657Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <[email protected]>
Date: Thu, 27 Oct 2016 17:11:43 +0900
Subject: drm/amdgpu: Store CRTC relative amdgpu_crtc->cursor_x/y values
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From: Michel Dänzer <[email protected]>
commit 8e57ec613df7d6bfa8ffe7512290c5415ebb8657 upstream.
We were storing viewport relative coordinates. However, crtc_cursor_set2 and cursor_reset pass amdgpu_crtc->cursor_x/y as the x/y parameters of cursor_move_locked, which would break if the CRTC isn't located at (0, 0).
--- drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 6 +++--- drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 6 +++--- drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 5 +++-- drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 6 +++--- 4 files changed, 12 insertions(+), 11 deletions(-)
drivers/gpu/drm/amd/amdgpu/dce_v10_0.c +3 -3
@@ -2577,6 +2577,9 @@ static int dce_v10_0_cursor_move_locked(struct amdgpu_device *adev = crtc->dev->dev_private;int xorigin =0 , yorigin =0 ; + amdgpu_crtc->cursor_x = x; + amdgpu_crtc->cursor_y = y; +/* avivo cursor are offset into the total surface */ x += crtc->x; y += crtc->y;
@@ -2596,9 +2599,6 @@ static int dce_v10_0_cursor_move_locked(WREG32 (mmCUR_SIZE + amdgpu_crtc->crtc_offset, ((amdgpu_crtc->cursor_width -1 ) <<16 ) | (amdgpu_crtc->cursor_height -1 )); - amdgpu_crtc->cursor_x = x; - amdgpu_crtc->cursor_y = y; -return 0 ; }
drivers/gpu/drm/amd/amdgpu/dce_v11_0.c +3 -3
@@ -2593,6 +2593,9 @@ static int dce_v11_0_cursor_move_locked(struct amdgpu_device *adev = crtc->dev->dev_private;int xorigin =0 , yorigin =0 ; + amdgpu_crtc->cursor_x = x; + amdgpu_crtc->cursor_y = y; +/* avivo cursor are offset into the total surface */ x += crtc->x; y += crtc->y;
@@ -2612,9 +2615,6 @@ static int dce_v11_0_cursor_move_locked(WREG32 (mmCUR_SIZE + amdgpu_crtc->crtc_offset, ((amdgpu_crtc->cursor_width -1 ) <<16 ) | (amdgpu_crtc->cursor_height -1 )); - amdgpu_crtc->cursor_x = x; - amdgpu_crtc->cursor_y = y; -return 0 ; }
drivers/gpu/drm/amd/amdgpu/dce_v6_0.c +3 -2
@@ -1933,6 +1933,9 @@ static int dce_v6_0_cursor_move_locked(sint w = amdgpu_crtc->cursor_width; + amdgpu_crtc->cursor_x = x; + amdgpu_crtc->cursor_y = y; +/* avivo cursor are offset into the total surface */ x += crtc->x; y += crtc->y;
@@ -1952,8 +1955,6 @@ static int dce_v6_0_cursor_move_locked(sWREG32 (EVERGREEN_CUR_SIZE + amdgpu_crtc->crtc_offset, ((w -1 ) <<16 ) | (amdgpu_crtc->cursor_height -1 )); - amdgpu_crtc->cursor_x = x; - amdgpu_crtc->cursor_y = y;return 0 ; }
drivers/gpu/drm/amd/amdgpu/dce_v8_0.c +3 -3
@@ -2465,6 +2465,9 @@ static int dce_v8_0_cursor_move_locked(sstruct amdgpu_device *adev = crtc->dev->dev_private;int xorigin =0 , yorigin =0 ; + amdgpu_crtc->cursor_x = x; + amdgpu_crtc->cursor_y = y; +/* avivo cursor are offset into the total surface */ x += crtc->x; y += crtc->y;
@@ -2484,9 +2487,6 @@ static int dce_v8_0_cursor_move_locked(sWREG32 (mmCUR_SIZE + amdgpu_crtc->crtc_offset, ((amdgpu_crtc->cursor_width -1 ) <<16 ) | (amdgpu_crtc->cursor_height -1 )); - amdgpu_crtc->cursor_x = x; - amdgpu_crtc->cursor_y = y; -return 0 ; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/drm-amdgpu-store-crtc-relative-amdgpu_crtc-cursor_x-y-values.patch queue-4.9/drm-amdgpu-also-call-cursor_move_locked-when-the-cursor-size-changes.patch queue-4.9/drm-radeon-also-call-cursor_move_locked-when-the-cursor-size-changes.patch queue-4.9/drm-radeon-hide-the-hw-cursor-while-it-s-out-of-bounds.patch