diff options
author | Amit Pundir <amit.pundir@linaro.org> | 2015-02-10 09:16:29 +0530 |
---|---|---|
committer | Amit Pundir <amit.pundir@linaro.org> | 2015-02-10 09:16:29 +0530 |
commit | 38a7e29dd29b543f0ffceb66cbe0291df78cbe28 (patch) | |
tree | 21c1e8fc3609b8e8442122fabf391fa1ab5eb836 /drivers/gpu/drm/radeon/si_dma.c | |
parent | 92a5cbfb5b84989e03d300a9d6c2b29f159fe9b7 (diff) | |
parent | bfa76d49576599a4b9f9b7a71f23d73d6dcff735 (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.c | 9 |
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 */ } /** |