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 15/15] Introduce v18 dtb version
Date: Fri, 30 Oct 2026 13:48:25 +1100	[thread overview]
Message-ID: <auQFaTMTTMFZtia3@gractus.seuss> (raw)
In-Reply-To: <20261030010228.34d9daca@bootlin.com>

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

On Fri, Oct 30, 2026 at 01:02:28AM +0100, Herve Codina wrote:
> Hi David,
> 
> I know you are busy but if you could give me your opinion on this last
> message that would be greatly appreciated.
> 
> I've started to prepare the next iteration of the series adding support for
> "structured" tags and their definition need to be stable to move forward.
> 
> The question to answer to complete the definition of the "structured" tag
> format is: Should SAFE_SKIP bit be re-introduced?

Sorry, I lost track of this one amongst all the rest of the activity.

> IMHO, it should.
> 
> Best regards,
> Hervé
> 
> On Wed, 21 Oct 2026 15:59:23 +0200
> Herve Codina <herve.codina@bootlin.com> wrote:
> 
> > Hi David,
> > 
> > On Wed, 21 Oct 2026 13:26:49 +1100
> > David Gibson <david@gibson.dropbear.id.au> wrote:
> > 
> > > 
> > > Correct.  Btw, I know I suggested "skippable tag" as a term, but given
> > > how that gets kind of misleading in the case of writes, I'm coming to
> > > prefer the orignal "structured tag" term.  
> > 
> > Ok, no problem to switch back to "structured tag". On my side also, I prefer
> > this term.
> > 
> > Now I think that the bit indicating if a structured tag can be skip or not
> > should be kept. I know the we can use "old" tag format when a tag cannot be
> > skipped but I thing that using structured tags for those tags can lead to some
> > benefit. For instance, in fdt_tag_next() we can benefit of the data size
> > encoded for structured tags for all king of structured tags (skippable and not
> > skippable) and retrieve the next tag without the need for parsing data related
> > to a tag. When tag has a string as data, without the length we have to scan the
> > string to find its end. Of course we can add the length if the tag definition
> > but this is automatically implied if we use a structured tag.
> > 
> > So for structured tag, I can propose:
> > - bit 31: 1 to identify a structured tag
> > - bit 30: SAFE_SKIP bit (1 if we can skip, O otherwise)
> > - bit 29..24: Data lendth encoding
> >    0b000000: No data
> >    0b000001: 1 32bit word of data
> >    ...
> >    0b111110: 63 x 32bit words data
> >    0b111111: varlen encoding (1 32bit word added after the tag to encode the
> >            data length in bytes.
> > - bit 23..0: Tag id
> >
> > Without the SAFE_SKIP bit, all structured tags must be skippable. IMHO, we
> > could regret this limitation in the future.
> > 
> > The cost of the SAFE_SKIP bit is not a lot. When we check to see if an
> > unkwown tag can be skipped, we are going to move from
> >   if (tag & 1<31)
> > to
> >   if ((tag & (1<31 | 1<<30)) == (1<31 | 1<<30))
> > 
> > IHMO, this is acceptable.
> > 
> > Of course, if the SAFE_SKIP bit is re-introduced, I will also re-add the test
> > checking that unknown structured tag that cannot be skipped leads
> > to an error.

So, I'm not entirely convinced either way.  However, I have a
semi-related thought that might sidestep the question for the time
being.

I think it would be a good idea to leave some bits reserved, in case
there's some more structured information we want to put in later.  One
candidate might be "invalidated-when-X-happens" type bits which we
considered when discussing the versioning.  I think we can spare the
bits, since both tag and especially id fields are pretty generous at
the moment (23 bits when our entire current existing tagset fits in 4
bits with a bunch of spare room).

For reserved bits to be safe to use later we must insist and enforce
that they be 0 for now.  That means setting any reserved bit
effectively makes it a non-skippable tag for the time being.  Or to
put it another way, that means we can amongst other things add an
(inverted) SAFE_SKIP bit in future if we discover we want it.

-- 
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-10-30  3:16 UTC|newest]

Thread overview: 105+ 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
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-10-23  7:25       ` Herve Codina
2026-10-25  2:32         ` David Gibson
2026-10-26  8:36           ` 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
2026-10-13  7:10       ` David Gibson
2026-10-13 17:03         ` Herve Codina
2026-10-16  5:18           ` David Gibson
2026-10-19 13:11             ` Herve Codina
2026-10-21  2:26               ` David Gibson
2026-10-21 13:59                 ` Herve Codina
2026-10-30  0:02                   ` Herve Codina
2026-10-30  2:48                     ` David Gibson [this message]
2026-10-21 15:20                 ` Herve Codina
2026-10-22  3:17                   ` David Gibson
2026-10-22 13:14                     ` Herve Codina
2026-10-23  2:57                       ` David Gibson
2026-10-23  8:55                         ` Herve Codina
2026-10-25  2:11                           ` David Gibson
2026-10-26  8:42                             ` Herve Codina
2026-10-27  2:23                               ` David Gibson
2026-10-13 17:04         ` Ayush Singh
2026-10-13 17:23           ` Herve Codina
2026-10-13 19:49             ` Ayush Singh

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=auQFaTMTTMFZtia3@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.