public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* update8 [PATCH 2/5] init: bzip2 or lzma -compressed kernels and initrds
@ 2009-01-04 21:46 Alain Knaff
  2009-01-04 23:08 ` H. Peter Anvin
  0 siblings, 1 reply; 50+ messages in thread
From: Alain Knaff @ 2009-01-04 21:46 UTC (permalink / raw)
  To: hpa, linux-kernel, alain

This is the second part of the bzip2/lzma patch

The bzip patch is based on an idea by Christian Ludwig, includes support for
compressing the kernel with bzip2 or lzma rather than gzip. Both
compressors give smaller sizes than gzip.  Lzma's decompresses faster
than bzip2.

It also supports ramdisks and initramfs' compressed using these two
compressors.

The functionality has been successfully used for a couple of years by
the udpcast project

This version applies to "tip" kernel 2.6.28

This part contains:
- support for new compressions (bzip2 and lzma) in initramfs and
old-style ramdisk
- config dialog for kernel compression (but new kernel compressions
not yet supported)

Signed-off-by: Alain Knaff <alain@knaff.lu>

---

diff -urNp library/drivers/block/Kconfig generic/drivers/block/Kconfig
--- library/drivers/block/Kconfig	2009-01-04 11:56:38.000000000 +0100
+++ generic/drivers/block/Kconfig	2009-01-04 21:57:13.000000000 +0100
@@ -358,6 +358,31 @@ config BLK_DEV_XIP
 	  will prevent RAM block device backing store memory from being
 	  allocated from highmem (only a problem for highmem systems).
 
+config RD_BZIP2
+	bool "Initial ramdisk compressed using bzip2"
+	default n
+	depends on BLK_DEV_INITRD=y
+	help
+	  Support loading of a bzip2 encoded initial ramdisk or cpio buffer
+	  If unsure, say N.
+
+config RD_LZMA
+	bool "Initial ramdisk compressed using lzma"
+	default n
+	depends on BLK_DEV_INITRD=y
+	help
+	  Support loading of a lzma encoded initial ramdisk or cpio buffer
+	  If unsure, say N.
+
+config RD_GZIP
+	bool "Initial ramdisk compressed using gzip"
+	default y
+	depends on BLK_DEV_INITRD=y
+	select ZLIB_INFLATE
+	help
+	  Support loading of a gzip encoded initial ramdisk or cpio buffer.
+	  If unsure, say Y.
+
 config CDROM_PKTCDVD
 	tristate "Packet writing on CD/DVD media"
 	depends on !UML
diff -urNp library/init/do_mounts_rd.c generic/init/do_mounts_rd.c
--- library/init/do_mounts_rd.c	2009-01-04 11:56:42.000000000 +0100
+++ generic/init/do_mounts_rd.c	2009-01-04 21:57:13.000000000 +0100
@@ -10,6 +10,12 @@
 
 #include "do_mounts.h"
 
+#include <linux/decompress/generic.h>
+
+#include <linux/decompress/bunzip2.h>
+#include <linux/decompress/unlzma.h>
+#include <linux/decompress/inflate.h>
+
 int __initdata rd_prompt = 1;/* 1 = prompt for RAM disk, 0 = don't prompt */
 
 static int __init prompt_ramdisk(char *str)
@@ -28,7 +34,7 @@ static int __init ramdisk_start_setup(ch
 }
 __setup("ramdisk_start=", ramdisk_start_setup);
 
-static int __init crd_load(int in_fd, int out_fd);
+static int __init crd_load(int in_fd, int out_fd, decompress_fn deco);
 
 /*
  * This routine tries to find a RAM disk image to load, and returns the
@@ -44,7 +50,7 @@ static int __init crd_load(int in_fd, in
  * 	gzip
  */
 static int __init 
-identify_ramdisk_image(int fd, int start_block)
+identify_ramdisk_image(int fd, int start_block, decompress_fn *decompressor)
 {
 	const int size = 512;
 	struct minix_super_block *minixsb;
@@ -70,6 +76,7 @@ identify_ramdisk_image(int fd, int start
 	sys_lseek(fd, start_block * BLOCK_SIZE, 0);
 	sys_read(fd, buf, size);
 
+#ifdef CONFIG_RD_GZIP
 	/*
 	 * If it matches the gzip magic numbers, return 0
 	 */
@@ -77,9 +84,39 @@ identify_ramdisk_image(int fd, int start
 		printk(KERN_NOTICE
 		       "RAMDISK: Compressed image found at block %d\n",
 		       start_block);
+		*decompressor = gunzip;
+		nblocks = 0;
+		goto done;
+	}
+#endif
+
+#ifdef CONFIG_RD_BZIP2
+	/*
+	 * If it matches the bzip2 magic numbers, return -1
+	 */
+	if (buf[0] == 0x42 && (buf[1] == 0x5a)) {
+		printk(KERN_NOTICE
+		       "RAMDISK: Bzipped image found at block %d\n",
+		       start_block);
+		*decompressor = bunzip2;
 		nblocks = 0;
 		goto done;
 	}
+#endif
+
+#ifdef CONFIG_RD_LZMA
+	/*
+	 * If it matches the lzma magic numbers, return -1
+	 */
+	if (buf[0] == 0x5d && (buf[1] == 0x00)) {
+		printk(KERN_NOTICE
+		       "RAMDISK: Lzma image found at block %d\n",
+		       start_block);
+		*decompressor = unlzma;
+		nblocks = 0;
+		goto done;
+	}
+#endif
 
 	/* romfs is at block zero too */
 	if (romfsb->word0 == ROMSB_WORD0 &&
@@ -143,6 +180,7 @@ int __init rd_load_image(char *from)
 	int nblocks, i, disk;
 	char *buf = NULL;
 	unsigned short rotate = 0;
+	decompress_fn decompressor = NULL;
 #if !defined(CONFIG_S390) && !defined(CONFIG_PPC_ISERIES)
 	char rotator[4] = { '|' , '/' , '-' , '\\' };
 #endif
@@ -155,12 +193,12 @@ int __init rd_load_image(char *from)
 	if (in_fd < 0)
 		goto noclose_input;
 
-	nblocks = identify_ramdisk_image(in_fd, rd_image_start);
+	nblocks = identify_ramdisk_image(in_fd, rd_image_start, &decompressor);
 	if (nblocks < 0)
 		goto done;
 
 	if (nblocks == 0) {
-		if (crd_load(in_fd, out_fd) == 0)
+		if (crd_load(in_fd, out_fd, decompressor) == 0)
 			goto successful_load;
 		goto done;
 	}
@@ -259,138 +297,48 @@ int __init rd_load_disk(int n)
 	return rd_load_image("/dev/root");
 }
 
-/*
- * gzip declarations
- */
-
-#define OF(args)  args
-
-#ifndef memzero
-#define memzero(s, n)     memset ((s), 0, (n))
-#endif
-
-typedef unsigned char  uch;
-typedef unsigned short ush;
-typedef unsigned long  ulg;
-
-#define INBUFSIZ 4096
-#define WSIZE 0x8000    /* window size--must be a power of two, and */
-			/*  at least 32K for zip's deflate method */
-
-static uch *inbuf;
-static uch *window;
-
-static unsigned insize;  /* valid bytes in inbuf */
-static unsigned inptr;   /* index of next byte to be processed in inbuf */
-static unsigned outcnt;  /* bytes in output buffer */
 static int exit_code;
-static int unzip_error;
-static long bytes_out;
+static int decompress_error;
 static int crd_infd, crd_outfd;
 
-#define get_byte()  (inptr < insize ? inbuf[inptr++] : fill_inbuf())
-		
-/* Diagnostic functions (stubbed out) */
-#define Assert(cond,msg)
-#define Trace(x)
-#define Tracev(x)
-#define Tracevv(x)
-#define Tracec(c,x)
-#define Tracecv(c,x)
-
-#define STATIC static
-#define INIT __init
-
-static int  __init fill_inbuf(void);
-static void __init flush_window(void);
-static void __init error(char *m);
-
-#define NO_INFLATE_MALLOC
-
-#include "../lib/inflate.c"
-
-/* ===========================================================================
- * Fill the input buffer. This is called only when the buffer is empty
- * and at least one byte is really needed.
- * Returning -1 does not guarantee that gunzip() will ever return.
- */
-static int __init fill_inbuf(void)
+static int __init compr_fill(void *buf, unsigned int len)
 {
-	if (exit_code) return -1;
-	
-	insize = sys_read(crd_infd, inbuf, INBUFSIZ);
-	if (insize == 0) {
-		error("RAMDISK: ran out of compressed data");
-		return -1;
-	}
-
-	inptr = 1;
-
-	return inbuf[0];
+	int r = sys_read(crd_infd, buf, len);
+	if (r < 0)
+		printk(KERN_ERR "RAMDISK: error while reading compressed data");
+	else if (r == 0)
+		printk(KERN_ERR "RAMDISK: EOF while reading compressed data");
+	return r;
 }
 
-/* ===========================================================================
- * Write the output window window[0..outcnt-1] and update crc and bytes_out.
- * (Used for the decompressed data only.)
- */
-static void __init flush_window(void)
+static int __init compr_flush(void *window, unsigned int outcnt)
 {
-    ulg c = crc;         /* temporary variable */
-    unsigned n, written;
-    uch *in, ch;
-    
-    written = sys_write(crd_outfd, window, outcnt);
-    if (written != outcnt && unzip_error == 0) {
-	printk(KERN_ERR "RAMDISK: incomplete write (%d != %d) %ld\n",
-	       written, outcnt, bytes_out);
-	unzip_error = 1;
-    }
-    in = window;
-    for (n = 0; n < outcnt; n++) {
-	    ch = *in++;
-	    c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
-    }
-    crc = c;
-    bytes_out += (ulg)outcnt;
-    outcnt = 0;
+	int written = sys_write(crd_outfd, window, outcnt);
+	if (written != outcnt) {
+		if (decompress_error == 0)
+			printk(KERN_ERR
+			       "RAMDISK: incomplete write (%d != %d)\n",
+			       written, outcnt);
+		decompress_error = 1;
+		return -1;
+	}
+	return outcnt;
 }
 
 static void __init error(char *x)
 {
 	printk(KERN_ERR "%s\n", x);
 	exit_code = 1;
-	unzip_error = 1;
+	decompress_error = 1;
 }
 
-static int __init crd_load(int in_fd, int out_fd)
+static int __init crd_load(int in_fd, int out_fd, decompress_fn deco)
 {
 	int result;
-
-	insize = 0;		/* valid bytes in inbuf */
-	inptr = 0;		/* index of next byte to be processed in inbuf */
-	outcnt = 0;		/* bytes in output buffer */
-	exit_code = 0;
-	bytes_out = 0;
-	crc = (ulg)0xffffffffL; /* shift register contents */
-
 	crd_infd = in_fd;
 	crd_outfd = out_fd;
-	inbuf = kmalloc(INBUFSIZ, GFP_KERNEL);
-	if (!inbuf) {
-		printk(KERN_ERR "RAMDISK: Couldn't allocate gzip buffer\n");
-		return -1;
-	}
-	window = kmalloc(WSIZE, GFP_KERNEL);
-	if (!window) {
-		printk(KERN_ERR "RAMDISK: Couldn't allocate gzip window\n");
-		kfree(inbuf);
-		return -1;
-	}
-	makecrc();
-	result = gunzip();
-	if (unzip_error)
+	result = deco(NULL, 0, compr_fill, compr_flush, NULL, NULL, error);
+	if (decompress_error)
 		result = 1;
-	kfree(inbuf);
-	kfree(window);
 	return result;
 }
diff -urNp library/init/initramfs.c generic/init/initramfs.c
--- library/init/initramfs.c	2009-01-04 11:56:42.000000000 +0100
+++ generic/init/initramfs.c	2009-01-04 21:57:13.000000000 +0100
@@ -389,11 +389,14 @@ static int __init write_buffer(char *buf
 	return len - count;
 }
 
-static void __init flush_buffer(char *buf, unsigned len)
+
+static int __init flush_buffer(void *bufv, unsigned len)
 {
+	char *buf = (char *) bufv;
 	int written;
+	int origLen = len;
 	if (message)
-		return;
+		return -1;
 	while ((written = write_buffer(buf, len)) < len && !message) {
 		char c = buf[written];
 		if (c == '0') {
@@ -407,73 +410,14 @@ static void __init flush_buffer(char *bu
 		} else
 			error("junk in compressed archive");
 	}
+	return origLen;
 }
 
-/*
- * gzip declarations
- */
-
-#define OF(args)  args
-
-#ifndef memzero
-#define memzero(s, n)     memset ((s), 0, (n))
-#endif
+static unsigned my_inptr;   /* index of next byte to be processed in inbuf */
 
-typedef unsigned char  uch;
-typedef unsigned short ush;
-typedef unsigned long  ulg;
-
-#define WSIZE 0x8000    /* window size--must be a power of two, and */
-			/*  at least 32K for zip's deflate method */
-
-static uch *inbuf;
-static uch *window;
-
-static unsigned insize;  /* valid bytes in inbuf */
-static unsigned inptr;   /* index of next byte to be processed in inbuf */
-static unsigned outcnt;  /* bytes in output buffer */
-static long bytes_out;
-
-#define get_byte()  (inptr < insize ? inbuf[inptr++] : -1)
-		
-/* Diagnostic functions (stubbed out) */
-#define Assert(cond,msg)
-#define Trace(x)
-#define Tracev(x)
-#define Tracevv(x)
-#define Tracec(c,x)
-#define Tracecv(c,x)
-
-#define STATIC static
-#define INIT __init
-
-static void __init flush_window(void);
-static void __init error(char *m);
-
-#define NO_INFLATE_MALLOC
-
-#include "../lib/inflate.c"
-
-/* ===========================================================================
- * Write the output window window[0..outcnt-1] and update crc and bytes_out.
- * (Used for the decompressed data only.)
- */
-static void __init flush_window(void)
-{
-	ulg c = crc;         /* temporary variable */
-	unsigned n;
-	uch *in, ch;
-
-	flush_buffer(window, outcnt);
-	in = window;
-	for (n = 0; n < outcnt; n++) {
-		ch = *in++;
-		c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
-	}
-	crc = c;
-	bytes_out += (ulg)outcnt;
-	outcnt = 0;
-}
+#include <linux/decompress/bunzip2.h>
+#include <linux/decompress/unlzma.h>
+#include <linux/decompress/inflate.h>
 
 static char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only)
 {
@@ -482,9 +426,10 @@ static char * __init unpack_to_rootfs(ch
 	header_buf = kmalloc(110, GFP_KERNEL);
 	symlink_buf = kmalloc(PATH_MAX + N_ALIGN(PATH_MAX) + 1, GFP_KERNEL);
 	name_buf = kmalloc(N_ALIGN(PATH_MAX), GFP_KERNEL);
-	window = kmalloc(WSIZE, GFP_KERNEL);
-	if (!window || !header_buf || !symlink_buf || !name_buf)
+
+	if (!header_buf || !symlink_buf || !name_buf)
 		panic("can't allocate buffers");
+
 	state = Start;
 	this_header = 0;
 	message = NULL;
@@ -504,22 +449,38 @@ static char * __init unpack_to_rootfs(ch
 			continue;
 		}
 		this_header = 0;
-		insize = len;
-		inbuf = buf;
-		inptr = 0;
-		outcnt = 0;		/* bytes in output buffer */
-		bytes_out = 0;
-		crc = (ulg)0xffffffffL; /* shift register contents */
-		makecrc();
-		gunzip();
+		if (!gunzip(buf, len, NULL, flush_buffer, NULL,
+			    &my_inptr, error) &&
+		    message == NULL)
+			goto ok;
+
+#ifdef CONFIG_RD_BZIP2
+		message = NULL; /* Zero out message, or else cpio will
+				   think an error has already occured */
+		if (!bunzip2(buf, len, NULL, flush_buffer, NULL,
+			     &my_inptr, error) &&
+		    message == NULL) {
+			goto ok;
+		}
+#endif
+
+#ifdef CONFIG_RD_LZMA
+		message = NULL; /* Zero out message, or else cpio will
+				   think an error has already occured */
+		if (!unlzma(buf, len, NULL, flush_buffer, NULL,
+			    &my_inptr, error) &&
+		    message == NULL) {
+			goto ok;
+		}
+#endif
+ok:
 		if (state != Reset)
-			error("junk in gzipped archive");
-		this_header = saved_offset + inptr;
-		buf += inptr;
-		len -= inptr;
+			error("junk in compressed archive");
+		this_header = saved_offset + my_inptr;
+		buf += my_inptr;
+		len -= my_inptr;
 	}
 	dir_utime();
-	kfree(window);
 	kfree(name_buf);
 	kfree(symlink_buf);
 	kfree(header_buf);
diff -urNp library/init/Kconfig generic/init/Kconfig
--- library/init/Kconfig	2009-01-04 11:56:42.000000000 +0100
+++ generic/init/Kconfig	2009-01-04 21:57:13.000000000 +0100
@@ -101,6 +101,56 @@ config LOCALVERSION_AUTO
 
 	  which is done within the script "scripts/setlocalversion".)
 
+choice
+        prompt "Kernel compression mode"
+        default KERNEL_GZIP
+        help
+	  The linux kernel is a kind of self-extracting executable.
+	  Several compression algorithms are available, which differ
+	  in efficiency, compression and decompression speed.
+	  Compression speed is only relevant when building a kernel.
+	  Decompression speed is relevant at each boot.
+
+	  If you have any problems with bzip2 or lzma compressed
+	  kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
+	  version of this functionality (bzip2 only), for 2.4, was
+	  supplied by Christian Ludwig)
+
+	  High compression options are mostly useful for users, who
+	  are low on disk space (embedded systems), but for whom ram
+	  size matters less.
+
+	  If in doubt, select 'gzip'
+
+config KERNEL_GZIP
+       bool "Gzip"
+       help
+         The old and tried gzip compression. Its compression ratio is
+	 the poorest among the 3 choices; however its speed (both
+	 compression and decompression) is the fastest.
+
+config KERNEL_BZIP2
+	bool "Bzip2"
+	help
+	  Its compression ratio and speed is intermediate.
+	  Decompression speed is slowest among the 3.
+	  The kernel size is about 10 per cent smaller with bzip2,
+	  in comparison to gzip.
+	  Bzip2 uses a large amount of memory. For modern kernels
+	  you will need at least 8MB RAM or more for booting.
+
+config KERNEL_LZMA
+       bool "LZMA"
+       help
+         The most recent compression algorithm.
+	 Its ratio is best, decompression speed is between the other
+	 2. Compression is slowest.
+	 The kernel size is about 33 per cent smaller with lzma,
+	 in comparison to gzip.
+
+endchoice
+
+
 config SWAP
 	bool "Support for paging of anonymous memory (swap)"
 	depends on MMU && BLOCK
diff -urNp library/lib/Makefile generic/lib/Makefile
--- library/lib/Makefile	2009-01-04 11:56:42.000000000 +0100
+++ generic/lib/Makefile	2009-01-04 21:57:13.000000000 +0100
@@ -11,7 +11,8 @@ lib-y := ctype.o string.o vsprintf.o cmd
 	 rbtree.o radix-tree.o dump_stack.o \
 	 idr.o int_sqrt.o extable.o prio_tree.o \
 	 sha1.o irq_regs.o reciprocal_div.o argv_split.o \
-	 proportions.o prio_heap.o ratelimit.o show_mem.o is_single_threaded.o
+	 proportions.o prio_heap.o ratelimit.o show_mem.o is_single_threaded.o \
+	 decompress_inflate.o decompress_bunzip2.o decompress_unlzma.o
 
 lib-$(CONFIG_MMU) += ioremap.o
 lib-$(CONFIG_SMP) += cpumask.o

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: update8 [PATCH 2/5] init: bzip2 or lzma -compressed kernels and initrds
  2009-01-04 21:46 update8 [PATCH 2/5] init: bzip2 or lzma -compressed kernels and initrds Alain Knaff
@ 2009-01-04 23:08 ` H. Peter Anvin
  2009-01-04 23:12   ` Alain Knaff
  0 siblings, 1 reply; 50+ messages in thread
From: H. Peter Anvin @ 2009-01-04 23:08 UTC (permalink / raw)
  To: Alain Knaff; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1000 bytes --]

Hi Alain,

Looking pretty good now.  The only issues that I see so far are:

- Putting the kernel compression selection in init/Kconfig isn't going
  to work too well, since it affects all architectures, and not all
  architectures even do their own decompression (for quite a few
  architectures it's the boot loader's responsibility.)

  I see two options here: either have this be parameterized by the arch
  Kconfig files, or simply move this chunk into arch/*/Kconfig as part
  of the arch-enablement patches.  The latter is probably the simplest,
  even if it means some replicated code.

  Let me know what you think -- I can do this pretty easily while
  importing, so you don't need to submit a full new patchset.

- I did a followon patch (attached) to change the ramdisk compression
  search to table driven.  Since I already did the followon patch, don't
  worry about it.

	-hpa

-- 
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.


[-- Attachment #2: 0003-init-use-a-table-to-search-for-initramfs-compressio.patch --]
[-- Type: text/x-patch, Size: 3804 bytes --]

>From 832edddc59b5f8d8243aca91a20fb55ed64d00fb Mon Sep 17 00:00:00 2001
From: H. Peter Anvin <hpa@zytor.com>
Date: Sun, 4 Jan 2009 14:42:52 -0800
Subject: [PATCH] init: use a table to search for initramfs compression formats

Impact: Code simplification

Instead of open-coding testing for initramfs compression formats, use
a table.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
---
 init/do_mounts_rd.c |   82 +++++++++++++++++++++-----------------------------
 1 files changed, 35 insertions(+), 47 deletions(-)

diff --git a/init/do_mounts_rd.c b/init/do_mounts_rd.c
index dcaeb1f..9c9d7db 100644
--- a/init/do_mounts_rd.c
+++ b/init/do_mounts_rd.c
@@ -43,13 +43,31 @@ static int __init crd_load(int in_fd, int out_fd, decompress_fn deco);
  * numbers could not be found.
  *
  * We currently check for the following magic numbers:
- * 	minix
- * 	ext2
+ *	minix
+ *	ext2
  *	romfs
  *	cramfs
- * 	gzip
+ *	gzip
  */
-static int __init 
+static const struct compress_format {
+	unsigned char magic[2];
+	const char *name;
+	decompress_fn decompressor;
+} compressed_formats[] = {
+#ifdef CONFIG_RD_GZIP
+	{ {037, 0213}, "gzip", gunzip },
+	{ {037, 0236}, "gzip", gunzip },
+#endif
+#ifdef CONFIG_RD_BZIP2
+	{ {0x42, 0x5a}, "bzip2", bunzip2 },
+#endif
+#ifdef CONFIG_RD_LZMA
+	{ {0x5d, 0x00}, "lzma", unlzma },
+#endif
+	{ {0, 0}, NULL, NULL }
+};
+
+static int __init
 identify_ramdisk_image(int fd, int start_block, decompress_fn *decompressor)
 {
 	const int size = 512;
@@ -59,6 +77,7 @@ identify_ramdisk_image(int fd, int start_block, decompress_fn *decompressor)
 	struct cramfs_super *cramfsb;
 	int nblocks = -1;
 	unsigned char *buf;
+	const struct compress_format *cf;
 
 	buf = kmalloc(size, GFP_KERNEL);
 	if (!buf)
@@ -71,52 +90,21 @@ identify_ramdisk_image(int fd, int start_block, decompress_fn *decompressor)
 	memset(buf, 0xe5, size);
 
 	/*
-	 * Read block 0 to test for gzipped kernel
+	 * Read block 0 to test for compressed kernel
 	 */
 	sys_lseek(fd, start_block * BLOCK_SIZE, 0);
 	sys_read(fd, buf, size);
 
-#ifdef CONFIG_RD_GZIP
-	/*
-	 * If it matches the gzip magic numbers, return 0
-	 */
-	if (buf[0] == 037 && ((buf[1] == 0213) || (buf[1] == 0236))) {
-		printk(KERN_NOTICE
-		       "RAMDISK: Compressed image found at block %d\n",
-		       start_block);
-		*decompressor = gunzip;
-		nblocks = 0;
-		goto done;
-	}
-#endif
-
-#ifdef CONFIG_RD_BZIP2
-	/*
-	 * If it matches the bzip2 magic numbers, return -1
-	 */
-	if (buf[0] == 0x42 && (buf[1] == 0x5a)) {
-		printk(KERN_NOTICE
-		       "RAMDISK: Bzipped image found at block %d\n",
-		       start_block);
-		*decompressor = bunzip2;
-		nblocks = 0;
-		goto done;
-	}
-#endif
-
-#ifdef CONFIG_RD_LZMA
-	/*
-	 * If it matches the lzma magic numbers, return -1
-	 */
-	if (buf[0] == 0x5d && (buf[1] == 0x00)) {
-		printk(KERN_NOTICE
-		       "RAMDISK: Lzma image found at block %d\n",
-		       start_block);
-		*decompressor = unlzma;
-		nblocks = 0;
-		goto done;
+	for (cf = compressed_formats; cf->decompressor; cf++) {
+		if (buf[0] == cf->magic[0] && buf[1] == cf->magic[1]) {
+			printk(KERN_NOTICE
+			       "RAMDISK: %s image found at block %d\n",
+			       cf->name, start_block);
+			*decompressor = cf->decompressor;
+			nblocks = 0;
+			goto done;
+		}
 	}
-#endif
 
 	/* romfs is at block zero too */
 	if (romfsb->word0 == ROMSB_WORD0 &&
@@ -165,7 +153,7 @@ identify_ramdisk_image(int fd, int start_block, decompress_fn *decompressor)
 	printk(KERN_NOTICE
 	       "RAMDISK: Couldn't find valid RAM disk image starting at %d.\n",
 	       start_block);
-	
+
 done:
 	sys_lseek(fd, start_block * BLOCK_SIZE, 0);
 	kfree(buf);
@@ -224,7 +212,7 @@ int __init rd_load_image(char *from)
 		       nblocks, rd_blocks);
 		goto done;
 	}
-		
+
 	/*
 	 * OK, time to copy in the data
 	 */
-- 
1.5.6.6


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* Re: update8 [PATCH 2/5] init: bzip2 or lzma -compressed kernels and initrds
  2009-01-04 23:08 ` H. Peter Anvin
@ 2009-01-04 23:12   ` Alain Knaff
  2009-01-04 23:14     ` H. Peter Anvin
  0 siblings, 1 reply; 50+ messages in thread
From: Alain Knaff @ 2009-01-04 23:12 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: linux-kernel

H. Peter Anvin wrote:
> Hi Alain,
> 
> Looking pretty good now.  The only issues that I see so far are:
> 
> - Putting the kernel compression selection in init/Kconfig isn't going
>   to work too well, since it affects all architectures, and not all
>   architectures even do their own decompression (for quite a few
>   architectures it's the boot loader's responsibility.)
> 
>   I see two options here: either have this be parameterized by the arch
>   Kconfig files, or simply move this chunk into arch/*/Kconfig as part
>   of the arch-enablement patches.  The latter is probably the simplest,
>   even if it means some replicated code.
> 
>   Let me know what you think

What do you mean "parametrized by the arch Kconfig files"? Does this
mean that it would still be in the global files, but would be enabled by
some kind of switch or preprocessor macro in the arch dependant file? If
easily doable, this would IMHO be preferable.

However, if not easily feasible, I'm also ok with duplication.

> -- I can do this pretty easily while
>   importing, so you don't need to submit a full new patchset.

Thanks, that would be nice.

> - I did a followon patch (attached) to change the ramdisk compression
>   search to table driven.  Since I already did the followon patch, don't
>   worry about it.
> 
> 	-hpa
> 
> 

Ok

Thanks,

Alain

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: update8 [PATCH 2/5] init: bzip2 or lzma -compressed kernels and initrds
  2009-01-04 23:12   ` Alain Knaff
@ 2009-01-04 23:14     ` H. Peter Anvin
  2009-01-04 23:21       ` Alain Knaff
  0 siblings, 1 reply; 50+ messages in thread
From: H. Peter Anvin @ 2009-01-04 23:14 UTC (permalink / raw)
  To: Alain Knaff; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 642 bytes --]

Alain Knaff wrote:
> 
> What do you mean "parametrized by the arch Kconfig files"? Does this
> mean that it would still be in the global files, but would be enabled by
> some kind of switch or preprocessor macro in the arch dependant file? If
> easily doable, this would IMHO be preferable.
> 

Yes, that's what I mean.  Basically it'd use a dependency of some sort.
 It's not really clear to me right at the moment which is best, too.

Also attached another followon bug fix patch; again, you don't need to
resubmit for this.

	-hpa

-- 
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.


[-- Attachment #2: 0001-bzip2-lzma-handle-failures-from-bzip2-and-lzma-corr.patch --]
[-- Type: text/x-patch, Size: 1282 bytes --]

>From 6493358cca94a096f1672a393fd70c90dbe91d37 Mon Sep 17 00:00:00 2001
From: H. Peter Anvin <hpa@zytor.com>
Date: Sun, 4 Jan 2009 15:10:40 -0800
Subject: [PATCH] bzip2/lzma: handle failures from bzip2 and lzma correctly

Impact: Bug fix

If bzip2 or lzma fails (for example, if they aren't installed on the
system), we need to propagate the failure out to "make".  However,
they were masked by being followed by a semicolon.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
---
 scripts/Makefile.lib |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 70b4676..3b949a3 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -193,10 +193,10 @@ cmd_gzip = gzip -f -9 < $< > $@
 size_append=$(CONFIG_SHELL) $(srctree)/scripts/bin_size
 
 quiet_cmd_bzip2 = BZIP2    $@
-cmd_bzip2 = (bzip2 -9 < $< ; $(size_append) $<) > $@ || (rm -f $@ ; false)
+cmd_bzip2 = (bzip2 -9 < $< && $(size_append) $<) > $@ || (rm -f $@ ; false)
 
 # Lzma
 # ---------------------------------------------------------------------------
 
 quiet_cmd_lzma = LZMA    $@
-cmd_lzma = (lzma -9 -c $< ; $(size_append) $<) >$@ || (rm -f $@ ; false)
+cmd_lzma = (lzma -9 -c $< && $(size_append) $<) >$@ || (rm -f $@ ; false)
-- 
1.5.6.6


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* Re: update8 [PATCH 2/5] init: bzip2 or lzma -compressed kernels and initrds
  2009-01-04 23:14     ` H. Peter Anvin
@ 2009-01-04 23:21       ` Alain Knaff
  2009-01-04 23:58         ` tip: bzip2/lzma now in tip:x86/setup-lzma H. Peter Anvin
  0 siblings, 1 reply; 50+ messages in thread
From: Alain Knaff @ 2009-01-04 23:21 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: linux-kernel

H. Peter Anvin wrote:
> Alain Knaff wrote:
>> What do you mean "parametrized by the arch Kconfig files"? Does this
>> mean that it would still be in the global files, but would be enabled by
>> some kind of switch or preprocessor macro in the arch dependant file? If
>> easily doable, this would IMHO be preferable.
>>
> 
> Yes, that's what I mean.  Basically it'd use a dependency of some sort.
>  It's not really clear to me right at the moment which is best, too.

Just whatever is easiest.

> Also attached another followon bug fix patch; again, you don't need to
> resubmit for this.
> 
> 	-hpa
> 
> 

Looks ok to me. Thanks,

Alain

^ permalink raw reply	[flat|nested] 50+ messages in thread

* tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-04 23:21       ` Alain Knaff
@ 2009-01-04 23:58         ` H. Peter Anvin
  2009-01-05  3:03           ` Sam Ravnborg
                             ` (2 more replies)
  0 siblings, 3 replies; 50+ messages in thread
From: H. Peter Anvin @ 2009-01-04 23:58 UTC (permalink / raw)
  To: Alain Knaff, the arch/x86 maintainers; +Cc: linux-kernel

I have pulled the x86 parts of the bzip2/lzma patchset into
tip:x86/setup-lzma.  I would appreciate it if you could look at it and
make sure it looks sane.  I have not added the ARM portions (patch 4),
since those should go via the ARM tree, nor the capstone patch 5, which
can only be added after the old code is removed from *all* remaining
architectures.

Ingo: this *will* break your randconfig testing if you have machines
where the lzma(1) utility isn't installed!

The shortlog looks like:

Alain Knaff (3):
      bzip2/lzma: library support for gzip, bzip2 and lzma decompression
      bzip2/lzma: config and initramfs support for bzip2/lzma 	decompression
      bzip2/lzma: x86 kernel compression support

H. Peter Anvin (3):
      bzip2/lzma: use a table to search for initramfs compression formats
      bzip2/lzma: handle failures from bzip2 and lzma correctly
      bzip2/lzma: make config machinery an arch configurable

	-hpa

-- 
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-04 23:58         ` tip: bzip2/lzma now in tip:x86/setup-lzma H. Peter Anvin
@ 2009-01-05  3:03           ` Sam Ravnborg
  2009-01-05  5:09             ` H. Peter Anvin
       [not found]           ` <49615136.9080900@knaff.lu>
  2009-02-17 21:03           ` Jan Engelhardt
  2 siblings, 1 reply; 50+ messages in thread
From: Sam Ravnborg @ 2009-01-05  3:03 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Alain Knaff, the arch/x86 maintainers, linux-kernel

On Sun, Jan 04, 2009 at 03:58:23PM -0800, H. Peter Anvin wrote:
> I have pulled the x86 parts of the bzip2/lzma patchset into
> tip:x86/setup-lzma.  I would appreciate it if you could look at it and
> make sure it looks sane.  I have not added the ARM portions (patch 4),
> since those should go via the ARM tree, nor the capstone patch 5, which
> can only be added after the old code is removed from *all* remaining
> architectures.
> 
> Ingo: this *will* break your randconfig testing if you have machines
> where the lzma(1) utility isn't installed!
> 
> The shortlog looks like:
> 
> Alain Knaff (3):
>       bzip2/lzma: library support for gzip, bzip2 and lzma decompression
>       bzip2/lzma: config and initramfs support for bzip2/lzma 	decompression
>       bzip2/lzma: x86 kernel compression support
> 
> H. Peter Anvin (3):
>       bzip2/lzma: use a table to search for initramfs compression formats
>       bzip2/lzma: handle failures from bzip2 and lzma correctly
>       bzip2/lzma: make config machinery an arch configurable

Can you post this last patch.

Thanks,
	Sam

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-05  3:03           ` Sam Ravnborg
@ 2009-01-05  5:09             ` H. Peter Anvin
  2009-01-05  5:42               ` Sam Ravnborg
  0 siblings, 1 reply; 50+ messages in thread
From: H. Peter Anvin @ 2009-01-05  5:09 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: Alain Knaff, the arch/x86 maintainers, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1262 bytes --]

Sam Ravnborg wrote:
> On Sun, Jan 04, 2009 at 03:58:23PM -0800, H. Peter Anvin wrote:
>> I have pulled the x86 parts of the bzip2/lzma patchset into
>> tip:x86/setup-lzma.  I would appreciate it if you could look at it and
>> make sure it looks sane.  I have not added the ARM portions (patch 4),
>> since those should go via the ARM tree, nor the capstone patch 5, which
>> can only be added after the old code is removed from *all* remaining
>> architectures.
>>
>> Ingo: this *will* break your randconfig testing if you have machines
>> where the lzma(1) utility isn't installed!
>>
>> The shortlog looks like:
>>
>> Alain Knaff (3):
>>       bzip2/lzma: library support for gzip, bzip2 and lzma decompression
>>       bzip2/lzma: config and initramfs support for bzip2/lzma 	decompression
>>       bzip2/lzma: x86 kernel compression support
>>
>> H. Peter Anvin (3):
>>       bzip2/lzma: use a table to search for initramfs compression formats
>>       bzip2/lzma: handle failures from bzip2 and lzma correctly
>>       bzip2/lzma: make config machinery an arch configurable
> 
> Can you post this last patch.
> 
> Thanks,
> 	Sam

Here it is.

	-hpa

-- 
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.


[-- Attachment #2: 0006-bzip2-lzma-make-config-machinery-an-arch-configurab.patch --]
[-- Type: text/x-patch, Size: 3643 bytes --]

>From 2e9f3bddcbc711bb14d86c6f068a779bf3710247 Mon Sep 17 00:00:00 2001
From: H. Peter Anvin <hpa@zytor.com>
Date: Sun, 4 Jan 2009 15:41:25 -0800
Subject: [PATCH] bzip2/lzma: make config machinery an arch configurable

Impact: Bug fix (we should not show this menu on irrelevant architectures)

Make the config machinery to drive the gzip/bzip2/lzma selection
dependent on the architecture advertising HAVE_KERNEL_* so that we
don't display this for architectures where it doesn't matter.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
---
 arch/x86/Kconfig |    3 +++
 init/Kconfig     |   52 +++++++++++++++++++++++++++++++---------------------
 2 files changed, 34 insertions(+), 21 deletions(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 862adb9..7b66c34 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -39,6 +39,9 @@ config X86
 	select HAVE_GENERIC_DMA_COHERENT if X86_32
 	select HAVE_EFFICIENT_UNALIGNED_ACCESS
 	select USER_STACKTRACE_SUPPORT
+	select HAVE_KERNEL_GZIP
+	select HAVE_KERNEL_BZIP2
+	select HAVE_KERNEL_LZMA
 
 config ARCH_DEFCONFIG
 	string
diff --git a/init/Kconfig b/init/Kconfig
index df84625..f9633c0 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -101,10 +101,20 @@ config LOCALVERSION_AUTO
 
 	  which is done within the script "scripts/setlocalversion".)
 
+config HAVE_KERNEL_GZIP
+	bool
+
+config HAVE_KERNEL_BZIP2
+	bool
+
+config HAVE_KERNEL_LZMA
+	bool
+
 choice
-        prompt "Kernel compression mode"
-        default KERNEL_GZIP
-        help
+	prompt "Kernel compression mode"
+	default KERNEL_GZIP
+	depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA
+	help
 	  The linux kernel is a kind of self-extracting executable.
 	  Several compression algorithms are available, which differ
 	  in efficiency, compression and decompression speed.
@@ -123,34 +133,34 @@ choice
 	  If in doubt, select 'gzip'
 
 config KERNEL_GZIP
-       bool "Gzip"
-       help
-         The old and tried gzip compression. Its compression ratio is
-	 the poorest among the 3 choices; however its speed (both
-	 compression and decompression) is the fastest.
+	bool "Gzip"
+	depends on HAVE_KERNEL_GZIP
+	help
+	  The old and tried gzip compression. Its compression ratio is
+	  the poorest among the 3 choices; however its speed (both
+	  compression and decompression) is the fastest.
 
 config KERNEL_BZIP2
 	bool "Bzip2"
+	depends on HAVE_KERNEL_BZIP2
 	help
 	  Its compression ratio and speed is intermediate.
-	  Decompression speed is slowest among the 3.
-	  The kernel size is about 10 per cent smaller with bzip2,
-	  in comparison to gzip.
-	  Bzip2 uses a large amount of memory. For modern kernels
-	  you will need at least 8MB RAM or more for booting.
+	  Decompression speed is slowest among the three.  The kernel
+	  size is about 10% smaller with bzip2, in comparison to gzip.
+	  Bzip2 uses a large amount of memory. For modern kernels you
+	  will need at least 8MB RAM or more for booting.
 
 config KERNEL_LZMA
-       bool "LZMA"
-       help
-         The most recent compression algorithm.
-	 Its ratio is best, decompression speed is between the other
-	 2. Compression is slowest.
-	 The kernel size is about 33 per cent smaller with lzma,
-	 in comparison to gzip.
+	bool "LZMA"
+	depends on HAVE_KERNEL_LZMA
+	help
+	  The most recent compression algorithm.
+	  Its ratio is best, decompression speed is between the other
+	  two. Compression is slowest.	The kernel size is about 33%
+	  smaller with LZMA in comparison to gzip.
 
 endchoice
 
-
 config SWAP
 	bool "Support for paging of anonymous memory (swap)"
 	depends on MMU && BLOCK
-- 
1.5.6.6


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-05  5:09             ` H. Peter Anvin
@ 2009-01-05  5:42               ` Sam Ravnborg
  0 siblings, 0 replies; 50+ messages in thread
From: Sam Ravnborg @ 2009-01-05  5:42 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Alain Knaff, the arch/x86 maintainers, linux-kernel

On Sun, Jan 04, 2009 at 09:09:21PM -0800, H. Peter Anvin wrote:
> Sam Ravnborg wrote:
> > On Sun, Jan 04, 2009 at 03:58:23PM -0800, H. Peter Anvin wrote:
> >> I have pulled the x86 parts of the bzip2/lzma patchset into
> >> tip:x86/setup-lzma.  I would appreciate it if you could look at it and
> >> make sure it looks sane.  I have not added the ARM portions (patch 4),
> >> since those should go via the ARM tree, nor the capstone patch 5, which
> >> can only be added after the old code is removed from *all* remaining
> >> architectures.
> >>
> >> Ingo: this *will* break your randconfig testing if you have machines
> >> where the lzma(1) utility isn't installed!
> >>
> >> The shortlog looks like:
> >>
> >> Alain Knaff (3):
> >>       bzip2/lzma: library support for gzip, bzip2 and lzma decompression
> >>       bzip2/lzma: config and initramfs support for bzip2/lzma 	decompression
> >>       bzip2/lzma: x86 kernel compression support
> >>
> >> H. Peter Anvin (3):
> >>       bzip2/lzma: use a table to search for initramfs compression formats
> >>       bzip2/lzma: handle failures from bzip2 and lzma correctly
> >>       bzip2/lzma: make config machinery an arch configurable
> > 
> > Can you post this last patch.
> > 
> > Thanks,
> > 	Sam
> 
> Here it is.

Looks good.
You can add a:
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>

if you like.

	Sam

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
       [not found]                             ` <496255B0.1050208@zytor.com>
@ 2009-01-05 18:57                               ` Alain Knaff
  2009-01-05 19:36                                 ` H. Peter Anvin
  0 siblings, 1 reply; 50+ messages in thread
From: Alain Knaff @ 2009-01-05 18:57 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

H. Peter Anvin wrote:
> Alain Knaff wrote:
>>
>> Yes, now I remember. We had that subject of compressed builtin
>> initramfs' a while ago. Back then, I proposed to just leave it
>> uncompressed (considering that it is part of the kernel, which is
>> compressed anyways)... but that apparently caused problems for some
>> people who liked to store huge amount in there, due to some artifacts
>> about how initramfs initialization works.
>>
>> Well, I'd think in that case, the most expedient method would be to have
>> CONFIG_RD_GZIP always defined.
>>
> 
> Expedient, perhaps, but it's not the right solution.  The same people
> who want a large builtin initramfs are generally the ones that care
> about image size.  If we gzip the internal image, it will in fact
> nullify the benefit of using a better compressor for the kernel image in
> general, since the gzipped portion of the image will hardly compress at
> all.
> 
>     -hpa

Exactly the reason why in one of my first versions I wanted to do away
with that feature.... until you pointed out that it was actually using
more *memory* when not compressed, because of the way the buffer cache
works when the initramfs is put into place (it is not freed "as we go",
but only at the very end, so at one point in time there will be 2 copies
which will of course be larger when they're both uncompressed).

I'm getting the impression that again, anybody wanting to propose an
enhancement must solve _all_ pre-existing problems in that area... While
this certainly leads to better code once a patch does make it, it will
certainly discourage many.

Maybe we can separate both issues, and tackle the initramfs case
entirely separately (maybe by proving a buffer cache enhancement that
allows to free initramfs' memory "as we go").

Regards,

Alain


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-05 18:57                               ` Alain Knaff
@ 2009-01-05 19:36                                 ` H. Peter Anvin
  2009-01-05 22:07                                   ` Alain Knaff
  0 siblings, 1 reply; 50+ messages in thread
From: H. Peter Anvin @ 2009-01-05 19:36 UTC (permalink / raw)
  To: Alain Knaff; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

Alain Knaff wrote:
> Exactly the reason why in one of my first versions I wanted to do away
> with that feature.... until you pointed out that it was actually using
> more *memory* when not compressed, because of the way the buffer cache
> works when the initramfs is put into place (it is not freed "as we go",
> but only at the very end, so at one point in time there will be 2 copies
> which will of course be larger when they're both uncompressed).
> 
> I'm getting the impression that again, anybody wanting to propose an
> enhancement must solve _all_ pre-existing problems in that area... While
> this certainly leads to better code once a patch does make it, it will
> certainly discourage many.

Yes.  That is a deliberate tradeoff in our culture.  It's hardly a 
secret, either.

> Maybe we can separate both issues, and tackle the initramfs case
> entirely separately (maybe by proving a buffer cache enhancement that
> allows to free initramfs' memory "as we go").

Well, I think the right thing to do at this stage is to simply compress 
the initramfs with the preferred compression method (and if no 
compression method is provided, with none.)  This can be relatively 
simply done with a script, I think.

At least that way the whole image is compressed using the preferred 
compression format, and since all the relevant compressors have methods 
of dealing reasonably with uncompressable chunks we should be okay.

Doing the "free as you go" thing is definitely something I would like to 
see, as well as supporting initramfs in high memory.  I have looked at 
it a few times, however, it is a nontrivial modification and I haven't 
personally devoted the time to dealing with it.  I really don't think we 
want to entangle this issue with the compression patch.

	-hpa


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-05 19:36                                 ` H. Peter Anvin
@ 2009-01-05 22:07                                   ` Alain Knaff
  2009-01-05 22:11                                     ` H. Peter Anvin
  0 siblings, 1 reply; 50+ messages in thread
From: Alain Knaff @ 2009-01-05 22:07 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

H. Peter Anvin wrote:
> Well, I think the right thing to do at this stage is to simply compress
> the initramfs with the preferred compression method (and if no
> compression method is provided, with none.)  This can be relatively
> simply done with a script, I think.

Well, the problem is there is really no "preferred" method for the
ramdisk or initramfs. And picking the one from the kernel might not
work, because the user might have chosen to compress the kernel via
bzip2, but only allowed lzma and gzip for the ramdisk.

> At least that way the whole image is compressed using the preferred
> compression format, and since all the relevant compressors have methods
> of dealing reasonably with uncompressable chunks we should be okay.
> 
> Doing the "free as you go" thing is definitely something I would like to
> see, as well as supporting initramfs in high memory.  I have looked at
> it a few times, however, it is a nontrivial modification and I haven't
> personally devoted the time to dealing with it.  I really don't think we
> want to entangle this issue with the compression patch.
> 
>     -hpa

Agreed

Alain

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-05 22:07                                   ` Alain Knaff
@ 2009-01-05 22:11                                     ` H. Peter Anvin
  2009-01-05 22:12                                       ` Alain Knaff
  2009-01-06  7:18                                       ` tip: bzip2/lzma now in tip:x86/setup-lzma Jaswinder Singh Rajput
  0 siblings, 2 replies; 50+ messages in thread
From: H. Peter Anvin @ 2009-01-05 22:11 UTC (permalink / raw)
  To: Alain Knaff; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

Alain Knaff wrote:
> H. Peter Anvin wrote:
>> Well, I think the right thing to do at this stage is to simply compress
>> the initramfs with the preferred compression method (and if no
>> compression method is provided, with none.)  This can be relatively
>> simply done with a script, I think.
> 
> Well, the problem is there is really no "preferred" method for the
> ramdisk or initramfs. And picking the one from the kernel might not
> work, because the user might have chosen to compress the kernel via
> bzip2, but only allowed lzma and gzip for the ramdisk.
> 

I'm thinking that with "preferred" we might just use the first one in 
the priority list "lzma, bzip2, gzip, uncompressed" depending on what is 
installed in the kernel.

Using the kernel method may definitely not work, especially on 
architectures which don't do this style of kernel compression.

	-hpa


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-05 22:11                                     ` H. Peter Anvin
@ 2009-01-05 22:12                                       ` Alain Knaff
  2009-01-05 22:59                                         ` H. Peter Anvin
  2009-01-06  7:18                                       ` tip: bzip2/lzma now in tip:x86/setup-lzma Jaswinder Singh Rajput
  1 sibling, 1 reply; 50+ messages in thread
From: Alain Knaff @ 2009-01-05 22:12 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

H. Peter Anvin wrote:
> I'm thinking that with "preferred" we might just use the first one in
> the priority list "lzma, bzip2, gzip, uncompressed" depending on what is
> installed in the kernel.
> 
> Using the kernel method may definitely not work, especially on
> architectures which don't do this style of kernel compression.
> 
>     -hpa

Ok. For the new change, may I do a diff against the current
x86/lzma-setup , or should I do the whole 5-part dance again?

Thx,

Alain

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-05 22:12                                       ` Alain Knaff
@ 2009-01-05 22:59                                         ` H. Peter Anvin
  2009-01-06  7:09                                           ` Alain Knaff
  2009-01-06 21:57                                           ` [bzip2/lzma] fix for built-in initramfs issue Alain Knaff
  0 siblings, 2 replies; 50+ messages in thread
From: H. Peter Anvin @ 2009-01-05 22:59 UTC (permalink / raw)
  To: Alain Knaff; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

Alain Knaff wrote:
> H. Peter Anvin wrote:
>> I'm thinking that with "preferred" we might just use the first one in
>> the priority list "lzma, bzip2, gzip, uncompressed" depending on what is
>> installed in the kernel.
>>
>> Using the kernel method may definitely not work, especially on
>> architectures which don't do this style of kernel compression.
>>
>>     -hpa
> 
> Ok. For the new change, may I do a diff against the current
> x86/lzma-setup , or should I do the whole 5-part dance again?
> 

Go ahead and do an incremental patch at this point.

	-hpa


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-05 22:59                                         ` H. Peter Anvin
@ 2009-01-06  7:09                                           ` Alain Knaff
  2009-01-06  7:21                                             ` Willy Tarreau
  2009-01-06  7:22                                             ` H. Peter Anvin
  2009-01-06 21:57                                           ` [bzip2/lzma] fix for built-in initramfs issue Alain Knaff
  1 sibling, 2 replies; 50+ messages in thread
From: Alain Knaff @ 2009-01-06  7:09 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Linux Kernel Mailing List, the arch/x86 maintainers

H. Peter Anvin wrote:
> Go ahead and do an incremental patch at this point.
> 
>     -hpa

Thanks, that'll make things easier. Unfortunately, I can no longer check
out the code. No error messages, but the files just aren't there:


> git pull
Already up-to-date.
> git checkout -b x86/setup-lzma tip/x86/setup-lzma
git checkout: branch x86/setup-lzma already exists
> ls lib/decompress_inflate.c
ls: cannot access lib/decompress_inflate.c: No such file or directory

Thanks

Alain

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-05 22:11                                     ` H. Peter Anvin
  2009-01-05 22:12                                       ` Alain Knaff
@ 2009-01-06  7:18                                       ` Jaswinder Singh Rajput
  2009-01-06  7:24                                         ` H. Peter Anvin
  1 sibling, 1 reply; 50+ messages in thread
From: Jaswinder Singh Rajput @ 2009-01-06  7:18 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Alain Knaff, the arch/x86 maintainers, Linux Kernel Mailing List

On Tue, Jan 6, 2009 at 3:41 AM, H. Peter Anvin <hpa@zytor.com> wrote:
>
> I'm thinking that with "preferred" we might just use the first one in the
> priority list "lzma, bzip2, gzip, uncompressed" depending on what is
> installed in the kernel.
>

Only problem I faced with lzma is that, in some machines /usr/bin/lzma
is not installed by default which leads to error in kernel
compilations.

Can we check in kernel config that lzma is installed on machine or not.

--
JSR

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-06  7:09                                           ` Alain Knaff
@ 2009-01-06  7:21                                             ` Willy Tarreau
  2009-01-06  7:22                                             ` H. Peter Anvin
  1 sibling, 0 replies; 50+ messages in thread
From: Willy Tarreau @ 2009-01-06  7:21 UTC (permalink / raw)
  To: Alain Knaff
  Cc: H. Peter Anvin, Linux Kernel Mailing List,
	the arch/x86 maintainers

On Tue, Jan 06, 2009 at 08:09:17AM +0100, Alain Knaff wrote:
> H. Peter Anvin wrote:
> > Go ahead and do an incremental patch at this point.
> > 
> >     -hpa
> 
> Thanks, that'll make things easier. Unfortunately, I can no longer check
> out the code. No error messages, but the files just aren't there:
> 
> 
> > git pull
> Already up-to-date.

run "git branch" to see what current branch you're working on.

> > git checkout -b x86/setup-lzma tip/x86/setup-lzma
> git checkout: branch x86/setup-lzma already exists

you should just to "git checkout x86/setup-lzma" since you have already
created that branch (-b XXX YYY creates branch XXX from YYY before doing
the checkout).

normally, if you do the checkout first, then the pull, you should be OK.

Regards,
Willy


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-06  7:09                                           ` Alain Knaff
  2009-01-06  7:21                                             ` Willy Tarreau
@ 2009-01-06  7:22                                             ` H. Peter Anvin
  2009-01-06  7:30                                               ` Alain Knaff
  1 sibling, 1 reply; 50+ messages in thread
From: H. Peter Anvin @ 2009-01-06  7:22 UTC (permalink / raw)
  To: Alain Knaff; +Cc: Linux Kernel Mailing List, the arch/x86 maintainers

Alain Knaff wrote:
> H. Peter Anvin wrote:
>> Go ahead and do an incremental patch at this point.
>>
>>     -hpa
> 
> Thanks, that'll make things easier. Unfortunately, I can no longer check
> out the code. No error messages, but the files just aren't there:
> 
> 
>> git pull
> Already up-to-date.
>> git checkout -b x86/setup-lzma tip/x86/setup-lzma
> git checkout: branch x86/setup-lzma already exists

I think the "git checkout" failed here because you were trying to create 
a local branch (-b) failed.  Just "git checkout x86/setup-lzma" followed 
by "git pull" *should* work...

>> ls lib/decompress_inflate.c
> ls: cannot access lib/decompress_inflate.c: No such file or directory
> 

If that doesn't work, you may want to ask the people in #git on Freenode.

	-hpa


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-06  7:18                                       ` tip: bzip2/lzma now in tip:x86/setup-lzma Jaswinder Singh Rajput
@ 2009-01-06  7:24                                         ` H. Peter Anvin
  2009-01-06  7:53                                           ` Jaswinder Singh Rajput
  0 siblings, 1 reply; 50+ messages in thread
From: H. Peter Anvin @ 2009-01-06  7:24 UTC (permalink / raw)
  To: Jaswinder Singh Rajput
  Cc: Alain Knaff, the arch/x86 maintainers, Linux Kernel Mailing List

Jaswinder Singh Rajput wrote:
> On Tue, Jan 6, 2009 at 3:41 AM, H. Peter Anvin <hpa@zytor.com> wrote:
>> I'm thinking that with "preferred" we might just use the first one in the
>> priority list "lzma, bzip2, gzip, uncompressed" depending on what is
>> installed in the kernel.
> 
> Only problem I faced with lzma is that, in some machines /usr/bin/lzma
> is not installed by default which leads to error in kernel
> compilations.
> 
> Can we check in kernel config that lzma is installed on machine or not.

For building the default initramfs, we'd do it in a script.  I don't 
think there is any way to check the system for configuration options, 
and I would argue that it *shouldn't* be, because it creates a
silent failure condition.

	-hpa

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-06  7:22                                             ` H. Peter Anvin
@ 2009-01-06  7:30                                               ` Alain Knaff
  0 siblings, 0 replies; 50+ messages in thread
From: Alain Knaff @ 2009-01-06  7:30 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Linux Kernel Mailing List, the arch/x86 maintainers

H. Peter Anvin wrote:
> Alain Knaff wrote:
>> H. Peter Anvin wrote:
>>> Go ahead and do an incremental patch at this point.
>>>
>>>     -hpa
>>
>> Thanks, that'll make things easier. Unfortunately, I can no longer check
>> out the code. No error messages, but the files just aren't there:
>>
>>
>>> git pull
>> Already up-to-date.
>>> git checkout -b x86/setup-lzma tip/x86/setup-lzma
>> git checkout: branch x86/setup-lzma already exists
> 
> I think the "git checkout" failed here because you were trying to create
> a local branch (-b) failed.  Just "git checkout x86/setup-lzma" followed
> by "git pull" *should* work...

Yes, that did indeed work. Thanks

> git checkout x86/setup-lzma
Switched to branch "x86/setup-lzma"
> git pull
Updating 2e9f3bd..c8531ab
Fast forward
 drivers/block/Kconfig |   20 +++++++++++---------
 lib/Kconfig           |   13 +++++++++++++
 lib/Makefile          |    7 +++++--
 3 files changed, 29 insertions(+), 11 deletions(-)
> ls lib/decompress_inflate.c
lib/decompress_inflate.c


Alain

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-06  7:24                                         ` H. Peter Anvin
@ 2009-01-06  7:53                                           ` Jaswinder Singh Rajput
  2009-01-06  8:27                                             ` H. Peter Anvin
  0 siblings, 1 reply; 50+ messages in thread
From: Jaswinder Singh Rajput @ 2009-01-06  7:53 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Alain Knaff, the arch/x86 maintainers, Linux Kernel Mailing List

On Tue, Jan 6, 2009 at 12:54 PM, H. Peter Anvin <hpa@zytor.com> wrote:
> Jaswinder Singh Rajput wrote:
>>
>> On Tue, Jan 6, 2009 at 3:41 AM, H. Peter Anvin <hpa@zytor.com> wrote:
>>>
>>> I'm thinking that with "preferred" we might just use the first one in the
>>> priority list "lzma, bzip2, gzip, uncompressed" depending on what is
>>> installed in the kernel.
>>
>> Only problem I faced with lzma is that, in some machines /usr/bin/lzma
>> is not installed by default which leads to error in kernel
>> compilations.
>>
>> Can we check in kernel config that lzma is installed on machine or not.
>
> For building the default initramfs, we'd do it in a script.  I don't think
> there is any way to check the system for configuration options, and I would
> argue that it *shouldn't* be, because it creates a
> silent failure condition.

Sorry, I was talking about kernel with CONFIG_KERNEL_LZMA=y

On some machines where /usr/bin/lzma was not installed I was getting
errors during kernel compilation. So I installed lzma package and then
kernel compiled for me on that machine.

--
JSR

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-06  7:53                                           ` Jaswinder Singh Rajput
@ 2009-01-06  8:27                                             ` H. Peter Anvin
  0 siblings, 0 replies; 50+ messages in thread
From: H. Peter Anvin @ 2009-01-06  8:27 UTC (permalink / raw)
  To: Jaswinder Singh Rajput
  Cc: Alain Knaff, the arch/x86 maintainers, Linux Kernel Mailing List

Jaswinder Singh Rajput wrote:
>>>
>>> Can we check in kernel config that lzma is installed on machine or not.
>> For building the default initramfs, we'd do it in a script.  I don't think
>> there is any way to check the system for configuration options, and I would
>> argue that it *shouldn't* be, because it creates a
>> silent failure condition.
> 
> Sorry, I was talking about kernel with CONFIG_KERNEL_LZMA=y
> 
> On some machines where /usr/bin/lzma was not installed I was getting
> errors during kernel compilation. So I installed lzma package and then
> kernel compiled for me on that machine.
> 

Right, well, that's to be expected.  (There was a bug earlier on which
would cause it to "complete" incorrectly... not good for obvious reasons.)

	-hpa

-- 
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.


^ permalink raw reply	[flat|nested] 50+ messages in thread

* [bzip2/lzma] fix for built-in initramfs issue
  2009-01-05 22:59                                         ` H. Peter Anvin
  2009-01-06  7:09                                           ` Alain Knaff
@ 2009-01-06 21:57                                           ` Alain Knaff
  2009-01-06 22:48                                             ` H. Peter Anvin
  1 sibling, 1 reply; 50+ messages in thread
From: Alain Knaff @ 2009-01-06 21:57 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

[-- Attachment #1: Type: text/plain, Size: 646 bytes --]

H. Peter Anvin wrote:
> Alain Knaff wrote:
>> H. Peter Anvin wrote:
>>> I'm thinking that with "preferred" we might just use the first one in
>>> the priority list "lzma, bzip2, gzip, uncompressed" depending on what is
>>> installed in the kernel.
>>>
>>> Using the kernel method may definitely not work, especially on
>>> architectures which don't do this style of kernel compression.
>>>
>>>     -hpa
>>
>> Ok. For the new change, may I do a diff against the current
>> x86/lzma-setup , or should I do the whole 5-part dance again?
>>
> 
> Go ahead and do an incremental patch at this point.
> 
>     -hpa

Here it is (see attachment)

Alain



[-- Attachment #2: x86-builtin-initramfs.patch --]
[-- Type: text/x-diff, Size: 12236 bytes --]

From: Alain Knaff <alain@knaff.lu>
Subject: [PATCH] init: fix built-in initramfs vs CONFIG_RD_GZIP

Impact: Consistency

Makes it possible to disable CONFIG_RD_GZIP . In that case, the
built-in initramfs will be compressed by whatever compressor is
available (bzip2 or lzma) or left uncompressed if none is available.

It also removes a couple of warnings which occur when no ramdisk
compression at all is chosen.

It also restores the select ZLIB_INFLATE in drivers/block/Kconfig
which somehow came missing. This is needed to activate compilation of
the stuff in zlib_deflate.

Signed-off-by: Alain Knaff <alain@knaff.lu>
---
diff -purN x86.ref/drivers/block/Kconfig x86-builtin-initramfs/drivers/block/Kconfig
--- x86.ref/drivers/block/Kconfig	2009-01-06 08:31:16.000000000 +0100
+++ x86-builtin-initramfs/drivers/block/Kconfig	2009-01-06 21:41:16.000000000 +0100
@@ -363,6 +363,7 @@ config RD_GZIP
 	default y
 	depends on BLK_DEV_INITRD=y
 	select DECOMPRESS_GZIP
+	select ZLIB_INFLATE
 	help
 	  Support loading of a gzip encoded initial ramdisk or cpio buffer.
 	  If unsure, say Y.
diff -purN x86.ref/init/initramfs.c x86-builtin-initramfs/init/initramfs.c
--- x86.ref/init/initramfs.c	2009-01-06 08:31:16.000000000 +0100
+++ x86-builtin-initramfs/init/initramfs.c	2009-01-06 22:27:26.000000000 +0100
@@ -389,7 +389,7 @@ static int __init write_buffer(char *buf
 	return len - count;
 }
 
-
+#if defined CONFIG_RD_GZIP || defined CONFIG_RD_BZIP2 || defined CONFIG_RD_LZMA
 static int __init flush_buffer(void *bufv, unsigned len)
 {
 	char *buf = (char *) bufv;
@@ -412,6 +412,7 @@ static int __init flush_buffer(void *buf
 	}
 	return origLen;
 }
+#endif
 
 static unsigned my_inptr;   /* index of next byte to be processed in inbuf */
 
@@ -449,10 +450,12 @@ static char * __init unpack_to_rootfs(ch
 			continue;
 		}
 		this_header = 0;
+#ifdef CONFIG_RD_GZIP
 		if (!gunzip(buf, len, NULL, flush_buffer, NULL,
 			    &my_inptr, error) &&
 		    message == NULL)
 			goto ok;
+#endif
 
 #ifdef CONFIG_RD_BZIP2
 		message = NULL; /* Zero out message, or else cpio will
@@ -473,7 +476,9 @@ static char * __init unpack_to_rootfs(ch
 			goto ok;
 		}
 #endif
+#if defined CONFIG_RD_GZIP || defined CONFIG_RD_BZIP2 || defined CONFIG_RD_LZMA
 ok:
+#endif
 		if (state != Reset)
 			error("junk in compressed archive");
 		this_header = saved_offset + my_inptr;
diff -purN x86.ref/scripts/gen_initramfs_list.sh x86-builtin-initramfs/scripts/gen_initramfs_list.sh
--- x86.ref/scripts/gen_initramfs_list.sh	2009-01-05 01:21:06.000000000 +0100
+++ x86-builtin-initramfs/scripts/gen_initramfs_list.sh	2009-01-06 21:48:19.000000000 +0100
@@ -5,7 +5,7 @@
 # Released under the terms of the GNU GPL
 #
 # Generate a cpio packed initramfs. It uses gen_init_cpio to generate
-# the cpio archive, and gzip to pack it.
+# the cpio archive, and then compresses it.
 # The script may also be used to generate the inputfile used for gen_init_cpio
 # This script assumes that gen_init_cpio is located in usr/ directory
 
@@ -16,8 +16,8 @@ usage() {
 cat << EOF
 Usage:
 $0 [-o <file>] [-u <uid>] [-g <gid>] {-d | <cpio_source>} ...
-	-o <file>      Create gzipped initramfs file named <file> using
-		       gen_init_cpio and gzip
+	-o <file>      Create compressed initramfs file named <file> using
+		       gen_init_cpio and compressor depending on the extension
 	-u <uid>       User ID to map to user ID 0 (root).
 		       <uid> is only meaningful if <cpio_source> is a
 		       directory.  "squash" forces all files to uid 0.
@@ -225,6 +225,7 @@ cpio_list=
 output="/dev/stdout"
 output_file=""
 is_cpio_compressed=
+compr="gzip -9 -f"
 
 arg="$1"
 case "$arg" in
@@ -233,11 +234,15 @@ case "$arg" in
 		echo "deps_initramfs := \\"
 		shift
 		;;
-	"-o")	# generate gzipped cpio image named $1
+	"-o")	# generate compressed cpio image named $1
 		shift
 		output_file="$1"
 		cpio_list="$(mktemp ${TMPDIR:-/tmp}/cpiolist.XXXXXX)"
 		output=${cpio_list}
+		echo "$output_file" | grep -q "\.gz$" && compr="gzip -9 -f"
+		echo "$output_file" | grep -q "\.bz2$" && compr="bzip2 -9 -f"
+		echo "$output_file" | grep -q "\.lzma$" && compr="lzma -9 -f"
+		echo "$output_file" | grep -q "\.cpio$" && compr="cat"
 		shift
 		;;
 esac
@@ -274,7 +279,7 @@ while [ $# -gt 0 ]; do
 	esac
 done
 
-# If output_file is set we will generate cpio archive and gzip it
+# If output_file is set we will generate cpio archive and compress it
 # we are carefull to delete tmp files
 if [ ! -z ${output_file} ]; then
 	if [ -z ${cpio_file} ]; then
@@ -287,7 +292,7 @@ if [ ! -z ${output_file} ]; then
 	if [ "${is_cpio_compressed}" = "compressed" ]; then
 		cat ${cpio_tfile} > ${output_file}
 	else
-		cat ${cpio_tfile} | gzip -f -9 - > ${output_file}
+		cat ${cpio_tfile} | ${compr}  - > ${output_file}
 	fi
 	[ -z ${cpio_file} ] && rm ${cpio_tfile}
 fi
diff -purN x86.ref/usr/initramfs_data.bz2.S x86-builtin-initramfs/usr/initramfs_data.bz2.S
--- x86.ref/usr/initramfs_data.bz2.S	1970-01-01 01:00:00.000000000 +0100
+++ x86-builtin-initramfs/usr/initramfs_data.bz2.S	2009-01-06 20:54:00.000000000 +0100
@@ -0,0 +1,30 @@
+/*
+  initramfs_data includes the compressed binary that is the
+  filesystem used for early user space.
+  Note: Older versions of "as" (prior to binutils 2.11.90.0.23
+  released on 2001-07-14) dit not support .incbin.
+  If you are forced to use older binutils than that then the
+  following trick can be applied to create the resulting binary:
+
+
+  ld -m elf_i386  --format binary --oformat elf32-i386 -r \
+  -T initramfs_data.scr initramfs_data.cpio.gz -o initramfs_data.o
+   ld -m elf_i386  -r -o built-in.o initramfs_data.o
+
+  initramfs_data.scr looks like this:
+SECTIONS
+{
+       .init.ramfs : { *(.data) }
+}
+
+  The above example is for i386 - the parameters vary from architectures.
+  Eventually look up LDFLAGS_BLOB in an older version of the
+  arch/$(ARCH)/Makefile to see the flags used before .incbin was introduced.
+
+  Using .incbin has the advantage over ld that the correct flags are set
+  in the ELF header, as required by certain architectures.
+*/
+
+.section .init.ramfs,"a"
+.incbin "usr/initramfs_data.cpio.bz2"
+
diff -purN x86.ref/usr/initramfs_data.gz.S x86-builtin-initramfs/usr/initramfs_data.gz.S
--- x86.ref/usr/initramfs_data.gz.S	1970-01-01 01:00:00.000000000 +0100
+++ x86-builtin-initramfs/usr/initramfs_data.gz.S	2009-01-05 01:21:06.000000000 +0100
@@ -0,0 +1,30 @@
+/*
+  initramfs_data includes the compressed binary that is the
+  filesystem used for early user space.
+  Note: Older versions of "as" (prior to binutils 2.11.90.0.23
+  released on 2001-07-14) dit not support .incbin.
+  If you are forced to use older binutils than that then the
+  following trick can be applied to create the resulting binary:
+
+
+  ld -m elf_i386  --format binary --oformat elf32-i386 -r \
+  -T initramfs_data.scr initramfs_data.cpio.gz -o initramfs_data.o
+   ld -m elf_i386  -r -o built-in.o initramfs_data.o
+
+  initramfs_data.scr looks like this:
+SECTIONS
+{
+       .init.ramfs : { *(.data) }
+}
+
+  The above example is for i386 - the parameters vary from architectures.
+  Eventually look up LDFLAGS_BLOB in an older version of the
+  arch/$(ARCH)/Makefile to see the flags used before .incbin was introduced.
+
+  Using .incbin has the advantage over ld that the correct flags are set
+  in the ELF header, as required by certain architectures.
+*/
+
+.section .init.ramfs,"a"
+.incbin "usr/initramfs_data.cpio.gz"
+
diff -purN x86.ref/usr/initramfs_data.lzma.S x86-builtin-initramfs/usr/initramfs_data.lzma.S
--- x86.ref/usr/initramfs_data.lzma.S	1970-01-01 01:00:00.000000000 +0100
+++ x86-builtin-initramfs/usr/initramfs_data.lzma.S	2009-01-06 20:54:13.000000000 +0100
@@ -0,0 +1,30 @@
+/*
+  initramfs_data includes the compressed binary that is the
+  filesystem used for early user space.
+  Note: Older versions of "as" (prior to binutils 2.11.90.0.23
+  released on 2001-07-14) dit not support .incbin.
+  If you are forced to use older binutils than that then the
+  following trick can be applied to create the resulting binary:
+
+
+  ld -m elf_i386  --format binary --oformat elf32-i386 -r \
+  -T initramfs_data.scr initramfs_data.cpio.gz -o initramfs_data.o
+   ld -m elf_i386  -r -o built-in.o initramfs_data.o
+
+  initramfs_data.scr looks like this:
+SECTIONS
+{
+       .init.ramfs : { *(.data) }
+}
+
+  The above example is for i386 - the parameters vary from architectures.
+  Eventually look up LDFLAGS_BLOB in an older version of the
+  arch/$(ARCH)/Makefile to see the flags used before .incbin was introduced.
+
+  Using .incbin has the advantage over ld that the correct flags are set
+  in the ELF header, as required by certain architectures.
+*/
+
+.section .init.ramfs,"a"
+.incbin "usr/initramfs_data.cpio.lzma"
+
diff -purN x86.ref/usr/initramfs_data.S x86-builtin-initramfs/usr/initramfs_data.S
--- x86.ref/usr/initramfs_data.S	2009-01-05 01:21:06.000000000 +0100
+++ x86-builtin-initramfs/usr/initramfs_data.S	2009-01-06 20:54:18.000000000 +0100
@@ -26,5 +26,5 @@ SECTIONS
 */
 
 .section .init.ramfs,"a"
-.incbin "usr/initramfs_data.cpio.gz"
+.incbin "usr/initramfs_data.cpio"
 
diff -purN x86.ref/usr/Makefile x86-builtin-initramfs/usr/Makefile
--- x86.ref/usr/Makefile	2009-01-05 01:21:06.000000000 +0100
+++ x86-builtin-initramfs/usr/Makefile	2009-01-06 22:23:48.000000000 +0100
@@ -5,14 +5,32 @@
 klibcdirs:;
 PHONY += klibcdirs
 
+# Find out "preferred" ramdisk compressor. Order of preference is
+#  1. bzip2 efficient, and likely to be present
+#  2. gzip former default
+#  3. lzma
+#  4. none
+
+# None of the above
+suffix_y                   =
+
+# Lzma, but no gzip nor bzip2
+suffix_$(CONFIG_RD_LZMA)   = .lzma
+
+# Gzip, but no bzip2
+suffix_$(CONFIG_RD_GZIP)   = .gz
+
+# Bzip2
+suffix_$(CONFIG_RD_BZIP2)  = .bz2
+
 
 # Generate builtin.o based on initramfs_data.o
-obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data.o
+obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data$(suffix_y).o
 
-# initramfs_data.o contains the initramfs_data.cpio.gz image.
+# initramfs_data.o contains the compressed initramfs_data.cpio image.
 # The image is included using .incbin, a dependency which is not
 # tracked automatically.
-$(obj)/initramfs_data.o: $(obj)/initramfs_data.cpio.gz FORCE
+$(obj)/initramfs_data$(suffix_y).o: $(obj)/initramfs_data.cpio$(suffix_y) FORCE
 
 #####
 # Generate the initramfs cpio archive
@@ -25,28 +43,28 @@ ramfs-args  := \
         $(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
         $(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID))
 
-# .initramfs_data.cpio.gz.d is used to identify all files included
+# .initramfs_data.cpio.d is used to identify all files included
 # in initramfs and to detect if any files are added/removed.
 # Removed files are identified by directory timestamp being updated
 # The dependency list is generated by gen_initramfs.sh -l
-ifneq ($(wildcard $(obj)/.initramfs_data.cpio.gz.d),)
-	include $(obj)/.initramfs_data.cpio.gz.d
+ifneq ($(wildcard $(obj)/.initramfs_data.cpio.d),)
+	include $(obj)/.initramfs_data.cpio.d
 endif
 
 quiet_cmd_initfs = GEN     $@
       cmd_initfs = $(initramfs) -o $@ $(ramfs-args) $(ramfs-input)
 
-targets := initramfs_data.cpio.gz
+targets := initramfs_data.cpio.gz initramfs_data.cpio.bz2 initramfs_data.cpio.lzma initramfs_data.cpio
 # do not try to update files included in initramfs
 $(deps_initramfs): ;
 
 $(deps_initramfs): klibcdirs
-# We rebuild initramfs_data.cpio.gz if:
-# 1) Any included file is newer then initramfs_data.cpio.gz
+# We rebuild initramfs_data.cpio if:
+# 1) Any included file is newer then initramfs_data.cpio
 # 2) There are changes in which files are included (added or deleted)
-# 3) If gen_init_cpio are newer than initramfs_data.cpio.gz
+# 3) If gen_init_cpio are newer than initramfs_data.cpio
 # 4) arguments to gen_initramfs.sh changes
-$(obj)/initramfs_data.cpio.gz: $(obj)/gen_init_cpio $(deps_initramfs) klibcdirs
-	$(Q)$(initramfs) -l $(ramfs-input) > $(obj)/.initramfs_data.cpio.gz.d
+$(obj)/initramfs_data.cpio$(suffix_y): $(obj)/gen_init_cpio $(deps_initramfs) klibcdirs
+	$(Q)$(initramfs) -l $(ramfs-input) > $(obj)/.initramfs_data.cpio.d
 	$(call if_changed,initfs)
 

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [bzip2/lzma] fix for built-in initramfs issue
  2009-01-06 21:57                                           ` [bzip2/lzma] fix for built-in initramfs issue Alain Knaff
@ 2009-01-06 22:48                                             ` H. Peter Anvin
  2009-01-06 22:50                                               ` Alain Knaff
  0 siblings, 1 reply; 50+ messages in thread
From: H. Peter Anvin @ 2009-01-06 22:48 UTC (permalink / raw)
  To: Alain Knaff; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

Alain Knaff wrote:
> It also restores the select ZLIB_INFLATE in drivers/block/Kconfig
> which somehow came missing. This is needed to activate compilation of
> the stuff in zlib_deflate.

It's not missing.  It is (or at least should be) included via the 
dependency chain DECOMPRESS_GZIP -> ZLIB_INFLATE.

	-hpa


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [bzip2/lzma] fix for built-in initramfs issue
  2009-01-06 22:48                                             ` H. Peter Anvin
@ 2009-01-06 22:50                                               ` Alain Knaff
  2009-01-06 22:58                                                 ` H. Peter Anvin
  0 siblings, 1 reply; 50+ messages in thread
From: Alain Knaff @ 2009-01-06 22:50 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

H. Peter Anvin wrote:
> Alain Knaff wrote:
>> It also restores the select ZLIB_INFLATE in drivers/block/Kconfig
>> which somehow came missing. This is needed to activate compilation of
>> the stuff in zlib_deflate.
> 
> It's not missing.  It is (or at least should be) included via the
> dependency chain DECOMPRESS_GZIP -> ZLIB_INFLATE.
> 
>     -hpa

Well, that didn't work when I tried it here...

Alain

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [bzip2/lzma] fix for built-in initramfs issue
  2009-01-06 22:50                                               ` Alain Knaff
@ 2009-01-06 22:58                                                 ` H. Peter Anvin
  2009-01-06 22:58                                                   ` Alain Knaff
  0 siblings, 1 reply; 50+ messages in thread
From: H. Peter Anvin @ 2009-01-06 22:58 UTC (permalink / raw)
  To: Alain Knaff; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

Alain Knaff wrote:
> H. Peter Anvin wrote:
>> Alain Knaff wrote:
>>> It also restores the select ZLIB_INFLATE in drivers/block/Kconfig
>>> which somehow came missing. This is needed to activate compilation of
>>> the stuff in zlib_deflate.
>> It's not missing.  It is (or at least should be) included via the
>> dependency chain DECOMPRESS_GZIP -> ZLIB_INFLATE.
>>
>>     -hpa
> 
> Well, that didn't work when I tried it here...
> 

OK, let's fix the dependency chain then.  I'll mess with it.

	-hpa

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [bzip2/lzma] fix for built-in initramfs issue
  2009-01-06 22:58                                                 ` H. Peter Anvin
@ 2009-01-06 22:58                                                   ` Alain Knaff
  0 siblings, 0 replies; 50+ messages in thread
From: Alain Knaff @ 2009-01-06 22:58 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

H. Peter Anvin wrote:
> Alain Knaff wrote:
>> H. Peter Anvin wrote:
>>> Alain Knaff wrote:
>>>> It also restores the select ZLIB_INFLATE in drivers/block/Kconfig
>>>> which somehow came missing. This is needed to activate compilation of
>>>> the stuff in zlib_deflate.
>>> It's not missing.  It is (or at least should be) included via the
>>> dependency chain DECOMPRESS_GZIP -> ZLIB_INFLATE.
>>>
>>>     -hpa
>>
>> Well, that didn't work when I tried it here...
>>
> 
> OK, let's fix the dependency chain then.  I'll mess with it.
> 
>     -hpa

Ok, go ahead.

Alain


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-01-04 23:58         ` tip: bzip2/lzma now in tip:x86/setup-lzma H. Peter Anvin
  2009-01-05  3:03           ` Sam Ravnborg
       [not found]           ` <49615136.9080900@knaff.lu>
@ 2009-02-17 21:03           ` Jan Engelhardt
  2009-02-17 21:05             ` H. Peter Anvin
  2 siblings, 1 reply; 50+ messages in thread
From: Jan Engelhardt @ 2009-02-17 21:03 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Alain Knaff, the arch/x86 maintainers, linux-kernel


On Monday 2009-01-05 00:58, H. Peter Anvin wrote:
>
>I have pulled the x86 parts of the bzip2/lzma patchset into
>tip:x86/setup-lzma.  I would appreciate it if you could look at it and
>make sure it looks sane.  I have not added the ARM portions (patch 4),
>since those should go via the ARM tree, nor the capstone patch 5, which
>can only be added after the old code is removed from *all* remaining
>architectures.

It seems to work well here. It would be cool if this finds its way
into mainline sometime.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-17 21:03           ` Jan Engelhardt
@ 2009-02-17 21:05             ` H. Peter Anvin
  2009-02-17 22:08               ` Ingo Molnar
  0 siblings, 1 reply; 50+ messages in thread
From: H. Peter Anvin @ 2009-02-17 21:05 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: Alain Knaff, the arch/x86 maintainers, linux-kernel

Jan Engelhardt wrote:
> On Monday 2009-01-05 00:58, H. Peter Anvin wrote:
>> I have pulled the x86 parts of the bzip2/lzma patchset into
>> tip:x86/setup-lzma.  I would appreciate it if you could look at it and
>> make sure it looks sane.  I have not added the ARM portions (patch 4),
>> since those should go via the ARM tree, nor the capstone patch 5, which
>> can only be added after the old code is removed from *all* remaining
>> architectures.
> 
> It seems to work well here. It would be cool if this finds its way
> into mainline sometime.

There were some build failures with "make randconfig" I seem to recall. 
  Those need to be addressed soon if we're going to be able to push this 
for .30.

	-hpa


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-17 21:05             ` H. Peter Anvin
@ 2009-02-17 22:08               ` Ingo Molnar
  2009-02-17 23:37                 ` Ingo Molnar
  0 siblings, 1 reply; 50+ messages in thread
From: Ingo Molnar @ 2009-02-17 22:08 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Jan Engelhardt, Alain Knaff, the arch/x86 maintainers,
	linux-kernel


* H. Peter Anvin <hpa@zytor.com> wrote:

> Jan Engelhardt wrote:
>> On Monday 2009-01-05 00:58, H. Peter Anvin wrote:
>>> I have pulled the x86 parts of the bzip2/lzma patchset into
>>> tip:x86/setup-lzma.  I would appreciate it if you could look at it and
>>> make sure it looks sane.  I have not added the ARM portions (patch 4),
>>> since those should go via the ARM tree, nor the capstone patch 5, which
>>> can only be added after the old code is removed from *all* remaining
>>> architectures.
>>
>> It seems to work well here. It would be cool if this finds its way
>> into mainline sometime.
>
> There were some build failures with "make randconfig" I seem 
> to recall.  Those need to be addressed soon if we're going to 
> be able to push this for .30.

Correct. I'll merge it into tip:master again and will report any 
breakages, should they occur.

	Ingo

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-17 22:08               ` Ingo Molnar
@ 2009-02-17 23:37                 ` Ingo Molnar
  2009-02-18  0:52                   ` H. Peter Anvin
  0 siblings, 1 reply; 50+ messages in thread
From: Ingo Molnar @ 2009-02-17 23:37 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Jan Engelhardt, Alain Knaff, the arch/x86 maintainers,
	linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1376 bytes --]


* Ingo Molnar <mingo@elte.hu> wrote:

> >>> I have pulled the x86 parts of the bzip2/lzma patchset 
> >>> into tip:x86/setup-lzma.  I would appreciate it if you 
> >>> could look at it and make sure it looks sane.  I have not 
> >>> added the ARM portions (patch 4), since those should go 
> >>> via the ARM tree, nor the capstone patch 5, which can only 
> >>> be added after the old code is removed from *all* 
> >>> remaining architectures.
> >>
> >> It seems to work well here. It would be cool if this finds 
> >> its way into mainline sometime.
> >
> > There were some build failures with "make randconfig" I seem 
> > to recall.  Those need to be addressed soon if we're going 
> > to be able to push this for .30.
> 
> Correct. I'll merge it into tip:master again and will report 
> any breakages, should they occur.

still fails:

[    3.196037] initcall inet_init+0x0/0x1e9 returned 0 after 101777 usecs           
[    3.202886] calling  af_unix_init+0x0/0x55 @ 1                                   
[    3.207461] NET: Registered protocol family 1                                    
[    3.211950] initcall af_unix_init+0x0/0x55 returned 0 after 4394 usecs           
[    3.218624] calling  populate_rootfs+0x0/0xd2 @ 1                                
[    3.223460] Kernel panic - not syncing: compression method gzip not configured   

config attached.

	Ingo

[-- Attachment #2: config --]
[-- Type: text/plain, Size: 65551 bytes --]

# head: 6a4ae18d
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.29-rc5
# Tue Feb 17 23:24:27 2009
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_FAST_CMPXCHG_LOCAL=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_GPIO=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_DEFAULT_IDLE=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ZONE_DMA32=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_AUDIT_ARCH=y
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_X86_64_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_TRAMPOLINE=y
# CONFIG_KTIME_SCALAR is not set
CONFIG_BOOTPARAM_SUPPORT=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_BOOT_ALLOWED4=y
# CONFIG_BROKEN_BOOT_ALLOWED3 is not set
# CONFIG_BROKEN_BOOT_EUROPE is not set
# CONFIG_BROKEN_BOOT_TITAN is not set
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
# CONFIG_TASK_XACCT is not set
# CONFIG_AUDIT is not set

#
# RCU Subsystem
#
CONFIG_CLASSIC_RCU=y
# CONFIG_TREE_RCU is not set
# CONFIG_PREEMPT_RCU is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_PREEMPT_RCU_TRACE is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=21
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
CONFIG_GROUP_SCHED=y
# CONFIG_FAIR_GROUP_SCHED is not set
# CONFIG_RT_GROUP_SCHED is not set
CONFIG_USER_SCHED=y
# CONFIG_CGROUP_SCHED is not set
# CONFIG_CGROUPS is not set
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y
CONFIG_RELAY=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
# CONFIG_RD_GZIP is not set
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
# CONFIG_UID16 is not set
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_EXTRA_PASS=y
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
# CONFIG_BUG is not set
CONFIG_ELF_CORE=y
# CONFIG_PCSPKR_PLATFORM is not set
CONFIG_COMPAT_BRK=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
# CONFIG_SIGNALFD is not set
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_HAVE_PERF_COUNTERS=y

#
# Performance Counters
#
CONFIG_PERF_COUNTERS=y
CONFIG_VM_EVENT_COUNTERS=y
# CONFIG_PCI_QUIRKS is not set
# CONFIG_SLUB_DEBUG is not set
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_PROFILING=y
CONFIG_TRACEPOINTS=y
CONFIG_MARKERS=y
CONFIG_OPROFILE=y
CONFIG_OPROFILE_IBS=y
CONFIG_HAVE_OPROFILE=y
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_HAVE_IOREMAP_PROT=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
# CONFIG_MODULES is not set
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_INTEGRITY is not set
CONFIG_BLOCK_COMPAT=y

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
# CONFIG_IOSCHED_CFQ is not set
CONFIG_DEFAULT_AS=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="anticipatory"
# CONFIG_FREEZER is not set

#
# Processor type and features
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_BOOTPARAM_NO_HZ_OFF=y
# CONFIG_HIGH_RES_TIMERS is not set
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_BOOTPARAM_HIGHRES_OFF=y
CONFIG_SMP_SUPPORT=y
CONFIG_X86_X2APIC=y
# CONFIG_SPARSE_IRQ is not set
# CONFIG_X86_MPPARSE is not set
# CONFIG_X86_EXTENDED_PLATFORM is not set
CONFIG_SCHED_OMIT_FRAME_POINTER=y
# CONFIG_PARAVIRT_GUEST is not set
CONFIG_MEMTEST=y
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
CONFIG_GENERIC_CPU=y
CONFIG_X86_CPU=y
CONFIG_X86_L1_CACHE_BYTES=64
CONFIG_X86_INTERNODE_CACHE_BYTES=64
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_TSC=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_PROCESSOR_SELECT=y
# CONFIG_CPU_SUP_INTEL is not set
CONFIG_CPU_SUP_AMD=y
CONFIG_CPU_SUP_CENTAUR_64=y
CONFIG_X86_DS=y
CONFIG_X86_PTRACE_BTS=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_DMI=y
# CONFIG_GART_IOMMU is not set
CONFIG_CALGARY_IOMMU=y
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
CONFIG_AMD_IOMMU=y
# CONFIG_AMD_IOMMU_STATS is not set
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
CONFIG_IOMMU_API=y
CONFIG_NR_CPUS=8
# CONFIG_SCHED_SMT is not set
# CONFIG_SCHED_MC is not set
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
CONFIG_X86_MCE=y
# CONFIG_X86_MCE_INTEL is not set
# CONFIG_X86_MCE_AMD is not set
CONFIG_I8K=y
# CONFIG_MICROCODE is not set
CONFIG_X86_MSR=y
CONFIG_X86_CPUID=y
CONFIG_UP_WANTED_1=y
CONFIG_UP_WANTED_2=y
# CONFIG_UP_WANTED is not set
CONFIG_SMP=y
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
# CONFIG_DIRECT_GBPAGES is not set
CONFIG_NUMA=y
CONFIG_K8_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_NODES_SPAN_OTHER_NODES=y
CONFIG_NUMA_EMU=y
CONFIG_NODES_SHIFT=6
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not set
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM=y
CONFIG_NEED_MULTIPLE_NODES=y
CONFIG_HAVE_MEMORY_PRESENT=y
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSEMEM_VMEMMAP=y
# CONFIG_MEMORY_HOTPLUG is not set
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_MIGRATION=y
CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_UNEVICTABLE_LRU=y
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
# CONFIG_X86_RESERVE_LOW_64K is not set
CONFIG_MTRR=y
CONFIG_MTRR_SANITIZER=y
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
CONFIG_X86_PAT=y
# CONFIG_EFI is not set
# CONFIG_SECCOMP is not set
# CONFIG_CC_STACKPROTECTOR is not set
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
# CONFIG_SCHED_HRTICK is not set
# CONFIG_KEXEC is not set
# CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x200000
CONFIG_RELOCATABLE=y
CONFIG_PHYSICAL_ALIGN=0x200000
CONFIG_HOTPLUG_CPU=y
CONFIG_COMPAT_VDSO=y
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE=""
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y

#
# Power management and ACPI options
#
CONFIG_PM=y
CONFIG_PM_DEBUG=y
CONFIG_PM_VERBOSE=y
# CONFIG_SUSPEND is not set
CONFIG_ACPI=y
CONFIG_ACPI_PROCFS=y
CONFIG_ACPI_PROCFS_POWER=y
# CONFIG_ACPI_SYSFS_POWER is not set
# CONFIG_ACPI_PROC_EVENT is not set
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_VIDEO=y
CONFIG_ACPI_FAN=y
CONFIG_ACPI_DOCK=y
# CONFIG_ACPI_PROCESSOR is not set
CONFIG_ACPI_NUMA=y
# CONFIG_ACPI_CUSTOM_DSDT is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
CONFIG_ACPI_DEBUG=y
# CONFIG_ACPI_DEBUG_FUNC_TRACE is not set
CONFIG_ACPI_PCI_SLOT=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=y
CONFIG_ACPI_SBS=y

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
# CONFIG_CPU_FREQ_STAT is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set

#
# CPUFreq processor drivers
#
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_P4_CLOCKMOD is not set

#
# shared options
#
# CONFIG_X86_SPEEDSTEP_LIB is not set
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y

#
# Memory power savings
#
CONFIG_I7300_IDLE_IOAT_CHANNEL=y
CONFIG_I7300_IDLE=y
CONFIG_BOOTPARAM_NMI_WATCHDOG_BIT_0=y
# CONFIG_BOOTPARAM_NOLAPIC_TIMER is not set
# CONFIG_BOOTPARAM_LAPIC is not set
# CONFIG_BOOTPARAM_HPET_DISABLE is not set
CONFIG_BOOTPARAM_IDLE_MWAIT=y
CONFIG_BOOTPARAM_IDLE_POLL=y
CONFIG_BOOTPARAM_HIGHMEM_512M=y
CONFIG_BOOTPARAM_NOPAT=y
CONFIG_BOOTPARAM_NOTSC=y
CONFIG_BOOTPARAM_PCI_NOMSI=y

#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_DOMAINS=y
# CONFIG_DMAR is not set
CONFIG_INTR_REMAP=y
CONFIG_PCIEPORTBUS=y
CONFIG_HOTPLUG_PCI_PCIE=y
# CONFIG_PCIEAER is not set
CONFIG_PCIEASPM=y
# CONFIG_PCIEASPM_DEBUG is not set
CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_PCI_MSI=y
# CONFIG_PCI_LEGACY is not set
CONFIG_PCI_STUB=y
CONFIG_HT_IRQ=y
CONFIG_ISA_DMA_API=y
CONFIG_K8_NB=y
CONFIG_PCCARD=y
CONFIG_PCMCIA_DEBUG=y
CONFIG_PCMCIA=y
# CONFIG_PCMCIA_LOAD_CIS is not set
CONFIG_PCMCIA_IOCTL=y
CONFIG_CARDBUS=y

#
# PC-card bridges
#
CONFIG_YENTA=y
CONFIG_YENTA_O2=y
CONFIG_YENTA_RICOH=y
# CONFIG_YENTA_TI is not set
# CONFIG_YENTA_TOSHIBA is not set
# CONFIG_PD6729 is not set
CONFIG_I82092=y
CONFIG_PCCARD_NONSTATIC=y
CONFIG_HOTPLUG_PCI=y
CONFIG_HOTPLUG_PCI_FAKE=y
CONFIG_HOTPLUG_PCI_ACPI=y
# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
CONFIG_HOTPLUG_PCI_CPCI=y
# CONFIG_HOTPLUG_PCI_CPCI_ZT5550 is not set
# CONFIG_HOTPLUG_PCI_CPCI_GENERIC is not set
# CONFIG_HOTPLUG_PCI_SHPC is not set

#
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
CONFIG_COMPAT_BINFMT_ELF=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
# CONFIG_HAVE_AOUT is not set
CONFIG_BINFMT_MISC=y
CONFIG_IA32_EMULATION=y
CONFIG_IA32_AOUT=y
CONFIG_COMPAT=y
CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
CONFIG_SYSVIPC_COMPAT=y
CONFIG_NET=y

#
# Networking options
#
CONFIG_COMPAT_NET_DEV_OPS=y
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
# CONFIG_XFRM_SUB_POLICY is not set
CONFIG_XFRM_MIGRATE=y
# CONFIG_XFRM_STATISTICS is not set
CONFIG_XFRM_IPCOMP=y
CONFIG_NET_KEY=y
CONFIG_NET_KEY_MIGRATE=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not set
CONFIG_IP_FIB_HASH=y
# CONFIG_IP_MULTIPLE_TABLES is not set
# CONFIG_IP_ROUTE_MULTIPATH is not set
# CONFIG_IP_ROUTE_VERBOSE is not set
# CONFIG_IP_PNP is not set
CONFIG_NET_IPIP=y
CONFIG_NET_IPGRE=y
CONFIG_NET_IPGRE_BROADCAST=y
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
# CONFIG_SYN_COOKIES is not set
CONFIG_INET_AH=y
# CONFIG_INET_ESP is not set
CONFIG_INET_IPCOMP=y
CONFIG_INET_XFRM_TUNNEL=y
CONFIG_INET_TUNNEL=y
CONFIG_INET_XFRM_MODE_TRANSPORT=y
CONFIG_INET_XFRM_MODE_TUNNEL=y
CONFIG_INET_XFRM_MODE_BEET=y
CONFIG_INET_LRO=y
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_TCP_CONG_WESTWOOD=y
CONFIG_TCP_CONG_HTCP=y
CONFIG_TCP_CONG_HSTCP=y
CONFIG_TCP_CONG_HYBLA=y
CONFIG_TCP_CONG_VEGAS=y
# CONFIG_TCP_CONG_SCALABLE is not set
CONFIG_TCP_CONG_LP=y
CONFIG_TCP_CONG_VENO=y
# CONFIG_TCP_CONG_YEAH is not set
CONFIG_TCP_CONG_ILLINOIS=y
# CONFIG_DEFAULT_BIC is not set
CONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_HTCP is not set
# CONFIG_DEFAULT_VEGAS is not set
# CONFIG_DEFAULT_WESTWOOD is not set
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
CONFIG_IPV6=y
CONFIG_IPV6_PRIVACY=y
CONFIG_IPV6_ROUTER_PREF=y
CONFIG_IPV6_ROUTE_INFO=y
# CONFIG_IPV6_OPTIMISTIC_DAD is not set
CONFIG_INET6_AH=y
CONFIG_INET6_ESP=y
CONFIG_INET6_IPCOMP=y
# CONFIG_IPV6_MIP6 is not set
CONFIG_INET6_XFRM_TUNNEL=y
CONFIG_INET6_TUNNEL=y
CONFIG_INET6_XFRM_MODE_TRANSPORT=y
# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
CONFIG_INET6_XFRM_MODE_BEET=y
CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=y
CONFIG_IPV6_SIT=y
CONFIG_IPV6_NDISC_NODETYPE=y
CONFIG_IPV6_TUNNEL=y
CONFIG_IPV6_MULTIPLE_TABLES=y
# CONFIG_IPV6_SUBTREES is not set
CONFIG_IPV6_MROUTE=y
CONFIG_IPV6_PIMSM_V2=y
CONFIG_NETLABEL=y
CONFIG_NETWORK_SECMARK=y
CONFIG_NETFILTER=y
CONFIG_NETFILTER_DEBUG=y
# CONFIG_NETFILTER_ADVANCED is not set

#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_LOG=y
CONFIG_NF_CONNTRACK=y
CONFIG_NF_CONNTRACK_SECMARK=y
CONFIG_NF_CONNTRACK_FTP=y
CONFIG_NF_CONNTRACK_IRC=y
# CONFIG_NF_CONNTRACK_SIP is not set
CONFIG_NF_CT_NETLINK=y
CONFIG_NETFILTER_XTABLES=y
# CONFIG_NETFILTER_XT_TARGET_CONNSECMARK is not set
# CONFIG_NETFILTER_XT_TARGET_MARK is not set
CONFIG_NETFILTER_XT_TARGET_NFLOG=y
CONFIG_NETFILTER_XT_TARGET_SECMARK=y
# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
# CONFIG_NETFILTER_XT_MATCH_MARK is not set
CONFIG_NETFILTER_XT_MATCH_POLICY=y
# CONFIG_NETFILTER_XT_MATCH_STATE is not set
CONFIG_IP_VS=y
CONFIG_IP_VS_IPV6=y
# CONFIG_IP_VS_DEBUG is not set
CONFIG_IP_VS_TAB_BITS=12

#
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
# CONFIG_IP_VS_PROTO_UDP is not set
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y

#
# IPVS scheduler
#
CONFIG_IP_VS_RR=y
# CONFIG_IP_VS_WRR is not set
CONFIG_IP_VS_LC=y
# CONFIG_IP_VS_WLC is not set
CONFIG_IP_VS_LBLC=y
# CONFIG_IP_VS_LBLCR is not set
CONFIG_IP_VS_DH=y
# CONFIG_IP_VS_SH is not set
# CONFIG_IP_VS_SED is not set
CONFIG_IP_VS_NQ=y

#
# IPVS application helper
#
CONFIG_IP_VS_FTP=y

#
# IP: Netfilter Configuration
#
CONFIG_NF_DEFRAG_IPV4=y
CONFIG_NF_CONNTRACK_IPV4=y
CONFIG_NF_CONNTRACK_PROC_COMPAT=y
CONFIG_IP_NF_IPTABLES=y
# CONFIG_IP_NF_FILTER is not set
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y
CONFIG_NF_NAT=y
CONFIG_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_NF_NAT_FTP=y
CONFIG_NF_NAT_IRC=y
# CONFIG_NF_NAT_TFTP is not set
# CONFIG_NF_NAT_AMANDA is not set
# CONFIG_NF_NAT_PPTP is not set
# CONFIG_NF_NAT_H323 is not set
# CONFIG_NF_NAT_SIP is not set
CONFIG_IP_NF_MANGLE=y

#
# IPv6: Netfilter Configuration
#
# CONFIG_NF_CONNTRACK_IPV6 is not set
CONFIG_IP6_NF_IPTABLES=y
CONFIG_IP6_NF_MATCH_IPV6HEADER=y
# CONFIG_IP6_NF_TARGET_LOG is not set
CONFIG_IP6_NF_FILTER=y
# CONFIG_IP6_NF_TARGET_REJECT is not set
CONFIG_IP6_NF_MANGLE=y
# CONFIG_IP_DCCP is not set
CONFIG_IP_SCTP=y
CONFIG_SCTP_DBG_MSG=y
CONFIG_SCTP_DBG_OBJCNT=y
# CONFIG_SCTP_HMAC_NONE is not set
# CONFIG_SCTP_HMAC_SHA1 is not set
CONFIG_SCTP_HMAC_MD5=y
CONFIG_TIPC=y
CONFIG_TIPC_ADVANCED=y
CONFIG_TIPC_ZONES=3
CONFIG_TIPC_CLUSTERS=1
CONFIG_TIPC_NODES=255
CONFIG_TIPC_SLAVE_NODES=0
CONFIG_TIPC_PORTS=8191
CONFIG_TIPC_LOG=0
# CONFIG_TIPC_DEBUG is not set
CONFIG_ATM=y
# CONFIG_ATM_CLIP is not set
# CONFIG_ATM_LANE is not set
CONFIG_ATM_BR2684=y
CONFIG_ATM_BR2684_IPFILTER=y
CONFIG_STP=y
CONFIG_GARP=y
CONFIG_BRIDGE=y
CONFIG_NET_DSA=y
CONFIG_NET_DSA_TAG_DSA=y
CONFIG_NET_DSA_TAG_EDSA=y
CONFIG_NET_DSA_TAG_TRAILER=y
CONFIG_NET_DSA_MV88E6XXX=y
CONFIG_NET_DSA_MV88E6060=y
CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
CONFIG_NET_DSA_MV88E6131=y
CONFIG_NET_DSA_MV88E6123_61_65=y
CONFIG_VLAN_8021Q=y
CONFIG_VLAN_8021Q_GVRP=y
CONFIG_DECNET=y
# CONFIG_DECNET_ROUTER is not set
CONFIG_LLC=y
# CONFIG_LLC2 is not set
CONFIG_IPX=y
CONFIG_IPX_INTERN=y
CONFIG_ATALK=y
CONFIG_DEV_APPLETALK=y
CONFIG_IPDDP=y
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP_DECAP=y
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
CONFIG_ECONET=y
CONFIG_ECONET_AUNUDP=y
# CONFIG_ECONET_NATIVE is not set
CONFIG_WAN_ROUTER=y
CONFIG_NET_SCHED=y

#
# Queueing/Scheduling
#
# CONFIG_NET_SCH_CBQ is not set
CONFIG_NET_SCH_HTB=y
# CONFIG_NET_SCH_HFSC is not set
CONFIG_NET_SCH_ATM=y
CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_MULTIQ is not set
# CONFIG_NET_SCH_RED is not set
# CONFIG_NET_SCH_SFQ is not set
# CONFIG_NET_SCH_TEQL is not set
CONFIG_NET_SCH_TBF=y
CONFIG_NET_SCH_GRED=y
CONFIG_NET_SCH_DSMARK=y
# CONFIG_NET_SCH_NETEM is not set
# CONFIG_NET_SCH_DRR is not set
CONFIG_NET_SCH_INGRESS=y

#
# Classification
#
CONFIG_NET_CLS=y
CONFIG_NET_CLS_BASIC=y
CONFIG_NET_CLS_TCINDEX=y
CONFIG_NET_CLS_ROUTE4=y
CONFIG_NET_CLS_ROUTE=y
# CONFIG_NET_CLS_FW is not set
# CONFIG_NET_CLS_U32 is not set
# CONFIG_NET_CLS_RSVP is not set
CONFIG_NET_CLS_RSVP6=y
CONFIG_NET_CLS_FLOW=y
# CONFIG_NET_EMATCH is not set
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=y
CONFIG_NET_ACT_GACT=y
CONFIG_GACT_PROB=y
CONFIG_NET_ACT_MIRRED=y
# CONFIG_NET_ACT_IPT is not set
CONFIG_NET_ACT_NAT=y
CONFIG_NET_ACT_PEDIT=y
CONFIG_NET_ACT_SIMP=y
CONFIG_NET_ACT_SKBEDIT=y
CONFIG_NET_SCH_FIFO=y
# CONFIG_DCB is not set

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
CONFIG_HAMRADIO=y

#
# Packet Radio protocols
#
CONFIG_AX25=y
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_NETROM=y
CONFIG_ROSE=y

#
# AX.25 network device drivers
#
CONFIG_MKISS=y
CONFIG_6PACK=y
CONFIG_BPQETHER=y
CONFIG_BAYCOM_SER_FDX=y
CONFIG_BAYCOM_SER_HDX=y
CONFIG_YAM=y
CONFIG_CAN=y
CONFIG_CAN_RAW=y
CONFIG_CAN_BCM=y

#
# CAN Device Drivers
#
# CONFIG_CAN_VCAN is not set
CONFIG_CAN_DEBUG_DEVICES=y
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_AF_RXRPC=y
CONFIG_AF_RXRPC_DEBUG=y
CONFIG_RXKAD=y
CONFIG_PHONET=y
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_CFG80211=y
CONFIG_CFG80211_REG_DEBUG=y
# CONFIG_NL80211 is not set
CONFIG_WIRELESS_OLD_REGULATORY=y
CONFIG_WIRELESS_EXT=y
# CONFIG_WIRELESS_EXT_SYSFS is not set
CONFIG_LIB80211=y
CONFIG_LIB80211_CRYPT_WEP=y
CONFIG_LIB80211_CRYPT_CCMP=y
CONFIG_LIB80211_CRYPT_TKIP=y
CONFIG_MAC80211=y

#
# Rate control algorithm selection
#
CONFIG_MAC80211_RC_PID=y
# CONFIG_MAC80211_RC_MINSTREL is not set
CONFIG_MAC80211_RC_DEFAULT_PID=y
# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set
CONFIG_MAC80211_RC_DEFAULT="pid"
# CONFIG_MAC80211_MESH is not set
CONFIG_MAC80211_LEDS=y
CONFIG_MAC80211_DEBUGFS=y
CONFIG_MAC80211_DEBUG_MENU=y
# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set
CONFIG_MAC80211_NOINLINE=y
CONFIG_MAC80211_VERBOSE_DEBUG=y
# CONFIG_MAC80211_HT_DEBUG is not set
# CONFIG_MAC80211_TKIP_DEBUG is not set
CONFIG_MAC80211_IBSS_DEBUG=y
CONFIG_MAC80211_VERBOSE_PS_DEBUG=y
CONFIG_MAC80211_DEBUG_COUNTERS=y
# CONFIG_MAC80211_VERBOSE_SPECT_MGMT_DEBUG is not set
CONFIG_WIMAX=y
CONFIG_WIMAX_DEBUG_LEVEL=8
CONFIG_RFKILL=y
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL_LEDS=y

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
# CONFIG_PARPORT is not set
CONFIG_PNP=y
# CONFIG_PNP_DEBUG_MESSAGES is not set

#
# Protocols
#
CONFIG_PNPACPI=y
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
CONFIG_BLK_CPQ_DA=y
CONFIG_BLK_CPQ_CISS_DA=y
CONFIG_CISS_SCSI_TAPE=y
CONFIG_BLK_DEV_DAC960=y
CONFIG_BLK_DEV_UMEM=y
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
CONFIG_BLK_DEV_NBD=y
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
CONFIG_CDROM_PKTCDVD=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
# CONFIG_ATA_OVER_ETH is not set
CONFIG_BLK_DEV_HD=y
CONFIG_MISC_DEVICES=y
# CONFIG_IBM_ASM is not set
CONFIG_PHANTOM=y
# CONFIG_SGI_IOC4 is not set
CONFIG_TIFM_CORE=y
CONFIG_TIFM_7XX1=y
# CONFIG_ICS932S401 is not set
CONFIG_ENCLOSURE_SERVICES=y
CONFIG_HP_ILO=y
CONFIG_C2PORT=y
CONFIG_C2PORT_DURAMAR_2150=y

#
# EEPROM support
#
CONFIG_EEPROM_AT24=y
CONFIG_EEPROM_AT25=y
CONFIG_EEPROM_LEGACY=y
CONFIG_EEPROM_93CX6=y
CONFIG_HAVE_IDE=y

#
# SCSI device support
#
CONFIG_RAID_ATTRS=y
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=y
CONFIG_SCSI_NETLINK=y
# CONFIG_SCSI_PROC_FS is not set

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
# CONFIG_CHR_DEV_SCH is not set
# CONFIG_SCSI_ENCLOSURE is not set

#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
# CONFIG_SCSI_LOGGING is not set
CONFIG_SCSI_SCAN_ASYNC=y

#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=y
CONFIG_SCSI_FC_ATTRS=y
CONFIG_SCSI_FC_TGT_ATTRS=y
CONFIG_SCSI_ISCSI_ATTRS=y
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
CONFIG_ISCSI_TCP=y
CONFIG_SCSI_CXGB3_ISCSI=y
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
CONFIG_SCSI_3W_9XXX=y
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AACRAID is not set
CONFIG_SCSI_AIC7XXX=y
CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
CONFIG_AIC7XXX_RESET_DELAY_MS=5000
CONFIG_AIC7XXX_DEBUG_ENABLE=y
CONFIG_AIC7XXX_DEBUG_MASK=0
# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
CONFIG_SCSI_AIC7XXX_OLD=y
CONFIG_SCSI_AIC79XX=y
CONFIG_AIC79XX_CMDS_PER_DEVICE=32
CONFIG_AIC79XX_RESET_DELAY_MS=5000
CONFIG_AIC79XX_DEBUG_ENABLE=y
CONFIG_AIC79XX_DEBUG_MASK=0
CONFIG_AIC79XX_REG_PRETTY_PRINT=y
CONFIG_SCSI_DPT_I2O=y
CONFIG_SCSI_ADVANSYS=y
CONFIG_SCSI_ARCMSR=y
# CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set
CONFIG_MEGARAID_SAS=y
CONFIG_SCSI_HPTIOP=y
CONFIG_SCSI_BUSLOGIC=y
CONFIG_LIBFC=y
CONFIG_FCOE=y
CONFIG_SCSI_DMX3191D=y
CONFIG_SCSI_EATA=y
CONFIG_SCSI_EATA_TAGGED_QUEUE=y
CONFIG_SCSI_EATA_LINKED_COMMANDS=y
CONFIG_SCSI_EATA_MAX_TAGS=16
CONFIG_SCSI_FUTURE_DOMAIN=y
CONFIG_SCSI_GDTH=y
CONFIG_SCSI_IPS=y
CONFIG_SCSI_INITIO=y
CONFIG_SCSI_INIA100=y
CONFIG_SCSI_STEX=y
CONFIG_SCSI_SYM53C8XX_2=y
CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
CONFIG_SCSI_SYM53C8XX_MMIO=y
CONFIG_SCSI_IPR=y
# CONFIG_SCSI_IPR_TRACE is not set
# CONFIG_SCSI_IPR_DUMP is not set
CONFIG_SCSI_QLOGIC_1280=y
CONFIG_SCSI_QLA_FC=y
CONFIG_SCSI_QLA_ISCSI=y
CONFIG_SCSI_LPFC=y
# CONFIG_SCSI_LPFC_DEBUG_FS is not set
# CONFIG_SCSI_DC395x is not set
CONFIG_SCSI_DC390T=y
# CONFIG_SCSI_SRP is not set
CONFIG_SCSI_LOWLEVEL_PCMCIA=y
CONFIG_SCSI_DH=y
CONFIG_SCSI_DH_RDAC=y
CONFIG_SCSI_DH_HP_SW=y
# CONFIG_SCSI_DH_EMC is not set
# CONFIG_SCSI_DH_ALUA is not set
CONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
CONFIG_ATA_ACPI=y
CONFIG_SATA_PMP=y
CONFIG_SATA_AHCI=y
CONFIG_SATA_SIL24=y
CONFIG_ATA_SFF=y
CONFIG_SATA_SVW=y
CONFIG_ATA_PIIX=y
CONFIG_SATA_MV=y
CONFIG_SATA_NV=y
CONFIG_PDC_ADMA=y
CONFIG_SATA_QSTOR=y
CONFIG_SATA_PROMISE=y
# CONFIG_SATA_SX4 is not set
# CONFIG_SATA_SIL is not set
CONFIG_SATA_SIS=y
CONFIG_SATA_ULI=y
CONFIG_SATA_VIA=y
# CONFIG_SATA_VITESSE is not set
CONFIG_SATA_INIC162X=y
# CONFIG_PATA_ACPI is not set
CONFIG_PATA_ALI=y
CONFIG_PATA_AMD=y
# CONFIG_PATA_ARTOP is not set
# CONFIG_PATA_ATIIXP is not set
CONFIG_PATA_CMD640_PCI=y
CONFIG_PATA_CMD64X=y
CONFIG_PATA_CS5520=y
CONFIG_PATA_CS5530=y
CONFIG_PATA_CYPRESS=y
CONFIG_PATA_EFAR=y
# CONFIG_ATA_GENERIC is not set
CONFIG_PATA_HPT366=y
# CONFIG_PATA_HPT37X is not set
CONFIG_PATA_HPT3X2N=y
# CONFIG_PATA_HPT3X3 is not set
CONFIG_PATA_IT821X=y
CONFIG_PATA_IT8213=y
# CONFIG_PATA_JMICRON is not set
# CONFIG_PATA_TRIFLEX is not set
CONFIG_PATA_MARVELL=y
CONFIG_PATA_MPIIX=y
CONFIG_PATA_OLDPIIX=y
CONFIG_PATA_NETCELL=y
# CONFIG_PATA_NINJA32 is not set
CONFIG_PATA_NS87410=y
CONFIG_PATA_NS87415=y
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set
CONFIG_PATA_PCMCIA=y
CONFIG_PATA_PDC_OLD=y
CONFIG_PATA_RADISYS=y
# CONFIG_PATA_RZ1000 is not set
CONFIG_PATA_SC1200=y
CONFIG_PATA_SERVERWORKS=y
CONFIG_PATA_PDC2027X=y
CONFIG_PATA_SIL680=y
CONFIG_PATA_SIS=y
CONFIG_PATA_VIA=y
CONFIG_PATA_WINBOND=y
CONFIG_PATA_PLATFORM=y
CONFIG_PATA_SCH=y
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
CONFIG_BLK_DEV_DM=y
CONFIG_DM_DEBUG=y
CONFIG_DM_CRYPT=y
CONFIG_DM_SNAPSHOT=y
CONFIG_DM_MIRROR=y
# CONFIG_DM_ZERO is not set
CONFIG_DM_MULTIPATH=y
CONFIG_DM_DELAY=y
# CONFIG_DM_UEVENT is not set
CONFIG_FUSION=y
CONFIG_FUSION_SPI=y
CONFIG_FUSION_FC=y
# CONFIG_FUSION_SAS is not set
CONFIG_FUSION_MAX_SGE=128
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_LAN is not set
CONFIG_FUSION_LOGGING=y

#
# IEEE 1394 (FireWire) support
#

#
# Enable only one of the two stacks, unless you know what you are doing
#
# CONFIG_FIREWIRE is not set
CONFIG_IEEE1394=y
# CONFIG_IEEE1394_OHCI1394 is not set
# CONFIG_IEEE1394_PCILYNX is not set
CONFIG_IEEE1394_SBP2=y
# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
CONFIG_IEEE1394_ETH1394=y
CONFIG_IEEE1394_RAWIO=y
CONFIG_IEEE1394_VERBOSEDEBUG=y
CONFIG_I2O=y
CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
CONFIG_I2O_EXT_ADAPTEC=y
CONFIG_I2O_EXT_ADAPTEC_DMA64=y
# CONFIG_I2O_BUS is not set
# CONFIG_I2O_BLOCK is not set
CONFIG_I2O_SCSI=y
CONFIG_I2O_PROC=y
CONFIG_MACINTOSH_DRIVERS=y
CONFIG_MAC_EMUMOUSEBTN=y
CONFIG_NETDEVICES=y
# CONFIG_IFB is not set
CONFIG_DUMMY=y
# CONFIG_BONDING is not set
CONFIG_MACVLAN=y
# CONFIG_EQUALIZER is not set
CONFIG_TUN=y
CONFIG_VETH=y
# CONFIG_NET_SB1000 is not set
CONFIG_ARCNET=y
CONFIG_ARCNET_1201=y
# CONFIG_ARCNET_1051 is not set
CONFIG_ARCNET_RAW=y
# CONFIG_ARCNET_CAP is not set
CONFIG_ARCNET_COM90xx=y
# CONFIG_ARCNET_COM90xxIO is not set
# CONFIG_ARCNET_RIM_I is not set
# CONFIG_ARCNET_COM20020 is not set
CONFIG_PHYLIB=y

#
# MII PHY device drivers
#
CONFIG_MARVELL_PHY=y
CONFIG_DAVICOM_PHY=y
CONFIG_QSEMI_PHY=y
CONFIG_LXT_PHY=y
CONFIG_CICADA_PHY=y
# CONFIG_VITESSE_PHY is not set
CONFIG_SMSC_PHY=y
CONFIG_BROADCOM_PHY=y
# CONFIG_ICPLUS_PHY is not set
CONFIG_REALTEK_PHY=y
CONFIG_NATIONAL_PHY=y
CONFIG_STE10XP=y
CONFIG_LSI_ET1011C_PHY=y
# CONFIG_FIXED_PHY is not set
CONFIG_MDIO_BITBANG=y
CONFIG_MDIO_GPIO=y
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
CONFIG_CASSINI=y
CONFIG_NET_VENDOR_3COM=y
CONFIG_VORTEX=y
# CONFIG_TYPHOON is not set
# CONFIG_ENC28J60 is not set
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set
CONFIG_AMD8111_ETH=y
CONFIG_ADAPTEC_STARFIRE=y
# CONFIG_B44 is not set
CONFIG_FORCEDETH=y
CONFIG_FORCEDETH_NAPI=y
CONFIG_E100=y
CONFIG_FEALNX=y
CONFIG_NATSEMI=y
CONFIG_NE2K_PCI=y
# CONFIG_8139CP is not set
CONFIG_8139TOO=y
CONFIG_8139TOO_PIO=y
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139TOO_8129 is not set
CONFIG_8139_OLD_RX_RESET=y
# CONFIG_R6040 is not set
CONFIG_SIS900=y
CONFIG_EPIC100=y
CONFIG_SMSC9420=y
# CONFIG_SUNDANCE is not set
CONFIG_TLAN=y
CONFIG_VIA_RHINE=y
# CONFIG_VIA_RHINE_MMIO is not set
CONFIG_SC92031=y
# CONFIG_ATL2 is not set
CONFIG_NETDEV_1000=y
CONFIG_ACENIC=y
# CONFIG_ACENIC_OMIT_TIGON_I is not set
CONFIG_DL2K=y
# CONFIG_E1000 is not set
CONFIG_E1000E=y
CONFIG_IP1000=y
CONFIG_IGB=y
CONFIG_IGB_LRO=y
CONFIG_NS83820=y
# CONFIG_HAMACHI is not set
CONFIG_YELLOWFIN=y
CONFIG_R8169=y
CONFIG_R8169_VLAN=y
CONFIG_SIS190=y
CONFIG_SKGE=y
CONFIG_SKGE_DEBUG=y
CONFIG_SKY2=y
CONFIG_SKY2_DEBUG=y
CONFIG_VIA_VELOCITY=y
CONFIG_TIGON3=y
# CONFIG_BNX2 is not set
CONFIG_QLA3XXX=y
CONFIG_ATL1=y
# CONFIG_ATL1E is not set
CONFIG_JME=y
CONFIG_NETDEV_10000=y
# CONFIG_CHELSIO_T1 is not set
CONFIG_CHELSIO_T3_DEPENDS=y
CONFIG_CHELSIO_T3=y
CONFIG_ENIC=y
# CONFIG_IXGBE is not set
CONFIG_IXGB=y
CONFIG_S2IO=y
CONFIG_MYRI10GE=y
# CONFIG_NIU is not set
CONFIG_MLX4_EN=y
CONFIG_MLX4_CORE=y
CONFIG_MLX4_DEBUG=y
CONFIG_TEHUTI=y
CONFIG_BNX2X=y
CONFIG_QLGE=y
CONFIG_SFC=y
CONFIG_TR=y
CONFIG_IBMOL=y
# CONFIG_3C359 is not set
CONFIG_TMS380TR=y
# CONFIG_TMSPCI is not set
CONFIG_ABYSS=y

#
# Wireless LAN
#
CONFIG_WLAN_PRE80211=y
CONFIG_STRIP=y
CONFIG_PCMCIA_WAVELAN=y
CONFIG_PCMCIA_NETWAVE=y
CONFIG_WLAN_80211=y
CONFIG_PCMCIA_RAYCS=y
CONFIG_LIBERTAS=y
# CONFIG_LIBERTAS_USB is not set
CONFIG_LIBERTAS_CS=y
CONFIG_LIBERTAS_DEBUG=y
CONFIG_LIBERTAS_THINFIRM=y
# CONFIG_LIBERTAS_THINFIRM_USB is not set
CONFIG_AIRO=y
CONFIG_HERMES=y
CONFIG_HERMES_CACHE_FW_ON_INIT=y
# CONFIG_PLX_HERMES is not set
# CONFIG_TMD_HERMES is not set
CONFIG_NORTEL_HERMES=y
CONFIG_PCI_HERMES=y
# CONFIG_PCMCIA_HERMES is not set
# CONFIG_PCMCIA_SPECTRUM is not set
CONFIG_ATMEL=y
CONFIG_PCI_ATMEL=y
CONFIG_PCMCIA_ATMEL=y
# CONFIG_AIRO_CS is not set
CONFIG_PCMCIA_WL3501=y
CONFIG_PRISM54=y
CONFIG_USB_ZD1201=y
# CONFIG_USB_NET_RNDIS_WLAN is not set
CONFIG_RTL8180=y
# CONFIG_RTL8187 is not set
CONFIG_ADM8211=y
CONFIG_MAC80211_HWSIM=y
# CONFIG_P54_COMMON is not set
CONFIG_ATH5K=y
# CONFIG_ATH5K_DEBUG is not set
# CONFIG_ATH9K is not set
CONFIG_IPW2100=y
CONFIG_IPW2100_MONITOR=y
CONFIG_IPW2100_DEBUG=y
CONFIG_IPW2200=y
CONFIG_IPW2200_MONITOR=y
CONFIG_IPW2200_RADIOTAP=y
CONFIG_IPW2200_PROMISCUOUS=y
CONFIG_IPW2200_QOS=y
# CONFIG_IPW2200_DEBUG is not set
CONFIG_LIBIPW=y
CONFIG_LIBIPW_DEBUG=y
CONFIG_IWLWIFI=y
# CONFIG_IWLCORE is not set
# CONFIG_IWLWIFI_LEDS is not set
# CONFIG_IWLAGN is not set
CONFIG_IWL3945=y
CONFIG_IWL3945_RFKILL=y
CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y
CONFIG_IWL3945_LEDS=y
CONFIG_IWL3945_DEBUG=y
# CONFIG_HOSTAP is not set
CONFIG_B43=y
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
# CONFIG_B43_PCMCIA is not set
CONFIG_B43_LEDS=y
CONFIG_B43_RFKILL=y
CONFIG_B43_DEBUG=y
# CONFIG_B43_FORCE_PIO is not set
# CONFIG_B43LEGACY is not set
# CONFIG_ZD1211RW is not set

#
# WiMAX Wireless Broadband devices
#

#
# Enable MMC support to see WiMAX SDIO drivers
#

#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
CONFIG_USB_PEGASUS=y
# CONFIG_USB_RTL8150 is not set
CONFIG_USB_USBNET=y
# CONFIG_USB_NET_AX8817X is not set
CONFIG_USB_NET_CDCETHER=y
# CONFIG_USB_NET_DM9601 is not set
# CONFIG_USB_NET_SMSC95XX is not set
CONFIG_USB_NET_GL620A=y
# CONFIG_USB_NET_NET1080 is not set
CONFIG_USB_NET_PLUSB=y
# CONFIG_USB_NET_MCS7830 is not set
CONFIG_USB_NET_RNDIS_HOST=y
# CONFIG_USB_NET_CDC_SUBSET is not set
CONFIG_USB_NET_ZAURUS=y
# CONFIG_USB_HSO is not set
CONFIG_NET_PCMCIA=y
CONFIG_PCMCIA_3C589=y
# CONFIG_PCMCIA_3C574 is not set
# CONFIG_PCMCIA_FMVJ18X is not set
CONFIG_PCMCIA_PCNET=y
CONFIG_PCMCIA_NMCLAN=y
# CONFIG_PCMCIA_SMC91C92 is not set
CONFIG_PCMCIA_XIRC2PS=y
CONFIG_PCMCIA_AXNET=y
# CONFIG_PCMCIA_IBMTR is not set
CONFIG_WAN=y
# CONFIG_LANMEDIA is not set
CONFIG_HDLC=y
CONFIG_HDLC_RAW=y
CONFIG_HDLC_RAW_ETH=y
CONFIG_HDLC_CISCO=y
CONFIG_HDLC_FR=y
# CONFIG_HDLC_PPP is not set

#
# X.25/LAPB support is disabled
#
# CONFIG_PCI200SYN is not set
# CONFIG_WANXL is not set
# CONFIG_PC300TOO is not set
CONFIG_FARSYNC=y
# CONFIG_DLCI is not set
# CONFIG_WAN_ROUTER_DRIVERS is not set
CONFIG_SBNI=y
# CONFIG_SBNI_MULTILINE is not set
CONFIG_ATM_DRIVERS=y
CONFIG_ATM_DUMMY=y
# CONFIG_ATM_TCP is not set
CONFIG_ATM_LANAI=y
# CONFIG_ATM_ENI is not set
CONFIG_ATM_FIRESTREAM=y
CONFIG_ATM_ZATM=y
CONFIG_ATM_ZATM_DEBUG=y
CONFIG_ATM_IDT77252=y
# CONFIG_ATM_IDT77252_DEBUG is not set
CONFIG_ATM_IDT77252_RCV_ALL=y
CONFIG_ATM_IDT77252_USE_SUNI=y
# CONFIG_ATM_AMBASSADOR is not set
CONFIG_ATM_HORIZON=y
CONFIG_ATM_HORIZON_DEBUG=y
CONFIG_ATM_IA=y
CONFIG_ATM_IA_DEBUG=y
# CONFIG_ATM_FORE200E is not set
CONFIG_ATM_HE=y
CONFIG_ATM_HE_USE_SUNI=y
CONFIG_ATM_SOLOS=y
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
CONFIG_PPP=y
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=y
CONFIG_PPP_SYNC_TTY=y
# CONFIG_PPP_DEFLATE is not set
# CONFIG_PPP_BSDCOMP is not set
CONFIG_PPP_MPPE=y
CONFIG_PPPOE=y
CONFIG_PPPOATM=y
# CONFIG_PPPOL2TP is not set
# CONFIG_SLIP is not set
CONFIG_SLHC=y
CONFIG_NET_FC=y
CONFIG_NETCONSOLE=y
# CONFIG_NETCONSOLE_DYNAMIC is not set
CONFIG_NETPOLL=y
CONFIG_NETPOLL_TRAP=y
CONFIG_NET_POLL_CONTROLLER=y
CONFIG_ISDN=y
CONFIG_ISDN_I4L=y
CONFIG_ISDN_PPP=y
CONFIG_ISDN_PPP_VJ=y
CONFIG_ISDN_MPP=y
CONFIG_IPPP_FILTER=y
CONFIG_ISDN_PPP_BSDCOMP=y
CONFIG_ISDN_AUDIO=y
CONFIG_ISDN_TTY_FAX=y

#
# ISDN feature submodules
#
CONFIG_ISDN_DIVERSION=y

#
# ISDN4Linux hardware drivers
#

#
# Passive cards
#
CONFIG_ISDN_DRV_HISAX=y

#
# D-channel protocol features
#
CONFIG_HISAX_EURO=y
CONFIG_DE_AOC=y
CONFIG_HISAX_NO_SENDCOMPLETE=y
CONFIG_HISAX_NO_LLC=y
# CONFIG_HISAX_NO_KEYPAD is not set
# CONFIG_HISAX_1TR6 is not set
# CONFIG_HISAX_NI1 is not set
CONFIG_HISAX_MAX_CARDS=8

#
# HiSax supported cards
#
# CONFIG_HISAX_16_3 is not set
CONFIG_HISAX_S0BOX=y
CONFIG_HISAX_FRITZPCI=y
CONFIG_HISAX_AVM_A1_PCMCIA=y
CONFIG_HISAX_ELSA=y
CONFIG_HISAX_DIEHLDIVA=y
CONFIG_HISAX_SEDLBAUER=y
CONFIG_HISAX_NICCY=y
# CONFIG_HISAX_GAZEL is not set
CONFIG_HISAX_HFC_SX=y
# CONFIG_HISAX_DEBUG is not set

#
# HiSax PCMCIA card service modules
#
CONFIG_HISAX_SEDLBAUER_CS=y
# CONFIG_HISAX_ELSA_CS is not set
CONFIG_HISAX_AVM_A1_CS=y

#
# HiSax sub driver modules
#
# CONFIG_HISAX_ST5481 is not set
CONFIG_HISAX_HFCUSB=y
CONFIG_HISAX_HFC4S8S=y

#
# Active cards
#
CONFIG_ISDN_DRV_GIGASET=y
# CONFIG_GIGASET_BASE is not set
CONFIG_GIGASET_M105=y
CONFIG_GIGASET_M101=y
# CONFIG_GIGASET_DEBUG is not set
CONFIG_GIGASET_UNDOCREQ=y
# CONFIG_ISDN_CAPI is not set
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=y
CONFIG_INPUT_POLLDEV=y

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_KEYBOARD_SUNKBD=y
CONFIG_KEYBOARD_LKKBD=y
CONFIG_KEYBOARD_XTKBD=y
CONFIG_KEYBOARD_NEWTON=y
CONFIG_KEYBOARD_STOWAWAY=y
CONFIG_KEYBOARD_GPIO=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
# CONFIG_MOUSE_PS2_LOGIPS2PP is not set
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
CONFIG_MOUSE_PS2_ELANTECH=y
CONFIG_MOUSE_PS2_TOUCHKIT=y
# CONFIG_MOUSE_SERIAL is not set
CONFIG_MOUSE_APPLETOUCH=y
CONFIG_MOUSE_BCM5974=y
CONFIG_MOUSE_VSXXXAA=y
CONFIG_MOUSE_GPIO=y
CONFIG_INPUT_JOYSTICK=y
CONFIG_JOYSTICK_ANALOG=y
CONFIG_JOYSTICK_A3D=y
CONFIG_JOYSTICK_ADI=y
CONFIG_JOYSTICK_COBRA=y
CONFIG_JOYSTICK_GF2K=y
# CONFIG_JOYSTICK_GRIP is not set
CONFIG_JOYSTICK_GRIP_MP=y
# CONFIG_JOYSTICK_GUILLEMOT is not set
# CONFIG_JOYSTICK_INTERACT is not set
CONFIG_JOYSTICK_SIDEWINDER=y
CONFIG_JOYSTICK_TMDC=y
CONFIG_JOYSTICK_IFORCE=y
# CONFIG_JOYSTICK_IFORCE_USB is not set
CONFIG_JOYSTICK_IFORCE_232=y
CONFIG_JOYSTICK_WARRIOR=y
CONFIG_JOYSTICK_MAGELLAN=y
# CONFIG_JOYSTICK_SPACEORB is not set
CONFIG_JOYSTICK_SPACEBALL=y
# CONFIG_JOYSTICK_STINGER is not set
CONFIG_JOYSTICK_TWIDJOY=y
# CONFIG_JOYSTICK_ZHENHUA is not set
# CONFIG_JOYSTICK_JOYDUMP is not set
CONFIG_JOYSTICK_XPAD=y
# CONFIG_JOYSTICK_XPAD_FF is not set
CONFIG_JOYSTICK_XPAD_LEDS=y
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_APANEL=y
CONFIG_INPUT_ATLAS_BTNS=y
CONFIG_INPUT_ATI_REMOTE=y
CONFIG_INPUT_ATI_REMOTE2=y
CONFIG_INPUT_KEYSPAN_REMOTE=y
# CONFIG_INPUT_POWERMATE is not set
# CONFIG_INPUT_YEALINK is not set
# CONFIG_INPUT_CM109 is not set
CONFIG_INPUT_UINPUT=y
CONFIG_INPUT_PCF50633_PMU=y

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_CT82C710=y
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_RAW=y
CONFIG_GAMEPORT=y
# CONFIG_GAMEPORT_NS558 is not set
# CONFIG_GAMEPORT_L4 is not set
# CONFIG_GAMEPORT_EMU10K1 is not set
CONFIG_GAMEPORT_FM801=y

#
# Character devices
#
CONFIG_VT=y
# CONFIG_CONSOLE_TRANSLATIONS is not set
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
CONFIG_DEVKMEM=y
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_NOZOMI is not set

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_FIX_EARLYCON_MEM=y
# CONFIG_SERIAL_8250_PCI is not set
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_CS=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
CONFIG_IPMI_HANDLER=y
CONFIG_IPMI_PANIC_EVENT=y
CONFIG_IPMI_PANIC_STRING=y
CONFIG_IPMI_DEVICE_INTERFACE=y
CONFIG_IPMI_SI=y
# CONFIG_IPMI_WATCHDOG is not set
# CONFIG_IPMI_POWEROFF is not set
CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_INTEL is not set
CONFIG_HW_RANDOM_AMD=y
CONFIG_NVRAM=y
CONFIG_RTC=y
# CONFIG_R3964 is not set
CONFIG_APPLICOM=y

#
# PCMCIA character devices
#
# CONFIG_SYNCLINK_CS is not set
CONFIG_CARDMAN_4000=y
CONFIG_CARDMAN_4040=y
CONFIG_IPWIRELESS=y
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_RAW_DRIVER is not set
CONFIG_HPET=y
CONFIG_HPET_MMAP=y
CONFIG_HANGCHECK_TIMER=y
CONFIG_TCG_TPM=y
CONFIG_TCG_TIS=y
# CONFIG_TCG_NSC is not set
CONFIG_TCG_ATMEL=y
# CONFIG_TCG_INFINEON is not set
CONFIG_TELCLOCK=y
CONFIG_DEVPORT=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_ALGOBIT=y

#
# I2C Hardware Bus support
#

#
# PC SMBus host controller drivers
#
# CONFIG_I2C_ALI1535 is not set
# CONFIG_I2C_ALI1563 is not set
# CONFIG_I2C_ALI15X3 is not set
CONFIG_I2C_AMD756=y
CONFIG_I2C_AMD8111=y
# CONFIG_I2C_I801 is not set
# CONFIG_I2C_ISCH is not set
CONFIG_I2C_PIIX4=y
# CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
CONFIG_I2C_SIS96X=y
CONFIG_I2C_VIA=y
CONFIG_I2C_VIAPRO=y

#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
CONFIG_I2C_GPIO=y
CONFIG_I2C_OCORES=y
CONFIG_I2C_SIMTEC=y

#
# External I2C/SMBus adapter drivers
#
CONFIG_I2C_PARPORT_LIGHT=y
CONFIG_I2C_TAOS_EVM=y
CONFIG_I2C_TINY_USB=y

#
# Graphics adapter I2C/DDC channel drivers
#
# CONFIG_I2C_VOODOO3 is not set

#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_PCA_PLATFORM is not set

#
# Miscellaneous I2C Chip support
#
# CONFIG_DS1682 is not set
CONFIG_SENSORS_PCA9539=y
CONFIG_SENSORS_PCF8591=y
CONFIG_SENSORS_MAX6875=y
# CONFIG_SENSORS_TSL2550 is not set
CONFIG_I2C_DEBUG_CORE=y
# CONFIG_I2C_DEBUG_ALGO is not set
CONFIG_I2C_DEBUG_BUS=y
# CONFIG_I2C_DEBUG_CHIP is not set
CONFIG_SPI=y
CONFIG_SPI_MASTER=y

#
# SPI Master Controller Drivers
#
CONFIG_SPI_BITBANG=y
CONFIG_SPI_GPIO=y

#
# SPI Protocol Masters
#
# CONFIG_SPI_SPIDEV is not set
# CONFIG_SPI_TLE62X0 is not set
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_GPIOLIB=y
# CONFIG_GPIO_SYSFS is not set

#
# Memory mapped GPIO expanders:
#

#
# I2C GPIO expanders:
#
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_PCA953X is not set
CONFIG_GPIO_PCF857X=y
# CONFIG_GPIO_TWL4030 is not set

#
# PCI GPIO expanders:
#
CONFIG_GPIO_BT8XX=y

#
# SPI GPIO expanders:
#
# CONFIG_GPIO_MAX7301 is not set
CONFIG_GPIO_MCP23S08=y
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
CONFIG_HWMON=y
CONFIG_HWMON_VID=y
# CONFIG_SENSORS_ABITUGURU is not set
CONFIG_SENSORS_ABITUGURU3=y
# CONFIG_SENSORS_AD7414 is not set
CONFIG_SENSORS_AD7418=y
# CONFIG_SENSORS_ADCXX is not set
# CONFIG_SENSORS_ADM1021 is not set
CONFIG_SENSORS_ADM1025=y
CONFIG_SENSORS_ADM1026=y
CONFIG_SENSORS_ADM1029=y
CONFIG_SENSORS_ADM1031=y
CONFIG_SENSORS_ADM9240=y
CONFIG_SENSORS_ADT7462=y
CONFIG_SENSORS_ADT7470=y
CONFIG_SENSORS_ADT7473=y
CONFIG_SENSORS_ADT7475=y
CONFIG_SENSORS_K8TEMP=y
# CONFIG_SENSORS_ASB100 is not set
CONFIG_SENSORS_ATXP1=y
# CONFIG_SENSORS_DS1621 is not set
CONFIG_SENSORS_I5K_AMB=y
CONFIG_SENSORS_F71805F=y
CONFIG_SENSORS_F71882FG=y
CONFIG_SENSORS_F75375S=y
# CONFIG_SENSORS_FSCHER is not set
CONFIG_SENSORS_FSCPOS=y
CONFIG_SENSORS_FSCHMD=y
# CONFIG_SENSORS_GL518SM is not set
CONFIG_SENSORS_GL520SM=y
CONFIG_SENSORS_CORETEMP=y
# CONFIG_SENSORS_IBMAEM is not set
CONFIG_SENSORS_IBMPEX=y
CONFIG_SENSORS_IT87=y
CONFIG_SENSORS_LM63=y
CONFIG_SENSORS_LM70=y
CONFIG_SENSORS_LM75=y
CONFIG_SENSORS_LM77=y
CONFIG_SENSORS_LM78=y
CONFIG_SENSORS_LM80=y
CONFIG_SENSORS_LM83=y
# CONFIG_SENSORS_LM85 is not set
CONFIG_SENSORS_LM87=y
CONFIG_SENSORS_LM90=y
# CONFIG_SENSORS_LM92 is not set
CONFIG_SENSORS_LM93=y
CONFIG_SENSORS_LTC4245=y
CONFIG_SENSORS_MAX1111=y
CONFIG_SENSORS_MAX1619=y
CONFIG_SENSORS_MAX6650=y
CONFIG_SENSORS_PC87360=y
CONFIG_SENSORS_PC87427=y
CONFIG_SENSORS_SIS5595=y
CONFIG_SENSORS_DME1737=y
CONFIG_SENSORS_SMSC47M1=y
# CONFIG_SENSORS_SMSC47M192 is not set
CONFIG_SENSORS_SMSC47B397=y
CONFIG_SENSORS_ADS7828=y
# CONFIG_SENSORS_THMC50 is not set
CONFIG_SENSORS_VIA686A=y
# CONFIG_SENSORS_VT1211 is not set
CONFIG_SENSORS_VT8231=y
CONFIG_SENSORS_W83781D=y
CONFIG_SENSORS_W83791D=y
CONFIG_SENSORS_W83792D=y
CONFIG_SENSORS_W83793=y
# CONFIG_SENSORS_W83L785TS is not set
CONFIG_SENSORS_W83L786NG=y
CONFIG_SENSORS_W83627HF=y
# CONFIG_SENSORS_W83627EHF is not set
CONFIG_SENSORS_HDAPS=y
CONFIG_SENSORS_LIS3LV02D=y
CONFIG_SENSORS_APPLESMC=y
CONFIG_HWMON_DEBUG_CHIP=y
CONFIG_THERMAL=y
CONFIG_THERMAL_HWMON=y
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_NOWAYOUT=y

#
# Watchdog Device Drivers
#
CONFIG_SOFT_WATCHDOG=y
# CONFIG_ACQUIRE_WDT is not set
CONFIG_ADVANTECH_WDT=y
CONFIG_ALIM1535_WDT=y
CONFIG_ALIM7101_WDT=y
CONFIG_SC520_WDT=y
# CONFIG_IB700_WDT is not set
CONFIG_IBMASR=y
# CONFIG_WAFER_WDT is not set
# CONFIG_I6300ESB_WDT is not set
CONFIG_ITCO_WDT=y
CONFIG_ITCO_VENDOR_SUPPORT=y
CONFIG_IT8712F_WDT=y
# CONFIG_IT87_WDT is not set
CONFIG_HP_WATCHDOG=y
CONFIG_SC1200_WDT=y
CONFIG_PC87413_WDT=y
# CONFIG_60XX_WDT is not set
CONFIG_SBC8360_WDT=y
CONFIG_CPU5_WDT=y
CONFIG_SMSC_SCH311X_WDT=y
CONFIG_SMSC37B787_WDT=y
CONFIG_W83627HF_WDT=y
CONFIG_W83697HF_WDT=y
CONFIG_W83697UG_WDT=y
# CONFIG_W83877F_WDT is not set
# CONFIG_W83977F_WDT is not set
CONFIG_MACHZ_WDT=y
CONFIG_SBC_EPX_C3_WATCHDOG=y

#
# PCI-based Watchdog Cards
#
CONFIG_PCIPCWATCHDOG=y
CONFIG_WDTPCI=y
CONFIG_WDT_501_PCI=y

#
# USB-based Watchdog Cards
#
# CONFIG_USBPCWATCHDOG is not set
CONFIG_SSB_POSSIBLE=y

#
# Sonics Silicon Backplane
#
CONFIG_SSB=y
CONFIG_SSB_SPROM=y
CONFIG_SSB_PCIHOST_POSSIBLE=y
CONFIG_SSB_PCIHOST=y
CONFIG_SSB_B43_PCI_BRIDGE=y
CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
CONFIG_SSB_PCMCIAHOST=y
CONFIG_SSB_SILENT=y
CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
CONFIG_SSB_DRIVER_PCICORE=y

#
# Multifunction device drivers
#
CONFIG_MFD_CORE=y
CONFIG_MFD_SM501=y
# CONFIG_MFD_SM501_GPIO is not set
CONFIG_HTC_PASIC3=y
CONFIG_TPS65010=y
CONFIG_TWL4030_CORE=y
# CONFIG_MFD_TMIO is not set
CONFIG_PMIC_DA903X=y
CONFIG_MFD_WM8400=y
CONFIG_MFD_PCF50633=y
CONFIG_PCF50633_ADC=y
CONFIG_PCF50633_GPIO=y
CONFIG_REGULATOR=y
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
CONFIG_REGULATOR_VIRTUAL_CONSUMER=y
CONFIG_REGULATOR_BQ24022=y
CONFIG_REGULATOR_WM8400=y
CONFIG_REGULATOR_DA903X=y
CONFIG_REGULATOR_PCF50633=y

#
# Multimedia devices
#

#
# Multimedia core support
#
CONFIG_VIDEO_DEV=y
CONFIG_VIDEO_V4L2_COMMON=y
CONFIG_VIDEO_ALLOW_V4L1=y
CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_DVB_CORE=y
CONFIG_VIDEO_MEDIA=y

#
# Multimedia drivers
#
CONFIG_MEDIA_TUNER=y
CONFIG_MEDIA_TUNER_CUSTOMIZE=y
# CONFIG_MEDIA_TUNER_SIMPLE is not set
# CONFIG_MEDIA_TUNER_TDA8290 is not set
# CONFIG_MEDIA_TUNER_TDA827X is not set
# CONFIG_MEDIA_TUNER_TDA18271 is not set
CONFIG_MEDIA_TUNER_TDA9887=y
CONFIG_MEDIA_TUNER_TEA5761=y
CONFIG_MEDIA_TUNER_TEA5767=y
# CONFIG_MEDIA_TUNER_MT20XX is not set
# CONFIG_MEDIA_TUNER_MT2060 is not set
CONFIG_MEDIA_TUNER_MT2266=y
# CONFIG_MEDIA_TUNER_MT2131 is not set
CONFIG_MEDIA_TUNER_QT1010=y
# CONFIG_MEDIA_TUNER_XC2028 is not set
CONFIG_MEDIA_TUNER_XC5000=y
CONFIG_MEDIA_TUNER_MXL5005S=y
CONFIG_MEDIA_TUNER_MXL5007T=y
CONFIG_VIDEO_V4L2=y
CONFIG_VIDEO_V4L1=y
# CONFIG_VIDEO_CAPTURE_DRIVERS is not set
# CONFIG_RADIO_ADAPTERS is not set
CONFIG_DVB_DYNAMIC_MINORS=y
CONFIG_DVB_CAPTURE_DRIVERS=y

#
# Supported SAA7146 based PCI Adapters
#
# CONFIG_TTPCI_EEPROM is not set
# CONFIG_DVB_AV7110 is not set
# CONFIG_DVB_BUDGET_CORE is not set

#
# Supported USB Adapters
#
CONFIG_DVB_USB=y
CONFIG_DVB_USB_DEBUG=y
CONFIG_DVB_USB_A800=y
CONFIG_DVB_USB_DIBUSB_MB=y
CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
CONFIG_DVB_USB_DIBUSB_MC=y
# CONFIG_DVB_USB_DIB0700 is not set
# CONFIG_DVB_USB_UMT_010 is not set
CONFIG_DVB_USB_CXUSB=y
CONFIG_DVB_USB_M920X=y
# CONFIG_DVB_USB_GL861 is not set
CONFIG_DVB_USB_AU6610=y
CONFIG_DVB_USB_DIGITV=y
CONFIG_DVB_USB_VP7045=y
CONFIG_DVB_USB_VP702X=y
CONFIG_DVB_USB_GP8PSK=y
# CONFIG_DVB_USB_NOVA_T_USB2 is not set
# CONFIG_DVB_USB_TTUSB2 is not set
CONFIG_DVB_USB_DTT200U=y
CONFIG_DVB_USB_OPERA1=y
# CONFIG_DVB_USB_DW2102 is not set
CONFIG_DVB_USB_CINERGY_T2=y
# CONFIG_DVB_USB_ANYSEE is not set
CONFIG_DVB_USB_DTV5100=y
# CONFIG_DVB_USB_AF9015 is not set
# CONFIG_DVB_TTUSB_BUDGET is not set
CONFIG_DVB_TTUSB_DEC=y
# CONFIG_DVB_SIANO_SMS1XXX is not set

#
# Supported FlexCopII (B2C2) Adapters
#
CONFIG_DVB_B2C2_FLEXCOP=y
# CONFIG_DVB_B2C2_FLEXCOP_PCI is not set
CONFIG_DVB_B2C2_FLEXCOP_USB=y
CONFIG_DVB_B2C2_FLEXCOP_DEBUG=y

#
# Supported BT878 Adapters
#

#
# Supported Pluto2 Adapters
#
# CONFIG_DVB_PLUTO2 is not set

#
# Supported SDMC DM1105 Adapters
#
CONFIG_DVB_DM1105=y

#
# Supported DVB Frontends
#

#
# Customise DVB Frontends
#
CONFIG_DVB_FE_CUSTOMISE=y

#
# Multistandard (satellite) frontends
#
# CONFIG_DVB_STB0899 is not set
CONFIG_DVB_STB6100=y

#
# DVB-S (satellite) frontends
#
CONFIG_DVB_CX24110=y
# CONFIG_DVB_CX24123 is not set
CONFIG_DVB_MT312=y
# CONFIG_DVB_S5H1420 is not set
CONFIG_DVB_STV0288=y
CONFIG_DVB_STB6000=y
CONFIG_DVB_STV0299=y
CONFIG_DVB_TDA8083=y
CONFIG_DVB_TDA10086=y
CONFIG_DVB_TDA8261=y
CONFIG_DVB_VES1X93=y
CONFIG_DVB_TUNER_ITD1000=y
# CONFIG_DVB_TUNER_CX24113 is not set
CONFIG_DVB_TDA826X=y
# CONFIG_DVB_TUA6100 is not set
CONFIG_DVB_CX24116=y
# CONFIG_DVB_SI21XX is not set

#
# DVB-T (terrestrial) frontends
#
CONFIG_DVB_SP8870=y
CONFIG_DVB_SP887X=y
# CONFIG_DVB_CX22700 is not set
CONFIG_DVB_CX22702=y
CONFIG_DVB_DRX397XD=y
CONFIG_DVB_L64781=y
CONFIG_DVB_TDA1004X=y
CONFIG_DVB_NXT6000=y
CONFIG_DVB_MT352=y
CONFIG_DVB_ZL10353=y
CONFIG_DVB_DIB3000MB=y
CONFIG_DVB_DIB3000MC=y
# CONFIG_DVB_DIB7000M is not set
CONFIG_DVB_DIB7000P=y
CONFIG_DVB_TDA10048=y

#
# DVB-C (cable) frontends
#
CONFIG_DVB_VES1820=y
CONFIG_DVB_TDA10021=y
CONFIG_DVB_TDA10023=y
CONFIG_DVB_STV0297=y

#
# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
#
# CONFIG_DVB_NXT200X is not set
# CONFIG_DVB_OR51211 is not set
CONFIG_DVB_OR51132=y
# CONFIG_DVB_BCM3510 is not set
# CONFIG_DVB_LGDT330X is not set
# CONFIG_DVB_LGDT3304 is not set
CONFIG_DVB_S5H1409=y
# CONFIG_DVB_AU8522 is not set
# CONFIG_DVB_S5H1411 is not set

#
# ISDB-T (terrestrial) frontends
#
CONFIG_DVB_S921=y

#
# Digital terrestrial only tuners/PLL
#
# CONFIG_DVB_PLL is not set
CONFIG_DVB_TUNER_DIB0070=y

#
# SEC control devices for DVB-S
#
CONFIG_DVB_LNBP21=y
# CONFIG_DVB_ISL6405 is not set
CONFIG_DVB_ISL6421=y
# CONFIG_DVB_LGS8GL5 is not set

#
# Tools to develop new frontends
#
# CONFIG_DVB_DUMMY_FE is not set
CONFIG_DVB_AF9013=y
CONFIG_DAB=y
CONFIG_USB_DABUSB=y

#
# Graphics support
#
CONFIG_AGP=y
# CONFIG_AGP_AMD64 is not set
CONFIG_AGP_INTEL=y
CONFIG_AGP_SIS=y
# CONFIG_AGP_VIA is not set
CONFIG_DRM=y
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_R128 is not set
# CONFIG_DRM_RADEON is not set
CONFIG_DRM_I810=y
# CONFIG_DRM_I830 is not set
# CONFIG_DRM_I915 is not set
CONFIG_DRM_MGA=y
CONFIG_DRM_SIS=y
CONFIG_DRM_VIA=y
CONFIG_DRM_SAVAGE=y
CONFIG_VGASTATE=y
CONFIG_VIDEO_OUTPUT_CONTROL=y
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_DDC=y
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
CONFIG_FB_SYS_FILLRECT=y
CONFIG_FB_SYS_COPYAREA=y
CONFIG_FB_SYS_IMAGEBLIT=y
# CONFIG_FB_FOREIGN_ENDIAN is not set
CONFIG_FB_SYS_FOPS=y
CONFIG_FB_DEFERRED_IO=y
CONFIG_FB_HECUBA=y
CONFIG_FB_SVGALIB=y
# CONFIG_FB_MACMODES is not set
CONFIG_FB_BACKLIGHT=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y

#
# Frame buffer hardware drivers
#
# CONFIG_FB_PM2 is not set
CONFIG_FB_CYBER2000=y
CONFIG_FB_ARC=y
CONFIG_FB_IMSTT=y
CONFIG_FB_N411=y
CONFIG_FB_HGA=y
# CONFIG_FB_HGA_ACCEL is not set
CONFIG_FB_S1D13XXX=y
CONFIG_FB_NVIDIA=y
CONFIG_FB_NVIDIA_I2C=y
# CONFIG_FB_NVIDIA_DEBUG is not set
CONFIG_FB_NVIDIA_BACKLIGHT=y
# CONFIG_FB_RIVA is not set
CONFIG_FB_LE80578=y
CONFIG_FB_CARILLO_RANCH=y
CONFIG_FB_INTEL=y
CONFIG_FB_INTEL_DEBUG=y
# CONFIG_FB_INTEL_I2C is not set
CONFIG_FB_MATROX=y
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
# CONFIG_FB_MATROX_G is not set
# CONFIG_FB_MATROX_I2C is not set
CONFIG_FB_MATROX_MULTIHEAD=y
CONFIG_FB_ATY128=y
CONFIG_FB_ATY128_BACKLIGHT=y
CONFIG_FB_ATY=y
CONFIG_FB_ATY_CT=y
CONFIG_FB_ATY_GENERIC_LCD=y
# CONFIG_FB_ATY_GX is not set
CONFIG_FB_ATY_BACKLIGHT=y
CONFIG_FB_S3=y
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
CONFIG_FB_VIA=y
CONFIG_FB_NEOMAGIC=y
CONFIG_FB_KYRO=y
# CONFIG_FB_3DFX is not set
CONFIG_FB_VOODOO1=y
CONFIG_FB_VT8623=y
CONFIG_FB_TRIDENT=y
CONFIG_FB_TRIDENT_ACCEL=y
CONFIG_FB_ARK=y
# CONFIG_FB_PM3 is not set
CONFIG_FB_CARMINE=y
CONFIG_FB_CARMINE_DRAM_EVAL=y
# CONFIG_CARMINE_DRAM_CUSTOM is not set
CONFIG_FB_GEODE=y
# CONFIG_FB_GEODE_LX is not set
CONFIG_FB_GEODE_GX=y
# CONFIG_FB_GEODE_GX1 is not set
CONFIG_FB_TMIO=y
CONFIG_FB_TMIO_ACCELL=y
# CONFIG_FB_SM501 is not set
CONFIG_FB_METRONOME=y
CONFIG_FB_MB862XX=y
CONFIG_FB_MB862XX_PCI_GDC=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_GENERIC=y
# CONFIG_BACKLIGHT_PROGEAR is not set
# CONFIG_BACKLIGHT_DA903X is not set
CONFIG_BACKLIGHT_MBP_NVIDIA=y
CONFIG_BACKLIGHT_SAHARA=y

#
# Display device support
#
CONFIG_DISPLAY_SUPPORT=y

#
# Display hardware drivers
#

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
CONFIG_DUMMY_CONSOLE=y
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y
# CONFIG_SOUND is not set
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
CONFIG_HID_DEBUG=y
CONFIG_HIDRAW=y

#
# USB Input Devices
#
CONFIG_USB_HID=y
CONFIG_HID_PID=y
CONFIG_USB_HIDDEV=y
CONFIG_USB_MOUSE=y

#
# Special HID drivers
#
# CONFIG_HID_COMPAT is not set
CONFIG_HID_A4TECH=y
# CONFIG_HID_APPLE is not set
CONFIG_HID_BELKIN=y
# CONFIG_HID_CHERRY is not set
CONFIG_HID_CHICONY=y
# CONFIG_HID_CYPRESS is not set
# CONFIG_HID_EZKEY is not set
# CONFIG_HID_GYRATION is not set
CONFIG_HID_LOGITECH=y
CONFIG_LOGITECH_FF=y
CONFIG_LOGIRUMBLEPAD2_FF=y
CONFIG_HID_MICROSOFT=y
CONFIG_HID_MONTEREY=y
CONFIG_HID_NTRIG=y
CONFIG_HID_PANTHERLORD=y
CONFIG_PANTHERLORD_FF=y
CONFIG_HID_PETALYNX=y
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
# CONFIG_HID_SUNPLUS is not set
CONFIG_GREENASIA_FF=y
CONFIG_HID_TOPSEED=y
CONFIG_THRUSTMASTER_FF=y
CONFIG_ZEROPLUS_FF=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set

#
# Miscellaneous USB options
#
# CONFIG_USB_DEVICEFS is not set
CONFIG_USB_DEVICE_CLASS=y
# CONFIG_USB_DYNAMIC_MINORS is not set
CONFIG_USB_SUSPEND=y
# CONFIG_USB_OTG is not set
CONFIG_USB_OTG_WHITELIST=y
CONFIG_USB_OTG_BLACKLIST_HUB=y
CONFIG_USB_MON=y
CONFIG_USB_WUSB=y
CONFIG_USB_WUSB_CBAF=y
CONFIG_USB_WUSB_CBAF_DEBUG=y

#
# USB Host Controller Drivers
#
# CONFIG_USB_C67X00_HCD is not set
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
CONFIG_USB_OXU210HP_HCD=y
CONFIG_USB_ISP116X_HCD=y
CONFIG_USB_ISP1760_HCD=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_SSB=y
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=y
# CONFIG_USB_SL811_HCD is not set
CONFIG_USB_R8A66597_HCD=y
CONFIG_USB_HWA_HCD=y

#
# USB Device Class drivers
#
CONFIG_USB_ACM=y
# CONFIG_USB_PRINTER is not set
CONFIG_USB_WDM=y
CONFIG_USB_TMC=y

#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
#

#
# see USB_STORAGE Help for more information
#
CONFIG_USB_STORAGE=y
CONFIG_USB_STORAGE_DEBUG=y
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_USBAT=y
# CONFIG_USB_STORAGE_SDDR09 is not set
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
# CONFIG_USB_STORAGE_ALAUDA is not set
CONFIG_USB_STORAGE_ONETOUCH=y
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
# CONFIG_USB_LIBUSUAL is not set

#
# USB Imaging devices
#
CONFIG_USB_MDC800=y
CONFIG_USB_MICROTEK=y

#
# USB port drivers
#
# CONFIG_USB_SERIAL is not set

#
# USB Miscellaneous drivers
#
CONFIG_USB_EMI62=y
CONFIG_USB_EMI26=y
# CONFIG_USB_ADUTUX is not set
CONFIG_USB_SEVSEG=y
CONFIG_USB_RIO500=y
CONFIG_USB_LEGOTOWER=y
CONFIG_USB_LCD=y
# CONFIG_USB_BERRY_CHARGE is not set
CONFIG_USB_LED=y
CONFIG_USB_CYPRESS_CY7C63=y
CONFIG_USB_CYTHERM=y
CONFIG_USB_PHIDGET=y
CONFIG_USB_PHIDGETKIT=y
# CONFIG_USB_PHIDGETMOTORCONTROL is not set
CONFIG_USB_PHIDGETSERVO=y
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
CONFIG_USB_APPLEDISPLAY=y
CONFIG_USB_SISUSBVGA=y
# CONFIG_USB_SISUSBVGA_CON is not set
CONFIG_USB_LD=y
# CONFIG_USB_TRANCEVIBRATOR is not set
CONFIG_USB_IOWARRIOR=y
# CONFIG_USB_ISIGHTFW is not set
CONFIG_USB_VST=y
# CONFIG_USB_ATM is not set

#
# OTG and related infrastructure
#
CONFIG_USB_OTG_UTILS=y
# CONFIG_USB_GPIO_VBUS is not set
CONFIG_TWL4030_USB=y
CONFIG_UWB=y
CONFIG_UWB_HWA=y
# CONFIG_UWB_WHCI is not set
CONFIG_UWB_WLP=y
# CONFIG_UWB_I1480U is not set
# CONFIG_MMC is not set
CONFIG_MEMSTICK=y
CONFIG_MEMSTICK_DEBUG=y

#
# MemoryStick drivers
#
CONFIG_MEMSTICK_UNSAFE_RESUME=y
CONFIG_MSPRO_BLOCK=y

#
# MemoryStick Host Controller Drivers
#
# CONFIG_MEMSTICK_TIFM_MS is not set
CONFIG_MEMSTICK_JMICRON_38X=y
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y

#
# LED drivers
#
CONFIG_LEDS_ALIX2=y
CONFIG_LEDS_PCA9532=y
CONFIG_LEDS_GPIO=y
# CONFIG_LEDS_CLEVO_MAIL is not set
CONFIG_LEDS_PCA955X=y
CONFIG_LEDS_DA903X=y

#
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
# CONFIG_LEDS_TRIGGER_TIMER is not set
# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
CONFIG_LEDS_TRIGGER_BACKLIGHT=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
# CONFIG_ACCESSIBILITY is not set
CONFIG_EDAC=y

#
# Reporting subsystems
#
CONFIG_EDAC_DEBUG=y
CONFIG_EDAC_MM_EDAC=y
CONFIG_EDAC_E752X=y
CONFIG_EDAC_I82975X=y
CONFIG_EDAC_I3000=y
CONFIG_EDAC_X38=y
# CONFIG_EDAC_I5400 is not set
# CONFIG_EDAC_I5000 is not set
# CONFIG_EDAC_I5100 is not set
# CONFIG_RTC_CLASS is not set
# CONFIG_DMADEVICES is not set
CONFIG_UIO=y
# CONFIG_UIO_CIF is not set
CONFIG_UIO_PDRV=y
# CONFIG_UIO_PDRV_GENIRQ is not set
CONFIG_UIO_SMX=y
CONFIG_UIO_SERCOS3=y
CONFIG_X86_PLATFORM_DEVICES=y
CONFIG_ACER_WMI=y
CONFIG_ASUS_LAPTOP=y
CONFIG_FUJITSU_LAPTOP=y
# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
CONFIG_HP_WMI=y
# CONFIG_MSI_LAPTOP is not set
# CONFIG_PANASONIC_LAPTOP is not set
CONFIG_COMPAL_LAPTOP=y
CONFIG_SONY_LAPTOP=y
# CONFIG_SONYPI_COMPAT is not set
CONFIG_THINKPAD_ACPI=y
CONFIG_THINKPAD_ACPI_DEBUGFACILITIES=y
# CONFIG_THINKPAD_ACPI_DEBUG is not set
# CONFIG_THINKPAD_ACPI_BAY is not set
CONFIG_THINKPAD_ACPI_VIDEO=y
CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
CONFIG_ACPI_WMI=y
# CONFIG_ACPI_ASUS is not set
CONFIG_ACPI_TOSHIBA=y

#
# Firmware Drivers
#
CONFIG_EDD=y
CONFIG_EDD_OFF=y
CONFIG_FIRMWARE_MEMMAP=y
# CONFIG_DELL_RBU is not set
# CONFIG_DCDBAS is not set
# CONFIG_DMIID is not set
# CONFIG_ISCSI_IBFT_FIND is not set

#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
# CONFIG_EXT2_FS_SECURITY is not set
CONFIG_EXT2_FS_XIP=y
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4_FS is not set
CONFIG_FS_XIP=y
CONFIG_JBD=y
CONFIG_JBD_DEBUG=y
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
CONFIG_JFS_FS=y
# CONFIG_JFS_POSIX_ACL is not set
CONFIG_JFS_SECURITY=y
CONFIG_JFS_DEBUG=y
CONFIG_JFS_STATISTICS=y
CONFIG_FS_POSIX_ACL=y
CONFIG_FILE_LOCKING=y
# CONFIG_XFS_FS is not set
CONFIG_GFS2_FS=y
CONFIG_GFS2_FS_LOCKING_DLM=y
# CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not set
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
CONFIG_PRINT_QUOTA_WARNING=y
CONFIG_QUOTA_TREE=y
CONFIG_QFMT_V1=y
CONFIG_QFMT_V2=y
CONFIG_QUOTACTL=y
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=y
CONFIG_FUSE_FS=y

#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
CONFIG_UDF_FS=y
CONFIG_UDF_NLS=y

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_NTFS_FS is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_PROC_SYSCTL=y
# CONFIG_PROC_PAGE_MONITOR is not set
CONFIG_SYSFS=y
# CONFIG_TMPFS is not set
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
CONFIG_CONFIGFS_FS=y
CONFIG_MISC_FILESYSTEMS=y
CONFIG_ADFS_FS=y
CONFIG_ADFS_FS_RW=y
CONFIG_AFFS_FS=y
CONFIG_ECRYPT_FS=y
CONFIG_HFS_FS=y
CONFIG_HFSPLUS_FS=y
CONFIG_BEFS_FS=y
# CONFIG_BEFS_DEBUG is not set
CONFIG_BFS_FS=y
CONFIG_EFS_FS=y
# CONFIG_CRAMFS is not set
# CONFIG_SQUASHFS is not set
CONFIG_VXFS_FS=y
CONFIG_MINIX_FS=y
CONFIG_OMFS_FS=y
# CONFIG_HPFS_FS is not set
CONFIG_QNX4FS_FS=y
CONFIG_ROMFS_FS=y
CONFIG_SYSV_FS=y
# CONFIG_UFS_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y
# CONFIG_NFS_FS is not set
CONFIG_NFSD=y
CONFIG_NFSD_V3=y
# CONFIG_NFSD_V3_ACL is not set
CONFIG_NFSD_V4=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_SUNRPC_REGISTER_V4=y
CONFIG_RPCSEC_GSS_KRB5=y
CONFIG_RPCSEC_GSS_SPKM3=y
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
CONFIG_AFS_FS=y
# CONFIG_AFS_DEBUG is not set

#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
CONFIG_ACORN_PARTITION=y
# CONFIG_ACORN_PARTITION_CUMANA is not set
CONFIG_ACORN_PARTITION_EESOX=y
# CONFIG_ACORN_PARTITION_ICS is not set
# CONFIG_ACORN_PARTITION_ADFS is not set
# CONFIG_ACORN_PARTITION_POWERTEC is not set
CONFIG_ACORN_PARTITION_RISCIX=y
CONFIG_OSF_PARTITION=y
CONFIG_AMIGA_PARTITION=y
# CONFIG_ATARI_PARTITION is not set
CONFIG_MAC_PARTITION=y
CONFIG_MSDOS_PARTITION=y
CONFIG_BSD_DISKLABEL=y
CONFIG_MINIX_SUBPARTITION=y
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
CONFIG_LDM_PARTITION=y
CONFIG_LDM_DEBUG=y
# CONFIG_SGI_PARTITION is not set
CONFIG_ULTRIX_PARTITION=y
CONFIG_SUN_PARTITION=y
CONFIG_KARMA_PARTITION=y
CONFIG_EFI_PARTITION=y
CONFIG_SYSV68_PARTITION=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set
CONFIG_NLS_CODEPAGE_737=y
CONFIG_NLS_CODEPAGE_775=y
CONFIG_NLS_CODEPAGE_850=y
CONFIG_NLS_CODEPAGE_852=y
CONFIG_NLS_CODEPAGE_855=y
CONFIG_NLS_CODEPAGE_857=y
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
CONFIG_NLS_CODEPAGE_862=y
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
CONFIG_NLS_CODEPAGE_865=y
# CONFIG_NLS_CODEPAGE_866 is not set
CONFIG_NLS_CODEPAGE_869=y
CONFIG_NLS_CODEPAGE_936=y
CONFIG_NLS_CODEPAGE_950=y
# CONFIG_NLS_CODEPAGE_932 is not set
CONFIG_NLS_CODEPAGE_949=y
CONFIG_NLS_CODEPAGE_874=y
CONFIG_NLS_ISO8859_8=y
# CONFIG_NLS_CODEPAGE_1250 is not set
CONFIG_NLS_CODEPAGE_1251=y
# CONFIG_NLS_ASCII is not set
CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
CONFIG_NLS_ISO8859_3=y
CONFIG_NLS_ISO8859_4=y
CONFIG_NLS_ISO8859_5=y
CONFIG_NLS_ISO8859_6=y
CONFIG_NLS_ISO8859_7=y
CONFIG_NLS_ISO8859_9=y
CONFIG_NLS_ISO8859_13=y
CONFIG_NLS_ISO8859_14=y
# CONFIG_NLS_ISO8859_15 is not set
CONFIG_NLS_KOI8_R=y
CONFIG_NLS_KOI8_U=y
CONFIG_NLS_UTF8=y
CONFIG_DLM=y
# CONFIG_DLM_DEBUG is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_PRINTK_TIME=y
CONFIG_ALLOW_WARNINGS=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=2048
CONFIG_MAGIC_SYSRQ=y
CONFIG_UNUSED_SYMBOLS=y
CONFIG_DEBUG_FS=y
CONFIG_HEADERS_CHECK=y
# CONFIG_DEBUG_KERNEL is not set
CONFIG_SCHED_DEBUG=y
CONFIG_SCHEDSTATS=y
CONFIG_STACKTRACE=y
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_ARCH_WANT_FRAME_POINTERS=y
CONFIG_FRAME_POINTER=y
CONFIG_RCU_CPU_STALL_DETECTOR=y
CONFIG_LATENCYTOP=y
CONFIG_SYSCTL_SYSCALL_CHECK=y
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_NOP_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_HW_BRANCH_TRACER=y
CONFIG_RING_BUFFER=y
CONFIG_TRACING=y

#
# Tracers
#
CONFIG_SYSPROF_TRACER=y
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_HW_BRANCH_TRACER=y
CONFIG_KMEMTRACE=y
CONFIG_WORKQUEUE_TRACER=y
CONFIG_BLK_DEV_IO_TRACE=y
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_BUILD_DOCSRC is not set
CONFIG_DYNAMIC_PRINTK_DEBUG=y
CONFIG_SAMPLES=y
CONFIG_SAMPLE_KOBJECT=y
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_STRICT_DEVMEM=y
CONFIG_X86_VERBOSE_BOOTUP=y
CONFIG_EARLY_PRINTK=y
CONFIG_EARLY_PRINTK_DBGP=y
CONFIG_HAVE_MMIOTRACE_SUPPORT=y
CONFIG_IO_DELAY_TYPE_0X80=0
CONFIG_IO_DELAY_TYPE_0XED=1
CONFIG_IO_DELAY_TYPE_UDELAY=2
CONFIG_IO_DELAY_TYPE_NONE=3
CONFIG_IO_DELAY_0X80=y
# CONFIG_IO_DELAY_0XED is not set
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not set
CONFIG_DEFAULT_IO_DELAY_TYPE=0
CONFIG_OPTIMIZE_INLINING=y

#
# Security options
#
CONFIG_KEYS=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
CONFIG_SECURITY_FILE_CAPABILITIES=y
CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0
CONFIG_CRYPTO=y

#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_GF128MUL=y
# CONFIG_CRYPTO_NULL is not set
CONFIG_CRYPTO_CRYPTD=y
CONFIG_CRYPTO_AUTHENC=y

#
# Authenticated Encryption with Associated Data
#
CONFIG_CRYPTO_CCM=y
# CONFIG_CRYPTO_GCM is not set
CONFIG_CRYPTO_SEQIV=y

#
# Block modes
#
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=y
# CONFIG_CRYPTO_CTS is not set
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_LRW=y
CONFIG_CRYPTO_PCBC=y
CONFIG_CRYPTO_XTS=y

#
# Hash modes
#
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_XCBC=y

#
# Digest
#
CONFIG_CRYPTO_CRC32C=y
# CONFIG_CRYPTO_CRC32C_INTEL is not set
CONFIG_CRYPTO_MD4=y
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=y
CONFIG_CRYPTO_RMD128=y
# CONFIG_CRYPTO_RMD160 is not set
# CONFIG_CRYPTO_RMD256 is not set
# CONFIG_CRYPTO_RMD320 is not set
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=y
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_WP512 is not set

#
# Ciphers
#
CONFIG_CRYPTO_AES=y
# CONFIG_CRYPTO_AES_X86_64 is not set
CONFIG_CRYPTO_ANUBIS=y
CONFIG_CRYPTO_ARC4=y
CONFIG_CRYPTO_BLOWFISH=y
CONFIG_CRYPTO_CAMELLIA=y
CONFIG_CRYPTO_CAST5=y
# CONFIG_CRYPTO_CAST6 is not set
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_FCRYPT=y
CONFIG_CRYPTO_KHAZAD=y
CONFIG_CRYPTO_SALSA20=y
CONFIG_CRYPTO_SALSA20_X86_64=y
# CONFIG_CRYPTO_SEED is not set
CONFIG_CRYPTO_SERPENT=y
CONFIG_CRYPTO_TEA=y
CONFIG_CRYPTO_TWOFISH=y
CONFIG_CRYPTO_TWOFISH_COMMON=y
# CONFIG_CRYPTO_TWOFISH_X86_64 is not set

#
# Compression
#
CONFIG_CRYPTO_DEFLATE=y
# CONFIG_CRYPTO_LZO is not set

#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_DEV_HIFN_795X=y
CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
CONFIG_HAVE_KVM=y
CONFIG_VIRTUALIZATION=y
# CONFIG_KVM is not set
# CONFIG_VIRTIO_PCI is not set
# CONFIG_VIRTIO_BALLOON is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_GENERIC_FIND_FIRST_BIT=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_FIND_LAST_BIT=y
CONFIG_CRC_CCITT=y
CONFIG_CRC16=y
# CONFIG_CRC_T10DIF is not set
CONFIG_CRC_ITU_T=y
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_CHECK_SIGNATURE=y
CONFIG_FORCE_SUCCESSFUL_BUILD=y
CONFIG_FORCE_MINIMAL_CONFIG=y
CONFIG_FORCE_MINIMAL_CONFIG_64=y
CONFIG_FORCE_MINIMAL_CONFIG_PHYS=y

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-17 23:37                 ` Ingo Molnar
@ 2009-02-18  0:52                   ` H. Peter Anvin
  2009-02-18  7:48                     ` Alain Knaff
  0 siblings, 1 reply; 50+ messages in thread
From: H. Peter Anvin @ 2009-02-18  0:52 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Jan Engelhardt, Alain Knaff, the arch/x86 maintainers,
	linux-kernel

Ingo Molnar wrote:
> 
> still fails:
> 
> [    3.196037] initcall inet_init+0x0/0x1e9 returned 0 after 101777 usecs           
> [    3.202886] calling  af_unix_init+0x0/0x55 @ 1                                   
> [    3.207461] NET: Registered protocol family 1                                    
> [    3.211950] initcall af_unix_init+0x0/0x55 returned 0 after 4394 usecs           
> [    3.218624] calling  populate_rootfs+0x0/0xd2 @ 1                                
> [    3.223460] Kernel panic - not syncing: compression method gzip not configured   
> 
> config attached.
> 

Okay, I think I've tracked down the problem.

The issue is that usr/Makefile doesn't correctly filter compression 
methods which we don't support.  This particular case will happen when 
you're building with Ingo's attached configuration *and no bzip2 tool 
installed on the system*.

Basically, the algorithm used in usr/Makefile is simply wrong.

The claim is:

+# Find out "preferred" ramdisk compressor. Order of preference is
+#  1. bzip2 efficient, and likely to be present
+#  2. gzip former default
+#  3. lzma
+#  4. none
+
+# None of the above
+suffix_y                   =
+
+# Lzma, but no gzip nor bzip2
+suffix_$(CONFIG_RD_LZMA)   = .lzma
+
+# Gzip, but no bzip2
+suffix_$(CONFIG_RD_GZIP)   = .gz
+
+# Bzip2
+suffix_$(CONFIG_RD_BZIP2)  = .bz2

This doesn't end up make any sense.  The sanest thing to do is to 
compress with all the compressors that are configured into the kernel, 
and then use the smallest image of the ones that can be produced, 
*including the uncompressed image*.  Including the uncompressed image 
will guarantee that we always have a working option.

	-hpa

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-18  0:52                   ` H. Peter Anvin
@ 2009-02-18  7:48                     ` Alain Knaff
  2009-02-18  9:20                       ` Jan Engelhardt
                                         ` (2 more replies)
  0 siblings, 3 replies; 50+ messages in thread
From: Alain Knaff @ 2009-02-18  7:48 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Ingo Molnar, Jan Engelhardt, the arch/x86 maintainers,
	linux-kernel

H. Peter Anvin wrote:
> Ingo Molnar wrote:
>> still fails:
>>
>> [    3.196037] initcall inet_init+0x0/0x1e9 returned 0 after 101777 usecs           
>> [    3.202886] calling  af_unix_init+0x0/0x55 @ 1                                   
>> [    3.207461] NET: Registered protocol family 1                                    
>> [    3.211950] initcall af_unix_init+0x0/0x55 returned 0 after 4394 usecs           
>> [    3.218624] calling  populate_rootfs+0x0/0xd2 @ 1                                
>> [    3.223460] Kernel panic - not syncing: compression method gzip not configured   
>>
>> config attached.
>>
> 
> Okay, I think I've tracked down the problem.
> 
> The issue is that usr/Makefile doesn't correctly filter compression 
> methods which we don't support.  This particular case will happen when 
> you're building with Ingo's attached configuration *and no bzip2 tool 
> installed on the system*.

Weird. When I tried to reproduce this, I got the following error
instead, already during compilation:

  GEN     usr/initramfs_data.cpio.bz2
/home/alain/Projects/Udpcast/Kernels/linux.trees.git/scripts/gen_initramfs_list.sh:
line 295: bzip2: command not found
make[2]: *** [usr/initramfs_data.cpio.bz2] Error 127
make[1]: *** [usr] Error 2
make: *** [sub-make] Error 2


hmmm, but on a second glance, there seems to be indeed an issue. When
compiling it a _second time_, compilation will "succeed" but produce a
bad kernel because the first attempt left an empty
usr/initramfs_data.cpio.bz2 .

I'll look into it this evening, probably a case of "bad" failure
recovery in the Makefile.

> Basically, the algorithm used in usr/Makefile is simply wrong.

Wow, those are mightily strong words...

> The claim is:
> 
> +# Find out "preferred" ramdisk compressor. Order of preference is
> +#  1. bzip2 efficient, and likely to be present
> +#  2. gzip former default
> +#  3. lzma
> +#  4. none
> +
> +# None of the above
> +suffix_y                   =
> +
> +# Lzma, but no gzip nor bzip2
> +suffix_$(CONFIG_RD_LZMA)   = .lzma
> +
> +# Gzip, but no bzip2
> +suffix_$(CONFIG_RD_GZIP)   = .gz
> +
> +# Bzip2
> +suffix_$(CONFIG_RD_BZIP2)  = .bz2
> 
> This doesn't end up make any sense.

Huh? Can't we just stay polite here...

>  The sanest thing to do is to 
> compress with all the compressors that are configured into the kernel, 
> and then use the smallest image of the ones that can be produced, 
> *including the uncompressed image*.

... so, if I understood correctly, that would mean compressing the
kernel 4 times, and keeping the smallest?
Given the relatively low speed of compression, I feel that such a
feature would really annoy people who compile their kernel often (such
as kernel or module developers). Indeed, when only changing a single
file, kernel compression is the most time-consuming part of recompilation.

>  Including the uncompressed image 
> will guarantee that we always have a working option.

Indeed, Ingo's example had the following config:
# CONFIG_RD_GZIP is not set
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y

So, in his case an uncompressed builtin ramdisk would indeed: be the
only solution because
 1. gzip is not configured
 2. bzip2 is not present on build system as per hypothesis
 3. lzma being more "exotic" than bzip2 would probably be absent too.

> 	-hpa

Maybe another solution would be to make the choice of builtin ramdisk
compression user-selectable, and default to no compression at all.

Indeed, in the default case, the builtin ramdisk is so small (950 bytes
uncompressed), that it probably wouldn't really matter anyways.

The only case where it matters is for developers of embedded systems who
want to replace the builtin ramdisk with a fully populated one, because
their boot loader does not support loading a "normal" initrd.

These people are (hopefully) knowledgeable enough to pick an appropriate
compressor (but there's still the issue of notifying them about the
change, obviously).

Btw, what *is* the standard work flow of supplying your own built-in
initramfs? Do such developers usually supply a directory tree, or do
they already cpio it before supplying it to the kernel? Or do they even
compress it themselves?

Regards,

Alain

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-18  7:48                     ` Alain Knaff
@ 2009-02-18  9:20                       ` Jan Engelhardt
  2009-02-18  9:40                         ` Alain Knaff
  2009-02-18 19:52                       ` H. Peter Anvin
  2009-02-19 20:11                       ` Alain Knaff
  2 siblings, 1 reply; 50+ messages in thread
From: Jan Engelhardt @ 2009-02-18  9:20 UTC (permalink / raw)
  To: Alain Knaff
  Cc: H. Peter Anvin, Ingo Molnar, the arch/x86 maintainers,
	linux-kernel


On Wednesday 2009-02-18 08:48, Alain Knaff wrote:
>
>>  The sanest thing to do is to 
>> compress with all the compressors that are configured into the kernel, 
>> and then use the smallest image of the ones that can be produced, 
>> *including the uncompressed image*.
>
>... so, if I understood correctly, that would mean compressing the
>kernel 4 times, and keeping the smallest?
>Given the relatively low speed of compression, I feel that such a
>feature would really annoy people who compile their kernel often (such
>as kernel or module developers).

I would expect of *module* developers to build their code by means of
an out-of-tree directory, thereby not causing regeneration of the
vmlinux binary or initramfs image. Even if they stayed within the
Linux srctree, they could take a shortcut by explicitly stating the
target (`make that/foo.ko`). modpost is still something that takes
much more time with allmodconfig than compressing the kernel and/or
changed modules over and over.

>Btw, what *is* the standard work flow of supplying your own built-in
>initramfs? Do such developers usually supply a directory tree, or do
>they already cpio it before supplying it to the kernel? Or do they even
>compress it themselves?

As for me: a separate staging directory that is totally unrelated to
the Linux tree, and manually running the cpio command. And not
embodying it into the kernel because all bootloaders used so far
support reading an extra initramfs image.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-18  9:20                       ` Jan Engelhardt
@ 2009-02-18  9:40                         ` Alain Knaff
  2009-02-18 10:29                           ` Jan Engelhardt
  0 siblings, 1 reply; 50+ messages in thread
From: Alain Knaff @ 2009-02-18  9:40 UTC (permalink / raw)
  To: Jan Engelhardt
  Cc: H. Peter Anvin, Ingo Molnar, the arch/x86 maintainers,
	linux-kernel

Jan Engelhardt wrote:
> On Wednesday 2009-02-18 08:48, Alain Knaff wrote:
>>>  The sanest thing to do is to 
>>> compress with all the compressors that are configured into the kernel, 
>>> and then use the smallest image of the ones that can be produced, 
>>> *including the uncompressed image*.
>> ... so, if I understood correctly, that would mean compressing the
>> kernel 4 times, and keeping the smallest?
>> Given the relatively low speed of compression, I feel that such a
>> feature would really annoy people who compile their kernel often (such
>> as kernel or module developers).
> 
> I would expect of *module* developers to build their code by means of
> an out-of-tree directory, thereby not causing regeneration of the
> vmlinux binary or initramfs image. Even if they stayed within the
> Linux srctree, they could take a shortcut by explicitly stating the
> target (`make that/foo.ko`). modpost is still something that takes
> much more time with allmodconfig than compressing the kernel and/or
> changed modules over and over.

You are right of course for modules inserted by insmod modprobe. But what
about people who tune parts that must be compiled-in (VFS layer, etc.), or
that investigate a bug in a module that only occurs when it is compiled
into the kernel?

>> Btw, what *is* the standard work flow of supplying your own built-in
>> initramfs? Do such developers usually supply a directory tree, or do
>> they already cpio it before supplying it to the kernel? Or do they even
>> compress it themselves?
> 
> As for me: a separate staging directory that is totally unrelated to
> the Linux tree, and manually running the cpio command. And not
> embodying it into the kernel because all bootloaders used so far
> support reading an extra initramfs image.

Interesting. If that is the case in general, for all developers of embedded
systems, then we might be able to do away with compression of the built-in
initramfs altogether, as proposed in the very early versions of my patch.

Regards,

Alain

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-18  9:40                         ` Alain Knaff
@ 2009-02-18 10:29                           ` Jan Engelhardt
  2009-02-18 19:53                             ` H. Peter Anvin
  2009-02-19  6:14                             ` Alain Knaff
  0 siblings, 2 replies; 50+ messages in thread
From: Jan Engelhardt @ 2009-02-18 10:29 UTC (permalink / raw)
  To: Alain Knaff
  Cc: H. Peter Anvin, Ingo Molnar, the arch/x86 maintainers,
	linux-kernel


On Wednesday 2009-02-18 10:40, Alain Knaff wrote:
>> 
>> I would expect of *module* developers to build their code by means of
>> an out-of-tree directory, thereby not causing regeneration of the
>> vmlinux binary or initramfs image. Even if they stayed within the
>> Linux srctree, they could take a shortcut by explicitly stating the
>> target (`make that/foo.ko`). modpost is still something that takes
>> much more time with allmodconfig than compressing the kernel and/or
>> changed modules over and over.
>
>You are right of course for modules inserted by insmod modprobe. But what
>about people who tune parts that must be compiled-in (VFS layer, etc.), or
>that investigate a bug in a module that only occurs when it is compiled
>into the kernel?

The developer would then most likely just disable compression for
the time being.

>>[second topic]
>> As for me: a separate staging directory that is totally unrelated to
>> the Linux tree, and manually running the cpio command. And not
>> embodying it into the kernel because all bootloaders used so far
>> support reading an extra initramfs image.
>
>Interesting. If that is the case in general, for all developers of embedded
>systems, then we might be able to do away with compression of the built-in
>initramfs altogether, as proposed in the very early versions of my patch.

Even if it is true in general, I would not remove CONFIG_INITRAMFS_SOURCE
and attached logic, unless it were a major burden on the maintainers.
(I am not to quantify whether it is such a burden, or is not.)

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-18  7:48                     ` Alain Knaff
  2009-02-18  9:20                       ` Jan Engelhardt
@ 2009-02-18 19:52                       ` H. Peter Anvin
  2009-02-18 21:09                         ` Willy Tarreau
  2009-02-19 20:11                       ` Alain Knaff
  2 siblings, 1 reply; 50+ messages in thread
From: H. Peter Anvin @ 2009-02-18 19:52 UTC (permalink / raw)
  To: Alain Knaff
  Cc: Ingo Molnar, Jan Engelhardt, the arch/x86 maintainers,
	linux-kernel

Alain Knaff wrote:
> 
> Maybe another solution would be to make the choice of builtin ramdisk
> compression user-selectable, and default to no compression at all.
> 

That might just make most sense.

> Indeed, in the default case, the builtin ramdisk is so small (950 bytes
> uncompressed), that it probably wouldn't really matter anyways.
> 
> The only case where it matters is for developers of embedded systems who
> want to replace the builtin ramdisk with a fully populated one, because
> their boot loader does not support loading a "normal" initrd.
> 
> These people are (hopefully) knowledgeable enough to pick an appropriate
> compressor (but there's still the issue of notifying them about the
> change, obviously).
> 
> Btw, what *is* the standard work flow of supplying your own built-in
> initramfs? Do such developers usually supply a directory tree, or do
> they already cpio it before supplying it to the kernel? Or do they even
> compress it themselves?

The normal thing is that you point the kernel build to an 
out-of-the-kernel-build-tree directory.

	-hpa


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-18 10:29                           ` Jan Engelhardt
@ 2009-02-18 19:53                             ` H. Peter Anvin
  2009-02-19  6:14                             ` Alain Knaff
  1 sibling, 0 replies; 50+ messages in thread
From: H. Peter Anvin @ 2009-02-18 19:53 UTC (permalink / raw)
  To: Jan Engelhardt
  Cc: Alain Knaff, Ingo Molnar, the arch/x86 maintainers, linux-kernel

Jan Engelhardt wrote:
> Even if it is true in general, I would not remove CONFIG_INITRAMFS_SOURCE
> and attached logic, unless it were a major burden on the maintainers.
> (I am not to quantify whether it is such a burden, or is not.)

Removing CONFIG_INITRAMFS_SOURCE et al is not an option.  It's widely 
used.  Nor is it a technical issue.

	-hpa

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-18 19:52                       ` H. Peter Anvin
@ 2009-02-18 21:09                         ` Willy Tarreau
  0 siblings, 0 replies; 50+ messages in thread
From: Willy Tarreau @ 2009-02-18 21:09 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Alain Knaff, Ingo Molnar, Jan Engelhardt,
	the arch/x86 maintainers, linux-kernel

On Wed, Feb 18, 2009 at 11:52:47AM -0800, H. Peter Anvin wrote:
> Alain Knaff wrote:
> >
> >Maybe another solution would be to make the choice of builtin ramdisk
> >compression user-selectable, and default to no compression at all.
> >
> 
> That might just make most sense.
> 
> >Indeed, in the default case, the builtin ramdisk is so small (950 bytes
> >uncompressed), that it probably wouldn't really matter anyways.
> >
> >The only case where it matters is for developers of embedded systems who
> >want to replace the builtin ramdisk with a fully populated one, because
> >their boot loader does not support loading a "normal" initrd.
> >
> >These people are (hopefully) knowledgeable enough to pick an appropriate
> >compressor (but there's still the issue of notifying them about the
> >change, obviously).
> >
> >Btw, what *is* the standard work flow of supplying your own built-in
> >initramfs? Do such developers usually supply a directory tree, or do
> >they already cpio it before supplying it to the kernel? Or do they even
> >compress it themselves?
> 
> The normal thing is that you point the kernel build to an 
> out-of-the-kernel-build-tree directory.

FWIW I'm personally used to include my kernel's modules into its own
initramfs, so that I can have a common generic rootfs image in a
separate initrd and multiple kernels using the same initrd. This
allows me to easily and quickly boot full-featured kernels from CD,
USB sticks or even PXE, load modules depending on my usages, and
only have to care about some kernel build options (typically SMP/UP)
without having to repackage anything in the root fs. This brings me
the best of modules and monolithic kernels, and that's very convenient.

The build process is not trivial, as I have to proceed in two steps
to package the kernel's own modules into the initramfs before building
the final vmlinux. But scripts make that easier.

Willy


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-18 10:29                           ` Jan Engelhardt
  2009-02-18 19:53                             ` H. Peter Anvin
@ 2009-02-19  6:14                             ` Alain Knaff
  2009-02-19 14:46                               ` H. Peter Anvin
  1 sibling, 1 reply; 50+ messages in thread
From: Alain Knaff @ 2009-02-19  6:14 UTC (permalink / raw)
  To: Jan Engelhardt
  Cc: H. Peter Anvin, Ingo Molnar, the arch/x86 maintainers,
	linux-kernel

Jan Engelhardt wrote:
> Even if it is true in general, I would not remove CONFIG_INITRAMFS_SOURCE

Hmmm, but now that I think of it, maybe the CONFIG_INITRAMFS_SOURCE
setting could be used to decide whether to compress initramfs.

If empty => do not compress builtin initramfs. It's only 950 bytes, and
will be compressed along with the kernel anyways.

If not empty => use an additional config setting (let's call it
CONFIG_INITRAMFS_COMPRESSION) to decide which compressor to use.

Regards,

Alain


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-19  6:14                             ` Alain Knaff
@ 2009-02-19 14:46                               ` H. Peter Anvin
  2009-02-19 15:41                                 ` Alain Knaff
  0 siblings, 1 reply; 50+ messages in thread
From: H. Peter Anvin @ 2009-02-19 14:46 UTC (permalink / raw)
  To: Alain Knaff
  Cc: Jan Engelhardt, Ingo Molnar, the arch/x86 maintainers,
	linux-kernel

Alain Knaff wrote:
> Jan Engelhardt wrote:
>> Even if it is true in general, I would not remove CONFIG_INITRAMFS_SOURCE
> 
> Hmmm, but now that I think of it, maybe the CONFIG_INITRAMFS_SOURCE
> setting could be used to decide whether to compress initramfs.
> 
> If empty => do not compress builtin initramfs. It's only 950 bytes, and
> will be compressed along with the kernel anyways.
> 
> If not empty => use an additional config setting (let's call it
> CONFIG_INITRAMFS_COMPRESSION) to decide which compressor to use.
> 

No, that's at least potentially very wrong.  Let's not go down that rathole.

	-hpa

-- 
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-19 14:46                               ` H. Peter Anvin
@ 2009-02-19 15:41                                 ` Alain Knaff
  2009-02-19 18:03                                   ` H. Peter Anvin
  0 siblings, 1 reply; 50+ messages in thread
From: Alain Knaff @ 2009-02-19 15:41 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Jan Engelhardt, Ingo Molnar, the arch/x86 maintainers,
	linux-kernel

H. Peter Anvin wrote:
> Alain Knaff wrote:
>> Jan Engelhardt wrote:
>>> Even if it is true in general, I would not remove CONFIG_INITRAMFS_SOURCE
>> Hmmm, but now that I think of it, maybe the CONFIG_INITRAMFS_SOURCE
>> setting could be used to decide whether to compress initramfs.
>>
>> If empty => do not compress builtin initramfs. It's only 950 bytes, and
>> will be compressed along with the kernel anyways.
>>
>> If not empty => use an additional config setting (let's call it
>> CONFIG_INITRAMFS_COMPRESSION) to decide which compressor to use.
>>
> 
> No, that's at least potentially very wrong.  Let's not go down that rathole.
> 
> 	-hpa
> 

Could you please elaborate why you consider this so wrong?

Regards,

Alain


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-19 15:41                                 ` Alain Knaff
@ 2009-02-19 18:03                                   ` H. Peter Anvin
  0 siblings, 0 replies; 50+ messages in thread
From: H. Peter Anvin @ 2009-02-19 18:03 UTC (permalink / raw)
  To: Alain Knaff
  Cc: Jan Engelhardt, Ingo Molnar, the arch/x86 maintainers,
	linux-kernel

Alain Knaff wrote:
> 
> Could you please elaborate why you consider this so wrong?
> 

Because in some flows, a large initramfs is built without
CONFIG_INITRAMFS_SOURCE.  More fundamentally, it's a bad case of trying
to guess what the user wants based on unrelated criteria than simply
making it configured.

What we should have done in the first place is to make the initrd
compression selectable just like the kernel compression, with the
additional option of uncompressed (which some people want for the main
kernel, by the way; we just don't have it at the moment.)  I don't know
if we can set it up in Kconfig to default to the same compression as the
kernel uses, but more importantly we can constrain it to the supported
initrd compressions.

	-hpa

-- 
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-18  7:48                     ` Alain Knaff
  2009-02-18  9:20                       ` Jan Engelhardt
  2009-02-18 19:52                       ` H. Peter Anvin
@ 2009-02-19 20:11                       ` Alain Knaff
  2009-03-01 13:16                         ` Alain Knaff
  2 siblings, 1 reply; 50+ messages in thread
From: Alain Knaff @ 2009-02-19 20:11 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Ingo Molnar, Jan Engelhardt, the arch/x86 maintainers,
	linux-kernel

[-- Attachment #1: Type: text/plain, Size: 771 bytes --]

Alain Knaff wrote:
> hmmm, but on a second glance, there seems to be indeed an issue. When
> compiling it a _second time_, compilation will "succeed" but produce a
> bad kernel because the first attempt left an empty
> usr/initramfs_data.cpio.bz2 .
> 
> I'll look into it this evening, probably a case of "bad" failure
> recovery in the Makefile.
> 

Took me slightly longer than promised, attached is the patch.

It changes/fixes three things:
1. Fix a bug in decompress.c : only scanned until the first
non-configured compressor (with disastrous result if that was gzip)
2. Fix a bug in gen_initramfs_list.sh : in case of failure, it left
indeed an empty output file behind, messing up the next make.
3. Make builtin initramfs compression configurable

Regards,

Alain

[-- Attachment #2: 20090219.diff --]
[-- Type: text/x-diff, Size: 4918 bytes --]

This changes three things:
1. Fix a bug in decompress.c : only scanned until the first
non-configured compressor (with disastrous result if that was gzip)
2. Fix a bug in gen_initramfs_list.sh : in case of failure, it left an
empty output file behind, messing up the next make.
3. Make builtin initramfs compression configurable


Signed-off-by: Alain Knaff <alain@knaff.lu>

---

diff -purN base/lib/decompress.c i386/lib/decompress.c
--- base/lib/decompress.c	2009-02-18 07:59:07.000000000 +0100
+++ i386/lib/decompress.c	2009-02-19 20:56:07.000000000 +0100
@@ -43,7 +43,7 @@ decompress_fn decompress_method(const un
 	if (len < 2)
 		return NULL;	/* Need at least this much... */
 
-	for (cf = compressed_formats; cf->decompressor; cf++) {
+	for (cf = compressed_formats; cf->name; cf++) {
 		if (!memcmp(inbuf, cf->magic, 2))
 			break;
 
diff -purN base/scripts/gen_initramfs_list.sh i386/scripts/gen_initramfs_list.sh
--- base/scripts/gen_initramfs_list.sh	2009-02-18 07:59:07.000000000 +0100
+++ i386/scripts/gen_initramfs_list.sh	2009-02-19 07:52:57.000000000 +0100
@@ -292,7 +292,7 @@ if [ ! -z ${output_file} ]; then
 	if [ "${is_cpio_compressed}" = "compressed" ]; then
 		cat ${cpio_tfile} > ${output_file}
 	else
-		cat ${cpio_tfile} | ${compr}  - > ${output_file}
+		(cat ${cpio_tfile} | ${compr}  - > ${output_file}) || (rm ${output_file} ; false)
 	fi
 	[ -z ${cpio_file} ] && rm ${cpio_tfile}
 fi
diff -purN base/usr/Kconfig i386/usr/Kconfig
--- base/usr/Kconfig	2009-02-18 07:59:07.000000000 +0100
+++ i386/usr/Kconfig	2009-02-19 20:02:41.000000000 +0100
@@ -71,3 +71,65 @@ config RD_LZMA
 	help
 	  Support loading of a lzma encoded initial ramdisk or cpio buffer
 	  If unsure, say N.
+
+choice
+	prompt "Built-in initramfs compression mode"
+	help
+	  This setting is only meaningful if the INITRAMFS_SOURCE is
+	  set. It decides by which algorithm the INITRAMFS_SOURCE will
+	  be compressed.
+	  Several compression algorithms are available, which differ
+	  in efficiency, compression and decompression speed.
+	  Compression speed is only relevant when building a kernel.
+	  Decompression speed is relevant at each boot.
+
+	  If you have any problems with bzip2 or lzma compressed
+	  initramfs, mail me (Alain Knaff) <alain@knaff.lu>.
+
+	  High compression options are mostly useful for users who
+	  are low on disk space (embedded systems), but for whom ram
+	  size matters less.
+
+	  If in doubt, select 'gzip'
+
+config INITRAMFS_COMPRESSION_NONE
+	bool "None"
+	help
+	  Do not compress the built-in initramfs at all. This may
+	  sound wasteful in space, but, you should be aware that the
+	  built-in initramfs will be compressed at a later stage
+	  anyways along with the rest of the kernel, on those
+	  architectures that support this.
+	  However, not compressing the initramfs may lead to slightly
+	  higher memory consumption during a short time at boot, while
+	  both the cpio image and the unpacked filesystem image will
+	  be present in memory simultaneously
+
+config INITRAMFS_COMPRESSION_GZIP
+	bool "Gzip"
+	depends on RD_GZIP
+	help
+	  The old and tried gzip compression. Its compression ratio is
+	  the poorest among the 3 choices; however its speed (both
+	  compression and decompression) is the fastest.
+
+config INITRAMFS_COMPRESSION_BZIP2
+	bool "Bzip2"
+	depends on RD_BZIP2
+	help
+	  Its compression ratio and speed is intermediate.
+	  Decompression speed is slowest among the three.  The initramfs
+	  size is about 10% smaller with bzip2, in comparison to gzip.
+	  Bzip2 uses a large amount of memory. For modern kernels you
+	  will need at least 8MB RAM or more for booting.
+
+config INITRAMFS_COMPRESSION_LZMA
+	bool "LZMA"
+	depends on RD_LZMA
+	help
+	  The most recent compression algorithm.
+	  Its ratio is best, decompression speed is between the other
+	  two. Compression is slowest.	The initramfs size is about 33%
+	  smaller with LZMA in comparison to gzip.
+
+endchoice
diff -purN base/usr/Makefile i386/usr/Makefile
--- base/usr/Makefile	2009-02-18 07:59:07.000000000 +0100
+++ i386/usr/Makefile	2009-02-19 20:27:31.000000000 +0100
@@ -5,24 +5,18 @@
 klibcdirs:;
 PHONY += klibcdirs
 
-# Find out "preferred" ramdisk compressor. Order of preference is
-#  1. bzip2 efficient, and likely to be present
-#  2. gzip former default
-#  3. lzma
-#  4. none
 
-# None of the above
-suffix_y                   =
-
-# Lzma, but no gzip nor bzip2
-suffix_$(CONFIG_RD_LZMA)   = .lzma
+# No compression
+suffix_$(CONFIG_INITRAMFS_COMPRESSION_NONE)   =
 
 # Gzip, but no bzip2
-suffix_$(CONFIG_RD_GZIP)   = .gz
+suffix_$(CONFIG_INITRAMFS_COMPRESSION_GZIP)   = .gz
 
 # Bzip2
-suffix_$(CONFIG_RD_BZIP2)  = .bz2
+suffix_$(CONFIG_INITRAMFS_COMPRESSION_BZIP2)  = .bz2
 
+# Lzma
+suffix_$(CONFIG_INITRAMFS_COMPRESSION_LZMA)   = .lzma
 
 # Generate builtin.o based on initramfs_data.o
 obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data$(suffix_y).o

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-02-19 20:11                       ` Alain Knaff
@ 2009-03-01 13:16                         ` Alain Knaff
  2009-03-01 19:27                           ` H. Peter Anvin
  2009-03-02  9:53                           ` Ingo Molnar
  0 siblings, 2 replies; 50+ messages in thread
From: Alain Knaff @ 2009-03-01 13:16 UTC (permalink / raw)
  To: H. Peter Anvin, Ingo Molnar
  Cc: Jan Engelhardt, the arch/x86 maintainers, linux-kernel

Alain Knaff wrote:
> Alain Knaff wrote:
>> hmmm, but on a second glance, there seems to be indeed an issue. When
>> compiling it a _second time_, compilation will "succeed" but produce a
>> bad kernel because the first attempt left an empty
>> usr/initramfs_data.cpio.bz2 .
>>
>> I'll look into it this evening, probably a case of "bad" failure
>> recovery in the Makefile.
>>
> 
> Took me slightly longer than promised, attached is the patch.
> 
> It changes/fixes three things:
> 1. Fix a bug in decompress.c : only scanned until the first
> non-configured compressor (with disastrous result if that was gzip)
> 2. Fix a bug in gen_initramfs_list.sh : in case of failure, it left
> indeed an empty output file behind, messing up the next make.
> 3. Make builtin initramfs compression configurable
> 
> Regards,
> 
> Alain
> 

Any comments about this? Ingo, does it solve the issue with randconfig?

Btw, when will the next merge-window be, so that I can plan ahead to be
available enough?

Thanks,

Alain


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-03-01 13:16                         ` Alain Knaff
@ 2009-03-01 19:27                           ` H. Peter Anvin
  2009-03-02  9:53                           ` Ingo Molnar
  1 sibling, 0 replies; 50+ messages in thread
From: H. Peter Anvin @ 2009-03-01 19:27 UTC (permalink / raw)
  To: Alain Knaff
  Cc: Ingo Molnar, Jan Engelhardt, the arch/x86 maintainers,
	linux-kernel

Alain Knaff wrote:
> 
> Any comments about this? Ingo, does it solve the issue with randconfig?
> 
> Btw, when will the next merge-window be, so that I can plan ahead to be
> available enough?
> 

Noone knows but Linus.  However, we're at -rc6 now, so it seems logical
that it might be in 1-2 weeks time.

	-hpa

-- 
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-03-01 13:16                         ` Alain Knaff
  2009-03-01 19:27                           ` H. Peter Anvin
@ 2009-03-02  9:53                           ` Ingo Molnar
  2009-03-02  9:54                             ` Alain Knaff
  1 sibling, 1 reply; 50+ messages in thread
From: Ingo Molnar @ 2009-03-02  9:53 UTC (permalink / raw)
  To: Alain Knaff
  Cc: H. Peter Anvin, Jan Engelhardt, the arch/x86 maintainers,
	linux-kernel


* Alain Knaff <alain@knaff.lu> wrote:

> Alain Knaff wrote:
> > Alain Knaff wrote:
> >> hmmm, but on a second glance, there seems to be indeed an issue. When
> >> compiling it a _second time_, compilation will "succeed" but produce a
> >> bad kernel because the first attempt left an empty
> >> usr/initramfs_data.cpio.bz2 .
> >>
> >> I'll look into it this evening, probably a case of "bad" failure
> >> recovery in the Makefile.
> >>
> > 
> > Took me slightly longer than promised, attached is the patch.
> > 
> > It changes/fixes three things:
> > 1. Fix a bug in decompress.c : only scanned until the first
> > non-configured compressor (with disastrous result if that was gzip)
> > 2. Fix a bug in gen_initramfs_list.sh : in case of failure, it left
> > indeed an empty output file behind, messing up the next make.
> > 3. Make builtin initramfs compression configurable
> > 
> > Regards,
> > 
> > Alain
> > 
> 
> Any comments about this? Ingo, does it solve the issue with 
> randconfig?

I've reactivated tip:x86/setup-lzma in tip:master and started 
testing it with the problem .config, on the problem test-system. 
The bug is most likely fixed, so consider it queued up for 
2.6.30 unless i report some new issue.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-03-02  9:53                           ` Ingo Molnar
@ 2009-03-02  9:54                             ` Alain Knaff
  2009-03-02 10:22                               ` Ingo Molnar
  0 siblings, 1 reply; 50+ messages in thread
From: Alain Knaff @ 2009-03-02  9:54 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: H. Peter Anvin, Jan Engelhardt, the arch/x86 maintainers,
	linux-kernel

Ingo Molnar wrote:
> * Alain Knaff <alain@knaff.lu> wrote:
>> Any comments about this? Ingo, does it solve the issue with 
>> randconfig?
> 
> I've reactivated tip:x86/setup-lzma in tip:master and started 
> testing it with the problem .config, on the problem test-system. 
> The bug is most likely fixed, so consider it queued up for 
> 2.6.30 unless i report some new issue.
> 
> Thanks,
> 
> 	Ingo

Thanks. I'm glad we finally made it :-)

Regards,

Alain


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tip: bzip2/lzma now in tip:x86/setup-lzma
  2009-03-02  9:54                             ` Alain Knaff
@ 2009-03-02 10:22                               ` Ingo Molnar
  0 siblings, 0 replies; 50+ messages in thread
From: Ingo Molnar @ 2009-03-02 10:22 UTC (permalink / raw)
  To: Alain Knaff
  Cc: H. Peter Anvin, Jan Engelhardt, the arch/x86 maintainers,
	linux-kernel


* Alain Knaff <alain@knaff.lu> wrote:

> Ingo Molnar wrote:
> > * Alain Knaff <alain@knaff.lu> wrote:
> >> Any comments about this? Ingo, does it solve the issue with 
> >> randconfig?
> > 
> > I've reactivated tip:x86/setup-lzma in tip:master and started 
> > testing it with the problem .config, on the problem test-system. 
> > The bug is most likely fixed, so consider it queued up for 
> > 2.6.30 unless i report some new issue.
> > 
> > Thanks,
> > 
> > 	Ingo
> 
> Thanks. I'm glad we finally made it :-)

Yeah, it was quite unusually difficult. Probably because this is 
dusty but still very central code - it was always there and 
always worked - so if this breaks then everyone is up in arms.

	Ingo

^ permalink raw reply	[flat|nested] 50+ messages in thread

end of thread, other threads:[~2009-03-02 10:22 UTC | newest]

Thread overview: 50+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-04 21:46 update8 [PATCH 2/5] init: bzip2 or lzma -compressed kernels and initrds Alain Knaff
2009-01-04 23:08 ` H. Peter Anvin
2009-01-04 23:12   ` Alain Knaff
2009-01-04 23:14     ` H. Peter Anvin
2009-01-04 23:21       ` Alain Knaff
2009-01-04 23:58         ` tip: bzip2/lzma now in tip:x86/setup-lzma H. Peter Anvin
2009-01-05  3:03           ` Sam Ravnborg
2009-01-05  5:09             ` H. Peter Anvin
2009-01-05  5:42               ` Sam Ravnborg
     [not found]           ` <49615136.9080900@knaff.lu>
     [not found]             ` <4961580A.1020301@zytor.com>
     [not found]               ` <4961A816.40302@knaff.lu>
     [not found]                 ` <4961A997.10108@zytor.com>
     [not found]                   ` <4961ADC5.6030108@knaff.lu>
     [not found]                     ` <49622DE9.2010200@zytor.com>
     [not found]                       ` <496240DF.2010102@knaff.lu>
     [not found]                         ` <49624F6C.8010103@zytor.com>
     [not found]                           ` <4962522F.20804@knaff.lu>
     [not found]                             ` <496255B0.1050208@zytor.com>
2009-01-05 18:57                               ` Alain Knaff
2009-01-05 19:36                                 ` H. Peter Anvin
2009-01-05 22:07                                   ` Alain Knaff
2009-01-05 22:11                                     ` H. Peter Anvin
2009-01-05 22:12                                       ` Alain Knaff
2009-01-05 22:59                                         ` H. Peter Anvin
2009-01-06  7:09                                           ` Alain Knaff
2009-01-06  7:21                                             ` Willy Tarreau
2009-01-06  7:22                                             ` H. Peter Anvin
2009-01-06  7:30                                               ` Alain Knaff
2009-01-06 21:57                                           ` [bzip2/lzma] fix for built-in initramfs issue Alain Knaff
2009-01-06 22:48                                             ` H. Peter Anvin
2009-01-06 22:50                                               ` Alain Knaff
2009-01-06 22:58                                                 ` H. Peter Anvin
2009-01-06 22:58                                                   ` Alain Knaff
2009-01-06  7:18                                       ` tip: bzip2/lzma now in tip:x86/setup-lzma Jaswinder Singh Rajput
2009-01-06  7:24                                         ` H. Peter Anvin
2009-01-06  7:53                                           ` Jaswinder Singh Rajput
2009-01-06  8:27                                             ` H. Peter Anvin
2009-02-17 21:03           ` Jan Engelhardt
2009-02-17 21:05             ` H. Peter Anvin
2009-02-17 22:08               ` Ingo Molnar
2009-02-17 23:37                 ` Ingo Molnar
2009-02-18  0:52                   ` H. Peter Anvin
2009-02-18  7:48                     ` Alain Knaff
2009-02-18  9:20                       ` Jan Engelhardt
2009-02-18  9:40                         ` Alain Knaff
2009-02-18 10:29                           ` Jan Engelhardt
2009-02-18 19:53                             ` H. Peter Anvin
2009-02-19  6:14                             ` Alain Knaff
2009-02-19 14:46                               ` H. Peter Anvin
2009-02-19 15:41                                 ` Alain Knaff
2009-02-19 18:03                                   ` H. Peter Anvin
2009-02-18 19:52                       ` H. Peter Anvin
2009-02-18 21:09                         ` Willy Tarreau
2009-02-19 20:11                       ` Alain Knaff
2009-03-01 13:16                         ` Alain Knaff
2009-03-01 19:27                           ` H. Peter Anvin
2009-03-02  9:53                           ` Ingo Molnar
2009-03-02  9:54                             ` Alain Knaff
2009-03-02 10:22                               ` Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox