diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 19 | 
1 files changed, 10 insertions, 9 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c index 01abfc21b4a2..e19520c4b4b6 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c @@ -253,19 +253,20 @@ int amdgpu_uvd_sw_fini(struct amdgpu_device *adev)  {  	int r; -	if (adev->uvd.vcpu_bo == NULL) -		return 0; +	kfree(adev->uvd.saved_bo);  	amd_sched_entity_fini(&adev->uvd.ring.sched, &adev->uvd.entity); -	r = amdgpu_bo_reserve(adev->uvd.vcpu_bo, false); -	if (!r) { -		amdgpu_bo_kunmap(adev->uvd.vcpu_bo); -		amdgpu_bo_unpin(adev->uvd.vcpu_bo); -		amdgpu_bo_unreserve(adev->uvd.vcpu_bo); -	} +	if (adev->uvd.vcpu_bo) { +		r = amdgpu_bo_reserve(adev->uvd.vcpu_bo, false); +		if (!r) { +			amdgpu_bo_kunmap(adev->uvd.vcpu_bo); +			amdgpu_bo_unpin(adev->uvd.vcpu_bo); +			amdgpu_bo_unreserve(adev->uvd.vcpu_bo); +		} -	amdgpu_bo_unref(&adev->uvd.vcpu_bo); +		amdgpu_bo_unref(&adev->uvd.vcpu_bo); +	}  	amdgpu_ring_fini(&adev->uvd.ring); |