Re: radeon 0000:02:00.0: GPU lockup CP stall for more than 10000msec

Alex Deucher
2013-01-04T14:06:39Z

On Fri, Jan 4, 2013 at 6:16 AM, Boszormenyi Zoltan <zboszor@pr.hu> wrote:
> 2013-01-04 08:40 keltezéssel, Borislav Petkov írta:
>
>> On Wed, Jan 02, 2013 at 06:37:23PM -0500, Alex Deucher wrote:
>>>
>>> From: Alex Deucher <alexander.deucher@amd.com>
>>> Date: Wed, 2 Jan 2013 18:30:21 -0500
>>> Subject: [PATCH] drm/radeon/r6xx: fix DMA engine for ttm bo transfers
>>>
>>> count must be a multiple of 2.
>>>
>>> Cc: Borislav Petkov <bp@alien8.de>
>>> Cc: Markus Trippelsdorf <markus@trippelsdorf.de>
>>> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
>>
>> Thanks, will run it on the box in question next week when I have access.
>>
>> Btw, you could add the note about count needing to be a multiple of 2 as
>> a comment in the code below, for future reference.
>>
>>> ---
>>> drivers/gpu/drm/radeon/r600.c | 4 ++--
>>> 1 files changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/radeon/r600.c
>>> b/drivers/gpu/drm/radeon/r600.c
>>> index 2aaf147..9f4ce5e 100644
>>> --- a/drivers/gpu/drm/radeon/r600.c
>>> +++ b/drivers/gpu/drm/radeon/r600.c
>>> @@ -2636,8 +2636,8 @@ int r600_copy_dma(struct radeon_device *rdev,
>>> for (i = 0; i < num_loops; i++) {
>>> cur_size_in_dw = size_in_dw;
>>> - if (cur_size_in_dw > 0xFFFF)
>>> - cur_size_in_dw = 0xFFFF;
>>> + if (cur_size_in_dw > 0xFFFE)
>>> + cur_size_in_dw = 0xFFFE;
>
>
> How about any other odd numbers? Like 0xFFFB, or 0x0003?
> They will get passed as is after this change, no? Shouldn't they
> be also fixed? Something like this below?
>
> if (cur_size_in_dw & 0x0001)
> cur_size_in_dw &= ~1;

This function only deals with pages so they will always be even.

Alex