* [PATCH v3 0/2] driver core: make references to unregistered software nodes a special case
@ 2026-04-03 13:51 Bartosz Golaszewski
2026-04-03 13:51 ` [PATCH v3 1/2] software node: return -ENOTCONN when referenced swnode is not registered yet Bartosz Golaszewski
2026-04-03 13:51 ` [PATCH v3 2/2] gpio: swnode: defer probe on references to unregistered software nodes Bartosz Golaszewski
0 siblings, 2 replies; 6+ messages in thread
From: Bartosz Golaszewski @ 2026-04-03 13:51 UTC (permalink / raw)
To: Andy Shevchenko, Daniel Scally, Heikki Krogerus, Sakari Ailus,
Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Mika Westerberg, Andy Shevchenko, Linus Walleij, Hans de Goede,
Ilpo Järvinen, Dmitry Torokhov, Len Brown
Cc: linux-acpi, driver-core, linux-kernel, linux-gpio,
platform-driver-x86, brgl, Bartosz Golaszewski
I spun this out of the bigger series (see: link to v2) in hopes that we
can get it in for v7.1 and make follow-up development easier next cycle.
This series proposes to make unregistered software nodes (ones that have
an address but which have not been passed to software_node_register()
yet) a special case with its dedicated error number. This will allow
subsystems to defer probe as if it was a firmware node not backed by
a device yet.
This is done in order to allow easier attaching of software nodes to
GPIO controllers and the removal of current label name matching against
the software node's name.
The patches can be picked up independently into driver core and GPIO
trees.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
Changes in v3:
- Drop x86 changes from the series (will be resubmitted later)
- Use -ENOTCONN instead of -ENXIO to indicate unregistered software
nodes
- Fix retval check logic in gpiolib-swnode
- Link to v2: https://patch.msgid.link/20260402-baytrail-real-swnode-v2-0-6f5054a4cc07@oss.qualcomm.com
Changes in v2:
- Completely new approach
- Keep the cherryview and baytrail secondary fwnode handling as a
driver-specific quirk for x86 tablets and don't introduce any new API
- Change the return value when resolving a reference to an unregistered
software node and defer probe in GPIOLIB in that situation
- Export acpi_bus_type for use in x86-android-tablets
- Link to v1: https://patch.msgid.link/20260319-baytrail-real-swnode-v1-0-75f2264ae49f@oss.qualcomm.com
---
Bartosz Golaszewski (2):
software node: return -ENOTCONN when referenced swnode is not registered yet
gpio: swnode: defer probe on references to unregistered software nodes
drivers/base/swnode.c | 2 +-
drivers/gpio/gpiolib-swnode.c | 11 ++++++++++-
2 files changed, 11 insertions(+), 2 deletions(-)
---
base-commit: cc13002a9f984d37906e9476f3e532a8cdd126f5
change-id: 20260403-swnode-unreg-retcode-38b5b92eab28
Best regards,
--
Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH v3 1/2] software node: return -ENOTCONN when referenced swnode is not registered yet
2026-04-03 13:51 [PATCH v3 0/2] driver core: make references to unregistered software nodes a special case Bartosz Golaszewski
@ 2026-04-03 13:51 ` Bartosz Golaszewski
2026-04-06 19:31 ` Andy Shevchenko
2026-04-07 7:04 ` Sakari Ailus
2026-04-03 13:51 ` [PATCH v3 2/2] gpio: swnode: defer probe on references to unregistered software nodes Bartosz Golaszewski
1 sibling, 2 replies; 6+ messages in thread
From: Bartosz Golaszewski @ 2026-04-03 13:51 UTC (permalink / raw)
To: Andy Shevchenko, Daniel Scally, Heikki Krogerus, Sakari Ailus,
Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Mika Westerberg, Andy Shevchenko, Linus Walleij, Hans de Goede,
Ilpo Järvinen, Dmitry Torokhov, Len Brown
Cc: linux-acpi, driver-core, linux-kernel, linux-gpio,
platform-driver-x86, brgl, Bartosz Golaszewski
It's possible that at the time of resolving a reference to a remote
software node, the node we know exists is not yet registered as a full
firmware node. We currently return -ENOENT in this case but the same
error code is also returned in some other cases, like the reference
property with given name not existing in the property list of the local
software node.
It makes sense to let users know that we're dealing with an unregistered
software node so that they can defer probe - the situation is somewhat
similar to there existing a firmware node to which no device is bound
yet - which is valid grounds for probe deferral. To that end: use
-ENOTCONN to indicate the software node is "not connected".
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
drivers/base/swnode.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c
index 51320837f3a9f1bf4f65aa161d9b941affc74936..61e73417aee89feb855b0f429e112ca0af78a003 100644
--- a/drivers/base/swnode.c
+++ b/drivers/base/swnode.c
@@ -554,7 +554,7 @@ software_node_get_reference_args(const struct fwnode_handle *fwnode,
return -EINVAL;
if (!refnode)
- return -ENOENT;
+ return -ENOTCONN;
if (nargs_prop) {
error = fwnode_property_read_u32(refnode, nargs_prop, &nargs_prop_val);
--
2.47.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v3 1/2] software node: return -ENOTCONN when referenced swnode is not registered yet
2026-04-03 13:51 ` [PATCH v3 1/2] software node: return -ENOTCONN when referenced swnode is not registered yet Bartosz Golaszewski
@ 2026-04-06 19:31 ` Andy Shevchenko
2026-04-07 7:04 ` Sakari Ailus
1 sibling, 0 replies; 6+ messages in thread
From: Andy Shevchenko @ 2026-04-06 19:31 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Andy Shevchenko, Daniel Scally, Heikki Krogerus, Sakari Ailus,
Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Mika Westerberg, Andy Shevchenko, Linus Walleij, Hans de Goede,
Ilpo Järvinen, Dmitry Torokhov, Len Brown, linux-acpi,
driver-core, linux-kernel, linux-gpio, platform-driver-x86, brgl
On Fri, Apr 3, 2026 at 4:52 PM Bartosz Golaszewski
<bartosz.golaszewski@oss.qualcomm.com> wrote:
>
> It's possible that at the time of resolving a reference to a remote
> software node, the node we know exists is not yet registered as a full
> firmware node. We currently return -ENOENT in this case but the same
> error code is also returned in some other cases, like the reference
> property with given name not existing in the property list of the local
> software node.
>
> It makes sense to let users know that we're dealing with an unregistered
> software node so that they can defer probe - the situation is somewhat
> similar to there existing a firmware node to which no device is bound
> yet - which is valid grounds for probe deferral. To that end: use
> -ENOTCONN to indicate the software node is "not connected".
Despite being mostly for networking purposes this error code also be
de facto used in other contexts similar to what we have.
Acked-by: Andy Shevchenko <andy@kernel.org>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3 1/2] software node: return -ENOTCONN when referenced swnode is not registered yet
2026-04-03 13:51 ` [PATCH v3 1/2] software node: return -ENOTCONN when referenced swnode is not registered yet Bartosz Golaszewski
2026-04-06 19:31 ` Andy Shevchenko
@ 2026-04-07 7:04 ` Sakari Ailus
1 sibling, 0 replies; 6+ messages in thread
From: Sakari Ailus @ 2026-04-07 7:04 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Andy Shevchenko, Daniel Scally, Heikki Krogerus,
Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Mika Westerberg, Andy Shevchenko, Linus Walleij, Hans de Goede,
Ilpo Järvinen, Dmitry Torokhov, Len Brown, linux-acpi,
driver-core, linux-kernel, linux-gpio, platform-driver-x86, brgl
Hi Bartosz,
Thanks for the update.
On Fri, Apr 03, 2026 at 03:51:50PM +0200, Bartosz Golaszewski wrote:
> It's possible that at the time of resolving a reference to a remote
> software node, the node we know exists is not yet registered as a full
> firmware node. We currently return -ENOENT in this case but the same
> error code is also returned in some other cases, like the reference
> property with given name not existing in the property list of the local
> software node.
>
> It makes sense to let users know that we're dealing with an unregistered
> software node so that they can defer probe - the situation is somewhat
> similar to there existing a firmware node to which no device is bound
> yet - which is valid grounds for probe deferral. To that end: use
> -ENOTCONN to indicate the software node is "not connected".
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
> ---
> drivers/base/swnode.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c
> index 51320837f3a9f1bf4f65aa161d9b941affc74936..61e73417aee89feb855b0f429e112ca0af78a003 100644
> --- a/drivers/base/swnode.c
> +++ b/drivers/base/swnode.c
> @@ -554,7 +554,7 @@ software_node_get_reference_args(const struct fwnode_handle *fwnode,
> return -EINVAL;
>
> if (!refnode)
> - return -ENOENT;
> + return -ENOTCONN;
This needs to be documented for fwnode_property_get_reference_args() as
well.
In V4L2 we do
<URL:https://lore.kernel.org/linux-media/20260313091122.GA333526@killaraus.ideasonboard.com/T/#t>
so the caller just returns the error code but maybe that's not generic
enough.
>
> if (nargs_prop) {
> error = fwnode_property_read_u32(refnode, nargs_prop, &nargs_prop_val);
>
--
Kind regards,
Sakari Ailus
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v3 2/2] gpio: swnode: defer probe on references to unregistered software nodes
2026-04-03 13:51 [PATCH v3 0/2] driver core: make references to unregistered software nodes a special case Bartosz Golaszewski
2026-04-03 13:51 ` [PATCH v3 1/2] software node: return -ENOTCONN when referenced swnode is not registered yet Bartosz Golaszewski
@ 2026-04-03 13:51 ` Bartosz Golaszewski
2026-04-06 19:29 ` Andy Shevchenko
1 sibling, 1 reply; 6+ messages in thread
From: Bartosz Golaszewski @ 2026-04-03 13:51 UTC (permalink / raw)
To: Andy Shevchenko, Daniel Scally, Heikki Krogerus, Sakari Ailus,
Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Mika Westerberg, Andy Shevchenko, Linus Walleij, Hans de Goede,
Ilpo Järvinen, Dmitry Torokhov, Len Brown
Cc: linux-acpi, driver-core, linux-kernel, linux-gpio,
platform-driver-x86, brgl, Bartosz Golaszewski
fwnode_property_get_reference_args() now returns -ENOTCONN when called
on a software node referencing another software node which has not yet
been registered as a firmware node. It makes sense to defer probe in this
situation as the node will most likely be registered later on and we'll
be able to resolve the reference eventually. Change the behavior of
swnode_find_gpio() to return -EPROBE_DEFER if the software node reference
resolution returns -ENOTCONN.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
drivers/gpio/gpiolib-swnode.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/gpio/gpiolib-swnode.c b/drivers/gpio/gpiolib-swnode.c
index 0d7f3f09a0b4bee0cf1bbdaa8b7b8ae4cd5de581..77f4a3b00641bc9535ec32f8654ea7f547c34153 100644
--- a/drivers/gpio/gpiolib-swnode.c
+++ b/drivers/gpio/gpiolib-swnode.c
@@ -91,10 +91,19 @@ struct gpio_desc *swnode_find_gpio(struct fwnode_handle *fwnode,
for_each_gpio_property_name(propname, con_id) {
ret = swnode_gpio_get_reference(fwnode, propname, idx, &args);
- if (ret == 0)
+ if (ret == 0 || ret == -ENOTCONN)
break;
}
if (ret) {
+ if (ret == -ENOTCONN)
+ /*
+ * -ENOTCONN for a software node reference lookup means
+ * that a remote struct software_node exists but has
+ * not yet been registered as a firmware node. Defer
+ * until this happens.
+ */
+ return ERR_PTR(-EPROBE_DEFER);
+
pr_debug("%s: can't parse '%s' property of node '%pfwP[%d]'\n",
__func__, propname, fwnode, idx);
return ERR_PTR(ret);
--
2.47.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v3 2/2] gpio: swnode: defer probe on references to unregistered software nodes
2026-04-03 13:51 ` [PATCH v3 2/2] gpio: swnode: defer probe on references to unregistered software nodes Bartosz Golaszewski
@ 2026-04-06 19:29 ` Andy Shevchenko
0 siblings, 0 replies; 6+ messages in thread
From: Andy Shevchenko @ 2026-04-06 19:29 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Andy Shevchenko, Daniel Scally, Heikki Krogerus, Sakari Ailus,
Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Mika Westerberg, Andy Shevchenko, Linus Walleij, Hans de Goede,
Ilpo Järvinen, Dmitry Torokhov, Len Brown, linux-acpi,
driver-core, linux-kernel, linux-gpio, platform-driver-x86, brgl
On Fri, Apr 3, 2026 at 4:52 PM Bartosz Golaszewski
<bartosz.golaszewski@oss.qualcomm.com> wrote:
>
> fwnode_property_get_reference_args() now returns -ENOTCONN when called
> on a software node referencing another software node which has not yet
> been registered as a firmware node. It makes sense to defer probe in this
> situation as the node will most likely be registered later on and we'll
> be able to resolve the reference eventually. Change the behavior of
> swnode_find_gpio() to return -EPROBE_DEFER if the software node reference
> resolution returns -ENOTCONN.
...
> for_each_gpio_property_name(propname, con_id) {
> ret = swnode_gpio_get_reference(fwnode, propname, idx, &args);
> - if (ret == 0)
> + if (ret == 0 || ret == -ENOTCONN)
> break;
If I understood the logic correctly this may be just extended as
if (ret == 0)
break;
if (ret == -ENOTCONN)
/* ... */
return -EPROBE_DEFER;
> }
> if (ret) {
> + if (ret == -ENOTCONN)
> + /*
> + * -ENOTCONN for a software node reference lookup means
> + * that a remote struct software_node exists but has
> + * not yet been registered as a firmware node. Defer
> + * until this happens.
> + */
> + return ERR_PTR(-EPROBE_DEFER);
> +
> pr_debug("%s: can't parse '%s' property of node '%pfwP[%d]'\n",
> __func__, propname, fwnode, idx);
> return ERR_PTR(ret);
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-04-07 7:04 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-03 13:51 [PATCH v3 0/2] driver core: make references to unregistered software nodes a special case Bartosz Golaszewski
2026-04-03 13:51 ` [PATCH v3 1/2] software node: return -ENOTCONN when referenced swnode is not registered yet Bartosz Golaszewski
2026-04-06 19:31 ` Andy Shevchenko
2026-04-07 7:04 ` Sakari Ailus
2026-04-03 13:51 ` [PATCH v3 2/2] gpio: swnode: defer probe on references to unregistered software nodes Bartosz Golaszewski
2026-04-06 19:29 ` Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox