Commit 1b7ac448 authored by Aurabindo Pillai's avatar Aurabindo Pillai Committed by Alex Deucher
Browse files

drm/amd/display: Fix idle optimizations entry log



[Why & How]
Whether we really enter idle optimizations are decided within DC.
Printing into dmesg before calling the DC API gives an incorrect
indication that we are entering idle optimization in cases where its
disabled manually.

To fix this, remove the print in DM and add them in DC

Reviewed-by: default avatarAlvin Lee <alvin.lee2@amd.com>
Signed-off-by: default avatarAurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: default avatarTom Chung <chiahsuan.chung@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 7ef6f3ae
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -252,10 +252,8 @@ static void amdgpu_dm_crtc_vblank_control_worker(struct work_struct *work)
	else if (dm->active_vblank_irq_count)
		dm->active_vblank_irq_count--;

	if (dm->active_vblank_irq_count > 0) {
		DRM_DEBUG_KMS("Allow idle optimizations (MALL): false\n");
	if (dm->active_vblank_irq_count > 0)
		dc_allow_idle_optimizations(dm->dc, false);
	}

	/*
	 * Control PSR based on vblank requirements from OS
@@ -274,10 +272,8 @@ static void amdgpu_dm_crtc_vblank_control_worker(struct work_struct *work)
			vblank_work->stream->link->replay_settings.replay_feature_enabled);
	}

	if (dm->active_vblank_irq_count == 0) {
		DRM_DEBUG_KMS("Allow idle optimizations (MALL): true\n");
	if (dm->active_vblank_irq_count == 0)
		dc_allow_idle_optimizations(dm->dc, true);
	}

	mutex_unlock(&dm->dc_lock);

+6 −2
Original line number Diff line number Diff line
@@ -5429,8 +5429,10 @@ bool dc_set_ips_disable(struct dc *dc, unsigned int disable_ips)

void dc_allow_idle_optimizations_internal(struct dc *dc, bool allow, char const *caller_name)
{
	if (dc->debug.disable_idle_power_optimizations)
	if (dc->debug.disable_idle_power_optimizations) {
		DC_LOG_DEBUG("%s: disabled\n", __func__);
		return;
	}

	if (allow != dc->idle_optimizations_allowed)
		DC_LOG_IPS("%s: allow_idle old=%d new=%d (caller=%s)\n", __func__,
@@ -5447,8 +5449,10 @@ void dc_allow_idle_optimizations_internal(struct dc *dc, bool allow, char const
		return;

	if (dc->hwss.apply_idle_power_optimizations && dc->clk_mgr != NULL &&
	    dc->hwss.apply_idle_power_optimizations(dc, allow))
	    dc->hwss.apply_idle_power_optimizations(dc, allow)) {
		dc->idle_optimizations_allowed = allow;
		DC_LOG_DEBUG("%s: %s\n", __func__, allow ? "enabled" : "disabled");
	}
}

void dc_exit_ips_for_hw_access_internal(struct dc *dc, const char *caller_name)