Re: [PATCH v6 5/5] mfd: max77541: Add ADI MAX77541/MAX77540 PMIC Support

From: Andy Shevchenko
Date: Wed Mar 29 2023 - 10:11:19 EST


On Tue, Mar 28, 2023 at 04:01:21PM +0000, Sahin, Okan wrote:
> >On Tue, Mar 28, 2023 at 04:51:18PM +0200, Nuno Sá wrote:
> >> On Tue, 2023-03-28 at 17:35 +0300, Andy Shevchenko wrote:
> >> > On Tue, Mar 28, 2023 at 04:18:30PM +0200, Nuno Sá wrote:
> >> > > On Tue, 2023-03-28 at 14:46 +0100, Mark Brown wrote:
> >> > > > On Tue, Mar 28, 2023 at 03:26:44PM +0200, Nuno Sá wrote:
> >> > > >
> >> > > > > IIRC, regmap_read() is not really reentrant and it is used in
> >> > > > > the IIO driver on the sysfs interface. So, yeah, I think you
> >> > > > > need the regmap lock and better just leave the config as is.
> >> > > > > Yes, the lock is
> >> > > > > opt-
> >> > > > > out
> >> > > > > so let's not disable it :)
> >> > > >
> >> > > > All the regmap operations are fully thread safe.
> >> > >
> >> > > Even if 'config->disable_locking' is set? I think that is what's
> >> > > being discussed in here...
> >> >
> >> > In case the driver has its own lock to serialize IO how on earth the
> >> > regmap lock is needed. That's what I asked the author of the driver.
> >> > He told the code
> >>
> >> Well, if the driver has it's own locking, then sure we do not need
> >> regmap's lock...
> >>
> >> > doesn't require the regmap lock, and I tend to believe the author.
> >> > So, why to
> >> > keep it?
> >>
> >> However, if you look at the adc driver, I can see plain regmap_read()
> >> calls without any "outside" locking.
> >
> >Then author of the code should know what they are doing. Right?

> Actually, I do not want to disable regmap lock that's why I did not update it.

If you have something like

func1()
regmap_read(reg1)
regmap_read/write(reg2)

func2()
regmap_read/write(regX) // X may or may not be 1 or 2

and func1() and func2() can be run in parallel then the code is racy.

Do you have such in your code?

--
With Best Regards,
Andy Shevchenko