drm/amdgpu/pm: Fix the param type of set_power_profile_mode
authorjsg <jsg@openbsd.org>
Thu, 15 Aug 2024 02:53:57 +0000 (02:53 +0000)
committerjsg <jsg@openbsd.org>
Thu, 15 Aug 2024 02:53:57 +0000 (02:53 +0000)
From Ma Jun
837ab17ceef90a85ddfc918935ed1f19ff60d09b in linux-6.6.y/6.6.46
f683f24093dd94a831085fe0ea8e9dc4c6c1a2d1 in mainline linux

sys/dev/pci/drm/amd/pm/powerplay/amd_powerplay.c
sys/dev/pci/drm/amd/pm/powerplay/hwmgr/pp_psm.c
sys/dev/pci/drm/amd/pm/swsmu/amdgpu_smu.c

index 9e17da0..d5aebe1 100644 (file)
@@ -927,7 +927,7 @@ static int pp_dpm_switch_power_profile(void *handle,
                enum PP_SMC_POWER_PROFILE type, bool en)
 {
        struct pp_hwmgr *hwmgr = handle;
-       long workload;
+       long workload[1];
        uint32_t index;
 
        if (!hwmgr || !hwmgr->pm_en)
@@ -945,12 +945,12 @@ static int pp_dpm_switch_power_profile(void *handle,
                hwmgr->workload_mask &= ~(1 << hwmgr->workload_prority[type]);
                index = fls(hwmgr->workload_mask);
                index = index > 0 && index <= Workload_Policy_Max ? index - 1 : 0;
-               workload = hwmgr->workload_setting[index];
+               workload[0] = hwmgr->workload_setting[index];
        } else {
                hwmgr->workload_mask |= (1 << hwmgr->workload_prority[type]);
                index = fls(hwmgr->workload_mask);
                index = index <= Workload_Policy_Max ? index - 1 : 0;
-               workload = hwmgr->workload_setting[index];
+               workload[0] = hwmgr->workload_setting[index];
        }
 
        if (type == PP_SMC_POWER_PROFILE_COMPUTE &&
@@ -960,7 +960,7 @@ static int pp_dpm_switch_power_profile(void *handle,
        }
 
        if (hwmgr->dpm_level != AMD_DPM_FORCED_LEVEL_MANUAL)
-               hwmgr->hwmgr_func->set_power_profile_mode(hwmgr, &workload, 0);
+               hwmgr->hwmgr_func->set_power_profile_mode(hwmgr, workload, 0);
 
        return 0;
 }
index 1d82940..f4bd8e9 100644 (file)
@@ -269,7 +269,7 @@ int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip_display_set
                                                struct pp_power_state *new_ps)
 {
        uint32_t index;
-       long workload;
+       long workload[1];
 
        if (hwmgr->not_vf) {
                if (!skip_display_settings)
@@ -294,10 +294,10 @@ int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip_display_set
        if (hwmgr->dpm_level != AMD_DPM_FORCED_LEVEL_MANUAL) {
                index = fls(hwmgr->workload_mask);
                index = index > 0 && index <= Workload_Policy_Max ? index - 1 : 0;
-               workload = hwmgr->workload_setting[index];
+               workload[0] = hwmgr->workload_setting[index];
 
-               if (hwmgr->power_profile_mode != workload && hwmgr->hwmgr_func->set_power_profile_mode)
-                       hwmgr->hwmgr_func->set_power_profile_mode(hwmgr, &workload, 0);
+               if (hwmgr->power_profile_mode != workload[0] && hwmgr->hwmgr_func->set_power_profile_mode)
+                       hwmgr->hwmgr_func->set_power_profile_mode(hwmgr, workload, 0);
        }
 
        return 0;
index 7c4a436..d6daf3c 100644 (file)
@@ -1846,7 +1846,7 @@ static int smu_adjust_power_state_dynamic(struct smu_context *smu,
 {
        int ret = 0;
        int index = 0;
-       long workload;
+       long workload[1];
        struct smu_dpm_context *smu_dpm_ctx = &(smu->smu_dpm);
 
        if (!skip_display_settings) {
@@ -1886,10 +1886,10 @@ static int smu_adjust_power_state_dynamic(struct smu_context *smu,
                smu_dpm_ctx->dpm_level != AMD_DPM_FORCED_LEVEL_PERF_DETERMINISM) {
                index = fls(smu->workload_mask);
                index = index > 0 && index <= WORKLOAD_POLICY_MAX ? index - 1 : 0;
-               workload = smu->workload_setting[index];
+               workload[0] = smu->workload_setting[index];
 
-               if (smu->power_profile_mode != workload)
-                       smu_bump_power_profile_mode(smu, &workload, 0);
+               if (smu->power_profile_mode != workload[0])
+                       smu_bump_power_profile_mode(smu, workload, 0);
        }
 
        return ret;
@@ -1939,7 +1939,7 @@ static int smu_switch_power_profile(void *handle,
 {
        struct smu_context *smu = handle;
        struct smu_dpm_context *smu_dpm_ctx = &(smu->smu_dpm);
-       long workload;
+       long workload[1];
        uint32_t index;
 
        if (!smu->pm_enabled || !smu->adev->pm.dpm_enabled)
@@ -1952,17 +1952,17 @@ static int smu_switch_power_profile(void *handle,
                smu->workload_mask &= ~(1 << smu->workload_prority[type]);
                index = fls(smu->workload_mask);
                index = index > 0 && index <= WORKLOAD_POLICY_MAX ? index - 1 : 0;
-               workload = smu->workload_setting[index];
+               workload[0] = smu->workload_setting[index];
        } else {
                smu->workload_mask |= (1 << smu->workload_prority[type]);
                index = fls(smu->workload_mask);
                index = index <= WORKLOAD_POLICY_MAX ? index - 1 : 0;
-               workload = smu->workload_setting[index];
+               workload[0] = smu->workload_setting[index];
        }
 
        if (smu_dpm_ctx->dpm_level != AMD_DPM_FORCED_LEVEL_MANUAL &&
                smu_dpm_ctx->dpm_level != AMD_DPM_FORCED_LEVEL_PERF_DETERMINISM)
-               smu_bump_power_profile_mode(smu, &workload, 0);
+               smu_bump_power_profile_mode(smu, workload, 0);
 
        return 0;
 }