diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 16 |
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) |