• Albin Tonnerre's avatar
    lib: add support for LZO-compressed kernels · 7dd65feb
    Albin Tonnerre authored
    This patch series adds generic support for creating and extracting
    LZO-compressed kernel images, as well as support for using such images on
    the x86 and ARM architectures, and support for creating and using
    LZO-compressed initrd and initramfs images.
    Russell King said:
    : Testing on a Cortex A9 model:
    : - lzo decompressor is 65% of the time gzip takes to decompress a kernel
    : - lzo kernel is 9% larger than a gzip kernel
    : which I'm happy to say confirms your figures when comparing the two.
    : However, when comparing your new gzip code to the old gzip code:
    : - new is 99% of the size of the old code
    : - new takes 42% of the time to decompress than the old code
    : What this means is that for a proper comparison, the results get even better:
    : - lzo is 7.5% larger than the old gzip'd kernel image
    : - lzo takes 28% of the time that the old gzip code took
    : So the expense seems definitely worth the effort.  The only reason I
    : can think of ever using gzip would be if you needed the additional
    : compression (eg, because you have limited flash to store the image.)
    : I would argue that the default for ARM should therefore be LZO.
    This patch:
    The lzo compressor is worse than gzip at compression, but faster at
    extraction.  Here are some figures for an ARM board I'm working on:
    Uncompressed size: 3.24Mo
    gzip  1.61Mo 0.72s
    lzo   1.75Mo 0.48s
    So for a compression ratio that is still relatively close to gzip, it's
    much faster to extract, at least in that case.
    This part contains:
     - Makefile routine to support lzo compression
     - Fixes to the existing lzo compressor so that it can be used in
       compressed kernels
     - wrapper around the existing lzo1x_decompress, as it only extracts one
       block at a time, while we need to extract a whole file here
     - config dialog for kernel compression
    [akpm@linux-foundation.org: coding-style fixes]
    [akpm@linux-foundation.org: cleanup]
    Signed-off-by: default avatarAlbin Tonnerre <albin.tonnerre@free-electrons.com>
    Tested-by: default avatarWu Zhangjin <wuzhangjin@gmail.com>
    Acked-by: default avatar"H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: default avatarRussell King <rmk@arm.linux.org.uk>
    Acked-by: default avatarRussell King <rmk@arm.linux.org.uk>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
decompress_unlzo.c 4.77 KB