All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@intel.com>
To: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Cc: "Jonathan Cameron" <jic23@kernel.org>,
	"Lars-Peter Clausen" <lars@metafoo.de>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"David Lechner" <dlechner@baylibre.com>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Andy Shevchenko" <andy@kernel.org>,
	linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 2/4] iio: light: add support for veml6031x00 ALS series
Date: Fri, 14 Aug 2026 12:07:03 +0300	[thread overview]
Message-ID: <an7atynATsJHlt7_@ashevche-desk.local> (raw)
In-Reply-To: <DKOJJJSXCZ8Y.KCR5NRYX7PVL@gmail.com>

On Fri, Aug 14, 2026 at 10:58:10AM +0200, Javier Carrasco wrote:
> On Fri Aug 14, 2026 at 9:49 AM CEST, Andy Shevchenko wrote:
> > On Thu, Aug 13, 2026 at 11:46:32AM +0200, Javier Carrasco wrote:
> >> Hello Andy, thank you again for your thorough review.
> >> On Thu Aug 13, 2026 at 8:59 AM CEST, Andy Shevchenko wrote:
> >> > On Wed, Aug 12, 2026 at 10:27:41PM +0200, Javier Carrasco wrote:

...

> >> >> +	data->regmap = devm_regmap_init_i2c(i2c, &veml6031x00_regmap_config);
> >> >> +	if (IS_ERR(data->regmap))
> >> >> +		return dev_err_probe(dev, PTR_ERR(data->regmap),
> >> >> +				     "Failed to set regmap\n");
> >> >
> >> > Is debugfs access already enabled for regmap after this call? Perhaps you want
> >> > mutex to be initialised before that?
> >>
> >> Could you please explain what you are trying to avoid? Even if the
> >> debugfs is already enabled for regmap at this point, what is the
> >> possible race condition?
> >
> > That's my question to you. If you think there is none, then we are all good.
> > Basically the Q is if that mutex (that is initialised later in the probe) is
> > required for the device IO which might be possible immediately when regmap
> > is registered.
> >
> >> The IIO device is still not registered at this
> >> point, and the registers are set to their right values in _hw_init()
> >> after the mutexes were initialized. Moving the mutex initialization a
> >> couple of lines towards the top is not an issue, but I would like to
> >> understand the reasoning behind.
> >
> > User may read (and depending on the driver case writing) the register map.
> > Would it be a problem?
> 
> That is not a problem, as no assumptions about the original values are
> made.

It's not about the values, it's about the *access* HW during that time when
there is no mutex available yet.

> >> >> +	ret = devm_mutex_init(dev, &data->scale_lock);
> >> >> +	if (ret)
> >> >> +		return ret;

...

> >> >> +err_pm_put:
> >> >> +	pm_runtime_put_noidle(dev);
> >> >
> >> > Hmm... This is usually a red flag to see a goto after devm_*() calls.
> >>
> >> Could you please elaborate on this? I am aware of the dangers of a goto
> >> after the cleanup attribute, but devm_*() calls work on a different
> >> scope, not local to the function. What could go wrong? This goto is just
> >> a way not to repeat pm_runtime_put_noidle(); return ret; and I am not
> >> strongly against repeating these two lines wherever there is a goto, but
> >> I am not sure what we are avoiding in this case.
> >
> > No, the goto here may (or may not) lead to the wrong ordering on the cleanup
> > and/or error paths. It's usually recommended to avoid such a style even if
> > it works without races in that case. That's why when switching to managed
> > resources it's highly recommended to wrap everything to be managed (in case
> > there is no native APIs available) and avoid any flow disruption (goto:s).
> 
> In this case I can't see any issue with the goto. It only leads to a
> call to pm_runtime_put_noidle(), and after returning 'ret', the
> device-managed resources are released. If the goto is removed and a
> call to pm_runtime_put_noidle() is carried out in every error path, the
> result is exactly the same as there are no operations within the probe
> execution path that affect their behavior.

Right, but again "It's usually recommended to avoid such a style...".

> I can imagine that it might be problematic in some special cases, but
> the use of devm_*() and goto jumps within a function is allowed and used
> in the official documentation [1], and in several upstream drivers in IIO
> [2][3] and other subsystems [4]. Of course, all those examples might be bad
> examples, but I could not find any reference discouraging the use of
> goto with devm_*().

> [1] https://docs.kernel.org/driver-api/usb/writing_musb_glue_layer.html

It's not kernel-wide documentation. At a brief glance it has more issues than
just that one. I would not recommend to refer and use that piece of the
documentation without fixing it first.

> [2] drivers/iio/accel/kxcjk-1013.c
> [3] drivers/iio/pressure/hid-sensor-press.c
> [4] drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2026-08-14  9:07 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-12 20:27 [PATCH v6 0/4] iio: light: add support for veml6031x00 ALS series Javier Carrasco
2026-08-12 20:27 ` [PATCH v6 1/4] dt-bindings: iio: light: veml6030: add " Javier Carrasco
2026-08-12 20:27 ` [PATCH v6 2/4] iio: light: add support for " Javier Carrasco
2026-08-13  1:04   ` Jonathan Cameron
2026-08-13  1:27     ` Jonathan Cameron
2026-08-13  7:30       ` Andy Shevchenko
2026-08-13  6:59   ` Andy Shevchenko
2026-08-13  9:46     ` Javier Carrasco
2026-08-14  7:49       ` Andy Shevchenko
2026-08-14  8:58         ` Javier Carrasco
2026-08-14  9:07           ` Andy Shevchenko [this message]
2026-08-14  9:23             ` Javier Carrasco
2026-08-12 20:27 ` [PATCH v6 3/4] iio: light: veml6031x00: add support for triggered buffers Javier Carrasco
2026-08-13  1:09   ` Jonathan Cameron
2026-08-13  8:34     ` Andy Shevchenko
2026-08-12 20:27 ` [PATCH v6 4/4] iio: light: veml6031x00: add support for events and trigger Javier Carrasco
2026-08-12 20:47   ` sashiko-bot
2026-08-13  1:24   ` Jonathan Cameron
2026-08-13 12:43     ` Javier Carrasco
2026-08-13  8:41   ` Andy Shevchenko
2026-08-13  0:48 ` [PATCH v6 0/4] iio: light: add support for veml6031x00 ALS series Jonathan Cameron

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=an7atynATsJHlt7_@ashevche-desk.local \
    --to=andriy.shevchenko@intel.com \
    --cc=andy@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=javier.carrasco.cruz@gmail.com \
    --cc=jic23@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nuno.sa@analog.com \
    --cc=robh@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.