[PATCH] drm/amd/powerplay: Fix uninitialized warning in arcturus ppt driver
StDenis, Tom
Tom.StDenis at amd.com
Wed Aug 12 12:43:40 UTC 2020
[AMD Official Use Only - Internal Distribution Only]
Possibly, but since the arcturus_get_smu_metrics_data() can error out we should check that return value no?
(also setting *value to 0 avoids this bug in the future...).
Tom
________________________________________
From: Das, Nirmoy <Nirmoy.Das at amd.com>
Sent: Wednesday, August 12, 2020 08:40
To: StDenis, Tom; amd-gfx at lists.freedesktop.org
Subject: Re: [PATCH] drm/amd/powerplay: Fix uninitialized warning in arcturus ppt driver
On 8/12/20 2:20 PM, Tom St Denis wrote:
> Fixes:
>
> CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_mst_types.o
> drivers/gpu/drm/amd/amdgpu/../powerplay/arcturus_ppt.c: In function ‘arcturus_log_thermal_throttling_event’:
> drivers/gpu/drm/amd/amdgpu/../powerplay/arcturus_ppt.c:2223:24: warning: ‘throttler_status’ may be used uninitialized in this function [-Wmaybe-uninitialized]
> 2223 | if (throttler_status & logging_label[throttler_idx].feature_mask) {
>
> by making arcturus_get_smu_metrics_data() assign a default value
> (of zero) before any possible return point as well as simply error
> out of arcturus_log_thermal_throttling_event() if it fails.
>
> Signed-off-by: Tom St Denis <tom.stdenis at amd.com>
> ---
> drivers/gpu/drm/amd/powerplay/arcturus_ppt.c | 12 ++++++++++--
> 1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c b/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c
> index 8b1025dc54fd..78f7ec95e4f5 100644
> --- a/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c
> +++ b/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c
> @@ -551,6 +551,9 @@ static int arcturus_get_smu_metrics_data(struct smu_context *smu,
>
> mutex_lock(&smu->metrics_lock);
>
> + // assign default value
> + *value = 0;
> +
> ret = smu_cmn_get_metrics_table_locked(smu,
> NULL,
> false);
> @@ -2208,15 +2211,20 @@ static const struct throttling_logging_label {
> };
> static void arcturus_log_thermal_throttling_event(struct smu_context *smu)
> {
> - int throttler_idx, throtting_events = 0, buf_idx = 0;
> + int throttler_idx, throtting_events = 0, buf_idx = 0, ret;
> struct amdgpu_device *adev = smu->adev;
> uint32_t throttler_status;
I think initializing throttler_status here should resolve the warning.
> char log_buf[256];
>
> - arcturus_get_smu_metrics_data(smu,
> + ret = arcturus_get_smu_metrics_data(smu,
> METRICS_THROTTLER_STATUS,
> &throttler_status);
>
> + if (ret) {
> + dev_err(adev->dev, "Could not read from arcturus_get_smu_metrics_data()\n");
> + return;
> + }
> +
> memset(log_buf, 0, sizeof(log_buf));
> for (throttler_idx = 0; throttler_idx < ARRAY_SIZE(logging_label);
> throttler_idx++) {
More information about the amd-gfx
mailing list