aboutsummaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/radeon/si_dma.c
diff options
context:
space:
mode:
authorAmit Pundir <amit.pundir@linaro.org>2015-02-10 09:16:29 +0530
committerAmit Pundir <amit.pundir@linaro.org>2015-02-10 09:16:29 +0530
commit38a7e29dd29b543f0ffceb66cbe0291df78cbe28 (patch)
tree21c1e8fc3609b8e8442122fabf391fa1ab5eb836 /drivers/gpu/drm/radeon/si_dma.c
parent92a5cbfb5b84989e03d300a9d6c2b29f159fe9b7 (diff)
parentbfa76d49576599a4b9f9b7a71f23d73d6dcff735 (diff)
Merge tag 'v3.19' into experimental/linaro-android-3.19tracking-linaro-android-3.19-llct-20150212.0
Linux 3.19
Diffstat (limited to 'drivers/gpu/drm/radeon/si_dma.c')
-rw-r--r--drivers/gpu/drm/radeon/si_dma.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/si_dma.c b/drivers/gpu/drm/radeon/si_dma.c
index f5cc777e1c5f..83207929fc62 100644
--- a/drivers/gpu/drm/radeon/si_dma.c
+++ b/drivers/gpu/drm/radeon/si_dma.c
@@ -123,7 +123,6 @@ void si_dma_vm_write_pages(struct radeon_device *rdev,
for (; ndw > 0; ndw -= 2, --count, pe += 8) {
if (flags & R600_PTE_SYSTEM) {
value = radeon_vm_map_gart(rdev, addr);
- value &= 0xFFFFFFFFFFFFF000ULL;
} else if (flags & R600_PTE_VALID) {
value = addr;
} else {
@@ -206,6 +205,14 @@ void si_dma_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring,
radeon_ring_write(ring, DMA_PACKET(DMA_PACKET_SRBM_WRITE, 0, 0, 0, 0));
radeon_ring_write(ring, (0xf << 16) | (VM_INVALIDATE_REQUEST >> 2));
radeon_ring_write(ring, 1 << vm_id);
+
+ /* wait for invalidate to complete */
+ radeon_ring_write(ring, DMA_PACKET(DMA_PACKET_POLL_REG_MEM, 0, 0, 0, 0));
+ radeon_ring_write(ring, VM_INVALIDATE_REQUEST);
+ radeon_ring_write(ring, 0xff << 16); /* retry */
+ radeon_ring_write(ring, 1 << vm_id); /* mask */
+ radeon_ring_write(ring, 0); /* value */
+ radeon_ring_write(ring, (0 << 28) | 0x20); /* func(always) | poll interval */
}
/**