]> www.infradead.org Git - nvme.git/commitdiff
drm/amdgpu/gfx12: remove GDS leftovers
authorMarek Olšák <marek.olsak@amd.com>
Fri, 31 May 2024 23:48:05 +0000 (19:48 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 1 Jul 2024 20:10:46 +0000 (16:10 -0400)
GDS doesn't exist in gfx12. The incomplete packet allows userspace to hang
the hw from the kernel.

Signed-off-by: Marek Olšák <marek.olsak@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c

index a638696b21427070d114405794249d6849b4fe6b..ccb26f78252a5d57ded21d788b73f54e977f0dd1 100644 (file)
@@ -4108,21 +4108,6 @@ static void gfx_v12_0_ring_emit_ib_compute(struct amdgpu_ring *ring,
                /* inherit vmid from mqd */
                control |= 0x40000000;
 
-       /* Currently, there is a high possibility to get wave ID mismatch
-        * between ME and GDS, leading to a hw deadlock, because ME generates
-        * different wave IDs than the GDS expects. This situation happens
-        * randomly when at least 5 compute pipes use GDS ordered append.
-        * The wave IDs generated by ME are also wrong after suspend/resume.
-        * Those are probably bugs somewhere else in the kernel driver.
-        *
-        * Writing GDS_COMPUTE_MAX_WAVE_ID resets wave ID counters in ME and
-        * GDS to 0 for this ring (me/pipe).
-        */
-       if (ib->flags & AMDGPU_IB_FLAG_RESET_GDS_MAX_WAVE_ID) {
-               amdgpu_ring_write(ring, PACKET3(PACKET3_SET_CONFIG_REG, 1));
-               amdgpu_ring_write(ring, regGDS_COMPUTE_MAX_WAVE_ID);
-       }
-
        amdgpu_ring_write(ring, PACKET3(PACKET3_INDIRECT_BUFFER, 2));
        BUG_ON(ib->gpu_addr & 0x3); /* Dword align */
        amdgpu_ring_write(ring,
@@ -4721,7 +4706,6 @@ static const struct amdgpu_ring_funcs gfx_v12_0_ring_funcs_gfx = {
                SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 7 +
                2 + /* VM_FLUSH */
                8 + /* FENCE for VM_FLUSH */
-               20 + /* GDS switch */
                5 + /* COND_EXEC */
                7 + /* HDP_flush */
                4 + /* VGT_flush */