* [PATCH] Revert "init/Kconfig: add option to disable kernel compression"
@ 2013-11-15 5:43 H. Peter Anvin
2013-11-15 16:51 ` [PATCH] [FIX] init/Kconfig: fix option to disable kernel compression Christian Ruppert
0 siblings, 1 reply; 9+ messages in thread
From: H. Peter Anvin @ 2013-11-15 5:43 UTC (permalink / raw)
To: Linus Torvalds
Cc: Linux Kernel Mailing List, Pavel Roskin, Ingo Molnar,
Thomas Gleixner, H. Peter Anvin, Christian Ruppert, Andrew Morton
From: "H. Peter Anvin" <hpa@zytor.com>
This reverts commit 69f0554ec261fd686ac7fa1c598cc9eb27b83a80.
This patch breaks randconfig on at least the x86-64 architecture, and
most likely on others. There is work underway to support uncompressed
kernels in a generic way, but it looks like it will amount to
rewriting the support from scratch; see the LKML thread in the Link:
for info.
Therefore, revert this change and wait for the fix.
Reported-by: Pavel Roskin <proski@gnu.org>
Cc: Christian Ruppert <christian.ruppert@abilis.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Link: http://lkml.kernel.org/r/20131113113418.167b8ffd@IRBT4585
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
---
init/Kconfig | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/init/Kconfig b/init/Kconfig
index 5496f307988e..bc8911fab28e 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -118,6 +118,7 @@ config HAVE_KERNEL_LZ4
choice
prompt "Kernel compression mode"
default KERNEL_GZIP
+ depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4
help
The linux kernel is a kind of self-extracting executable.
Several compression algorithms are available, which differ
@@ -136,13 +137,6 @@ choice
If in doubt, select 'gzip'
-config KERNEL_UNCOMPRESSED
- bool "No compression"
- help
- No compression at all. The kernel is huge but the compression and
- decompression times are zero.
- This is usually not what you want.
-
config KERNEL_GZIP
bool "Gzip"
depends on HAVE_KERNEL_GZIP
--
1.8.3.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH] [FIX] init/Kconfig: fix option to disable kernel compression
2013-11-15 5:43 [PATCH] Revert "init/Kconfig: add option to disable kernel compression" H. Peter Anvin
@ 2013-11-15 16:51 ` Christian Ruppert
2013-11-16 9:42 ` Vineet Gupta
0 siblings, 1 reply; 9+ messages in thread
From: Christian Ruppert @ 2013-11-15 16:51 UTC (permalink / raw)
To: H. Peter Anvin, Linus Torvalds
Cc: Linux Kernel Mailing List, Pavel Roskin, Ingo Molnar,
Thomas Gleixner, Christian Ruppert, Andrew Morton, Sam Ravnborg,
Noam Camus, Joe Perches
Some architectures with self-decompressing kernel images did not compile
with commit 69f0554ec261fd686ac7fa1c598cc9eb27b83a80 because they don't
provide a non-decompression mechanism for uncompressed kernels.
Rectify this problem by allowing uncompressed kernels only for architectures
which explicitly state they support them.
Signed-off-by: Christian Ruppert <christian.ruppert@abilis.com>
---
arch/arc/Kconfig | 2 ++
init/Kconfig | 5 +++++
2 files changed, 7 insertions(+)
diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
index 2ee0c9b..15f4c3d 100644
--- a/arch/arc/Kconfig
+++ b/arch/arc/Kconfig
@@ -21,6 +21,8 @@ config ARC
select HAVE_ARCH_KGDB
select HAVE_ARCH_TRACEHOOK
select HAVE_IOREMAP_PROT
+ select HAVE_KERNEL_UNCOMPRESSED
+ select HAVE_KERNEL_GZIP
select HAVE_KPROBES
select HAVE_KRETPROBES
select HAVE_MEMBLOCK
diff --git a/init/Kconfig b/init/Kconfig
index 5496f30..d4baf2e 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -97,6 +97,9 @@ config LOCALVERSION_AUTO
which is done within the script "scripts/setlocalversion".)
+config HAVE_KERNEL_UNCOMPRESSED
+ bool
+
config HAVE_KERNEL_GZIP
bool
@@ -118,6 +121,7 @@ config HAVE_KERNEL_LZ4
choice
prompt "Kernel compression mode"
default KERNEL_GZIP
+ depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4 || HAVE_KERNEL_UNCOMPRESSED
help
The linux kernel is a kind of self-extracting executable.
Several compression algorithms are available, which differ
@@ -138,6 +142,7 @@ choice
config KERNEL_UNCOMPRESSED
bool "No compression"
+ depends on HAVE_KERNEL_UNCOMPRESSED
help
No compression at all. The kernel is huge but the compression and
decompression times are zero.
--
1.8.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] [FIX] init/Kconfig: fix option to disable kernel compression
2013-11-15 16:51 ` [PATCH] [FIX] init/Kconfig: fix option to disable kernel compression Christian Ruppert
@ 2013-11-16 9:42 ` Vineet Gupta
2013-11-18 9:48 ` Christian Ruppert
0 siblings, 1 reply; 9+ messages in thread
From: Vineet Gupta @ 2013-11-16 9:42 UTC (permalink / raw)
To: Christian Ruppert, H. Peter Anvin, Linus Torvalds
Cc: Linux Kernel Mailing List, Pavel Roskin, Ingo Molnar,
Thomas Gleixner, Andrew Morton, Sam Ravnborg, Noam Camus,
Joe Perches
On 11/15/2013 10:21 PM, Christian Ruppert wrote:
> Some architectures with self-decompressing kernel images did not compile
> with commit 69f0554ec261fd686ac7fa1c598cc9eb27b83a80 because they don't
> provide a non-decompression mechanism for uncompressed kernels.
>
> Rectify this problem by allowing uncompressed kernels only for architectures
> which explicitly state they support them.
>
> Signed-off-by: Christian Ruppert <christian.ruppert@abilis.com>
Acked-by: Vineet Gupta <vgupta@synopsys.com>
> ---
> arch/arc/Kconfig | 2 ++
> init/Kconfig | 5 +++++
> 2 files changed, 7 insertions(+)
>
> diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
> index 2ee0c9b..15f4c3d 100644
> --- a/arch/arc/Kconfig
> +++ b/arch/arc/Kconfig
> @@ -21,6 +21,8 @@ config ARC
> select HAVE_ARCH_KGDB
> select HAVE_ARCH_TRACEHOOK
> select HAVE_IOREMAP_PROT
> + select HAVE_KERNEL_UNCOMPRESSED
> + select HAVE_KERNEL_GZIP
> select HAVE_KPROBES
> select HAVE_KRETPROBES
> select HAVE_MEMBLOCK
> diff --git a/init/Kconfig b/init/Kconfig
> index 5496f30..d4baf2e 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -97,6 +97,9 @@ config LOCALVERSION_AUTO
>
> which is done within the script "scripts/setlocalversion".)
>
> +config HAVE_KERNEL_UNCOMPRESSED
> + bool
> +
> config HAVE_KERNEL_GZIP
> bool
>
> @@ -118,6 +121,7 @@ config HAVE_KERNEL_LZ4
> choice
> prompt "Kernel compression mode"
> default KERNEL_GZIP
> + depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4 || HAVE_KERNEL_UNCOMPRESSED
> help
> The linux kernel is a kind of self-extracting executable.
> Several compression algorithms are available, which differ
> @@ -138,6 +142,7 @@ choice
>
> config KERNEL_UNCOMPRESSED
> bool "No compression"
> + depends on HAVE_KERNEL_UNCOMPRESSED
> help
> No compression at all. The kernel is huge but the compression and
> decompression times are zero.
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] [FIX] init/Kconfig: fix option to disable kernel compression
2013-11-16 9:42 ` Vineet Gupta
@ 2013-11-18 9:48 ` Christian Ruppert
2013-11-18 9:51 ` [PATCH 1/2] init/Kconfig: add " Christian Ruppert
2013-11-18 9:51 ` [PATCH 2/2] x86: Add support for uncompressed kernel images Christian Ruppert
0 siblings, 2 replies; 9+ messages in thread
From: Christian Ruppert @ 2013-11-18 9:48 UTC (permalink / raw)
To: Vineet Gupta
Cc: H. Peter Anvin, Linus Torvalds, Linux Kernel Mailing List,
Pavel Roskin, Ingo Molnar, Thomas Gleixner, Andrew Morton,
Sam Ravnborg, Noam Camus, Joe Perches
On Sat, Nov 16, 2013 at 03:12:56PM +0530, Vineet Gupta wrote:
> On 11/15/2013 10:21 PM, Christian Ruppert wrote:
> > Some architectures with self-decompressing kernel images did not compile
> > with commit 69f0554ec261fd686ac7fa1c598cc9eb27b83a80 because they don't
> > provide a non-decompression mechanism for uncompressed kernels.
> >
> > Rectify this problem by allowing uncompressed kernels only for architectures
> > which explicitly state they support them.
> >
> > Signed-off-by: Christian Ruppert <christian.ruppert@abilis.com>
> Acked-by: Vineet Gupta <vgupta@synopsys.com>
Looks like the revert was applied to main line (and not this fix). In
the follow-up the complete (fixed) patch set rebased on the latest main
line: First patch for Kconfig/ARC and as requested a cleaned up second
patch for x86. I could only test the second patch on one physical
machine and one VM so some more testing might be required on x86.
Greetings,
Christian
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/2] init/Kconfig: add option to disable kernel compression
2013-11-18 9:48 ` Christian Ruppert
@ 2013-11-18 9:51 ` Christian Ruppert
2013-11-18 9:51 ` [PATCH 2/2] x86: Add support for uncompressed kernel images Christian Ruppert
1 sibling, 0 replies; 9+ messages in thread
From: Christian Ruppert @ 2013-11-18 9:51 UTC (permalink / raw)
To: Vineet Gupta, H. Peter Anvin, Andrew Morton
Cc: Linus Torvalds, Linux Kernel Mailing List, Pavel Roskin,
Ingo Molnar, Thomas Gleixner, Sam Ravnborg, Noam Camus,
Joe Perches, Christian Ruppert
Some ARC users say they can boot faster with without kernel compression.
This probably depends on things like the FLASH chip they use etc.
Until now, kernel compression can only be disabled by removing "select
HAVE_<compression>" lines from the architecture Kconfig. So add the
Kconfig logic to permit disabling of kernel compression.
Signed-off-by: Christian Ruppert <christian.ruppert@abilis.com>
---
arch/arc/Kconfig | 2 ++
init/Kconfig | 13 ++++++++++++-
2 files changed, 14 insertions(+), 1 deletions(-)
diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
index 2ee0c9b..15f4c3d 100644
--- a/arch/arc/Kconfig
+++ b/arch/arc/Kconfig
@@ -21,6 +21,8 @@ config ARC
select HAVE_ARCH_KGDB
select HAVE_ARCH_TRACEHOOK
select HAVE_IOREMAP_PROT
+ select HAVE_KERNEL_UNCOMPRESSED
+ select HAVE_KERNEL_GZIP
select HAVE_KPROBES
select HAVE_KRETPROBES
select HAVE_MEMBLOCK
diff --git a/init/Kconfig b/init/Kconfig
index 3fc8a2f..a21e94b 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -97,6 +97,9 @@ config LOCALVERSION_AUTO
which is done within the script "scripts/setlocalversion".)
+config HAVE_KERNEL_UNCOMPRESSED
+ bool
+
config HAVE_KERNEL_GZIP
bool
@@ -118,7 +121,7 @@ config HAVE_KERNEL_LZ4
choice
prompt "Kernel compression mode"
default KERNEL_GZIP
- depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4
+ depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4 || HAVE_KERNEL_UNCOMPRESSED
help
The linux kernel is a kind of self-extracting executable.
Several compression algorithms are available, which differ
@@ -137,6 +140,14 @@ choice
If in doubt, select 'gzip'
+config KERNEL_UNCOMPRESSED
+ bool "No compression"
+ depends on HAVE_KERNEL_UNCOMPRESSED
+ help
+ No compression at all. The kernel is huge but the compression and
+ decompression times are zero.
+ This is usually not what you want.
+
config KERNEL_GZIP
bool "Gzip"
depends on HAVE_KERNEL_GZIP
--
1.7.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/2] x86: Add support for uncompressed kernel images
2013-11-18 9:48 ` Christian Ruppert
2013-11-18 9:51 ` [PATCH 1/2] init/Kconfig: add " Christian Ruppert
@ 2013-11-18 9:51 ` Christian Ruppert
2013-11-18 11:25 ` Borislav Petkov
1 sibling, 1 reply; 9+ messages in thread
From: Christian Ruppert @ 2013-11-18 9:51 UTC (permalink / raw)
To: Vineet Gupta, H. Peter Anvin, Andrew Morton
Cc: Linus Torvalds, Linux Kernel Mailing List, Pavel Roskin,
Ingo Molnar, Thomas Gleixner, Sam Ravnborg, Noam Camus,
Joe Perches, Christian Ruppert
Signed-off-by: Christian Ruppert <christian.ruppert@abilis.com>
---
arch/x86/Kconfig | 1 +
arch/x86/boot/compressed/Makefile | 14 ++++++------
arch/x86/boot/compressed/misc.c | 4 +++
lib/decompress_copy.c | 44 +++++++++++++++++++++++++++++++++++++
4 files changed, 56 insertions(+), 7 deletions(-)
create mode 100644 lib/decompress_copy.c
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index e903c71..009349f 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -62,6 +62,7 @@ config X86
select USER_STACKTRACE_SUPPORT
select HAVE_REGS_AND_STACK_ACCESS_API
select HAVE_DMA_API_DEBUG
+ select HAVE_KERNEL_UNCOMPRESSED
select HAVE_KERNEL_GZIP
select HAVE_KERNEL_BZIP2
select HAVE_KERNEL_LZMA
diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
index dcd90df..f65e444 100644
--- a/arch/x86/boot/compressed/Makefile
+++ b/arch/x86/boot/compressed/Makefile
@@ -67,16 +67,16 @@ $(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
$(obj)/vmlinux.bin.lz4: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lz4)
-suffix-$(CONFIG_KERNEL_GZIP) := gz
-suffix-$(CONFIG_KERNEL_BZIP2) := bz2
-suffix-$(CONFIG_KERNEL_LZMA) := lzma
-suffix-$(CONFIG_KERNEL_XZ) := xz
-suffix-$(CONFIG_KERNEL_LZO) := lzo
-suffix-$(CONFIG_KERNEL_LZ4) := lz4
+suffix-$(CONFIG_KERNEL_GZIP) := .gz
+suffix-$(CONFIG_KERNEL_BZIP2) := .bz2
+suffix-$(CONFIG_KERNEL_LZMA) := .lzma
+suffix-$(CONFIG_KERNEL_XZ) := .xz
+suffix-$(CONFIG_KERNEL_LZO) := .lzo
+suffix-$(CONFIG_KERNEL_LZ4) := .lz4
quiet_cmd_mkpiggy = MKPIGGY $@
cmd_mkpiggy = $(obj)/mkpiggy $< > $@ || ( rm -f $@ ; false )
targets += piggy.S
-$(obj)/piggy.S: $(obj)/vmlinux.bin.$(suffix-y) $(obj)/mkpiggy FORCE
+$(obj)/piggy.S: $(obj)/vmlinux.bin$(suffix-y) $(obj)/mkpiggy FORCE
$(call if_changed,mkpiggy)
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
index 434f077..c210314 100644
--- a/arch/x86/boot/compressed/misc.c
+++ b/arch/x86/boot/compressed/misc.c
@@ -149,6 +149,10 @@ static int lines, cols;
#include "../../../../lib/decompress_unlz4.c"
#endif
+#ifdef CONFIG_KERNEL_UNCOMPRESSED
+#include "../../../../lib/decompress_copy.c"
+#endif
+
static void scroll(void)
{
int i;
diff --git a/lib/decompress_copy.c b/lib/decompress_copy.c
new file mode 100644
index 0000000..109ef22
--- /dev/null
+++ b/lib/decompress_copy.c
@@ -0,0 +1,44 @@
+#include <linux/decompress/mm.h>
+
+#define NOZIP_BUFSZ (16 * 1024)
+STATIC int INIT nozip(unsigned char *buf, int len,
+ int(*fill)(void*, unsigned int),
+ int(*flush)(void*, unsigned int),
+ unsigned char *outbuf,
+ int *pos,
+ void(*error)(char *x))
+{
+ char *b;
+
+ if (buf)
+ b = buf;
+ else
+ b = malloc(NOZIP_BUFSZ);
+
+ if (!b) {
+ error("Out of memory while allocating buffer");
+ return -1;
+ }
+
+ if (flush) {
+ if (!len)
+ len = fill(b, NOZIP_BUFSZ);
+
+ len = flush(b, len);
+ } else {
+ if (!len)
+ len = fill(outbuf, NOZIP_BUFSZ);
+ else
+ memcpy(outbuf, b, len);
+ }
+
+ if (pos)
+ *pos = len;
+
+ if (!buf)
+ free(b);
+
+ return 0;
+}
+
+#define decompress nozip
--
1.7.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] x86: Add support for uncompressed kernel images
2013-11-18 9:51 ` [PATCH 2/2] x86: Add support for uncompressed kernel images Christian Ruppert
@ 2013-11-18 11:25 ` Borislav Petkov
2013-11-18 13:48 ` [PATCH 2/2 v2] " Christian Ruppert
0 siblings, 1 reply; 9+ messages in thread
From: Borislav Petkov @ 2013-11-18 11:25 UTC (permalink / raw)
To: Christian Ruppert
Cc: Vineet Gupta, H. Peter Anvin, Andrew Morton, Linus Torvalds,
Linux Kernel Mailing List, Pavel Roskin, Ingo Molnar,
Thomas Gleixner, Sam Ravnborg, Noam Camus, Joe Perches
On Mon, Nov 18, 2013 at 10:51:51AM +0100, Christian Ruppert wrote:
How about a commit message ... somewhere around here would be nice, for
example :)
> Signed-off-by: Christian Ruppert <christian.ruppert@abilis.com>
> ---
> arch/x86/Kconfig | 1 +
> arch/x86/boot/compressed/Makefile | 14 ++++++------
> arch/x86/boot/compressed/misc.c | 4 +++
> lib/decompress_copy.c | 44 +++++++++++++++++++++++++++++++++++++
> 4 files changed, 56 insertions(+), 7 deletions(-)
> create mode 100644 lib/decompress_copy.c
--
Regards/Gruss,
Boris.
Sent from a fat crate under my desk. Formatting is fine.
--
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/2 v2] x86: Add support for uncompressed kernel images
2013-11-18 11:25 ` Borislav Petkov
@ 2013-11-18 13:48 ` Christian Ruppert
2013-12-16 8:59 ` Christian Ruppert
0 siblings, 1 reply; 9+ messages in thread
From: Christian Ruppert @ 2013-11-18 13:48 UTC (permalink / raw)
To: Borislav Petkov, Vineet Gupta, H. Peter Anvin, Andrew Morton
Cc: Linus Torvalds, Linux Kernel Mailing List, Pavel Roskin,
Ingo Molnar, Thomas Gleixner, Sam Ravnborg, Noam Camus,
Joe Perches, Christian Ruppert
There seems to be some interest to enable uncompressed kernels also for x86
in addition to (embedded) ARC platforms.
Add the code to support uncompressed kernels to lib/, select the respective
Kconfig options for the x86 architecture and use this code in the x86 kernel
self-decompressor.
Signed-off-by: Christian Ruppert <christian.ruppert@abilis.com>
---
arch/x86/Kconfig | 1 +
arch/x86/boot/compressed/Makefile | 14 ++++++------
arch/x86/boot/compressed/misc.c | 4 +++
lib/decompress_copy.c | 44 +++++++++++++++++++++++++++++++++++++
4 files changed, 56 insertions(+), 7 deletions(-)
create mode 100644 lib/decompress_copy.c
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index e903c71..009349f 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -62,6 +62,7 @@ config X86
select USER_STACKTRACE_SUPPORT
select HAVE_REGS_AND_STACK_ACCESS_API
select HAVE_DMA_API_DEBUG
+ select HAVE_KERNEL_UNCOMPRESSED
select HAVE_KERNEL_GZIP
select HAVE_KERNEL_BZIP2
select HAVE_KERNEL_LZMA
diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
index dcd90df..f65e444 100644
--- a/arch/x86/boot/compressed/Makefile
+++ b/arch/x86/boot/compressed/Makefile
@@ -67,16 +67,16 @@ $(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
$(obj)/vmlinux.bin.lz4: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lz4)
-suffix-$(CONFIG_KERNEL_GZIP) := gz
-suffix-$(CONFIG_KERNEL_BZIP2) := bz2
-suffix-$(CONFIG_KERNEL_LZMA) := lzma
-suffix-$(CONFIG_KERNEL_XZ) := xz
-suffix-$(CONFIG_KERNEL_LZO) := lzo
-suffix-$(CONFIG_KERNEL_LZ4) := lz4
+suffix-$(CONFIG_KERNEL_GZIP) := .gz
+suffix-$(CONFIG_KERNEL_BZIP2) := .bz2
+suffix-$(CONFIG_KERNEL_LZMA) := .lzma
+suffix-$(CONFIG_KERNEL_XZ) := .xz
+suffix-$(CONFIG_KERNEL_LZO) := .lzo
+suffix-$(CONFIG_KERNEL_LZ4) := .lz4
quiet_cmd_mkpiggy = MKPIGGY $@
cmd_mkpiggy = $(obj)/mkpiggy $< > $@ || ( rm -f $@ ; false )
targets += piggy.S
-$(obj)/piggy.S: $(obj)/vmlinux.bin.$(suffix-y) $(obj)/mkpiggy FORCE
+$(obj)/piggy.S: $(obj)/vmlinux.bin$(suffix-y) $(obj)/mkpiggy FORCE
$(call if_changed,mkpiggy)
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
index 434f077..c210314 100644
--- a/arch/x86/boot/compressed/misc.c
+++ b/arch/x86/boot/compressed/misc.c
@@ -149,6 +149,10 @@ static int lines, cols;
#include "../../../../lib/decompress_unlz4.c"
#endif
+#ifdef CONFIG_KERNEL_UNCOMPRESSED
+#include "../../../../lib/decompress_copy.c"
+#endif
+
static void scroll(void)
{
int i;
diff --git a/lib/decompress_copy.c b/lib/decompress_copy.c
new file mode 100644
index 0000000..109ef22
--- /dev/null
+++ b/lib/decompress_copy.c
@@ -0,0 +1,44 @@
+#include <linux/decompress/mm.h>
+
+#define NOZIP_BUFSZ (16 * 1024)
+STATIC int INIT nozip(unsigned char *buf, int len,
+ int(*fill)(void*, unsigned int),
+ int(*flush)(void*, unsigned int),
+ unsigned char *outbuf,
+ int *pos,
+ void(*error)(char *x))
+{
+ char *b;
+
+ if (buf)
+ b = buf;
+ else
+ b = malloc(NOZIP_BUFSZ);
+
+ if (!b) {
+ error("Out of memory while allocating buffer");
+ return -1;
+ }
+
+ if (flush) {
+ if (!len)
+ len = fill(b, NOZIP_BUFSZ);
+
+ len = flush(b, len);
+ } else {
+ if (!len)
+ len = fill(outbuf, NOZIP_BUFSZ);
+ else
+ memcpy(outbuf, b, len);
+ }
+
+ if (pos)
+ *pos = len;
+
+ if (!buf)
+ free(b);
+
+ return 0;
+}
+
+#define decompress nozip
--
1.7.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2 v2] x86: Add support for uncompressed kernel images
2013-11-18 13:48 ` [PATCH 2/2 v2] " Christian Ruppert
@ 2013-12-16 8:59 ` Christian Ruppert
0 siblings, 0 replies; 9+ messages in thread
From: Christian Ruppert @ 2013-12-16 8:59 UTC (permalink / raw)
To: Borislav Petkov, Vineet Gupta, H. Peter Anvin, Andrew Morton
Cc: Linus Torvalds, Linux Kernel Mailing List, Pavel Roskin,
Ingo Molnar, Thomas Gleixner, Sam Ravnborg, Noam Camus,
Joe Perches
On Mon, Nov 18, 2013 at 02:48:30PM +0100, Christian Ruppert wrote:
> There seems to be some interest to enable uncompressed kernels also for x86
> in addition to (embedded) ARC platforms.
>
> Add the code to support uncompressed kernels to lib/, select the respective
> Kconfig options for the x86 architecture and use this code in the x86 kernel
> self-decompressor.
Any news on this? Was someone able to take a look at / test this patch?
I have given it some more testing and encountered no issues so far.
Greetings,
Christian
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-12-16 9:00 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-15 5:43 [PATCH] Revert "init/Kconfig: add option to disable kernel compression" H. Peter Anvin
2013-11-15 16:51 ` [PATCH] [FIX] init/Kconfig: fix option to disable kernel compression Christian Ruppert
2013-11-16 9:42 ` Vineet Gupta
2013-11-18 9:48 ` Christian Ruppert
2013-11-18 9:51 ` [PATCH 1/2] init/Kconfig: add " Christian Ruppert
2013-11-18 9:51 ` [PATCH 2/2] x86: Add support for uncompressed kernel images Christian Ruppert
2013-11-18 11:25 ` Borislav Petkov
2013-11-18 13:48 ` [PATCH 2/2 v2] " Christian Ruppert
2013-12-16 8:59 ` Christian Ruppert
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).