
On 18.04.19 22:36, Julius Werner wrote:
My approach was to uncompress all compressed images on-the-fly in fit_image_load().
Right, that's essentially what this patch is doing too.
Cool. I'm sorry I haven't found the time to dig into your patch for details (too much day-to-day work right now).
Or I could dig up my patches from October and we'll see how far you get with those?
I think I found your patch: https://lists.denx.de/pipermail/u-boot/2018-October/344673.html
Exactly. I do have some further versions locally, but no real breakthrough I think.
It seems to be doing something very close to what my patch does anyway. My patch goes a little further by also solving the case when no load address is given (in that case it will malloc() a buffer to decompress into with an upper bound guess for the required size).
Hmm, I think we might want to use the lmb functions here to allocate a buffer instead of relyling on malloc? The malloc pool might be large enough for an uncompressed devicetree, but not for an 8 MByte FPGA image...
But starting with malloc might be ok.
If there is a load size given, the two should end up doing the same thing. Also your patch works on all image types, which as you said there breaks it for kernels. I think the option of doing it for all image types except kernels would be a good solution for everyone. (Ultimately, I think it might be nicer if the kernel decompression would also be handled there and not as a special case, but I'd rather not tackle everything at once. This can always be iterated upon in the future.)
The reason I discontinued that patch was that I started adding a feature to mkimage to add a property for the uncompressed size. This is still pending work I haven't sent to the ML, but I do want to continue it once I find the time.
So maybe we could move on with a v2 of your patch that uncompresses everything but the kernel? I'd like to test that with my compressed FPGA images then.
Regards, Simon