On Mon, Jan 26, 2026 at 1:37 AM Yifan Zhang <[email protected]> wrote: > > 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.
This could happen any time the interrupts registers are touched. Would be better to do this in the interrupt .set() callbacks for all IPs (gfx, sdma) in the gfxoff power domain. Alex > > 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 >
