* [PATCH v3 1/2] common: misc: add soc_uid_hex to globalvar
2026-04-22 10:09 [PATCH v3 0/2] Add additional globalvar for soc_uid Fabian Pflug
@ 2026-04-22 10:09 ` Fabian Pflug
2026-04-22 10:09 ` [PATCH v3 2/2] i.MX: HAB: update text for HABV4_CSF_UNLOCK_UID Fabian Pflug
2026-04-27 7:15 ` [PATCH v3 0/2] Add additional globalvar for soc_uid Sascha Hauer
2 siblings, 0 replies; 4+ messages in thread
From: Fabian Pflug @ 2026-04-22 10:09 UTC (permalink / raw)
To: Sascha Hauer, Jonas Rebmann, BAREBOX; +Cc: Fabian Pflug
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`
Reviewed-by: Jonas Rebmann <jre@pengutronix.de>
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..870dcd0a16 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_MAGICVAR(global.soc_uid, "SoC Unique ID");
+BAREBOX_MAGICVAR(global.soc_uid_hex, "Raw SoC Unique ID representation");
const char *barebox_get_soc_uid(void)
{
--
2.47.3
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH v3 2/2] i.MX: HAB: update text for HABV4_CSF_UNLOCK_UID
2026-04-22 10:09 [PATCH v3 0/2] Add additional globalvar for soc_uid Fabian Pflug
2026-04-22 10:09 ` [PATCH v3 1/2] common: misc: add soc_uid_hex to globalvar Fabian Pflug
@ 2026-04-22 10:09 ` Fabian Pflug
2026-04-27 7:15 ` [PATCH v3 0/2] Add additional globalvar for soc_uid Sascha Hauer
2 siblings, 0 replies; 4+ messages in thread
From: Fabian Pflug @ 2026-04-22 10:09 UTC (permalink / raw)
To: Sascha Hauer, Jonas Rebmann, BAREBOX; +Cc: Fabian Pflug
With the establishment of global.soc_uid_hex, there is no need to look
for the serial number and reverse it.
Also some SoC's will have 128-bit UID's, so the hint to 64-bit is not
correct and should be removed.
Reviewed-by: Jonas Rebmann <jre@pengutronix.de>
Signed-off-by: Fabian Pflug <f.pflug@pengutronix.de>
---
arch/arm/mach-imx/Kconfig | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 2e4d1ac80a..75086d13e6 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -918,19 +918,20 @@ config HABV4_CSF_UNLOCK_UID
depends on HABV4 && HABV4_CSF_UNLOCK_FIELD_RETURN
string "CSF Unlock UID"
help
- Device specific 64-bit UID required to unlock the field-return
+ Device specific UID required to unlock the field-return
feature. This value must match the per device UNIQUE_ID fuses.
The below example shows the expected format. The UNIQUE_ID is
- printed during boot by barebox:
+ stored in $global.soc_uid_hex, but must be split into bytes.
+ The soc_uid_hex 0011223344556677 becomes:
+ - 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77
+
+ Alternatively, it is printed in reverse byte order during boot
i.MX___ unique ID: 7766554433221100
- or it can be queried by Linux via:
+ or it can be queried (in reverse byte order) by Linux via:
- cat /sys/devices/soc0/serial_number
7766554433221100
- So this value have to be set:
- - 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77
-
Afterwards, the `hab -p -r` command can be used to burn the fuse.
config HAB_CERTS_ENV
--
2.47.3
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3 0/2] Add additional globalvar for soc_uid
2026-04-22 10:09 [PATCH v3 0/2] Add additional globalvar for soc_uid Fabian Pflug
2026-04-22 10:09 ` [PATCH v3 1/2] common: misc: add soc_uid_hex to globalvar Fabian Pflug
2026-04-22 10:09 ` [PATCH v3 2/2] i.MX: HAB: update text for HABV4_CSF_UNLOCK_UID Fabian Pflug
@ 2026-04-27 7:15 ` Sascha Hauer
2 siblings, 0 replies; 4+ messages in thread
From: Sascha Hauer @ 2026-04-27 7:15 UTC (permalink / raw)
To: Jonas Rebmann, BAREBOX, Fabian Pflug
On Wed, 22 Apr 2026 12:09:03 +0200, Fabian Pflug wrote:
> The binary representation was used to compare against, but never exposed
> to userspace to query, as the exposed variables could correlate with the
> value, but did not.
>
> For example on i.MX8MP the byte order was reversed in comparing
> the return value of barebox_get_soc_uid_bin and $global.soc_uid.
>
> [...]
Applied, thanks!
[1/2] common: misc: add soc_uid_hex to globalvar
https://git.pengutronix.de/cgit/barebox/commit/?id=103c1e79d5a1 (link may not be stable)
[2/2] i.MX: HAB: update text for HABV4_CSF_UNLOCK_UID
https://git.pengutronix.de/cgit/barebox/commit/?id=1109a7447bcd (link may not be stable)
Best regards,
--
Sascha Hauer <s.hauer@pengutronix.de>
^ permalink raw reply [flat|nested] 4+ messages in thread