From: "Nuno Sá" <noname.nuno@gmail.com>
To: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
Cc: Jonathan Cameron <jic23@kernel.org>, Nuno Sa <nuno.sa@analog.com>,
linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
Lars-Peter Clausen <lars@metafoo.de>,
Michael Hennerich <Michael.Hennerich@analog.com>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Conor Dooley <conor+dt@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Frank Rowand <frowand.list@gmail.com>,
Olivier Moysan <olivier.moysan@foss.st.com>
Subject: Re: [PATCH v4 6/8] iio: add the IIO backend framework
Date: Wed, 10 Jan 2024 11:37:23 +0100 [thread overview]
Message-ID: <a16a2241d93696002e718b9e353bc9f798063ce8.camel@gmail.com> (raw)
In-Reply-To: <20240110091608.00003bfc@Huawei.com>
On Wed, 2024-01-10 at 09:16 +0000, Jonathan Cameron wrote:
> On Tue, 09 Jan 2024 13:15:54 +0100
> Nuno Sá <noname.nuno@gmail.com> wrote:
>
> > On Tue, 2023-12-26 at 15:59 +0000, Jonathan Cameron wrote:
> > >
> > > > > > +
> > > > > > + ret = devm_add_action_or_reset(dev, iio_backend_release,
> > > > > > back);
> > > > > > + if (ret)
> > > > > > + return ret;
> > > > > > +
> > > > > > + link = device_link_add(dev, back->dev,
> > > > > > DL_FLAG_AUTOREMOVE_CONSUMER);
> > > > > > + if (!link)
> > > > > > + pr_warn("%s: Could not link to supplier(%s)\n",
> > > > > > dev_name(dev),
> > > > > > + dev_name(back->dev));
> > > > >
> > > > > Why is that not an error and we try to carry on?
> > > >
> > > > I guess having the links are not really mandatory for the whole thing to
> > > > work (more
> > > > like a nice to have). That's also how this is handled in another
> > > > subsystems
> > > > so I
> > > > figured it would be fine.
> > > >
> > > > But since you are speaking about this... After you pointing me to
> > > > Bartosz's
> > > > talk and
> > > > sawing it (as stuff like this is mentioned), I started to question this.
> > > > The
> > > > goal
> > > > with the above comment is that if you remove the backend, all the
> > > > consumers
> > > > are
> > > > automatically removed (unbound). Just not sure if that's what we always
> > > > want
> > > > (and we
> > > > are already handling the situation where a backend goes away with -
> > > > ENODEV)
> > > > as some
> > > > frontends could still be useful without the backend (I guess that could
> > > > be
> > > > plausible). I think for now we don't really have such usecases so the
> > > > links
> > > > can make
> > > > sense (and we can figure something like optionally creating these links
> > > > if
> > > > we ever
> > > > need too) but having your inputs on this will definitely be valuable.
> > >
> > > I'm not keen on both trying to make everything tear down cleanly AND
> > > making
> > > sure
> > > it all works even if we don't. That just adds two code paths to test when
> > > either
> > > should be sufficient on its own. I don't really mind which. Bartosz's
> > > stuff
> >
> > Agreed...
> >
> > > is nice, but it may not be the right solution here.
> >
> > There's pros and cons on both options...
> >
> > For the device links the cons I see is that it depends on patch 3 for it to
> > work
> > (or some other approach if the one in that patch is not good) - not really a
> > real con though :). The biggest concern is (possible) future uses where we
> > end
> > up with cases where removing a backend is not really a "deal breaker". I
> > could
> > think of frontends that have multiple backends (one per data path) and
> > removing
> > one backend would not tear the whole thing down (we would just have one non
> > functional data paths/port where the others are still ok).
>
> I wouldn't waste time catering to such set ups. If the whole thing gets
> torn down because one element went away that should be fine.
> To do anything else I'd want to see a real world use case.
Fair enough...
>
> >
> > Olivier, for STM usecases, do we always need the backend? I mean, does it
> > make
> > sense to always remove/unbind the frontend in case the backend is unbound?
> >
> > Maybe some of your usecases already "forces" us with a decision.
> >
> > The biggest pro I see is code simplicity. If we can assume the frontend can
> > never exist in case one of the backends is gone, we can:
> >
> > * get rid of the sync mutex;
> > * get rid of the kref and bind the backend object lifetime to the backend
> > device (using devm_kzalloc() instead of kzalloc + refcount.
> >
> > Basically, we would not need to care about syncing the backend existence
> > with
> > accessing it...
> > To sum up, the device_links approach tends to be similar (not identical) to
> > the
> > previous approach using the component API.
> >
> > The biggest pro I see in Bartosz's stuff is flexibility. So it should just
> > work
> > in whatever future usecases we might have. I fear that going the
> > device_links
> > road we might end up needing this stuff anyways.
>
> I'm keen on it if it simplifies code or becomes the dominant paradigm for such
> things in the kernel (so becomes what people expect). That isn't true yet
> and I doubt it will be particularly soon. If things head that way we can
> revisit as it would enable things that currently we don't support - nothing
> should break.
>
Well, If I'm not missing anything, simpler code would be with device_links so I
guess that's your preferred approach for now :). Also fine by me as this is an
in kernel interface so we easily revisit it.
I'll just wait a bit more (before sending v5) to see if Olivier has any
foreseeable usecase where device_links would be an issue.
- Nuno Sá
next prev parent reply other threads:[~2024-01-10 10:34 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-20 15:34 [PATCH v4 0/8] iio: add new backend framework Nuno Sa
2023-12-20 15:34 ` [PATCH v4 1/8] dt-bindings: adc: ad9467: add new io-backend property Nuno Sa
2023-12-20 16:56 ` Rob Herring
2023-12-21 17:21 ` Jonathan Cameron
2023-12-21 22:46 ` Rob Herring
2023-12-20 15:34 ` [PATCH v4 2/8] dt-bindings: adc: axi-adc: deprecate 'adi,adc-dev' Nuno Sa
2023-12-21 17:25 ` Jonathan Cameron
2023-12-22 9:07 ` Nuno Sá
2023-12-26 15:55 ` Jonathan Cameron
2023-12-20 15:34 ` [PATCH v4 3/8] driver: core: allow modifying device_links flags Nuno Sa
2023-12-20 15:34 ` [PATCH v4 4/8] of: property: add device link support for io-backends Nuno Sa
2023-12-21 22:47 ` Rob Herring
2024-01-03 21:39 ` David Lechner
2024-01-09 11:23 ` Nuno Sá
2023-12-20 15:34 ` [PATCH v4 5/8] iio: buffer-dmaengine: export buffer alloc and free functions Nuno Sa
2023-12-20 15:34 ` [PATCH v4 6/8] iio: add the IIO backend framework Nuno Sa
2023-12-21 17:44 ` Jonathan Cameron
2023-12-22 9:39 ` Nuno Sá
2023-12-26 15:59 ` Jonathan Cameron
2024-01-09 12:15 ` Nuno Sá
2024-01-10 9:16 ` Jonathan Cameron
2024-01-10 10:37 ` Nuno Sá [this message]
2024-01-11 15:07 ` Olivier MOYSAN
2023-12-20 15:34 ` [PATCH v4 7/8] iio: adc: ad9467: convert to " Nuno Sa
2023-12-21 17:52 ` Jonathan Cameron
2023-12-22 9:10 ` Nuno Sá
2023-12-20 15:34 ` [PATCH v4 8/8] iio: adc: adi-axi-adc: move " Nuno Sa
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=a16a2241d93696002e718b9e353bc9f798063ce8.camel@gmail.com \
--to=noname.nuno@gmail.com \
--cc=Jonathan.Cameron@Huawei.com \
--cc=Michael.Hennerich@analog.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=frowand.list@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=jic23@kernel.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=nuno.sa@analog.com \
--cc=olivier.moysan@foss.st.com \
--cc=rafael@kernel.org \
--cc=robh+dt@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).