Skip to content

Commit c9b8dca

Browse files
committed
drm/amdgpu/hdp4.0: do a posting read when flushing HDP
Need to read back to make sure the write goes through. Cc: David Belanger <[email protected]> Reviewed-by: Frank Min <[email protected]> Signed-off-by: Alex Deucher <[email protected]> Cc: [email protected]
1 parent c6c2f66 commit c9b8dca

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,12 @@
4040
static void hdp_v4_0_flush_hdp(struct amdgpu_device *adev,
4141
struct amdgpu_ring *ring)
4242
{
43-
if (!ring || !ring->funcs->emit_wreg)
43+
if (!ring || !ring->funcs->emit_wreg) {
4444
WREG32((adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2, 0);
45-
else
45+
RREG32((adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2);
46+
} else {
4647
amdgpu_ring_emit_wreg(ring, (adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2, 0);
48+
}
4749
}
4850

4951
static void hdp_v4_0_invalidate_hdp(struct amdgpu_device *adev,
@@ -54,11 +56,13 @@ static void hdp_v4_0_invalidate_hdp(struct amdgpu_device *adev,
5456
amdgpu_ip_version(adev, HDP_HWIP, 0) == IP_VERSION(4, 4, 5))
5557
return;
5658

57-
if (!ring || !ring->funcs->emit_wreg)
59+
if (!ring || !ring->funcs->emit_wreg) {
5860
WREG32_SOC15_NO_KIQ(HDP, 0, mmHDP_READ_CACHE_INVALIDATE, 1);
59-
else
61+
RREG32_SOC15_NO_KIQ(HDP, 0, mmHDP_READ_CACHE_INVALIDATE);
62+
} else {
6063
amdgpu_ring_emit_wreg(ring, SOC15_REG_OFFSET(
6164
HDP, 0, mmHDP_READ_CACHE_INVALIDATE), 1);
65+
}
6266
}
6367

6468
static void hdp_v4_0_query_ras_error_count(struct amdgpu_device *adev,

0 commit comments

Comments
 (0)