drm/amdgpu/pm: Fix uninitialized variable warning for smu10
authorjsg <jsg@openbsd.org>
Mon, 9 Sep 2024 09:10:54 +0000 (09:10 +0000)
committerjsg <jsg@openbsd.org>
Mon, 9 Sep 2024 09:10:54 +0000 (09:10 +0000)
From Ma Jun
3e04fa97077da6124b4c2a4f582d1e4aa3d704a0 in linux-6.6.y/6.6.50
336c8f558d596699d3d9814a45600139b2f23f27 in mainline linux

sys/dev/pci/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
sys/dev/pci/drm/amd/pm/powerplay/hwmgr/vega12_hwmgr.c
sys/dev/pci/drm/amd/pm/powerplay/hwmgr/vega20_hwmgr.c

index 40d5f00..037cb63 100644 (file)
@@ -1554,7 +1554,10 @@ static int smu10_set_fine_grain_clk_vol(struct pp_hwmgr *hwmgr,
                }
 
                if (input[0] == 0) {
-                       smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetMinGfxclkFrequency, &min_freq);
+                       ret = smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetMinGfxclkFrequency, &min_freq);
+                       if (ret)
+                               return ret;
+
                        if (input[1] < min_freq) {
                                pr_err("Fine grain setting minimum sclk (%ld) MHz is less than the minimum allowed (%d) MHz\n",
                                        input[1], min_freq);
@@ -1562,7 +1565,10 @@ static int smu10_set_fine_grain_clk_vol(struct pp_hwmgr *hwmgr,
                        }
                        smu10_data->gfx_actual_soft_min_freq = input[1];
                } else if (input[0] == 1) {
-                       smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetMaxGfxclkFrequency, &max_freq);
+                       ret = smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetMaxGfxclkFrequency, &max_freq);
+                       if (ret)
+                               return ret;
+
                        if (input[1] > max_freq) {
                                pr_err("Fine grain setting maximum sclk (%ld) MHz is greater than the maximum allowed (%d) MHz\n",
                                        input[1], max_freq);
@@ -1577,10 +1583,15 @@ static int smu10_set_fine_grain_clk_vol(struct pp_hwmgr *hwmgr,
                        pr_err("Input parameter number not correct\n");
                        return -EINVAL;
                }
-               smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetMinGfxclkFrequency, &min_freq);
-               smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetMaxGfxclkFrequency, &max_freq);
-
+               ret = smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetMinGfxclkFrequency, &min_freq);
+               if (ret)
+                       return ret;
                smu10_data->gfx_actual_soft_min_freq = min_freq;
+
+               ret = smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetMaxGfxclkFrequency, &max_freq);
+               if (ret)
+                       return ret;
+
                smu10_data->gfx_actual_soft_max_freq = max_freq;
        } else if (type == PP_OD_COMMIT_DPM_TABLE) {
                if (size != 0) {
index 79e5e31..dc8140d 100644 (file)
@@ -293,12 +293,12 @@ static int vega12_set_features_platform_caps(struct pp_hwmgr *hwmgr)
        return 0;
 }
 
-static void vega12_init_dpm_defaults(struct pp_hwmgr *hwmgr)
+static int vega12_init_dpm_defaults(struct pp_hwmgr *hwmgr)
 {
        struct vega12_hwmgr *data = (struct vega12_hwmgr *)(hwmgr->backend);
        struct amdgpu_device *adev = hwmgr->adev;
        uint32_t top32, bottom32;
-       int i;
+       int i, ret;
 
        data->smu_features[GNLD_DPM_PREFETCHER].smu_feature_id =
                        FEATURE_DPM_PREFETCHER_BIT;
@@ -364,10 +364,16 @@ static void vega12_init_dpm_defaults(struct pp_hwmgr *hwmgr)
        }
 
        /* Get the SN to turn into a Unique ID */
-       smum_send_msg_to_smc(hwmgr, PPSMC_MSG_ReadSerialNumTop32, &top32);
-       smum_send_msg_to_smc(hwmgr, PPSMC_MSG_ReadSerialNumBottom32, &bottom32);
+       ret = smum_send_msg_to_smc(hwmgr, PPSMC_MSG_ReadSerialNumTop32, &top32);
+       if (ret)
+               return ret;
+       ret = smum_send_msg_to_smc(hwmgr, PPSMC_MSG_ReadSerialNumBottom32, &bottom32);
+       if (ret)
+               return ret;
 
        adev->unique_id = ((uint64_t)bottom32 << 32) | top32;
+
+       return 0;
 }
 
 static int vega12_set_private_data_based_on_pptable(struct pp_hwmgr *hwmgr)
@@ -410,7 +416,11 @@ static int vega12_hwmgr_backend_init(struct pp_hwmgr *hwmgr)
 
        vega12_set_features_platform_caps(hwmgr);
 
-       vega12_init_dpm_defaults(hwmgr);
+       result = vega12_init_dpm_defaults(hwmgr);
+       if (result) {
+               pr_err("%s failed\n", __func__);
+               return result;
+       }
 
        /* Parse pptable data read from VBIOS */
        vega12_set_private_data_based_on_pptable(hwmgr);
index ce9b840..bd144d6 100644 (file)
@@ -328,12 +328,12 @@ static int vega20_set_features_platform_caps(struct pp_hwmgr *hwmgr)
        return 0;
 }
 
-static void vega20_init_dpm_defaults(struct pp_hwmgr *hwmgr)
+static int vega20_init_dpm_defaults(struct pp_hwmgr *hwmgr)
 {
        struct vega20_hwmgr *data = (struct vega20_hwmgr *)(hwmgr->backend);
        struct amdgpu_device *adev = hwmgr->adev;
        uint32_t top32, bottom32;
-       int i;
+       int i, ret;
 
        data->smu_features[GNLD_DPM_PREFETCHER].smu_feature_id =
                        FEATURE_DPM_PREFETCHER_BIT;
@@ -404,10 +404,17 @@ static void vega20_init_dpm_defaults(struct pp_hwmgr *hwmgr)
        }
 
        /* Get the SN to turn into a Unique ID */
-       smum_send_msg_to_smc(hwmgr, PPSMC_MSG_ReadSerialNumTop32, &top32);
-       smum_send_msg_to_smc(hwmgr, PPSMC_MSG_ReadSerialNumBottom32, &bottom32);
+       ret = smum_send_msg_to_smc(hwmgr, PPSMC_MSG_ReadSerialNumTop32, &top32);
+       if (ret)
+               return ret;
+
+       ret = smum_send_msg_to_smc(hwmgr, PPSMC_MSG_ReadSerialNumBottom32, &bottom32);
+       if (ret)
+               return ret;
 
        adev->unique_id = ((uint64_t)bottom32 << 32) | top32;
+
+       return 0;
 }
 
 static int vega20_set_private_data_based_on_pptable(struct pp_hwmgr *hwmgr)
@@ -427,6 +434,7 @@ static int vega20_hwmgr_backend_init(struct pp_hwmgr *hwmgr)
 {
        struct vega20_hwmgr *data;
        struct amdgpu_device *adev = hwmgr->adev;
+       int result;
 
        data = kzalloc(sizeof(struct vega20_hwmgr), GFP_KERNEL);
        if (data == NULL)
@@ -452,8 +460,11 @@ static int vega20_hwmgr_backend_init(struct pp_hwmgr *hwmgr)
 
        vega20_set_features_platform_caps(hwmgr);
 
-       vega20_init_dpm_defaults(hwmgr);
-
+       result = vega20_init_dpm_defaults(hwmgr);
+       if (result) {
+               pr_err("%s failed\n", __func__);
+               return result;
+       }
        /* Parse pptable data read from VBIOS */
        vega20_set_private_data_based_on_pptable(hwmgr);