diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 12 | 
1 files changed, 7 insertions, 5 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c index 0b1c48590c43..6ed53669f3e0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c @@ -498,7 +498,7 @@ int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,  }  /** - * amdgpu_fence_driver_init - init the fence driver + * amdgpu_fence_driver_sw_init - init the fence driver   * for all possible rings.   *   * @adev: amdgpu device pointer @@ -509,13 +509,13 @@ int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,   * amdgpu_fence_driver_start_ring().   * Returns 0 for success.   */ -int amdgpu_fence_driver_init(struct amdgpu_device *adev) +int amdgpu_fence_driver_sw_init(struct amdgpu_device *adev)  {  	return 0;  }  /** - * amdgpu_fence_driver_fini - tear down the fence driver + * amdgpu_fence_driver_hw_fini - tear down the fence driver   * for all possible rings.   *   * @adev: amdgpu device pointer @@ -531,8 +531,7 @@ void amdgpu_fence_driver_hw_fini(struct amdgpu_device *adev)  		if (!ring || !ring->fence_drv.initialized)  			continue; -		if (!ring->no_scheduler) -			drm_sched_fini(&ring->sched); +  		/* You can't wait for HW to signal if it's gone */  		if (!drm_dev_is_unplugged(&adev->ddev))  			r = amdgpu_fence_wait_empty(ring); @@ -560,6 +559,9 @@ void amdgpu_fence_driver_sw_fini(struct amdgpu_device *adev)  		if (!ring || !ring->fence_drv.initialized)  			continue; +		if (!ring->no_scheduler) +			drm_sched_fini(&ring->sched); +  		for (j = 0; j <= ring->fence_drv.num_fences_mask; ++j)  			dma_fence_put(ring->fence_drv.fences[j]);  		kfree(ring->fence_drv.fences); |