[PATCH] drm/radeon/uvd: use lower clocks on old UVD to boot v2

Christian König deathsimple at vodafone.de
Tue Apr 29 03:35:52 PDT 2014


Am 28.04.2014 16:41, schrieb Alex Deucher:
> On Mon, Apr 28, 2014 at 4:17 AM, Christian König
> <deathsimple at vodafone.de> wrote:
>> From: Christian König <christian.koenig at amd.com>
>>
>> Some RV7xx generation hardware crashes after you
>> raise the UVD clocks for the first time. Try to
>> avoid this by using the lower clocks to boot these.
>>
>> Workaround for: https://bugzilla.kernel.org/show_bug.cgi?id=71891
>>
>> v2: lower clocks on IB test as well
>>
>> Signed-off-by: Christian König <christian.koenig at amd.com>
>> Cc: stable at vger.kernel.org
> Any reason not to just always use lower clocks for the tests for all
> asics?
Yeah, evergreen and BTC don't want to boot UVD with the lower clocks, no 
idea why.

But essentially it's just a workaround, we should really try to figure 
out why this RV730 crashes so badly as soon as you raise the UVD clocks.

> Either way:
>
> Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

Thanks,
Christian.

>
>> ---
>>   drivers/gpu/drm/radeon/uvd_v1_0.c | 10 ++++++++--
>>   1 file changed, 8 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/radeon/uvd_v1_0.c b/drivers/gpu/drm/radeon/uvd_v1_0.c
>> index 0a243f0..be42c81 100644
>> --- a/drivers/gpu/drm/radeon/uvd_v1_0.c
>> +++ b/drivers/gpu/drm/radeon/uvd_v1_0.c
>> @@ -83,7 +83,10 @@ int uvd_v1_0_init(struct radeon_device *rdev)
>>          int r;
>>
>>          /* raise clocks while booting up the VCPU */
>> -       radeon_set_uvd_clocks(rdev, 53300, 40000);
>> +       if (rdev->family < CHIP_RV740)
>> +               radeon_set_uvd_clocks(rdev, 10000, 10000);
>> +       else
>> +               radeon_set_uvd_clocks(rdev, 53300, 40000);
>>
>>          r = uvd_v1_0_start(rdev);
>>          if (r)
>> @@ -407,7 +410,10 @@ int uvd_v1_0_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
>>          struct radeon_fence *fence = NULL;
>>          int r;
>>
>> -       r = radeon_set_uvd_clocks(rdev, 53300, 40000);
>> +       if (rdev->family < CHIP_RV740)
>> +               r = radeon_set_uvd_clocks(rdev, 10000, 10000);
>> +       else
>> +               r = radeon_set_uvd_clocks(rdev, 53300, 40000);
>>          if (r) {
>>                  DRM_ERROR("radeon: failed to raise UVD clocks (%d).\n", r);
>>                  return r;
>> --
>> 1.9.1
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dri-devel



More information about the dri-devel mailing list