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;
size_in_dw -= cur_size_in_dw; radeon_ring_write(ring, DMA_PACKET(DMA_PACKET_COPY, 0, 0, cur_size_in_dw)); radeon_ring_write(ring, dst_offset & 0xfffffffc);
-- 1.7.7.5