Commit 6ffc6e05 authored by Lijo Lazar's avatar Lijo Lazar Committed by Alex Deucher
Browse files

drm/amdgpu: Reset RAS table if header is invalid



If a valid header is not found during RAS eeprom init, consider it as
new and reset RAS table info.

Signed-off-by: default avatarLijo Lazar <lijo.lazar@amd.com>
Reviewed-by: default avatarTao Zhou <tao.zhou1@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent b695dd3b
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -1392,6 +1392,12 @@ int amdgpu_ras_eeprom_init(struct amdgpu_ras_eeprom_control *control)

	__decode_table_header_from_buf(hdr, buf);

	if (hdr->header != RAS_TABLE_HDR_VAL &&
	    hdr->header != RAS_TABLE_HDR_BAD) {
		dev_info(adev->dev, "Creating a new EEPROM table");
		return amdgpu_ras_eeprom_reset_table(control);
	}

	switch (hdr->version) {
	case RAS_TABLE_VER_V2_1:
	case RAS_TABLE_VER_V3:
@@ -1429,7 +1435,7 @@ int amdgpu_ras_eeprom_check(struct amdgpu_ras_eeprom_control *control)
	struct amdgpu_device *adev = to_amdgpu_device(control);
	struct amdgpu_ras_eeprom_table_header *hdr = &control->tbl_hdr;
	struct amdgpu_ras *ras = amdgpu_ras_get_context(adev);
	int res;
	int res = 0;

	if (!__is_ras_eeprom_supported(adev))
		return 0;
@@ -1510,10 +1516,6 @@ int amdgpu_ras_eeprom_check(struct amdgpu_ras_eeprom_control *control)
					 "User defined threshold is set, runtime service will be halt when threshold is reached\n");
			}
		}
	} else {
		DRM_INFO("Creating a new EEPROM table");

		res = amdgpu_ras_eeprom_reset_table(control);
	}

	return res < 0 ? res : 0;