mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 15:12:13 +02:00
drm/amd/pm: use pm_runtime_resume_and_get
Using pm_runtime_resume_and_get over pm_runtime_get_sync is recommended. Tested-by: Mario Limonciello <mario.limonciello@amd.com> Reviewed-by: Kenneth Feng <kenneth.feng@amd.com> Signed-off-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
b0fca32755
commit
ded57e4951
|
|
@ -145,11 +145,9 @@ static ssize_t amdgpu_get_power_dpm_state(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
amdgpu_dpm_get_current_power_state(adev, &pm);
|
||||
|
||||
|
|
@ -185,11 +183,9 @@ static ssize_t amdgpu_set_power_dpm_state(struct device *dev,
|
|||
else
|
||||
return -EINVAL;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
amdgpu_dpm_set_power_state(adev, state);
|
||||
|
||||
|
|
@ -273,11 +269,9 @@ static ssize_t amdgpu_get_power_dpm_force_performance_level(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
level = amdgpu_dpm_get_performance_level(adev);
|
||||
|
||||
|
|
@ -336,11 +330,9 @@ static ssize_t amdgpu_set_power_dpm_force_performance_level(struct device *dev,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
mutex_lock(&adev->pm.stable_pstate_ctx_lock);
|
||||
if (amdgpu_dpm_force_performance_level(adev, level)) {
|
||||
|
|
@ -374,11 +366,9 @@ static ssize_t amdgpu_get_pp_num_states(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (amdgpu_dpm_get_pp_num_states(adev, &data))
|
||||
memset(&data, 0, sizeof(data));
|
||||
|
|
@ -412,11 +402,9 @@ static ssize_t amdgpu_get_pp_cur_state(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
amdgpu_dpm_get_current_power_state(adev, &pm);
|
||||
|
||||
|
|
@ -485,11 +473,9 @@ static ssize_t amdgpu_set_pp_force_state(struct device *dev,
|
|||
|
||||
idx = array_index_nospec(idx, ARRAY_SIZE(data.states));
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = amdgpu_dpm_get_pp_num_states(adev, &data);
|
||||
if (ret)
|
||||
|
|
@ -544,11 +530,9 @@ static ssize_t amdgpu_get_pp_table(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
size = amdgpu_dpm_get_pp_table(adev, &table);
|
||||
|
||||
|
|
@ -580,11 +564,9 @@ static ssize_t amdgpu_set_pp_table(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = amdgpu_dpm_set_pp_table(adev, buf, count);
|
||||
|
||||
|
|
@ -808,11 +790,9 @@ static ssize_t amdgpu_set_pp_od_clk_voltage(struct device *dev,
|
|||
tmp_str++;
|
||||
}
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (amdgpu_dpm_set_fine_grain_clk_vol(adev,
|
||||
type,
|
||||
|
|
@ -865,11 +845,9 @@ static ssize_t amdgpu_get_pp_od_clk_voltage(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
for (clk_index = 0 ; clk_index < 6 ; clk_index++) {
|
||||
ret = amdgpu_dpm_emit_clock_levels(adev, od_clocks[clk_index], buf, &size);
|
||||
|
|
@ -929,11 +907,9 @@ static ssize_t amdgpu_set_pp_features(struct device *dev,
|
|||
if (ret)
|
||||
return -EINVAL;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = amdgpu_dpm_set_ppfeature_status(adev, featuremask);
|
||||
|
||||
|
|
@ -960,11 +936,9 @@ static ssize_t amdgpu_get_pp_features(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
size = amdgpu_dpm_get_ppfeature_status(adev, buf);
|
||||
if (size <= 0)
|
||||
|
|
@ -1029,11 +1003,9 @@ static ssize_t amdgpu_get_pp_dpm_clock(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = amdgpu_dpm_emit_clock_levels(adev, type, buf, &size);
|
||||
if (ret == -ENOENT)
|
||||
|
|
@ -1102,11 +1074,9 @@ static ssize_t amdgpu_set_pp_dpm_clock(struct device *dev,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = amdgpu_dpm_force_clock_level(adev, type, mask);
|
||||
|
||||
|
|
@ -1283,11 +1253,9 @@ static ssize_t amdgpu_get_pp_sclk_od(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
value = amdgpu_dpm_get_sclk_od(adev);
|
||||
|
||||
|
|
@ -1317,11 +1285,9 @@ static ssize_t amdgpu_set_pp_sclk_od(struct device *dev,
|
|||
if (ret)
|
||||
return -EINVAL;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
amdgpu_dpm_set_sclk_od(adev, (uint32_t)value);
|
||||
|
||||
|
|
@ -1345,11 +1311,9 @@ static ssize_t amdgpu_get_pp_mclk_od(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
value = amdgpu_dpm_get_mclk_od(adev);
|
||||
|
||||
|
|
@ -1379,11 +1343,9 @@ static ssize_t amdgpu_set_pp_mclk_od(struct device *dev,
|
|||
if (ret)
|
||||
return -EINVAL;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
amdgpu_dpm_set_mclk_od(adev, (uint32_t)value);
|
||||
|
||||
|
|
@ -1427,11 +1389,9 @@ static ssize_t amdgpu_get_pp_power_profile_mode(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
size = amdgpu_dpm_get_power_profile_mode(adev, buf);
|
||||
if (size <= 0)
|
||||
|
|
@ -1492,11 +1452,9 @@ static ssize_t amdgpu_set_pp_power_profile_mode(struct device *dev,
|
|||
}
|
||||
parameter[parameter_size] = profile_mode;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = amdgpu_dpm_set_power_profile_mode(adev, parameter, parameter_size);
|
||||
|
||||
|
|
@ -1520,11 +1478,9 @@ static int amdgpu_hwmon_get_sensor_generic(struct amdgpu_device *adev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
r = pm_runtime_get_sync(adev_to_drm(adev)->dev);
|
||||
if (r < 0) {
|
||||
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
|
||||
r = pm_runtime_resume_and_get(adev->dev);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
/* get the sensor value */
|
||||
r = amdgpu_dpm_read_sensor(adev, sensor, query, &size);
|
||||
|
|
@ -1639,11 +1595,9 @@ static ssize_t amdgpu_get_pcie_bw(struct device *dev,
|
|||
if (!adev->asic_funcs->get_pcie_usage)
|
||||
return -ENODATA;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
amdgpu_asic_get_pcie_usage(adev, &count0, &count1);
|
||||
|
||||
|
|
@ -1770,11 +1724,9 @@ static ssize_t amdgpu_get_apu_thermal_cap(struct device *dev,
|
|||
struct drm_device *ddev = dev_get_drvdata(dev);
|
||||
struct amdgpu_device *adev = drm_to_adev(ddev);
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = amdgpu_dpm_get_apu_thermal_limit(adev, &limit);
|
||||
if (!ret)
|
||||
|
|
@ -1807,11 +1759,9 @@ static ssize_t amdgpu_set_apu_thermal_cap(struct device *dev,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = amdgpu_dpm_set_apu_thermal_limit(adev, value);
|
||||
if (ret) {
|
||||
|
|
@ -1851,11 +1801,9 @@ static ssize_t amdgpu_get_pm_metrics(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
size = amdgpu_dpm_get_pm_metrics(adev, buf, PAGE_SIZE);
|
||||
|
||||
|
|
@ -1892,11 +1840,9 @@ static ssize_t amdgpu_get_gpu_metrics(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
size = amdgpu_dpm_get_gpu_metrics(adev, &gpu_metrics);
|
||||
if (size <= 0)
|
||||
|
|
@ -2010,11 +1956,9 @@ static ssize_t amdgpu_set_smartshift_bias(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
r = pm_runtime_get_sync(ddev->dev);
|
||||
if (r < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
r = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
r = kstrtoint(buf, 10, &bias);
|
||||
if (r)
|
||||
|
|
@ -2337,11 +2281,9 @@ static ssize_t amdgpu_set_pm_policy_attr(struct device *dev,
|
|||
policy_attr =
|
||||
container_of(attr, struct amdgpu_pm_policy_attr, dev_attr);
|
||||
|
||||
ret = pm_runtime_get_sync(ddev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(ddev->dev);
|
||||
ret = pm_runtime_resume_and_get(ddev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = amdgpu_dpm_set_pm_policy(adev, policy_attr->id, val);
|
||||
|
||||
|
|
@ -2774,11 +2716,9 @@ static ssize_t amdgpu_hwmon_get_pwm1_enable(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(adev_to_drm(adev)->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
|
||||
ret = pm_runtime_resume_and_get(adev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = amdgpu_dpm_get_fan_control_mode(adev, &pwm_mode);
|
||||
|
||||
|
|
@ -2819,11 +2759,9 @@ static ssize_t amdgpu_hwmon_set_pwm1_enable(struct device *dev,
|
|||
else
|
||||
return -EINVAL;
|
||||
|
||||
ret = pm_runtime_get_sync(adev_to_drm(adev)->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
|
||||
ret = pm_runtime_resume_and_get(adev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = amdgpu_dpm_set_fan_control_mode(adev, pwm_mode);
|
||||
|
||||
|
|
@ -2868,11 +2806,9 @@ static ssize_t amdgpu_hwmon_set_pwm1(struct device *dev,
|
|||
if (err)
|
||||
return err;
|
||||
|
||||
err = pm_runtime_get_sync(adev_to_drm(adev)->dev);
|
||||
if (err < 0) {
|
||||
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
|
||||
err = pm_runtime_resume_and_get(adev->dev);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
err = amdgpu_dpm_get_fan_control_mode(adev, &pwm_mode);
|
||||
if (err)
|
||||
|
|
@ -2909,11 +2845,9 @@ static ssize_t amdgpu_hwmon_get_pwm1(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
err = pm_runtime_get_sync(adev_to_drm(adev)->dev);
|
||||
if (err < 0) {
|
||||
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
|
||||
err = pm_runtime_resume_and_get(adev->dev);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
err = amdgpu_dpm_get_fan_speed_pwm(adev, &speed);
|
||||
|
||||
|
|
@ -2939,11 +2873,9 @@ static ssize_t amdgpu_hwmon_get_fan1_input(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
err = pm_runtime_get_sync(adev_to_drm(adev)->dev);
|
||||
if (err < 0) {
|
||||
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
|
||||
err = pm_runtime_resume_and_get(adev->dev);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
err = amdgpu_dpm_get_fan_speed_rpm(adev, &speed);
|
||||
|
||||
|
|
@ -3003,11 +2935,9 @@ static ssize_t amdgpu_hwmon_get_fan1_target(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
err = pm_runtime_get_sync(adev_to_drm(adev)->dev);
|
||||
if (err < 0) {
|
||||
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
|
||||
err = pm_runtime_resume_and_get(adev->dev);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
err = amdgpu_dpm_get_fan_speed_rpm(adev, &rpm);
|
||||
|
||||
|
|
@ -3038,11 +2968,9 @@ static ssize_t amdgpu_hwmon_set_fan1_target(struct device *dev,
|
|||
if (err)
|
||||
return err;
|
||||
|
||||
err = pm_runtime_get_sync(adev_to_drm(adev)->dev);
|
||||
if (err < 0) {
|
||||
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
|
||||
err = pm_runtime_resume_and_get(adev->dev);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
err = amdgpu_dpm_get_fan_control_mode(adev, &pwm_mode);
|
||||
if (err)
|
||||
|
|
@ -3078,11 +3006,9 @@ static ssize_t amdgpu_hwmon_get_fan1_enable(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(adev_to_drm(adev)->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
|
||||
ret = pm_runtime_resume_and_get(adev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = amdgpu_dpm_get_fan_control_mode(adev, &pwm_mode);
|
||||
|
||||
|
|
@ -3121,11 +3047,9 @@ static ssize_t amdgpu_hwmon_set_fan1_enable(struct device *dev,
|
|||
else
|
||||
return -EINVAL;
|
||||
|
||||
err = pm_runtime_get_sync(adev_to_drm(adev)->dev);
|
||||
if (err < 0) {
|
||||
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
|
||||
err = pm_runtime_resume_and_get(adev->dev);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
err = amdgpu_dpm_set_fan_control_mode(adev, pwm_mode);
|
||||
|
||||
|
|
@ -3250,11 +3174,9 @@ static ssize_t amdgpu_hwmon_show_power_cap_generic(struct device *dev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
r = pm_runtime_get_sync(adev_to_drm(adev)->dev);
|
||||
if (r < 0) {
|
||||
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
|
||||
r = pm_runtime_resume_and_get(adev->dev);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
r = amdgpu_dpm_get_power_limit(adev, &limit,
|
||||
pp_limit_level, power_type);
|
||||
|
|
@ -3341,11 +3263,9 @@ static ssize_t amdgpu_hwmon_set_power_cap(struct device *dev,
|
|||
value = value / 1000000; /* convert to Watt */
|
||||
value |= limit_type << 24;
|
||||
|
||||
err = pm_runtime_get_sync(adev_to_drm(adev)->dev);
|
||||
if (err < 0) {
|
||||
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
|
||||
err = pm_runtime_resume_and_get(adev->dev);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
err = amdgpu_dpm_set_power_limit(adev, value);
|
||||
|
||||
|
|
@ -3789,11 +3709,9 @@ static int amdgpu_retrieve_od_settings(struct amdgpu_device *adev,
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
ret = pm_runtime_get_sync(adev->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_autosuspend(adev->dev);
|
||||
ret = pm_runtime_resume_and_get(adev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
size = amdgpu_dpm_print_clock_levels(adev, od_type, buf);
|
||||
if (size == 0)
|
||||
|
|
@ -3881,23 +3799,23 @@ amdgpu_distribute_custom_od_settings(struct amdgpu_device *adev,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = pm_runtime_get_sync(adev->dev);
|
||||
ret = pm_runtime_resume_and_get(adev->dev);
|
||||
if (ret < 0)
|
||||
goto err_out0;
|
||||
return ret;
|
||||
|
||||
ret = amdgpu_dpm_odn_edit_dpm_table(adev,
|
||||
cmd_type,
|
||||
parameter,
|
||||
parameter_size);
|
||||
if (ret)
|
||||
goto err_out1;
|
||||
goto err_out;
|
||||
|
||||
if (cmd_type == PP_OD_COMMIT_DPM_TABLE) {
|
||||
ret = amdgpu_dpm_dispatch_task(adev,
|
||||
AMD_PP_TASK_READJUST_POWER_STATE,
|
||||
NULL);
|
||||
if (ret)
|
||||
goto err_out1;
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
pm_runtime_mark_last_busy(adev->dev);
|
||||
|
|
@ -3905,9 +3823,8 @@ amdgpu_distribute_custom_od_settings(struct amdgpu_device *adev,
|
|||
|
||||
return count;
|
||||
|
||||
err_out1:
|
||||
err_out:
|
||||
pm_runtime_mark_last_busy(adev->dev);
|
||||
err_out0:
|
||||
pm_runtime_put_autosuspend(adev->dev);
|
||||
|
||||
return ret;
|
||||
|
|
@ -4760,11 +4677,9 @@ static int amdgpu_debugfs_pm_info_show(struct seq_file *m, void *unused)
|
|||
if (adev->in_suspend && !adev->in_runpm)
|
||||
return -EPERM;
|
||||
|
||||
r = pm_runtime_get_sync(dev->dev);
|
||||
if (r < 0) {
|
||||
pm_runtime_put_autosuspend(dev->dev);
|
||||
r = pm_runtime_resume_and_get(dev->dev);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
if (amdgpu_dpm_debugfs_print_current_performance_level(adev, m)) {
|
||||
r = amdgpu_debugfs_pm_info_pp(m, adev);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user