From 9ca8dbcc65cfc63d6f5ef3312a33184e1d726e00 Mon Sep 17 00:00:00 2001 From: Yunhong Jiang Date: Tue, 4 Aug 2015 12:17:53 -0700 Subject: Add the rt linux 4.1.3-rt3 as base Import the rt linux 4.1.3-rt3 as OPNFV kvm base. It's from git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git linux-4.1.y-rt and the base is: commit 0917f823c59692d751951bf5ea699a2d1e2f26a2 Author: Sebastian Andrzej Siewior Date: Sat Jul 25 12:13:34 2015 +0200 Prepare v4.1.3-rt3 Signed-off-by: Sebastian Andrzej Siewior We lose all the git history this way and it's not good. We should apply another opnfv project repo in future. Change-Id: I87543d81c9df70d99c5001fbdf646b202c19f423 Signed-off-by: Yunhong Jiang --- kernel/include/linux/decompress/bunzip2.h | 10 ++++ kernel/include/linux/decompress/generic.h | 39 +++++++++++++ kernel/include/linux/decompress/inflate.h | 10 ++++ kernel/include/linux/decompress/mm.h | 93 +++++++++++++++++++++++++++++++ kernel/include/linux/decompress/unlz4.h | 10 ++++ kernel/include/linux/decompress/unlzma.h | 12 ++++ kernel/include/linux/decompress/unlzo.h | 10 ++++ kernel/include/linux/decompress/unxz.h | 19 +++++++ 8 files changed, 203 insertions(+) create mode 100644 kernel/include/linux/decompress/bunzip2.h create mode 100644 kernel/include/linux/decompress/generic.h create mode 100644 kernel/include/linux/decompress/inflate.h create mode 100644 kernel/include/linux/decompress/mm.h create mode 100644 kernel/include/linux/decompress/unlz4.h create mode 100644 kernel/include/linux/decompress/unlzma.h create mode 100644 kernel/include/linux/decompress/unlzo.h create mode 100644 kernel/include/linux/decompress/unxz.h (limited to 'kernel/include/linux/decompress') diff --git a/kernel/include/linux/decompress/bunzip2.h b/kernel/include/linux/decompress/bunzip2.h new file mode 100644 index 000000000..4d683df89 --- /dev/null +++ b/kernel/include/linux/decompress/bunzip2.h @@ -0,0 +1,10 @@ +#ifndef DECOMPRESS_BUNZIP2_H +#define DECOMPRESS_BUNZIP2_H + +int bunzip2(unsigned char *inbuf, long len, + long (*fill)(void*, unsigned long), + long (*flush)(void*, unsigned long), + unsigned char *output, + long *pos, + void(*error)(char *x)); +#endif diff --git a/kernel/include/linux/decompress/generic.h b/kernel/include/linux/decompress/generic.h new file mode 100644 index 000000000..1fcfd64b5 --- /dev/null +++ b/kernel/include/linux/decompress/generic.h @@ -0,0 +1,39 @@ +#ifndef DECOMPRESS_GENERIC_H +#define DECOMPRESS_GENERIC_H + +typedef int (*decompress_fn) (unsigned char *inbuf, long len, + long (*fill)(void*, unsigned long), + long (*flush)(void*, unsigned long), + unsigned char *outbuf, + long *posp, + void(*error)(char *x)); + +/* inbuf - input buffer + *len - len of pre-read data in inbuf + *fill - function to fill inbuf when empty + *flush - function to write out outbuf + *outbuf - output buffer + *posp - if non-null, input position (number of bytes read) will be + * returned here + * + *If len != 0, inbuf should contain all the necessary input data, and fill + *should be NULL + *If len = 0, inbuf can be NULL, in which case the decompressor will allocate + *the input buffer. If inbuf != NULL it must be at least XXX_IOBUF_SIZE bytes. + *fill will be called (repeatedly...) to read data, at most XXX_IOBUF_SIZE + *bytes should be read per call. Replace XXX with the appropriate decompressor + *name, i.e. LZMA_IOBUF_SIZE. + * + *If flush = NULL, outbuf must be large enough to buffer all the expected + *output. If flush != NULL, the output buffer will be allocated by the + *decompressor (outbuf = NULL), and the flush function will be called to + *flush the output buffer at the appropriate time (decompressor and stream + *dependent). + */ + + +/* Utility routine to detect the decompression method */ +decompress_fn decompress_method(const unsigned char *inbuf, long len, + const char **name); + +#endif diff --git a/kernel/include/linux/decompress/inflate.h b/kernel/include/linux/decompress/inflate.h new file mode 100644 index 000000000..e4f411fdb --- /dev/null +++ b/kernel/include/linux/decompress/inflate.h @@ -0,0 +1,10 @@ +#ifndef LINUX_DECOMPRESS_INFLATE_H +#define LINUX_DECOMPRESS_INFLATE_H + +int gunzip(unsigned char *inbuf, long len, + long (*fill)(void*, unsigned long), + long (*flush)(void*, unsigned long), + unsigned char *output, + long *pos, + void(*error_fn)(char *x)); +#endif diff --git a/kernel/include/linux/decompress/mm.h b/kernel/include/linux/decompress/mm.h new file mode 100644 index 000000000..7925bf0ee --- /dev/null +++ b/kernel/include/linux/decompress/mm.h @@ -0,0 +1,93 @@ +/* + * linux/compr_mm.h + * + * Memory management for pre-boot and ramdisk uncompressors + * + * Authors: Alain Knaff + * + */ + +#ifndef DECOMPR_MM_H +#define DECOMPR_MM_H + +#ifdef STATIC + +/* Code active when included from pre-boot environment: */ + +/* + * Some architectures want to ensure there is no local data in their + * pre-boot environment, so that data can arbitrarily relocated (via + * GOT references). This is achieved by defining STATIC_RW_DATA to + * be null. + */ +#ifndef STATIC_RW_DATA +#define STATIC_RW_DATA static +#endif + +/* A trivial malloc implementation, adapted from + * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994 + */ +STATIC_RW_DATA unsigned long malloc_ptr; +STATIC_RW_DATA int malloc_count; + +static void *malloc(int size) +{ + void *p; + + if (size < 0) + return NULL; + if (!malloc_ptr) + malloc_ptr = free_mem_ptr; + + malloc_ptr = (malloc_ptr + 3) & ~3; /* Align */ + + p = (void *)malloc_ptr; + malloc_ptr += size; + + if (free_mem_end_ptr && malloc_ptr >= free_mem_end_ptr) + return NULL; + + malloc_count++; + return p; +} + +static void free(void *where) +{ + malloc_count--; + if (!malloc_count) + malloc_ptr = free_mem_ptr; +} + +#define large_malloc(a) malloc(a) +#define large_free(a) free(a) + +#define INIT + +#else /* STATIC */ + +/* Code active when compiled standalone for use when loading ramdisk: */ + +#include +#include +#include +#include +#include + +/* Use defines rather than static inline in order to avoid spurious + * warnings when not needed (indeed large_malloc / large_free are not + * needed by inflate */ + +#define malloc(a) kmalloc(a, GFP_KERNEL) +#define free(a) kfree(a) + +#define large_malloc(a) vmalloc(a) +#define large_free(a) vfree(a) + +#define INIT __init +#define STATIC + +#include + +#endif /* STATIC */ + +#endif /* DECOMPR_MM_H */ diff --git a/kernel/include/linux/decompress/unlz4.h b/kernel/include/linux/decompress/unlz4.h new file mode 100644 index 000000000..3273c2f36 --- /dev/null +++ b/kernel/include/linux/decompress/unlz4.h @@ -0,0 +1,10 @@ +#ifndef DECOMPRESS_UNLZ4_H +#define DECOMPRESS_UNLZ4_H + +int unlz4(unsigned char *inbuf, long len, + long (*fill)(void*, unsigned long), + long (*flush)(void*, unsigned long), + unsigned char *output, + long *pos, + void(*error)(char *x)); +#endif diff --git a/kernel/include/linux/decompress/unlzma.h b/kernel/include/linux/decompress/unlzma.h new file mode 100644 index 000000000..8a891a193 --- /dev/null +++ b/kernel/include/linux/decompress/unlzma.h @@ -0,0 +1,12 @@ +#ifndef DECOMPRESS_UNLZMA_H +#define DECOMPRESS_UNLZMA_H + +int unlzma(unsigned char *, long, + long (*fill)(void*, unsigned long), + long (*flush)(void*, unsigned long), + unsigned char *output, + long *posp, + void(*error)(char *x) + ); + +#endif diff --git a/kernel/include/linux/decompress/unlzo.h b/kernel/include/linux/decompress/unlzo.h new file mode 100644 index 000000000..af18f95d6 --- /dev/null +++ b/kernel/include/linux/decompress/unlzo.h @@ -0,0 +1,10 @@ +#ifndef DECOMPRESS_UNLZO_H +#define DECOMPRESS_UNLZO_H + +int unlzo(unsigned char *inbuf, long len, + long (*fill)(void*, unsigned long), + long (*flush)(void*, unsigned long), + unsigned char *output, + long *pos, + void(*error)(char *x)); +#endif diff --git a/kernel/include/linux/decompress/unxz.h b/kernel/include/linux/decompress/unxz.h new file mode 100644 index 000000000..f764e2a72 --- /dev/null +++ b/kernel/include/linux/decompress/unxz.h @@ -0,0 +1,19 @@ +/* + * Wrapper for decompressing XZ-compressed kernel, initramfs, and initrd + * + * Author: Lasse Collin + * + * This file has been put into the public domain. + * You can do whatever you want with this file. + */ + +#ifndef DECOMPRESS_UNXZ_H +#define DECOMPRESS_UNXZ_H + +int unxz(unsigned char *in, long in_size, + long (*fill)(void *dest, unsigned long size), + long (*flush)(void *src, unsigned long size), + unsigned char *out, long *in_used, + void (*error)(char *x)); + +#endif -- cgit 1.2.3-korg