* [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
` (6 subsequent siblings)
7 siblings, 1 reply; 14+ 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] 14+ 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
0 siblings, 0 replies; 14+ 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] 14+ 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-20 13:00 ` [PATCH v3 3/8] of: property: fw_devlink: Report unsupported supplier linking Ernest Van Hoecke
` (5 subsequent siblings)
7 siblings, 0 replies; 14+ 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] 14+ messages in thread* [PATCH v3 3/8] of: property: fw_devlink: Report unsupported supplier linking
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-20 13:00 ` [PATCH v3 4/8] of: unittest: Test fw_devlink with GPIO nexus maps Ernest Van Hoecke
` (4 subsequent siblings)
7 siblings, 0 replies; 14+ 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
From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
OF supplier linking is deliberately disabled on OLPC and Intel CE4100
systems. The add_links operation currently returns zero on these systems,
so callers cannot distinguish unsupported linking from success.
Return -EOPNOTSUPP when supplier linking is unsupported. This allows OF
unit tests to skip link assertions on these systems without exposing the
private platform-support predicate.
The driver core ignores the add_links return value and marks the fwnode
as processed regardless, so its link creation and retry behavior remain
unchanged.
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
---
drivers/of/property.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/of/property.c b/drivers/of/property.c
index aa65976739e1..99381c07848d 100644
--- a/drivers/of/property.c
+++ b/drivers/of/property.c
@@ -1708,7 +1708,7 @@ static int of_fwnode_add_links(struct fwnode_handle *fwnode)
struct device_node *con_np = to_of_node(fwnode);
if (!of_is_fwnode_add_links_supported())
- return 0;
+ return -EOPNOTSUPP;
if (!con_np)
return -EINVAL;
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH v3 4/8] of: unittest: Test fw_devlink with 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
` (2 preceding siblings ...)
2026-10-20 13:00 ` [PATCH v3 3/8] of: property: fw_devlink: Report unsupported supplier linking Ernest Van Hoecke
@ 2026-10-20 13:00 ` Ernest Van Hoecke
2026-10-20 14:05 ` Herve Codina
2026-10-20 13:00 ` [PATCH v3 5/8] of: property: fw_devlink: Follow PWM " Ernest Van Hoecke
` (3 subsequent siblings)
7 siblings, 1 reply; 14+ 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,
Bartosz Golaszewski
From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
Add OF unit tests that call the fw_devlink add_links operation for GPIOs
routed through nexus maps. Verify that each mapped consumer has exactly
one link to the final GPIO provider rather than to the nexus.
Also cover direct references and all GPIO property spellings recognized
by fw_devlink, including the deprecated singular and unprefixed forms.
The gpio-map routes its entries to different providers so that selecting
the wrong entry is caught as well.
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Reviewed-by: Linus Walleij <linusw@kernel.org>
Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
---
v3: Route gpio-map entries to two providers, use a middle entry (Herve)
v2: https://lore.kernel.org/r/20260910-fw-devlink-nexus-ready-v2-3-17ac82dbe226@toradex.com
---
drivers/of/unittest-data/tests-phandle.dtsi | 39 +++++++++++++++
drivers/of/unittest.c | 75 +++++++++++++++++++++++++++++
2 files changed, 114 insertions(+)
diff --git a/drivers/of/unittest-data/tests-phandle.dtsi b/drivers/of/unittest-data/tests-phandle.dtsi
index 554a996b2ef1..f5d7ee072c90 100644
--- a/drivers/of/unittest-data/tests-phandle.dtsi
+++ b/drivers/of/unittest-data/tests-phandle.dtsi
@@ -79,6 +79,45 @@ consumer-b {
phandle-list-bad-args = <&provider2 1 0>,
<&provider4 0>;
};
+
+ fw-devlink-tests {
+ gpio_provider_a: gpio-controller-a {
+ #gpio-cells = <2>;
+ };
+
+ gpio_provider_b: gpio-controller-b {
+ #gpio-cells = <2>;
+ };
+
+ fwdevlink_nexus: nexus {
+ #gpio-cells = <2>;
+ gpio-map = <1 0 &gpio_provider_a 3 0>,
+ <2 0 &gpio_provider_b 5 0>,
+ <3 0 &gpio_provider_a 7 0>;
+ gpio-map-mask = <0xffffffff 0>;
+ gpio-map-pass-thru = <0 0xffffffff>;
+ };
+
+ gpio-compat-consumer {
+ gpios = <&fwdevlink_nexus 2 1>;
+ };
+
+ gpio-compat-singular-consumer {
+ gpio = <&fwdevlink_nexus 2 1>;
+ };
+
+ gpio-consumer {
+ test-gpios = <&fwdevlink_nexus 2 1>;
+ };
+
+ gpio-direct-consumer {
+ test-gpios = <&gpio_provider_a 1 0>;
+ };
+
+ gpio-singular-consumer {
+ test-gpio = <&fwdevlink_nexus 2 1>;
+ };
+ };
};
};
};
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
index e255f54f4d76..f15c110dbf4d 100644
--- a/drivers/of/unittest.c
+++ b/drivers/of/unittest.c
@@ -10,6 +10,7 @@
#include <linux/dma-direct.h> /* to test phys_to_dma/dma_to_phys */
#include <linux/err.h>
#include <linux/errno.h>
+#include <linux/fwnode.h>
#include <linux/hashtable.h>
#include <linux/libfdt.h>
#include <linux/of.h>
@@ -710,6 +711,79 @@ static void __init of_unittest_parse_phandle_with_args_map(void)
}
}
+static void __init of_unittest_fw_devlink_supplier(struct device_node *tests,
+ const char *consumer_name,
+ const char *supplier_name)
+{
+ struct device_node *consumer, *supplier;
+ struct fwnode_handle *consumer_fwnode;
+ struct fwnode_link *link;
+ unsigned int link_count = 0;
+ bool found = false;
+ int rc;
+
+ consumer = of_get_child_by_name(tests, consumer_name);
+ supplier = of_get_child_by_name(tests, supplier_name);
+ if (unittest(consumer && supplier, "missing consumer %s or supplier %s\n",
+ consumer_name, supplier_name))
+ goto put_nodes;
+
+ consumer_fwnode = of_fwnode_handle(consumer);
+ fwnode_links_purge(consumer_fwnode);
+ rc = fwnode_call_int_op(consumer_fwnode, add_links);
+ if (rc == -EOPNOTSUPP) {
+ pr_info_once("fw_devlink tests skipped: OF supplier links are not supported\n");
+ goto purge_links;
+ }
+ if (unittest(!rc, "failed to add links for %pOF: %d\n", consumer, rc))
+ goto purge_links;
+
+ /*
+ * The suppliers list should normally be accessed with fwnode_link_lock
+ * held, but that lock is private to the driver core. These test nodes
+ * are isolated and have no concurrent link updates.
+ */
+ list_for_each_entry(link, &consumer_fwnode->suppliers, c_hook) {
+ link_count++;
+ if (link->supplier == of_fwnode_handle(supplier))
+ found = true;
+ }
+
+ unittest(link_count == 1, "%pOF has %u suppliers, expected 1\n", consumer, link_count);
+ unittest(found, "%pOF is not linked to supplier %pOF\n", consumer, supplier);
+
+purge_links:
+ fwnode_links_purge(consumer_fwnode);
+put_nodes:
+ of_node_put(consumer);
+ of_node_put(supplier);
+}
+
+static void __init of_unittest_fw_devlink(void)
+{
+ static const struct {
+ const char *consumer;
+ const char *supplier;
+ } cases[] = {
+ { "gpio-compat-consumer", "gpio-controller-b" },
+ { "gpio-compat-singular-consumer", "gpio-controller-b" },
+ { "gpio-consumer", "gpio-controller-b" },
+ { "gpio-direct-consumer", "gpio-controller-a" },
+ { "gpio-singular-consumer", "gpio-controller-b" },
+ };
+ struct device_node *tests;
+ int i;
+
+ tests = of_find_node_by_path("/testcase-data/phandle-tests/fw-devlink-tests");
+ if (unittest(tests, "missing fw_devlink test data\n"))
+ return;
+
+ for (i = 0; i < ARRAY_SIZE(cases); i++)
+ of_unittest_fw_devlink_supplier(tests, cases[i].consumer, cases[i].supplier);
+
+ of_node_put(tests);
+}
+
static void __init of_unittest_property_string(void)
{
const char *strings[4];
@@ -4533,6 +4607,7 @@ static int __init of_unittest(void)
of_unittest_dynamic();
of_unittest_parse_phandle_with_args();
of_unittest_parse_phandle_with_args_map();
+ of_unittest_fw_devlink();
of_unittest_printf();
of_unittest_property_string();
of_unittest_property_copy();
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [PATCH v3 4/8] of: unittest: Test fw_devlink with GPIO nexus maps
2026-10-20 13:00 ` [PATCH v3 4/8] of: unittest: Test fw_devlink with GPIO nexus maps Ernest Van Hoecke
@ 2026-10-20 14:05 ` Herve Codina
0 siblings, 0 replies; 14+ messages in thread
From: Herve Codina @ 2026-10-20 14:05 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,
Bartosz Golaszewski
Hi Ernest,
On Tue, 20 Oct 2026 15:00:15 +0200
Ernest Van Hoecke <ernestvanhoecke@gmail.com> wrote:
> From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
> Add OF unit tests that call the fw_devlink add_links operation for GPIOs
> routed through nexus maps. Verify that each mapped consumer has exactly
> one link to the final GPIO provider rather than to the nexus.
>
> Also cover direct references and all GPIO property spellings recognized
> by fw_devlink, including the deprecated singular and unprefixed forms.
>
> The gpio-map routes its entries to different providers so that selecting
> the wrong entry is caught as well.
>
> Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
> Reviewed-by: Linus Walleij <linusw@kernel.org>
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
> ---
> v3: Route gpio-map entries to two providers, use a middle entry (Herve)
> v2: https://lore.kernel.org/r/20260910-fw-devlink-nexus-ready-v2-3-17ac82dbe226@toradex.com
> ---
> drivers/of/unittest-data/tests-phandle.dtsi | 39 +++++++++++++++
> drivers/of/unittest.c | 75 +++++++++++++++++++++++++++++
> 2 files changed, 114 insertions(+)
>
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Best regards,
Hervé
^ permalink raw reply [flat|nested] 14+ 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
` (3 preceding siblings ...)
2026-10-20 13:00 ` [PATCH v3 4/8] of: unittest: Test fw_devlink with GPIO nexus maps Ernest Van Hoecke
@ 2026-10-20 13:00 ` Ernest Van Hoecke
2026-10-20 13:00 ` [PATCH v3 6/8] of: unittest: Test fw_devlink with " Ernest Van Hoecke
` (2 subsequent siblings)
7 siblings, 0 replies; 14+ 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] 14+ messages in thread* [PATCH v3 6/8] of: unittest: Test fw_devlink with 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
` (4 preceding siblings ...)
2026-10-20 13:00 ` [PATCH v3 5/8] of: property: fw_devlink: Follow PWM " Ernest Van Hoecke
@ 2026-10-20 13:00 ` Ernest Van Hoecke
2026-10-20 14:11 ` Herve Codina
2026-10-20 13:00 ` [PATCH v3 7/8] of: property: fw_devlink: Follow clock " Ernest Van Hoecke
2026-10-20 13:00 ` [PATCH v3 8/8] of: unittest: Test fw_devlink with " Ernest Van Hoecke
7 siblings, 1 reply; 14+ 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
From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
Extend the fw_devlink OF unit tests with PWM references routed through a
nexus map. Verify that the mapped consumer has exactly one link to the
final PWM provider rather than to the nexus.
Also cover a direct PWM reference to ensure that it continues to resolve
to the original provider when no map is present.
Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
---
v3: Route pwm-map entries to two providers, use a middle entry (Herve)
v2: https://lore.kernel.org/r/20260910-fw-devlink-nexus-ready-v2-5-17ac82dbe226@toradex.com
---
drivers/of/unittest-data/tests-phandle.dtsi | 22 ++++++++++++++++++++++
drivers/of/unittest.c | 2 ++
2 files changed, 24 insertions(+)
diff --git a/drivers/of/unittest-data/tests-phandle.dtsi b/drivers/of/unittest-data/tests-phandle.dtsi
index f5d7ee072c90..1fd465bb8f79 100644
--- a/drivers/of/unittest-data/tests-phandle.dtsi
+++ b/drivers/of/unittest-data/tests-phandle.dtsi
@@ -89,13 +89,27 @@ gpio_provider_b: gpio-controller-b {
#gpio-cells = <2>;
};
+ pwm_provider_a: pwm-controller-a {
+ #pwm-cells = <2>;
+ };
+
+ pwm_provider_b: pwm-controller-b {
+ #pwm-cells = <2>;
+ };
+
fwdevlink_nexus: nexus {
#gpio-cells = <2>;
+ #pwm-cells = <2>;
gpio-map = <1 0 &gpio_provider_a 3 0>,
<2 0 &gpio_provider_b 5 0>,
<3 0 &gpio_provider_a 7 0>;
gpio-map-mask = <0xffffffff 0>;
gpio-map-pass-thru = <0 0xffffffff>;
+ pwm-map = <1 0 &pwm_provider_a 3 0>,
+ <2 0 &pwm_provider_b 5 0>,
+ <3 0 &pwm_provider_a 7 0>;
+ pwm-map-mask = <0xffffffff 0>;
+ pwm-map-pass-thru = <0 0xffffffff>;
};
gpio-compat-consumer {
@@ -117,6 +131,14 @@ gpio-direct-consumer {
gpio-singular-consumer {
test-gpio = <&fwdevlink_nexus 2 1>;
};
+
+ pwm-consumer {
+ pwms = <&fwdevlink_nexus 2 1000>;
+ };
+
+ pwm-direct-consumer {
+ pwms = <&pwm_provider_a 1 0>;
+ };
};
};
};
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
index f15c110dbf4d..320a992c4310 100644
--- a/drivers/of/unittest.c
+++ b/drivers/of/unittest.c
@@ -770,6 +770,8 @@ static void __init of_unittest_fw_devlink(void)
{ "gpio-consumer", "gpio-controller-b" },
{ "gpio-direct-consumer", "gpio-controller-a" },
{ "gpio-singular-consumer", "gpio-controller-b" },
+ { "pwm-consumer", "pwm-controller-b" },
+ { "pwm-direct-consumer", "pwm-controller-a" },
};
struct device_node *tests;
int i;
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [PATCH v3 6/8] of: unittest: Test fw_devlink with PWM nexus maps
2026-10-20 13:00 ` [PATCH v3 6/8] of: unittest: Test fw_devlink with " Ernest Van Hoecke
@ 2026-10-20 14:11 ` Herve Codina
0 siblings, 0 replies; 14+ messages in thread
From: Herve Codina @ 2026-10-20 14:11 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
Hi Ernest,
On Tue, 20 Oct 2026 15:00:17 +0200
Ernest Van Hoecke <ernestvanhoecke@gmail.com> wrote:
> From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
> Extend the fw_devlink OF unit tests with PWM references routed through a
> nexus map. Verify that the mapped consumer has exactly one link to the
> final PWM provider rather than to the nexus.
>
> Also cover a direct PWM reference to ensure that it continues to resolve
> to the original provider when no map is present.
>
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
> ---
> v3: Route pwm-map entries to two providers, use a middle entry (Herve)
> v2: https://lore.kernel.org/r/20260910-fw-devlink-nexus-ready-v2-5-17ac82dbe226@toradex.com
> ---
> drivers/of/unittest-data/tests-phandle.dtsi | 22 ++++++++++++++++++++++
> drivers/of/unittest.c | 2 ++
> 2 files changed, 24 insertions(+)
>
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Best regards,
Hervé
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v3 7/8] of: property: fw_devlink: Follow 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
` (5 preceding siblings ...)
2026-10-20 13:00 ` [PATCH v3 6/8] of: unittest: Test fw_devlink with " Ernest Van Hoecke
@ 2026-10-20 13:00 ` Ernest Van Hoecke
2026-10-20 14:23 ` Herve Codina
2026-10-20 13:00 ` [PATCH v3 8/8] of: unittest: Test fw_devlink with " Ernest Van Hoecke
7 siblings, 1 reply; 14+ 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
From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
Clock consumers use of_parse_phandle_with_args_map() to resolve
specifiers through clock-map properties. fw_devlink instead parses the
clocks property as a direct phandle reference, so it records the nexus
node as the supplier rather than the mapped clock provider.
A nexus is a translation node, not the clock 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 clocks so fw_devlink resolves the same
provider as the clock consumer API. Direct clock references continue to
work because the map-aware parser returns the original provider when no
clock-map property is present.
Fixes: aacc54c67869 ("clk: Add support for clock nexus dt bindings")
Link: https://lore.kernel.org/all/20260807-schneider-v7-2-rc1-eip201-upstream-v5-0-8785f9531cf0@bootlin.com/
Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
---
aacc54c67869 ("clk: Add support for clock nexus dt bindings") has been
in clk-next and linux-next with the same hash since next-20260907. There
is no build-time dependency on it, but this patch should not reach
mainline before it.
---
drivers/of/property.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/of/property.c b/drivers/of/property.c
index 53301cdac6a9..2388d607136f 100644
--- a/drivers/of/property.c
+++ b/drivers/of/property.c
@@ -1422,7 +1422,7 @@ struct supplier_bindings {
u8 fwlink_flags;
};
-DEFINE_SIMPLE_PROP(clocks, "clocks", "#clock-cells")
+DEFINE_SIMPLE_NEXUS_PROP(clocks, "clocks", "clock")
DEFINE_SIMPLE_PROP(interconnects, "interconnects", "#interconnect-cells")
DEFINE_SIMPLE_PROP(iommus, "iommus", "#iommu-cells")
DEFINE_SIMPLE_PROP(mboxes, "mboxes", "#mbox-cells")
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [PATCH v3 7/8] of: property: fw_devlink: Follow clock nexus maps
2026-10-20 13:00 ` [PATCH v3 7/8] of: property: fw_devlink: Follow clock " Ernest Van Hoecke
@ 2026-10-20 14:23 ` Herve Codina
0 siblings, 0 replies; 14+ messages in thread
From: Herve Codina @ 2026-10-20 14:23 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
Hi Ernest,
On Tue, 20 Oct 2026 15:00:18 +0200
Ernest Van Hoecke <ernestvanhoecke@gmail.com> wrote:
> From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
> Clock consumers use of_parse_phandle_with_args_map() to resolve
> specifiers through clock-map properties. fw_devlink instead parses the
> clocks property as a direct phandle reference, so it records the nexus
> node as the supplier rather than the mapped clock provider.
>
> A nexus is a translation node, not the clock 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 clocks so fw_devlink resolves the same
> provider as the clock consumer API. Direct clock references continue to
> work because the map-aware parser returns the original provider when no
> clock-map property is present.
>
> Fixes: aacc54c67869 ("clk: Add support for clock nexus dt bindings")
> Link: https://lore.kernel.org/all/20260807-schneider-v7-2-rc1-eip201-upstream-v5-0-8785f9531cf0@bootlin.com/
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
> ---
> aacc54c67869 ("clk: Add support for clock nexus dt bindings") has been
> in clk-next and linux-next with the same hash since next-20260907. There
> is no build-time dependency on it, but this patch should not reach
> mainline before it.
> ---
> drivers/of/property.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/of/property.c b/drivers/of/property.c
> index 53301cdac6a9..2388d607136f 100644
> --- a/drivers/of/property.c
> +++ b/drivers/of/property.c
> @@ -1422,7 +1422,7 @@ struct supplier_bindings {
> u8 fwlink_flags;
> };
>
> -DEFINE_SIMPLE_PROP(clocks, "clocks", "#clock-cells")
> +DEFINE_SIMPLE_NEXUS_PROP(clocks, "clocks", "clock")
> DEFINE_SIMPLE_PROP(interconnects, "interconnects", "#interconnect-cells")
> DEFINE_SIMPLE_PROP(iommus, "iommus", "#iommu-cells")
> DEFINE_SIMPLE_PROP(mboxes, "mboxes", "#mbox-cells")
>
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Best regards,
Hervé
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v3 8/8] of: unittest: Test fw_devlink with 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
` (6 preceding siblings ...)
2026-10-20 13:00 ` [PATCH v3 7/8] of: property: fw_devlink: Follow clock " Ernest Van Hoecke
@ 2026-10-20 13:00 ` Ernest Van Hoecke
2026-10-20 14:27 ` Herve Codina
7 siblings, 1 reply; 14+ 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
From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
Extend the fw_devlink OF unit tests with clock references routed through
a nexus map. Verify that the mapped consumer has exactly one link to the
final clock provider rather than to the nexus.
Also cover a direct clock reference to ensure that it continues to
resolve to the original provider when no map is present.
Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
---
v3: Route clock-map entries to two providers, use a middle entry (Herve)
No clock-map-mask: only clock-map applies to clocks (aacc54c67869)
v2: https://lore.kernel.org/r/20260910-fw-devlink-nexus-ready-v2-7-17ac82dbe226@toradex.com
---
drivers/of/unittest-data/tests-phandle.dtsi | 20 ++++++++++++++++++++
drivers/of/unittest.c | 2 ++
2 files changed, 22 insertions(+)
diff --git a/drivers/of/unittest-data/tests-phandle.dtsi b/drivers/of/unittest-data/tests-phandle.dtsi
index 1fd465bb8f79..8f86fcee4093 100644
--- a/drivers/of/unittest-data/tests-phandle.dtsi
+++ b/drivers/of/unittest-data/tests-phandle.dtsi
@@ -81,6 +81,14 @@ consumer-b {
};
fw-devlink-tests {
+ clock_provider_a: clock-controller-a {
+ #clock-cells = <1>;
+ };
+
+ clock_provider_b: clock-controller-b {
+ #clock-cells = <1>;
+ };
+
gpio_provider_a: gpio-controller-a {
#gpio-cells = <2>;
};
@@ -98,8 +106,12 @@ pwm_provider_b: pwm-controller-b {
};
fwdevlink_nexus: nexus {
+ #clock-cells = <1>;
#gpio-cells = <2>;
#pwm-cells = <2>;
+ clock-map = <1 &clock_provider_a 3>,
+ <2 &clock_provider_b 5>,
+ <3 &clock_provider_a 7>;
gpio-map = <1 0 &gpio_provider_a 3 0>,
<2 0 &gpio_provider_b 5 0>,
<3 0 &gpio_provider_a 7 0>;
@@ -112,6 +124,14 @@ fwdevlink_nexus: nexus {
pwm-map-pass-thru = <0 0xffffffff>;
};
+ clock-consumer {
+ clocks = <&fwdevlink_nexus 2>;
+ };
+
+ clock-direct-consumer {
+ clocks = <&clock_provider_a 1>;
+ };
+
gpio-compat-consumer {
gpios = <&fwdevlink_nexus 2 1>;
};
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
index 320a992c4310..40d010c55b8f 100644
--- a/drivers/of/unittest.c
+++ b/drivers/of/unittest.c
@@ -765,6 +765,8 @@ static void __init of_unittest_fw_devlink(void)
const char *consumer;
const char *supplier;
} cases[] = {
+ { "clock-consumer", "clock-controller-b" },
+ { "clock-direct-consumer", "clock-controller-a" },
{ "gpio-compat-consumer", "gpio-controller-b" },
{ "gpio-compat-singular-consumer", "gpio-controller-b" },
{ "gpio-consumer", "gpio-controller-b" },
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [PATCH v3 8/8] of: unittest: Test fw_devlink with clock nexus maps
2026-10-20 13:00 ` [PATCH v3 8/8] of: unittest: Test fw_devlink with " Ernest Van Hoecke
@ 2026-10-20 14:27 ` Herve Codina
0 siblings, 0 replies; 14+ messages in thread
From: Herve Codina @ 2026-10-20 14:27 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
Hi Ernest,
On Tue, 20 Oct 2026 15:00:19 +0200
Ernest Van Hoecke <ernestvanhoecke@gmail.com> wrote:
> From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
> Extend the fw_devlink OF unit tests with clock references routed through
> a nexus map. Verify that the mapped consumer has exactly one link to the
> final clock provider rather than to the nexus.
>
> Also cover a direct clock reference to ensure that it continues to
> resolve to the original provider when no map is present.
>
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
> ---
> v3: Route clock-map entries to two providers, use a middle entry (Herve)
> No clock-map-mask: only clock-map applies to clocks (aacc54c67869)
> v2: https://lore.kernel.org/r/20260910-fw-devlink-nexus-ready-v2-7-17ac82dbe226@toradex.com
> ---
> drivers/of/unittest-data/tests-phandle.dtsi | 20 ++++++++++++++++++++
> drivers/of/unittest.c | 2 ++
> 2 files changed, 22 insertions(+)
>
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Best regards,
Hervé
^ permalink raw reply [flat|nested] 14+ messages in thread