All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Herve Codina <herve.codina@bootlin.com>
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 17:02:09 +1000	[thread overview]
Message-ID: <aqEEXIqrR8A1SPig@gractus.seuss> (raw)
In-Reply-To: <20260909085826.1f80a45b@bootlin.com>

[-- Attachment #1: Type: text/plain, Size: 3271 bytes --]

On Wed, Sep 09, 2026 at 08:58:26AM +0200, Herve Codina wrote:
> 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 ?

Early is good.  Smaller series are easier to review, and getting them
fully sorted and merged also makes things easier.

> 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.

Right, the root offset stuff stands on its own, so it can sensibly be
split off.  Splitting series in such a way that they don't have enough
context to understand the wouldn't be helpful, of course.

-- 
David Gibson (he or they)	| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you, not the other way
				| around.
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2026-09-09  7:02 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
2026-09-09  7:02                       ` David Gibson [this message]
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=aqEEXIqrR8A1SPig@gractus.seuss \
    --to=david@gibson.dropbear.id.au \
    --cc=Frank.Li@nxp.com \
    --cc=ayush@beagleboard.org \
    --cc=conor+dt@kernel.org \
    --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=herve.codina@bootlin.com \
    --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.