Re: Clang warning in drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c

From: Nathan Chancellor
Date: Wed Mar 20 2019 - 00:34:57 EST


On Wed, Mar 20, 2019 at 01:31:27AM +0000, Pan, Xinhui wrote:
> these two enumerated types are same for now. both of them might change in the future.
>
> I have not used clang, but would .block_id = (int)head->block fix your warning? If such change is acceptable, I can make one then.
>
> Thanks
> xinhui
>
>
> -----Original Message-----
> From: Nathan Chancellor <natechancellor@xxxxxxxxx>
> Sent: 2019å3æ20æ 8:54
> To: Deucher, Alexander <Alexander.Deucher@xxxxxxx>; Koenig, Christian <Christian.Koenig@xxxxxxx>; Zhou, David(ChunMing) <David1.Zhou@xxxxxxx>; Pan, Xinhui <Xinhui.Pan@xxxxxxx>
> Cc: amd-gfx@xxxxxxxxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; clang-built-linux@xxxxxxxxxxxxxxxx
> Subject: Clang warning in drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
>
> Hi all,
>
> The introduction of this file in commit dbd249c24427 ("drm/amdgpu: add amdgpu_ras.c to support ras (v2)") introduces the following Clang
> warnings:
>
> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:544:23: warning: implicit conversion from enumeration type 'enum amdgpu_ras_block' to different enumeration type 'enum ta_ras_block' [-Wenum-conversion]
> .block_id = head->block,
> ~~~~~~^~~~~
> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:545:24: warning: implicit conversion from enumeration type 'enum amdgpu_ras_error_type' to different enumeration type 'enum ta_ras_error_type' [-Wenum-conversion]
> .error_type = head->type,
> ~~~~~~^~~~
> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:549:23: warning: implicit conversion from enumeration type 'enum amdgpu_ras_block' to different enumeration type 'enum ta_ras_block' [-Wenum-conversion]
> .block_id = head->block,
> ~~~~~~^~~~~
> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:550:24: warning: implicit conversion from enumeration type 'enum amdgpu_ras_error_type' to different enumeration type 'enum ta_ras_error_type' [-Wenum-conversion]
> .error_type = head->type,
> ~~~~~~^~~~
> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:650:26: warning: implicit conversion from enumeration type 'enum amdgpu_ras_block' to different enumeration type 'enum ta_ras_block' [-Wenum-conversion]
> .block_id = info->head.block,
> ~~~~~~~~~~~^~~~~
> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:651:35: warning: implicit conversion from enumeration type 'enum amdgpu_ras_error_type' to different enumeration type 'enum ta_ras_error_type' [-Wenum-conversion]
> .inject_error_type = info->head.type,
> ~~~~~~~~~~~^~~~
> 6 warnings generated.
>
> Normally, I would sent a fix for this myself but I am not entirely sure why these two enumerated types exist when one would do since they have the same values minus the prefix. In fact, the ta_ras_{block,error_type} values are never used aside from being defined. Some clarification would be appreciated.
>
> Thank you,
> Nathan

Hi Xinhui,

Yes, explicitly casting these six spots to int would resolve this
warning.

Thank you for the quick response!
Nathan