Commit e643823d authored by Tao Zhou's avatar Tao Zhou Committed by Alex Deucher

drm/amdgpu: add RAS poison consumption handler for SRIOV

Send message to PF if VF receives RAS poison consumption interrupt.
Signed-off-by: default avatarTao Zhou <tao.zhou1@amd.com>
Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent ae844dd7
...@@ -169,25 +169,33 @@ int amdgpu_umc_poison_handler(struct amdgpu_device *adev, bool reset) ...@@ -169,25 +169,33 @@ int amdgpu_umc_poison_handler(struct amdgpu_device *adev, bool reset)
{ {
int ret = AMDGPU_RAS_SUCCESS; int ret = AMDGPU_RAS_SUCCESS;
if (!adev->gmc.xgmi.connected_to_cpu) { if (!amdgpu_sriov_vf(adev)) {
struct ras_err_data err_data = {0, 0, 0, NULL}; if (!adev->gmc.xgmi.connected_to_cpu) {
struct ras_common_if head = { struct ras_err_data err_data = {0, 0, 0, NULL};
.block = AMDGPU_RAS_BLOCK__UMC, struct ras_common_if head = {
}; .block = AMDGPU_RAS_BLOCK__UMC,
struct ras_manager *obj = amdgpu_ras_find_obj(adev, &head); };
struct ras_manager *obj = amdgpu_ras_find_obj(adev, &head);
ret = amdgpu_umc_do_page_retirement(adev, &err_data, NULL, reset);
ret = amdgpu_umc_do_page_retirement(adev, &err_data, NULL, reset);
if (ret == AMDGPU_RAS_SUCCESS && obj) {
obj->err_data.ue_count += err_data.ue_count; if (ret == AMDGPU_RAS_SUCCESS && obj) {
obj->err_data.ce_count += err_data.ce_count; obj->err_data.ue_count += err_data.ue_count;
obj->err_data.ce_count += err_data.ce_count;
}
} else if (reset) {
/* MCA poison handler is only responsible for GPU reset,
* let MCA notifier do page retirement.
*/
kgd2kfd_set_sram_ecc_flag(adev->kfd.dev);
amdgpu_ras_reset_gpu(adev);
} }
} else if (reset) { } else {
/* MCA poison handler is only responsible for GPU reset, if (adev->virt.ops && adev->virt.ops->ras_poison_handler)
* let MCA notifier do page retirement. adev->virt.ops->ras_poison_handler(adev);
*/ else
kgd2kfd_set_sram_ecc_flag(adev->kfd.dev); dev_warn(adev->dev,
amdgpu_ras_reset_gpu(adev); "No ras_poison_handler interface in SRIOV!\n");
} }
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment