Commit 48ee3d8e authored by ganglxie's avatar ganglxie Committed by Alex Deucher
Browse files

drm/amdgpu: refine bad page loading when in the same nps mode



when loading bad page in the same nps mode, need to set the other fields
fields in eeprom records manually besides retired_page

Signed-off-by: default avatarganglxie <ganglxie@amd.com>
Reviewed-by: default avatarTao Zhou <tao.zhou1@amd.com>
Reviewed-by: default avatarLijo Lazar <lijo.lazar@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 660261df
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -2857,6 +2857,13 @@ static int __amdgpu_ras_convert_rec_array_from_rom(struct amdgpu_device *adev,
			if (amdgpu_umc_pages_in_a_row(adev, err_data,
					bps[0].retired_page << AMDGPU_GPU_PAGE_SHIFT))
				return -EINVAL;
			for (i = 0; i < adev->umc.retire_unit; i++) {
				err_data->err_addr[i].address = bps[0].address;
				err_data->err_addr[i].mem_channel = bps[0].mem_channel;
				err_data->err_addr[i].bank = bps[0].bank;
				err_data->err_addr[i].err_type = bps[0].err_type;
				err_data->err_addr[i].mcumc_id = bps[0].mcumc_id;
			}
		} else {
			if (amdgpu_ras_mca2pa_by_idx(adev, &bps[0], err_data))
				return -EINVAL;
@@ -2888,6 +2895,7 @@ static int __amdgpu_ras_convert_rec_from_rom(struct amdgpu_device *adev,
				struct eeprom_table_record *bps, struct ras_err_data *err_data,
				enum amdgpu_memory_partition nps)
{
	int i = 0;
	enum amdgpu_memory_partition save_nps;

	save_nps = (bps->retired_page >> UMC_NPS_SHIFT) & UMC_NPS_MASK;
@@ -2897,6 +2905,13 @@ static int __amdgpu_ras_convert_rec_from_rom(struct amdgpu_device *adev,
		if (amdgpu_umc_pages_in_a_row(adev, err_data,
				bps->retired_page << AMDGPU_GPU_PAGE_SHIFT))
			return -EINVAL;
		for (i = 0; i < adev->umc.retire_unit; i++) {
			err_data->err_addr[i].address = bps->address;
			err_data->err_addr[i].mem_channel = bps->mem_channel;
			err_data->err_addr[i].bank = bps->bank;
			err_data->err_addr[i].err_type = bps->err_type;
			err_data->err_addr[i].mcumc_id = bps->mcumc_id;
		}
	} else {
		if (bps->address) {
			if (amdgpu_ras_mca2pa_by_idx(adev, bps, err_data))