]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amdgpu/jpeg: Hold pg_lock before jpeg poweroff
authorSathishkumar S <sathishkumar.sundararaju@amd.com>
Tue, 5 Aug 2025 15:58:25 +0000 (21:28 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 6 Aug 2025 18:34:50 +0000 (14:34 -0400)
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 <sathishkumar.sundararaju@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c

index 82d58ac7afb011b0a4b72cc3b1fed6b9a8dde1f9..5d5e9ee83a5d63c89085368602aae993ce0f4aac 100644 (file)
@@ -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);
 }