On Tue, Jun 8, 2021 at 5:40 PM Luben Tuikov <luben.tuikov@xxxxxxx> wrote: > > Fix the size of the EEPROM from 256000 bytes > to 262144 bytes (256 KiB). > > Fix a couple or wrap around bugs. If a valid > value/address is 0 <= addr < size, the inverse of > this inequality (barring negative values which > make no sense here) is addr >= size. Fix this in > the RAS code. > > Cc: Jean Delvare <jdelvare@xxxxxxx> > Cc: Alexander Deucher <Alexander.Deucher@xxxxxxx> > Cc: Andrey Grodzovsky <Andrey.Grodzovsky@xxxxxxx> > Cc: Lijo Lazar <Lijo.Lazar@xxxxxxx> > Cc: Stanley Yang <Stanley.Yang@xxxxxxx> > Cc: Hawking Zhang <Hawking.Zhang@xxxxxxx> > Signed-off-by: Luben Tuikov <luben.tuikov@xxxxxxx> Acked-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > .../gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c | 20 +++++++++---------- > 1 file changed, 10 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c > index f316fb11b16d9e..3ef38b90fc3a83 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c > @@ -52,12 +52,11 @@ > /* Bad GPU tag ‘BADG’ */ > #define EEPROM_TABLE_HDR_BAD 0x42414447 > > -/* Assume 2 Mbit size */ > -#define EEPROM_SIZE_BYTES 256000 > -#define EEPROM_PAGE__SIZE_BYTES 256 > -#define EEPROM_HDR_START 0 > -#define EEPROM_RECORD_START (EEPROM_HDR_START + EEPROM_TABLE_HEADER_SIZE) > -#define EEPROM_MAX_RECORD_NUM ((EEPROM_SIZE_BYTES - EEPROM_TABLE_HEADER_SIZE) / EEPROM_TABLE_RECORD_SIZE) > +/* Assume 2-Mbit size */ > +#define EEPROM_SIZE_BYTES (256 * 1024) > +#define EEPROM_HDR_START 0 > +#define EEPROM_RECORD_START (EEPROM_HDR_START + EEPROM_TABLE_HEADER_SIZE) > +#define EEPROM_MAX_RECORD_NUM ((EEPROM_SIZE_BYTES - EEPROM_TABLE_HEADER_SIZE) / EEPROM_TABLE_RECORD_SIZE) > > #define to_amdgpu_device(x) (container_of(x, struct amdgpu_ras, eeprom_control))->adev > > @@ -402,9 +401,8 @@ static uint32_t __correct_eeprom_dest_address(uint32_t curr_address) > uint32_t next_address = curr_address + EEPROM_TABLE_RECORD_SIZE; > > /* When all EEPROM memory used jump back to 0 address */ > - if (next_address > EEPROM_SIZE_BYTES) { > - DRM_INFO("Reached end of EEPROM memory, jumping to 0 " > - "and overriding old record"); > + if (next_address >= EEPROM_SIZE_BYTES) { > + DRM_INFO("Reached end of EEPROM memory, wrap around to 0."); > return EEPROM_RECORD_START; > } > > @@ -476,7 +474,9 @@ int amdgpu_ras_eeprom_process_recods(struct amdgpu_ras_eeprom_control *control, > } > > /* In case of overflow just start from beginning to not lose newest records */ > - if (write && (control->next_addr + EEPROM_TABLE_RECORD_SIZE * num > EEPROM_SIZE_BYTES)) > + if (write && > + (control->next_addr + > + EEPROM_TABLE_RECORD_SIZE * num >= EEPROM_SIZE_BYTES)) > control->next_addr = EEPROM_RECORD_START; > > /* > -- > 2.32.0 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx