Commit 540c1229 authored by Tao.Huang's avatar Tao.Huang Committed by Alex Deucher
Browse files

drm/amd/display: fix resource saving missing when power state switch

parent c3e50f89
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -1930,6 +1930,12 @@ void dc_set_power_state(
	enum dc_acpi_cm_power_state power_state)
{
	struct kref refcount;
	struct display_mode_lib *dml = kzalloc(sizeof(struct display_mode_lib),
						GFP_KERNEL);

	ASSERT(dml);
	if (!dml)
		return;

	switch (power_state) {
	case DC_ACPI_CM_POWER_STATE_D0:
@@ -1946,15 +1952,20 @@ void dc_set_power_state(

		/* Preserve refcount */
		refcount = dc->current_state->refcount;
		/* Preserve display mode lib */
		memcpy(dml, &dc->current_state->bw_ctx.dml, sizeof(struct display_mode_lib));

		dc_resource_state_destruct(dc->current_state);
		memset(dc->current_state, 0,
				sizeof(*dc->current_state));

		dc->current_state->refcount = refcount;
		dc->current_state->bw_ctx.dml = *dml;

		break;
	}

	kfree(dml);
}

void dc_resume(struct dc *dc)