diff options
author | Christian König <christian.koenig@amd.com> | 2014-07-30 15:05:16 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2014-08-05 08:53:55 -0400 |
commit | 5a341be27fe23c31e4849b0a0506a4469bcbc283 (patch) | |
tree | 4ac9bf04d5b1945ba2e0e93e68d5cbd5917cbecf | |
parent | ee26d83ff030fd2a9952a2c91b94c75819f86973 (diff) |
drm/radeon: add VM GART copy optimization to NI as well
Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/radeon/ni_dma.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/ni_dma.c b/drivers/gpu/drm/radeon/ni_dma.c index 6378e0276691..66325ef39694 100644 --- a/drivers/gpu/drm/radeon/ni_dma.c +++ b/drivers/gpu/drm/radeon/ni_dma.c | |||
@@ -330,7 +330,26 @@ void cayman_dma_vm_set_page(struct radeon_device *rdev, | |||
330 | 330 | ||
331 | trace_radeon_vm_set_page(pe, addr, count, incr, flags); | 331 | trace_radeon_vm_set_page(pe, addr, count, incr, flags); |
332 | 332 | ||
333 | if ((flags & R600_PTE_SYSTEM) || (count == 1)) { | 333 | if ((flags & R600_PTE_GART_MASK) == R600_PTE_GART_MASK) { |
334 | uint64_t src = rdev->gart.table_addr + (addr >> 12) * 8; | ||
335 | while (count) { | ||
336 | ndw = count * 2; | ||
337 | if (ndw > 0xFFFFE) | ||
338 | ndw = 0xFFFFE; | ||
339 | |||
340 | ib->ptr[ib->length_dw++] = DMA_PACKET(DMA_PACKET_COPY, | ||
341 | 0, 0, ndw); | ||
342 | ib->ptr[ib->length_dw++] = lower_32_bits(pe); | ||
343 | ib->ptr[ib->length_dw++] = lower_32_bits(src); | ||
344 | ib->ptr[ib->length_dw++] = upper_32_bits(pe) & 0xff; | ||
345 | ib->ptr[ib->length_dw++] = upper_32_bits(src) & 0xff; | ||
346 | |||
347 | pe += ndw * 4; | ||
348 | src += ndw * 4; | ||
349 | count -= ndw / 2; | ||
350 | } | ||
351 | |||
352 | } else if ((flags & R600_PTE_SYSTEM) || (count == 1)) { | ||
334 | while (count) { | 353 | while (count) { |
335 | ndw = count * 2; | 354 | ndw = count * 2; |
336 | if (ndw > 0xFFFFE) | 355 | if (ndw > 0xFFFFE) |