lib: add support for LZ4-compressed kernel

Add support for extracting LZ4-compressed kernel images, as well as
LZ4-compressed ramdisk images in the kernel boot process.

Signed-off-by: Kyungsik Lee <kyungsik.lee@lge.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Florian Fainelli <florian@openwrt.org>
Cc: Yann Collet <yann.collet.73@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Modified by Amperific for 3.0.xx
Signed-off-by: Locasto <amperific@gmail.com>

Signed-off-by: Grarak <williye97@gmail.com>
Signed-off-by: Willi Ye <williye97@gmail.com>

Conflicts:
	arch/arm/boot/compressed/piggy.xzkern

Conflicts:
	scripts/Makefile.lib
kbuild: fix for updated LZ4 tool with the new streaming format
LZ4 has been updated with LZ4 Streaming Format specification(v1.3).
lz4demo is replaced by lz4c. lz4c supports both the new streaming and legacy format with -l option. This patch makes use of lz4c to support
legacy format which is used for LZ4 De/compression in the linux kernel.

Link: https://code.google.com/p/lz4/source/checkout

Signed-off-by: Kyungsik Lee <kyungsik.lee@lge.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Florian Fainelli <florian@openwrt.org>
Cc: Yann Collet <yann.collet.73@gmail.com>
Cc: Chanho Min <chanho.min@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Signed-off-by: Locasto <amperific@gmail.com>
Signed-off-by: Willi Ye <williye97@gmail.com>

Conflicts:
	scripts/Makefile.lib
arm: add support for LZ4-compressed kernel
Integrates the LZ4 decompression code to the arm pre-boot code.

Signed-off-by: Kyungsik Lee <kyungsik.lee@lge.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Florian Fainelli <florian@openwrt.org>
Cc: Yann Collet <yann.collet.73@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Modified by ASKP for 3.0.xx
Signed-off-by: Locasto <amperific@gmail.com>

Signed-off-by: Grarak <williye97@gmail.com>
Signed-off-by: Willi Ye <williye97@gmail.com>

Conflicts:
	arch/arm/boot/compressed/Makefile
	arch/arm/boot/compressed/decompress.c

Conflicts:
	arch/arm/boot/compressed/.gitignore
	arch/arm/boot/compressed/Makefile
arm: Remove enforced Os flag for LZ4 decompressor
-Os is enforced here, based on the test result of decompression time below, slightly faster than -O2. But further tests with UA show that using -O2 will be the right choice especially in the case of the unaligned access enabled and the gap, few counts in the normal decompression mode is small enough to remove -Os. Decompression Time(counts) Normal UA enabled -Os 6717 3447 -O2 6720 2728 Note: ARM v7, Kernel 3.4 counter freq. = 32768 HZ UA(Unaligned Access) gcc version 4.6.2

Signed-off-by: Kyungsik Lee <kyungsik.lee@lge.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Florian Fainelli <florian@openwrt.org>
Cc: Yann Collet <yann.collet.73@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Signed-off-by: Locasto <amperific@gmail.com>
Signed-off-by: Grarak <williye97@gmail.com>
Signed-off-by: Willi Ye <williye97@gmail.com>

Conflicts:
	arch/arm/boot/compressed/Makefile

Conflicts:
	arch/arm/boot/compressed/Makefile
lib: add lz4 compressor module
This patchset is for supporting LZ4 compression and the crypto API using it. As shown below, the size of data is a little bit bigger but compressing speed is faster under the enabled unaligned memory access. We can use lz4 de/compression through crypto API as well. Also, It will be useful for another potential user of lz4 compression. lz4 Compression Benchmark: Compiler: ARM gcc 4.6.4 ARMv7, 1 GHz based board Kernel: linux 3.4 Uncompressed data Size: 101 MB Compressed Size compression Speed LZO 72.1MB 32.1MB/s, 33.0MB/s(UA) LZ4 75.1MB 30.4MB/s, 35.9MB/s(UA) LZ4HC 59.8MB 2.4MB/s, 2.5MB/s(UA) - UA: Unaligned memory Access support - Latest patch set for LZO applied This patch: Add support for LZ4 compression in the Linux Kernel. LZ4 Compression APIs for kernel are based on LZ4 implementation by Yann Collet and were changed for kernel coding style. LZ4 homepage : http://fastcompression.blogspot.com/p/lz4.html LZ4 source repository : http://code.google.com/p/lz4/ svn revision : r90 Two APIs are added: lz4_compress() support basic lz4 compression whereas lz4hc_compress() support high compression or CPU performance get lower but compression ratio get higher. Also, we require the pre-allocated working memory with the defined size and destination buffer must be allocated with the size of lz4_compressbound. Signed-off-by: Chanho Min <chanho.min@lge.com> Cc: "Darrick J. Wong" <djwong@us.ibm.com> Cc: Bob Pearson <rpearson@systemfabricworks.com> Cc: Richard Weinberger <richard@nod.at> Cc: Herbert Xu <herbert@gondor.hengli.com.au> Cc: Yann Collet <yann.collet.73@gmail.com> Cc: Kyungsik Lee <kyungsik.lee@lge.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Signed-off-by: Locasto <amperific@gmail.com>
lib-add-lz4-compressor-module-fix

make lz4_compresshcctx() static

Cc: Chanho Min <chanho.min@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Signed-off-by: Locasto <amperific@gmail.com>
crypto: add lz4 Cryptographic API

Add support for lz4 and lz4hc compression algorithm using the lib/lz4/*
codebase.

Modified by ASKP for 3.0.xx
Signed-off-by: Locasto <amperific@gmail.com>

Signed-off-by: Grarak <williye97@gmail.com>

Conflicts:
	arch/arm/boot/compressed/piggy.xzkern
crypto-add-lz4-cryptographic-api-fix

fix warnings

Signed-off-by: Locasto <amperific@gmail.com>