[PATCH v9 01/12] iommu/arm-smmu-v3: Refactor arm_smmu_setup_irqs
Pranjal Shrivastava
praan at google.com
Tue Aug 25 12:01:26 PDT 2026
On Tue, Aug 25, 2026 at 11:47:57AM -0700, Nicolin Chen wrote:
> On Tue, Aug 25, 2026 at 05:35:28PM +0000, Pranjal Shrivastava wrote:
> > On Tue, Aug 25, 2026 at 01:36:11PM -0300, Jason Gunthorpe wrote:
> > > > [ ... 84 lines skipped ... ]
> > > > + /* Setup interrupt handlers */
> > > > + ret = arm_smmu_setup_irqs(smmu);
> > > > + if (ret) {
> > > > + dev_err(smmu->dev, "failed to setup irqs\n");
> > > > + return ret;
> > > > + }
> > > > +
> > >
> > > The sashiko remark makes sense to me, we should not enable interrupts
> > > until everything has been initialized and things are ready to go. So
> > > this is better done after the device reset call, which is the thing
> > > that is setting up the queue pointers in HW..
> > >
> > > I'm not sure what to make of the MSI register ordering around kdump
> > > comment.. Nicolin?
> > >
> >
> > Ack. I agree with Sashiko's remarks, we'd need to call this within
> > device_reset right before the SMMU is enabled (same place as today).
> > I factored this out to avoid setting up irq handlers multiple times
> > across a suspend / resume cycle (for e.g. we can't request_irq multiple
> > times for the same irq). Otherwise, we'd have to de-register IRQ
> > handlers in the suspend callback. Maybe we could do this ONCE based on
> > some smmu->inited bool?
>
> Yea, setting MSI while IRQ and CMDQ are enabled might be an issue.
>
> FWIW, my kdump series disables EVTQ and PRIQ, so the concern would
> only apply to GERROR.
>
Hmm, I guess I'll move it into the reset handler with some smmu->inited?
The other thing could be somehow masking all interrupts till we *really*
enable the SMMU.
Which one sounds better to you? Any preference?
(Will / Jason / Mostafa / Daniel?)
Thanks,
Praan
More information about the linux-arm-kernel
mailing list