drm/amdgpu: add a ring func for end command
authorLeo Liu <leo.liu@amd.com>
Wed, 14 Dec 2016 20:05:00 +0000 (15:05 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 30 Mar 2017 03:53:43 +0000 (23:53 -0400)
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Leo Liu <leo.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_ib.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h

index e357e42c10c7a18c0ac24b65b99a95de1493b987..c4857083d834e899f3f3d701fa43b65555c9283b 100644 (file)
@@ -222,6 +222,9 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
                return r;
        }
 
+       if (ring->funcs->insert_end)
+               ring->funcs->insert_end(ring);
+
        /* wrap the last IB with fence */
        if (job && job->uf_addr) {
                amdgpu_ring_emit_fence(ring, job->uf_addr, job->uf_sequence,
index dada0a022bedec55963296d135b0a6e0548ee006..f0c1a6bbd4440770b498f8a0b19cfdc3d2d27214 100644 (file)
@@ -127,6 +127,7 @@ struct amdgpu_ring_funcs {
        int (*test_ib)(struct amdgpu_ring *ring, long timeout);
        /* insert NOP packets */
        void (*insert_nop)(struct amdgpu_ring *ring, uint32_t count);
+       void (*insert_end)(struct amdgpu_ring *ring);
        /* pad the indirect buffer to the necessary number of dw */
        void (*pad_ib)(struct amdgpu_ring *ring, struct amdgpu_ib *ib);
        unsigned (*init_cond_exec)(struct amdgpu_ring *ring);