From: Herve Codina <herve.codina@bootlin.com>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
David Lechner <dlechner@baylibre.com>,
Ayush Singh <ayush@beagleboard.org>,
Geert Uytterhoeven <geert@linux-m68k.org>,
devicetree-compiler@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree-spec@vger.kernel.org,
Hui Pu <hui.pu@gehealthcare.com>,
Ian Ray <ian.ray@gehealthcare.com>,
Luca Ceresoli <luca.ceresoli@bootlin.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
Frank Li <Frank.Li@nxp.com>
Subject: Re: [PATCH v3 02/15] libfdt: Don't assume the root node is available at offset 0
Date: Wed, 9 Sep 2026 08:58:26 +0200 [thread overview]
Message-ID: <20260909085826.1f80a45b@bootlin.com> (raw)
In-Reply-To: <aqD6LcbwtrZkk28m@gractus.seuss>
Hi David,
On Wed, 9 Sep 2026 16:18:22 +1000
David Gibson <david@gibson.dropbear.id.au> wrote:
...
> >
> > Having a fdt_root_offset() stop at either FDT_BEGIN_NODE_REF or FDT_BEGIN_NODE
> > is "fdt_first_node_offset()".
>
> > Let me introduce the internal fdt_first_node_offset_()
> > - fdt_root_offset()
> > It calls fdt_first_node_offset_() and check that this node is a
> > FDT_BEGIN_NODE node.
> >
> > - fdt_check_node_offset_()
> > if the offset == 0, it updates the value with the offset returned by
> > fdt_first_node_offset_()
>
> Right, that's exactly what I'd suggest.
>
> A possible tweak would be to have fdt_check_node_offset_() only apply
> special case 0 handling if the _actual_ offset 0 doesn't look like a
> valid node offset. Not sure if that will make things messier or
> cleaner.
>
> > And so, a node offset 0 doesn't means the root node but the first node
> > in the dtb (root or orphan). I am totally fine with this definition.
>
> Right. If you don't want that behaviour for addon dtbs, then I think
> the way to go would be to explicitly avoid all special case handling
> of 0 if the header flags an addon. Handling addons requires new code,
> so we don't have to maintain backwards compatibliity for things that
> used 0 assuming it meant root node.
>
> > At some point, maybe users of the API (when addon are involved) will have to
> > take care of that and perform something like:
> > root = fdt_root_offset();
> > fdt_get_property(fdt, root, "prop", NULL);
> >
> > Or
> > fdt_for_each_orphan(orphan, fdt) {
> > fdt_get_property(fdt, orphan, "prop", NULL);
> > ...
> > }
> >
> > Here also, I am totally fine with that an I already use this kind of sequence
> > in libfdt/fdt_addon.c to apply an addon on a base dtb.
> >
> > I will introduce fdt_first_node_offset_() but let me know if you prefer
> > having fdt_first_node_offset_() introduced right now in this "structure
> > tags" series or later in the addon series.
>
> Either is fine; do whichever results in less code churn.
>
Ok, I will do that.
Do you want to have an early version of that or having it in the next iteration
of the series is fine on you side ?
Of course, before sending a new iteration of the series, I am waiting for your feedback on
the "structured tags" part. This part is not going to be impacted by the "offset 0 vs real
root offset" we have discussed here and so what is available in this current series is still
valid.
Best regards,
Hervé
next prev parent reply other threads:[~2026-09-09 6:58 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-26 8:31 [PATCH v3 00/15] Add support for structured tags and v18 dtb version Herve Codina
2026-08-26 8:31 ` [PATCH v3 01/15] fdtget: Use libfdt iterators instead of open coded loops Herve Codina
2026-08-27 3:55 ` David Gibson
2026-08-26 8:31 ` [PATCH v3 02/15] libfdt: Don't assume the root node is available at offset 0 Herve Codina
2026-08-30 3:21 ` David Gibson
2026-08-31 12:01 ` Herve Codina
2026-09-01 7:42 ` David Gibson
2026-09-01 12:18 ` Herve Codina
2026-09-02 7:06 ` David Gibson
2026-09-07 16:46 ` Herve Codina
2026-09-08 6:41 ` David Gibson
2026-09-08 8:08 ` Herve Codina
2026-09-09 6:18 ` David Gibson
2026-09-09 6:58 ` Herve Codina [this message]
2026-09-09 7:02 ` David Gibson
2026-08-26 8:31 ` [PATCH v3 03/15] tests: " Herve Codina
2026-09-01 8:03 ` David Gibson
2026-09-01 13:36 ` Herve Codina
2026-09-02 8:56 ` David Gibson
2026-08-26 8:31 ` [PATCH v3 04/15] tests/nopulate: Add a FDT_NOP before the root node Herve Codina
2026-09-01 8:05 ` David Gibson
2026-08-26 8:31 ` [PATCH v3 05/15] tests: treegen: Introduce emit_fdt_header_vers() Herve Codina
2026-09-09 6:38 ` David Gibson
2026-08-26 8:31 ` [PATCH v3 06/15] Introduce structured tag value definition Herve Codina
2026-09-10 4:51 ` David Gibson
2026-09-10 7:41 ` Herve Codina
2026-09-10 9:32 ` David Gibson
2026-09-11 7:16 ` Herve Codina
2026-09-12 2:34 ` David Gibson
2026-09-10 5:33 ` David Gibson
2026-09-10 7:58 ` Herve Codina
2026-09-10 9:41 ` David Gibson
2026-09-11 7:53 ` Herve Codina
2026-09-12 2:35 ` David Gibson
2026-08-26 8:31 ` [PATCH v3 07/15] fdtdump: Handle unknown tags Herve Codina
2026-09-10 5:25 ` David Gibson
2026-09-10 8:27 ` Herve Codina
2026-08-26 8:31 ` [PATCH v3 08/15] flattree: " Herve Codina
2026-08-26 8:31 ` [PATCH v3 09/15] libfdt: Handle unknown tags in fdt_next_tag() Herve Codina
2026-08-26 8:31 ` [PATCH v3 10/15] libfdt: Introduce fdt_ptr_offset_() Herve Codina
2026-08-26 8:31 ` [PATCH v3 11/15] libfdt: Introduce fdt_getprop_by_offset_w() Herve Codina
2026-08-26 8:31 ` [PATCH v3 12/15] libfdt: Introduce fdt_getprop_offset_namelen() Herve Codina
2026-08-26 8:31 ` [PATCH v3 13/15] tests: Add wip_func utility Herve Codina
2026-08-26 8:31 ` [PATCH v3 14/15] libfdt: Handle unknown tags on dtb modifications Herve Codina
2026-08-26 8:31 ` [PATCH v3 15/15] Introduce v18 dtb version 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=20260909085826.1f80a45b@bootlin.com \
--to=herve.codina@bootlin.com \
--cc=Frank.Li@nxp.com \
--cc=ayush@beagleboard.org \
--cc=conor+dt@kernel.org \
--cc=david@gibson.dropbear.id.au \
--cc=devicetree-compiler@vger.kernel.org \
--cc=devicetree-spec@vger.kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dlechner@baylibre.com \
--cc=geert@linux-m68k.org \
--cc=hui.pu@gehealthcare.com \
--cc=ian.ray@gehealthcare.com \
--cc=krzk@kernel.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luca.ceresoli@bootlin.com \
--cc=robh@kernel.org \
--cc=thomas.petazzoni@bootlin.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.