[U-Boot] [PATCH 2/2] rockchip: misc: protect serial# from getting overwritten
Kever Yang
kever.yang at rock-chips.com
Sun Dec 1 14:47:36 CET 2019
On 2019/11/29 下午11:40, Heiko Stuebner wrote:
> From: Heiko Stuebner <heiko.stuebner at theobroma-systems.com>
>
> serial# is one of the vendor properties and thus protected from being
> overwritten if already set. If env_set is called anyway this result in
> some nasty warnings, so check for presence before trying that.
>
> In the same direction check for the presence of cpuid# and compare it
> to the actual hardware and emit a warning if they don't match.
>
> Signed-off-by: Heiko Stuebner <heiko.stuebner at theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>
Thanks,
- Kever
> ---
> arch/arm/mach-rockchip/misc.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/mach-rockchip/misc.c b/arch/arm/mach-rockchip/misc.c
> index d0fb3d07a7..545b98baad 100644
> --- a/arch/arm/mach-rockchip/misc.c
> +++ b/arch/arm/mach-rockchip/misc.c
> @@ -91,6 +91,7 @@ int rockchip_cpuid_set(const u8 *cpuid, const u32 cpuid_length)
> char cpuid_str[cpuid_length * 2 + 1];
> u64 serialno;
> char serialno_str[17];
> + const char *oldid;
> int i;
>
> memset(cpuid_str, 0, sizeof(cpuid_str));
> @@ -112,8 +113,16 @@ int rockchip_cpuid_set(const u8 *cpuid, const u32 cpuid_length)
> serialno |= (u64)crc32_no_comp(serialno, high, 8) << 32;
> snprintf(serialno_str, sizeof(serialno_str), "%016llx", serialno);
>
> + oldid = env_get("cpuid#");
> + if (oldid && strcmp(oldid, cpuid_str) != 0)
> + printf("cpuid: value %s present in env does not match hardware %s\n",
> + oldid, cpuid_str);
> +
> env_set("cpuid#", cpuid_str);
> - env_set("serial#", serialno_str);
> +
> + /* Only generate serial# when none is set yet */
> + if (!env_get("serial#"))
> + env_set("serial#", serialno_str);
>
> return 0;
> }
More information about the U-Boot
mailing list