On Thu, 27 Aug 2020 13:00:36 +0300 Alexandru Ardelean <ardeleanalex@xxxxxxxxx> wrote: > On Thu, Aug 27, 2020 at 12:03 PM Fabrice Gasnier <fabrice.gasnier@xxxxxx> wrote: > > > > On 8/27/20 10:55 AM, Alexandru Ardelean wrote: > > > On Wed, Aug 26, 2020 at 3:03 PM Alexandru Ardelean > > > <alexandru.ardelean@xxxxxxxxxx> wrote: > > >> From: Sergiu Cuciurean <sergiu.cuciurean@xxxxxxxxxx> > > >> > > >> As part of the general cleanup of indio_dev->mlock, this change replaces > > >> it with a local lock. The lock protects against potential races when > > >> reading the CR reg and then updating, so that the state of pm_runtime > > >> is consistent between the two operations. > > >> > > >> Signed-off-by: Sergiu Cuciurean <sergiu.cuciurean@xxxxxxxxxx> > > >> Signed-off-by: Alexandru Ardelean <alexandru.ardelean@xxxxxxxxxx> > > >> --- > > > Forgot the changelog here. > > > Apologies. > > > > > > Changelog v1 -> v2: > > > * removed whitespace change for 'common' field > > > * updated comment about the lock usage > > > > Hi Alexandru, > > > > Sorry if I missed it... is there an update on the comment :-) ? > > For a moment there, I thought I didn't. > GMail's threading is confusing. > > ---------------------------------------------------------------------------- > As part of the general cleanup of indio_dev->mlock, this change replaces > it with a local lock. The lock protects against potential races when > reading the CR reg and then updating, so that the state of pm_runtime > is consistent between the two operations. > ---------------------------------------------------------------------------- I think this got confused... see below. > > > > > Best Regards, > > Fabrice > > > > > >> drivers/iio/dac/stm32-dac.c | 12 ++++++++---- > > >> 1 file changed, 8 insertions(+), 4 deletions(-) > > >> > > >> diff --git a/drivers/iio/dac/stm32-dac.c b/drivers/iio/dac/stm32-dac.c > > >> index 092c796fa3d9..7a8aed476850 100644 > > >> --- a/drivers/iio/dac/stm32-dac.c > > >> +++ b/drivers/iio/dac/stm32-dac.c > > >> @@ -26,9 +26,11 @@ > > >> /** > > >> * struct stm32_dac - private data of DAC driver > > >> * @common: reference to DAC common data > > >> + * @lock: lock to protect the data buffer during regmap ops The original comment was: In this particular case I'm not sure that's what mlock was being used for. I think it's about avoiding races around checking if powered down and actually doing it. And Fabrice's reply: Hi Sergiu, Indeed, purpose is to protect against a race here when reading CR, and updating it via regmap (this also makes the subsequent pm_runtime calls to be balanced based on this). (Side note: there is no data buffer involved for the DAC.) Could you please update the comment ? Thanks, Fabrice > > >> */ > > >> struct stm32_dac { > > >> struct stm32_dac_common *common; > > >> + struct mutex lock; > > >> };