|
@@ -2040,6 +2040,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
|
|
|
mutex_init(&adev->srbm_mutex);
|
|
|
mutex_init(&adev->grbm_idx_mutex);
|
|
|
mutex_init(&adev->mn_lock);
|
|
|
+ mutex_init(&adev->virt.vf_errors.lock);
|
|
|
hash_init(adev->mn_hash);
|
|
|
|
|
|
amdgpu_check_arguments(adev);
|
|
@@ -2125,7 +2126,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
|
|
|
r = amdgpu_atombios_init(adev);
|
|
|
if (r) {
|
|
|
dev_err(adev->dev, "amdgpu_atombios_init failed\n");
|
|
|
- amdgpu_vf_error_put(AMDGIM_ERROR_VF_ATOMBIOS_INIT_FAIL, 0, 0);
|
|
|
+ amdgpu_vf_error_put(adev, AMDGIM_ERROR_VF_ATOMBIOS_INIT_FAIL, 0, 0);
|
|
|
goto failed;
|
|
|
}
|
|
|
|
|
@@ -2136,7 +2137,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
|
|
|
if (amdgpu_vpost_needed(adev)) {
|
|
|
if (!adev->bios) {
|
|
|
dev_err(adev->dev, "no vBIOS found\n");
|
|
|
- amdgpu_vf_error_put(AMDGIM_ERROR_VF_NO_VBIOS, 0, 0);
|
|
|
+ amdgpu_vf_error_put(adev, AMDGIM_ERROR_VF_NO_VBIOS, 0, 0);
|
|
|
r = -EINVAL;
|
|
|
goto failed;
|
|
|
}
|
|
@@ -2144,7 +2145,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
|
|
|
r = amdgpu_atom_asic_init(adev->mode_info.atom_context);
|
|
|
if (r) {
|
|
|
dev_err(adev->dev, "gpu post error!\n");
|
|
|
- amdgpu_vf_error_put(AMDGIM_ERROR_VF_GPU_POST_ERROR, 0, 0);
|
|
|
+ amdgpu_vf_error_put(adev, AMDGIM_ERROR_VF_GPU_POST_ERROR, 0, 0);
|
|
|
goto failed;
|
|
|
}
|
|
|
} else {
|
|
@@ -2156,7 +2157,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
|
|
|
r = amdgpu_atomfirmware_get_clock_info(adev);
|
|
|
if (r) {
|
|
|
dev_err(adev->dev, "amdgpu_atomfirmware_get_clock_info failed\n");
|
|
|
- amdgpu_vf_error_put(AMDGIM_ERROR_VF_ATOMBIOS_GET_CLOCK_FAIL, 0, 0);
|
|
|
+ amdgpu_vf_error_put(adev, AMDGIM_ERROR_VF_ATOMBIOS_GET_CLOCK_FAIL, 0, 0);
|
|
|
goto failed;
|
|
|
}
|
|
|
} else {
|
|
@@ -2164,7 +2165,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
|
|
|
r = amdgpu_atombios_get_clock_info(adev);
|
|
|
if (r) {
|
|
|
dev_err(adev->dev, "amdgpu_atombios_get_clock_info failed\n");
|
|
|
- amdgpu_vf_error_put(AMDGIM_ERROR_VF_ATOMBIOS_GET_CLOCK_FAIL, 0, 0);
|
|
|
+ amdgpu_vf_error_put(adev, AMDGIM_ERROR_VF_ATOMBIOS_GET_CLOCK_FAIL, 0, 0);
|
|
|
goto failed;
|
|
|
}
|
|
|
/* init i2c buses */
|
|
@@ -2175,7 +2176,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
|
|
|
r = amdgpu_fence_driver_init(adev);
|
|
|
if (r) {
|
|
|
dev_err(adev->dev, "amdgpu_fence_driver_init failed\n");
|
|
|
- amdgpu_vf_error_put(AMDGIM_ERROR_VF_FENCE_INIT_FAIL, 0, 0);
|
|
|
+ amdgpu_vf_error_put(adev, AMDGIM_ERROR_VF_FENCE_INIT_FAIL, 0, 0);
|
|
|
goto failed;
|
|
|
}
|
|
|
|
|
@@ -2185,7 +2186,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
|
|
|
r = amdgpu_init(adev);
|
|
|
if (r) {
|
|
|
dev_err(adev->dev, "amdgpu_init failed\n");
|
|
|
- amdgpu_vf_error_put(AMDGIM_ERROR_VF_AMDGPU_INIT_FAIL, 0, 0);
|
|
|
+ amdgpu_vf_error_put(adev, AMDGIM_ERROR_VF_AMDGPU_INIT_FAIL, 0, 0);
|
|
|
amdgpu_fini(adev);
|
|
|
goto failed;
|
|
|
}
|
|
@@ -2205,7 +2206,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
|
|
|
r = amdgpu_ib_pool_init(adev);
|
|
|
if (r) {
|
|
|
dev_err(adev->dev, "IB initialization failed (%d).\n", r);
|
|
|
- amdgpu_vf_error_put(AMDGIM_ERROR_VF_IB_INIT_FAIL, 0, r);
|
|
|
+ amdgpu_vf_error_put(adev, AMDGIM_ERROR_VF_IB_INIT_FAIL, 0, r);
|
|
|
goto failed;
|
|
|
}
|
|
|
|
|
@@ -2254,7 +2255,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
|
|
|
r = amdgpu_late_init(adev);
|
|
|
if (r) {
|
|
|
dev_err(adev->dev, "amdgpu_late_init failed\n");
|
|
|
- amdgpu_vf_error_put(AMDGIM_ERROR_VF_AMDGPU_LATE_INIT_FAIL, 0, r);
|
|
|
+ amdgpu_vf_error_put(adev, AMDGIM_ERROR_VF_AMDGPU_LATE_INIT_FAIL, 0, r);
|
|
|
goto failed;
|
|
|
}
|
|
|
|
|
@@ -2936,7 +2937,7 @@ out:
|
|
|
}
|
|
|
} else {
|
|
|
dev_err(adev->dev, "asic resume failed (%d).\n", r);
|
|
|
- amdgpu_vf_error_put(AMDGIM_ERROR_VF_ASIC_RESUME_FAIL, 0, r);
|
|
|
+ amdgpu_vf_error_put(adev, AMDGIM_ERROR_VF_ASIC_RESUME_FAIL, 0, r);
|
|
|
for (i = 0; i < AMDGPU_MAX_RINGS; ++i) {
|
|
|
if (adev->rings[i] && adev->rings[i]->sched.thread) {
|
|
|
kthread_unpark(adev->rings[i]->sched.thread);
|
|
@@ -2950,7 +2951,7 @@ out:
|
|
|
if (r) {
|
|
|
/* bad news, how to tell it to userspace ? */
|
|
|
dev_info(adev->dev, "GPU reset failed\n");
|
|
|
- amdgpu_vf_error_put(AMDGIM_ERROR_VF_GPU_RESET_FAIL, 0, r);
|
|
|
+ amdgpu_vf_error_put(adev, AMDGIM_ERROR_VF_GPU_RESET_FAIL, 0, r);
|
|
|
}
|
|
|
else {
|
|
|
dev_info(adev->dev, "GPU reset successed!\n");
|