diff mbox series

[U-Boot,v2,2/3] mach-imx: bootaux: add dcache flushing before enabling M4

Message ID 20191128135621.12719-2-igor.opaniuk@gmail.com
State Awaiting Upstream
Delegated to: Stefano Babic
Headers show
Series [U-Boot,v2,1/3] mach-imx: bootaux: print stack pointer and reset vector | expand

Commit Message

Igor Opaniuk Nov. 28, 2019, 1:56 p.m. UTC
From: Igor Opaniuk <igor.opaniuk@toradex.com>

This patch fixes the issue with broken bootaux command,
when M4 binary is loaded and data cache isn't flushed
before M4 core is enabled.

Reproducing:
> tftpboot ${loadaddr} ${board_name}/hello_world.bin
> cp.b ${loadaddr} 0x7F8000 $filesize
> bootaux 0x7F8000

Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
---

 arch/arm/mach-imx/imx_bootaux.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Oleksandr Suvorov Dec. 3, 2019, 2:32 p.m. UTC | #1
On Thu, Nov 28, 2019 at 3:57 PM Igor Opaniuk <igor.opaniuk@gmail.com> wrote:
>
> From: Igor Opaniuk <igor.opaniuk@toradex.com>
>
> This patch fixes the issue with broken bootaux command,
> when M4 binary is loaded and data cache isn't flushed
> before M4 core is enabled.
>
> Reproducing:
> > tftpboot ${loadaddr} ${board_name}/hello_world.bin
> > cp.b ${loadaddr} 0x7F8000 $filesize
> > bootaux 0x7F8000
>
> Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>

Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>

> ---
>
>  arch/arm/mach-imx/imx_bootaux.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/arch/arm/mach-imx/imx_bootaux.c b/arch/arm/mach-imx/imx_bootaux.c
> index ee786f7d06..c750cee60c 100644
> --- a/arch/arm/mach-imx/imx_bootaux.c
> +++ b/arch/arm/mach-imx/imx_bootaux.c
> @@ -27,6 +27,8 @@ int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data)
>         writel(stack, M4_BOOTROM_BASE_ADDR);
>         writel(pc, M4_BOOTROM_BASE_ADDR + 4);
>
> +       flush_dcache_all();
> +
>         /* Enable M4 */
>  #ifdef CONFIG_IMX8M
>         call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_START, 0, 0, 0);
> --
> 2.17.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> https://lists.denx.de/listinfo/u-boot
Stefano Babic Dec. 29, 2019, 10:25 a.m. UTC | #2
> From: Igor Opaniuk <igor.opaniuk@toradex.com>
> This patch fixes the issue with broken bootaux command,
> when M4 binary is loaded and data cache isn't flushed
> before M4 core is enabled.
> Reproducing:
> > tftpboot ${loadaddr} ${board_name}/hello_world.bin
> > cp.b ${loadaddr} 0x7F8000 $filesize
> > bootaux 0x7F8000
> Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
> Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
Applied to u-boot-imx, -next, thanks !

Best regards,
Stefano Babic
diff mbox series

Patch

diff --git a/arch/arm/mach-imx/imx_bootaux.c b/arch/arm/mach-imx/imx_bootaux.c
index ee786f7d06..c750cee60c 100644
--- a/arch/arm/mach-imx/imx_bootaux.c
+++ b/arch/arm/mach-imx/imx_bootaux.c
@@ -27,6 +27,8 @@  int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data)
 	writel(stack, M4_BOOTROM_BASE_ADDR);
 	writel(pc, M4_BOOTROM_BASE_ADDR + 4);
 
+	flush_dcache_all();
+
 	/* Enable M4 */
 #ifdef CONFIG_IMX8M
 	call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_START, 0, 0, 0);