[REGRESSION] imx: spl_imx_romapi: boot loops

Marcel Ziswiler marcel.ziswiler at toradex.com
Thu Oct 26 09:35:52 CEST 2023


Hi Rasmus

On Wed, 2023-10-25 at 20:35 +0200, Rasmus Villemoes wrote:
> On 25/10/2023 18.01, Marcel Ziswiler wrote:
> > Hi Rasmus
> > 
> > On Tue, 2023-10-24 at 16:32 +0200, Rasmus Villemoes wrote:
> 
> > > What am I missing?
> > 
> > Good question. Some more debugging revealed that we are missing 464 bytes at the beginning of the buffer.
> > Why
> > would that be?
> 
> [slaps forehead]
> 
> 		bytes = end - ss->end;
> 		bytes += ss->pagesize - 1;
> 		bytes /= ss->pagesize;
> 		bytes *= ss->pagesize;
> 
> 		ret = rom_api_download_image(ss->end, 0, bytes);
> ...
> 		ss->end = end;
> 
> So I figure out how many bytes must at least be fetched to honor the
> current read, round that up to the ss->pagesize [which is a no-op in the
> usb download case because that has ->pagesize==1, so I even considered
> leaving that rounding-up out], fetch that many bytes, but then record
> the original upper bound as the new end of the valid data. That can
> certainly account for losing something 0 < foo < pagesize number of bytes.
> 
> So let's try if changing that last line to
> 
>   ss->end += bytes;
> 
> works better.

Yes, that cuts it. Please find the fix here [1].

> Rasmus

Thanks again for all your help!

[1] https://lore.kernel.org/all/20231026073220.244387-1-marcel@ziswiler.com

Cheers

Marcel


More information about the U-Boot mailing list