Skip to content

Commit f60770d

Browse files
alexdeuchergregkh
authored andcommitted
drm/amdgpu/hdp4.0: do a posting read when flushing HDP
[ Upstream commit c9b8dca ] 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] Signed-off-by: Sasha Levin <[email protected]>
1 parent a9cb2cc commit f60770d

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,
@@ -53,11 +55,13 @@ static void hdp_v4_0_invalidate_hdp(struct amdgpu_device *adev,
5355
adev->ip_versions[HDP_HWIP][0] == IP_VERSION(4, 4, 2))
5456
return;
5557

56-
if (!ring || !ring->funcs->emit_wreg)
58+
if (!ring || !ring->funcs->emit_wreg) {
5759
WREG32_SOC15_NO_KIQ(HDP, 0, mmHDP_READ_CACHE_INVALIDATE, 1);
58-
else
60+
RREG32_SOC15_NO_KIQ(HDP, 0, mmHDP_READ_CACHE_INVALIDATE);
61+
} else {
5962
amdgpu_ring_emit_wreg(ring, SOC15_REG_OFFSET(
6063
HDP, 0, mmHDP_READ_CACHE_INVALIDATE), 1);
64+
}
6165
}
6266

6367
static void hdp_v4_0_query_ras_error_count(struct amdgpu_device *adev,

0 commit comments

Comments
 (0)