coreboot-kgpe-d16/util
Julius Werner 09f2921b5d cbfs: Add LZ4 in-place decompression support for pre-RAM stages
This patch ports the LZ4 decompression code that debuted in libpayload
last year to coreboot for use in CBFS stages (upgrading the base
algorithm to LZ4's dev branch to access the new in-place decompression
checks). This is especially useful for pre-RAM stages in constrained
SRAM-based systems, which previously could not be compressed due to
the size requirements of the LZMA scratchpad and bounce buffer. The
LZ4 algorithm offers a very lean decompressor function and in-place
decompression support to achieve roughly the same boot speed gains
(trading compression ratio for decompression time) with nearly no
memory overhead.

For now we only activate it for the stages that had previously not been
compressed at all on non-XIP (read: non-x86) boards. In the future we
may also consider replacing LZMA completely for certain boards, since
which algorithm wins out on boot speed depends on board-specific
parameters (architecture, processor speed, SPI transfer rate, etc.).

BRANCH=None
BUG=None
TEST=Built and booted Oak, Jerry, Nyan and Falco. Measured boot time on
Oak to be about ~20ms faster (cutting load times for affected stages
almost in half).

Change-Id: Iec256c0e6d585d1b69985461939884a54e3ab900
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/13638
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2016-02-22 21:38:37 +01:00
..
abuild abuild: allow specifying multiple targets by mainboard descriptor 2015-11-01 14:27:02 +01:00
acpi tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
amdfwtool amdfwtool: Postpone the usage of PSP combo directory 2016-02-20 04:57:42 +01:00
amdtools Remove empty lines at end of file 2015-06-08 00:55:07 +02:00
arm_boot_tools/mksunxiboot arm_boot_tools: Add 'b' to fopen flags for Windows compatibility 2014-12-19 18:55:34 +01:00
autoport util/autoport: Use common gpio.c for bd82x6x 2016-02-18 01:45:56 +01:00
bimgtool bimgtool: Fix printf warning for off_t 2016-02-12 04:47:37 +01:00
board_status board-status: deal with sanitized paths 2016-02-22 19:14:37 +01:00
broadcom secimage: Use libz's crc32 function 2015-08-09 12:34:24 +02:00
cbfstool cbfs: Add LZ4 in-place decompression support for pre-RAM stages 2016-02-22 21:38:37 +01:00
cbmem cbfs: Add LZ4 in-place decompression support for pre-RAM stages 2016-02-22 21:38:37 +01:00
crossgcc crossgcc: Change 'tar balls' to 'tarballs' 2016-02-18 01:21:21 +01:00
dtd_parser util: Look for python2 binary instead of python 2016-01-26 00:25:19 +01:00
ectool ectool: fix NetBSD compilation 2016-01-27 17:15:56 +01:00
exynos util: Look for python2 binary instead of python 2016-01-26 00:25:19 +01:00
futility build system: add Chrome OS futility to tools 2016-02-02 14:35:38 +01:00
fuzz-tests tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
genbuild_h genbuild_h.sh: allow coreboot to be a git submodule 2016-01-04 16:41:40 +01:00
genprof util/genprof: improve handling of command line arguments 2014-08-12 09:02:44 +02:00
gitconfig gitconfig/rebase.sh: adapt default branch name 2015-08-28 18:41:21 +00:00
ifdfake tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
ifdtool utils: Remove old license text from help & disclaimer file 2016-01-13 22:53:29 +01:00
inteltool utils: Remove old license text from help & disclaimer file 2016-01-13 22:53:29 +01:00
intelvbttool tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
ipqheader util: Look for python2 binary instead of python 2016-01-26 00:25:19 +01:00
k8resdump tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
kconfig kconfig: make oldconfig work "non-strict" 2016-02-15 08:03:56 +01:00
lint lint: Make sure site-local isn't committed to coreboot repo 2016-02-16 22:47:39 +01:00
marvell util/marvell: Add Marvell doimage utility and dependency in relevant Makefile 2016-02-11 14:16:08 +01:00
mma tree: drop last paragraph of GPL copyright header from new files 2016-01-13 20:35:40 +01:00
msrtool msrtool/configure: change svn to git 2015-12-14 22:52:49 +01:00
mtkheader util: Look for python2 binary instead of python 2016-01-26 00:25:19 +01:00
nvidia nvidia/cbootimage: update to 1.5 2015-04-25 12:16:58 +02:00
nvramtool cbfs: Add LZ4 in-place decompression support for pre-RAM stages 2016-02-22 21:38:37 +01:00
optionlist optionslist: Don't add a timestamp 2016-02-21 01:46:15 +01:00
release util/release: extend release script 2016-02-01 08:58:37 +01:00
rockchip util: Look for python2 binary instead of python 2016-01-26 00:25:19 +01:00
romcc romcc: Allow adding non-existent paths to include path 2015-11-19 21:20:29 +01:00
sconfig sconfig: remove warning about root_complex 2015-11-14 18:43:06 +01:00
scripts util/get_maintainer.pl: Fix top_of_kernel_tree check 2016-01-22 19:25:07 +01:00
showdevicetree tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
spkmodem_recv tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
superiotool superiotool: fix out-of-box NetBSD Makefile support 2016-01-26 04:47:25 +01:00
uio_usbdebug tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
vgabios Redo testbios utility to use all of YABEL 2016-02-18 01:47:04 +01:00
viatool utils: Remove old license text from help & disclaimer file 2016-01-13 22:53:29 +01:00
xcompile Support arm-linux-gnueabi compilers. 2016-02-21 13:04:58 +01:00