]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amdgpu: fix SDMA hdp flush engine conflict
authorLikun Gao <Likun.Gao@amd.com>
Wed, 4 Mar 2020 08:40:24 +0000 (16:40 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 1 Jul 2020 05:59:10 +0000 (01:59 -0400)
Each of HDP flush engine should be used by one ring, correct allocate of
hdp flush engine to SDMA ring.
Correct me value of each SDMA ring, as it was cleared when init microcode.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Likun Gao <Likun.Gao@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c

index 52206050adb9181676904cd6ef78015154ef2299..f072cef28b6036eb49ea4d5cfb4efd7c1990eabc 100644 (file)
@@ -391,10 +391,7 @@ static void sdma_v5_2_ring_emit_hdp_flush(struct amdgpu_ring *ring)
        u32 ref_and_mask = 0;
        const struct nbio_hdp_flush_reg *nbio_hf_reg = adev->nbio.hdp_flush_reg;
 
-       if (ring->me == 0)
-               ref_and_mask = nbio_hf_reg->ref_and_mask_sdma0;
-       else
-               ref_and_mask = nbio_hf_reg->ref_and_mask_sdma1;
+       ref_and_mask = nbio_hf_reg->ref_and_mask_sdma0 << ring->me;
 
        amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_POLL_REGMEM) |
                          SDMA_PKT_POLL_REGMEM_HEADER_HDP_FLUSH(1) |
@@ -1224,6 +1221,7 @@ static int sdma_v5_2_sw_init(void *handle)
                ring = &adev->sdma.instance[i].ring;
                ring->ring_obj = NULL;
                ring->use_doorbell = true;
+               ring->me = i;
 
                DRM_INFO("use_doorbell being set to: [%s]\n",
                                ring->use_doorbell?"true":"false");