Re: [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps

From: Saravana Kannan

Date: Mon Oct 26 2026 - 01:00:19 EST


On Tue, Oct 20, 2026 at 6:00 AM Ernest Van Hoecke
<ernestvanhoecke@xxxxxxxxx> 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@xxxxxxxxxx>

Thanks,
Saravana

>
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@xxxxxxxxxxx>
>
> ---
> 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@xxxxxxxxxxx
>
> 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@xxxxxxxxxxx/
> - Link to v1: https://lore.kernel.org/r/20260902-fw-devlink-nexus-ready-v1-0-68fe1996e78a@xxxxxxxxxxx
>
> ---
> 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@xxxxxxxxxxx>
>