* [PATCH 1/2] common: misc: add soc_uid_bin to globalvar
2026-03-30 12:24 [PATCH 0/2] Add additional globalvar for soc_uid Fabian Pflug
@ 2026-03-30 12:24 ` Fabian Pflug
2026-03-30 12:24 ` [PATCH 2/2] i.MX: HAB: update text for HABV4_CSF_UNLOCK_UID Fabian Pflug
1 sibling, 0 replies; 3+ messages in thread
From: Fabian Pflug @ 2026-03-30 12:24 UTC (permalink / raw)
To: Sascha Hauer, 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 represents a binary representation
of the soc_uid_bin variable.
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 | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/common/misc.c b/common/misc.c
index ecf9574f7a..f18c8b5825 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,16 +296,19 @@ 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_bin", &soc_uid_bin_str);
}
BAREBOX_MAGICVAR(global.soc_uid, "SoC Unique ID");
--
2.47.3
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH 2/2] i.MX: HAB: update text for HABV4_CSF_UNLOCK_UID
2026-03-30 12:24 [PATCH 0/2] Add additional globalvar for soc_uid Fabian Pflug
2026-03-30 12:24 ` [PATCH 1/2] common: misc: add soc_uid_bin to globalvar Fabian Pflug
@ 2026-03-30 12:24 ` Fabian Pflug
1 sibling, 0 replies; 3+ messages in thread
From: Fabian Pflug @ 2026-03-30 12:24 UTC (permalink / raw)
To: Sascha Hauer, BAREBOX; +Cc: Fabian Pflug
With the establishment of global.soc_uid_bin, 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.
Signed-off-by: Fabian Pflug <f.pflug@pengutronix.de>
---
arch/arm/mach-imx/Kconfig | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 2e4d1ac80a..bfcb6ae402 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -918,17 +918,12 @@ 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:
- i.MX___ unique ID: 7766554433221100
- or it can be queried by Linux via:
- - cat /sys/devices/soc0/serial_number
- 7766554433221100
-
- So this value have to be set:
+ is stored in $global.soc_uid_bin, but must be split into bytes.
+ The soc_uid_bin 0011223344556677 becomes:
- 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77
Afterwards, the `hab -p -r` command can be used to burn the fuse.
--
2.47.3
^ permalink raw reply [flat|nested] 3+ messages in thread