diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c index 8d0f177..d86aaee 100644 --- a/drivers/gpu/drm/radeon/cik.c +++ b/drivers/gpu/drm/radeon/cik.c @@ -3552,6 +3552,14 @@ static void cik_hdp_flush_cp_ring_emit(struct radeon_device *rdev, break; } +#if 1 + radeon_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3)); + radeon_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) | + WRITE_DATA_DST_SEL(0))); + radeon_ring_write(ring, HDP_MEM_COHERENCY_FLUSH_CNTL >> 2); + radeon_ring_write(ring, 0); + radeon_ring_write(ring, 0); +#else radeon_ring_write(ring, PACKET3(PACKET3_WAIT_REG_MEM, 5)); radeon_ring_write(ring, (WAIT_REG_MEM_OPERATION(1) | /* write, wait, write */ WAIT_REG_MEM_FUNCTION(3) | /* == */ @@ -3561,6 +3569,7 @@ static void cik_hdp_flush_cp_ring_emit(struct radeon_device *rdev, radeon_ring_write(ring, ref_and_mask); radeon_ring_write(ring, ref_and_mask); radeon_ring_write(ring, 0x20); /* poll interval */ +#endif } /** diff --git a/drivers/gpu/drm/radeon/cik_sdma.c b/drivers/gpu/drm/radeon/cik_sdma.c index f7e46cf..fa462ad 100644 --- a/drivers/gpu/drm/radeon/cik_sdma.c +++ b/drivers/gpu/drm/radeon/cik_sdma.c @@ -177,12 +177,18 @@ static void cik_sdma_hdp_flush_ring_emit(struct radeon_device *rdev, else ref_and_mask = SDMA1; +#if 1 + radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_SRBM_WRITE, 0, 0xf000)); + radeon_ring_write(ring, HDP_MEM_COHERENCY_FLUSH_CNTL >> 2); + radeon_ring_write(ring, 0); +#else radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_POLL_REG_MEM, 0, extra_bits)); radeon_ring_write(ring, GPU_HDP_FLUSH_DONE); radeon_ring_write(ring, GPU_HDP_FLUSH_REQ); radeon_ring_write(ring, ref_and_mask); /* reference */ radeon_ring_write(ring, ref_and_mask); /* mask */ radeon_ring_write(ring, (0xfff << 16) | 10); /* retry count, poll interval */ +#endif } /**