Acquire jpeg_pg_lock before changes to jpeg power state
and release it after power off from idle work handler.

Signed-off-by: Sathishkumar S <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c
index 82d58ac7afb0..5d5e9ee83a5d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c
@@ -121,10 +121,12 @@ static void amdgpu_jpeg_idle_work_handler(struct 
work_struct *work)
                        fences += 
amdgpu_fence_count_emitted(&adev->jpeg.inst[i].ring_dec[j]);
        }
 
-       if (!fences && !atomic_read(&adev->jpeg.total_submission_cnt))
+       if (!fences && !atomic_read(&adev->jpeg.total_submission_cnt)) {
+               mutex_lock(&adev->jpeg.jpeg_pg_lock);
                amdgpu_device_ip_set_powergating_state(adev, 
AMD_IP_BLOCK_TYPE_JPEG,
                                                       AMD_PG_STATE_GATE);
-       else
+               mutex_unlock(&adev->jpeg.jpeg_pg_lock);
+       } else
                schedule_delayed_work(&adev->jpeg.idle_work, JPEG_IDLE_TIMEOUT);
 }
 
-- 
2.48.1

Reply via email to