coreboot-kgpe-d16/payloads/libpayload/include
Julius Werner bf27391da5 libpayload: Add LZ4 decompression algorithm
This patch adds support for the LZ4 decompression algorithm to
libpayload. It's what all the cool kids are using for decompression
these days and has many interesting advantages over LZMA (and everything
else I know of): blazing fast decompression (20(!) times faster than
LZMA, twice as fast as LZO on my Cortex-A72), no memory requirements on
decompression, and possibly in-place decompression support. It pays for
that with a lower compression ratio (about 50% larger compressed size
than LZMA, 10% larger than LZO for an ARM64 Linux kernel binary), but
the boot time math still works in its favor for our IO speeds.

This patch only adds the raw decompression functions for use by external
payloads, we can later try integrating them in CBFS. It copies the
decompression code itself unmodified from the upstream LZ4 library at
github.com/Cyan4973/lz4 which will hopefully make it easy to update. The
frame format parsing is reimplemented since the upstream version looks
unnecessarily complex and unreadable for our needs.

BRANCH=smaug
BUG=chrome-os-partner:32184
TEST=With other patches, booted ARM64 kernel that got compressed from
15M to 5.1M and decompresses in 44ms.

Change-Id: I65bdc4b2b19bd51c7b7e17a4e4b79da301a2a014
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: f8a1fc996d5b0234d07f567fa8163d0f802d5144
Original-Change-Id: I15c0620da05561ade2552b15ffdf6bb3afd7eb26
Original-Signed-off-by: Julius Werner <jwerner@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/282743
Original-Reviewed-by: Stefan Reinauer <reinauer@google.com>
Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: http://review.coreboot.org/10845
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
2015-07-09 00:10:16 +02:00
..
arm/arch libpayload: arm(64): add read8/16/32 and write8/16/32 2015-07-06 09:39:48 +02:00
arm64/arch libpayload: arm(64): add read8/16/32 and write8/16/32 2015-07-06 09:39:48 +02:00
arpa Refactor the endianness conversion functions and header files. 2012-11-08 19:49:51 +01:00
mips/arch Remove address from GPLv2 headers 2015-05-21 20:50:25 +02:00
pci libpayload: Add a few more PCI constants 2013-08-26 00:24:53 +02:00
storage libpayload: Make Kconfig bools use IS_ENABLED() 2015-06-30 18:55:15 +02:00
sys libpayload: Start using only internal and compiler headers. 2013-03-13 22:04:44 +01:00
udc libpayload: add UDC driver for Designware controller 2015-06-30 08:09:49 +02:00
usb libpayload: usb: dwc2: support interrupt transfer 2015-07-06 09:40:02 +02:00
x86/arch libpayload: x86: correct types used for IO 2015-05-13 15:39:54 +02:00
assert.h libpayload: Fix the format string of the assert macro. 2012-11-07 18:36:05 +01:00
cbfs.h Remove empty lines at end of file 2015-06-08 00:55:07 +02:00
cbfs_core.h Remove address from GPLv2 headers 2015-05-21 20:50:25 +02:00
cbfs_ram.h Remove address from GPLv2 headers 2015-05-21 20:50:25 +02:00
coreboot_tables.h libpayload: Parse MTC and fill mtc_start and mtc_size 2015-06-23 08:19:57 +02:00
ctype.h
die.h libpayload: Add a new "die" function to fatally signal programming errors. 2014-09-15 17:37:13 +02:00
endian.h libpayload: Make Kconfig bools use IS_ENABLED() 2015-06-30 18:55:15 +02:00
errno.h
exception.h libpayload: Rework exception hook interface 2015-01-09 07:05:15 +01:00
gdb.h Remove address from GPLv2 headers 2015-05-21 20:50:25 +02:00
getopt.h
inttypes.h libpayload: Start using only internal and compiler headers. 2013-03-13 22:04:44 +01:00
ipchksum.h libpayload: Add a new "die" function to fatally signal programming errors. 2014-09-15 17:37:13 +02:00
kconfig.h libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2014-08-05 18:44:08 +02:00
keycodes.h libpayload: Make keycode constants available outside of curses.h. 2013-03-18 20:45:48 +01:00
libpayload.h update common base header files 2015-07-06 09:41:38 +02:00
limits.h
lz4.h libpayload: Add LZ4 decompression algorithm 2015-07-09 00:10:16 +02:00
lzma.h LZMA: Add a version of ulzma which takes the input and output buffer sizes. 2014-08-10 22:29:51 +02:00
malloc.h
multiboot_tables.h
panel.h
pci.h libpayload: Add definitions for more config space registers. 2012-11-07 18:36:27 +01:00
queue.h libpayload: Add OpenBSD queue implementation 2015-03-19 23:23:36 +01:00
stdarg.h libpayload: Don't sneak in compiler includes 2013-04-18 02:50:28 +02:00
stddef.h update common base header files 2015-07-06 09:41:38 +02:00
stdint.h libpayload: Add more integer limits 2013-06-27 14:48:08 +02:00
stdio.h libpayload: Add the format attribute to functions in stdio.h. 2012-11-07 18:36:14 +01:00
stdlib.h libpayload: Make Kconfig bools use IS_ENABLED() 2015-06-30 18:55:15 +02:00
string.h libpayload: UTF-16LE to ASCII conversion 2015-03-20 09:59:48 +01:00
swab.h libpayload: arch/mips: Add basic MIPS architecture support 2015-03-21 11:07:50 +01:00
sysinfo.h sysinfo: remove unused tag for struct spi_flash 2015-07-06 09:41:54 +02:00
term.h
unistd.h libpayload: Don't sneak in compiler includes 2013-04-18 02:50:28 +02:00
video_console.h