]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commit
drm/amdgpu: Ensure HDA function is suspended before ASIC reset
authorKai-Heng Feng <kai.heng.feng@canonical.com>
Sun, 10 Apr 2022 14:26:09 +0000 (22:26 +0800)
committerStefan Bader <stefan.bader@canonical.com>
Wed, 27 Apr 2022 10:00:32 +0000 (12:00 +0200)
commit449b9199605f494e61c67f2dd1a806acd73463ce
tree87b7bc3b3c2af17e729e736ee3fd42818524c8f5
parentd70162eb5233832e54569afc5ed0fe36abdfa606
drm/amdgpu: Ensure HDA function is suspended before ASIC reset

BugLink: https://bugs.launchpad.net/bugs/1968475
DP/HDMI audio on AMD PRO VII stops working after S3:
[  149.450391] amdgpu 0000:63:00.0: amdgpu: MODE1 reset
[  149.450395] amdgpu 0000:63:00.0: amdgpu: GPU mode1 reset
[  149.450494] amdgpu 0000:63:00.0: amdgpu: GPU psp mode1 reset
[  149.983693] snd_hda_intel 0000:63:00.1: refused to change power state from D0 to D3hot
[  150.003439] amdgpu 0000:63:00.0: refused to change power state from D0 to D3hot
...
[  155.432975] snd_hda_intel 0000:63:00.1: CORB reset timeout#2, CORBRP = 65535

The offending commit is daf8de0874ab5b ("drm/amdgpu: always reset the asic in
suspend (v2)"). Commit 34452ac3038a7 ("drm/amdgpu: don't use BACO for
reset in S3 ") doesn't help, so the issue is something different.

Assuming that to make HDA resume to D0 fully realized, it needs to be
successfully put to D3 first. And this guesswork proves working, by
moving amdgpu_asic_reset() to noirq callback, so it's called after HDA
function is in D3.

Fixes: daf8de0874ab5b ("drm/amdgpu: always reset the asic in suspend (v2)")
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 9e051720f9d37ef6f878a6106478c82fb9b375d1 linux-next)
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Acked-by: Tim Gardner <tim.gardner@canonical.com>
Acked-by: Paolo Pisati <paolo.pisati@canonical.com>
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c