Thanks, this is:

Reviewed-by: Iago Toral Quiroga <[email protected]>

El jue, 08-10-2026 a las 08:50 -0300, Maíra Canal escribió:
> Hi Iago,
> 
> On 08/10/26 08:21, Iago Toral wrote:
> > Looks good to me, I have a couple of questions below:
> > 
> > El vie, 25-09-2026 a las 16:10 -0300, Maíra Canal escribió:
> > (...)
> > > diff --git a/drivers/gpu/drm/vc4/vc4_irq.c
> > > b/drivers/gpu/drm/vc4/vc4_irq.c
> > > index 7877d493d80e..98a8db720091 100644
> > > --- a/drivers/gpu/drm/vc4/vc4_irq.c
> > > +++ b/drivers/gpu/drm/vc4/vc4_irq.c
> > > @@ -276,7 +276,7 @@ vc4_irq_disable(struct drm_device *dev)
> > >           V3D_WRITE(V3D_INTCTL, V3D_DRIVER_IRQS);
> > >   
> > >           /* Finish any interrupt handler still in flight. */
> > > - synchronize_irq(vc4->irq);
> > > + disable_irq(vc4->irq);
> > 
> > With this change, do we still need the 2 V3D_WRITEs above this?
> 
> Yes, because, before disabling the IRQ, we must make sure that the
> V3D interface is quiet.
> 
> > > 
> > > 
> > >           cancel_work_sync(&vc4->overflow_mem_work);
> > >   }
> > > @@ -284,7 +284,6 @@ vc4_irq_disable(struct drm_device *dev)
> > >   int vc4_irq_install(struct drm_device *dev, int irq)
> > >   {
> > >           struct vc4_dev *vc4 = to_vc4_dev(dev);
> > > - int ret;
> > >   
> > >           if (WARN_ON_ONCE(vc4->gen > VC4_GEN_4))
> > >                   return -ENODEV;
> > > @@ -298,19 +297,8 @@ int vc4_irq_install(struct drm_device *dev,
> > > int
> > > irq)
> > >           init_waitqueue_head(&vc4->job_wait_queue);
> > >           INIT_WORK(&vc4->overflow_mem_work,
> > > vc4_overflow_mem_work);
> > >   
> > > - /* Clear any pending interrupts someone might have left
> > > around
> > > -  * for us.
> > > -  */
> > > - V3D_WRITE(V3D_INTCTL, V3D_DRIVER_IRQS);
> > 
> > Why this change?
> 
> vc4_irq_install() is now called before PM resume, so it can't access
> HW
> registers and that's okay, because cleaning pending interrupts is
> done
> during resume.
> 
> Best regards,
> - Maíra
> 
> > 
> > > -
> > > - ret = devm_request_irq(dev->dev, irq, vc4_irq, 0,
> > > -                        dev_name(dev->dev), dev);
> > > - if (ret)
> > > -         return ret;
> > > -
> > > - vc4_irq_enable(dev);
> > > -
> > > - return 0;
> > > + return devm_request_irq(dev->dev, irq, vc4_irq,
> > > IRQF_NO_AUTOEN,
> > > +                         dev_name(dev->dev), dev);
> > >   }
> 
> 

Reply via email to