All of lore.kernel.org
 help / color / mirror / Atom feed
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>
Subject: Re: [PATCH v3 12/15] libfdt: Introduce fdt_getprop_offset_namelen()
Date: Mon, 26 Oct 2026 09:36:43 +0100	[thread overview]
Message-ID: <20261026093643.15faf244@bootlin.com> (raw)
In-Reply-To: <at1qO7oEdCyhX6k8@gractus.seuss>

Hi David,

On Sun, 25 Oct 2026 13:32:41 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:

> On Fri, Oct 23, 2026 at 09:25:59AM +0200, Herve Codina wrote:
> > Hi David,
> > 
> > On Tue, 22 Sep 2026 18:25:47 +0200
> > Herve Codina <herve.codina@bootlin.com> wrote:
> >   
> > > On Mon, 21 Sep 2026 16:07:21 +1000
> > > David Gibson <david@gibson.dropbear.id.au> wrote:
> > >   
> > > > On Wed, Aug 26, 2026 at 10:31:43AM +0200, Herve Codina wrote:    
> > > > > Future operations, such as handling unknown tags on dtb modifications,
> > > > > need to get an offset to a property based on the node offset and the
> > > > > property name.
> > > > > 
> > > > > Several function exists to get a property based on the node offset
> > > > > and the property name but none of them allows to get the property
> > > > > offset.
> > > > > 
> > > > > Fill the lack and introduce fdt_getprop_offset_namelen() and its
> > > > > simple variant fdt_getprop_offset().
> > > > > 
> > > > > Signed-off-by: Herve Codina <herve.codina@bootlin.com>      
> > > > 
> > > > This seems redundant with fdt_ptr_offset_(), which can trivially get
> > > > this information when combined with fdt_get_property().    
> > > 
> > > Indeed, It should be ok using both functions you pointed out.
> > > 
> > > I will remove fdt_getprop_offset_namelen() introduced here and use directly 
> > > functions mentionned in the next iteration without wrapping those calls in
> > > a new function.   
> > 
> > I've started to replace fdt_getprop_offset_namelen() by the combination
> > of fdt_ptr_offset_() and fdt_get_property_namelen().
> > 
> > As a reminder fdt_getprop_offset_namelen() I proposed was the following:
> > --- 8< ---  
> > > +int fdt_getprop_offset_namelen(const void *fdt, int nodeoffset,
> > > +			       const char *name, int namelen)
> > > +{
> > > +	const struct fdt_property *prop;
> > > +	int lenp, offset;
> > > +
> > > +	prop = fdt_get_property_namelen_(fdt, nodeoffset, name, namelen,
> > > +					 &lenp, &offset);
> > > +	if (!prop)
> > > +		return lenp;
> > > +	return offset;
> > > +}  
> > --- 8< ---
> > 
> > fdt_get_property_namelen_() was called.
> > 
> > Switching to fdt_get_property_namelen() introduces a regression.
> > 
> > fdt_get_property_namelen() calls fdt_get_property_namelen() and this function
> > (without the '_' suffix) performs a check on fdt_version() returning an error
> > on version < 16.
> > 
> > Using it to replace my fdt_getprop_offset_namelen() function will break
> > write-in-place setprop() for dtb version < 16. Indeed, it is used in [1]
> > 
> > [1]: https://lore.kernel.org/devicetree-compiler/20260826083146.304291-15-herve.codina@bootlin.com/#Z31libfdt:fdt_wip.c
> > 
> > Now, several options:
> > 
> > a) No problem if we break dtb version < 16
> >    Ok, I will use directly fdt_get_property_namelen() + fdt_ptr_offset_() to
> >    get an offset and remove my fdt_getprop_offset_namelen() wrapper.  
> 
> So, practically speaking this is probably true.  Version before 16 are
> truly ancient, and versions 1..3 were all before dtbs really caught
> on.
> 
> > b) Keep my fdt_getprop_offset_namelen() function without any modification
> >    We support version < 16, problem solved.  
> 
> Still don't like it.
> 
> > c) Keep my fdt_getprop_offset_namelen() but static inline in libfdt_internal.h
> >    Export fdt_get_property_namelen_() in libfdt_internal.h and use it in the
> >    static inline fdt_getprop_offset_namelen().
> >    This implies that fdt_get_property_namelen_() will be no more static and
> >    usable internally out of fdt_ro.c but only the fdt_getprop_offset_namelen()
> >    wrapper should be used.  
> 
> Eh.
> 
> > d) Use directly fdt_get_property_namelen_()
> >    Export fdt_get_property_namelen_() in libfdt_internal.h and use it
> >    directly to get the offset.
> >    I don't really like this solution. I would prefer to have a wrapper to
> >    explicitly return the offset instead of exposing and using directly
> >    fdt_get_property_namelen_().  
> 
> Hm, I think this is my preferred option.  libfdt_internal.h exists
> precisely to "expose" things across modules internally, but without
> exposing them to external users.  Maybe I'm missing something, I don't
> really see why that's objectionable.

Well, my first feeling was to avoid exposing this function and use a wrapper.
I've looked again and indeed the wrapper isn't really worth it.

I will expose (internally) and use directly fdt_get_property_namelen_().

Best regards,
Hervé

  reply	other threads:[~2026-10-26  8:37 UTC|newest]

Thread overview: 103+ 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 [this message]
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-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=20261026093643.15faf244@bootlin.com \
    --to=herve.codina@bootlin.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.