mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
drm/amd/pm: hide pp_table sysfs on APUs
APUs use firmware-owned DPM tables and do not support replacement through
pp_table. Generic callbacks can nevertheless expose the sysfs file and
accept an upload before resetting the power management stack.
Treat pp_table as unsupported on APUs. Use the same platform check in the
get and set paths to hide the file and reject uploads.
Fixes: 289921b03f ("drm/amd/powerplay: implement sysfs of pp_table for smu11 (v2)")
Signed-off-by: Yang Wang <kevinyang.wang@amd.com>
Reviewed-by: Kenneth Feng <kenneth.feng@amd.com>
Reviewed-by: Asad Kamal <asad.kamal@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -1183,6 +1183,13 @@ int amdgpu_dpm_dispatch_task(struct amdgpu_device *adev,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static bool amdgpu_dpm_is_pp_table_allowed(struct amdgpu_device *adev)
|
||||
{
|
||||
return !amdgpu_sriov_vf(adev) &&
|
||||
!(adev->flags & AMD_IS_APU) &&
|
||||
!adev->scpm_enabled;
|
||||
}
|
||||
|
||||
int amdgpu_dpm_get_pp_table(struct amdgpu_device *adev, char *table,
|
||||
size_t size)
|
||||
{
|
||||
@@ -1193,7 +1200,8 @@ int amdgpu_dpm_get_pp_table(struct amdgpu_device *adev, char *table,
|
||||
if ((!table && size) || (table && !size))
|
||||
return -EINVAL;
|
||||
|
||||
if (amdgpu_sriov_vf(adev) || !pp_funcs->get_pp_table || adev->scpm_enabled)
|
||||
if (!amdgpu_dpm_is_pp_table_allowed(adev) ||
|
||||
!pp_funcs->get_pp_table)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
mutex_lock(&adev->pm.mutex);
|
||||
@@ -1717,7 +1725,8 @@ int amdgpu_dpm_set_pp_table(struct amdgpu_device *adev,
|
||||
if (!buf || !size)
|
||||
return -EINVAL;
|
||||
|
||||
if (amdgpu_sriov_vf(adev) || !pp_funcs->set_pp_table || adev->scpm_enabled)
|
||||
if (!amdgpu_dpm_is_pp_table_allowed(adev) ||
|
||||
!pp_funcs->set_pp_table)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
mutex_lock(&adev->pm.mutex);
|
||||
|
||||
Reference in New Issue
Block a user