Re: [PATCH] arm: Add support for ZSTD compressed kernel

Peter Geis
2020-08-06T22:58:34Z

On Thu, Aug 6, 2020 at 6:22 PM Russell King - ARM Linux admin
<linux@armlinux.org.uk> wrote:
>
> On Thu, Aug 06, 2020 at 05:46:50PM -0400, Peter Geis wrote:
> > Good Evening,
> >
> > I had attempted to get this working as well, but have run into
> > difficulties with both my implementation and yours as well.
> > My implementation was almost the same as yours, with the exception of
> > also changing:
> > @@ -303,7 +305,7 @@ restart: adr r0, LC1
> >
> > #ifndef CONFIG_ZBOOT_ROM
> > /* malloc space is above the relocated stack (64k max) */
> > - add r10, sp, #0x10000
> > + add r10, sp, #0x30000
> > #else
> > /*
> > * With ZBOOT_ROM the bss/stack is non relocatable,
> >
> > On QEMU this implementation works fine.
> > However on bare metal tegra30, I get the following error:
> >
> > Jumping to kernel at:4861 ms
> >
> > C:0x80A000C0-0x8112BA40->0x8152C700-0x81C58080
> > Uncompressing Linux...
> >
> > ZSTD-compressed dstSize is too small
> >
> > -- System halted
> >
> > The only difference between the bare metal test and the qemu test is
> > the zImage with appended dtb is packaged in the android boot format
> > for the bare metal test.
> > Otherwise it's exactly the same file.
>
> So it's relocating the compressed kernel and decompressor from
> 0x80A000C0-0x8112BA40 to 0x8152C700-0x81C58080 and then failing.
> Does the QEMU version also do similar?

Here is the output from QEMU, note boot doesn't work because this
image isn't for QEMU:

C:0x400100C0-0x4073B1E0->0x4152C600-0x41C57720
Uncompressing Linux... done, booting the kernel.

>
> On the off-hand, I'm not sure why it should fail. I assume that
> you've tried the other decompressors and they work fine on the
> same setups?

Correct, all other compressors work.
ZSTD is handy for arm because size and speed are both important.

>
> --
> RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
> FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!