aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
diff options
context:
space:
mode:
authorJunwei Zhang <Jerry.Zhang@amd.com>2016-09-07 05:14:46 -0400
committerAlex Deucher <alexander.deucher@amd.com>2016-09-14 15:10:27 -0400
commit8640faed5a8a8f55d6decd2d9c9f35ae687b1e4c (patch)
treec15304b6d56a841eaf4212633f10725516812742 /drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
parentaa1d562e645d2542b48bdd42903726adfc87efb3 (diff)
drm/amdgpu: free the BO in kernel by helper amdgpu_bo_free_kernel()
Signed-off-by: Junwei Zhang <Jerry.Zhang@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.c19
1 files changed, 4 insertions, 15 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
index 242ba04bfde6..777f11b63b4c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
@@ -252,28 +252,17 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring,
252 */ 252 */
253void amdgpu_ring_fini(struct amdgpu_ring *ring) 253void amdgpu_ring_fini(struct amdgpu_ring *ring)
254{ 254{
255 int r;
256 struct amdgpu_bo *ring_obj;
257
258 ring_obj = ring->ring_obj;
259 ring->ready = false; 255 ring->ready = false;
260 ring->ring = NULL;
261 ring->ring_obj = NULL;
262 256
263 amdgpu_wb_free(ring->adev, ring->cond_exe_offs); 257 amdgpu_wb_free(ring->adev, ring->cond_exe_offs);
264 amdgpu_wb_free(ring->adev, ring->fence_offs); 258 amdgpu_wb_free(ring->adev, ring->fence_offs);
265 amdgpu_wb_free(ring->adev, ring->rptr_offs); 259 amdgpu_wb_free(ring->adev, ring->rptr_offs);
266 amdgpu_wb_free(ring->adev, ring->wptr_offs); 260 amdgpu_wb_free(ring->adev, ring->wptr_offs);
267 261
268 if (ring_obj) { 262 amdgpu_bo_free_kernel(&ring->ring_obj,
269 r = amdgpu_bo_reserve(ring_obj, false); 263 &ring->gpu_addr,
270 if (likely(r == 0)) { 264 (void **)&ring->ring);
271 amdgpu_bo_kunmap(ring_obj); 265
272 amdgpu_bo_unpin(ring_obj);
273 amdgpu_bo_unreserve(ring_obj);
274 }
275 amdgpu_bo_unref(&ring_obj);
276 }
277 amdgpu_debugfs_ring_fini(ring); 266 amdgpu_debugfs_ring_fini(ring);
278} 267}
279 268