From: Christian König christian.koenig@amd.com
Make sure the UVD clocks are still active before sending the destroy message, otherwise the hw might hang.
Signed-off-by: Christian König christian.koenig@amd.com Cc: stable@vger.kernel.org --- drivers/gpu/drm/radeon/radeon_uvd.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c index 308eff5..a56dfe4 100644 --- a/drivers/gpu/drm/radeon/radeon_uvd.c +++ b/drivers/gpu/drm/radeon/radeon_uvd.c @@ -240,6 +240,8 @@ void radeon_uvd_free_handles(struct radeon_device *rdev, struct drm_file *filp) if (handle != 0 && rdev->uvd.filp[i] == filp) { struct radeon_fence *fence;
+ radeon_uvd_note_usage(rdev); + r = radeon_uvd_get_destroy_msg(rdev, R600_RING_TYPE_UVD_INDEX, handle, &fence); if (r) {
From: Christian König christian.koenig@amd.com
The parameter is in bytes not dwords.
Signed-off-by: Christian König christian.koenig@amd.com Cc: stable@vger.kernel.org --- drivers/gpu/drm/radeon/radeon_uvd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c index a56dfe4..ab0a172 100644 --- a/drivers/gpu/drm/radeon/radeon_uvd.c +++ b/drivers/gpu/drm/radeon/radeon_uvd.c @@ -622,7 +622,7 @@ static int radeon_uvd_send_msg(struct radeon_device *rdev, if (r) goto err;
- r = radeon_ib_get(rdev, ring, &ib, NULL, 16); + r = radeon_ib_get(rdev, ring, &ib, NULL, 64); if (r) goto err;
On Wed, Oct 30, 2013 at 7:56 AM, Christian König deathsimple@vodafone.de wrote:
From: Christian König christian.koenig@amd.com
Make sure the UVD clocks are still active before sending the destroy message, otherwise the hw might hang.
Signed-off-by: Christian König christian.koenig@amd.com Cc: stable@vger.kernel.org
Both applied!
Alex
drivers/gpu/drm/radeon/radeon_uvd.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c index 308eff5..a56dfe4 100644 --- a/drivers/gpu/drm/radeon/radeon_uvd.c +++ b/drivers/gpu/drm/radeon/radeon_uvd.c @@ -240,6 +240,8 @@ void radeon_uvd_free_handles(struct radeon_device *rdev, struct drm_file *filp) if (handle != 0 && rdev->uvd.filp[i] == filp) { struct radeon_fence *fence;
radeon_uvd_note_usage(rdev);
r = radeon_uvd_get_destroy_msg(rdev, R600_RING_TYPE_UVD_INDEX, handle, &fence); if (r) {
-- 1.8.1.2
Am 30.10.2013 15:29, schrieb Alex Deucher:
On Wed, Oct 30, 2013 at 7:56 AM, Christian König deathsimple@vodafone.de wrote:
From: Christian König christian.koenig@amd.com
Make sure the UVD clocks are still active before sending the destroy message, otherwise the hw might hang.
Signed-off-by: Christian König christian.koenig@amd.com Cc: stable@vger.kernel.org
Both applied!
On which branch? Those two where intended for drm-fixes-3.12, but they didn't showed up in 3.12.0.
Could you apply them to drm-fixes-3.12 as well? They prevent hw lockups in case of crashed userspace applications and should also go into older stable kernels.
Christian.
Alex
drivers/gpu/drm/radeon/radeon_uvd.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c index 308eff5..a56dfe4 100644 --- a/drivers/gpu/drm/radeon/radeon_uvd.c +++ b/drivers/gpu/drm/radeon/radeon_uvd.c @@ -240,6 +240,8 @@ void radeon_uvd_free_handles(struct radeon_device *rdev, struct drm_file *filp) if (handle != 0 && rdev->uvd.filp[i] == filp) { struct radeon_fence *fence;
radeon_uvd_note_usage(rdev);
r = radeon_uvd_get_destroy_msg(rdev, R600_RING_TYPE_UVD_INDEX, handle, &fence); if (r) {
-- 1.8.1.2
On Mon, Nov 11, 2013 at 3:54 AM, Christian König deathsimple@vodafone.de wrote:
Am 30.10.2013 15:29, schrieb Alex Deucher:
On Wed, Oct 30, 2013 at 7:56 AM, Christian König deathsimple@vodafone.de wrote:
From: Christian König christian.koenig@amd.com
Make sure the UVD clocks are still active before sending the destroy message, otherwise the hw might hang.
Signed-off-by: Christian König christian.koenig@amd.com Cc: stable@vger.kernel.org
Both applied!
On which branch? Those two where intended for drm-fixes-3.12, but they didn't showed up in 3.12.0.
Could you apply them to drm-fixes-3.12 as well? They prevent hw lockups in case of crashed userspace applications and should also go into older stable kernels.
It was too late for 3.12. They'll be in 3.13 and I cc'ed stable: http://cgit.freedesktop.org/~airlied/linux/commit/?h=drm-next&id=c154a76... http://cgit.freedesktop.org/~airlied/linux/commit/?h=drm-next&id=727ddc8...
I can push to my fdo drm-fixes-3.12 branch too if you want.
Alex
Christian.
Alex
drivers/gpu/drm/radeon/radeon_uvd.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c index 308eff5..a56dfe4 100644 --- a/drivers/gpu/drm/radeon/radeon_uvd.c +++ b/drivers/gpu/drm/radeon/radeon_uvd.c @@ -240,6 +240,8 @@ void radeon_uvd_free_handles(struct radeon_device *rdev, struct drm_file *filp) if (handle != 0 && rdev->uvd.filp[i] == filp) { struct radeon_fence *fence;
radeon_uvd_note_usage(rdev);
r = radeon_uvd_get_destroy_msg(rdev, R600_RING_TYPE_UVD_INDEX, handle,
&fence); if (r) { -- 1.8.1.2
dri-devel@lists.freedesktop.org