|
@@ -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);
|
|
|
|