Skip to content

Commit

Permalink
drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset
Browse files Browse the repository at this point in the history
[Why]
The HW interrupt gets disabled after S3/S4/reset so we don't receive
notifications for HPD or AUX from DMUB - leading to timeout and
black screen with (or without) DPIA links connected.

[How]
Re-enable the interrupt after S3/S4/reset like we do for the other
DC interrupts.

Guard both instances of the outbox interrupt enable or we'll hang
during restore on ASIC that don't support it.

Fixes: 19fde255f248 ("drm/amd/display: Fix DPIA outbox timeout after GPU reset")

Reviewed-by: Jude Shih <Jude.Shih@amd.com>
Acked-by: Pavle Kotarac <Pavle.Kotarac@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
  • Loading branch information
Nicholas Kazlauskas authored and aaliuamd committed Dec 10, 2021
1 parent 2d31404 commit fd3e3a0
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
Original file line number Diff line number Diff line change
Expand Up @@ -2452,7 +2452,8 @@ static int dm_resume(void *handle)
if (amdgpu_in_reset(adev)) {
dc_state = dm->cached_dc_state;

amdgpu_dm_outbox_init(adev);
if (dc_enable_dmub_notifications(adev->dm.dc))
amdgpu_dm_outbox_init(adev);

r = dm_dmub_hw_init(adev);
if (r)
Expand Down Expand Up @@ -2503,6 +2504,10 @@ static int dm_resume(void *handle)
dc_resource_state_construct(dm->dc, dm_state->context);
#endif

/* Re-enable outbox interrupts for DPIA. */
if (dc_enable_dmub_notifications(adev->dm.dc))
amdgpu_dm_outbox_init(adev);

/* Before powering on DC we need to re-initialize DMUB. */
r = dm_dmub_hw_init(adev);
if (r)
Expand Down

0 comments on commit fd3e3a0

Please sign in to comment.