aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
diff options
context:
space:
mode:
authorMonk Liu <monk.liu@amd.com>2016-01-14 05:08:16 -0500
committerAlex Deucher <alexander.deucher@amd.com>2016-05-02 15:09:17 -0400
commit128cff1af68689cf4d85d3ba948c86a194dee30f (patch)
tree70a6e6963ea61a58fa1500d5d571e4a52263d78e /drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
parent8e9fbeb522fa3043dc65ef0e383af28843950799 (diff)
drm/amdgpu: support cond exec
This adds the groundwork for conditional execution on SDMA which is necessary for preemption. Signed-off-by: Monk Liu <monk.liu@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
index 972eed2ef787..dd79243d0a37 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
@@ -267,6 +267,15 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring,
267 } 267 }
268 ring->next_rptr_gpu_addr = adev->wb.gpu_addr + (ring->next_rptr_offs * 4); 268 ring->next_rptr_gpu_addr = adev->wb.gpu_addr + (ring->next_rptr_offs * 4);
269 ring->next_rptr_cpu_addr = &adev->wb.wb[ring->next_rptr_offs]; 269 ring->next_rptr_cpu_addr = &adev->wb.wb[ring->next_rptr_offs];
270
271 r = amdgpu_wb_get(adev, &ring->cond_exe_offs);
272 if (r) {
273 dev_err(adev->dev, "(%d) ring cond_exec_polling wb alloc failed\n", r);
274 return r;
275 }
276 ring->cond_exe_gpu_addr = adev->wb.gpu_addr + (ring->cond_exe_offs * 4);
277 ring->cond_exe_cpu_addr = &adev->wb.wb[ring->cond_exe_offs];
278
270 spin_lock_init(&ring->fence_lock); 279 spin_lock_init(&ring->fence_lock);
271 r = amdgpu_fence_driver_start_ring(ring, irq_src, irq_type); 280 r = amdgpu_fence_driver_start_ring(ring, irq_src, irq_type);
272 if (r) { 281 if (r) {