Re: [PATCH v2] iio: light: tsl2591: return actual error from probe IRQ failure
From: Jonathan Cameron
Date: Wed Jun 03 2026 - 13:35:04 EST
On Mon, 18 May 2026 16:43:09 +0100
Jonathan Cameron <jic23@xxxxxxxxxx> wrote:
> On Mon, 18 May 2026 16:40:48 +0100
> Jonathan Cameron <jic23@xxxxxxxxxx> wrote:
>
> > On Mon, 18 May 2026 14:43:11 +0500
> > Stepan Ionichev <sozdayvek@xxxxxxxxx> wrote:
> >
> > > When devm_request_threaded_irq() fails, probe logs the error and
> > > then returns -EINVAL, dropping the real error code and breaking the
> > > deferred-probe flow for -EPROBE_DEFER.
> > >
> > > Return ret directly; the IRQ subsystem already prints on failure.
> > >
> > > Fixes: 2335f0d7c790 ("iio: light: Added AMS tsl2591 driver implementation")
> >
> > Hmm. To me borderline on whether it's a fix. In theory a board may exist
> > where the defer is a possibility. In practice probably not given I don't
> > think we've ever had a report of this.
> >
> > Meh, it's harmless enough and maybe helps someone.
> >
> > > Cc: stable@xxxxxxxxxxxxxxx
> > > Signed-off-by: Stepan Ionichev <sozdayvek@xxxxxxxxx>
> > New series versions should never be in reply to older series.
> >
> > It tends to hide them in people's inboxes and brings little nor no benefit.
> > > ---
> > > v2:
> > > - Drop dev_err_probe(); just return ret (Andy)
> > > - Add Cc: stable@ as suggested by Joshua
> > Mostly for IIO I add those to patches that I think need it but don't object
> > if people feel strongly enough and add them themselves.
> >
> > Applied to the iio-fixes branch of iio.git.
> >
> Actually dropped again. I forgot to check sashiko and it raises a reasonable
> question:
> https://sashiko.dev/#/patchset/20260518094311.2000-1-sozdayvek%40gmail.com
>
> Does completely removing dev_err_probe() here drop the deferred probe reason
> tracking?
> While this patch successfully fixes the return code, dev_err_probe() also
> records the deferral reason in debugfs via device_set_deferred_probe_reason()
> when ret is -EPROBE_DEFER.
> Could we keep the diagnostic tracking by returning the result of
> dev_err_probe() directly instead?
> if (ret)
> return dev_err_probe(&client->dev, ret, "IRQ request error\n");
>
> Andy, what do you think?
Andy?
This is a change you might have asked for, but sashiko is correctly noting
that we might loose a deferred reason even if the print is otherwise useless.
Jonathan
>
> > >
> > > v1: https://lore.kernel.org/all/20260517181042.668-1-sozdayvek@xxxxxxxxx/
> > >
> > > drivers/iio/light/tsl2591.c | 6 ++----
> > > 1 file changed, 2 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/drivers/iio/light/tsl2591.c b/drivers/iio/light/tsl2591.c
> > > index c5557867e..c5ccd833d 100644
> > > --- a/drivers/iio/light/tsl2591.c
> > > +++ b/drivers/iio/light/tsl2591.c
> > > @@ -1137,10 +1137,8 @@ static int tsl2591_probe(struct i2c_client *client)
> > > NULL, tsl2591_event_handler,
> > > IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
> > > "tsl2591_irq", indio_dev);
> > > - if (ret) {
> > > - dev_err_probe(&client->dev, ret, "IRQ request error\n");
> > > - return -EINVAL;
> > > - }
> > > + if (ret)
> > > + return ret;
> > > indio_dev->info = &tsl2591_info;
> > > } else {
> > > indio_dev->info = &tsl2591_info_no_irq;
> >
>
>