The changes in edad8312cbbf9a33c86873fc4093664f150dd5c1 introduced an issue with the sysfs interface for pp_od_clk_voltage. It overwrites the return value to 0 when it calls another function, then returns 0. The intended behavior is that a positive return value indicates the number of bytes from the buffer that you processed in that call.
With the 0 return value, clients would submit the same value to be written over and over again, resulting in an infinite loop. This is resolved by returning the count of bytes read (in this case the whole message), when the desired return is 0 (success). Fixes: edad8312cbbf ("drm/amdgpu: fix system hang issue during GPU") Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1245 Signed-off-by: Matt Coffin <mcoffi...@gmail.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c index 1705e328c6fc..f00c7ed361d4 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c @@ -937,7 +937,11 @@ static ssize_t amdgpu_set_pp_od_clk_voltage(struct device *dev, pro_end: up_read(&adev->reset_sem); - return ret; + if (ret) { + return ret; + } else { + return count; + } } static ssize_t amdgpu_get_pp_od_clk_voltage(struct device *dev, -- 2.28.0 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx