From: "Lothar Waßmann" <LW@KARO-electronics.de>
To: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
Cc: festevam@gmail.com, sbabic@denx.de, u-boot@lists.denx.de,
trini@konsulko.com, uboot-imx@nxp.com,
Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH V2] cpu: imx8_cpu: Avoid revision to corrupt device tree
Date: Thu, 17 Oct 2024 11:19:36 +0200 [thread overview]
Message-ID: <20241017111936.6688fce9@karo-electronics.de> (raw)
In-Reply-To: <20241017081236.26742-1-peng.fan@oss.nxp.com>
Hi,
On Thu, 17 Oct 2024 16:12:36 +0800 Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> U-Boot device tree is padded just after U-Boot proper.
> After the whole stuff loaded to DRAM space, the device tree
> area is conflict with BSS region before U-Boot relocation.
>
> So any write to BSS area before reloc_fdt will corrupt the
> device tree. Without the fix, there is issue that “binman_init
> failed:-2” on i.MX8MP-EVK board.
>
Placing the 'revision' variable into the 'data' section would achieve
the same goal without any further code change:
static char revision[4] __section(".data");
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>
> V2:
> move the rev to malloc area in cpu_imx_plat
> tested on i.MX8MP EVK
>
> drivers/cpu/imx8_cpu.c | 35 ++++++++++++++++++++---------------
> 1 file changed, 20 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/cpu/imx8_cpu.c b/drivers/cpu/imx8_cpu.c
> index 6c0a8c0cbe4..b11f8dc0c91 100644
> --- a/drivers/cpu/imx8_cpu.c
> +++ b/drivers/cpu/imx8_cpu.c
> @@ -20,10 +20,11 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> +#define IMX_REV_LEN 4
> struct cpu_imx_plat {
> const char *name;
> - const char *rev;
> const char *type;
> + char rev[IMX_REV_LEN];
> u32 cpu_rsrc;
> u32 cpurev;
> u32 freq_mhz;
> @@ -69,28 +70,32 @@ static const char *get_imx_type_str(u32 imxtype)
> }
> }
>
> -static const char *get_imx_rev_str(u32 rev)
> +static void get_imx_rev_str(struct cpu_imx_plat *plat, u32 rev)
> {
> - static char revision[4];
> -
> if (IS_ENABLED(CONFIG_IMX8)) {
> + char rev;
> +
> switch (rev) {
> case CHIP_REV_A:
> - return "A";
> + rev = 'A';
> + break;
> case CHIP_REV_B:
> - return "B";
> + rev = 'B';
> + break;
> case CHIP_REV_C:
> - return "C";
> + rev = 'C';
> + break;
> default:
> - return "?";
> + rev = '?';
> + break;
> }
> + plat->rev[0] = rev;
> + plat->rev[1] = '\0';
> } else {
> - revision[0] = '1' + (((rev & 0xf0) - CHIP_REV_1_0) >> 4);
> - revision[1] = '.';
> - revision[2] = '0' + (rev & 0xf);
> - revision[3] = '\0';
> -
> - return revision;
> + plat->rev[0] = '1' + (((rev & 0xf0) - CHIP_REV_1_0) >> 4);
> + plat->rev[1] = '.';
> + plat->rev[2] = '0' + (rev & 0xf);
> + plat->rev[3] = '\0';
> }
> }
>
> @@ -318,7 +323,7 @@ static int imx_cpu_probe(struct udevice *dev)
> set_core_data(dev);
> cpurev = get_cpu_rev();
> plat->cpurev = cpurev;
> - plat->rev = get_imx_rev_str(cpurev & 0xFFF);
> + get_imx_rev_str(plat, cpurev & 0xFFF);
> plat->type = get_imx_type_str((cpurev & 0x1FF000) >> 12);
> plat->freq_mhz = imx_get_cpu_rate(dev) / 1000000;
> plat->mpidr = dev_read_addr(dev);
Lothar Waßmann
--
___________________________________________________________
Ka-Ro electronics GmbH | Pascalstraße 22 | D - 52076 Aachen
Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10
Geschäftsführer: Matthias Kaussen
Handelsregistereintrag: Amtsgericht Aachen, HRB 4996
www.karo-electronics.de | info@karo-electronics.de
___________________________________________________________
next prev parent reply other threads:[~2024-10-17 9:19 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-17 8:12 [PATCH V2] cpu: imx8_cpu: Avoid revision to corrupt device tree Peng Fan (OSS)
2024-10-17 9:19 ` Lothar Waßmann [this message]
2024-10-17 9:21 ` Peng Fan
2024-10-17 11:25 ` Lothar Waßmann
2024-10-17 12:50 ` Fabio Estevam
2024-10-17 14:25 ` Tom Rini
2024-10-18 1:02 ` Peng Fan
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=20241017111936.6688fce9@karo-electronics.de \
--to=lw@karo-electronics.de \
--cc=festevam@gmail.com \
--cc=peng.fan@nxp.com \
--cc=peng.fan@oss.nxp.com \
--cc=sbabic@denx.de \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--cc=uboot-imx@nxp.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.