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.