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 06/15] Introduce structured tag value definition
Date: Sat, 12 Sep 2026 12:34:24 +1000	[thread overview]
Message-ID: <aqS6HmkaVYbrePtN@gractus.seuss> (raw)
In-Reply-To: <20260911091653.37b22b0f@bootlin.com>

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

On Fri, Sep 11, 2026 at 09:16:53AM +0200, Herve Codina wrote:
> Hi David,
> 
> On Thu, 10 Sep 2026 19:32:48 +1000
> David Gibson <david@gibson.dropbear.id.au> wrote:
> 
> > On Thu, Sep 10, 2026 at 09:41:26AM +0200, Herve Codina wrote:
> > > Hi David,
> > > 
> > > On Thu, 10 Sep 2026 14:51:08 +1000
> > > David Gibson <david@gibson.dropbear.id.au> wrote:
> > >   
> > > > On Wed, Aug 26, 2026 at 10:31:37AM +0200, Herve Codina wrote:  
> > > > > The goal of structured tag values is to ease the introduction of new
> > > > > tags in future releases with the capability for an already existing
> > > > > release to ignore those structured tags. In order to do that data length
> > > > > related to the unknown tag needs to be identified.
> > > > > 
> > > > > Also add a flag to tell an old release if this tag can be simply skipped
> > > > > or must lead to an error.    
> > > > 
> > > > I suggested/insisted on this in the past, but I've since realised this
> > > > isn't actually useful.  The "structured tag" format is only useful
> > > > because it allows you to skip over unknown tags, which means there's
> > > > no point using it for ags that can't be skipped.  If we need new tags
> > > > that can't be safely skipped, they can be added as old-style tags
> > > > instead.
> > > >
> > > > In which case "old style" versus "new style" is no longer a good
> > > > characterization: they would exist side by side, so the distinction is
> > > > more "skippable" versus "non skippable" tags.  Which suggests that
> > > > "skippable tags" or "metadata tags" might be a better term than
> > > > "structured tags" - that would focus more on the why than the how.  
> > > 
> > > Do you mean that the SKIP_SAFE bit should be removed ?  
> > 
> > Yes.
> 
> So, in that case the term "skippable" tags makes sense.
> 
> Any non-skippable tag are then defined using the "old style".

Right.  I kind of prefer the term "metadata" *if* it's actually
accurate, but I'm not sure it is.

> The only non-skippable tag that will be introduce later by addons is
> FDT_BEGIN_NODE_REF (patch 51/71 [1]).

Ok.

> Data related to this tag is the symbol name and so a string.
> 
> Using the "old style" for this tag, I will remove the 32-bit data lengh.
> The next tag will be after the end of string '\0' + potential alignment.
> 
> This is consistent with "old style" tags which have a string as data. Indedd
> no 32-bit data lengh were present for those "old style" tags.
> 
> Does it make sense on your side?

Yes, that makes sense.

> [1] https://lore.kernel.org/all/20260826094950.1088288-52-herve.codina@bootlin.com/
> 
> > 
> > > I like the defined structure with the DATA_LEN_ENCODING part. Even for tags
> > > which are not "skippable".
> > > 
> > > This ensures a kind of standardized format for all future tags instead of a 
> > > specific definition (related to the length of the data) for each new tag.  
> > 
> > If we were designing the dtb format from scratch, I'd agree.  But
> > given we already have what we have I think the drawbacks of
> > introducing a second way of doing tags outweighs the benefits.
> > 
> > > For this kind of information related to the length of data, I prefer a global
> > > rule instead of tag-specific rules.  
> > 
> > Right, but it can't truly be global, because we have the existing
> > tags.
> > 
> > > > > Structured tag value is defined on 32bit and is defined as follow:
> > > > > 
> > > > >   Bits  | 31 | 30        | 29             28 | 27    0|
> > > > >   ------+----+-----------+-------------------+--------+
> > > > >   Fields| 1  | SKIP_SAFE | DATA_LEN_ENCODING | TAG_ID |
> > > > >   ------+----+-----------+-------------------+--------+
> > > > > 
> > > > > Bit 31 is always set to 1 to identify a structured tag value.
> > > > > 
> > > > > Bit 30 (SKIP_SAFE) is set to 1 if the tag can be safely ignored when its
> > > > > TAG_ID value is not a known value (unknown tag). If the SKIP_SAFE bit is
> > > > > set to 0 this tag must not be ignored and an error should be reported
> > > > > when its TAG_ID value is not a known value (unknown tag).
> > > > > 
> > > > > Bits 29..28 (DATA_LEN_ENCODING) indicates the length of the data related
> > > > > to the tag. Following values are possible:
> > > > >   - 0b00: No data.
> > > > >           The tag is followed by the next tag value.    
> > > > 
> ... 
> > > > >   - 0b11: Data length encoding
> > > > >           The tag is followed by a cell (u32) indicating the size of the
> > > > >           data. This size is given in bytes. Data are available right
> > > > >           after this cell.
> > > > > 
> > > > >           The next tag is available after the data. Padding is present
> > > > >           after the data in order to have the next tag aligned on 32bits.
> > > > >           This padding is not included in the size of the data.    
> > > > 
> > > > I'm guessing the 1 & 2 cell cases are pretty common so it saves a
> > > > moderate amount of dtb size to have this encoding.  However, it does
> > > > come at the cost of greater code complexity.  Is it worth it?  I'm
> > > > willing to believe it is, but I think the case needs to be made.  
> > > 
> > > In term of code complexity, FDT_PROPDATA_PHANDLE introduced in the addons
> > > series, patch 7/74 [0], is a 1-cell (or 1-fdt32) "structured" tag.
> > > 
> > > It can be compared with FDT_PROPDATA_PHANDLE_REF, introduced in patch 11/74 [1].
> > > FDT_PROPDATA_PHANDLE_REF is a "Data length encoding" tag.
> > > 
> > > Modifications in libfdt/fdt.c are pretty similar for both tags.  
> > 
> > Right, it won't be in the case of specific tag handling.  It's the
> > general case skipping that's more complex, because it has to consider
> > both cases.
> 
> I don't understand. What do you mean ?
> 
> Current implementation for skipping tags is not so complex.

Not that complex, no, but still more complex than it would be if we
always have the 32-bit length field.

> Do you mean that we should avoid the DATA_LEN_ENCODING and always have the
> 32-bit value right after the tag to give the size for all "skippable" tags?

Yes.

-- 
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-12  2:35 UTC|newest]

Thread overview: 83+ 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
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 [this message]
2026-09-14 10:19             ` Herve Codina
2026-09-16  5:21               ` David Gibson
2026-09-17  7:04                 ` Herve Codina
2026-09-18  4:41                   ` David Gibson
2026-09-18  8:16                     ` Herve Codina
2026-09-19  4:22                       ` David Gibson
2026-09-22  6:41                         ` Herve Codina
2026-09-24  3:49                           ` David Gibson
2026-09-25 10:48                             ` Herve Codina
2026-09-26  1:49                               ` 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-09-17  8:56             ` Herve Codina
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-09-14  8:23   ` David Gibson
2026-09-15 10:16     ` Herve Codina
2026-09-15 11:52       ` David Gibson
2026-09-16  6:31         ` Herve Codina
2026-09-16  8:27           ` David Gibson
2026-09-17  7:11             ` Herve Codina
2026-08-26  8:31 ` [PATCH v3 09/15] libfdt: Handle unknown tags in fdt_next_tag() Herve Codina
2026-09-16  9:10   ` David Gibson
2026-09-17  8:34     ` Herve Codina
2026-09-17  9:36       ` David Gibson
2026-09-17 17:28         ` Herve Codina
2026-09-19  4:46           ` David Gibson
2026-09-30 16:47             ` Herve Codina
2026-10-01  3:07               ` David Gibson
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-09-16  9:56   ` David Gibson
2026-09-16 10:42     ` Herve Codina
2026-09-17  4:52       ` David Gibson
2026-09-17  8:43         ` Herve Codina
2026-08-26  8:31 ` [PATCH v3 12/15] libfdt: Introduce fdt_getprop_offset_namelen() Herve Codina
2026-09-21  6:07   ` David Gibson
2026-09-22 16:25     ` Herve Codina
2026-08-26  8:31 ` [PATCH v3 13/15] tests: Add wip_func utility Herve Codina
2026-09-16 10:00   ` David Gibson
2026-09-16 17:27     ` Herve Codina
2026-08-26  8:31 ` [PATCH v3 14/15] libfdt: Handle unknown tags on dtb modifications Herve Codina
2026-09-21  6:06   ` David Gibson
2026-09-25 12:40     ` Herve Codina
2026-09-28  4:39       ` David Gibson
2026-09-28 14:54         ` Herve Codina
2026-08-26  8:31 ` [PATCH v3 15/15] Introduce v18 dtb version Herve Codina
2026-09-21  6:20   ` David Gibson
2026-09-25 13:21     ` 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=aqS6HmkaVYbrePtN@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.