mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH] ARM: i.MX8M: bootrom: fix load image size
@ 2023-11-13  9:04 Marco Felsch
  2023-11-15 13:14 ` Sascha Hauer
  0 siblings, 1 reply; 3+ messages in thread
From: Marco Felsch @ 2023-11-13  9:04 UTC (permalink / raw)
  To: barebox

Without the proper aligned image size we may encounter host load errors
like:

| found i.MX8MP USB device [1fc9:0146]
| No dcd table in this ivt
| dl_command err=-1, last_trans=-1
| 4 in err=-4, last_trans=0  00 00 00 00

The reason for this is that we asked only for the required bytes while
the host tries to send the complete image which may contain alignment
bytes at the end.

Fix this by request always 4K aligned sizes.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
 arch/arm/mach-imx/romapi.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/arch/arm/mach-imx/romapi.c b/arch/arm/mach-imx/romapi.c
index 1b1800f1e000..b4c63e4d7274 100644
--- a/arch/arm/mach-imx/romapi.c
+++ b/arch/arm/mach-imx/romapi.c
@@ -6,6 +6,7 @@
 #include <linux/bitfield.h>
 #include <soc/imx9/flash_header.h>
 #include <asm/sections.h>
+#include <linux/sizes.h>
 #include <mach/imx/romapi.h>
 #include <mach/imx/atf.h>
 #include <mach/imx/imx8m-regs.h>
@@ -50,6 +51,12 @@ static int imx_bootrom_query(struct rom_api *rom_api, uint32_t type, uint32_t *_
 
 static int imx_romapi_load_stream(struct rom_api *rom_api, void *adr, size_t size)
 {
+	/*
+	 * The imx-image tool align the final image size to 4K so we need to
+	 * take this into account.
+	 */
+	size = ALIGN(size, SZ_4K);
+
 	while (size) {
 		size_t chunksize = min(size, (size_t)1024);
 		int ret;
-- 
2.39.2




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] ARM: i.MX8M: bootrom: fix load image size
  2023-11-13  9:04 [PATCH] ARM: i.MX8M: bootrom: fix load image size Marco Felsch
@ 2023-11-15 13:14 ` Sascha Hauer
  2023-11-15 15:22   ` Marco Felsch
  0 siblings, 1 reply; 3+ messages in thread
From: Sascha Hauer @ 2023-11-15 13:14 UTC (permalink / raw)
  To: Marco Felsch; +Cc: barebox

On Mon, Nov 13, 2023 at 10:04:38AM +0100, Marco Felsch wrote:
> Without the proper aligned image size we may encounter host load errors
> like:
> 
> | found i.MX8MP USB device [1fc9:0146]
> | No dcd table in this ivt
> | dl_command err=-1, last_trans=-1
> | 4 in err=-4, last_trans=0  00 00 00 00
> 
> The reason for this is that we asked only for the required bytes while
> the host tries to send the complete image which may contain alignment
> bytes at the end.
> 
> Fix this by request always 4K aligned sizes.

As discussed in mumble: This fix is not correct. It works with HABv4
enabled images, but not on images without HAB support.

Sascha

> 
> Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> ---
>  arch/arm/mach-imx/romapi.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/arch/arm/mach-imx/romapi.c b/arch/arm/mach-imx/romapi.c
> index 1b1800f1e000..b4c63e4d7274 100644
> --- a/arch/arm/mach-imx/romapi.c
> +++ b/arch/arm/mach-imx/romapi.c
> @@ -6,6 +6,7 @@
>  #include <linux/bitfield.h>
>  #include <soc/imx9/flash_header.h>
>  #include <asm/sections.h>
> +#include <linux/sizes.h>
>  #include <mach/imx/romapi.h>
>  #include <mach/imx/atf.h>
>  #include <mach/imx/imx8m-regs.h>
> @@ -50,6 +51,12 @@ static int imx_bootrom_query(struct rom_api *rom_api, uint32_t type, uint32_t *_
>  
>  static int imx_romapi_load_stream(struct rom_api *rom_api, void *adr, size_t size)
>  {
> +	/*
> +	 * The imx-image tool align the final image size to 4K so we need to
> +	 * take this into account.
> +	 */
> +	size = ALIGN(size, SZ_4K);
> +
>  	while (size) {
>  		size_t chunksize = min(size, (size_t)1024);
>  		int ret;
> -- 
> 2.39.2
> 
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] ARM: i.MX8M: bootrom: fix load image size
  2023-11-15 13:14 ` Sascha Hauer
@ 2023-11-15 15:22   ` Marco Felsch
  0 siblings, 0 replies; 3+ messages in thread
From: Marco Felsch @ 2023-11-15 15:22 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: barebox

On 23-11-15, Sascha Hauer wrote:
> On Mon, Nov 13, 2023 at 10:04:38AM +0100, Marco Felsch wrote:
> > Without the proper aligned image size we may encounter host load errors
> > like:
> > 
> > | found i.MX8MP USB device [1fc9:0146]
> > | No dcd table in this ivt
> > | dl_command err=-1, last_trans=-1
> > | 4 in err=-4, last_trans=0  00 00 00 00
> > 
> > The reason for this is that we asked only for the required bytes while
> > the host tries to send the complete image which may contain alignment
> > bytes at the end.
> > 
> > Fix this by request always 4K aligned sizes.
> 
> As discussed in mumble: This fix is not correct. It works with HABv4
> enabled images, but not on images without HAB support.

Yes, please ignore this patch. Patch [1] supersede this patch.

[1] https://lore.barebox.org/barebox/20231114133358.3746051-1-m.felsch@pengutronix.de/T/#u

Regards,
  Marco



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-11-15 15:23 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-13  9:04 [PATCH] ARM: i.MX8M: bootrom: fix load image size Marco Felsch
2023-11-15 13:14 ` Sascha Hauer
2023-11-15 15:22   ` Marco Felsch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox