public inbox for driver-core@lists.linux.dev
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Bartosz Golaszewski <brgl@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Danilo Krummrich <dakr@kernel.org>,
	Linus Walleij <linusw@kernel.org>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	driver-core@lists.linux.dev, linux-kernel@vger.kernel.org,
	linux-gpio@vger.kernel.org,
	Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Subject: Re: [PATCH 1/2] driver core: provide device_match_fwnode_ext()
Date: Fri, 20 Feb 2026 09:36:58 +0200	[thread overview]
Message-ID: <aZgPGndb-6FTlnyR@smile.fi.intel.com> (raw)
In-Reply-To: <CAMRc=MdYcbO74sbjvKeg5k_E7EHfovFHHasDx2erWfcO39zBNA@mail.gmail.com>

On Thu, Feb 19, 2026 at 04:21:59PM -0500, Bartosz Golaszewski wrote:
> On Thu, 19 Feb 2026 20:58:32 +0100, Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> said:
> > On Thu, Feb 19, 2026 at 05:31:22PM +0100, Bartosz Golaszewski wrote:
> >> Provide an extended variant of device_match_fwnode() that also tries to
> >> match the device's secondary fwnode.

...

> >> +int device_match_fwnode_ext(struct device *dev, const void *fwnode)
> >> +{
> >> +	struct fwnode_handle *dev_node = dev_fwnode(dev);
> >
> >> +	if (!fwnode)
> >
> > IS_ERR_OR_NULL()
> > If supplied @fwnode is secondary, it might be an error pointer.
> 
> I mirrored existing device_match_fwnode(), should it be fixed too?

The answer is "I don't know". Strictly speaking this should be done everywhere
in the generic code when we can't guarantee that fwnode that comes to the
function is pure NULL or valid one.

> >> +		return 0;
> >
> >> +	if (dev_node == fwnode)
> >> +		return 1;
> >> +
> >> +	return fwnode_is_primary(dev_node) && dev_node->secondary == fwnode;
> >> +}
> >
> > I think we can refactor this.
> >
> > 	struct fwnode_handle *node;
> >
> > // I would name it like this, because in 3 cases in drivers/base/property.c
> > // 2 with node and 1 with dev_node when the same API is called.
> 
> Haystack's node is "node" and the needle is "fwnode"? Seems confusing to me.

But we need some consistency. drivers/base/property.c is inconsistent to begin
with and here the code chose the least used one for unknown reasons to me.

I'm fine with "node" that is inside the function.

> > 	if (IS_ERR(fwnode))
> > 		return 0;
> >
> > 	if (device_match_fwnode(dev, fwnode)) // NULL check is inside
> > 		return 1;
> 
> Yeah, and it too can be supplied a secondary fwnode. Let's say we resolve
> a reference to a secondary software node and try to lookup a GPIO through it,
> we'll end up with an IS_ERR() fwnode with existing code, right?

I'm not sure I understood the use case you are trying to describe here.

The very first check guarantees that fwnode is either NULL or valid one.
When it's a valid one, the comparison with error pointer will be false.
What did I miss?

> > 	node = dev_fwnode(dev);
> >
> > 	return fwnode_is_primary(node) && node->secondary == fwnode; // NULL check is inside
> >
> >
> >> +	if (!fwnode)
> >> +		return 0;
> >
> >> +	if (dev_node == fwnode)
> >> +		return 1;
> >> +
> >> +	return fwnode_is_primary(dev_node) && dev_node->secondary == fwnode;
> >> +}

...

> >> +int device_match_fwnode_ext(struct device *dev, const void *fwnode);
> >
> > Perhaps ext --> or_secondary ?
> 
> I thought about it but it would make it sound like it only matches the
> secondary to me. Maybe device_match_all_fwnodes()? Would be future-proof if
> we end up doing the linked list approach.

Danilo proposed _full, but in my opinion it's not better than _ext unless you
know very deep how fwnode structure is designed. Same with _all. It's confusing.

fwnode_or_secondary (the key part is "or") sounds more precise. But if you come
up with something else that makes less ambiguity I will be glad.

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2026-02-20  7:37 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-19 16:31 [PATCH 0/2] driver core: provide and use device_match_fwnode_ext() Bartosz Golaszewski
2026-02-19 16:31 ` [PATCH 1/2] driver core: provide device_match_fwnode_ext() Bartosz Golaszewski
2026-02-19 16:36   ` Greg Kroah-Hartman
2026-02-19 16:39     ` Bartosz Golaszewski
2026-02-19 16:50       ` Greg Kroah-Hartman
2026-02-19 16:54       ` Dmitry Torokhov
2026-02-19 21:15         ` Bartosz Golaszewski
2026-02-20  0:47           ` Dmitry Torokhov
2026-02-20  7:27             ` Andy Shevchenko
2026-02-20 11:06             ` Bartosz Golaszewski
2026-02-19 16:55       ` Danilo Krummrich
2026-02-19 19:27         ` Andy Shevchenko
2026-02-19 21:18           ` Bartosz Golaszewski
2026-02-20  0:21             ` Danilo Krummrich
2026-02-20  7:42             ` Andy Shevchenko
2026-02-20 11:21               ` Bartosz Golaszewski
2026-02-19 21:16         ` Bartosz Golaszewski
2026-02-19 19:58   ` Andy Shevchenko
2026-02-19 21:21     ` Bartosz Golaszewski
2026-02-20  7:36       ` Andy Shevchenko [this message]
2026-02-20 11:25         ` Bartosz Golaszewski
2026-02-20 12:08           ` Rafael J. Wysocki
2026-02-20 14:35             ` Bartosz Golaszewski
2026-02-20 14:49               ` Andy Shevchenko
2026-02-20 14:55               ` Rafael J. Wysocki
2026-02-20 15:43             ` Danilo Krummrich
2026-02-20 16:03               ` Rafael J. Wysocki
2026-02-19 16:31 ` [PATCH 2/2] gpiolib: use device_match_fwnode_ext() Bartosz Golaszewski
2026-02-19 17:32 ` [PATCH 0/2] driver core: provide and " Linus Walleij

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=aZgPGndb-6FTlnyR@smile.fi.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=bartosz.golaszewski@oss.qualcomm.com \
    --cc=brgl@kernel.org \
    --cc=dakr@kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=driver-core@lists.linux.dev \
    --cc=gregkh@linuxfoundation.org \
    --cc=linusw@kernel.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rafael@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