From: Ernest Van Hoecke <ernestvanhoecke@gmail.com>
To: Rob Herring <robh@kernel.org>, Saravana Kannan <saravanak@kernel.org>
Cc: "Miquel Raynal (Schneider Electric)" <miquel.raynal@bootlin.com>,
"Frank Li" <Frank.li@oss.nxp.com>,
"Kieran Bingham" <kieran.bingham@ideasonboard.com>,
"Pengutronix Kernel Team" <kernel@pengutronix.de>,
"Stephen Boyd" <sboyd@kernel.org>,
"Brian Masney" <bmasney@redhat.com>,
"Linus Walleij" <linusw@kernel.org>,
"Bartosz Golaszewski" <brgl@kernel.org>,
"Uwe Kleine-König" <ukleinek@kernel.org>,
"Herve Codina" <herve.codina@bootlin.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Geert Uytterhoeven" <geert@linux-m68k.org>,
"Leonardo Costa" <leonardo.costa@toradex.com>,
"Frieder Schrempf" <frieder.schrempf@kontron.de>,
devicetree@vger.kernel.org, linux-clk@vger.kernel.org,
linux-gpio@vger.kernel.org, linux-pwm@vger.kernel.org,
linux-kernel@vger.kernel.org,
"Ernest Van Hoecke" <ernest.vanhoecke@toradex.com>,
"Uwe Kleine-König" <u.kleine-koenig@baylibre.com>,
stable@vger.kernel.org,
"Bartosz Golaszewski" <bartosz.golaszewski@oss.qualcomm.com>
Subject: [PATCH v3 0/8] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps
Date: Tue, 20 Oct 2026 15:00:11 +0200 [thread overview]
Message-ID: <20261020-fw-devlink-nexus-ready-v3-0-fd6f1c17e16d@toradex.com> (raw)
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>
---
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>
next reply other threads:[~2026-10-20 13:00 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-20 13:00 Ernest Van Hoecke [this message]
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-20 13:00 ` [PATCH v3 2/8] of: property: fw_devlink: Follow GPIO nexus maps Ernest Van Hoecke
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 ` [PATCH v3 4/8] of: unittest: Test fw_devlink with GPIO nexus maps 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
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
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
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261020-fw-devlink-nexus-ready-v3-0-fd6f1c17e16d@toradex.com \
--to=ernestvanhoecke@gmail.com \
--cc=Frank.li@oss.nxp.com \
--cc=bartosz.golaszewski@oss.qualcomm.com \
--cc=bmasney@redhat.com \
--cc=brgl@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=ernest.vanhoecke@toradex.com \
--cc=frieder.schrempf@kontron.de \
--cc=geert@linux-m68k.org \
--cc=gregkh@linuxfoundation.org \
--cc=herve.codina@bootlin.com \
--cc=kernel@pengutronix.de \
--cc=kieran.bingham@ideasonboard.com \
--cc=leonardo.costa@toradex.com \
--cc=linusw@kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=miquel.raynal@bootlin.com \
--cc=robh@kernel.org \
--cc=saravanak@kernel.org \
--cc=sboyd@kernel.org \
--cc=stable@vger.kernel.org \
--cc=u.kleine-koenig@baylibre.com \
--cc=ukleinek@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®