aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
index 88362019d1dd..4b7a076eea9c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
@@ -327,6 +327,18 @@ static ssize_t amdgpu_set_dpm_forced_performance_level(struct device *dev,
327 goto fail; 327 goto fail;
328 } 328 }
329 329
330 if (amdgpu_sriov_vf(adev)) {
331 if (amdgim_is_hwperf(adev) &&
332 adev->virt.ops->force_dpm_level) {
333 mutex_lock(&adev->pm.mutex);
334 adev->virt.ops->force_dpm_level(adev, level);
335 mutex_unlock(&adev->pm.mutex);
336 return count;
337 } else {
338 return -EINVAL;
339 }
340 }
341
330 if (current_level == level) 342 if (current_level == level)
331 return count; 343 return count;
332 344
@@ -790,6 +802,10 @@ static ssize_t amdgpu_get_pp_dpm_sclk(struct device *dev,
790 struct drm_device *ddev = dev_get_drvdata(dev); 802 struct drm_device *ddev = dev_get_drvdata(dev);
791 struct amdgpu_device *adev = ddev->dev_private; 803 struct amdgpu_device *adev = ddev->dev_private;
792 804
805 if (amdgpu_sriov_vf(adev) && amdgim_is_hwperf(adev) &&
806 adev->virt.ops->get_pp_clk)
807 return adev->virt.ops->get_pp_clk(adev, PP_SCLK, buf);
808
793 if (is_support_sw_smu(adev)) 809 if (is_support_sw_smu(adev))
794 return smu_print_clk_levels(&adev->smu, PP_SCLK, buf); 810 return smu_print_clk_levels(&adev->smu, PP_SCLK, buf);
795 else if (adev->powerplay.pp_funcs->print_clock_levels) 811 else if (adev->powerplay.pp_funcs->print_clock_levels)