Subject: Re: [PATCH] powerpc: Enable kernel XZ compression option on PPC_85xx

From: Christian Lamparter <[email-masked]>
Date: Fri, 14 Jun 2019 21:56:40 +0200

On Friday, June 14, 2019 12:06:48 PM CEST Christophe Leroy wrote:
> 
> Le 13/06/2019 à 13:42, Michael Ellerman a écrit :
> > Daniel Axtens <[email-masked]> writes:
> >> Pawel Dembicki <[email-masked]> writes:
> >>
> >>> Enable kernel XZ compression option on PPC_85xx. Tested with
> >>> simpleImage on TP-Link TL-WDR4900 (Freescale P1014 processor).
> >>>
> >>> Suggested-by: Christian Lamparter <[email-masked]>
> >>> Signed-off-by: Pawel Dembicki <[email-masked]>
> >>> ---
> >>>   arch/powerpc/Kconfig | 2 +-
> >>>   1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> >>> index 8c1c636308c8..daf4cb968922 100644
> >>> --- a/arch/powerpc/Kconfig
> >>> +++ b/arch/powerpc/Kconfig
> >>> @@ -196,7 +196,7 @@ config PPC
> >>>   	select HAVE_IOREMAP_PROT
> >>>   	select HAVE_IRQ_EXIT_ON_IRQ_STACK
> >>>   	select HAVE_KERNEL_GZIP
> >>> -	select HAVE_KERNEL_XZ			if PPC_BOOK3S || 44x
> >>> +	select HAVE_KERNEL_XZ			if PPC_BOOK3S || 44x || PPC_85xx
> >>
> >> (I'm not super well versed in the compression stuff, so apologies if
> >> this is a dumb question.) If it's this simple, is there any reason we
> >> can't turn it on generally, or convert it to a blacklist of platforms
> >> known not to work?
> > 
> > For some platforms enabling XZ requires that your u-boot has XZ support,
> > and I'm not very clear on when that support landed in u-boot and what
> > boards have it. And there are boards out there with old/custom u-boots
> > that effectively can't be updated.
> 
> I don't think that it has anything to do with u-boot.
> AFAIK, today's mainline U-boot only supports GZIP (by default) and the 
> following optional ones: LZO, LZMA, LZ4.
> 
> If we want to set additional compression types for u-boot, it is not 
> enough to select HAVE_KERNEL_XXXX, we also have to update uImage 
> generation scripts.
> 
> See the series I sent some time ago: 
> https://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=104153
> I'll resent it without bzip2 as today's uboot doesn't support bzip2 anymore.
> 
> > 
> > But as a server guy I don't really know the details of all that very
> > well. So if someone tells me that we should enable XZ for everything, or
> > as you say just black list some platforms, then that's fine by me.
> > 
> 
> I guess we first need to understand how this is used.
> 

to add to the confusion:

The powerpc arch is sort of special since it has the various targets have
different arch/powerpc/boot/wrapper for everyone unfamiliar (people from
ARM or other targets,) please look at: 

https://www.kernel.org/doc/Documentation/powerpc/bootwrapper.txt

and see that this is very different from ARM, MIPS, x86, etc.

I think the cuImage*, dtbImage*, simpleImage, etc... wouldn't
be affected if the kernel is compressed by XZ, as in they should
still boot fine, altough XZ takes a bit longer to unpack of course.

However, for the uImage this could spell a problem, however "HAVE_KERNEL_XZ"
does not automatically entail that the wrapper script from above
compresses the generated uimage with LZMAd/xz. Instead this is controlled
by init/Kconfig and the "Kernel compression mode" setting there. 
And currently that defaults to CONFIG_KERNEL_GZIP. So the wrapper script
currently gzipped uImages unless the target config overwrites it to
something else (and the target has the right 
HAVE_KERNEL_XZ/BZIP2/LZMA/LZO/LZ4/... as well).

Regards,
Christian