Skip to contentSkip to conversation

ARM: support XZ compressed kernels

PATCH Superseded Imre Kaloz 5 participants 12 messages Nov 7, 2011 – Jan 27, 2012 Arm (32-bit)

lore
Share & tools
lore

Imre Kaloz

author
#0 lore raw

PATCH v3 1/1 ARM: support XZ compressed kernels

Wire up support for the XZ decompressor

---
New in v3: refreshed against current git

New in v2: added missing .gitignore modification

 arch/arm/Kconfig                        |    1 +
 arch/arm/boot/compressed/.gitignore     |    2 ++
 arch/arm/boot/compressed/Makefile       |   15 ++++++++++++---
 arch/arm/boot/compressed/decompress.c   |    4 ++++
 arch/arm/boot/compressed/piggy.xzkern.S |    6 ++++++
 5 files changed, 25 insertions(+), 3 deletions(-)
 create mode 100644 arch/arm/boot/compressed/piggy.xzkern.S
arch/arm/Kconfig +1 -0
index 2bda424..866e652 100644
@@ -20,6 +20,7 @@ config ARM
 	select HAVE_KERNEL_GZIP
 	select HAVE_KERNEL_LZO
 	select HAVE_KERNEL_LZMA
+	select HAVE_KERNEL_XZ
 	select HAVE_IRQ_WORK
 	select HAVE_PERF_EVENTS
 	select PERF_USE_VMALLOC
arch/arm/boot/compressed/.gitignore +2 -0
index e0936a1..d0d441c 100644
@@ -1,8 +1,10 @@
+ashldi3.S
 font.c
 lib1funcs.S
 piggy.gzip
 piggy.lzo
 piggy.lzma
+piggy.xzkern
 vmlinux
 vmlinux.lds
 
arch/arm/boot/compressed/Makefile +12 -3
index 21f56ff..0b9a6d1 100644
@@ -92,6 +92,7 @@ SEDFLAGS	= s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/
 suffix_$(CONFIG_KERNEL_GZIP) = gzip
 suffix_$(CONFIG_KERNEL_LZO)  = lzo
 suffix_$(CONFIG_KERNEL_LZMA) = lzma
+suffix_$(CONFIG_KERNEL_XZ)   = xzkern
 
 # Borrowed libfdt files for the ATAG compatibility mode
 
@@ -112,10 +113,12 @@ endif
 
 targets       := vmlinux vmlinux.lds \
 		 piggy.$(suffix_y) piggy.$(suffix_y).o \
-		 lib1funcs.o lib1funcs.S font.o font.c head.o misc.o $(OBJS)
+		 lib1funcs.o lib1funcs.S ashldi3.o ashldi3.S \
+		 font.o font.c head.o misc.o $(OBJS)
 
 # Make sure files are removed during clean
-extra-y       += piggy.gzip piggy.lzo piggy.lzma lib1funcs.S $(libfdt) $(libfdt_hdrs)
+extra-y       += piggy.gzip piggy.lzo piggy.lzma piggy.xzkern \
+		 lib1funcs.S ashldi3.S $(libfdt) $(libfdt_hdrs)
 
 ifeq ($(CONFIG_FUNCTION_TRACER),y)
 ORIG_CFLAGS := $(KBUILD_CFLAGS)
@@ -150,6 +153,12 @@ lib1funcs = $(obj)/lib1funcs.o
 $(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S
 	$(call cmd,shipped)
 
+# For __aeabi_llsl
+ashldi3 = $(obj)/ashldi3.o
+
+$(obj)/ashldi3.S: $(srctree)/arch/$(SRCARCH)/lib/ashldi3.S
+	$(call cmd,shipped)
+
 # We need to prevent any GOTOFF relocs being used with references
 # to symbols in the .bss section since we cannot relocate them
 # independently from the rest at run time.  This can be achieved by
@@ -171,7 +180,7 @@ if [ $(words $(ZRELADDR)) -gt 1 -a "$(CONFIG_AUTO_ZRELADDR)" = "" ]; then \
 fi
 
 $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \
-	 	$(addprefix $(obj)/, $(OBJS)) $(lib1funcs) FORCE
+	 	$(addprefix $(obj)/, $(OBJS)) $(lib1funcs) $(ashldi3) FORCE
 	@$(check_for_multiple_zreladdr)
 	$(call if_changed,ld)
 	@$(check_for_bad_syms)
arch/arm/boot/compressed/decompress.c +4 -0
index 07be5a2..0ecd8b4 100644
@@ -44,6 +44,10 @@ extern void error(char *);
 #include "../../../../lib/decompress_unlzma.c"
 #endif
 
+#ifdef CONFIG_KERNEL_XZ
+#include "../../../../lib/decompress_unxz.c"
+#endif
+
 int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x))
 {
 	return decompress(input, len, NULL, NULL, output, NULL, error);
arch/arm/boot/compressed/piggy.xzkern.S new file +6 -0
new file mode 100644
index 0000000..5703f30
@@ -0,0 +1,6 @@
+	.section .piggydata,#alloc
+	.globl	input_data
+input_data:
+	.incbin	"arch/arm/boot/compressed/piggy.xzkern"
+	.globl	input_data_end
+input_data_end:
Signature · 1 line
1.7.1
author
#4 lore raw

PATCH v3 1/1 ARM: support XZ compressed kernels

Quoted 11 lines · Linus Walleij
Quoted 3 lines · Imre Kaloz

Wire up support for the XZ decompressor

Looks useful.

Put it in Russell's patch tracker.
Linus Walleij

A previous version was there, but Russell applied it then dropped it, hence I didn't want to add it again.

Russell, would you like me to add it there?

Imre

#5 lore raw

PATCH v3 1/1 ARM: support XZ compressed kernels

Hi,

Quoted 15 lines · Imre Kaloz
Quoted 11 lines · Linus Walleij
Quoted 3 lines · Imre Kaloz

Wire up support for the XZ decompressor

Looks useful.

Put it in Russell's patch tracker.
Linus Walleij

Quoted 7 lines

A previous version was there, but Russell applied it then dropped it, hence I didn't want to add it again.

Russell, would you like me to add it there?

Imre

It has been quite silent related to this patch. What is current status?

I have been using XZ in our development kernels nine months now without any problems on AT91 platform.

--
Veli-Pekka Peltola

author
#6 lore raw

PATCH v3 1/1 ARM: support XZ compressed kernels

Hi,

Quoted 26 lines · Veli-Pekka Peltola
Quoted 15 lines · Imre Kaloz
Quoted 11 lines · Linus Walleij
Quoted 3 lines · Imre Kaloz

Wire up support for the XZ decompressor

Looks useful.

Put it in Russell's patch tracker.
Linus Walleij

Quoted 7 lines

A previous version was there, but Russell applied it then dropped it, hence I didn't want to add it again.

Russell, would you like me to add it there?

Imre

It has been quite silent related to this patch. What is current status?

Quoted 7 lines

I have been using XZ in our development kernels nine months now without any problems on AT91 platform.

--
Veli-Pekka Peltola

Recent changes introduced an error, but Nico helped me clean that up. Will submit the final patch to the patch system this weekend.

Thanks for testing :)

Imre

#7 lore raw

PATCH v3 1/1 ARM: support XZ compressed kernels

Hi Imre,

Quoted 2 lines · Imre Kaloz

Recent changes introduced an error, but Nico helped me clean that up. Will submit the final patch to the patch system this weekend.

Just a reminder: I was unable to find this from the patch tracking system. Any updates? Can I help somehow?

--
Veli-Pekka Peltola

author
#8 lore raw

PATCH v3 1/1 ARM: support XZ compressed kernels

On Wed, 25 Jan 2012 18:00:46 +0100, Veli-Pekka Peltola <[email protected]> wrote:

Hi,

Quoted 6 lines · Imre Kaloz
Quoted 2 lines

Recent changes introduced an error, but Nico helped me clean that up. Will submit the final patch to the patch system this weekend.

Just a reminder: I was unable to find this from the patch tracking system. Any updates? Can I help somehow?

It has been added as patch 7001/2 [1]. Let's hope Russell could send it upstream soon, given it's not intrusive and floats around for months now :)

Imre

[1] http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7001/2

#9 lore raw

PATCH v3 1/1 ARM: support XZ compressed kernels

In reply to Veli-Pekka Peltola
Quoted 8 lines · Veli-Pekka Peltola

Hi Imre,

Quoted 2 lines · Imre Kaloz

Recent changes introduced an error, but Nico helped me clean that up. Will submit the final patch to the patch system this weekend.

Just a reminder: I was unable to find this from the patch tracking system. Any updates? Can I help somehow?

Well, this is where things got to last time around:

http://lists.arm.linux.org.uk/lurker/message/20110722.200731.32f090d9.en.html

and then everything stopped. No further feedback, nothing. So I've been totally ignoring XZ stuff because I've been believing that the issue hasn't been fixed.

It seems that it has now been fixed, back in July. Nice to have been told about that development, etc.

So yes, as the problem has been resolved, we can now move forward on it. I'm not sure it's -rc material though, so I'll queue it for the next merge window. We've waited six months already since the 'fix' went in, so plainly another three won't hurt one bit.

author
#10 lore raw

PATCH v3 1/1 ARM: support XZ compressed kernels

Hi Russell,

Quoted 5 lines · Russell King - ARM Linux
Quoted 2 lines

Just a reminder: I was unable to find this from the patch tracking system. Any updates? Can I help somehow?

Well, this is where things got to last time around:

Quoted 8 lines

http://lists.arm.linux.org.uk/lurker/message/20110722.200731.32f090d9.en.html

and then everything stopped. No further feedback, nothing. So I've been totally ignoring XZ stuff because I've been believing that the issue hasn't been fixed.

It seems that it has now been fixed, back in July. Nice to have been told about that development, etc.

As far as I know in the private mails that part has been cleared up with Lasse - you were CC'd all the time.

Quoted 4 lines

So yes, as the problem has been resolved, we can now move forward on it. I'm not sure it's -rc material though, so I'll queue it for the next merge window. We've waited six months already since the 'fix' went in, so plainly another three won't hurt one bit.

When I've noticed v2 didn't get upstream without that change, I did a v3, and got no response for that from you [1]. Than the string.c related changes broke that, hence this (v4) version. If possible, please try to get this into 3.3, as I think there's no chance it could break anything.

Imre

[1]
http://lists.arm.linux.org.uk/lurker/message/20111107.200336.feeeb3c5.en.html

#11 lore raw

PATCH v3 1/1 ARM: support XZ compressed kernels

Quoted 8 lines · Imre Kaloz

Hi Russell,

On Thu, 26 Jan 2012 21:26:30 +0100, Russell King - ARM Linux

Quoted 4 lines

So yes, as the problem has been resolved, we can now move forward on it. I'm not sure it's -rc material though, so I'll queue it for the next merge window. We've waited six months already since the 'fix' went in, so plainly another three won't hurt one bit.

Quoted 4 lines

When I've noticed v2 didn't get upstream without that change, I did a v3, and got no response for that from you [1]. Than the string.c related changes broke that, hence this (v4) version. If possible, please try to get this into 3.3, as I think there's no chance it could break anything.

That doesn't matter if this may or may not break anything. The merge window for v3.3 is over, and only bug fixes are acceptable now until the next merge window opens.

Nicolas