On Fri, Aug 07, 2026 at 01:25:45PM +0200, Mehmet Fide wrote:

> From: Mehmet Fide <[email protected]>
> 
> The Toradex config block is read by settings_r(), which is reachable
> only as an event spy:
> 
>   EVENT_SPY_SIMPLE(EVT_SETTINGS_R, settings_r);
> 
> board_r.c does call INITCALL_EVT(EVT_SETTINGS_R) unconditionally, but
> with CONFIG_EVENT disabled event_notify_null() is an empty inline, so
> the spy is never reached and settings_r() never runs. Nothing else
> selects EVENT for colibri_vf, and CONFIG_EVENT has no prompt, so a
> defconfig cannot turn it on by itself.
> 
> The effect is that serial#, ethaddr and eth1addr are never populated
> from the config block. serial# in turn is what fdt_root() copies into
> the device tree as "serial-number", so Linux loses
> /proc/device-tree/serial-number along with anything deriving a MAC
> address or a device identity from it. The failure is quiet: a module
> whose saved environment predates the conversion to the event framework
> keeps the old values and looks healthy until the environment is
> rewritten.
> 
> Verified on a Colibri VF50. Before the change "printenv serial#"
> reports "not defined" and no "MISSING TORADEX CONFIG BLOCK" is
> printed, which is the signature of the spy never running. After it the
> banner shows
> 
>   Model: Toradex 0013 Colibri VF50 128MB IT V1.2B
>   Serial#: 03135809
> 
> and Linux finds /proc/device-tree/serial-number again.
> 
> TDX_CFG_BLOCK cannot work without the spy, so select what it needs.
> 
> Signed-off-by: Mehmet Fide <[email protected]>

Fixes: 118b17b84fc7 ("toradex: common: Use SETTINGS_R event to read toradex 
config block")
Reviewed-by: Tom Rini <[email protected]>

-- 
Tom

Attachment: signature.asc
Description: PGP signature

Reply via email to