diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/si.c')
-rw-r--r-- | drivers/gpu/drm/radeon/si.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c index 60df444bd075..5d89b874a1a2 100644 --- a/drivers/gpu/drm/radeon/si.c +++ b/drivers/gpu/drm/radeon/si.c | |||
@@ -5057,6 +5057,16 @@ void si_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring, | |||
5057 | radeon_ring_write(ring, 0); | 5057 | radeon_ring_write(ring, 0); |
5058 | radeon_ring_write(ring, 1 << vm_id); | 5058 | radeon_ring_write(ring, 1 << vm_id); |
5059 | 5059 | ||
5060 | /* wait for the invalidate to complete */ | ||
5061 | radeon_ring_write(ring, PACKET3(PACKET3_WAIT_REG_MEM, 5)); | ||
5062 | radeon_ring_write(ring, (WAIT_REG_MEM_FUNCTION(0) | /* always */ | ||
5063 | WAIT_REG_MEM_ENGINE(0))); /* me */ | ||
5064 | radeon_ring_write(ring, VM_INVALIDATE_REQUEST >> 2); | ||
5065 | radeon_ring_write(ring, 0); | ||
5066 | radeon_ring_write(ring, 0); /* ref */ | ||
5067 | radeon_ring_write(ring, 0); /* mask */ | ||
5068 | radeon_ring_write(ring, 0x20); /* poll interval */ | ||
5069 | |||
5060 | /* sync PFP to ME, otherwise we might get invalid PFP reads */ | 5070 | /* sync PFP to ME, otherwise we might get invalid PFP reads */ |
5061 | radeon_ring_write(ring, PACKET3(PACKET3_PFP_SYNC_ME, 0)); | 5071 | radeon_ring_write(ring, PACKET3(PACKET3_PFP_SYNC_ME, 0)); |
5062 | radeon_ring_write(ring, 0x0); | 5072 | radeon_ring_write(ring, 0x0); |