[AMD Official Use Only - General] Thanks for catch it, will update the patch.
Tao > -----Original Message----- > From: Wang, Yang(Kevin) <kevinyang.w...@amd.com> > Sent: Tuesday, September 19, 2023 11:34 PM > To: Zhou1, Tao <tao.zh...@amd.com>; amd-gfx@lists.freedesktop.org; Zhang, > Hawking <hawking.zh...@amd.com>; Yang, Stanley <stanley.y...@amd.com>; > Li, Candice <candice...@amd.com>; Chai, Thomas <yipeng.c...@amd.com> > Subject: RE: [PATCH 3/3] drm/amdgpu: change if condition for bad channel > bitmap update > > [AMD Official Use Only - General] > > Hi Tao, > > Based on your description, I think you should use BITS_PER_TYPE() instead of > sizeof(), right? > > Best Regards, > Kevin > > -----Original Message----- > From: Zhou1, Tao <tao.zh...@amd.com> > Sent: Tuesday, September 19, 2023 6:10 PM > To: amd-gfx@lists.freedesktop.org; Zhang, Hawking <hawking.zh...@amd.com>; > Yang, Stanley <stanley.y...@amd.com>; Li, Candice <candice...@amd.com>; > Wang, Yang(Kevin) <kevinyang.w...@amd.com>; Chai, Thomas > <yipeng.c...@amd.com> > Cc: Zhou1, Tao <tao.zh...@amd.com> > Subject: [PATCH 3/3] drm/amdgpu: change if condition for bad channel bitmap > update > > The amdgpu_ras_eeprom_control.bad_channel_bitmap is u32 type, but the > channel index could be larger than 32. For the ASICs whose channel number is > more than 32, the amdgpu_dpm_send_hbm_bad_channel_flag > interface is not supported, so we simply bypass channel bitmap update under > this > condition. > > Signed-off-by: Tao Zhou <tao.zh...@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c > index 8ced4be784e0..1c4433f22f4b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c > @@ -616,7 +616,8 @@ amdgpu_ras_eeprom_append_table(struct > amdgpu_ras_eeprom_control *control, > __encode_table_record_to_buf(control, &record[i], pp); > > /* update bad channel bitmap */ > - if (!(control->bad_channel_bitmap & (1 << > record[i].mem_channel))) { > + if ((record[i].mem_channel < > sizeof(control->bad_channel_bitmap)) && > + !(control->bad_channel_bitmap & (1 << > record[i].mem_channel))) { > control->bad_channel_bitmap |= 1 << > record[i].mem_channel; > con->update_channel_flag = true; > } > @@ -969,7 +970,8 @@ int amdgpu_ras_eeprom_read(struct > amdgpu_ras_eeprom_control *control, > __decode_table_record_from_buf(control, &record[i], pp); > > /* update bad channel bitmap */ > - if (!(control->bad_channel_bitmap & (1 << > record[i].mem_channel))) { > + if ((record[i].mem_channel < > sizeof(control->bad_channel_bitmap)) && > + !(control->bad_channel_bitmap & (1 << > record[i].mem_channel))) { > control->bad_channel_bitmap |= 1 << > record[i].mem_channel; > con->update_channel_flag = true; > } > -- > 2.35.1 >