Re: [PATCH v2 3/4] powerpc/boot: Add bzip2 support for uImage
On 04/25/2019 02:37 PM, Adam Borowski wrote: On Tue, Apr 23, 2019 at 02:20:43PM +, Christophe Leroy wrote: This patch allows to generate bzip2 compressed uImage Please don't add bzip2 support, that's a waste of your time as we're trying to remove it kernel-wide. There's a patchset to retire compressors beaten by alternatives on the whole speed-to-size curve; reposting it is overdue. It does: * add ZSTD (fast and strong) * remove BZIP2 (obsolete, only user in kernel) * remove LZMA (redundant with XZ, uses a private copy of its library) * makes Kconfig prose talk badly about LZO (used elsewhere in the kernel) I believe only three compressors are worth using here: XZ, ZSTD, LZ4. GZIP must stay because of ubiquitous support, the rest should go. Ok. Initially the purpose was to add lzma, then I took the opportunity to add all compressors supported by u-boot uImage files which are 'none, bzip2, gzip, lzma, lzo': [root@po16846vm linux-powerpc]# mkimage -C -h Invalid Compression Type - valid names are: none, bzip2, gzip, lzma, lzo Usage: mkimage -l image -l ==> list image header information mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image So I can leave bzip2 aside. xz, zstd and lz4 are not supported by the uImage format as far as I know so we have to keep lzma which gives a far better compression ratio than gzip (gzipped uImage don't fit in my board's NOR Flash while lzmaed uImage does). Christophe --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -199,6 +199,7 @@ config PPC + select HAVE_KERNEL_BZIP2if DEFAULT_UIMAGE --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile @@ -23,6 +23,7 @@ all: $(obj)/zImage +compress-$(CONFIG_KERNEL_BZIP2) := CONFIG_KERNEL_BZIP2 @@ -259,6 +260,7 @@ endif +compressor-$(CONFIG_KERNEL_BZIP2) := bz2 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper @@ -137,7 +137,7 @@ while [ "$#" -gt 0 ]; do -[ "$1" != "gz" -o "$1" != "xz" -o "$1" != "lzma" -o "$1" != "none" ] || usage +[ "$1" != "gz" -o "$1" != "xz" -o "$1" != "lzma" -o "$1" != "bz2" -o "$1" != "none" ] || usage @@ -149,6 +149,9 @@ while [ "$#" -gt 0 ]; do + if [ $uboot_comp = "bz2" ]; then + uboot_comp=bzip2 + fi @@ -377,6 +380,9 @@ if [ -z "$cacheit" -o ! -f "$vmz$compression" -o "$vmz$compression" -ot "$kernel +.bz2) +bzip2 -f "$vmz.$$" + ;; Meow!
Re: [PATCH v2 3/4] powerpc/boot: Add bzip2 support for uImage
On Tue, Apr 23, 2019 at 02:20:43PM +, Christophe Leroy wrote: > This patch allows to generate bzip2 compressed uImage Please don't add bzip2 support, that's a waste of your time as we're trying to remove it kernel-wide. There's a patchset to retire compressors beaten by alternatives on the whole speed-to-size curve; reposting it is overdue. It does: * add ZSTD (fast and strong) * remove BZIP2 (obsolete, only user in kernel) * remove LZMA (redundant with XZ, uses a private copy of its library) * makes Kconfig prose talk badly about LZO (used elsewhere in the kernel) I believe only three compressors are worth using here: XZ, ZSTD, LZ4. GZIP must stay because of ubiquitous support, the rest should go. > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -199,6 +199,7 @@ config PPC > + select HAVE_KERNEL_BZIP2if DEFAULT_UIMAGE > --- a/arch/powerpc/boot/Makefile > +++ b/arch/powerpc/boot/Makefile > @@ -23,6 +23,7 @@ all: $(obj)/zImage > +compress-$(CONFIG_KERNEL_BZIP2) := CONFIG_KERNEL_BZIP2 > @@ -259,6 +260,7 @@ endif > +compressor-$(CONFIG_KERNEL_BZIP2) := bz2 > --- a/arch/powerpc/boot/wrapper > +++ b/arch/powerpc/boot/wrapper > @@ -137,7 +137,7 @@ while [ "$#" -gt 0 ]; do > -[ "$1" != "gz" -o "$1" != "xz" -o "$1" != "lzma" -o "$1" != "none" ] > || usage > +[ "$1" != "gz" -o "$1" != "xz" -o "$1" != "lzma" -o "$1" != "bz2" -o > "$1" != "none" ] || usage > @@ -149,6 +149,9 @@ while [ "$#" -gt 0 ]; do > + if [ $uboot_comp = "bz2" ]; then > + uboot_comp=bzip2 > + fi > @@ -377,6 +380,9 @@ if [ -z "$cacheit" -o ! -f "$vmz$compression" -o > "$vmz$compression" -ot "$kernel > +.bz2) > +bzip2 -f "$vmz.$$" > + ;; Meow! -- ⢀⣴⠾⠻⢶⣦⠀ ⣾⠁⢰⠒⠀⣿⡁ 10 people enter a bar: 1 who understands binary, ⢿⡄⠘⠷⠚⠋⠀ 1 who doesn't, D who prefer to write it as hex, ⠈⠳⣄ and 1 who narrowly avoided an off-by-one error.
[PATCH v2 3/4] powerpc/boot: Add bzip2 support for uImage
This patch allows to generate bzip2 compressed uImage Signed-off-by: Christophe Leroy --- v2: Restore alphabetic order in Kconfig --- arch/powerpc/Kconfig | 1 + arch/powerpc/boot/Makefile | 2 ++ arch/powerpc/boot/wrapper | 8 +++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index dd22988cac0b..c9fd20988237 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -199,6 +199,7 @@ config PPC select HAVE_IDE select HAVE_IOREMAP_PROT select HAVE_IRQ_EXIT_ON_IRQ_STACK + select HAVE_KERNEL_BZIP2if DEFAULT_UIMAGE select HAVE_KERNEL_GZIP select HAVE_KERNEL_LZMA if DEFAULT_UIMAGE select HAVE_KERNEL_XZ if PPC_BOOK3S || 44x diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 9b7b11a22925..0a7f8c2dc8af 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile @@ -23,6 +23,7 @@ all: $(obj)/zImage compress-$(CONFIG_KERNEL_GZIP) := CONFIG_KERNEL_GZIP compress-$(CONFIG_KERNEL_XZ) := CONFIG_KERNEL_XZ compress-$(CONFIG_KERNEL_LZMA) := CONFIG_KERNEL_LZMA +compress-$(CONFIG_KERNEL_BZIP2) := CONFIG_KERNEL_BZIP2 ifdef CROSS32_COMPILE BOOTCC := $(CROSS32_COMPILE)gcc @@ -259,6 +260,7 @@ endif compressor-$(CONFIG_KERNEL_GZIP) := gz compressor-$(CONFIG_KERNEL_XZ) := xz compressor-$(CONFIG_KERNEL_LZMA) := lzma +compressor-$(CONFIG_KERNEL_BZIP2) := bz2 # args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd quiet_cmd_wrap = WRAP$@ diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper index 51dc42f5acbc..d1384e8c0c6f 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper @@ -137,7 +137,7 @@ while [ "$#" -gt 0 ]; do -Z) shift [ "$#" -gt 0 ] || usage -[ "$1" != "gz" -o "$1" != "xz" -o "$1" != "lzma" -o "$1" != "none" ] || usage +[ "$1" != "gz" -o "$1" != "xz" -o "$1" != "lzma" -o "$1" != "bz2" -o "$1" != "none" ] || usage compression=".$1" uboot_comp=$1 @@ -149,6 +149,9 @@ while [ "$#" -gt 0 ]; do if [ $uboot_comp = "gz" ]; then uboot_comp=gzip fi + if [ $uboot_comp = "bz2" ]; then + uboot_comp=bzip2 + fi ;; --no-gzip) # a "feature" of the the wrapper script is that it can be used outside @@ -377,6 +380,9 @@ if [ -z "$cacheit" -o ! -f "$vmz$compression" -o "$vmz$compression" -ot "$kernel .lzma) xz --format=lzma -f -6 "$vmz.$$" ;; +.bz2) +bzip2 -f "$vmz.$$" + ;; *) # drop the compression suffix so the stripped vmlinux is used compression= -- 2.13.3