Commit 1fab841f authored by Luben Tuikov's avatar Luben Tuikov Committed by Alex Deucher

drm/amdgpu: RAS xfer to read/write

Wrap amdgpu_ras_eeprom_xfer(..., bool write),
into amdgpu_ras_eeprom_read() and
amdgpu_ras_eeprom_write(), as that makes reading
and understanding the code clearer.

Cc: Jean Delvare <jdelvare@suse.de>
Cc: Alexander Deucher <Alexander.Deucher@amd.com>
Cc: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
Cc: Lijo Lazar <Lijo.Lazar@amd.com>
Cc: Stanley Yang <Stanley.Yang@amd.com>
Cc: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: default avatarLuben Tuikov <luben.tuikov@amd.com>
Acked-by: default avatarAlexander Deucher <Alexander.Deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent a4399657
...@@ -1817,10 +1817,9 @@ int amdgpu_ras_save_bad_pages(struct amdgpu_device *adev) ...@@ -1817,10 +1817,9 @@ int amdgpu_ras_save_bad_pages(struct amdgpu_device *adev)
save_count = data->count - control->num_recs; save_count = data->count - control->num_recs;
/* only new entries are saved */ /* only new entries are saved */
if (save_count > 0) { if (save_count > 0) {
if (amdgpu_ras_eeprom_xfer(control, if (amdgpu_ras_eeprom_write(control,
&data->bps[control->num_recs], &data->bps[control->num_recs],
save_count, save_count)) {
true)) {
dev_err(adev->dev, "Failed to save EEPROM table data!"); dev_err(adev->dev, "Failed to save EEPROM table data!");
return -EIO; return -EIO;
} }
...@@ -1850,7 +1849,7 @@ static int amdgpu_ras_load_bad_pages(struct amdgpu_device *adev) ...@@ -1850,7 +1849,7 @@ static int amdgpu_ras_load_bad_pages(struct amdgpu_device *adev)
if (!bps) if (!bps)
return -ENOMEM; return -ENOMEM;
if (amdgpu_ras_eeprom_xfer(control, bps, control->num_recs, false)) { if (amdgpu_ras_eeprom_read(control, bps, control->num_recs)) {
dev_err(adev->dev, "Failed to load EEPROM table records!"); dev_err(adev->dev, "Failed to load EEPROM table records!");
ret = -EIO; ret = -EIO;
goto out; goto out;
......
...@@ -432,9 +432,9 @@ bool amdgpu_ras_eeprom_check_err_threshold(struct amdgpu_device *adev) ...@@ -432,9 +432,9 @@ bool amdgpu_ras_eeprom_check_err_threshold(struct amdgpu_device *adev)
return false; return false;
} }
int amdgpu_ras_eeprom_xfer(struct amdgpu_ras_eeprom_control *control, static int amdgpu_ras_eeprom_xfer(struct amdgpu_ras_eeprom_control *control,
struct eeprom_table_record *records, struct eeprom_table_record *records,
const u32 num, bool write) const u32 num, bool write)
{ {
int i, ret = 0; int i, ret = 0;
unsigned char *buffs, *buff; unsigned char *buffs, *buff;
...@@ -554,6 +554,20 @@ int amdgpu_ras_eeprom_xfer(struct amdgpu_ras_eeprom_control *control, ...@@ -554,6 +554,20 @@ int amdgpu_ras_eeprom_xfer(struct amdgpu_ras_eeprom_control *control,
return ret == num ? 0 : -EIO; return ret == num ? 0 : -EIO;
} }
int amdgpu_ras_eeprom_read(struct amdgpu_ras_eeprom_control *control,
struct eeprom_table_record *records,
const u32 num)
{
return amdgpu_ras_eeprom_xfer(control, records, num, false);
}
int amdgpu_ras_eeprom_write(struct amdgpu_ras_eeprom_control *control,
struct eeprom_table_record *records,
const u32 num)
{
return amdgpu_ras_eeprom_xfer(control, records, num, true);
}
inline uint32_t amdgpu_ras_eeprom_get_record_max_length(void) inline uint32_t amdgpu_ras_eeprom_get_record_max_length(void)
{ {
return RAS_MAX_RECORD_NUM; return RAS_MAX_RECORD_NUM;
...@@ -574,13 +588,13 @@ void amdgpu_ras_eeprom_test(struct amdgpu_ras_eeprom_control *control) ...@@ -574,13 +588,13 @@ void amdgpu_ras_eeprom_test(struct amdgpu_ras_eeprom_control *control)
recs[i].retired_page = i; recs[i].retired_page = i;
} }
if (!amdgpu_ras_eeprom_xfer(control, recs, 1, true)) { if (!amdgpu_ras_eeprom_write(control, recs, 1)) {
memset(recs, 0, sizeof(*recs) * 1); memset(recs, 0, sizeof(*recs) * 1);
control->next_addr = RAS_RECORD_START; control->next_addr = RAS_RECORD_START;
if (!amdgpu_ras_eeprom_xfer(control, recs, 1, false)) { if (!amdgpu_ras_eeprom_read(control, recs)) {
for (i = 0; i < 1; i++) for (i = 0; i < 1; i++)
DRM_INFO("rec.address :0x%llx, rec.retired_page :%llu", DRM_INFO("rec.address :0x%llx, rec.retired_page :%llu",
recs[i].address, recs[i].retired_page); recs[i].address, recs[i].retired_page);
......
...@@ -82,9 +82,11 @@ int amdgpu_ras_eeprom_reset_table(struct amdgpu_ras_eeprom_control *control); ...@@ -82,9 +82,11 @@ int amdgpu_ras_eeprom_reset_table(struct amdgpu_ras_eeprom_control *control);
bool amdgpu_ras_eeprom_check_err_threshold(struct amdgpu_device *adev); bool amdgpu_ras_eeprom_check_err_threshold(struct amdgpu_device *adev);
int amdgpu_ras_eeprom_xfer(struct amdgpu_ras_eeprom_control *control, int amdgpu_ras_eeprom_read(struct amdgpu_ras_eeprom_control *control,
struct eeprom_table_record *records, struct eeprom_table_record *records, const u32 num);
const u32 num, bool write);
int amdgpu_ras_eeprom_write(struct amdgpu_ras_eeprom_control *control,
struct eeprom_table_record *records, const u32 num);
inline uint32_t amdgpu_ras_eeprom_get_record_max_length(void); inline uint32_t amdgpu_ras_eeprom_get_record_max_length(void);
......
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