amdgpu_irq_disable_all touchs GC registers, keep GC awake inside the amdgpu_irq_disable_all function. Otherwise IMU may be stuck due to invalid GC regsters access.
Signed-off-by: Yifan Zhang <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c index 82bc6d657e5a..85e5399fccad 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c @@ -162,6 +162,7 @@ void amdgpu_irq_disable_all(struct amdgpu_device *adev) unsigned int i, j, k; int r; + amdgpu_gfx_off_ctrl(adev, false); spin_lock_irqsave(&adev->irq.lock, irqflags); for (i = 0; i < AMDGPU_IRQ_CLIENTID_MAX; ++i) { if (!adev->irq.client[i].sources) @@ -184,6 +185,7 @@ void amdgpu_irq_disable_all(struct amdgpu_device *adev) } } spin_unlock_irqrestore(&adev->irq.lock, irqflags); + amdgpu_gfx_off_ctrl(adev, true); } /** -- 2.43.0
