diff mbox

[1/2] drm/radeon: activate UVD clocks before sending the destroy msg

Message ID 1383134165-2064-1-git-send-email-deathsimple@vodafone.de (mailing list archive)
State New, archived
Headers show

Commit Message

Christian König Oct. 30, 2013, 11:56 a.m. UTC
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(+)

Comments

Alex Deucher Oct. 30, 2013, 2:29 p.m. UTC | #1
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
>
Christian König Nov. 11, 2013, 8:54 a.m. UTC | #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
>>
Alex Deucher Nov. 11, 2013, 1:26 p.m. UTC | #3
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=c154a76311293f9671439286834aa325b7ef59fe
http://cgit.freedesktop.org/~airlied/linux/commit/?h=drm-next&id=727ddc84a1373bf06b2fa261f44e38fb0faf5340

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
>>>
>
diff mbox

Patch

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) {