drm/damdgpu:add new mqd member in ring
authorMonk Liu <Monk.Liu@amd.com>
Tue, 24 Jan 2017 10:33:22 +0000 (18:33 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 30 Mar 2017 03:52:41 +0000 (23:52 -0400)
introduce a new mqd member in ring is for later usage.
we need keep a clean version of MQD for the purpose
of recovering compute rings from hang.

Signed-off-by: Monk Liu <Monk.Liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c

index 2345b39878c6c0a8bc10dbe784e17683161d2b2a..5785db8e3cf344a7449a64bef71e3f270cc8f166 100644 (file)
@@ -161,6 +161,8 @@ struct amdgpu_ring {
        u32                     pipe;
        u32                     queue;
        struct amdgpu_bo        *mqd_obj;
+       uint64_t                mqd_gpu_addr;
+       struct vi_mqd           *mqd_ptr;
        u32                     doorbell_index;
        bool                    use_doorbell;
        unsigned                wptr_offs;
index e0a96ca583a438ded3a2607f8c452044a820565c..505db77dc87d69d63e50bbc7f3f57effeb0f691e 100644 (file)
@@ -4596,6 +4596,8 @@ static void gfx_v8_0_cp_compute_fini(struct amdgpu_device *adev)
 
                        amdgpu_bo_unref(&ring->mqd_obj);
                        ring->mqd_obj = NULL;
+                       ring->mqd_ptr = NULL;
+                       ring->mqd_gpu_addr = 0;
                }
        }
 }