|
@@ -1345,6 +1345,12 @@ static int amdgpu_early_init(struct amdgpu_device *adev)
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
+ if (amdgpu_sriov_vf(adev)) {
|
|
|
+ r = amdgpu_virt_request_full_gpu(adev, true);
|
|
|
+ if (r)
|
|
|
+ return r;
|
|
|
+ }
|
|
|
+
|
|
|
for (i = 0; i < adev->num_ip_blocks; i++) {
|
|
|
if ((amdgpu_ip_block_mask & (1 << i)) == 0) {
|
|
|
DRM_ERROR("disabled ip block: %d\n", i);
|
|
@@ -1547,8 +1553,10 @@ static int amdgpu_fini(struct amdgpu_device *adev)
|
|
|
adev->ip_blocks[i].status.late_initialized = false;
|
|
|
}
|
|
|
|
|
|
- if (amdgpu_sriov_vf(adev))
|
|
|
+ if (amdgpu_sriov_vf(adev)) {
|
|
|
amdgpu_bo_free_kernel(&adev->virt.csa_obj, &adev->virt.csa_vmid0_addr, NULL);
|
|
|
+ amdgpu_virt_release_full_gpu(adev, false);
|
|
|
+ }
|
|
|
|
|
|
return 0;
|
|
|
}
|