Re: [EXT] Re: [PATCH v9 2/4] irqchip: Add IMX MU MSI controller driver

From: Marc Zyngier
Date: Fri Sep 09 2022 - 08:08:17 EST


On Thu, 08 Sep 2022 16:35:20 +0100,
Frank Li <frank.li@xxxxxxx> wrote:

> > > > > +struct imx_mu_msi {
> > > > > + spinlock_t lock;
> > > > > + raw_spinlock_t reglock;
> > > >
> > > > Why two locks? Isn't one enough to protect both MSI allocation (which
> > > > happens once in a blue moon) and register access?
> > >
> > > [Frank Li] Previously your comment, ask me to use raw_spinlock for
> > > read\write register access. I don't think raw_spinlock is good for
> > > MSI allocation.
> >
> > Why wouldn't it be good enough? I'd really like to know.[Frank Li] '
>
> [Frank Li] According to my understand, raw_spinlock skip some lockdep
> /debug feature to get better performance, which should be used when
> Frequently call, such as irq handle\polling thread.

I'm afraid you are terribly misguided. They both have the same debug
features because they are both using the same core implementation, and
the only difference is whether this is preemptible for RT purposes or
not.

> Spinlock have DEBUG feature to check wrong use lock. Allocate MSI generally
> only is call once when driver probe.

Again, you should really read the code and the documentation and stop
making things up.

>
> The basic principle, lock should be used only when necessary. Access reg and
> Allocate msi is totally independence events.

Independent events that do not occur simultaneously. So no harm in
sharing the same lock.

M.

--
Without deviation from the norm, progress is not possible.