Commit fe2ccc7b authored by YiPeng Chai's avatar YiPeng Chai Committed by Alex Deucher
Browse files

drm/amdgpu: query block error count of ras module



Query block error count of ras module.

Signed-off-by: default avatarYiPeng Chai <YiPeng.Chai@amd.com>
Reviewed-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 91da5913
Loading
Loading
Loading
Loading
+28 −1
Original line number Diff line number Diff line
@@ -1543,8 +1543,35 @@ static int amdgpu_ras_query_error_status_with_event(struct amdgpu_device *adev,
	return ret;
}

static int amdgpu_uniras_query_block_ecc(struct amdgpu_device *adev,
			struct ras_query_if *info)
{
	struct ras_cmd_block_ecc_info_req req = {0};
	struct ras_cmd_block_ecc_info_rsp rsp = {0};
	int ret;

	if (!info)
		return -EINVAL;

	req.block_id = info->head.block;
	req.subblock_id = info->head.sub_block_index;

	ret = amdgpu_ras_mgr_handle_ras_cmd(adev, RAS_CMD__GET_BLOCK_ECC_STATUS,
				&req, sizeof(req), &rsp, sizeof(rsp));
	if (!ret) {
		info->ce_count = rsp.ce_count;
		info->ue_count = rsp.ue_count;
		info->de_count = rsp.de_count;
	}

	return ret;
}

int amdgpu_ras_query_error_status(struct amdgpu_device *adev, struct ras_query_if *info)
{
	if (amdgpu_uniras_enabled(adev))
		return amdgpu_uniras_query_block_ecc(adev, info);
	else
		return amdgpu_ras_query_error_status_with_event(adev, info, RAS_EVENT_TYPE_INVALID);
}