[AMD Official Use Only - General]

Series is

Reviewed-by: Hawking Zhang <hawking.zh...@amd.com>

Regards,
Hawking
-----Original Message-----
From: Zhou1, Tao <tao.zh...@amd.com>
Sent: Wednesday, September 20, 2023 16:37
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.

v2: replace sizeof with BITS_PER_TYPE, we should check bit number instead of 
byte number.

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..c60d2f79eeef 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 < 
BITS_PER_TYPE(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 < 
BITS_PER_TYPE(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

Reply via email to