summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/radeon/si_dma.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2015-01-21 02:21:32 +0300
committerDave Airlie <airlied@redhat.com>2015-01-21 02:21:32 +0300
commitb46ce98d9393bf676a50455b3854988cdb64e562 (patch)
tree84244bb3454a15719ec298f4affff7bd7c1928c5 /drivers/gpu/drm/radeon/si_dma.c
parentec6f34e5b552fb0a52e6aae1a5afbbb1605cc6cc (diff)
parentd8a74e186949e1a2c2f1309212478b0659bf9225 (diff)
downloadlinux-b46ce98d9393bf676a50455b3854988cdb64e562.tar.xz
Merge branch 'drm-fixes-3.19' of git://people.freedesktop.org/~agd5f/linux into drm-fixes
Some radeon fixes for 3.19: - GPUVM stability fixes - SI dpm quirks - Regression fixes * 'drm-fixes-3.19' of git://people.freedesktop.org/~agd5f/linux: drm/radeon: use rv515_ring_start on r5xx drm/radeon: add si dpm quirk list drm/radeon: don't print error on -ERESTARTSYS drm/radeon: add a dpm quirk list drm/radeon: fix VM flush on CIK (v3) drm/radeon: fix VM flush on SI (v3) drm/radeon: fix VM flush on cayman/aruba (v3)
Diffstat (limited to 'drivers/gpu/drm/radeon/si_dma.c')
-rw-r--r--drivers/gpu/drm/radeon/si_dma.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/si_dma.c b/drivers/gpu/drm/radeon/si_dma.c
index f5cc777e1c5f..aa7b872b2c43 100644
--- a/drivers/gpu/drm/radeon/si_dma.c
+++ b/drivers/gpu/drm/radeon/si_dma.c
@@ -206,6 +206,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 */
}
/**