Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu/hdp5.0: do a posting read when flushing HDP

Need to read back to make sure the write goes through.

Cc: David Belanger <david.belanger@amd.com>
Reviewed-by: Frank Min <frank.min@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org

+5 -2
+5 -2
drivers/gpu/drm/amd/amdgpu/hdp_v5_0.c
··· 31 31 static void hdp_v5_0_flush_hdp(struct amdgpu_device *adev, 32 32 struct amdgpu_ring *ring) 33 33 { 34 - if (!ring || !ring->funcs->emit_wreg) 34 + if (!ring || !ring->funcs->emit_wreg) { 35 35 WREG32((adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2, 0); 36 - else 36 + RREG32((adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2); 37 + } else { 37 38 amdgpu_ring_emit_wreg(ring, (adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2, 0); 39 + } 38 40 } 39 41 40 42 static void hdp_v5_0_invalidate_hdp(struct amdgpu_device *adev, ··· 44 42 { 45 43 if (!ring || !ring->funcs->emit_wreg) { 46 44 WREG32_SOC15_NO_KIQ(HDP, 0, mmHDP_READ_CACHE_INVALIDATE, 1); 45 + RREG32_SOC15_NO_KIQ(HDP, 0, mmHDP_READ_CACHE_INVALIDATE); 47 46 } else { 48 47 amdgpu_ring_emit_wreg(ring, SOC15_REG_OFFSET( 49 48 HDP, 0, mmHDP_READ_CACHE_INVALIDATE), 1);