Commit 50f29ead authored by Kenneth Feng's avatar Kenneth Feng Committed by Alex Deucher
Browse files

drm/amd/display: pause the workload setting in dm



Pause the workload setting in dm when doing idle optimization

Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarKenneth Feng <kenneth.feng@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
(cherry picked from commit b23f81c4)
parent c81a3cee
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -246,6 +246,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);

@@ -273,8 +275,15 @@ static void amdgpu_dm_crtc_vblank_control_worker(struct work_struct *work)
			vblank_work->acrtc->dm_irq_params.allow_sr_entry);
	}

	if (dm->active_vblank_irq_count == 0)
	if (dm->active_vblank_irq_count == 0) {
		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);