mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: Fabian Pflug <f.pflug@pengutronix.de>
Cc: Jonas Rebmann <jre@pengutronix.de>,
	BAREBOX <barebox@lists.infradead.org>
Subject: Re: [PATCH v2 1/2] common: misc: add soc_uid_hex to globalvar
Date: Wed, 22 Apr 2026 11:16:23 +0200	[thread overview]
Message-ID: <aeiR55jQR56V3YDQ@pengutronix.de> (raw)
In-Reply-To: <86d49148492685a515b669a05995b89570de6f79.camel@pengutronix.de>

On Wed, Apr 22, 2026 at 10:52:34AM +0200, Fabian Pflug wrote:
> On Wed, 2026-04-22 at 10:25 +0200, Sascha Hauer wrote:
> > On Wed, Apr 22, 2026 at 10:14:11AM +0200, Fabian Pflug wrote:
> > > On Wed, 2026-04-22 at 09:56 +0200, Sascha Hauer wrote:
> > > > On Wed, Apr 15, 2026 at 01:10:21PM +0200, Fabian Pflug wrote:
> > > > > uidstr and uidbuf could be the same, but don't have to be. This results
> > > > > in uncertainty on what exactly is the current UID used for
> > > > > machine_set_hashable and to compare against with TLV.
> > > > > 
> > > > > Add an additional global var, that encodes SoC-UID registers in a
> > > > > manner uniform across SoCs/manufacturers.
> > > > > 
> > > > > This can now be used to feed as data for bound-soc-uid into
> > > > > `bareboxtlv-generator.py` or as the value for
> > > > > `CONFIG_HABV4_CSF_UNLOCK_UID`
> > > > > 
> > > > > Signed-off-by: Fabian Pflug <f.pflug@pengutronix.de>
> > > > > ---
> > > > >  common/misc.c | 9 +++++++--
> > > > >  1 file changed, 7 insertions(+), 2 deletions(-)
> > > > > 
> > > > > diff --git a/common/misc.c b/common/misc.c
> > > > > index ecf9574f7a..be896706d6 100644
> > > > > --- a/common/misc.c
> > > > > +++ b/common/misc.c
> > > > > @@ -268,6 +268,7 @@ const uuid_t *barebox_get_product_uuid(void)
> > > > >  BAREBOX_MAGICVAR(global.product.uuid, "SMBIOS-reported product UUID");
> > > > >  
> > > > >  static char *soc_uid_str;
> > > > > +static char *soc_uid_bin_str;
> > > > >  static void *soc_uid;
> > > > >  static size_t soc_uid_len;
> > > > >  
> > > > > @@ -295,18 +296,22 @@ void barebox_set_soc_uid(const char *uidstr, const void *uidbuf, size_t len)
> > > > >  	soc_uid = xmemdup(uidbuf, len);
> > > > >  	soc_uid_len = len;
> > > > >  
> > > > > +	soc_uid_bin_str = xzalloc(len * 2 + 1);
> > > > > +	bin2hex(soc_uid_bin_str, uidbuf, len);
> > > > > +
> > > > >  	if (uidstr) {
> > > > >  		soc_uid_str = xstrdup(uidstr);
> > > > >  	} else {
> > > > > -		soc_uid_str = xzalloc(len * 2 + 1);
> > > > > -		bin2hex(soc_uid_str, uidbuf, len);
> > > > > +		soc_uid_str = soc_uid_bin_str;
> > > > >  	}
> > > > >  
> > > > >  	machine_id_set_hashable(uidbuf, len);
> > > > >  
> > > > >  	globalvar_add_simple_string("soc_uid", &soc_uid_str);
> > > > > +	globalvar_add_simple_string("soc_uid_hex", &soc_uid_bin_str);
> > > > 
> > > > barebox_set_soc_uid() takes two arguments, the raw SoC UID data and a
> > > > SoC specific string representation of that data. It's unfortunate that
> > > > you need two different interpretations of the raw data on i.MX, one to
> > > > match the Linux /sys/ format and one to put into the CSF file.
> > > > 
> > > > Anyway, just adding a second string representation not only for i.MX,
> > > > but also for all other SoCs is rather confusing. For the i.MX field
> > > > return case we could also add a hab command option or a i.MX specific
> > > > globalvar which is exactly described as "SoC UID in the format the CSF
> > > > needs"
> > > 
> > > Please don't get confused. This is an additional benefit for the CSF in i.MX. The main focus here is to have a
> > > string
> > > representation, that can be used in TLV generation, with the script in 
> > > https://github.com/barebox/barebox/blob/master/scripts/bareboxtlv-generator/bareboxtlv-generator.py
> > > 
> > > The value 
> > > 0x0024, bound-soc-uid, "Reject TLV if supplied binary data does not match UID SoC register"
> > > https://github.com/barebox/barebox/blob/v2026.04.0/common/tlv/barebox.c#L200
> > > 
> > > Needs this representation for all vendors, not just i.MX.
> > > And since the values for soc_bin and uidstr can differ greatly, it is very soc specific on what value to use in the
> > > https://github.com/barebox/barebox/blob/master/scripts/bareboxtlv-generator/data-example.yaml
> > > 
> > > This patch tries to fix it, by giving a value, that can just be copied to TLC data.yaml
> > 
> > Ok, I can much better buy TLV support as an argument.
> > 
> > Please add a
> > 
> > BAREBOX_MAGICVAR(global.soc_uid_hex,
> >           "byte array representation of the raw SoC UID");
> 
> There already is
> 
> BAREBOX_MAGICVAR(global.soc_uid_hex, "SoC Unique ID (in hex)");
> 
> And since it is a single value and not a byte array, I think byte array is the wrong representation.
> Using a byte-array for TLV does not work with the TLV tooling. This expects a single value.

You are right, byte array is not the correct term here. What I wanted to
make clear is that it is the raw buffer content with the first byte in
the buffer being the first two digits of the string, just to make the
difference between these two clearer:

global.soc_uid=0011223344556677		"SoC Unique ID"
global.soc_uid_hex=7766554433221100	"SoC Unique ID (in hex)"

Both are obviously hex values, which one means what?

Sascha

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



  reply	other threads:[~2026-04-22  9:16 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-15 11:10 [PATCH v2 0/2] Add additional globalvar for soc_uid Fabian Pflug
2026-04-15 11:10 ` [PATCH v2 1/2] common: misc: add soc_uid_hex to globalvar Fabian Pflug
2026-04-15 11:14   ` Jonas Rebmann
2026-04-22  7:56   ` Sascha Hauer
2026-04-22  8:14     ` Fabian Pflug
2026-04-22  8:25       ` Sascha Hauer
2026-04-22  8:52         ` Fabian Pflug
2026-04-22  9:16           ` Sascha Hauer [this message]
2026-04-22  9:19             ` Fabian Pflug
2026-04-22  9:38               ` Sascha Hauer
2026-04-15 11:10 ` [PATCH v2 2/2] i.MX: HAB: update text for HABV4_CSF_UNLOCK_UID Fabian Pflug
2026-04-15 11:14   ` Jonas Rebmann
2026-04-22  7:43   ` Sascha Hauer
2026-04-22  7:49     ` Fabian Pflug
2026-04-22  9:47     ` Jonas Rebmann

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=aeiR55jQR56V3YDQ@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=f.pflug@pengutronix.de \
    --cc=jre@pengutronix.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox