* [PATCH v3 1/8] of: base: Fix stack overflow in of_parse_phandle_with_args_map()
2026-10-20 13:00 [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps Ernest Van Hoecke
@ 2026-10-20 13:00 ` Ernest Van Hoecke
2026-10-20 13:58 ` Herve Codina
2026-10-20 13:00 ` [PATCH v3 2/8] of: property: fw_devlink: Follow GPIO nexus maps Ernest Van Hoecke
` (4 subsequent siblings)
5 siblings, 1 reply; 11+ messages in thread
From: Ernest Van Hoecke @ 2026-10-20 13:00 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan
Cc: Miquel Raynal (Schneider Electric), Frank Li, Kieran Bingham,
Pengutronix Kernel Team, Stephen Boyd, Brian Masney,
Linus Walleij, Bartosz Golaszewski, Uwe Kleine-König,
Herve Codina, Greg Kroah-Hartman, Geert Uytterhoeven,
Leonardo Costa, Frieder Schrempf, devicetree, linux-clk,
linux-gpio, linux-pwm, linux-kernel, Ernest Van Hoecke,
Uwe Kleine-König, stable
From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
of_parse_phandle_with_args_map() reads the #<stem>-cells property of the
provider referenced by the consumer into list_size. It then copies that
many cells of the consumer's specifier from out_args->args[] into the
on-stack initial_match_array[]. Both arrays hold MAX_PHANDLE_ARGS cells,
but list_size is never checked against that limit. A malformed
Devicetree with a larger cell count therefore makes the copy read past
out_args->args[] and write past initial_match_array[].
The cell count of each provider selected by a <stem>-map entry is
already rejected when it exceeds MAX_PHANDLE_ARGS. Apply the same limit
to the provider referenced by the consumer.
A plain reference to such a provider, without a map, now also fails.
Previously it succeeded with the specifier truncated to MAX_PHANDLE_ARGS
cells by __of_parse_phandle_with_args().
Fixes: bd6f2fd5a1d5 ("of: Support parsing phandle argument lists through a nexus node")
Suggested-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Link: https://lore.kernel.org/all/aq1CSswlo57jZpMH@monoceros/
Cc: stable@vger.kernel.org
Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
---
v3: New patch (Uwe)
---
drivers/of/base.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/of/base.c b/drivers/of/base.c
index f63a9486b130..5abadab22392 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -1587,6 +1587,11 @@ int of_parse_phandle_with_args_map(const struct device_node *np,
if (ret < 0)
goto put;
+ if (list_size > MAX_PHANDLE_ARGS) {
+ ret = -EINVAL;
+ goto put;
+ }
+
/* Precalculate the match array - this simplifies match loop */
for (i = 0; i < list_size; i++)
initial_match_array[i] = cpu_to_be32(out_args->args[i]);
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v3 1/8] of: base: Fix stack overflow in of_parse_phandle_with_args_map()
2026-10-20 13:00 ` [PATCH v3 1/8] of: base: Fix stack overflow in of_parse_phandle_with_args_map() Ernest Van Hoecke
@ 2026-10-20 13:58 ` Herve Codina
2026-10-21 16:05 ` Ernest Van Hoecke
0 siblings, 1 reply; 11+ messages in thread
From: Herve Codina @ 2026-10-20 13:58 UTC (permalink / raw)
To: Ernest Van Hoecke
Cc: Rob Herring, Saravana Kannan, Miquel Raynal (Schneider Electric),
Frank Li, Kieran Bingham, Pengutronix Kernel Team, Stephen Boyd,
Brian Masney, Linus Walleij, Bartosz Golaszewski,
Uwe Kleine-König, Greg Kroah-Hartman, Geert Uytterhoeven,
Leonardo Costa, Frieder Schrempf, devicetree, linux-clk,
linux-gpio, linux-pwm, linux-kernel, Ernest Van Hoecke,
Uwe Kleine-König, stable
Hi Ernest,
On Tue, 20 Oct 2026 15:00:12 +0200
Ernest Van Hoecke <ernestvanhoecke@gmail.com> wrote:
> From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
> of_parse_phandle_with_args_map() reads the #<stem>-cells property of the
> provider referenced by the consumer into list_size. It then copies that
> many cells of the consumer's specifier from out_args->args[] into the
> on-stack initial_match_array[]. Both arrays hold MAX_PHANDLE_ARGS cells,
> but list_size is never checked against that limit. A malformed
> Devicetree with a larger cell count therefore makes the copy read past
> out_args->args[] and write past initial_match_array[].
>
> The cell count of each provider selected by a <stem>-map entry is
> already rejected when it exceeds MAX_PHANDLE_ARGS. Apply the same limit
> to the provider referenced by the consumer.
>
> A plain reference to such a provider, without a map, now also fails.
> Previously it succeeded with the specifier truncated to MAX_PHANDLE_ARGS
> cells by __of_parse_phandle_with_args().
>
> Fixes: bd6f2fd5a1d5 ("of: Support parsing phandle argument lists through a nexus node")
> Suggested-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
> Link: https://lore.kernel.org/all/aq1CSswlo57jZpMH@monoceros/
> Cc: stable@vger.kernel.org
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
> ---
> v3: New patch (Uwe)
> ---
> drivers/of/base.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index f63a9486b130..5abadab22392 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -1587,6 +1587,11 @@ int of_parse_phandle_with_args_map(const struct device_node *np,
> if (ret < 0)
> goto put;
>
> + if (list_size > MAX_PHANDLE_ARGS) {
> + ret = -EINVAL;
> + goto put;
> + }
> +
I would be stricter here and avoid the usage of MAX_PHANDLE_ARGS.
First I would check the arrays size to be sure that they are consistent and
then check list_size against the array size.
--- 8< ---
BUILD_BUG_ON(ARRAY_SIZE(initial_match_array) != ARRAY_SIZE(out_args->args))
if (list_size > ARRAY_SIZE(initial_match_array)) {
ret = -EINVAL;
goto put;
}
--- 8< ---
IMHO, this is more robust against modification of the 'args' field
definition in struct of_phandle_args or modification of the MAX_PHANDLE_ARGS
value which could lead to some inconsistencies.
Best regards,
Hervé
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH v3 1/8] of: base: Fix stack overflow in of_parse_phandle_with_args_map()
2026-10-20 13:58 ` Herve Codina
@ 2026-10-21 16:05 ` Ernest Van Hoecke
0 siblings, 0 replies; 11+ messages in thread
From: Ernest Van Hoecke @ 2026-10-21 16:05 UTC (permalink / raw)
To: Herve Codina
Cc: Rob Herring, Saravana Kannan, Miquel Raynal (Schneider Electric),
Frank Li, Kieran Bingham, Pengutronix Kernel Team, Stephen Boyd,
Brian Masney, Linus Walleij, Bartosz Golaszewski,
Uwe Kleine-König, Greg Kroah-Hartman, Geert Uytterhoeven,
Leonardo Costa, Frieder Schrempf, devicetree, linux-clk,
linux-gpio, linux-pwm, linux-kernel, Ernest Van Hoecke,
Uwe Kleine-König, stable
On Tue, Oct 20, 2026 at 03:58:41PM +0200, Herve Codina wrote:
> Hi Ernest,
>
> On Tue, 20 Oct 2026 15:00:12 +0200
> Ernest Van Hoecke <ernestvanhoecke@gmail.com> wrote:
>
> > From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
> >
> > of_parse_phandle_with_args_map() reads the #<stem>-cells property of the
> > provider referenced by the consumer into list_size. It then copies that
> > many cells of the consumer's specifier from out_args->args[] into the
> > on-stack initial_match_array[]. Both arrays hold MAX_PHANDLE_ARGS cells,
> > but list_size is never checked against that limit. A malformed
> > Devicetree with a larger cell count therefore makes the copy read past
> > out_args->args[] and write past initial_match_array[].
> >
> > The cell count of each provider selected by a <stem>-map entry is
> > already rejected when it exceeds MAX_PHANDLE_ARGS. Apply the same limit
> > to the provider referenced by the consumer.
> >
> > A plain reference to such a provider, without a map, now also fails.
> > Previously it succeeded with the specifier truncated to MAX_PHANDLE_ARGS
> > cells by __of_parse_phandle_with_args().
> >
> > Fixes: bd6f2fd5a1d5 ("of: Support parsing phandle argument lists through a nexus node")
> > Suggested-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
> > Link: https://lore.kernel.org/all/aq1CSswlo57jZpMH@monoceros/
> > Cc: stable@vger.kernel.org
> > Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
> > ---
> > v3: New patch (Uwe)
> > ---
> > drivers/of/base.c | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/drivers/of/base.c b/drivers/of/base.c
> > index f63a9486b130..5abadab22392 100644
> > --- a/drivers/of/base.c
> > +++ b/drivers/of/base.c
> > @@ -1587,6 +1587,11 @@ int of_parse_phandle_with_args_map(const struct device_node *np,
> > if (ret < 0)
> > goto put;
> >
> > + if (list_size > MAX_PHANDLE_ARGS) {
> > + ret = -EINVAL;
> > + goto put;
> > + }
> > +
>
> I would be stricter here and avoid the usage of MAX_PHANDLE_ARGS.
>
> First I would check the arrays size to be sure that they are consistent and
> then check list_size against the array size.
>
> --- 8< ---
> BUILD_BUG_ON(ARRAY_SIZE(initial_match_array) != ARRAY_SIZE(out_args->args))
> if (list_size > ARRAY_SIZE(initial_match_array)) {
> ret = -EINVAL;
> goto put;
> }
> --- 8< ---
>
> IMHO, this is more robust against modification of the 'args' field
> definition in struct of_phandle_args or modification of the MAX_PHANDLE_ARGS
> value which could lead to some inconsistencies.
>
> Best regards,
> Hervé
Hi Hervé,
That seems reasonable and like a nice way to do it, thanks for the
suggestion. I'll incorporate this into the next version.
Kind regards,
Ernest
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 2/8] of: property: fw_devlink: Follow GPIO nexus maps
2026-10-20 13:00 [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps Ernest Van Hoecke
2026-10-20 13:00 ` [PATCH v3 1/8] of: base: Fix stack overflow in of_parse_phandle_with_args_map() Ernest Van Hoecke
@ 2026-10-20 13:00 ` Ernest Van Hoecke
2026-10-26 4:46 ` Saravana Kannan
2026-10-20 13:00 ` [PATCH v3 5/8] of: property: fw_devlink: Follow PWM " Ernest Van Hoecke
` (3 subsequent siblings)
5 siblings, 1 reply; 11+ messages in thread
From: Ernest Van Hoecke @ 2026-10-20 13:00 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan
Cc: Miquel Raynal (Schneider Electric), Frank Li, Kieran Bingham,
Pengutronix Kernel Team, Stephen Boyd, Brian Masney,
Linus Walleij, Bartosz Golaszewski, Uwe Kleine-König,
Herve Codina, Greg Kroah-Hartman, Geert Uytterhoeven,
Leonardo Costa, Frieder Schrempf, devicetree, linux-clk,
linux-gpio, linux-pwm, linux-kernel, Ernest Van Hoecke, stable,
Bartosz Golaszewski
From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
GPIO consumers use of_parse_phandle_with_args_map() to resolve
specifiers through gpio-map properties. fw_devlink instead parses GPIO
properties as direct phandle references, so it records the nexus node as
the supplier rather than the mapped GPIO provider.
A nexus is a translation node, not the GPIO provider, and need not be
populated as a device. The resulting fwnode link can therefore remain
unresolved and indefinitely defer the consumer while
device_links_check_suppliers() waits for the nexus.
Use the map-aware parser for all supported GPIO property spellings. This
makes fw_devlink resolve the same provider as the GPIO consumer API.
Direct GPIO references continue to work because the map-aware parser
returns the original provider when no gpio-map property is present.
Fixes: 7f00be96f125 ("of: property: Add device link support for interrupt-parent, dmas and -gpio(s)")
Reported-by: Leonardo Costa <leonardo.costa@toradex.com>
Link: https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
Tested-by: Leonardo Costa <leonardo.costa@toradex.com>
Cc: stable@vger.kernel.org
Reviewed-by: Linus Walleij <linusw@kernel.org>
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
---
drivers/of/property.c | 38 ++++++++++++++++++++++++++++----------
1 file changed, 28 insertions(+), 10 deletions(-)
diff --git a/drivers/of/property.c b/drivers/of/property.c
index 45e55f618488..aa65976739e1 100644
--- a/drivers/of/property.c
+++ b/drivers/of/property.c
@@ -1311,6 +1311,19 @@ static struct device_node *parse_prop_cells(struct device_node *np,
return sup_args.np;
}
+static struct device_node *parse_nexus_prop(struct device_node *np,
+ const char *prop_name, int index,
+ const char *stem_name)
+{
+ struct of_phandle_args sup_args;
+
+ if (of_parse_phandle_with_args_map(np, prop_name, stem_name, index,
+ &sup_args))
+ return NULL;
+
+ return sup_args.np;
+}
+
#define DEFINE_SIMPLE_PROP(fname, name, cells) \
static struct device_node *parse_##fname(struct device_node *np, \
const char *prop_name, int index) \
@@ -1361,6 +1374,15 @@ static struct device_node *parse_##fname(struct device_node *np, \
return parse_suffix_prop_cells(np, prop_name, index, suffix, cells); \
}
+#define DEFINE_SUFFIX_NEXUS_PROP(fname, suffix, stem) \
+static struct device_node *parse_##fname(struct device_node *np, \
+ const char *prop_name, int index) \
+{ \
+ if (!strends(prop_name, suffix)) \
+ return NULL; \
+ return parse_nexus_prop(np, prop_name, index, stem); \
+}
+
/**
* struct supplier_bindings - Property parsing functions for suppliers
*
@@ -1416,7 +1438,7 @@ DEFINE_SIMPLE_PROP(pses, "pses", "#pse-cells")
DEFINE_SIMPLE_PROP(power_supplies, "power-supplies", NULL)
DEFINE_SIMPLE_PROP(mmc_pwrseq, "mmc-pwrseq", NULL)
DEFINE_SUFFIX_PROP(regulators, "-supply", NULL)
-DEFINE_SUFFIX_PROP(gpio, "-gpio", "#gpio-cells")
+DEFINE_SUFFIX_NEXUS_PROP(gpio, "-gpio", "gpio")
static struct device_node *parse_pinctrl_n(struct device_node *np,
const char *prop_name, int index)
@@ -1436,8 +1458,10 @@ static struct device_node *parse_gpios(struct device_node *np,
if (strends(prop_name, ",nr-gpios"))
return NULL;
- return parse_suffix_prop_cells(np, prop_name, index, "-gpios",
- "#gpio-cells");
+ if (!strends(prop_name, "-gpios"))
+ return NULL;
+
+ return parse_nexus_prop(np, prop_name, index, "gpio");
}
static struct device_node *parse_iommu_maps(struct device_node *np,
@@ -1452,8 +1476,6 @@ static struct device_node *parse_iommu_maps(struct device_node *np,
static struct device_node *parse_gpio_compat(struct device_node *np,
const char *prop_name, int index)
{
- struct of_phandle_args sup_args;
-
if (strcmp(prop_name, "gpio") && strcmp(prop_name, "gpios"))
return NULL;
@@ -1464,11 +1486,7 @@ static struct device_node *parse_gpio_compat(struct device_node *np,
if (of_property_read_bool(np, "gpio-hog"))
return NULL;
- if (of_parse_phandle_with_args(np, prop_name, "#gpio-cells", index,
- &sup_args))
- return NULL;
-
- return sup_args.np;
+ return parse_nexus_prop(np, prop_name, index, "gpio");
}
static struct device_node *parse_i2c_parent(struct device_node *np,
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v3 2/8] of: property: fw_devlink: Follow GPIO nexus maps
2026-10-20 13:00 ` [PATCH v3 2/8] of: property: fw_devlink: Follow GPIO nexus maps Ernest Van Hoecke
@ 2026-10-26 4:46 ` Saravana Kannan
0 siblings, 0 replies; 11+ messages in thread
From: Saravana Kannan @ 2026-10-26 4:46 UTC (permalink / raw)
To: Ernest Van Hoecke
Cc: Rob Herring, Saravana Kannan, Miquel Raynal (Schneider Electric),
Frank Li, Kieran Bingham, Pengutronix Kernel Team, Stephen Boyd,
Brian Masney, Linus Walleij, Bartosz Golaszewski,
Uwe Kleine-König, Herve Codina, Greg Kroah-Hartman,
Geert Uytterhoeven, Leonardo Costa, Frieder Schrempf, devicetree,
linux-clk, linux-gpio, linux-pwm, linux-kernel, Ernest Van Hoecke,
stable, Bartosz Golaszewski
On Tue, Oct 20, 2026 at 6:00 AM Ernest Van Hoecke
<ernestvanhoecke@gmail.com> wrote:
>
> From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
> GPIO consumers use of_parse_phandle_with_args_map() to resolve
> specifiers through gpio-map properties. fw_devlink instead parses GPIO
> properties as direct phandle references, so it records the nexus node as
> the supplier rather than the mapped GPIO provider.
>
> A nexus is a translation node, not the GPIO provider, and need not be
> populated as a device. The resulting fwnode link can therefore remain
> unresolved and indefinitely defer the consumer while
> device_links_check_suppliers() waits for the nexus.
>
> Use the map-aware parser for all supported GPIO property spellings. This
> makes fw_devlink resolve the same provider as the GPIO consumer API.
> Direct GPIO references continue to work because the map-aware parser
> returns the original provider when no gpio-map property is present.
>
> Fixes: 7f00be96f125 ("of: property: Add device link support for interrupt-parent, dmas and -gpio(s)")
> Reported-by: Leonardo Costa <leonardo.costa@toradex.com>
> Link: https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
> Tested-by: Leonardo Costa <leonardo.costa@toradex.com>
> Cc: stable@vger.kernel.org
> Reviewed-by: Linus Walleij <linusw@kernel.org>
> Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
> Reviewed-by: Herve Codina <herve.codina@bootlin.com>
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
> ---
> drivers/of/property.c | 38 ++++++++++++++++++++++++++++----------
> 1 file changed, 28 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/of/property.c b/drivers/of/property.c
> index 45e55f618488..aa65976739e1 100644
> --- a/drivers/of/property.c
> +++ b/drivers/of/property.c
> @@ -1311,6 +1311,19 @@ static struct device_node *parse_prop_cells(struct device_node *np,
> return sup_args.np;
> }
>
> +static struct device_node *parse_nexus_prop(struct device_node *np,
> + const char *prop_name, int index,
> + const char *stem_name)
> +{
> + struct of_phandle_args sup_args;
> +
> + if (of_parse_phandle_with_args_map(np, prop_name, stem_name, index,
> + &sup_args))
> + return NULL;
> +
> + return sup_args.np;
> +}
> +
> #define DEFINE_SIMPLE_PROP(fname, name, cells) \
> static struct device_node *parse_##fname(struct device_node *np, \
> const char *prop_name, int index) \
> @@ -1361,6 +1374,15 @@ static struct device_node *parse_##fname(struct device_node *np, \
> return parse_suffix_prop_cells(np, prop_name, index, suffix, cells); \
> }
>
> +#define DEFINE_SUFFIX_NEXUS_PROP(fname, suffix, stem) \
It's the node that's called the nexus node. The properties themselves
all have a "map" in their name.
I'd prefer calling these DEFINE_SUFFIX_MAP_PROP() and the simple one
as DEFINE_SIMPLE_MAP_PROP(). Similar fixes for the function names too.
I know it's a nit pick, but I think it makes sense.
-Saravana
> +static struct device_node *parse_##fname(struct device_node *np, \
> + const char *prop_name, int index) \
> +{ \
> + if (!strends(prop_name, suffix)) \
> + return NULL; \
> + return parse_nexus_prop(np, prop_name, index, stem); \
> +}
> +
> /**
> * struct supplier_bindings - Property parsing functions for suppliers
> *
> @@ -1416,7 +1438,7 @@ DEFINE_SIMPLE_PROP(pses, "pses", "#pse-cells")
> DEFINE_SIMPLE_PROP(power_supplies, "power-supplies", NULL)
> DEFINE_SIMPLE_PROP(mmc_pwrseq, "mmc-pwrseq", NULL)
> DEFINE_SUFFIX_PROP(regulators, "-supply", NULL)
> -DEFINE_SUFFIX_PROP(gpio, "-gpio", "#gpio-cells")
> +DEFINE_SUFFIX_NEXUS_PROP(gpio, "-gpio", "gpio")
>
> static struct device_node *parse_pinctrl_n(struct device_node *np,
> const char *prop_name, int index)
> @@ -1436,8 +1458,10 @@ static struct device_node *parse_gpios(struct device_node *np,
> if (strends(prop_name, ",nr-gpios"))
> return NULL;
>
> - return parse_suffix_prop_cells(np, prop_name, index, "-gpios",
> - "#gpio-cells");
> + if (!strends(prop_name, "-gpios"))
> + return NULL;
> +
> + return parse_nexus_prop(np, prop_name, index, "gpio");
> }
>
> static struct device_node *parse_iommu_maps(struct device_node *np,
> @@ -1452,8 +1476,6 @@ static struct device_node *parse_iommu_maps(struct device_node *np,
> static struct device_node *parse_gpio_compat(struct device_node *np,
> const char *prop_name, int index)
> {
> - struct of_phandle_args sup_args;
> -
> if (strcmp(prop_name, "gpio") && strcmp(prop_name, "gpios"))
> return NULL;
>
> @@ -1464,11 +1486,7 @@ static struct device_node *parse_gpio_compat(struct device_node *np,
> if (of_property_read_bool(np, "gpio-hog"))
> return NULL;
>
> - if (of_parse_phandle_with_args(np, prop_name, "#gpio-cells", index,
> - &sup_args))
> - return NULL;
> -
> - return sup_args.np;
> + return parse_nexus_prop(np, prop_name, index, "gpio");
> }
>
> static struct device_node *parse_i2c_parent(struct device_node *np,
>
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 5/8] of: property: fw_devlink: Follow PWM nexus maps
2026-10-20 13:00 [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps Ernest Van Hoecke
2026-10-20 13:00 ` [PATCH v3 1/8] of: base: Fix stack overflow in of_parse_phandle_with_args_map() Ernest Van Hoecke
2026-10-20 13:00 ` [PATCH v3 2/8] of: property: fw_devlink: Follow GPIO nexus maps Ernest Van Hoecke
@ 2026-10-20 13:00 ` Ernest Van Hoecke
2026-10-22 8:13 ` [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock " Uwe Kleine-König
` (2 subsequent siblings)
5 siblings, 0 replies; 11+ messages in thread
From: Ernest Van Hoecke @ 2026-10-20 13:00 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan
Cc: Miquel Raynal (Schneider Electric), Frank Li, Kieran Bingham,
Pengutronix Kernel Team, Stephen Boyd, Brian Masney,
Linus Walleij, Bartosz Golaszewski, Uwe Kleine-König,
Herve Codina, Greg Kroah-Hartman, Geert Uytterhoeven,
Leonardo Costa, Frieder Schrempf, devicetree, linux-clk,
linux-gpio, linux-pwm, linux-kernel, Ernest Van Hoecke, stable
From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
PWM consumers use of_parse_phandle_with_args_map() to resolve specifiers
through pwm-map properties. fw_devlink instead parses the pwms property
as a direct phandle reference, so it records the nexus node as the
supplier rather than the mapped PWM provider.
A nexus is a translation node, not the PWM provider, and need not be
populated as a device. The resulting fwnode link can therefore remain
unresolved and indefinitely defer the consumer while
device_links_check_suppliers() waits for the nexus.
Use the map-aware parser for pwms so fw_devlink resolves the same
provider as the PWM consumer API. Direct PWM references continue to work
because the map-aware parser returns the original provider when no
pwm-map property is present.
Fixes: e71e46a6f19c ("pwm: Add support for pwm nexus dt bindings")
Reported-by: Leonardo Costa <leonardo.costa@toradex.com>
Link: https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
Tested-by: Leonardo Costa <leonardo.costa@toradex.com>
Cc: stable@vger.kernel.org
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
---
drivers/of/property.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/of/property.c b/drivers/of/property.c
index 99381c07848d..53301cdac6a9 100644
--- a/drivers/of/property.c
+++ b/drivers/of/property.c
@@ -1331,6 +1331,15 @@ static struct device_node *parse_##fname(struct device_node *np, \
return parse_prop_cells(np, prop_name, index, name, cells); \
}
+#define DEFINE_SIMPLE_NEXUS_PROP(fname, name, stem) \
+static struct device_node *parse_##fname(struct device_node *np, \
+ const char *prop_name, int index) \
+{ \
+ if (strcmp(prop_name, name)) \
+ return NULL; \
+ return parse_nexus_prop(np, prop_name, index, stem); \
+}
+
/**
* parse_suffix_prop_cells - Suffix property parsing function for suppliers
*
@@ -1426,7 +1435,7 @@ DEFINE_SIMPLE_PROP(extcon, "extcon", NULL)
DEFINE_SIMPLE_PROP(nvmem_cells, "nvmem-cells", "#nvmem-cell-cells")
DEFINE_SIMPLE_PROP(phys, "phys", "#phy-cells")
DEFINE_SIMPLE_PROP(wakeup_parent, "wakeup-parent", NULL)
-DEFINE_SIMPLE_PROP(pwms, "pwms", "#pwm-cells")
+DEFINE_SIMPLE_NEXUS_PROP(pwms, "pwms", "pwm")
DEFINE_SIMPLE_PROP(resets, "resets", "#reset-cells")
DEFINE_SIMPLE_PROP(leds, "leds", NULL)
DEFINE_SIMPLE_PROP(backlight, "backlight", NULL)
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps
2026-10-20 13:00 [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps Ernest Van Hoecke
` (2 preceding siblings ...)
2026-10-20 13:00 ` [PATCH v3 5/8] of: property: fw_devlink: Follow PWM " Ernest Van Hoecke
@ 2026-10-22 8:13 ` Uwe Kleine-König
2026-10-22 8:32 ` Bartosz Golaszewski
2026-10-26 4:59 ` Saravana Kannan
5 siblings, 0 replies; 11+ messages in thread
From: Uwe Kleine-König @ 2026-10-22 8:13 UTC (permalink / raw)
To: Ernest Van Hoecke
Cc: Rob Herring, Saravana Kannan, Miquel Raynal (Schneider Electric),
Frank Li, Kieran Bingham, Pengutronix Kernel Team, Stephen Boyd,
Brian Masney, Linus Walleij, Bartosz Golaszewski, Herve Codina,
Greg Kroah-Hartman, Geert Uytterhoeven, Leonardo Costa,
Frieder Schrempf, devicetree, linux-clk, linux-gpio, linux-pwm,
linux-kernel, Ernest Van Hoecke, stable, Bartosz Golaszewski
[-- Attachment #1: Type: text/plain, Size: 2708 bytes --]
On Tue, Oct 20, 2026 at 03:00:11PM +0200, Ernest Van Hoecke wrote:
> This series fixes an fw_devlink supplier-resolution problem reported by
> Leonardo Costa while using a Devicetree nexus to describe GPIO and PWM
> resources routed through an LVDS connector. Consumers referencing the
> nexus could remain deferred because fw_devlink linked them to the nexus
> rather than to the providers selected by gpio-map and pwm-map. [1]
>
> GPIO, PWM and clock consumer APIs use of_parse_phandle_with_args_map()
> to resolve specifiers through gpio-map, pwm-map and clock-map
> properties. The corresponding fw_devlink parsers use direct phandle
> parsing instead. Given a consumer which references a nexus, the consumer
> API and fw_devlink therefore resolve the reference to different nodes:
>
> consumer API: consumer -> nexus -> mapped provider
> fw_devlink: consumer -> nexus
>
> A nexus is a translation node rather than the resource provider and need
> not have a driver. The link to it can consequently remain unresolved and
> defer the consumer even though the mapped provider is available.
>
> Make the fw_devlink GPIO, PWM and clock parsers use the same map-aware
> resolver as their consumer APIs. The resolver also handles valid direct
> references by returning the original provider when no map is present.
> Use dedicated exact-name and suffix declaration macros to opt these
> bindings into map-aware parsing without changing unrelated property
> parsers. Retain GPIO's existing exclusions and compatibility handling.
>
> Since fw_devlink runs the resolver for every consumer when its device is
> created, patch 1 first fixes a stack buffer overflow in the resolver
> when the provider referenced by the consumer has more than
> MAX_PHANDLE_ARGS cells.
>
> The regression tests call the OF add_links operation and verify that a
> mapped reference creates exactly one link to the provider selected by
> the referenced map entry, not to the nexus. They also cover valid direct
> references. The GPIO tests exercise all property spellings recognized by
> fw_devlink, including the deprecated singular and unprefixed forms.
>
> The clock patch fixes aacc54c67869 ("clk: Add support for clock nexus dt
> bindings"), which has been in clk-next and linux-next with the same hash
> since next-20260907. There is no build-time dependency on it, but the
> clock patch should not reach mainline before it. The series applies to
> next-20261014.
Acked-by: Uwe Kleine-König <ukleinek@kernel.org>
I guess this will be merged via a dt tree and so doesn't need further
action from my side.
Best regards and thanks for caring about this issue,
Uwe
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps
2026-10-20 13:00 [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps Ernest Van Hoecke
` (3 preceding siblings ...)
2026-10-22 8:13 ` [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock " Uwe Kleine-König
@ 2026-10-22 8:32 ` Bartosz Golaszewski
2026-10-26 4:59 ` Saravana Kannan
5 siblings, 0 replies; 11+ messages in thread
From: Bartosz Golaszewski @ 2026-10-22 8:32 UTC (permalink / raw)
To: Ernest Van Hoecke
Cc: Rob Herring, Saravana Kannan, Miquel Raynal (Schneider Electric),
Frank Li, Kieran Bingham, Pengutronix Kernel Team, Stephen Boyd,
Brian Masney, Linus Walleij, Bartosz Golaszewski,
Uwe Kleine-König, Herve Codina, Greg Kroah-Hartman,
Geert Uytterhoeven, Leonardo Costa, Frieder Schrempf, devicetree,
linux-clk, linux-gpio, linux-pwm, linux-kernel, Ernest Van Hoecke,
Uwe Kleine-König, stable, Bartosz Golaszewski
On Tue, 20 Oct 2026 15:00:11 +0200, Ernest Van Hoecke
<ernestvanhoecke@gmail.com> said:
> This series fixes an fw_devlink supplier-resolution problem reported by
> Leonardo Costa while using a Devicetree nexus to describe GPIO and PWM
> resources routed through an LVDS connector. Consumers referencing the
> nexus could remain deferred because fw_devlink linked them to the nexus
> rather than to the providers selected by gpio-map and pwm-map. [1]
>
> GPIO, PWM and clock consumer APIs use of_parse_phandle_with_args_map()
> to resolve specifiers through gpio-map, pwm-map and clock-map
> properties. The corresponding fw_devlink parsers use direct phandle
> parsing instead. Given a consumer which references a nexus, the consumer
> API and fw_devlink therefore resolve the reference to different nodes:
>
> consumer API: consumer -> nexus -> mapped provider
> fw_devlink: consumer -> nexus
>
> A nexus is a translation node rather than the resource provider and need
> not have a driver. The link to it can consequently remain unresolved and
> defer the consumer even though the mapped provider is available.
>
> Make the fw_devlink GPIO, PWM and clock parsers use the same map-aware
> resolver as their consumer APIs. The resolver also handles valid direct
> references by returning the original provider when no map is present.
> Use dedicated exact-name and suffix declaration macros to opt these
> bindings into map-aware parsing without changing unrelated property
> parsers. Retain GPIO's existing exclusions and compatibility handling.
>
> Since fw_devlink runs the resolver for every consumer when its device is
> created, patch 1 first fixes a stack buffer overflow in the resolver
> when the provider referenced by the consumer has more than
> MAX_PHANDLE_ARGS cells.
>
> The regression tests call the OF add_links operation and verify that a
> mapped reference creates exactly one link to the provider selected by
> the referenced map entry, not to the nexus. They also cover valid direct
> references. The GPIO tests exercise all property spellings recognized by
> fw_devlink, including the deprecated singular and unprefixed forms.
>
> The clock patch fixes aacc54c67869 ("clk: Add support for clock nexus dt
> bindings"), which has been in clk-next and linux-next with the same hash
> since next-20260907. There is no build-time dependency on it, but the
> clock patch should not reach mainline before it. The series applies to
> next-20261014.
>
> Tested with:
> - The CONFIG_OF_UNITTEST cases under QEMU/x86_64: all passed. With the
> fw_devlink parser changes reverted, exactly the six mapped consumer
> cases fail.
> - W=1 builds of each patch on arm64, including the OF unittest data
> - Toradex Verdin iMX8M Plus hardware using a connector nexus for the
> display GPIO and PWM resources (v2, same fw_devlink changes): the
> display probes successfully
>
> [1] https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
>
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
> ---
Acked-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps
2026-10-20 13:00 [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps Ernest Van Hoecke
` (4 preceding siblings ...)
2026-10-22 8:32 ` Bartosz Golaszewski
@ 2026-10-26 4:59 ` Saravana Kannan
2026-10-29 15:48 ` Ernest Van Hoecke
5 siblings, 1 reply; 11+ messages in thread
From: Saravana Kannan @ 2026-10-26 4:59 UTC (permalink / raw)
To: Ernest Van Hoecke
Cc: Rob Herring, Saravana Kannan, Miquel Raynal (Schneider Electric),
Frank Li, Kieran Bingham, Pengutronix Kernel Team, Stephen Boyd,
Brian Masney, Linus Walleij, Bartosz Golaszewski,
Uwe Kleine-König, Herve Codina, Greg Kroah-Hartman,
Geert Uytterhoeven, Leonardo Costa, Frieder Schrempf, devicetree,
linux-clk, linux-gpio, linux-pwm, linux-kernel, Ernest Van Hoecke,
Uwe Kleine-König, stable, Bartosz Golaszewski
On Tue, Oct 20, 2026 at 6:00 AM Ernest Van Hoecke
<ernestvanhoecke@gmail.com> wrote:
>
> This series fixes an fw_devlink supplier-resolution problem reported by
> Leonardo Costa while using a Devicetree nexus to describe GPIO and PWM
> resources routed through an LVDS connector. Consumers referencing the
> nexus could remain deferred because fw_devlink linked them to the nexus
> rather than to the providers selected by gpio-map and pwm-map. [1]
>
> GPIO, PWM and clock consumer APIs use of_parse_phandle_with_args_map()
> to resolve specifiers through gpio-map, pwm-map and clock-map
> properties. The corresponding fw_devlink parsers use direct phandle
> parsing instead. Given a consumer which references a nexus, the consumer
> API and fw_devlink therefore resolve the reference to different nodes:
>
> consumer API: consumer -> nexus -> mapped provider
> fw_devlink: consumer -> nexus
>
> A nexus is a translation node rather than the resource provider and need
> not have a driver. The link to it can consequently remain unresolved and
> defer the consumer even though the mapped provider is available.
>
> Make the fw_devlink GPIO, PWM and clock parsers use the same map-aware
> resolver as their consumer APIs. The resolver also handles valid direct
> references by returning the original provider when no map is present.
> Use dedicated exact-name and suffix declaration macros to opt these
> bindings into map-aware parsing without changing unrelated property
> parsers. Retain GPIO's existing exclusions and compatibility handling.
>
> Since fw_devlink runs the resolver for every consumer when its device is
> created, patch 1 first fixes a stack buffer overflow in the resolver
> when the provider referenced by the consumer has more than
> MAX_PHANDLE_ARGS cells.
>
> The regression tests call the OF add_links operation and verify that a
> mapped reference creates exactly one link to the provider selected by
> the referenced map entry, not to the nexus. They also cover valid direct
> references. The GPIO tests exercise all property spellings recognized by
> fw_devlink, including the deprecated singular and unprefixed forms.
>
> The clock patch fixes aacc54c67869 ("clk: Add support for clock nexus dt
> bindings"), which has been in clk-next and linux-next with the same hash
> since next-20260907. There is no build-time dependency on it, but the
> clock patch should not reach mainline before it. The series applies to
> next-20261014.
>
> Tested with:
> - The CONFIG_OF_UNITTEST cases under QEMU/x86_64: all passed. With the
> fw_devlink parser changes reverted, exactly the six mapped consumer
> cases fail.
> - W=1 builds of each patch on arm64, including the OF unittest data
> - Toradex Verdin iMX8M Plus hardware using a connector nexus for the
> display GPIO and PWM resources (v2, same fw_devlink changes): the
> display probes successfully
>
> [1] https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
Thanks for the patch series to keep this updated! Took a close look at
all the patches and they mostly look good.
Left some minor comments. Should be easy to address/clarify.
When they are addressed:
Reviewed-by: Saravana Kannan <saravanak@kernel.org>
Thanks,
Saravana
>
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
> ---
> Changes in v3:
> - New patch 1 fixing a stack overflow in
> of_parse_phandle_with_args_map() (Uwe)
> - Tests: route map entries to different providers and reference a
> non-first entry with non-zero cells (Herve)
> - Collected R-b tags
> - Rebased onto next-20261014
> - Link to v2: https://lore.kernel.org/r/20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com
>
> Changes in v2:
> - Split the unit tests into per-resource follow-up commits
> - Added clock nexus as well because the clock nexus series was merged:
> https://lore.kernel.org/all/20260807-schneider-v7-2-rc1-eip201-upstream-v5-0-8785f9531cf0@bootlin.com/
> - Link to v1: https://lore.kernel.org/r/20260902-fw-devlink-nexus-ready-v1-0-68fe1996e78a@toradex.com
>
> ---
> Ernest Van Hoecke (8):
> of: base: Fix stack overflow in of_parse_phandle_with_args_map()
> of: property: fw_devlink: Follow GPIO nexus maps
> of: property: fw_devlink: Report unsupported supplier linking
> of: unittest: Test fw_devlink with GPIO nexus maps
> of: property: fw_devlink: Follow PWM nexus maps
> of: unittest: Test fw_devlink with PWM nexus maps
> of: property: fw_devlink: Follow clock nexus maps
> of: unittest: Test fw_devlink with clock nexus maps
>
> drivers/of/base.c | 5 ++
> drivers/of/property.c | 53 ++++++++++++++-----
> drivers/of/unittest-data/tests-phandle.dtsi | 81 +++++++++++++++++++++++++++++
> drivers/of/unittest.c | 79 ++++++++++++++++++++++++++++
> 4 files changed, 205 insertions(+), 13 deletions(-)
> ---
> base-commit: d419d682257d813f6cb7a28e42b35d0edf4ad038
> change-id: 20260901-fw-devlink-nexus-ready-c859706b019d
>
> Best regards,
> --
> Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps
2026-10-26 4:59 ` Saravana Kannan
@ 2026-10-29 15:48 ` Ernest Van Hoecke
0 siblings, 0 replies; 11+ messages in thread
From: Ernest Van Hoecke @ 2026-10-29 15:48 UTC (permalink / raw)
To: Saravana Kannan
Cc: Rob Herring, Miquel Raynal (Schneider Electric), Frank Li,
Kieran Bingham, Pengutronix Kernel Team, Stephen Boyd,
Brian Masney, Linus Walleij, Bartosz Golaszewski,
Uwe Kleine-König, Herve Codina, Greg Kroah-Hartman,
Geert Uytterhoeven, Leonardo Costa, Frieder Schrempf, devicetree,
linux-clk, linux-gpio, linux-pwm, linux-kernel, Ernest Van Hoecke,
Uwe Kleine-König, stable, Bartosz Golaszewski
On Sun, Oct 25, 2026 at 09:59:36PM -0700, Saravana Kannan wrote:
> On Tue, Oct 20, 2026 at 6:00 AM Ernest Van Hoecke
> <ernestvanhoecke@gmail.com> wrote:
> >
> > This series fixes an fw_devlink supplier-resolution problem reported by
> > Leonardo Costa while using a Devicetree nexus to describe GPIO and PWM
> > resources routed through an LVDS connector. Consumers referencing the
> > nexus could remain deferred because fw_devlink linked them to the nexus
> > rather than to the providers selected by gpio-map and pwm-map. [1]
> >
> > GPIO, PWM and clock consumer APIs use of_parse_phandle_with_args_map()
> > to resolve specifiers through gpio-map, pwm-map and clock-map
> > properties. The corresponding fw_devlink parsers use direct phandle
> > parsing instead. Given a consumer which references a nexus, the consumer
> > API and fw_devlink therefore resolve the reference to different nodes:
> >
> > consumer API: consumer -> nexus -> mapped provider
> > fw_devlink: consumer -> nexus
> >
> > A nexus is a translation node rather than the resource provider and need
> > not have a driver. The link to it can consequently remain unresolved and
> > defer the consumer even though the mapped provider is available.
> >
> > Make the fw_devlink GPIO, PWM and clock parsers use the same map-aware
> > resolver as their consumer APIs. The resolver also handles valid direct
> > references by returning the original provider when no map is present.
> > Use dedicated exact-name and suffix declaration macros to opt these
> > bindings into map-aware parsing without changing unrelated property
> > parsers. Retain GPIO's existing exclusions and compatibility handling.
> >
> > Since fw_devlink runs the resolver for every consumer when its device is
> > created, patch 1 first fixes a stack buffer overflow in the resolver
> > when the provider referenced by the consumer has more than
> > MAX_PHANDLE_ARGS cells.
> >
> > The regression tests call the OF add_links operation and verify that a
> > mapped reference creates exactly one link to the provider selected by
> > the referenced map entry, not to the nexus. They also cover valid direct
> > references. The GPIO tests exercise all property spellings recognized by
> > fw_devlink, including the deprecated singular and unprefixed forms.
> >
> > The clock patch fixes aacc54c67869 ("clk: Add support for clock nexus dt
> > bindings"), which has been in clk-next and linux-next with the same hash
> > since next-20260907. There is no build-time dependency on it, but the
> > clock patch should not reach mainline before it. The series applies to
> > next-20261014.
> >
> > Tested with:
> > - The CONFIG_OF_UNITTEST cases under QEMU/x86_64: all passed. With the
> > fw_devlink parser changes reverted, exactly the six mapped consumer
> > cases fail.
> > - W=1 builds of each patch on arm64, including the OF unittest data
> > - Toradex Verdin iMX8M Plus hardware using a connector nexus for the
> > display GPIO and PWM resources (v2, same fw_devlink changes): the
> > display probes successfully
> >
> > [1] https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
>
> Thanks for the patch series to keep this updated! Took a close look at
> all the patches and they mostly look good.
>
> Left some minor comments. Should be easy to address/clarify.
>
> When they are addressed:
> Reviewed-by: Saravana Kannan <saravanak@kernel.org>
>
> Thanks,
> Saravana
>
Hi Saravana,
Thanks for the review. I will address your comments in v4 which will
follow in December as I'll be away in November.
Thanks,
Ernest
> >
> > Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
> >
> > ---
> > Changes in v3:
> > - New patch 1 fixing a stack overflow in
> > of_parse_phandle_with_args_map() (Uwe)
> > - Tests: route map entries to different providers and reference a
> > non-first entry with non-zero cells (Herve)
> > - Collected R-b tags
> > - Rebased onto next-20261014
> > - Link to v2: https://lore.kernel.org/r/20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com
> >
> > Changes in v2:
> > - Split the unit tests into per-resource follow-up commits
> > - Added clock nexus as well because the clock nexus series was merged:
> > https://lore.kernel.org/all/20260807-schneider-v7-2-rc1-eip201-upstream-v5-0-8785f9531cf0@bootlin.com/
> > - Link to v1: https://lore.kernel.org/r/20260902-fw-devlink-nexus-ready-v1-0-68fe1996e78a@toradex.com
> >
> > ---
> > Ernest Van Hoecke (8):
> > of: base: Fix stack overflow in of_parse_phandle_with_args_map()
> > of: property: fw_devlink: Follow GPIO nexus maps
> > of: property: fw_devlink: Report unsupported supplier linking
> > of: unittest: Test fw_devlink with GPIO nexus maps
> > of: property: fw_devlink: Follow PWM nexus maps
> > of: unittest: Test fw_devlink with PWM nexus maps
> > of: property: fw_devlink: Follow clock nexus maps
> > of: unittest: Test fw_devlink with clock nexus maps
> >
> > drivers/of/base.c | 5 ++
> > drivers/of/property.c | 53 ++++++++++++++-----
> > drivers/of/unittest-data/tests-phandle.dtsi | 81 +++++++++++++++++++++++++++++
> > drivers/of/unittest.c | 79 ++++++++++++++++++++++++++++
> > 4 files changed, 205 insertions(+), 13 deletions(-)
> > ---
> > base-commit: d419d682257d813f6cb7a28e42b35d0edf4ad038
> > change-id: 20260901-fw-devlink-nexus-ready-c859706b019d
> >
> > Best regards,
> > --
> > Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
> >
^ permalink raw reply [flat|nested] 11+ messages in thread