All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Roskin <proski@gnu.org>
To: grub-devel@gnu.org
Subject: [PATCH 2/2] Disable lzo compression, lzma is doing its job just fine
Date: Wed, 15 Jul 2009 19:40:45 -0400	[thread overview]
Message-ID: <20090715234045.31016.49690.stgit@mj.roinet.com> (raw)
In-Reply-To: <20090715234038.31016.40532.stgit@mj.roinet.com>

ChangeLog:

	* Makefile.in: Remove LIBLZO and enable_lzo.
	* conf/i386-pc.rmk: Remove lzo support.
	* configure.ac: Remove checks for lzo, don't define ENABLE_LZMA.
	* include/grub/i386/pc/kernel.h: Define ENABLE_LZMA.  Remove lzo
	support.
	* kern/i386/pc/lzo1x.S: Remove.
	* kern/i386/pc/startup.S: Remove lzo support.
	* util/i386/pc/grub-mkimage.c: Likewise.
---
 Makefile.in                   |    2 
 conf/i386-pc.rmk              |    6 -
 configure.ac                  |   26 ---
 include/grub/i386/pc/kernel.h |    7 -
 kern/i386/pc/lzo1x.S          |  315 -----------------------------------------
 kern/i386/pc/startup.S        |   19 --
 util/i386/pc/grub-mkimage.c   |   54 -------
 7 files changed, 8 insertions(+), 421 deletions(-)
 delete mode 100644 kern/i386/pc/lzo1x.S

diff --git a/Makefile.in b/Makefile.in
index 3d208e7..29e347a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -94,7 +94,6 @@ HELP2MAN := LANG=C $(HELP2MAN) --no-info --source=FSF
 endif
 AWK = @AWK@
 LIBCURSES = @LIBCURSES@
-LIBLZO = @LIBLZO@
 YACC = @YACC@
 UNIFONT_BDF = @UNIFONT_BDF@
 
@@ -103,7 +102,6 @@ enable_grub_emu = @enable_grub_emu@
 enable_grub_emu_usb = @enable_grub_emu_usb@
 enable_grub_fstest = @enable_grub_fstest@
 enable_grub_pe2elf = @enable_grub_pe2elf@
-enable_lzo = @enable_lzo@
 enable_grub_mkfont = @enable_grub_mkfont@
 freetype_cflags = @freetype_cflags@
 freetype_libs = @freetype_libs@
diff --git a/conf/i386-pc.rmk b/conf/i386-pc.rmk
index f1915b6..f5bded2 100644
--- a/conf/i386-pc.rmk
+++ b/conf/i386-pc.rmk
@@ -89,14 +89,8 @@ sbin_UTILITIES += grub-emu
 endif
 
 # For grub-mkimage.
-ifeq ($(enable_lzo), yes)
-grub_mkimage_SOURCES = util/i386/pc/grub-mkimage.c util/misc.c \
-	util/resolve.c
-grub_mkimage_LDFLAGS = $(LIBLZO)
-else
 grub_mkimage_SOURCES = util/i386/pc/grub-mkimage.c util/misc.c \
 	util/resolve.c lib/LzmaEnc.c lib/LzFind.c
-endif
 grub_mkimage_CFLAGS = -DGRUB_KERNEL_MACHINE_LINK_ADDR=$(GRUB_KERNEL_MACHINE_LINK_ADDR)
 util/i386/pc/grub-mkimage.c_DEPENDENCIES = Makefile
 
diff --git a/configure.ac b/configure.ac
index 8b12c58..66f2b59 100644
--- a/configure.ac
+++ b/configure.ac
@@ -171,32 +171,6 @@ if test x$grub_cv_apple_cc = xyes ; then
   ASFLAGS="$ASFLAGS -DAPPLE_CC=1"
 fi
 
-# Check LZO when compiling for the i386-pc.
-if test "$target_cpu"-"$platform" = i386-pc; then
-  AC_ARG_ENABLE([lzo],
-	      [AS_HELP_STRING([--enable-lzo],
-                             [use lzo to compress kernel (default is lzma)])])
-  [if [ x"$enable_lzo" = xyes ]; then
-    # There are three possibilities. LZO version 2 installed with the name
-    # liblzo2, with the name liblzo, and LZO version 1.]
-    AC_DEFINE([ENABLE_LZO], [1], [Use lzo compression])
-    AC_CHECK_LIB([lzo2], [__lzo_init_v2], [LIBLZO="-llzo2"],
-      [AC_CHECK_LIB([lzo], [__lzo_init_v2], [LIBLZO="-llzo"],
-        [AC_CHECK_LIB([lzo], [__lzo_init2], [LIBLZO="-llzo"],
-	       [AC_MSG_ERROR([LZO library version 1.02 or later is required])])])])
-    AC_SUBST([LIBLZO])
-    [LIBS="$LIBS $LIBLZO"]
-    AC_CHECK_FUNC([lzo1x_999_compress], ,
-	        [AC_MSG_ERROR([LZO1X-999 must be enabled])])
-
-    [# LZO version 2 uses lzo/lzo1x.h, while LZO version 1 uses lzo1x.h.]
-    AC_CHECK_HEADERS([lzo/lzo1x.h lzo1x.h])
-  [else]
-    AC_DEFINE([ENABLE_LZMA], [1], [Use lzma compression])
-  [fi]
-  AC_SUBST([enable_lzo])
-fi
-
 # Check for functions.
 AC_CHECK_FUNCS(posix_memalign memalign asprintf)
 
diff --git a/include/grub/i386/pc/kernel.h b/include/grub/i386/pc/kernel.h
index 5b9d8dc..e830afa 100644
--- a/include/grub/i386/pc/kernel.h
+++ b/include/grub/i386/pc/kernel.h
@@ -41,11 +41,10 @@
 #define GRUB_KERNEL_MACHINE_DATA_END		0x5c
 
 /* The size of the first region which won't be compressed.  */
-#if defined(ENABLE_LZO)
-#define GRUB_KERNEL_MACHINE_RAW_SIZE		(GRUB_KERNEL_MACHINE_DATA_END + 0x450)
-#elif defined(ENABLE_LZMA)
 #define GRUB_KERNEL_MACHINE_RAW_SIZE		(GRUB_KERNEL_MACHINE_DATA_END + 0x5F0)
-#endif
+
+/* Enable LZMA compression */
+#define ENABLE_LZMA	1
 
 #ifndef ASM_FILE
 
diff --git a/kern/i386/pc/lzo1x.S b/kern/i386/pc/lzo1x.S
deleted file mode 100644
index 49ba8cc..0000000
--- a/kern/i386/pc/lzo1x.S
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- *  GRUB  --  GRand Unified Bootloader
- *  Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
- *  Copyright (C) 2003,2007  Free Software Foundation, Inc.
- *
- *  GRUB is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  GRUB is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * This code was stolen from the files enter.sh, leave.sh, lzo1x_d.sh,
- * lzo1x_f.s and lzo_asm.h in LZO version 1.08, and was heavily modified
- * to adapt it to GRUB's requirement.
- *
- * See <http://www.oberhumer.com/opensource/lzo/>, for more information
- * about LZO.
- */
-
-#define INP	4+16(%esp)
-#define INS	8+16(%esp)
-#define OUTP	12+16(%esp)
-#define NN	3
-#define N_3	%ebp
-#define N_255	$255
-#define LODSB	movb (%esi), %al ;  incl %esi
-#define NOTL_3(r)	xorl N_3, r
-#define MOVSL(r1,r2,x)	movl (r1), x ; addl $4, r1 ; movl x, (r2) ; addl $4, r2
-#define COPYL_C(r1,r2,x,rc)	9: MOVSL(r1,r2,x) ; decl rc ; jnz 9b
-#define COPYL(r1,r2,x)	COPYL_C(r1,r2,x,%ecx)
-
-lzo1x_decompress:
-	pushl	%ebp
-	pushl	%edi
-	pushl	%esi
-	pushl	%ebx
-
-	cld
-
-	movl	INP, %esi
-	movl	OUTP, %edi
-	movl	$3, %ebp
-
-
-	xorl	%eax, %eax
-	xorl	%ebx, %ebx	/* high bits 9-32 stay 0 */
-	lodsb
-	cmpb	$17, %al
-	jbe	.L01
-	subb	$17-NN, %al
-	jmp	.LFLR
-
-
-/***********************************************************************
-// literal run
-************************************************************************/
-
-0:	addl	N_255, %eax
-1:	movb	(%esi), %bl
-	incl	%esi
-	orb	%bl, %bl
-	jz	0b
-	leal	18+NN(%eax,%ebx), %eax
-	jmp	3f
-
-
-.L00:
-	LODSB
-.L01:
-	cmpb	$16, %al
-	jae	.LMATCH
-
-	/* a literal run */
-	orb	%al, %al
-	jz	1b
-	addl	$3+NN, %eax
-3:
-.LFLR:
-	movl	%eax, %ecx
-	NOTL_3(%eax)
-	shrl	$2, %ecx
-	andl	N_3, %eax
-	COPYL(%esi,%edi,%edx)
-	subl	%eax, %esi
-	subl	%eax, %edi
-
-	LODSB
-	cmpb	$16, %al
-	jae	.LMATCH
-
-
-/***********************************************************************
-// R1
-************************************************************************/
-
-	shrl	$2, %eax
-	movb	(%esi), %bl
-	leal	-0x801(%edi), %edx
-	leal	(%eax,%ebx,4), %eax
-	incl	%esi
-	subl	%eax, %edx
-	movl	(%edx), %ecx
-	movl	%ecx, (%edi)
-	addl	N_3, %edi
-	jmp	.LMDONE
-
-
-/***********************************************************************
-// M2
-************************************************************************/
-
-.LMATCH:
-	cmpb	$64, %al
-	jb	.LM3MATCH
-
-	/* a M2 match */
-	movl	%eax, %ecx
-	shrl	$2, %eax
-	leal	-1(%edi), %edx
-	andl	$7, %eax
-	movb	(%esi), %bl
-	shrl	$5, %ecx
-	leal	(%eax,%ebx,8), %eax
-	incl	%esi
-	subl	%eax, %edx
-
-	addl	$1+3, %ecx
-
-	cmpl	N_3, %eax
-	jae	.LCOPYLONG
-	jmp	.LCOPYBYTE
-
-
-/***********************************************************************
-// M3
-************************************************************************/
-
-0:	addl	N_255, %eax
-1:	movb	(%esi), %bl
-	incl	%esi
-	orb	%bl, %bl
-	jz	0b
-	leal	33+NN(%eax,%ebx), %ecx
-	xorl	%eax, %eax
-	jmp	3f
-
-
-.LM3MATCH:
-	cmpb	$32, %al
-	jb	.LM4MATCH
-
-	/* a M3 match */
-	andl	$31, %eax
-	jz	1b
-	lea	2+NN(%eax), %ecx
-3:
-	movw	(%esi), %ax
-	leal	-1(%edi), %edx
-	shrl	$2, %eax
-	addl	$2, %esi
-	subl	%eax, %edx
-
-	cmpl	N_3, %eax
-	jb	.LCOPYBYTE
-
-
-/***********************************************************************
-// copy match
-************************************************************************/
-
-.LCOPYLONG:			 /* copy match using longwords */
-	leal	-3(%edi,%ecx), %eax
-	shrl	$2, %ecx
-	COPYL(%edx,%edi,%ebx)
-	movl	%eax, %edi
-	xorl	%ebx, %ebx
-
-.LMDONE:
-	movb	-2(%esi), %al
-	andl	N_3, %eax
-	jz	.L00
-.LFLR3:
-	movl	(%esi), %edx
-	addl	%eax, %esi
-	movl	%edx, (%edi)
-	addl	%eax, %edi
-
-	LODSB
-	jmp	.LMATCH
-
-
-.LCOPYBYTE:			 /* copy match using bytes */
-	xchgl	%edx,%esi
-	subl	N_3,%ecx
-
-	rep
-	movsb
-	movl	%edx, %esi
-	jmp	.LMDONE
-
-
-/***********************************************************************
-// M4
-************************************************************************/
-
-0:	addl	N_255, %ecx
-1:	movb	(%esi), %bl
-	incl	%esi
-	orb	%bl, %bl
-	jz	0b
-	leal	9+NN(%ebx,%ecx), %ecx
-	jmp	3f
-
-
-.LM4MATCH:
-	cmpb	$16, %al
-	jb	.LM1MATCH
-
-	/* a M4 match */
-	movl	%eax, %ecx
-	andl	$8, %eax
-	shll	$13, %eax	/* save in bit 16 */
-	andl	$7, %ecx
-	jz	1b
-	addl	$2+NN, %ecx
-3:
-	movw	(%esi), %ax
-	addl	$2, %esi
-	leal	-0x4000(%edi), %edx
-	shrl	$2, %eax
-	jz	.LEOF
-	subl	%eax, %edx
-	jmp	.LCOPYLONG
-
-
-/***********************************************************************
-// M1
-************************************************************************/
-
-.LM1MATCH:
-	/* a M1 match */
-	shrl	$2, %eax
-	movb	(%esi), %bl
-	leal	-1(%edi), %edx
-	leal	(%eax,%ebx,4), %eax
-	incl	%esi
-	subl	%eax, %edx
-
-	movb	(%edx), %al	/* we must use this because edx can be edi-1 */
-	movb	%al, (%edi)
-	movb	1(%edx), %bl
-	movb	%bl, 1(%edi)
-	addl	$2, %edi
-	jmp	.LMDONE
-
-
-/***********************************************************************
-//
-************************************************************************/
-
-.LEOF:
-/****	xorl	%eax,%eax	   eax=0 from above */
-
-	cmpl	$3+NN, %ecx	/* ecx must be 3/6 */
-	setnz	%al
-
-	/* check compressed size */
-	movl	INP, %edx
-	addl	INS, %edx
-	cmpl	%edx, %esi	 /* check compressed size */
-	ja	.L_input_overrun
-	jb	.L_input_not_consumed
-
-.L_leave:
-	negl	%eax
-	jnz	1f
-
-	subl	OUTP, %edi	 /* write back the uncompressed size */
-	movl	%edi, %eax
-
-1:	popl	%ebx
-	popl	%esi
-	popl	%edi
-	popl	%ebp
-	ret
-
-.L_input_not_consumed:
-        movl    $8, %eax         /* LZO_E_INPUT_NOT_CONSUMED */
-        jmp     .L_leave
-
-.L_input_overrun:
-        movl    $4, %eax         /* LZO_E_INPUT_OVERRUN */
-        jmp     .L_leave
-
-#undef INP
-#undef INS
-#undef OUTP
-#undef NN
-#undef NN
-#undef N_3
-#undef N_255
-#undef LODSB
-#undef NOTL_3
-#undef MOVSL
-#undef COPYL_C
-#undef COPYL
diff --git a/kern/i386/pc/startup.S b/kern/i386/pc/startup.S
index 171fbea..be258fb 100644
--- a/kern/i386/pc/startup.S
+++ b/kern/i386/pc/startup.S
@@ -210,20 +210,7 @@ codestart:
 	incl	%eax
 	call	EXT_C(grub_gate_a20)
 
-#if defined(ENABLE_LZO)
-	/* decompress the compressed part and put the result at 1MB */
-	movl	$GRUB_MEMORY_MACHINE_DECOMPRESSION_ADDR, %esi
-	movl	$(_start + GRUB_KERNEL_MACHINE_RAW_SIZE), %edi
-
-	pushl	%esi
-	pushl	EXT_C(grub_compressed_size)
-	pushl	%edi
-	call	lzo1x_decompress
-	addl	$12, %esp
-
-	movl	%eax, %ecx
-	cld
-#elif defined(ENABLE_LZMA)
+#ifdef ENABLE_LZMA
 	movl	$GRUB_MEMORY_MACHINE_DECOMPRESSION_ADDR, %edi
 	movl	$(_start + GRUB_KERNEL_MACHINE_RAW_SIZE), %esi
 	pushl	%edi
@@ -451,9 +438,7 @@ gate_a20_check_state:
 	popl	%ebx
 	ret
 
-#if defined(ENABLE_LZO)
-#include "lzo1x.S"
-#elif defined(ENABLE_LZMA)
+#ifdef ENABLE_LZMA
 #include "lzma_decode.S"
 #endif
 
diff --git a/util/i386/pc/grub-mkimage.c b/util/i386/pc/grub-mkimage.c
index ee1af82..b81392c 100644
--- a/util/i386/pc/grub-mkimage.c
+++ b/util/i386/pc/grub-mkimage.c
@@ -36,57 +36,9 @@
 #define _GNU_SOURCE	1
 #include <getopt.h>
 
-#if defined(ENABLE_LZO)
-
-#if defined(HAVE_LZO_LZO1X_H)
-# include <lzo/lzo1x.h>
-#elif defined(HAVE_LZO1X_H)
-# include <lzo1x.h>
-#endif
-
-#elif defined(ENABLE_LZMA)
-
+#ifdef ENABLE_LZMA
 #include <grub/lib/LzmaEnc.h>
 
-#endif
-
-#if defined(ENABLE_LZO)
-
-static void
-compress_kernel (char *kernel_img, size_t kernel_size,
-		 char **core_img, size_t *core_size)
-{
-  lzo_uint size;
-  char *wrkmem;
-
-  if (kernel_size < GRUB_KERNEL_MACHINE_RAW_SIZE)
-    grub_util_error ("the core image is too small");
-
-  if (lzo_init () != LZO_E_OK)
-    grub_util_error ("cannot initialize LZO");
-
-  *core_img = xmalloc (kernel_size + kernel_size / 64 + 16 + 3);
-  wrkmem = xmalloc (LZO1X_999_MEM_COMPRESS);
-
-  memcpy (*core_img, kernel_img, GRUB_KERNEL_MACHINE_RAW_SIZE);
-
-  grub_util_info ("compressing the core image");
-  if (lzo1x_999_compress ((const lzo_byte *) (kernel_img
-					      + GRUB_KERNEL_MACHINE_RAW_SIZE),
-			  kernel_size - GRUB_KERNEL_MACHINE_RAW_SIZE,
-			  (lzo_byte *) (*core_img
-					+ GRUB_KERNEL_MACHINE_RAW_SIZE),
-			  &size, wrkmem)
-      != LZO_E_OK)
-    grub_util_error ("cannot compress the kernel image");
-
-  free (wrkmem);
-
-  *core_size = (size_t) size + GRUB_KERNEL_MACHINE_RAW_SIZE;
-}
-
-#elif defined(ENABLE_LZMA)
-
 static void *SzAlloc(void *p, size_t size) { p = p; return xmalloc(size); }
 static void SzFree(void *p, void *address) { p = p; free(address); }
 static ISzAlloc g_Alloc = { SzAlloc, SzFree };
@@ -124,7 +76,7 @@ compress_kernel (char *kernel_img, size_t kernel_size,
   *core_size += GRUB_KERNEL_MACHINE_RAW_SIZE;
 }
 
-#else
+#else	/* No lzma compression */
 
 static void
 compress_kernel (char *kernel_img, size_t kernel_size,
@@ -135,7 +87,7 @@ compress_kernel (char *kernel_img, size_t kernel_size,
   *core_size = kernel_size;
 }
 
-#endif
+#endif	/* No lzma compression */
 
 static void
 generate_image (const char *dir, char *prefix, FILE *out, char *mods[],



  reply	other threads:[~2009-07-15 23:40 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-15 23:40 [PATCH 1/2] Introduce grub_malloc0() Pavel Roskin
2009-07-15 23:40 ` Pavel Roskin [this message]
2009-07-16 16:24   ` [PATCH 2/2] Disable lzo compression, lzma is doing its job just fine Vladimir 'phcoder' Serbinenko
2009-07-18 18:18     ` Robert Millan
2009-07-19 17:45       ` Pavel Roskin
2009-07-19 18:24         ` Vladimir 'phcoder' Serbinenko
2009-07-19 20:33           ` Pavel Roskin
2009-07-16 15:22 ` [PATCH 1/2] Introduce grub_malloc0() Vladimir 'phcoder' Serbinenko
2009-07-16 15:41   ` Pavel Roskin
2009-07-16 15:53     ` Vladimir 'phcoder' Serbinenko
2009-07-17 15:02       ` Pavel Roskin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090715234045.31016.49690.stgit@mj.roinet.com \
    --to=proski@gnu.org \
    --cc=grub-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.