]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amd/display: pause the workload setting in dm
authorKenneth Feng <kenneth.feng@amd.com>
Fri, 28 Mar 2025 02:34:57 +0000 (10:34 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 28 Oct 2025 15:01:08 +0000 (11:01 -0400)
v1:
Pause the workload setting in dm when doinn idle optimization

v2:
Rebase patch to latest kernel code base (kernel 6.16)

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Kenneth Feng <kenneth.feng@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Yang Wang <kevinyang.wang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit bc6d54ac7e7436721a19443265f971f890c13cc5)

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c

index 1ec9d03ad7474ac4c518bdec5bd3cec2bb9ccce9..f08121a2b838a0e31f6ae1d1e06da1310c82eb0a 100644 (file)
@@ -248,6 +248,8 @@ static void amdgpu_dm_crtc_vblank_control_worker(struct work_struct *work)
        struct vblank_control_work *vblank_work =
                container_of(work, struct vblank_control_work, work);
        struct amdgpu_display_manager *dm = vblank_work->dm;
+       struct amdgpu_device *adev = drm_to_adev(dm->ddev);
+       int r;
 
        mutex_lock(&dm->dc_lock);
 
@@ -277,7 +279,16 @@ static void amdgpu_dm_crtc_vblank_control_worker(struct work_struct *work)
 
        if (dm->active_vblank_irq_count == 0) {
                dc_post_update_surfaces_to_stream(dm->dc);
+
+               r = amdgpu_dpm_pause_power_profile(adev, true);
+               if (r)
+                       dev_warn(adev->dev, "failed to set default power profile mode\n");
+
                dc_allow_idle_optimizations(dm->dc, true);
+
+               r = amdgpu_dpm_pause_power_profile(adev, false);
+               if (r)
+                       dev_warn(adev->dev, "failed to restore the power profile mode\n");
        }
 
        mutex_unlock(&dm->dc_lock);