Commit 148084bb authored by Xiang Liu's avatar Xiang Liu Committed by Alex Deucher
Browse files

drm/amdgpu: Use unique CPER record id across devices



Encode socket id to CPER record id to be unique across devices.

v2: add pointer check for adev->smuio.funcs->get_socket_id
v2: set 0 if adev->smuio.funcs->get_socket_id is NULL

Signed-off-by: default avatarXiang Liu <xiang.liu@amd.com>
Reviewed-by: default avatarTao Zhou <tao.zhou1@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 216be476
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -57,6 +57,8 @@ void amdgpu_cper_entry_fill_hdr(struct amdgpu_device *adev,
				enum amdgpu_cper_type type,
				enum cper_error_severity sev)
{
	char record_id[16];

	hdr->signature[0]		= 'C';
	hdr->signature[1]		= 'P';
	hdr->signature[2]		= 'E';
@@ -71,7 +73,13 @@ void amdgpu_cper_entry_fill_hdr(struct amdgpu_device *adev,

	amdgpu_cper_get_timestamp(&hdr->timestamp);

	snprintf(hdr->record_id, 8, "%d", atomic_inc_return(&adev->cper.unique_id));
	snprintf(record_id, 9, "%d:%X",
		 (adev->smuio.funcs && adev->smuio.funcs->get_socket_id) ?
			 adev->smuio.funcs->get_socket_id(adev) :
			 0,
		 atomic_inc_return(&adev->cper.unique_id));
	memcpy(hdr->record_id, record_id, 8);

	snprintf(hdr->platform_id, 16, "0x%04X:0x%04X",
		 adev->pdev->vendor, adev->pdev->device);
	/* pmfw version should be part of creator_id according to CPER spec */
@@ -117,10 +125,10 @@ static int amdgpu_cper_entry_fill_section_desc(struct amdgpu_device *adev,
	section_desc->severity			= sev;
	section_desc->sec_type			= sec_type;

	if (adev->smuio.funcs &&
	    adev->smuio.funcs->get_socket_id)
	snprintf(section_desc->fru_text, 20, "OAM%d",
			 adev->smuio.funcs->get_socket_id(adev));
		 (adev->smuio.funcs && adev->smuio.funcs->get_socket_id) ?
			 adev->smuio.funcs->get_socket_id(adev) :
			 0);

	if (bp_threshold)
		section_desc->flag_bits.exceed_err_threshold = 1;