From chris@linux-mips.org Thu Jun  9 12:47:13 2005
Received: with ECARTIS (v1.0.0; list maltalinux-cvs-patches); Thu, 09 Jun 2005 13:47:13 +0100 (BST)
From: chris@linux-mips.org
To:  maltalinux-cvs-patches@linux-mips.org
Subject: CVS Update@linux-mips.org: malta
Date: Thu, 09 Jun 2005 13:47:13 +0100
X-archive-position: 3
X-ecartis-version: Ecartis v1.0.0
Sender: maltalinux-cvs-patches-bounce@linux-mips.org
Errors-to: maltalinux-cvs-patches-bounce@linux-mips.org
X-original-sender: chris@linux-mips.org
Precedence: bulk
Reply-to: linux-mips@linux-mips.org
X-list: maltalinux-cvs-patches


CVSROOT:	/home/cvs
Module name:	malta
Changes by:	chris@ftp.linux-mips.org	05/06/09 13:47:12

Modified files:
	linux/arch/mips: Tag: MaltaRef_2_6 Makefile 

Log message:
	* arch/mips/Makefile (cflags-$(CONFIG_CPU_MIPS32R2)): Use mips32r2
	as the cpu type for 3.4 based compilers.
	(cflags-$(CONFIG_CPU_MIPS64R2)): Use mips64r2 as the CPU type for
	3.4 based compilers.

diff -urN malta/linux/arch/mips/Makefile malta/linux/arch/mips/Makefile
--- malta/linux/arch/mips/Makefile	2004/09/14 16:27:50	1.167.1000.3
+++ malta/linux/arch/mips/Makefile	2005/06/09 12:47:12	1.167.1000.4
@@ -146,7 +146,7 @@
 			-Wa,--trap
 
 cflags-$(CONFIG_CPU_MIPS32R2)	+= \
-			$(call set_gccflags,mips32,mips32r2,r4600,mips3,mips2) \
+			$(call set_gccflags,mips32r2,mips32r2,r4600,mips3,mips2) \
 			-Wa,--trap
 
 cflags-$(CONFIG_CPU_MIPS64R1)	+= \
@@ -154,7 +154,7 @@
 			-Wa,--trap
 
 cflags-$(CONFIG_CPU_MIPS64R2)	+= \
-			$(call set_gccflags,mips64,mips64r2,r4600,mips3,mips2) \
+			$(call set_gccflags,mips64r2,mips64r2,r4600,mips3,mips2) \
 			-Wa,--trap
 
 cflags-$(CONFIG_CPU_R5000)	+= \

From beth@linux-mips.org Fri Jun 10 09:45:00 2005
Received: with ECARTIS (v1.0.0; list maltalinux-cvs-patches); Fri, 10 Jun 2005 10:45:01 +0100 (BST)
From: beth@linux-mips.org
To:  maltalinux-cvs-patches@linux-mips.org
Subject: CVS Update@linux-mips.org: malta
Date: Fri, 10 Jun 2005 10:45:01 +0100
X-archive-position: 4
X-ecartis-version: Ecartis v1.0.0
Sender: maltalinux-cvs-patches-bounce@linux-mips.org
Errors-to: maltalinux-cvs-patches-bounce@linux-mips.org
X-original-sender: beth@linux-mips.org
Precedence: bulk
Reply-to: linux-mips@linux-mips.org
X-list: maltalinux-cvs-patches


CVSROOT:	/home/cvs
Module name:	malta
Changes by:	beth@ftp.linux-mips.org	05/06/10 10:45:00

Modified files:
	linux/arch/mips: Tag: MaltaRef_2_6 Kconfig 
	linux/arch/mips/kernel: Tag: MaltaRef_2_6 Makefile cpu-probe.c 
	                        entry.S proc.c 
	linux/include/asm-mips: Tag: MaltaRef_2_6 cpu-features.h cpu.h 
	                        hazards.h mipsregs.h 
Added files:
	linux/arch/mips/kernel: Tag: MaltaRef_2_6 mips_mt.c rtlx.c vpe.c 
	linux/include/asm-mips: Tag: MaltaRef_2_6 mipsmtregs.h rtlx.h 

Log message:
	* arch/mips/kernel/cpu-probe.c:
	* arch/mips/kernel/entry.S:
	* arch/mips/kernel/mips_mt.c:
	* arch/mips/kernel/proc.c:
	* include/asm-mips/cpu-features.h:
	* include/asm-mips/cpu.h:
	* include/asm-mips/hazards.h:
	* include/asm-mips/mipsmtregs.h:
	* include/asm-mips/mipsregs.h: Add support for MIPS 34K
	
	* arch/mips/Kconfig:
	* arch/mips/kernel/Makefile:
	* arch/mips/kernel/rtlx.c:
	* arch/mips/kernel/vpe.c:
	* include/asm-mips/rtlx.h: Add support for MIPS AP/SP

diff -urN malta/linux/arch/mips/Kconfig malta/linux/arch/mips/Kconfig
--- malta/linux/arch/mips/Kconfig	2004/09/14 16:27:50	1.73.1000.4
+++ malta/linux/arch/mips/Kconfig	2005/06/10 09:44:59	1.73.1000.5
@@ -1296,12 +1296,38 @@
 	default y if CPU_SB1 || MIPS_BOARDS_GEN
 
 config CPU_MIPS32_24K
-	bool "Support for MIPS 24K CPU" if CPU_MIPS32
+	bool "Support for MIPS 24K/34K CPUs" if CPU_MIPS32
 	default y if MIPS_BOARDS_GEN
 	help
-	  Include support for the MIPS 24K. This option is necessary for
-	  correct operation of the kernel on a 24K.  It incurs a minor overhead
-	  for other MIPS32 processors.
+	  Include support for the MIPS 24K and 34K. This option is necessary 
+	  for correct operation of the kernel on a 24K or 34K.  It incurs a 
+	  minor overhead for other MIPS32 processors. If in doubt say yes.
+
+config MIPS_MT
+	bool "Enable MIPS MT"
+
+config MIPS_VPE_LOADER
+	bool "VPE loader support."
+	depends on MIPS_MT
+	help
+	  Includes a loader for loading an elf relocatable object
+	  onto another VPE and running it.
+
+config MIPS_VPE_LOADER_TOM
+	bool "Load VPE program into memory hidden from linux"
+	depends on MIPS_VPE_LOADER
+	default y  
+	help
+	  The loader can use memory that is present but has been hidden from
+	  Linux using the kernel command line option "mem=xxMB". It's up to
+	  you to ensure the amount you put in the option and the space your
+	  program requires is less or equal to the amount physically present.
+
+# this should possibly be in drivers/char, but it is rather cpu related. Hmmm
+config MIPS_VPE_APSP_API
+	bool "Enable support for AP/SP API (RTLX)"
+	depends on MIPS_VPE_LOADER 	
+	help
 
 config SB1_PASS_1_WORKAROUNDS
 	bool
@@ -1409,7 +1435,7 @@
 
 config SMP
 	bool "Multi-Processing support"
-	depends on CPU_RM9000 || (SIBYTE_SB1250 && !SIBYTE_STANDALONE) || SGI_IP27
+	depends on CPU_RM9000 || (SIBYTE_SB1250 && !SIBYTE_STANDALONE) || SGI_IP27 
 	---help---
 	  This enables support for systems with more than one CPU. If you have
 	  a system with only one CPU, like most personal computers, say N. If
diff -urN malta/linux/arch/mips/kernel/mips_mt.c malta/linux/arch/mips/kernel/mips_mt.c
--- malta/linux/arch/mips/kernel/Attic/mips_mt.c	1970/01/01 00:00:00
+++ malta/linux/arch/mips/kernel/Attic/mips_mt.c	2005-06-10 10:45:00.011099000 +0100	1.1.2.1
@@ -0,0 +1,98 @@
+/*
+ * General MIPS MT support routines, usable in AP/SP, SMVP, or SMTC kernels
+ * Copyright (C) 2005 Mips Technologies, Inc 
+ */
+
+#include <linux/kernel.h>
+#include <linux/sched.h>
+#include <linux/cpumask.h>
+#include <linux/interrupt.h>
+
+#include <asm/cpu.h>
+#include <asm/processor.h>
+#include <asm/atomic.h>
+#include <asm/system.h>
+#include <asm/hardirq.h>
+#include <asm/mmu_context.h>
+#include <asm/smp.h>
+#include <asm/mipsmtregs.h>
+#include <asm/cacheflush.h>
+
+/*
+ * Dump new MIPS MT state for the core. Does *not* halt TCs.
+ */
+
+void mips_mt_regdump()
+{
+	int flags;
+	int vpflags;
+	int mvpconf0;
+	int nvpe;
+	int ntc;
+	int i;
+	int tc;
+	unsigned long haltval;
+	unsigned long tcstatval;
+#ifdef CONFIG_MIPS_MT_SMTC
+	void smtc_soft_dump(void);
+#endif /* CONFIG_MIPT_MT_SMTC */
+
+	local_irq_save(flags);
+	vpflags = dvpe();
+
+	printk("=== MIPS MT State Dump ===\n");
+	printk("-- Global State --\n");
+	printk("   MVPControl : %08x\n", vpflags);
+	printk("   MVPConf0 : %08x\n", (mvpconf0 = read_c0_mvpconf0()));
+	nvpe = ((mvpconf0 & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT) + 1;
+	ntc = ((mvpconf0 & MVPCONF0_PTC) >> MVPCONF0_PTC_SHIFT) + 1;
+	printk("-- per-VPE State --\n");
+	for(i = 0; i < nvpe; i++) {
+	    for(tc = 0; tc < ntc; tc++) {
+			settc(tc);
+		if((read_tc_c0_tcbind() & TCBIND_CURVPE) == i) {
+		    printk("  VPE %d\n", i);
+		    printk("   VPEControl : %08lx\n", read_vpe_c0_vpecontrol());
+		    printk("   VPEConf0 : %08lx\n", read_vpe_c0_vpeconf0());
+		    printk("   VPE%d.Status : %08lx\n", i, read_vpe_c0_status());
+		    printk("   VPE%d.Cause : %08lx\n", i, read_vpe_c0_cause());
+		    break; /* Next VPE */
+		}
+	    }
+	}
+	printk("-- per-TC State --\n");
+	for(tc = 0; tc < ntc; tc++) {
+		settc(tc);
+		if(read_tc_c0_tcbind() == read_c0_tcbind()) {
+			/* Are we dumping ourself?  */
+			haltval = 0; /* Then we're not halted, and mustn't be */
+			tcstatval = flags; /* And pre-dump TCStatus is flags */
+			printk("  TC %d (current TC)\n", tc);
+		} else { 
+			haltval = read_tc_c0_tchalt();
+			write_tc_c0_tchalt(1);
+			tcstatval = read_tc_c0_tcstatus();
+			printk("  TC %d\n", tc);
+		}
+		printk("   TCStatus : %08lx\n", tcstatval);
+		printk("   TCBind : %08lx\n", read_tc_c0_tcbind());
+		printk("   TCRestart : %08lx\n", read_tc_c0_tcrestart());
+		printk("   TCHalt : %08lx\n", haltval);
+		printk("   TCContext : %08lx\n", read_tc_c0_tccontext());
+		if(!haltval) write_tc_c0_tchalt(0);
+	}
+#ifdef CONFIG_MIPS_MT_SMTC
+	smtc_soft_dump();
+#endif /* CONFIG_MIPT_MT_SMTC */
+	printk("===========================\n");
+	evpe(vpflags);
+	local_irq_restore(flags);
+}
+
+asmlinkage void noinline mips_mt_inthazard(void)
+{
+	__asm__ __volatile__("jr.hb $ra\n\t");
+}
+
+
+
diff -urN malta/linux/arch/mips/kernel/rtlx.c malta/linux/arch/mips/kernel/rtlx.c
--- malta/linux/arch/mips/kernel/Attic/rtlx.c	1970/01/01 00:00:00
+++ malta/linux/arch/mips/kernel/Attic/rtlx.c	2005-06-10 10:45:00.022201000 +0100	1.1.2.1
@@ -0,0 +1,341 @@
+/*
+ * Copyright (C) 2005 MIPS Technologies, Inc.  All rights reserved.
+ *
+ *  This program is free software; you can distribute it and/or modify it
+ *  under the terms of the GNU General Public License (Version 2) as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope it will be useful, but WITHOUT
+ *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ *  for more details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/fs.h>
+#include <linux/init.h>
+#include <asm/uaccess.h>
+#include <linux/slab.h>
+#include <linux/list.h>
+#include <linux/vmalloc.h>
+#include <linux/elf.h>
+#include <linux/seq_file.h>
+#include <linux/syscalls.h>
+#include <linux/moduleloader.h>
+#include <linux/interrupt.h>
+#include <linux/poll.h>
+#include <linux/sched.h>
+#include <linux/wait.h>
+#include <asm/mipsmtregs.h>
+#include <asm/cacheflush.h>
+#include <asm/atomic.h>
+#include <asm/cpu.h>
+#include <asm/processor.h>
+#include <asm/system.h>
+#include <asm/rtlx.h>
+
+#define RTLX_MAJOR 64
+#define RTLX_TARG_VPE 1
+
+struct rtlx_info *rtlx;
+static int major;
+static char module_name[] = "rtlx";
+static inline int spacefree(int read, int write, int size);
+
+static struct chan_waitqueues {
+	wait_queue_head_t rt_queue;
+	wait_queue_head_t lx_queue;
+} channel_wqs[RTLX_CHANNELS];
+
+static struct irqaction irq;
+static int irq_num;
+
+extern void *vpe_get_shared(int index);
+
+static void rtlx_dispatch(struct pt_regs *regs)
+{
+	do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_RTLX_IRQ, regs);
+}
+
+irqreturn_t rtlx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+{
+	irqreturn_t r = IRQ_HANDLED;
+	int i;
+
+	for (i = 0; i < RTLX_CHANNELS; i++) {
+		struct rtlx_channel *chan = &rtlx->channel[i];
+
+		if (chan->lx_read != chan->lx_write)
+			wake_up_interruptible(&channel_wqs[i].lx_queue);
+	}
+
+	return r;
+}
+
+void dump_rtlx(void)
+{
+	int i;
+
+	printk("id 0x%lx state %d\n", rtlx->id, rtlx->state);
+
+	for (i = 0; i < RTLX_CHANNELS; i++) {
+		struct rtlx_channel *chan = &rtlx->channel[i];
+
+		printk(" rt_state %d lx_state %d buffer_size %d\n",
+		       chan->rt_state, chan->lx_state, chan->buffer_size);
+
+		printk(" rt_read %d rt_write %d\n",
+		       chan->rt_read, chan->rt_write);
+
+		printk(" lx_read %d lx_write %d\n",
+		       chan->lx_read, chan->lx_write);
+
+		printk(" rt_buffer <%s>\n", chan->rt_buffer);
+		printk(" lx_buffer <%s>\n", chan->lx_buffer);
+	}
+}
+
+/* call when we have the address of the shared structure from the SP side. */
+static int rtlx_init(struct rtlx_info *rtlxi)
+{
+	int i;
+
+	if (rtlxi->id != RTLX_ID) {
+		printk(KERN_WARNING "no valid RTLX id at 0x%p\n", rtlxi);
+		return (-ENOEXEC);
+	}
+
+	/* initialise the wait queues */
+	for (i = 0; i < RTLX_CHANNELS; i++) {
+		init_waitqueue_head(&channel_wqs[i].rt_queue);
+		init_waitqueue_head(&channel_wqs[i].lx_queue);
+	}
+
+	/* set up for interrupt handling */
+	memset(&irq, 0, sizeof(struct irqaction));
+
+	if (cpu_has_vi) {
+		set_vi_handler(MIPS_CPU_RTLX_IRQ, rtlx_dispatch);
+	}
+
+	irq_num = MIPSCPU_INT_BASE + MIPS_CPU_RTLX_IRQ;
+	irq.handler = rtlx_interrupt;
+	irq.flags = SA_INTERRUPT;
+	irq.name = "RTLX";
+	irq.dev_id = rtlx;
+	setup_irq(irq_num, &irq);
+
+	rtlx = rtlxi;
+	return (0);
+}
+
+/* only allow one open process at a time to open each channel */
+static int rtlx_open(struct inode *inode, struct file *filp)
+{
+	int minor, ret;
+	struct rtlx_channel *chan;
+
+	/* assume only 1 device at the mo. */
+	minor = MINOR(inode->i_rdev);
+
+	if (rtlx == NULL) {
+		struct rtlx_info **p;
+		if( (p = vpe_get_shared(RTLX_TARG_VPE)) == NULL) {
+			printk(" vpe_get_shared is NULL. Has an SP program been loaded?\n");
+			return (-EFAULT);
+		}
+
+		if (*p == NULL) {
+			printk(" vpe_shared %p %p\n", p, *p);
+			return (-EFAULT);
+		}
+
+		if ((ret = rtlx_init(*p)) < 0)
+			return (ret);
+	}
+
+	chan = &rtlx->channel[minor];
+
+	/* already open? */
+	if (chan->lx_state == RTLX_STATE_OPENED)
+		return (-EBUSY);
+
+	chan->lx_state = RTLX_STATE_OPENED;
+	return (0);
+}
+
+static int rtlx_release(struct inode *inode, struct file *filp)
+{
+	int minor;
+
+	minor = MINOR(inode->i_rdev);
+	rtlx->channel[minor].lx_state = RTLX_STATE_UNUSED;
+	return (0);
+}
+
+static unsigned int rtlx_poll(struct file *file, poll_table * wait)
+{
+	int minor;
+	unsigned int mask = 0;
+	struct rtlx_channel *chan;
+
+	minor = MINOR(file->f_dentry->d_inode->i_rdev);
+	chan = &rtlx->channel[minor];
+
+	poll_wait(file, &channel_wqs[minor].rt_queue, wait);
+	poll_wait(file, &channel_wqs[minor].lx_queue, wait);
+
+	/* data available to read? */
+	if (chan->lx_read != chan->lx_write)
+		mask |= POLLIN | POLLRDNORM;
+
+	/* space to write */
+	if (spacefree(chan->rt_read, chan->rt_write, chan->buffer_size))
+		mask |= POLLOUT | POLLWRNORM;
+
+	return (mask);
+}
+
+static ssize_t rtlx_read(struct file *file, char __user * buffer, size_t count,
+			 loff_t * ppos)
+{
+	size_t fl = 0L;
+	int minor;
+	struct rtlx_channel *lx;
+	DECLARE_WAITQUEUE(wait, current);
+
+	minor = MINOR(file->f_dentry->d_inode->i_rdev);
+	lx = &rtlx->channel[minor];
+
+	/* data available? */
+	if (lx->lx_write == lx->lx_read) {
+		if (file->f_flags & O_NONBLOCK)
+			return (0);	// -EAGAIN makes cat whinge
+
+		/* go to sleep */
+		add_wait_queue(&channel_wqs[minor].lx_queue, &wait);
+		set_current_state(TASK_INTERRUPTIBLE);
+
+		while (lx->lx_write == lx->lx_read)
+			schedule();
+
+		set_current_state(TASK_RUNNING);
+		remove_wait_queue(&channel_wqs[minor].lx_queue, &wait);
+
+		/* back running */
+	}
+
+	/* find out how much in total */
+	count = min( count,
+		     (size_t)(lx->lx_write + lx->buffer_size - lx->lx_read) % lx->buffer_size);
+
+	/* then how much from the read pointer onwards */
+	fl = min( count, (size_t)lx->buffer_size - lx->lx_read);
+
+	copy_to_user (buffer, &lx->lx_buffer[lx->lx_read], fl);
+
+	/* and if there is anything left at the beginning of the buffer */
+	if ( count - fl )
+		copy_to_user (buffer + fl, lx->lx_buffer, count - fl);
+
+	/* update the index */
+	lx->lx_read += count;
+	lx->lx_read %= lx->buffer_size;
+
+	return (count);
+}
+
+static inline int spacefree(int read, int write, int size)
+{
+	if (read == write) {
+		/* never fill the buffer completely, so indexes are always equal if empty
+		   and only empty, or !equal if data available */
+		return (size - 1);
+	}
+
+	return ((read + size - write) % size) - 1;
+}
+
+static ssize_t rtlx_write(struct file *file, const char __user * buffer,
+			  size_t count, loff_t * ppos)
+{
+	int minor;
+	struct rtlx_channel *rt;
+	size_t fl;
+	DECLARE_WAITQUEUE(wait, current);
+
+	minor = MINOR(file->f_dentry->d_inode->i_rdev);
+	rt = &rtlx->channel[minor];
+
+	/* any space left... */
+	if (!spacefree(rt->rt_read, rt->rt_write, rt->buffer_size)) {
+
+		if (file->f_flags & O_NONBLOCK)
+			return (-EAGAIN);
+
+		add_wait_queue(&channel_wqs[minor].rt_queue, &wait);
+		set_current_state(TASK_INTERRUPTIBLE);
+
+		while (!spacefree(rt->rt_read, rt->rt_write, rt->buffer_size))
+			schedule();
+
+		set_current_state(TASK_RUNNING);
+		remove_wait_queue(&channel_wqs[minor].rt_queue, &wait);
+	}
+
+	/* total number of bytes to copy */
+	count = min( count, (size_t)spacefree(rt->rt_read, rt->rt_write, rt->buffer_size) );
+
+	/* first bit from write pointer to the end of the buffer, or count */
+	fl = min(count, (size_t) rt->buffer_size - rt->rt_write);
+	
+	copy_from_user(&rt->rt_buffer[rt->rt_write], buffer, fl);
+
+	/* if there's any left copy to the beginning of the buffer */
+	if( count - fl )
+		copy_from_user(rt->rt_buffer, buffer + fl, count - fl);
+
+	rt->rt_write += count;
+	rt->rt_write %= rt->buffer_size;
+
+	return(count);
+}
+
+static struct file_operations rtlx_fops = {
+	.owner = THIS_MODULE,
+	.open = rtlx_open,
+	.release = rtlx_release,
+	.write = rtlx_write,
+	.read = rtlx_read,
+	.poll = rtlx_poll
+};
+
+static int rtlx_module_init(void)
+{
+	if ((major = register_chrdev(RTLX_MAJOR, module_name, &rtlx_fops)) < 0) {
+		printk("rtlx_module_init: unable to register device\n");
+		return (-EBUSY);
+	}
+
+	if (major == 0)
+		major = RTLX_MAJOR;
+
+	return (0);
+}
+
+static void rtlx_module_exit(void)
+{
+	unregister_chrdev(major, module_name);
+}
+
+module_init(rtlx_module_init);
+module_exit(rtlx_module_exit);
+MODULE_DESCRIPTION("MIPS RTLX");
+MODULE_AUTHOR("Elizabeth Clarke, MIPS Technologies, Inc");
+MODULE_LICENSE("GPL");
diff -urN malta/linux/arch/mips/kernel/vpe.c malta/linux/arch/mips/kernel/vpe.c
--- malta/linux/arch/mips/kernel/Attic/vpe.c	1970/01/01 00:00:00
+++ malta/linux/arch/mips/kernel/Attic/vpe.c	2005-06-10 10:45:00.035922000 +0100	1.1.2.1
@@ -0,0 +1,1295 @@
+/*
+ * Copyright (C) 2004, 2005 MIPS Technologies, Inc.  All rights reserved.
+ *
+ *  This program is free software; you can distribute it and/or modify it
+ *  under the terms of the GNU General Public License (Version 2) as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope it will be useful, but WITHOUT
+ *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ *  for more details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
+ *
+ */
+
+/*
+ * VPE support module
+ *
+ * Provides support for loading a MIPS SP program on VPE1.
+ * The SP enviroment is rather simple, no tlb's.  It needs to be relocatable
+ * (or partially linked). You should initialise your stack in the startup
+ * code. This loader looks for the symbol __start and sets up
+ * execution to resume from there. The MIPS SDE kit contains suitable examples.
+ *
+ * To load and run, simply cat a SP 'program file' to /dev/vpe1.
+ * i.e cat spapp >/dev/vpe1.
+ *
+ * You'll need to have the following device files.
+ * mknod /dev/vpe0 c 63 0
+ * mknod /dev/vpe1 c 63 1
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/fs.h>
+#include <linux/init.h>
+#include <asm/uaccess.h>
+#include <linux/slab.h>
+#include <linux/list.h>
+#include <linux/vmalloc.h>
+#include <linux/elf.h>
+#include <linux/seq_file.h>
+#include <linux/syscalls.h>
+#include <linux/moduleloader.h>
+#include <linux/interrupt.h>
+#include <linux/poll.h>
+#include <linux/bootmem.h>
+#include <asm/mipsregs.h>
+#include <asm/cacheflush.h>
+#include <asm/atomic.h>
+#include <asm/cpu.h>
+#include <asm/processor.h>
+#include <asm/system.h>
+
+typedef void *vpe_handle;
+
+#if 0
+#define DEBUGP printk
+#else
+#define DEBUGP(fmt , a...)
+#endif
+
+// defined here because the kernel module loader doesn't have
+// anything to do with it.
+#define SHN_MIPS_SCOMMON 0xff03
+
+#ifndef ARCH_SHF_SMALL
+#define ARCH_SHF_SMALL 0
+#endif
+
+/* If this is set, the section belongs in the init part of the module */
+#define INIT_OFFSET_MASK (1UL << (BITS_PER_LONG-1))
+
+// temp number, 
+#define VPE_MAJOR 63
+
+static char module_name[] = "vpe";
+static int major = 0;
+
+/* grab the likely amount of memory we will need. */
+#ifdef CONFIG_MIPS_VPE_LOADER_TOM
+#define P_SIZE (2 * 1024 * 1024)
+#else
+/* add an overhead to the max kmalloc size for non-striped symbols/etc */
+#define P_SIZE (256 * 1024)
+#endif
+
+#define MAX_VPES 16
+
+enum vpe_state {
+	VPE_STATE_UNUSED = 0,
+	VPE_STATE_INUSE,
+	VPE_STATE_RUNNING
+};
+
+enum tc_state { 
+	TC_STATE_UNUSED = 0,
+	TC_STATE_INUSE,
+	TC_STATE_RUNNING,
+	TC_STATE_DYNAMIC
+};
+
+struct vpe;
+typedef struct tc {
+	enum tc_state state;
+	int index;
+
+	/* parent VPE */
+	struct vpe *pvpe;
+	
+	/* The list of TC's with this VPE */
+	struct list_head tc;
+
+	/* The global list of tc's */
+	struct list_head list;
+} tc_t;
+
+typedef struct vpe {
+	enum vpe_state state;
+
+	/* (device) minor associated with this vpe */
+	int minor;
+
+	/* elfloader stuff */
+	void *load_addr;
+	u32 len;
+	char *pbuffer;
+	u32 plen;
+
+	unsigned long __start;
+
+	/* tc's associated with this vpe */
+	struct list_head tc;
+
+	/* The list of vpe's */
+	struct list_head list;
+
+	/* shared symbol address */
+	void *shared_ptr;
+} vpe_t;
+
+struct vpecontrol_ {
+	/* Virtual processing elements */
+	struct list_head vpe_list;
+
+	/* Thread contexts */
+	struct list_head tc_list;
+} vpecontrol;
+
+static void release_progmem(void *ptr);
+static void dump_vpe(vpe_t * v);
+extern void save_gp_address(unsigned int secbase, unsigned int rel);
+
+/* get the vpe associated with this minor */
+struct vpe *get_vpe(int minor)
+{
+	struct vpe *v;
+
+	list_for_each_entry(v, &vpecontrol.vpe_list, list) {
+		if (v->minor == minor)
+			return (v);
+	}
+
+	printk(KERN_DEBUG "VPE: get_vpe minor %d not found\n", minor);
+	return (NULL);
+}
+
+/* get the vpe associated with this minor */
+struct tc *get_tc(int index)
+{
+	struct tc *t;
+
+	list_for_each_entry(t, &vpecontrol.tc_list, list) {
+		if (t->index == index)
+			return (t);
+	}
+
+	printk(KERN_DEBUG "VPE: get_tc index %d not found\n", index);
+
+	return (NULL);
+}
+
+struct tc *get_tc_unused(void)
+{
+	struct tc *t;
+
+	list_for_each_entry(t, &vpecontrol.tc_list, list) {
+		if (t->state == TC_STATE_UNUSED)
+			return (t);
+	}
+
+	printk(KERN_DEBUG "VPE: All TC's are in use\n");
+
+	return (NULL);
+}
+
+/* allocate a vpe and associate it with this minor (or index) */
+struct vpe *alloc_vpe(int minor)
+{
+	struct vpe *v;
+
+	if ((v = kmalloc(sizeof(struct vpe), GFP_KERNEL)) == NULL) {
+		printk(KERN_WARNING "VPE: alloc_vpe no mem\n");
+		return (NULL);
+	}
+
+	memset(v, 0, sizeof(struct vpe));
+
+	INIT_LIST_HEAD(&v->tc);
+	list_add_tail(&v->list, &vpecontrol.vpe_list);
+
+	v->minor = minor;
+	return (v);
+}
+
+/* allocate a tc. At startup only tc0 is running, all other can be halted. */
+struct tc *alloc_tc(int index)
+{
+	struct tc *t;
+
+	if ((t = kmalloc(sizeof(struct tc), GFP_KERNEL)) == NULL) {
+		printk(KERN_WARNING "VPE: alloc_tc no mem\n");
+		return (NULL);
+	}
+
+	memset(t, 0, sizeof(struct tc));
+
+	INIT_LIST_HEAD(&t->tc);
+	list_add_tail(&t->list, &vpecontrol.tc_list);
+
+	t->index = index;
+
+	return (t);
+}
+
+/* clean up and free everything */
+void release_vpe(struct vpe *v)
+{
+	list_del(&v->list);
+	if (v->load_addr)
+		release_progmem(v);
+	kfree(v);
+}
+
+void dump_mtregs(void)
+{
+	unsigned long val;
+
+	val = read_c0_config3();
+	printk("config3 0x%lx MT %ld\n", val,
+	       (val & CONFIG3_MT) >> CONFIG3_MT_SHIFT);
+
+	val = read_c0_mvpconf0();
+	printk("mvpconf0 0x%lx, PVPE %ld PTC %ld M %ld\n", val,
+	       (val & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT,
+	       val & MVPCONF0_PTC, (val & MVPCONF0_M) >> MVPCONF0_M_SHIFT);
+
+	val = read_c0_mvpcontrol();
+	printk("MVPControl 0x%lx, STLB %ld VPC %ld EVP %ld\n", val,
+	       (val & MVPCONTROL_STLB) >> MVPCONTROL_STLB_SHIFT,
+	       (val & MVPCONTROL_VPC) >> MVPCONTROL_VPC_SHIFT,
+	       (val & MVPCONTROL_EVP));
+
+	val = read_c0_vpeconf0();
+	printk("VPEConf0 0x%lx MVP %ld\n", val,
+	       (val & VPECONF0_MVP) >> VPECONF0_MVP_SHIFT);
+}
+
+/* Find some VPE program space  */
+static void *alloc_progmem(u32 len)
+{
+#ifdef CONFIG_MIPS_VPE_LOADER_TOM
+	/* this means you must tell linux to use less memory than you physically have */
+	return ((void *)((max_pfn * PAGE_SIZE) + KSEG0));
+#else
+	// simple grab some mem for now
+	return (kmalloc(len, GFP_KERNEL));
+#endif
+}
+
+static void release_progmem(void *ptr)
+{
+#ifndef CONFIG_MIPS_VPE_LOADER_TOM
+	if (ptr)
+		kfree(ptr);
+#endif
+}
+
+/* Update size with this section: return offset. */
+static long get_offset(unsigned long *size, Elf_Shdr * sechdr)
+{
+	long ret;
+
+	ret = ALIGN(*size, sechdr->sh_addralign ? : 1);
+	*size = ret + sechdr->sh_size;
+	return ret;
+}
+
+/* Lay out the SHF_ALLOC sections in a way not dissimilar to how ld
+   might -- code, read-only data, read-write data, small data.  Tally
+   sizes, and place the offsets into sh_entsize fields: high bit means it
+   belongs in init. */
+static void layout_sections(struct module *mod, const Elf_Ehdr * hdr,
+			    Elf_Shdr * sechdrs, const char *secstrings)
+{
+	static unsigned long const masks[][2] = {
+		/* NOTE: all executable code must be the first section
+		 * in this array; otherwise modify the text_size
+		 * finder in the two loops below */
+		{SHF_EXECINSTR | SHF_ALLOC, ARCH_SHF_SMALL},
+		{SHF_ALLOC, SHF_WRITE | ARCH_SHF_SMALL},
+		{SHF_WRITE | SHF_ALLOC, ARCH_SHF_SMALL},
+		{ARCH_SHF_SMALL | SHF_ALLOC, 0}
+	};
+	unsigned int m, i;
+
+	for (i = 0; i < hdr->e_shnum; i++)
+		sechdrs[i].sh_entsize = ~0UL;
+
+	for (m = 0; m < ARRAY_SIZE(masks); ++m) {
+		for (i = 0; i < hdr->e_shnum; ++i) {
+			Elf_Shdr *s = &sechdrs[i];
+
+			//  || strncmp(secstrings + s->sh_name, ".init", 5) == 0)
+			if ((s->sh_flags & masks[m][0]) != masks[m][0]
+			    || (s->sh_flags & masks[m][1])
+			    || s->sh_entsize != ~0UL)
+				continue;
+			s->sh_entsize = get_offset(&mod->core_size, s);
+		}
+
+		if (m == 0)
+			mod->core_text_size = mod->core_size;
+
+	}
+}
+
+
+/* from module-elf32.c, but subverted a little */
+
+struct mips_hi16 {
+	struct mips_hi16 *next;
+	Elf32_Addr *addr;
+	Elf32_Addr value;
+};
+
+static struct mips_hi16 *mips_hi16_list;
+static unsigned int gp_offs, gp_addr;
+
+static int apply_r_mips_none(struct module *me, uint32_t *location,
+			     Elf32_Addr v)
+{
+	return 0;
+}
+
+static int apply_r_mips_gprel16(struct module *me, uint32_t *location,
+				Elf32_Addr v)
+{
+	int rel;
+	
+	if( !(*location & 0xffff) ) {
+		rel = (int)v - gp_addr;
+	}
+	else {
+		/* .sbss + gp(relative) + offset */
+		/* kludge! */
+		rel =  (int)(short)((int)v + gp_offs +
+				    (int)(short)(*location & 0xffff) - gp_addr);
+	}
+	
+	if( (rel > 32768) || (rel < -32768) ) {
+		printk(KERN_ERR
+		       "apply_r_mips_gprel16: relative address out of range 0x%x %d\n",
+		       rel, rel);
+		return(-ENOEXEC);
+	}
+
+	*location = (*location & 0xffff0000) | (rel & 0xffff);
+	
+	return 0;
+}
+
+static int apply_r_mips_pc16(struct module *me, uint32_t *location,
+			     Elf32_Addr v)
+{
+	int rel;
+	rel = (((unsigned int)v - (unsigned int)location));
+	rel >>= 2;		// because the offset is in _instructions_ not bytes.
+	rel -= 1;		// and one instruction less due to the branch delay slot.
+	
+	if( (rel > 32768) || (rel < -32768) ) {
+		printk(KERN_ERR
+		       "apply_r_mips_pc16: relative address out of range 0x%x\n", rel);
+		return(-ENOEXEC);
+	}
+	
+	*location = (*location & 0xffff0000) | (rel & 0xffff);
+	return 0;
+}
+
+static int apply_r_mips_32(struct module *me, uint32_t *location,
+			   Elf32_Addr v)
+{
+	*location += v;
+
+	return 0;
+}
+
+static int apply_r_mips_26(struct module *me, uint32_t *location,
+			   Elf32_Addr v)
+{
+	if (v % 4) {
+		printk(KERN_ERR "module %s: dangerous relocation mod4\n", me->name);
+		return -ENOEXEC;
+	}
+
+/* Not desperately convinced this is a good check of an overflow condition
+   anyway. But it gets in the way of handling undefined weak symbols which
+   we want to set to zero.
+   if ((v & 0xf0000000) != (((unsigned long)location + 4) & 0xf0000000)) {
+   printk(KERN_ERR
+   "module %s: relocation overflow\n",
+   me->name);
+   return -ENOEXEC;
+   }
+*/
+
+	*location = (*location & ~0x03ffffff) |
+		((*location + (v >> 2)) & 0x03ffffff);
+	return 0;
+}
+
+static int apply_r_mips_hi16(struct module *me, uint32_t *location,
+			     Elf32_Addr v)
+{
+	struct mips_hi16 *n;
+
+	/*
+	 * We cannot relocate this one now because we don't know the value of
+	 * the carry we need to add.  Save the information, and let LO16 do the
+	 * actual relocation.
+	 */
+	n = kmalloc(sizeof *n, GFP_KERNEL);
+	if (!n)
+		return -ENOMEM;
+
+	n->addr = location;
+	n->value = v;
+	n->next = mips_hi16_list;
+	mips_hi16_list = n;
+
+	return 0;
+}
+
+static int apply_r_mips_lo16(struct module *me, uint32_t *location,
+			     Elf32_Addr v)
+{
+	unsigned long insnlo = *location;
+	Elf32_Addr val, vallo;
+
+	/* Sign extend the addend we extract from the lo insn.  */
+	vallo = ((insnlo & 0xffff) ^ 0x8000) - 0x8000;
+
+	if (mips_hi16_list != NULL) {
+		struct mips_hi16 *l;
+
+		l = mips_hi16_list;
+		while (l != NULL) {
+			struct mips_hi16 *next;
+			unsigned long insn;
+
+			/*
+			 * The value for the HI16 had best be the same.
+			 */
+			if (v != l->value) {
+				printk("%d != %d\n", v, l->value);
+				goto out_danger;
+			}
+			
+
+			/*
+			 * Do the HI16 relocation.  Note that we actually don't
+			 * need to know anything about the LO16 itself, except
+			 * where to find the low 16 bits of the addend needed
+			 * by the LO16.
+			 */
+			insn = *l->addr;
+			val = ((insn & 0xffff) << 16) + vallo;
+			val += v;
+
+			/*
+			 * Account for the sign extension that will happen in
+			 * the low bits.
+			 */
+			val = ((val >> 16) + ((val & 0x8000) != 0)) & 0xffff;
+
+			insn = (insn & ~0xffff) | val;
+			*l->addr = insn;
+
+			next = l->next;
+			kfree(l);
+			l = next;
+		}
+
+		mips_hi16_list = NULL;
+	}
+
+	/*
+	 * Ok, we're done with the HI16 relocs.  Now deal with the LO16.
+	 */
+	val = v + vallo;
+	insnlo = (insnlo & ~0xffff) | (val & 0xffff);
+	*location = insnlo;
+
+	return 0;
+
+out_danger:
+	printk(KERN_ERR "module %s: dangerous " "relocation\n", me->name);
+
+	return -ENOEXEC;
+}
+
+static int (*reloc_handlers[]) (struct module *me, uint32_t *location,
+				Elf32_Addr v) = {
+	[R_MIPS_NONE]	= apply_r_mips_none,
+	[R_MIPS_32]	= apply_r_mips_32,
+	[R_MIPS_26]	= apply_r_mips_26,
+	[R_MIPS_HI16]	= apply_r_mips_hi16,
+	[R_MIPS_LO16]	= apply_r_mips_lo16,
+	[R_MIPS_GPREL16] = apply_r_mips_gprel16,
+	[R_MIPS_PC16] = apply_r_mips_pc16
+};
+
+
+int apply_relocations(Elf32_Shdr *sechdrs,
+		      const char *strtab,
+		      unsigned int symindex,
+		      unsigned int relsec,
+		      struct module *me)
+{
+	Elf32_Rel *rel = (void *) sechdrs[relsec].sh_addr;
+	Elf32_Sym *sym;
+	uint32_t *location;
+	unsigned int i;
+	Elf32_Addr v;
+	int res;
+
+	for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) {
+		Elf32_Word r_info = rel[i].r_info;
+
+		/* This is where to make the change */
+		location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr
+			+ rel[i].r_offset;
+		/* This is the symbol it is referring to */
+		sym = (Elf32_Sym *)sechdrs[symindex].sh_addr
+			+ ELF32_R_SYM(r_info);
+		
+		if (!sym->st_value) {
+			printk(KERN_DEBUG "%s: undefined weak symbol %s\n",
+			       me->name, strtab + sym->st_name);
+			/* just print the warning, dont barf */
+		}
+
+		v = sym->st_value;
+
+		res = reloc_handlers[ELF32_R_TYPE(r_info)](me, location, v);
+		if( res ) {
+			printk(KERN_DEBUG
+			       "relocation error 0x%x sym refer <%s> value 0x%x "
+			       "type 0x%x r_info 0x%x\n",
+			       (unsigned int)location, strtab + sym->st_name, v,
+			       r_info, ELF32_R_TYPE(r_info));
+		}
+
+		if (res)
+			return res;
+	}
+
+	return 0;
+}
+
+void save_gp_address(unsigned int secbase, unsigned int rel)
+{
+	gp_addr = secbase + rel;
+	gp_offs = gp_addr - (secbase & 0xffff0000);
+}
+/* end module-elf32.c */
+
+
+
+/* Change all symbols so that sh_value encodes the pointer directly. */
+static int simplify_symbols(Elf_Shdr * sechdrs,
+			    unsigned int symindex,
+			    const char *strtab,
+			    const char *secstrings,
+			    unsigned int nsecs, struct module *mod)
+{
+	Elf_Sym *sym = (void *)sechdrs[symindex].sh_addr;
+	unsigned long secbase, bssbase = 0;
+	unsigned int i, n = sechdrs[symindex].sh_size / sizeof(Elf_Sym);
+	int ret = 0, size;
+
+	/* find the .bss section for COMMON symbols */
+	for (i = 0; i < nsecs; i++) {
+		if (strncmp(secstrings + sechdrs[i].sh_name, ".bss", 4) == 0)
+			bssbase = sechdrs[i].sh_addr;
+	}
+
+	for (i = 1; i < n; i++) {
+		switch (sym[i].st_shndx) {
+		case SHN_COMMON:
+			/* Allocate space for the symbol in the .bss section. st_value is currently size.
+			   We want it to have the address of the symbol. */
+
+			size = sym[i].st_value;
+			sym[i].st_value = bssbase;
+
+			bssbase += size;
+			break;
+
+		case SHN_ABS:
+			/* Don't need to do anything */
+			break;
+
+		case SHN_UNDEF:
+			/* ret = -ENOENT; */
+			break;
+
+		case SHN_MIPS_SCOMMON:
+
+			printk(KERN_DEBUG
+			       "simplify_symbols: ignoring SHN_MIPS_SCOMMON symbol <%s> st_shndx %d\n",
+			       strtab + sym[i].st_name, sym[i].st_shndx);
+
+			// .sbss section 
+			break;
+
+		default:
+			secbase = sechdrs[sym[i].st_shndx].sh_addr;
+
+			if (strncmp(strtab + sym[i].st_name, "_gp", 3) == 0) {
+				save_gp_address(secbase, sym[i].st_value);
+			}
+
+			sym[i].st_value += secbase;
+			break;
+		}
+
+	}
+
+	return ret;
+}
+
+#ifdef DEBUG_ELFLOADER
+static void dump_elfsymbols(Elf_Shdr * sechdrs, unsigned int symindex,
+			    const char *strtab, struct module *mod)
+{
+	Elf_Sym *sym = (void *)sechdrs[symindex].sh_addr;
+	unsigned int i, n = sechdrs[symindex].sh_size / sizeof(Elf_Sym);
+
+	printk(KERN_DEBUG "dump_elfsymbols: n %d\n", n);
+	for (i = 1; i < n; i++) {
+		printk(KERN_DEBUG " i %d name <%s> 0x%x\n", i,
+		       strtab + sym[i].st_name, sym[i].st_value);
+	}
+}
+#endif
+
+static void dump_tc(struct tc *t)
+{
+	printk(KERN_WARNING "VPE: TC index %d TCStatus 0x%lx halt 0x%lx\n",
+	       t->index, read_tc_c0_tcstatus(), read_tc_c0_tchalt());
+	printk(KERN_WARNING "VPE: tcrestart 0x%lx\n", read_tc_c0_tcrestart());
+}
+
+static void dump_tclist(void)
+{
+	struct tc *t;
+
+	list_for_each_entry(t, &vpecontrol.tc_list, list) {
+		dump_tc(t);
+	}
+}
+
+/* We are prepared so configure and start the VPE... */
+int vpe_run(vpe_t * v)
+{
+	unsigned long val;
+	struct tc *t;
+
+	/* check we are the Master VPE */
+	val = read_c0_vpeconf0();
+	if (!(val & VPECONF0_MVP)) {
+		printk(KERN_WARNING
+		       "VPE: only Master VPE's are allowed to configure MT\n");
+		return (-1);
+	}
+
+	/* disable MT (using dvpe) */
+	dvpe();
+
+	/* Put MVPE's into 'configuration state' */
+	write_c0_mvpcontrol(read_c0_mvpcontrol() | MVPCONTROL_VPC);
+
+	if (!list_empty(&v->tc)) {
+		if ((t = list_entry(v->tc.next, struct tc, tc)) == NULL) {
+			printk(KERN_WARNING "VPE: TC %d is already in use.\n",
+			       t->index);
+			return (-ENOEXEC);
+		}
+	} else {
+		printk(KERN_WARNING "VPE: No TC's associated with VPE %d\n",
+		       v->minor);
+		return (-ENOEXEC);
+	}
+
+	settc(t->index);
+
+	val = read_vpe_c0_vpeconf0();
+
+	/* should check it is halted, and not activated */
+	if ((read_tc_c0_tcstatus() & TCSTATUS_A) || !(read_tc_c0_tchalt() & TCHALT_H)) {
+		printk(KERN_WARNING "VPE: TC %d is already doing something!\n",
+		       t->index);
+
+		dump_tclist();
+		return (-ENOEXEC);
+	}
+
+	/* Write the address we want it to start running from in the TCPC register. */
+	write_tc_c0_tcrestart((unsigned long)v->__start);
+
+	/* write the sivc_info address to tccontext */
+	write_tc_c0_tccontext((unsigned long)0);
+
+	/* Set up the XTC bit in vpeconf0 to point at our tc */
+	write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() | (t->index << VPECONF0_XTC_SHIFT));
+
+	/* mark the TC as activated, not interrupt exempt and not dynamically allocatable */
+	val = read_tc_c0_tcstatus();
+	val = (val & ~(TCSTATUS_DA | TCSTATUS_IXMT)) | TCSTATUS_A;
+	write_tc_c0_tcstatus(val);
+	
+	write_tc_c0_tchalt(read_tc_c0_tchalt() & ~TCHALT_H);
+
+	/* set up VPE1 */
+	write_vpe_c0_vpecontrol(read_vpe_c0_vpecontrol() & ~VPECONTROL_TE);	// no multiple TC's
+	write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() | VPECONF0_VPA);	// enable this VPE
+
+	/* The sde-kit passes 'memsize' to __start in $a3, so set something here...
+	   Or set $a3 to zero and define DFLT_STACK_SIZE and DFLT_HEAP_SIZE when you compile
+	   your program */
+
+	mttgpr($7, 0);
+
+	/* set config to be the same as vpe0, particularly kseg0 coherency alg */
+	write_vpe_c0_config(read_c0_config());
+
+	/* clear out any left overs from a previous program */
+	write_vpe_c0_cause(0);
+
+	/* take system out of configuration state */
+	write_c0_mvpcontrol(read_c0_mvpcontrol() & ~MVPCONTROL_VPC);
+
+	/* clear interrupts enabled IE, ERL, EXL, and KSU from c0 status */
+	write_vpe_c0_status(read_vpe_c0_status() & ~(ST0_ERL | ST0_KSU | ST0_IE | ST0_EXL));
+
+	/* set it running */
+	evpe(EVPE_ENABLE);
+
+	return (0);
+}
+
+static unsigned long find_vpe_symbols(vpe_t * v, Elf_Shdr * sechdrs,
+				      unsigned int symindex, const char *strtab,
+				      struct module *mod)
+{
+	Elf_Sym *sym = (void *)sechdrs[symindex].sh_addr;
+	unsigned int i, n = sechdrs[symindex].sh_size / sizeof(Elf_Sym);
+
+	for (i = 1; i < n; i++) {
+		if (strcmp(strtab + sym[i].st_name, "__start") == 0) {
+			v->__start = sym[i].st_value;
+		}
+
+		if (strcmp(strtab + sym[i].st_name, "vpe_shared") == 0) {
+			v->shared_ptr = (void *)sym[i].st_value;
+		}
+	}
+
+	return (0);
+}
+
+/* Allocates a VPE with some program code space(the load address), copies the contents
+   of the program (p)buffer performing relocatations/etc, free's it when finished.
+*/
+int vpe_elfload(vpe_t * v)
+{
+	Elf_Ehdr *hdr;
+	Elf_Shdr *sechdrs;
+	long err = 0;
+	char *secstrings, *strtab = NULL;
+	unsigned int len, i, symindex = 0, strindex = 0;
+
+	struct module mod;	// so we can re-use the relocations code
+
+	memset(&mod, 0, sizeof(struct module));
+	strcpy(mod.name, "VPE dummy prog module");
+
+	hdr = (Elf_Ehdr *) v->pbuffer;
+	len = v->plen;
+
+	/* Sanity checks against insmoding binaries or wrong arch,
+	   weird elf version */
+	if (memcmp(hdr->e_ident, ELFMAG, 4) != 0
+	    || hdr->e_type != ET_REL || !elf_check_arch(hdr)
+	    || hdr->e_shentsize != sizeof(*sechdrs)) {
+		printk(KERN_WARNING
+		       "VPE program, wrong arch or weird elf version\n");
+
+		return (-ENOEXEC);
+	}
+
+	if (len < hdr->e_shoff + hdr->e_shnum * sizeof(Elf_Shdr)) {
+		printk(KERN_ERR "VPE program length %u truncated\n", len);
+		return (-ENOEXEC);
+	}
+
+	/* Convenience variables */
+	sechdrs = (void *)hdr + hdr->e_shoff;
+	secstrings = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
+	sechdrs[0].sh_addr = 0;
+
+	/* And these should exist, but gcc whinges if we don't init them */
+	symindex = strindex = 0;
+
+	for (i = 1; i < hdr->e_shnum; i++) {
+
+		if (sechdrs[i].sh_type != SHT_NOBITS
+		    && len < sechdrs[i].sh_offset + sechdrs[i].sh_size) {
+			printk(KERN_ERR "VPE program length %u truncated\n",
+			       len);
+			return (-ENOEXEC);
+		}
+
+		/* Mark all sections sh_addr with their address in the
+		   temporary image. */
+		sechdrs[i].sh_addr = (size_t) hdr + sechdrs[i].sh_offset;
+
+		/* Internal symbols and strings. */
+		if (sechdrs[i].sh_type == SHT_SYMTAB) {
+			symindex = i;
+			strindex = sechdrs[i].sh_link;
+			strtab = (char *)hdr + sechdrs[strindex].sh_offset;
+		}
+	}
+
+	layout_sections(&mod, hdr, sechdrs, secstrings);
+
+	v->load_addr = alloc_progmem(mod.core_size);
+	memset(v->load_addr, 0, mod.core_size);
+
+	printk("VPE elf_loader: loading to %p\n", v->load_addr);
+
+	for (i = 0; i < hdr->e_shnum; i++) {
+		void *dest;
+
+		if (!(sechdrs[i].sh_flags & SHF_ALLOC))
+			continue;
+
+		dest = v->load_addr + sechdrs[i].sh_entsize;
+
+		if (sechdrs[i].sh_type != SHT_NOBITS)
+			memcpy(dest, (void *)sechdrs[i].sh_addr,
+			       sechdrs[i].sh_size);
+		/* Update sh_addr to point to copy in image. */
+		sechdrs[i].sh_addr = (unsigned long)dest;
+	}
+
+	/* Fix up syms, so that st_value is a pointer to location. */
+	err =
+		simplify_symbols(sechdrs, symindex, strtab, secstrings,
+				 hdr->e_shnum, &mod);
+	if (err < 0) {
+		printk(KERN_WARNING "VPE: unable to simplify symbols\n");
+		goto cleanup;
+	}
+
+	/* Now do relocations. */
+	for (i = 1; i < hdr->e_shnum; i++) {
+		const char *strtab = (char *)sechdrs[strindex].sh_addr;
+		unsigned int info = sechdrs[i].sh_info;
+
+		/* Not a valid relocation section? */
+		if (info >= hdr->e_shnum)
+			continue;
+
+		/* Don't bother with non-allocated sections */
+		if (!(sechdrs[info].sh_flags & SHF_ALLOC))
+			continue;
+
+		if (sechdrs[i].sh_type == SHT_REL)
+			err =
+				apply_relocations(sechdrs, strtab, symindex, i, &mod);
+		else if (sechdrs[i].sh_type == SHT_RELA)
+			err = apply_relocate_add(sechdrs, strtab, symindex, i,
+						 &mod);
+		if (err < 0) {
+			printk(KERN_WARNING
+			       "vpe_elfload: error in relocations err %ld\n",
+			       err);
+			goto cleanup;
+		}
+	}
+
+	/* make sure it's physically written out */
+	flush_icache_range((unsigned long)v->load_addr,
+			   (unsigned long)v->load_addr + v->len);
+
+	if ((find_vpe_symbols(v, sechdrs, symindex, strtab, &mod)) < 0) {
+
+		printk(KERN_WARNING
+		       "VPE: program doesn't contain __start or vpe_shared symbols\n");
+		err = -ENOEXEC;
+	}
+
+	printk(" elf loaded\n");
+
+cleanup:
+	return (err);
+}
+
+static void dump_vpe(vpe_t * v)
+{
+	struct tc *t;
+
+	printk(KERN_DEBUG "VPEControl 0x%lx\n", read_vpe_c0_vpecontrol());
+	printk(KERN_DEBUG "VPEConf0 0x%lx\n", read_vpe_c0_vpeconf0());
+
+	list_for_each_entry(t, &vpecontrol.tc_list, list) {
+		dump_tc(t);
+	}
+}
+
+/* checks for VPE is unused and gets ready to load program	 */
+static int vpe_open(struct inode *inode, struct file *filp)
+{
+	int minor;
+	vpe_t *v;
+
+	/* assume only 1 device at the mo. */
+	if ((minor = MINOR(inode->i_rdev)) != 1) {
+		printk(KERN_WARNING "VPE: only vpe1 is supported\n");
+		return (-ENODEV);
+	}
+
+	if ((v = get_vpe(minor)) == NULL) {
+		printk(KERN_WARNING "VPE: unable to get vpe\n");
+		return (-ENODEV);
+	}
+
+	if (v->state != VPE_STATE_UNUSED) {
+		unsigned long tmp;
+		struct tc *t;
+		
+		printk(KERN_WARNING "VPE: device %d already in use\n", minor);
+
+		dvpe();
+		dump_vpe(v);
+		
+		printk(KERN_WARNING "VPE: re-initialising %d\n", minor);
+
+		release_progmem(v->load_addr);
+
+		t = get_tc(minor);
+		settc(minor);
+		tmp = read_tc_c0_tcstatus();
+
+		/* mark not allocated and not dynamically allocatable */
+		tmp &= ~(TCSTATUS_A | TCSTATUS_DA);
+		tmp |= TCSTATUS_IXMT;	/* interrupt exempt */
+		write_tc_c0_tcstatus(tmp);
+		
+		write_tc_c0_tchalt(TCHALT_H);
+			
+	}
+	
+	// allocate it so when we get write ops we know it's expected.
+	v->state = VPE_STATE_INUSE;
+
+	/* this of-course trashes what was there before... */
+	v->pbuffer = vmalloc(P_SIZE);
+	v->plen = P_SIZE;
+	v->load_addr = NULL;
+	v->len = 0;
+
+	return (0);
+}
+
+static int vpe_release(struct inode *inode, struct file *filp)
+{
+	int minor, ret = 0;
+	vpe_t *v;
+	Elf_Ehdr *hdr;
+
+	minor = MINOR(inode->i_rdev);
+	if ((v = get_vpe(minor)) == NULL)
+		return (-ENODEV);
+
+	// simple case of fire and forget, so tell the VPE to run...
+
+	hdr = (Elf_Ehdr *) v->pbuffer;
+	if (memcmp(hdr->e_ident, ELFMAG, 4) == 0) {
+		if (vpe_elfload(v) >= 0)
+			vpe_run(v);
+		else {
+			printk(KERN_WARNING "VPE: ELF load failed.\n");
+			ret = -ENOEXEC;
+		}
+	} else {
+		printk(KERN_WARNING "VPE: only elf files are supported\n");
+		ret = -ENOEXEC;
+	}
+
+	// cleanup any temp buffers
+	if (v->pbuffer)
+		vfree(v->pbuffer);
+	v->plen = 0;
+	return (ret);
+}
+
+static ssize_t vpe_write(struct file *file, const char __user * buffer,
+			 size_t count, loff_t * ppos)
+{
+	int minor;
+	size_t ret = count;
+	vpe_t *v;
+
+	minor = MINOR(file->f_dentry->d_inode->i_rdev);
+	if ((v = get_vpe(minor)) == NULL)
+		return (-ENODEV);
+
+	if (v->pbuffer == NULL) {
+		printk(KERN_ERR "vpe_write: no pbuffer\n");
+		return (-ENOMEM);
+	}
+
+	if ((count + v->len) > v->plen) {
+		printk(KERN_WARNING
+		       "VPE Loader: elf size too big. Perhaps strip uneeded symbols\n");
+		return (-ENOMEM);
+	}
+
+	count -= copy_from_user(v->pbuffer + v->len, buffer, count);
+	if (!count) {
+		printk("vpe_write: copy_to_user failed\n");
+		return (-EFAULT);
+	}
+
+	v->len += count;
+	return (ret);
+}
+
+static struct file_operations vpe_fops = {
+	.owner = THIS_MODULE,
+	.open = vpe_open,
+	.release = vpe_release,
+	.write = vpe_write
+};
+
+/* module wrapper entry points */
+/* give me a vpe */
+vpe_handle vpe_alloc(void)
+{
+	int i;
+	struct vpe *v;
+
+	/* find a vpe */
+	for (i = 1; i < MAX_VPES; i++) {
+		if ((v = get_vpe(i)) != NULL) {
+			v->state = VPE_STATE_INUSE;
+			return (v);
+		}
+	}
+	return (NULL);
+}
+
+EXPORT_SYMBOL(vpe_alloc);
+
+/* start running from here */
+int vpe_start(vpe_handle vpe, unsigned long start)
+{
+	struct vpe *v = vpe;
+
+	v->__start = start;
+	return (vpe_run(v));
+}
+
+EXPORT_SYMBOL(vpe_start);
+
+/* halt it for now */
+int vpe_stop(vpe_handle vpe)
+{
+	struct vpe *v = vpe;
+	struct tc *t;
+	unsigned int evpe_flags;
+
+	evpe_flags = dvpe();
+
+	if ((t = list_entry(v->tc.next, struct tc, tc)) != NULL) {
+
+		settc(t->index);
+		write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() & ~VPECONF0_VPA);
+	}
+
+	evpe(evpe_flags);
+
+	return (0);
+}
+
+EXPORT_SYMBOL(vpe_stop);
+
+/* I've done with it thank you */
+int vpe_free(vpe_handle vpe)
+{
+	struct vpe *v = vpe;
+	struct tc *t;
+	unsigned int evpe_flags;
+
+	if ((t = list_entry(v->tc.next, struct tc, tc)) == NULL) {
+		return (-ENOEXEC);
+	}
+
+	evpe_flags = dvpe();
+
+	/* Put MVPE's into 'configuration state' */
+	write_c0_mvpcontrol(read_c0_mvpcontrol() | MVPCONTROL_VPC);
+
+	settc(t->index);
+	write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() & ~VPECONF0_VPA);
+
+	/* mark the TC unallocated and halt'ed */
+	write_tc_c0_tcstatus(read_tc_c0_tcstatus() & ~TCSTATUS_A);
+	write_tc_c0_tchalt(TCHALT_H);
+
+	v->state = VPE_STATE_UNUSED;
+
+	write_c0_mvpcontrol(read_c0_mvpcontrol() & ~MVPCONTROL_VPC);
+	evpe(evpe_flags);
+
+	return (0);
+}
+
+EXPORT_SYMBOL(vpe_free);
+
+void *vpe_get_shared(int index)
+{
+	struct vpe *v;
+
+	if ((v = get_vpe(index)) == NULL) {
+		printk(KERN_WARNING "vpe: invalid vpe index %d\n", index);
+		return (NULL);
+	}
+
+	return (v->shared_ptr);
+}
+
+EXPORT_SYMBOL(vpe_get_shared);
+
+static int vpe_module_init(void)
+{
+	struct vpe *v = NULL;
+	struct tc *t;
+	unsigned long val;
+	int i;
+
+	if (!cpu_has_mipsmt)
+		return (-ENODEV);
+
+	if ((major = register_chrdev(VPE_MAJOR, module_name, &vpe_fops) < 0))
+		return (-EBUSY);
+
+	if (major == 0)
+		major = VPE_MAJOR;
+
+	dmt();
+	dvpe();
+
+	/* Put MVPE's into 'configuration state' */
+	write_c0_mvpcontrol(read_c0_mvpcontrol() | MVPCONTROL_VPC);
+
+	/* dump_mtregs(); */
+
+	INIT_LIST_HEAD(&vpecontrol.vpe_list);
+	INIT_LIST_HEAD(&vpecontrol.tc_list);
+
+	val = read_c0_mvpconf0();
+	for (i = 0; i < ((val & MVPCONF0_PTC) + 1); i++) {
+		t = alloc_tc(i);
+
+		/* VPE's */
+		if (i < ((val & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT) + 1) {
+			settc(i);
+
+			if ((v = alloc_vpe(i)) == NULL) {
+				printk(KERN_WARNING "VPE: unable to allocate VPE\n");
+				return (-ENODEV);
+			}
+
+			list_add(&t->tc, &v->tc);	/* add the tc to the list of this vpe's tc's. */
+
+			/* deactivate all but vpe0 */
+			if (i != 0) {
+				unsigned long tmp = read_vpe_c0_vpeconf0();
+
+				tmp &= ~VPECONF0_VPA;
+
+				/* master VPE */
+				tmp |= VPECONF0_MVP;
+				write_vpe_c0_vpeconf0(tmp);
+			}
+
+			/* disable multi-threading with TC's */
+			write_vpe_c0_vpecontrol(read_vpe_c0_vpecontrol() & ~VPECONTROL_TE);
+
+			if (i != 0) {
+				write_vpe_c0_status((read_c0_status() &
+						     ~(ST0_IM | ST0_IE | ST0_KSU))
+						    | ST0_CU0);
+
+				/* set config to be the same as vpe0, particularly kseg0 coherency alg */
+				write_vpe_c0_config(read_c0_config());
+			}
+
+		}
+
+		/* TC's */
+		t->pvpe = v;	/* set the parent vpe */
+
+		if (i != 0) {
+			unsigned long tmp;
+
+			/* tc 0 will of course be running.... */
+			if (i == 0)
+				t->state = TC_STATE_RUNNING;
+
+			settc(i);
+
+			/* bind a TC to each VPE, May as well put all excess TC's
+			   on the last VPE */
+			if (i >= (((val & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT) + 1))
+				write_tc_c0_tcbind(read_tc_c0_tcbind() |
+						   ((val & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT));
+			else
+				write_tc_c0_tcbind(read_tc_c0_tcbind() | i);
+
+			tmp = read_tc_c0_tcstatus();
+
+			/* mark not allocated and not dynamically allocatable */
+			tmp &= ~(TCSTATUS_A | TCSTATUS_DA);
+			tmp |= TCSTATUS_IXMT;	/* interrupt exempt */
+			write_tc_c0_tcstatus(tmp);
+
+			write_tc_c0_tchalt(TCHALT_H);
+		}
+	}
+
+	/* release config state */
+	write_c0_mvpcontrol(read_c0_mvpcontrol() & ~MVPCONTROL_VPC);
+
+	return (0);
+}
+
+static void vpe_module_exit(void)
+{
+	struct vpe *v, *n;
+
+	list_for_each_entry_safe(v, n, &vpecontrol.vpe_list, list) {
+		if (v->state != VPE_STATE_UNUSED) {
+			release_vpe(v);
+		}
+	}
+
+	unregister_chrdev(major, module_name);
+}
+
+module_init(vpe_module_init);
+module_exit(vpe_module_exit);
+MODULE_DESCRIPTION("MIPS VPE");
+MODULE_AUTHOR("Elizabeth Clarke, MIPS Technologies, Inc");
+MODULE_LICENSE("GPL");
diff -urN malta/linux/arch/mips/kernel/Makefile malta/linux/arch/mips/kernel/Makefile
--- malta/linux/arch/mips/kernel/Makefile	2004/09/14 16:27:52	1.80.1000.2
+++ malta/linux/arch/mips/kernel/Makefile	2005/06/10 09:44:59	1.80.1000.3
@@ -35,6 +35,9 @@
 
 obj-$(CONFIG_SMP)		+= smp.o
 
+obj-$(CONFIG_MIPS_VPE_LOADER)	+= vpe.o
+obj-$(CONFIG_MIPS_VPE_APSP_API)	+= rtlx.o
+
 obj-$(CONFIG_I8259)		+= i8259.o
 obj-$(CONFIG_IRQ_CPU)		+= irq_cpu.o
 obj-$(CONFIG_IRQ_CPU_RM7K)	+= irq-rm7000.o
diff -urN malta/linux/arch/mips/kernel/cpu-probe.c malta/linux/arch/mips/kernel/cpu-probe.c
--- malta/linux/arch/mips/kernel/cpu-probe.c	2005/01/05 18:18:38	1.35.1000.4
+++ malta/linux/arch/mips/kernel/cpu-probe.c	2005/06/10 09:44:59	1.35.1000.5
@@ -76,11 +76,25 @@
 #endif
 }
 
+static int __initdata nowait = 0;
+
+int __init wait_disable(char *s)
+{
+	nowait = 1;
+	return 1;
+}
+
+__setup("nowait", wait_disable);
+
 static inline void check_wait(void)
 {
 	struct cpuinfo_mips *c = &current_cpu_data;
 
 	printk("Checking for 'wait' instruction... ");
+	if (nowait) {
+		printk (" disabled.\n");
+		return;
+	}
 	switch (c->cputype) {
 	case CPU_R3081:
 	case CPU_R3081E:
@@ -108,6 +122,7 @@
 /*	case CPU_20KC:*/
 	case CPU_24K:
 	case CPU_25KF:
+	case CPU_34K:
 		cpu_wait = r4k_wait;
 		printk(" available.\n");
 		break;
@@ -438,6 +453,10 @@
 		/* Vectored Interrupts */
 		c->options |= MIPS_CPU_VI;
 	}
+	if (config3 & (1<<2)) {
+		/* MIPS MT */
+		c->options |= MIPS_CPU_MIPSMT;
+	}
 }
 
 static inline void decode_config2(struct cpuinfo_mips *c)
@@ -514,6 +533,10 @@
 		/* Probe for L2 cache */
 		c->scache.flags &= ~MIPS_CACHE_NOT_PRESENT;
 		break;
+	case PRID_IMP_34K:
+		c->cputype = CPU_34K;
+		c->isa_level = MIPS_CPU_ISA_M32;
+		break;
 	}
 }
 
diff -urN malta/linux/arch/mips/kernel/entry.S malta/linux/arch/mips/kernel/entry.S
--- malta/linux/arch/mips/kernel/entry.S	2004/09/14 16:27:52	1.60.1000.2
+++ malta/linux/arch/mips/kernel/entry.S	2005/06/10 09:44:59	1.60.1000.3
@@ -153,3 +153,17 @@
 #endif
 	j	ret_from_irq
 	END(spurious_interrupt)
+
+	
+#if defined(CONFIG_CPU_MIPS32R2) || defined(CONFIG_MIPS_MT)
+/*
+ * MIPS32R2 Instruction Hazard Barrier - must be called
+ */
+
+LEAF(mips_ihb)
+	.set	mips32
+	jr.hb	ra
+	nop
+	END(mips_ihb)
+
+#endif /* CONFIG_CPU_MIPS32R2 */
diff -urN malta/linux/arch/mips/kernel/proc.c malta/linux/arch/mips/kernel/proc.c
--- malta/linux/arch/mips/kernel/proc.c	2004/03/24 10:37:26	1.53
+++ malta/linux/arch/mips/kernel/proc.c	2005/06/10 09:44:59	1.53.1000.1
@@ -68,6 +68,7 @@
 	[CPU_20KC]	"MIPS 20Kc",
 	[CPU_24K]	"MIPS 24K",
 	[CPU_25KF]	"MIPS 25Kf",
+	[CPU_34K]	"MIPS 34K",
 	[CPU_VR4111]	"NEC VR4111",
 	[CPU_VR4121]	"NEC VR4121",
 	[CPU_VR4122]	"NEC VR4122",
diff -urN malta/linux/include/asm-mips/mipsmtregs.h malta/linux/include/asm-mips/mipsmtregs.h
--- malta/linux/include/asm-mips/Attic/mipsmtregs.h	1970/01/01 00:00:00
+++ malta/linux/include/asm-mips/Attic/mipsmtregs.h	2005-06-10 10:45:00.229894000 +0100	1.1.2.1
@@ -0,0 +1,360 @@
+/*
+ * MT regs definitions, follows on from mipsregs.h
+ * Copyright (C) 2004 - 2005 MIPS Technologies, Inc.  All rights reserved.
+ * Elizabeth Clarke et. al.
+ *
+ */
+#ifndef _ASM_MIPSMTREGS_H
+#define _ASM_MIPSMTREGS_H
+
+#include <asm/war.h>
+
+#ifndef __ASSEMBLY__
+
+/*
+ * C macros
+ */
+
+#define read_c0_mvpcontrol()        __read_32bit_c0_register($0, 1)
+#define write_c0_mvpcontrol(val)    __write_32bit_c0_register($0, 1, val)
+
+#define read_c0_mvpconf0()          __read_32bit_c0_register($0, 2)
+#define read_c0_mvpconf1()          __read_32bit_c0_register($0, 3)
+
+#define read_c0_vpecontrol()        __read_32bit_c0_register($1, 1)
+#define write_c0_vpecontrol(val)    __write_32bit_c0_register($1, 1, val)
+
+#define read_c0_vpeconf0()          __read_32bit_c0_register($1, 2)
+#define write_c0_vpeconf0(val)      __write_32bit_c0_register($1, 2, val)
+
+#define read_c0_tcstatus()          __read_32bit_c0_register($2, 1)
+#define write_c0_tcstatus(val)      __write_32bit_c0_register($2, 1, val)
+
+#define read_c0_tcbind()            __read_32bit_c0_register($2, 2)
+
+#define read_c0_tccontext()         __read_32bit_c0_register($2, 5)
+#define write_c0_tccontext(val)     __write_32bit_c0_register($2, 5, val)
+
+#else /* Assembly */
+/*
+ * Macros for use in assembly language code
+ */
+
+#define CP0_MVPCONTROL  $0,1
+#define CP0_MVPCONF0    $0,2
+#define CP0_MVPCONF1    $0,3
+#define CP0_VPECONTROL  $1,1
+#define CP0_VPECONF0    $1,2
+#define CP0_VPECONF1    $1,3
+#define CP0_YQMASK      $1,4
+#define CP0_VPESCHEDULE $1,5
+#define CP0_VPESCHEFBK  $1,6
+#define CP0_TCSTATUS    $2,1
+#define CP0_TCBIND      $2,2
+#define CP0_TCRESTART   $2,3
+#define CP0_TCHALT      $2,4
+#define CP0_TCCONTEXT   $2,5
+#define CP0_TCSCHEDULE  $2,6
+#define CP0_TCSCHEFBK   $2,7
+#define CP0_SRSCONF0    $6,1
+#define CP0_SRSCONF1    $6,2
+#define CP0_SRSCONF2    $6,3
+#define CP0_SRSCONF3    $6,4
+#define CP0_SRSCONF4    $6,5
+
+#endif
+
+/* MVPControl fields */
+#define MVPCONTROL_EVP          (_ULCAST_(1))
+
+#define MVPCONTROL_VPC_SHIFT    1
+#define MVPCONTROL_VPC          (_ULCAST_(1) << MVPCONTROL_VPC_SHIFT)
+
+#define MVPCONTROL_STLB_SHIFT   2
+#define MVPCONTROL_STLB         (_ULCAST_(1) << MVPCONTROL_STLB_SHIFT)
+
+
+/* MVPConf0 fields */
+#define MVPCONF0_PTC_SHIFT      0
+#define MVPCONF0_PTC            ( _ULCAST_(0xff))
+#define MVPCONF0_PVPE_SHIFT     10
+#define MVPCONF0_PVPE           ( _ULCAST_(0xf) << MVPCONF0_PVPE_SHIFT)
+#define MVPCONF0_TCA_SHIFT      15
+#define MVPCONF0_TCA            ( _ULCAST_(1) << MVPCONF0_TCA_SHIFT)
+#define MVPCONF0_PTLBE_SHIFT    16
+#define MVPCONF0_PTLBE          (_ULCAST_(0x3ff) << MVPCONF0_PTLBE_SHIFT)
+#define MVPCONF0_TLBS_SHIFT     29
+#define MVPCONF0_TLBS           (_ULCAST_(1) << MVPCONF0_TLBS_SHIFT)
+#define MVPCONF0_M_SHIFT        31
+#define MVPCONF0_M              (_ULCAST_(0x1) << MVPCONF0_M_SHIFT)
+
+
+/* config3 fields */
+#define CONFIG3_MT_SHIFT        2
+#define CONFIG3_MT              (_ULCAST_(1) << CONFIG3_MT_SHIFT)
+
+
+/* VPEControl fields (per VPE) */
+#define VPECONTROL_TARGTC       (_ULCAST_(0xff))
+
+#define VPECONTROL_TE_SHIFT     15
+#define VPECONTROL_TE           (_ULCAST_(1) << VPECONTROL_TE_SHIFT)
+#define VPECONTROL_EXCPT_SHIFT      16
+#define VPECONTROL_EXCPT        (_ULCAST_(0x7) << VPECONTROL_EXCPT_SHIFT)
+
+/* Thread Exception Codes for EXCPT field */
+#define THREX_TU    0
+#define THREX_TO    1
+#define THREX_IYQ   2
+#define THREX_GSX   3
+#define THREX_YSCH  4
+#define THREX_GSSCH 5
+
+#define VPECONTROL_GSI_SHIFT    20
+#define VPECONTROL_GSI          (_ULCAST_(1) << VPECONTROL_GSI_SHIFT)
+#define VPECONTROL_YSI_SHIFT        21
+#define VPECONTROL_YSI          (_ULCAST_(1) << VPECONTROL_YSI_SHIFT)
+
+/* VPEConf0 fields (per VPE) */
+#define VPECONF0_VPA_SHIFT      0
+#define VPECONF0_VPA            (_ULCAST_(1) << VPECONF0_VPA_SHIFT)
+#define VPECONF0_MVP_SHIFT      1
+#define VPECONF0_MVP            (_ULCAST_(1) << VPECONF0_MVP_SHIFT)
+#define VPECONF0_XTC_SHIFT      21
+#define VPECONF0_XTC            (_ULCAST_(0xff) << VPECONF0_XTC_SHIFT)
+
+/* TCStatus fields (per TC) */
+#define TCSTATUS_TASID          (_ULCAST_(0xff))
+#define TCSTATUS_IXMT_SHIFT     10
+#define TCSTATUS_IXMT           (_ULCAST_(1) << TCSTATUS_IXMT_SHIFT)
+#define TCSTATUS_TKSU_SHIFT     11
+#define TCSTATUS_TKSU           (_ULCAST_(3) << TCSTATUS_TKSU_SHIFT)
+#define TCSTATUS_A_SHIFT        13
+#define TCSTATUS_A              (_ULCAST_(1) << TCSTATUS_A_SHIFT)
+#define TCSTATUS_DA_SHIFT       15
+#define TCSTATUS_DA             (_ULCAST_(1) << TCSTATUS_DA_SHIFT)
+#define TCSTATUS_DT_SHIFT       20
+#define TCSTATUS_DT             (_ULCAST_(1) << TCSTATUS_DT_SHIFT)
+#define TCSTATUS_TDS_SHIFT      21
+#define TCSTATUS_TDS            (_ULCAST_(1) << TCSTATUS_TDS_SHIFT)
+#define TCSTATUS_TSST_SHIFT     22
+#define TCSTATUS_TSST           (_ULCAST_(1) << TCSTATUS_TSST_SHIFT)
+#define TCSTATUS_RNST_SHIFT     23
+#define TCSTATUS_RNST           (_ULCAST_(3) << TCSTATUS_RNST_SHIFT)
+/* Codes for RNST */
+#define TC_RUNNING  0
+#define TC_WAITING  1
+#define TC_YIELDING 2
+#define TC_GATED    3
+
+#define TCSTATUS_TMX_SHIFT      27
+#define TCSTATUS_TMX            (_ULCAST_(1) << TCSTATUS_TMX_SHIFT)
+/* TCStatus TCU bits can use same definitions/offsets as CU bits in Status */
+
+/* TCBind */
+#define TCBIND_CURVPE_SHIFT     0
+#define TCBIND_CURVPE           (_ULCAST_(0xf))
+
+#define TCBIND_CURTC_SHIFT      21
+
+#define TCBIND_CURTC            (_ULCAST_(0xff) << TCBIND_CURTC_SHIFT)
+
+/* TCHalt */
+#define TCHALT_H                (_ULCAST_(1))
+
+#ifndef __ASSEMBLY__
+
+extern asmlinkage void noinline mips_ihb(void);
+
+extern void mips_mt_regdump(void);
+
+static inline unsigned int dvpe(void)
+{
+  int res = 0;
+    
+  __asm__ __volatile__(
+		       ".set noreorder\n\t"
+		       ".set mips32r2\n\t"
+		       "dvpe\t%0\n\t"
+		       "ehb\n\t"
+		       ".set mips0\n\t"
+		       ".set reorder"
+		       : "=r" (res));
+
+  mips_ihb();
+
+  return(res);
+}
+
+static inline void __raw_evpe(void)
+{
+  __asm__ __volatile__(
+		       ".set noreorder\n\t"
+		       ".set mips32r2\n\t"
+		       "evpe\n\t"
+		       "ehb\n\t"
+		       ".set mips0\n\t"
+		       ".set reorder"
+		       );
+}
+
+/* enable multiVPE if previous suggested it should be.
+   EVPE_ENABLE to force */
+
+#define EVPE_ENABLE MVPCONTROL_EVP
+static inline void evpe(int previous)
+{
+  if ((previous & MVPCONTROL_EVP))
+    __raw_evpe();
+}
+
+static inline unsigned int dmt(void)
+{
+  int res = 0;
+
+  __asm__ __volatile__(
+		       ".set noreorder\n\t"
+		       ".set mips32r2\n\t"
+		       "dmt\t%0\n\t"
+		       "ehb\n\t"
+		       ".set mips0\n\t"
+		       ".set reorder"
+		       : "=r" (res));
+
+  mips_ihb();
+
+  return(res);
+}
+
+static inline void __raw_emt(void)
+{
+  __asm__ __volatile__(
+		       ".set noreorder\n\t"
+		       ".set mips32r2\n\t"
+		       "emt\n\t"
+		       "ehb\n\t"
+		       ".set mips0\n\t"
+		       ".set reorder"
+		       );
+}
+
+/* enable multiVPE if previous suggested it should be.
+   EVPE_ENABLE to force */
+
+#define EMT_ENABLE VPECONTROL_TE
+
+static inline void emt(int previous)
+{
+  if ((previous & EMT_ENABLE))
+    __raw_emt();
+}
+
+static inline void ehb(void)
+{
+  __asm__ __volatile__(
+		       "ehb\n\t"
+		       );
+}
+
+// rt rd swapped in the documentation?
+// idioms appear to be plausible.
+#define mftc0(rt,sel)						\
+  ({ unsigned long  __res;					\
+    __asm__ __volatile__(					\
+			 ".set noat\n\t"			\
+			 "mftc0\t%0," #rt ", " #sel "\n\t"	\
+			 ".set at\n\t"				\
+			 : "=r" (__res));			\
+    __res;							\
+  })
+
+#define mftgpr(rt)
+({ unsigned long __res;                             \
+  __asm__ __volatile__(                           \
+		       ".set noat\n\t"                             \
+		       "mftgpr\t%0," #rt "\n\t"                    \
+		       ".set at\n\t"                               \
+		       : "=r" (__res));                            \
+  __res;                                      \
+ })
+
+#define mftr(rt,u,sel)
+  ({ unsigned long __res;                             \
+    __asm__ __volatile__(                           \
+			 ".set noat\n\t"                             \
+			 "mftr\t%0, " #rt ", " #u ", " #sel "\n\t"   \
+			 ".set at\n\t"                               \
+			 : "=r" (__res));                            \
+    __res;                                      \
+  })
+
+#define mttgpr(rd,v)					\
+  ({							\
+    __asm__ __volatile__(				\
+			 "mttgpr\t %0," #rd "\n\t"	\
+			 : : "r" (v));
+  })
+
+#define mttc0(rd,sel,v)						\
+  ({								\
+    __asm__ __volatile__(					\
+			 "mttc0\t %0," #rd ", " #sel "\n\t"	\
+			 : : "r" (v));
+  })
+
+
+#define mttr(rd,u,sel,v)						\
+  ({									\
+    __asm__ __volatile__(						\
+			 "mttr\t %0," #rd ", " #u ", " #sel "\n\t"	\
+			 : : "r" (v));
+  })
+
+
+#define settc(tc)							\
+  write_c0_vpecontrol( (read_c0_vpecontrol() & ~(VPECONTROL_TARGTC)) | (tc)); \
+  ehb()
+
+
+/* you *must* set the target tc (settc) before trying to use these */ 
+#define read_vpe_c0_vpecontrol()        mftc0($1, 1)
+#define write_vpe_c0_vpecontrol(val)    mttc0($1, 1, val)
+#define read_vpe_c0_vpeconf0()          mftc0($1, 2)
+#define write_vpe_c0_vpeconf0(val)      mttc0($1, 2, val)
+#define read_vpe_c0_status()            mftc0($12, 0)
+#define write_vpe_c0_status(val)        mttc0($12, 0, val)
+#define read_vpe_c0_cause()             mftc0($13, 0)
+#define write_vpe_c0_cause(val)         mttc0($13, 0, val)
+#define read_vpe_c0_config()            mftc0($16, 0)
+#define write_vpe_c0_config(val)        mttc0($16, 0, val)
+#define read_vpe_c0_config1()           mftc0($16, 1)
+#define write_vpe_c0_config1(val)       mttc0($16, 1, val)
+#define read_vpe_c0_config7()           mftc0($16, 7)
+#define write_vpe_c0_config7(val)       mttc0($16, 7, val)
+#define read_vpe_c0_ebase()             mftc0($15,1)
+#define write_vpe_c0_ebase(val)         mttc0($15, 1, val)
+#define write_vpe_c0_compare(val)       mttc0($11, 0, val)
+
+
+/* TC */
+#define read_tc_c0_tcstatus()       mftc0($2, 1)
+#define write_tc_c0_tcstatus(val)   mttc0($2,1,val)
+#define read_tc_c0_tcbind()         mftc0($2, 2)
+#define write_tc_c0_tcbind(val)     mttc0($2,2,val)
+#define read_tc_c0_tcrestart()      mftc0($2, 3)
+#define write_tc_c0_tcrestart(val)  mttc0($2,3,val)
+#define read_tc_c0_tchalt()         mftc0($2, 4)
+#define write_tc_c0_tchalt(val)     mttc0($2,4,val)
+#define read_tc_c0_tccontext()      mftc0($2, 5)
+#define write_tc_c0_tccontext(val)  mttc0($2,5,val)
+
+/* GPR */
+#define read_tc_gpr_sp()            mftgpr($29)
+#define write_tc_gpr_sp(val)        mttgpr($29, val)
+#define read_tc_gpr_gp()            mftgpr($28)
+#define write_tc_gpr_gp(val)        mttgpr($28, val)
+
+
+#endif /* Not __ASSEMBLY__ */
+
+#endif
diff -urN malta/linux/include/asm-mips/rtlx.h malta/linux/include/asm-mips/rtlx.h
--- malta/linux/include/asm-mips/Attic/rtlx.h	1970/01/01 00:00:00
+++ malta/linux/include/asm-mips/Attic/rtlx.h	2005-06-10 10:45:00.243835000 +0100	1.1.2.1
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2004, 2005 MIPS Technologies, Inc.  All rights reserved.
+ *
+ */
+
+#ifndef _RTLX_H
+#define _RTLX_H_
+
+#define LX_NODE_BASE 10
+
+#define MIPSCPU_INT_BASE       16
+#define MIPS_CPU_RTLX_IRQ 0
+
+#define RTLX_VERSION 1
+#define RTLX_xID 0x12345600
+#define RTLX_ID (RTLX_xID | RTLX_VERSION)
+#define RTLX_CHANNELS 8
+
+enum rtlx_state {
+	RTLX_STATE_UNUSED = 0,
+	RTLX_STATE_INITIALISED,
+	RTLX_STATE_REMOTE_READY,
+	RTLX_STATE_OPENED
+};
+
+#define RTLX_BUFFER_SIZE 1024
+/* each channel supports read and write.
+   linux (vpe0) reads lx_buffer  and writes rt_buffer
+   SP (vpe1) reads rt_buffer and writes lx_buffer
+*/
+typedef struct rtlx_channel {
+	enum rtlx_state rt_state;
+	enum rtlx_state lx_state;
+
+	int buffer_size;
+
+	/* read and write indexes per buffer */
+	int rt_write, rt_read;
+	char *rt_buffer;
+
+	int lx_write, lx_read;
+	char *lx_buffer;
+
+	void *queues;
+
+} rtlx_channel_t;
+
+typedef struct rtlx_info {
+	unsigned long id;
+	enum rtlx_state state;
+
+	struct rtlx_channel channel[RTLX_CHANNELS];
+
+} rtlx_info_t;
+
+#endif
diff -urN malta/linux/include/asm-mips/cpu-features.h malta/linux/include/asm-mips/cpu-features.h
--- malta/linux/include/asm-mips/cpu-features.h	2004/09/14 16:29:26	1.4.1000.2
+++ malta/linux/include/asm-mips/cpu-features.h	2005/06/10 09:45:00	1.4.1000.3
@@ -73,6 +73,9 @@
 #ifndef cpu_has_ic_fills_f_dc
 #define cpu_has_ic_fills_f_dc	(cpu_data[0].dcache.flags & MIPS_CACHE_IC_F_DC)
 #endif
+#ifndef cpu_has_mipsmt
+# define cpu_has_mipsmt		(cpu_data[0].options & MIPS_CPU_MIPSMT)
+#endif
 
 #ifdef CONFIG_MIPS32
 # ifndef cpu_has_nofpuex
diff -urN malta/linux/include/asm-mips/cpu.h malta/linux/include/asm-mips/cpu.h
--- malta/linux/include/asm-mips/cpu.h	2004/07/08 17:57:45	1.52.1000.1
+++ malta/linux/include/asm-mips/cpu.h	2005/06/10 09:45:00	1.52.1000.2
@@ -71,6 +71,7 @@
 #define PRID_IMP_4KEMPR2	0x9100
 #define PRID_IMP_4KSD		0x9200
 #define PRID_IMP_24K		0x9300
+#define PRID_IMP_34K		0x9500
 
 #define PRID_IMP_UNKNOWN	0xff00
 
@@ -177,7 +178,8 @@
 #define CPU_VR4133		56
 #define CPU_AU1550		57
 #define CPU_24K			58
-#define CPU_LAST		58
+#define CPU_34K			59
+#define CPU_LAST		59
 
 /*
  * ISA Level encodings
@@ -220,5 +222,6 @@
 #define MIPS_CPU_PREFETCH	0x00040000 /* CPU has usable prefetch */
 #define MIPS_CPU_VI		0x00080000 /* CPU supports MIPSR2 vectored interrupts */
 #define MIPS_CPU_EI		0x00100000 /* CPU supports MIPSR2 external interrupt controller mode */
+#define MIPS_CPU_MIPSMT		0x00400000 /* CPU supports MIPS MT */
 
 #endif /* _ASM_CPU_H */
diff -urN malta/linux/include/asm-mips/hazards.h malta/linux/include/asm-mips/hazards.h
--- malta/linux/include/asm-mips/hazards.h	2005/01/18 18:02:41	1.3.1000.3
+++ malta/linux/include/asm-mips/hazards.h	2005/06/10 09:45:00	1.3.1000.4
@@ -223,6 +223,16 @@
 		)
 
 #endif
+
+#if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_MIPS_MT)
+/*
+ * MIPS32 Release 2 defines Instruction Hazard Barrier,
+ * which is a form of jump. So it needs to be invoked
+ * as a subroutine.
+ */
+extern asmlinkage void mips_ihb(void);
+
+#endif /* CONFIG_CPU_MIPSR2 */
 #endif /* __ASSEMBLY__ */
 
 #endif /* _ASM_HAZARDS_H */
diff -urN malta/linux/include/asm-mips/mipsregs.h malta/linux/include/asm-mips/mipsregs.h
--- malta/linux/include/asm-mips/mipsregs.h	2004/09/14 16:29:26	1.62.1000.2
+++ malta/linux/include/asm-mips/mipsregs.h	2005/06/10 09:45:00	1.62.1000.3
@@ -37,6 +37,8 @@
 #define _ULCAST_ (unsigned long)
 #endif
 
+#include <asm/mipsmtregs.h>
+
 /*
  * Coprocessor 0 register names
  */

From beth@linux-mips.org Fri Jun 10 09:56:16 2005
Received: with ECARTIS (v1.0.0; list maltalinux-cvs-patches); Fri, 10 Jun 2005 10:56:16 +0100 (BST)
From: beth@linux-mips.org
To:  maltalinux-cvs-patches@linux-mips.org
Subject: CVS Update@linux-mips.org: malta
Date: Fri, 10 Jun 2005 10:56:16 +0100
X-archive-position: 5
X-ecartis-version: Ecartis v1.0.0
Sender: maltalinux-cvs-patches-bounce@linux-mips.org
Errors-to: maltalinux-cvs-patches-bounce@linux-mips.org
X-original-sender: beth@linux-mips.org
Precedence: bulk
Reply-to: linux-mips@linux-mips.org
X-list: maltalinux-cvs-patches


CVSROOT:	/home/cvs
Module name:	malta
Changes by:	beth@ftp.linux-mips.org	05/06/10 10:56:15

Modified files:
	linux/include/asm-mips: Tag: MaltaRef_2_6 mipsmtregs.h 

Log message:
	* include/asm-mips/mipsmtregs.h: Managed to loose some nicely formated
	backslashes. Fixed.

diff -urN malta/linux/include/asm-mips/mipsmtregs.h malta/linux/include/asm-mips/mipsmtregs.h
--- malta/linux/include/asm-mips/Attic/mipsmtregs.h	2005/06/10 09:45:00	1.1.2.1
+++ malta/linux/include/asm-mips/Attic/mipsmtregs.h	2005/06/10 09:56:15	1.1.2.2
@@ -268,38 +268,38 @@
     __res;							\
   })
 
-#define mftgpr(rt)
-({ unsigned long __res;                             \
-  __asm__ __volatile__(                           \
-		       ".set noat\n\t"                             \
-		       "mftgpr\t%0," #rt "\n\t"                    \
-		       ".set at\n\t"                               \
-		       : "=r" (__res));                            \
-  __res;                                      \
+#define mftgpr(rt)				\
+({ unsigned long __res;				\
+  __asm__ __volatile__(				\
+		       ".set noat\n\t"		\
+		       "mftgpr\t%0," #rt "\n\t"	\
+		       ".set at\n\t"		\
+		       : "=r" (__res));		\
+  __res;					\
  })
 
-#define mftr(rt,u,sel)
-  ({ unsigned long __res;                             \
-    __asm__ __volatile__(                           \
-			 ".set noat\n\t"                             \
-			 "mftr\t%0, " #rt ", " #u ", " #sel "\n\t"   \
-			 ".set at\n\t"                               \
-			 : "=r" (__res));                            \
-    __res;                                      \
+#define mftr(rt,u,sel)							\
+  ({ unsigned long __res;						\
+    __asm__ __volatile__(						\
+			 ".set noat\n\t"				\
+			 "mftr\t%0, " #rt ", " #u ", " #sel "\n\t"	\
+			 ".set at\n\t"					\
+			 : "=r" (__res));				\
+    __res;								\
   })
 
 #define mttgpr(rd,v)					\
   ({							\
     __asm__ __volatile__(				\
 			 "mttgpr\t %0," #rd "\n\t"	\
-			 : : "r" (v));
+			 : : "r" (v));			\
   })
 
 #define mttc0(rd,sel,v)						\
   ({								\
     __asm__ __volatile__(					\
 			 "mttc0\t %0," #rd ", " #sel "\n\t"	\
-			 : : "r" (v));
+			 : : "r" (v));				\
   })
 
 
@@ -307,7 +307,7 @@
   ({									\
     __asm__ __volatile__(						\
 			 "mttr\t %0," #rd ", " #u ", " #sel "\n\t"	\
-			 : : "r" (v));
+			 : : "r" (v));					\
   })
 
 

From beth@linux-mips.org Fri Jun 10 15:26:45 2005
Received: with ECARTIS (v1.0.0; list maltalinux-cvs-patches); Fri, 10 Jun 2005 16:26:45 +0100 (BST)
From: beth@linux-mips.org
To:  maltalinux-cvs-patches@linux-mips.org
Subject: CVS Update@linux-mips.org: malta
Date: Fri, 10 Jun 2005 16:26:45 +0100
X-archive-position: 6
X-ecartis-version: Ecartis v1.0.0
Sender: maltalinux-cvs-patches-bounce@linux-mips.org
Errors-to: maltalinux-cvs-patches-bounce@linux-mips.org
X-original-sender: beth@linux-mips.org
Precedence: bulk
Reply-to: linux-mips@linux-mips.org
X-list: maltalinux-cvs-patches


CVSROOT:	/home/cvs
Module name:	malta
Changes by:	beth@ftp.linux-mips.org	05/06/10 16:26:45

Removed files:
	linux/arch/mips/kernel: Tag: MaltaRef_2_6 mips_mt.c 

Log message:
	* arch/mips/kernel/mips_mt.c: Remove unused file.

diff -urN malta/linux/arch/mips/kernel/mips_mt.c malta/linux/arch/mips/kernel/mips_mt.c
--- malta/linux/arch/mips/kernel/Attic/mips_mt.c	2005-06-10 16:26:45.190584000 +0100	1.1.2.1
+++ malta/linux/arch/mips/kernel/Attic/mips_mt.c	1970/01/01 00:00:00+0100
@@ -1,98 +0,0 @@
-/*
- * General MIPS MT support routines, usable in AP/SP, SMVP, or SMTC kernels
- * Copyright (C) 2005 Mips Technologies, Inc 
- */
-
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/cpumask.h>
-#include <linux/interrupt.h>
-
-#include <asm/cpu.h>
-#include <asm/processor.h>
-#include <asm/atomic.h>
-#include <asm/system.h>
-#include <asm/hardirq.h>
-#include <asm/mmu_context.h>
-#include <asm/smp.h>
-#include <asm/mipsmtregs.h>
-#include <asm/cacheflush.h>
-
-/*
- * Dump new MIPS MT state for the core. Does *not* halt TCs.
- */
-
-void mips_mt_regdump()
-{
-	int flags;
-	int vpflags;
-	int mvpconf0;
-	int nvpe;
-	int ntc;
-	int i;
-	int tc;
-	unsigned long haltval;
-	unsigned long tcstatval;
-#ifdef CONFIG_MIPS_MT_SMTC
-	void smtc_soft_dump(void);
-#endif /* CONFIG_MIPT_MT_SMTC */
-
-	local_irq_save(flags);
-	vpflags = dvpe();
-
-	printk("=== MIPS MT State Dump ===\n");
-	printk("-- Global State --\n");
-	printk("   MVPControl : %08x\n", vpflags);
-	printk("   MVPConf0 : %08x\n", (mvpconf0 = read_c0_mvpconf0()));
-	nvpe = ((mvpconf0 & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT) + 1;
-	ntc = ((mvpconf0 & MVPCONF0_PTC) >> MVPCONF0_PTC_SHIFT) + 1;
-	printk("-- per-VPE State --\n");
-	for(i = 0; i < nvpe; i++) {
-	    for(tc = 0; tc < ntc; tc++) {
-			settc(tc);
-		if((read_tc_c0_tcbind() & TCBIND_CURVPE) == i) {
-		    printk("  VPE %d\n", i);
-		    printk("   VPEControl : %08lx\n", read_vpe_c0_vpecontrol());
-		    printk("   VPEConf0 : %08lx\n", read_vpe_c0_vpeconf0());
-		    printk("   VPE%d.Status : %08lx\n", i, read_vpe_c0_status());
-		    printk("   VPE%d.Cause : %08lx\n", i, read_vpe_c0_cause());
-		    break; /* Next VPE */
-		}
-	    }
-	}
-	printk("-- per-TC State --\n");
-	for(tc = 0; tc < ntc; tc++) {
-		settc(tc);
-		if(read_tc_c0_tcbind() == read_c0_tcbind()) {
-			/* Are we dumping ourself?  */
-			haltval = 0; /* Then we're not halted, and mustn't be */
-			tcstatval = flags; /* And pre-dump TCStatus is flags */
-			printk("  TC %d (current TC)\n", tc);
-		} else { 
-			haltval = read_tc_c0_tchalt();
-			write_tc_c0_tchalt(1);
-			tcstatval = read_tc_c0_tcstatus();
-			printk("  TC %d\n", tc);
-		}
-		printk("   TCStatus : %08lx\n", tcstatval);
-		printk("   TCBind : %08lx\n", read_tc_c0_tcbind());
-		printk("   TCRestart : %08lx\n", read_tc_c0_tcrestart());
-		printk("   TCHalt : %08lx\n", haltval);
-		printk("   TCContext : %08lx\n", read_tc_c0_tccontext());
-		if(!haltval) write_tc_c0_tchalt(0);
-	}
-#ifdef CONFIG_MIPS_MT_SMTC
-	smtc_soft_dump();
-#endif /* CONFIG_MIPT_MT_SMTC */
-	printk("===========================\n");
-	evpe(vpflags);
-	local_irq_restore(flags);
-}
-
-asmlinkage void noinline mips_mt_inthazard(void)
-{
-	__asm__ __volatile__("jr.hb $ra\n\t");
-}
-
-
-

From beth@linux-mips.org Tue Jun 21 13:42:10 2005
Received: with ECARTIS (v1.0.0; list maltalinux-cvs-patches); Tue, 21 Jun 2005 14:42:50 +0100 (BST)
From: beth@linux-mips.org
To:  maltalinux-cvs-patches@linux-mips.org
Subject: CVS Update@linux-mips.org: malta
Date: Tue, 21 Jun 2005 14:42:10 +0100
X-archive-position: 7
X-ecartis-version: Ecartis v1.0.0
Sender: maltalinux-cvs-patches-bounce@linux-mips.org
Errors-to: maltalinux-cvs-patches-bounce@linux-mips.org
X-original-sender: beth@linux-mips.org
Precedence: bulk
Reply-to: linux-mips@linux-mips.org
X-list: maltalinux-cvs-patches


CVSROOT:	/home/cvs
Module name:	malta
Changes by:	beth@ftp.linux-mips.org	05/06/21 14:40:13

Modified files:
	linux          : Tag: MaltaRef_2_6 CREDITS MAINTAINERS Makefile 
	                 REPORTING-BUGS 
	linux/Documentation: Tag: MaltaRef_2_6 00-INDEX Changes 
	                     CodingStyle DMA-API.txt DMA-mapping.txt 
	                     IO-mapping.txt IPMI.txt SAK.txt 
	                     SubmittingDrivers cachetlb.txt cciss.txt 
	                     computone.txt cpqarray.txt devices.txt 
	                     digiepca.txt dnotify.txt floppy.txt 
	                     ftape.txt hw_random.txt ide.txt 
	                     ioctl-number.txt kernel-docs.txt 
	                     kernel-parameters.txt laptop-mode.txt 
	                     md.txt memory.txt nmi_watchdog.txt 
	                     oops-tracing.txt parport.txt pci.txt pm.txt 
	                     ramdisk.txt riscom8.txt rocket.txt 
	                     sched-domains.txt sonypi.txt spinlocks.txt 
	                     stallion.txt sysrq.txt tipar.txt 
	                     unicode.txt 
	linux/Documentation/DocBook: Tag: MaltaRef_2_6 Makefile 
	                             deviceiobook.tmpl gadget.tmpl 
	                             journal-api.tmpl kernel-api.tmpl 
	                             kernel-hacking.tmpl 
	                             kernel-locking.tmpl libata.tmpl 
	                             lsm.tmpl mcabook.tmpl 
	                             procfs-guide.tmpl scsidrivers.tmpl 
	                             sis900.tmpl usb.tmpl videobook.tmpl 
	                             wanbook.tmpl 
	                             writing_usb_driver.tmpl 
	                             z8530book.tmpl 
	linux/Documentation/arm: Tag: MaltaRef_2_6 Booting IXP4xx README 
	linux/Documentation/arm/Samsung-S3C24XX: Tag: MaltaRef_2_6 
	                                         EB2410ITX.txt 
	                                         Overview.txt 
	linux/Documentation/arm/Sharp-LH: Tag: MaltaRef_2_6 IOBarrier 
	linux/Documentation/block: Tag: MaltaRef_2_6 as-iosched.txt 
	                           biodoc.txt deadline-iosched.txt 
	linux/Documentation/cdrom: Tag: MaltaRef_2_6 00-INDEX 
	                           cdrom-standard.tex mcdx 
	linux/Documentation/cpu-freq: Tag: MaltaRef_2_6 index.txt 
	                              user-guide.txt 
	linux/Documentation/crypto: Tag: MaltaRef_2_6 api-intro.txt 
	linux/Documentation/driver-model: Tag: MaltaRef_2_6 bus.txt 
	                                  driver.txt 
	linux/Documentation/dvb: Tag: MaltaRef_2_6 avermedia.txt 
	                         bt8xx.txt cards.txt contributors.txt 
	                         faq.txt readme.txt ttusb-dec.txt 
	linux/Documentation/early-userspace: Tag: MaltaRef_2_6 README 
	linux/Documentation/fb: Tag: MaltaRef_2_6 matroxfb.txt 
	                        vesafb.txt 
	linux/Documentation/filesystems: Tag: MaltaRef_2_6 00-INDEX 
	                                 Locking ext2.txt ext3.txt 
	                                 jfs.txt ntfs.txt proc.txt 
	                                 tmpfs.txt ufs.txt vfs.txt 
	linux/Documentation/filesystems/devfs: Tag: MaltaRef_2_6 
	                                       ChangeLog README 
	linux/Documentation/firmware_class: Tag: MaltaRef_2_6 
	                                    firmware_sample_firmware_class.c 
	                                    hotplug-script 
	linux/Documentation/i2c: Tag: MaltaRef_2_6 dev-interface 
	                         porting-clients sysfs-interface 
	                         writing-clients 
	linux/Documentation/i386: Tag: MaltaRef_2_6 boot.txt 
	                          zero-page.txt 
	linux/Documentation/input: Tag: MaltaRef_2_6 
	                           joystick-parport.txt 
	linux/Documentation/kbuild: Tag: MaltaRef_2_6 
	                            kconfig-language.txt makefiles.txt 
	                            modules.txt 
	linux/Documentation/networking: Tag: MaltaRef_2_6 DLINK.txt 
	                                bonding.txt e100.txt e1000.txt 
	                                ip-sysctl.txt ixgb.txt 
	                                netdevices.txt pktgen.txt 
	linux/Documentation/parisc: Tag: MaltaRef_2_6 00-INDEX registers 
	linux/Documentation/power: Tag: MaltaRef_2_6 devices.txt pci.txt 
	                           swsusp.txt video.txt 
	linux/Documentation/powerpc: Tag: MaltaRef_2_6 00-INDEX hvcs.txt 
	                             mpc52xx.txt 
	linux/Documentation/s390: Tag: MaltaRef_2_6 cds.txt s390dbf.txt 
	linux/Documentation/scsi: Tag: MaltaRef_2_6 ChangeLog.megaraid 
	                          scsi_mid_low_api.txt st.txt 
	                          sym53c8xx_2.txt 
	linux/Documentation/serial: Tag: MaltaRef_2_6 driver 
	linux/Documentation/sound/alsa: Tag: MaltaRef_2_6 
	                                ALSA-Configuration.txt 
	                                Joystick.txt MIXART.txt 
	                                OSS-Emulation.txt 
	                                serial-u16550.txt 
	linux/Documentation/sound/alsa/DocBook: Tag: MaltaRef_2_6 
	                                        alsa-driver-api.tmpl 
	                                        writing-an-alsa-driver.tmpl 
	linux/Documentation/sound/oss: Tag: MaltaRef_2_6 README.modules 
	linux/Documentation/sysctl: Tag: MaltaRef_2_6 kernel.txt vm.txt 
	linux/Documentation/usb: Tag: MaltaRef_2_6 error-codes.txt 
	                         sn9c102.txt usb-serial.txt w9968cf.txt 
	linux/Documentation/video4linux: Tag: MaltaRef_2_6 
	                                 CARDLIST.saa7134 README.cx88 
	                                 meye.txt 
	linux/Documentation/video4linux/bttv: Tag: MaltaRef_2_6 Cards 
	                                      README 
	linux/Documentation/vm: Tag: MaltaRef_2_6 hugetlbpage.txt numa 
	                        overcommit-accounting 
	linux/Documentation/x86_64: Tag: MaltaRef_2_6 boot-options.txt 
	                            mm.txt 
	linux/arch/alpha: Tag: MaltaRef_2_6 Kconfig Makefile defconfig 
	linux/arch/alpha/boot: Tag: MaltaRef_2_6 bootloader.lds bootp.c 
	                       bootpz.c head.S misc.c 
	linux/arch/alpha/kernel: Tag: MaltaRef_2_6 Makefile 
	                         alpha_ksyms.c console.c core_cia.c 
	                         core_irongate.c core_marvel.c 
	                         core_titan.c err_titan.c irq.c 
	                         irq_i8259.c irq_impl.h irq_srm.c 
	                         machvec_impl.h osf_sys.c pci-noop.c 
	                         pci.c pci_impl.h pci_iommu.c process.c 
	                         proto.h ptrace.c setup.c signal.c 
	                         smc37c669.c smp.c srmcons.c sys_alcor.c 
	                         sys_cabriolet.c sys_dp264.c sys_eb64p.c 
	                         sys_eiger.c sys_jensen.c sys_marvel.c 
	                         sys_miata.c sys_mikasa.c sys_nautilus.c 
	                         sys_noritake.c sys_rawhide.c 
	                         sys_ruffian.c sys_rx164.c sys_sable.c 
	                         sys_sio.c sys_sx164.c sys_takara.c 
	                         sys_titan.c sys_wildfire.c systbls.S 
	                         time.c traps.c vmlinux.lds.S 
	linux/arch/alpha/lib: Tag: MaltaRef_2_6 Makefile 
	                      csum_partial_copy.c dec_and_lock.c 
	                      memmove.S 
	linux/arch/alpha/mm: Tag: MaltaRef_2_6 fault.c init.c numa.c 
	linux/arch/alpha/oprofile: Tag: MaltaRef_2_6 common.c 
	                           op_model_ev4.c op_model_ev5.c 
	                           op_model_ev6.c op_model_ev67.c 
	linux/arch/arm : Tag: MaltaRef_2_6 Kconfig Kconfig.debug 
	                 Makefile 
	linux/arch/arm/boot: Tag: MaltaRef_2_6 Makefile 
	linux/arch/arm/boot/compressed: Tag: MaltaRef_2_6 Makefile 
	                                head-sa1100.S head-xscale.S 
	                                head.S misc.c ofw-shark.c 
	linux/arch/arm/common: Tag: MaltaRef_2_6 Makefile amba.c 
	                       dmabounce.c locomo.c sa1111.c 
	                       time-acorn.c via82c505.c 
	linux/arch/arm/configs: Tag: MaltaRef_2_6 assabet_defconfig 
	                        badge4_defconfig bast_defconfig 
	                        cerfcube_defconfig clps7500_defconfig 
	                        ebsa110_defconfig edb7211_defconfig 
	                        epxa10db_defconfig footbridge_defconfig 
	                        fortunet_defconfig h3600_defconfig 
	                        hackkit_defconfig integrator_defconfig 
	                        iq80321_defconfig ixp4xx_defconfig 
	                        jornada720_defconfig lart_defconfig 
	                        lpd7a400_defconfig lpd7a404_defconfig 
	                        lubbock_defconfig lusl7200_defconfig 
	                        mainstone_defconfig mx1ads_defconfig 
	                        neponset_defconfig netwinder_defconfig 
	                        omnimeter_defconfig pleb_defconfig 
	                        rpc_defconfig s3c2410_defconfig 
	                        shannon_defconfig shark_defconfig 
	                        smdk2410_defconfig versatile_defconfig 
	linux/arch/arm/kernel: Tag: MaltaRef_2_6 Makefile apm.c 
	                       armksyms.c asm-offsets.c bios32.c calls.S 
	                       debug.S dma.c ecard.c entry-armv.S 
	                       entry-common.S entry-header.S fiq.c 
	                       head.S io.c irq.c module.c process.c 
	                       ptrace.c semaphore.c setup.c signal.c 
	                       sys_arm.c time.c traps.c vmlinux.lds.S 
	linux/arch/arm/lib: Tag: MaltaRef_2_6 Makefile changebit.S 
	                    clearbit.S csumpartial.S 
	                    csumpartialcopygeneric.S delay.S getuser.S 
	                    io-readsw-armv4.S io-writesl.S 
	                    io-writesw-armv4.S longlong.h putuser.S 
	                    setbit.S testchangebit.S testclearbit.S 
	                    testsetbit.S 
	linux/arch/arm/mach-clps711x: Tag: MaltaRef_2_6 Kconfig 
	                              autcpu12.c cdb89712.c ceiva.c 
	                              clep7312.c edb7211-arch.c 
	                              fortunet.c p720t.c time.c 
	linux/arch/arm/mach-clps7500: Tag: MaltaRef_2_6 core.c 
	linux/arch/arm/mach-ebsa110: Tag: MaltaRef_2_6 core.c io.c 
	linux/arch/arm/mach-epxa10db: Tag: MaltaRef_2_6 arch.c time.c 
	linux/arch/arm/mach-footbridge: Tag: MaltaRef_2_6 Kconfig 
	                                Makefile cats-hw.c 
	                                ebsa285-leds.c netwinder-hw.c 
	                                netwinder-leds.c time.c 
	linux/arch/arm/mach-imx: Tag: MaltaRef_2_6 Kconfig dma.c 
	                         generic.c generic.h mx1ads.c time.c 
	linux/arch/arm/mach-integrator: Tag: MaltaRef_2_6 clock.c core.c 
	                                impd1.c integrator_ap.c 
	                                integrator_cp.c leds.c pci_v3.c 
	                                time.c 
	linux/arch/arm/mach-iop3xx: Tag: MaltaRef_2_6 Kconfig Makefile 
	                            iop321-irq.c iop321-pci.c 
	                            iop321-time.c iq80321-pci.c 
	linux/arch/arm/mach-ixp4xx: Tag: MaltaRef_2_6 Kconfig Makefile 
	                            common-pci.c common.c coyote-pci.c 
	                            coyote-setup.c ixdp425-pci.c 
	                            ixdp425-setup.c 
	linux/arch/arm/mach-lh7a40x: Tag: MaltaRef_2_6 arch-kev7a400.c 
	                             arch-lpd7a40x.c irq-lpd7a40x.c 
	                             time.c 
	linux/arch/arm/mach-omap: Tag: MaltaRef_2_6 Kconfig Makefile 
	                          board-generic.c board-h2.c board-h3.c 
	                          board-innovator.c board-osk.c 
	                          board-perseus2.c common.c common.h 
	                          dma.c fpga.c gpio.c irq.c 
	                          leds-h2p2-debug.c leds.c leds.h 
	                          mcbsp.c mux.c ocpi.c time.c usb.c 
	linux/arch/arm/mach-pxa: Tag: MaltaRef_2_6 Kconfig Makefile 
	                         dma.c generic.c generic.h idp.c irq.c 
	                         leds-idp.c leds-lubbock.c 
	                         leds-mainstone.c lubbock.c mainstone.c 
	                         pm.c pxa25x.c pxa27x.c sleep.S time.c 
	linux/arch/arm/mach-rpc: Tag: MaltaRef_2_6 dma.c riscpc.c 
	linux/arch/arm/mach-s3c2410: Tag: MaltaRef_2_6 Kconfig Makefile 
	                             clock.c clock.h devs.c devs.h dma.c 
	                             gpio.c irq.c mach-bast.c 
	                             mach-h1940.c mach-smdk2410.c 
	                             mach-vr1000.c s3c2410.c s3c2410.h 
	                             time.c 
	linux/arch/arm/mach-sa1100: Tag: MaltaRef_2_6 Kconfig Makefile 
	                            assabet.c badge4.c cerf.c collie.c 
	                            cpu-sa1100.c cpu-sa1110.c generic.c 
	                            generic.h h3600.c hackkit.c irq.c 
	                            jornada720.c lart.c leds-simpad.c 
	                            neponset.c pleb.c pm.c shannon.c 
	                            simpad.c sleep.S time.c 
	linux/arch/arm/mach-shark: Tag: MaltaRef_2_6 core.c irq.c leds.c 
	                           pci.c 
	linux/arch/arm/mach-versatile: Tag: MaltaRef_2_6 Makefile 
	                               clock.c clock.h core.c 
	linux/arch/arm/mm: Tag: MaltaRef_2_6 Kconfig Makefile 
	                   abort-ev4t.S abort-ev5t.S abort-ev5tj.S 
	                   abort-ev6.S alignment.c cache-v3.S cache-v4.S 
	                   cache-v4wb.S cache-v4wt.S cache-v6.S 
	                   consistent.c copypage-v6.c fault-armv.c 
	                   fault.c init.c ioremap.c mm-armv.c 
	                   proc-arm1020.S proc-arm1020e.S proc-arm1022.S 
	                   proc-arm1026.S proc-arm6_7.S proc-arm720.S 
	                   proc-arm920.S proc-arm922.S proc-arm925.S 
	                   proc-arm926.S proc-sa110.S proc-sa1100.S 
	                   proc-syms.c proc-v6.S proc-xscale.S tlb-v4.S 
	                   tlb-v4wb.S 
	linux/arch/arm/nwfpe: Tag: MaltaRef_2_6 double_cpdo.c 
	                      fpa11_cpdt.c 
	linux/arch/arm/oprofile: Tag: MaltaRef_2_6 common.c init.c 
	                         op_arm_model.h op_model_xscale.c 
	linux/arch/arm/tools: Tag: MaltaRef_2_6 mach-types 
	linux/arch/arm/vfp: Tag: MaltaRef_2_6 entry.S vfp.h vfpdouble.c 
	                    vfphw.S vfpsingle.c 
	linux/arch/arm26: Tag: MaltaRef_2_6 ACKNOWLEDGEMENTS Kconfig 
	                  Kconfig.debug Makefile 
	linux/arch/arm26/boot: Tag: MaltaRef_2_6 Makefile install.sh 
	linux/arch/arm26/boot/compressed: Tag: MaltaRef_2_6 head.S 
	                                  ll_char_wr.S uncompress.h 
	                                  vmlinux.lds.in 
	linux/arch/arm26/kernel: Tag: MaltaRef_2_6 Makefile armksyms.c 
	                         asm-offsets.c compat.c dma.c ecard.c 
	                         entry.S init_task.c irq.c process.c 
	                         ptrace.c semaphore.c setup.c signal.c 
	                         sys_arm.c time.c traps.c 
	                         vmlinux-arm26-xip.lds.in 
	                         vmlinux-arm26.lds.in 
	linux/arch/arm26/lib: Tag: MaltaRef_2_6 Makefile backtrace.S 
	                      changebit.S clearbit.S copy_page.S 
	                      csumipv6.S csumpartial.S csumpartialcopy.S 
	                      csumpartialcopygeneric.S delay.S ecard.S 
	                      floppydma.S getuser.S io-acorn.S 
	                      io-readsb.S io-writesb.S io-writesl.S 
	                      memchr.S memcpy.S memset.S memzero.S 
	                      putuser.S setbit.S strchr.S strrchr.S 
	                      testchangebit.S testclearbit.S 
	                      testsetbit.S 
	linux/arch/arm26/machine: Tag: MaltaRef_2_6 Makefile dma.c irq.c 
	linux/arch/arm26/mm: Tag: MaltaRef_2_6 Makefile extable.c 
	                     fault.c init.c proc-funcs.S 
	linux/arch/cris: Tag: MaltaRef_2_6 Kconfig Kconfig.debug 
	                 Makefile 
	linux/arch/cris/arch-v10: Tag: MaltaRef_2_6 vmlinux.lds.S 
	linux/arch/cris/arch-v10/drivers: Tag: MaltaRef_2_6 Kconfig 
	                                  Makefile axisflashmap.c 
	                                  ds1302.c eeprom.c gpio.c i2c.c 
	                                  pcf8563.c 
	linux/arch/cris/arch-v10/kernel: Tag: MaltaRef_2_6 Makefile 
	                                 debugport.c entry.S fasttimer.c 
	                                 irq.c kgdb.c process.c ptrace.c 
	                                 signal.c time.c 
	linux/arch/cris/arch-v10/mm: Tag: MaltaRef_2_6 fault.c init.c 
	                             tlb.c 
	linux/arch/cris/kernel: Tag: MaltaRef_2_6 crisksyms.c irq.c 
	                        setup.c 
	linux/arch/h8300: Tag: MaltaRef_2_6 Kconfig Makefile defconfig 
	linux/arch/h8300/kernel: Tag: MaltaRef_2_6 asm-offsets.c 
	                         h8300_ksyms.c ints.c process.c ptrace.c 
	                         setup.c signal.c syscalls.S time.c 
	                         vmlinux.lds.S 
	linux/arch/h8300/lib: Tag: MaltaRef_2_6 checksum.c 
	linux/arch/h8300/platform/h8300h: Tag: MaltaRef_2_6 entry.S 
	linux/arch/h8300/platform/h8300h/generic: Tag: MaltaRef_2_6 
	                                          timer.c 
	linux/arch/h8300/platform/h8s: Tag: MaltaRef_2_6 entry.S ints.c 
	linux/arch/h8300/platform/h8s/edosk2674: Tag: MaltaRef_2_6 
	                                         crt0_rom.S 
	linux/arch/i386: Tag: MaltaRef_2_6 Kconfig Kconfig.debug 
	                 Makefile defconfig 
	linux/arch/i386/boot: Tag: MaltaRef_2_6 bootsect.S edd.S setup.S 
	                      video.S 
	linux/arch/i386/boot/compressed: Tag: MaltaRef_2_6 misc.c 
	linux/arch/i386/crypto: Tag: MaltaRef_2_6 aes-i586-asm.S aes.c 
	linux/arch/i386/kernel: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                        apic.c apm.c asm-offsets.c cpuid.c 
	                        dmi_scan.c doublefault.c efi.c entry.S 
	                        head.S i386_ksyms.c i387.c i8259.c 
	                        io_apic.c ioport.c irq.c ldt.c mca.c 
	                        microcode.c mpparse.c msr.c nmi.c 
	                        numaq.c pci-dma.c process.c ptrace.c 
	                        reboot.c scx200.c semaphore.c setup.c 
	                        signal.c smp.c smpboot.c srat.c 
	                        sysenter.c time.c time_hpet.c 
	                        trampoline.S traps.c vm86.c 
	                        vmlinux.lds.S vsyscall-sysenter.S 
	                        vsyscall.lds 
	linux/arch/i386/kernel/acpi: Tag: MaltaRef_2_6 Makefile boot.c 
	                             sleep.c wakeup.S 
	linux/arch/i386/kernel/cpu: Tag: MaltaRef_2_6 Makefile amd.c 
	                            centaur.c common.c cpu.h cyrix.c 
	                            intel.c nexgen.c proc.c transmeta.c 
	linux/arch/i386/kernel/cpu/cpufreq: Tag: MaltaRef_2_6 Kconfig 
	                                    Makefile gx-suspmod.c 
	                                    longhaul.c longrun.c 
	                                    p4-clockmod.c powernow-k7.c 
	                                    powernow-k8.c powernow-k8.h 
	                                    speedstep-centrino.c 
	                                    speedstep-ich.c 
	                                    speedstep-lib.c 
	                                    speedstep-smi.c 
	linux/arch/i386/kernel/cpu/mcheck: Tag: MaltaRef_2_6 k7.c mce.c 
	                                   mce.h non-fatal.c p4.c p5.c 
	                                   p6.c winchip.c 
	linux/arch/i386/kernel/cpu/mtrr: Tag: MaltaRef_2_6 centaur.c 
	                                 cyrix.c generic.c if.c main.c 
	                                 mtrr.h state.c 
	linux/arch/i386/kernel/timers: Tag: MaltaRef_2_6 common.c 
	                               timer.c timer_cyclone.c 
	                               timer_hpet.c timer_none.c 
	                               timer_pit.c timer_pm.c 
	                               timer_tsc.c 
	linux/arch/i386/lib: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                     dec_and_lock.c delay.c memcpy.c mmx.c 
	                     usercopy.c 
	linux/arch/i386/mach-default: Tag: MaltaRef_2_6 topology.c 
	linux/arch/i386/mach-es7000: Tag: MaltaRef_2_6 es7000.h 
	                             es7000plat.c 
	linux/arch/i386/mach-generic: Tag: MaltaRef_2_6 bigsmp.c 
	linux/arch/i386/mach-visws: Tag: MaltaRef_2_6 mpparse.c reboot.c 
	                            visws_apic.c 
	linux/arch/i386/mach-voyager: Tag: MaltaRef_2_6 voyager_basic.c 
	                              voyager_smp.c voyager_thread.c 
	linux/arch/i386/math-emu: Tag: MaltaRef_2_6 errors.c fpu_aux.c 
	                          fpu_entry.c fpu_proto.h fpu_system.h 
	                          get_address.c load_store.c 
	                          reg_constant.c reg_constant.h 
	                          reg_ld_str.c 
	linux/arch/i386/mm: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                    boot_ioremap.c discontig.c fault.c highmem.c 
	                    hugetlbpage.c init.c ioremap.c pageattr.c 
	                    pgtable.c 
	linux/arch/i386/oprofile: Tag: MaltaRef_2_6 Makefile init.c 
	                          nmi_int.c nmi_timer_int.c 
	                          op_model_athlon.c op_model_p4.c 
	                          op_model_ppro.c op_x86_model.h 
	linux/arch/i386/pci: Tag: MaltaRef_2_6 acpi.c common.c direct.c 
	                     fixup.c i386.c irq.c mmconfig.c numa.c 
	                     pcbios.c pci.h 
	linux/arch/i386/power: Tag: MaltaRef_2_6 Makefile cpu.c swsusp.S 
	linux/arch/ia64: Tag: MaltaRef_2_6 Kconfig Kconfig.debug 
	                 Makefile defconfig 
	linux/arch/ia64/configs: Tag: MaltaRef_2_6 sn2_defconfig 
	                         zx1_defconfig 
	linux/arch/ia64/dig: Tag: MaltaRef_2_6 Makefile 
	linux/arch/ia64/hp/common: Tag: MaltaRef_2_6 Makefile 
	                           sba_iommu.c 
	linux/arch/ia64/hp/sim: Tag: MaltaRef_2_6 simeth.c simserial.c 
	linux/arch/ia64/hp/zx1: Tag: MaltaRef_2_6 Makefile 
	linux/arch/ia64/ia32: Tag: MaltaRef_2_6 binfmt_elf32.c 
	                      elfcore32.h ia32_entry.S ia32_ioctl.c 
	                      ia32_ldt.c ia32_signal.c ia32_support.c 
	                      ia32priv.h sys_ia32.c 
	linux/arch/ia64/kernel: Tag: MaltaRef_2_6 Makefile acpi-ext.c 
	                        acpi.c asm-offsets.c cyclone.c efi.c 
	                        entry.S entry.h fsys.S gate.S head.S 
	                        ia64_ksyms.c iosapic.c irq.c irq_ia64.c 
	                        ivt.S mca.c mca_asm.S minstate.h 
	                        module.c palinfo.c patch.c perfmon.c 
	                        perfmon_default_smpl.c process.c 
	                        ptrace.c sal.c salinfo.c setup.c 
	                        sigframe.h signal.c smp.c smpboot.c 
	                        sys_ia64.c time.c traps.c unaligned.c 
	                        unwind.c vmlinux.lds.S 
	linux/arch/ia64/lib: Tag: MaltaRef_2_6 bitop.c 
	                     csum_partial_copy.c dec_and_lock.c flush.S 
	                     io.c memcpy.S memcpy_mck.S memset.S 
	                     swiotlb.c 
	linux/arch/ia64/mm: Tag: MaltaRef_2_6 contig.c discontig.c 
	                    extable.c fault.c hugetlbpage.c init.c 
	                    numa.c tlb.c 
	linux/arch/ia64/oprofile: Tag: MaltaRef_2_6 Kconfig Makefile 
	                          init.c 
	linux/arch/ia64/pci: Tag: MaltaRef_2_6 pci.c 
	linux/arch/ia64/sn: Tag: MaltaRef_2_6 Makefile 
	linux/arch/ia64/sn/kernel: Tag: MaltaRef_2_6 Makefile bte.c 
	                           idle.c irq.c mca.c setup.c 
	linux/arch/ia64/sn/kernel/sn2: Tag: MaltaRef_2_6 Makefile io.c 
	                               prominfo_proc.c ptc_deadlock.S 
	                               sn2_smp.c sn_proc_fs.c timer.c 
	                               timer_interrupt.c 
	linux/arch/m68k: Tag: MaltaRef_2_6 Kconfig Makefile defconfig 
	linux/arch/m68k/atari: Tag: MaltaRef_2_6 hades-pci.c stdma.c 
	                       stram.c 
	linux/arch/m68k/hp300: Tag: MaltaRef_2_6 config.c ints.c 
	                       reboot.S time.c 
	linux/arch/m68k/kernel: Tag: MaltaRef_2_6 bios32.c entry.S 
	                        head.S m68k_ksyms.c process.c ptrace.c 
	                        setup.c signal.c time.c vmlinux-std.lds 
	                        vmlinux-sun3.lds vmlinux.lds.S 
	linux/arch/m68k/lib: Tag: MaltaRef_2_6 checksum.c 
	linux/arch/m68k/mm: Tag: MaltaRef_2_6 memory.c motorola.c 
	                    sun3mmu.c 
	linux/arch/m68k/q40: Tag: MaltaRef_2_6 config.c q40ints.c 
	linux/arch/m68k/sun3: Tag: MaltaRef_2_6 Makefile mmu_emu.c 
	                      sun3dvma.c sun3ints.c 
	linux/arch/m68k/sun3x: Tag: MaltaRef_2_6 config.c 
	linux/arch/m68knommu: Tag: MaltaRef_2_6 Kconfig Makefile 
	                      defconfig 
	linux/arch/m68knommu/kernel: Tag: MaltaRef_2_6 asm-offsets.c 
	                             entry.S m68k_ksyms.c module.c 
	                             process.c ptrace.c setup.c signal.c 
	                             syscalltable.S time.c vmlinux.lds.S 
	linux/arch/m68knommu/lib: Tag: MaltaRef_2_6 Makefile checksum.c 
	linux/arch/m68knommu/mm: Tag: MaltaRef_2_6 init.c memory.c 
	linux/arch/m68knommu/platform/5206: Tag: MaltaRef_2_6 Makefile 
	linux/arch/m68knommu/platform/5206e: Tag: MaltaRef_2_6 Makefile 
	                                     config.c 
	linux/arch/m68knommu/platform/5249: Tag: MaltaRef_2_6 Makefile 
	                                    config.c 
	linux/arch/m68knommu/platform/5272: Tag: MaltaRef_2_6 Makefile 
	                                    config.c 
	linux/arch/m68knommu/platform/5307: Tag: MaltaRef_2_6 Makefile 
	                                    config.c entry.S timers.c 
	                                    vectors.c 
	linux/arch/m68knommu/platform/5407: Tag: MaltaRef_2_6 Makefile 
	                                    config.c 
	linux/arch/m68knommu/platform/68328: Tag: MaltaRef_2_6 Makefile 
	linux/arch/m68knommu/platform/68360: Tag: MaltaRef_2_6 Makefile 
	linux/arch/m68knommu/platform/68EZ328: Tag: MaltaRef_2_6 
	                                       Makefile 
	linux/arch/m68knommu/platform/68VZ328: Tag: MaltaRef_2_6 
	                                       Makefile 
	linux/arch/mips: Tag: MaltaRef_2_6 Kconfig Makefile defconfig 
	linux/arch/mips/arc: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                     misc.c 
	linux/arch/mips/au1000/common: Tag: MaltaRef_2_6 .cvsignore 
	                               Makefile au1xxx_irqmap.c 
	                               cputable.c dbdma.c dma.c irq.c 
	                               pci.c power.c puts.c reset.c 
	                               setup.c sleeper.S time.c usbdev.c 
	linux/arch/mips/au1000/csb250: Tag: MaltaRef_2_6 board_setup.c 
	                               init.c irqmap.c 
	linux/arch/mips/au1000/db1x00: Tag: MaltaRef_2_6 board_setup.c 
	                               irqmap.c mirage_ts.c 
	linux/arch/mips/au1000/hydrogen3: Tag: MaltaRef_2_6 
	                                  board_setup.c init.c irqmap.c 
	linux/arch/mips/au1000/mtx-1: Tag: MaltaRef_2_6 board_setup.c 
	                              init.c irqmap.c 
	linux/arch/mips/au1000/pb1000: Tag: MaltaRef_2_6 .cvsignore 
	                               board_setup.c irqmap.c 
	linux/arch/mips/au1000/pb1100: Tag: MaltaRef_2_6 board_setup.c 
	                               irqmap.c 
	linux/arch/mips/au1000/pb1500: Tag: MaltaRef_2_6 board_setup.c 
	                               irqmap.c 
	linux/arch/mips/au1000/pb1550: Tag: MaltaRef_2_6 board_setup.c 
	                               irqmap.c 
	linux/arch/mips/au1000/xxs1500: Tag: MaltaRef_2_6 board_setup.c 
	                                irqmap.c 
	linux/arch/mips/boot: Tag: MaltaRef_2_6 .cvsignore Makefile 
	linux/arch/mips/cobalt: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                        int-handler.S irq.c reset.c setup.c 
	linux/arch/mips/configs: Tag: MaltaRef_2_6 atlas_defconfig 
	                         capcella_defconfig cobalt_defconfig 
	                         db1000_defconfig db1100_defconfig 
	                         db1500_defconfig ddb5476_defconfig 
	                         ddb5477_defconfig decstation_defconfig 
	                         e55_defconfig ev64120_defconfig 
	                         ev96100_defconfig ip22_defconfig 
	                         ip27_defconfig ip32_defconfig 
	                         it8172_defconfig ivr_defconfig 
	                         jaguar-atx_defconfig jmr3927_defconfig 
	                         lasat200_defconfig malta_defconfig 
	                         mpc30x_defconfig ocelot_c_defconfig 
	                         ocelot_defconfig ocelot_g_defconfig 
	                         pb1100_defconfig pb1500_defconfig 
	                         pb1550_defconfig rm200_defconfig 
	                         sb1250-swarm_defconfig sead_defconfig 
	                         tb0226_defconfig tb0229_defconfig 
	                         workpad_defconfig yosemite_defconfig 
	linux/arch/mips/ddb5xxx/common: Tag: MaltaRef_2_6 .cvsignore 
	linux/arch/mips/ddb5xxx/ddb5074: Tag: MaltaRef_2_6 irq.c 
	                                 nile4_pic.c setup.c 
	linux/arch/mips/ddb5xxx/ddb5476: Tag: MaltaRef_2_6 .cvsignore 
	                                 setup.c vrc5476_irq.c 
	linux/arch/mips/ddb5xxx/ddb5477: Tag: MaltaRef_2_6 .cvsignore 
	                                 irq_5477.c setup.c 
	linux/arch/mips/dec: Tag: MaltaRef_2_6 .cvsignore ioasic-irq.c 
	                     kn02-irq.c setup.c 
	linux/arch/mips/dec/boot: Tag: MaltaRef_2_6 .cvsignore 
	                          decstation.c 
	linux/arch/mips/dec/prom: Tag: MaltaRef_2_6 .cvsignore 
	linux/arch/mips/galileo-boards/ev96100: Tag: MaltaRef_2_6 time.c 
	linux/arch/mips/gt64120/common: Tag: MaltaRef_2_6 .cvsignore 
	                                time.c 
	linux/arch/mips/gt64120/ev64120: Tag: MaltaRef_2_6 .cvsignore 
	                                 irq.c 
	linux/arch/mips/gt64120/momenco_ocelot: Tag: MaltaRef_2_6 
	                                        .cvsignore irq.c setup.c 
	linux/arch/mips/ite-boards/generic: Tag: MaltaRef_2_6 .cvsignore 
	                                    irq.c 
	linux/arch/mips/ite-boards/qed-4n-s01b: Tag: MaltaRef_2_6 
	                                        .cvsignore 
	linux/arch/mips/jazz: Tag: MaltaRef_2_6 .cvsignore irq.c 
	                      jazzdma.c 
	linux/arch/mips/jmr3927/rbhma3100: Tag: MaltaRef_2_6 irq.c 
	                                   setup.c 
	linux/arch/mips/kernel: Tag: MaltaRef_2_6 Makefile 
	                        binfmt_elfn32.c binfmt_elfo32.c branch.c 
	                        cpu-bugs64.c cpu-probe.c entry.S 
	                        gdb-stub.c genex.S genrtc.c head.S 
	                        i8259.c ioctl32.c irixelf.c irixinv.c 
	                        irixioctl.c irixsig.c irq-msc01.c 
	                        irq-mv6434x.c irq-rm7000.c irq.c 
	                        irq_cpu.c linux32.c mips_ksyms.c 
	                        module.c offset.c proc.c process.c 
	                        ptrace.c ptrace32.c r4k_fpu.S 
	                        r4k_switch.S rtlx.c scall32-o32.S 
	                        scall64-64.S scall64-n32.S scall64-o32.S 
	                        semaphore.c setup.c signal.c signal32.c 
	                        signal_n32.c smp.c syscall.c sysirix.c 
	                        time.c traps.c unaligned.c vmlinux.lds.S 
	                        vpe.c 
	linux/arch/mips/lasat: Tag: MaltaRef_2_6 .cvsignore interrupt.c 
	linux/arch/mips/lib: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                     csum_partial_copy.c dec_and_lock.c 
	                     strlen_user.S strnlen_user.S 
	linux/arch/mips/lib-32: Tag: MaltaRef_2_6 .cvsignore dump_tlb.c 
	                        r3k_dump_tlb.c 
	linux/arch/mips/lib-64: Tag: MaltaRef_2_6 .cvsignore dump_tlb.c 
	linux/arch/mips/math-emu: Tag: MaltaRef_2_6 .cvsignore cp1emu.c 
	                          dp_add.c dp_cmp.c dp_div.c dp_fint.c 
	                          dp_flong.c dp_frexp.c dp_fsp.c 
	                          dp_logb.c dp_modf.c dp_mul.c 
	                          dp_scalb.c dp_simple.c dp_sqrt.c 
	                          dp_sub.c dp_tint.c dp_tlong.c dsemul.c 
	                          dsemul.h ieee754.c ieee754.h 
	                          ieee754d.c ieee754dp.c ieee754dp.h 
	                          ieee754int.h ieee754m.c ieee754sp.c 
	                          ieee754sp.h ieee754xcpt.c 
	                          kernel_linkage.c sp_add.c sp_cmp.c 
	                          sp_div.c sp_fdp.c sp_fint.c sp_flong.c 
	                          sp_frexp.c sp_logb.c sp_modf.c 
	                          sp_mul.c sp_scalb.c sp_simple.c 
	                          sp_sqrt.c sp_sub.c sp_tint.c 
	                          sp_tlong.c 
	linux/arch/mips/mips-boards/atlas: Tag: MaltaRef_2_6 .cvsignore 
	                                   atlas_int.c 
	linux/arch/mips/mips-boards/generic: Tag: MaltaRef_2_6 
	                                     .cvsignore gdb_hook.c 
	                                     init.c memory.c pci.c 
	                                     time.c 
	linux/arch/mips/mips-boards/malta: Tag: MaltaRef_2_6 .cvsignore 
	                                   malta_int.c malta_setup.c 
	linux/arch/mips/mips-boards/sead: Tag: MaltaRef_2_6 .cvsignore 
	                                  sead_int.c 
	linux/arch/mips/mm: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                    c-r3k.c c-r4k.c c-sb1.c c-tx39.c cache.c 
	                    cerr-sb1.c cex-sb1.S dma-coherent.c 
	                    dma-ip27.c dma-noncoherent.c fault.c 
	                    highmem.c init.c ioremap.c pg-r4k.c pg-sb1.c 
	                    pgtable-32.c pgtable-64.c pgtable.c 
	                    sc-rm7k.c tlb-andes.c tlb-r3k.c tlb-r4k.c 
	                    tlb-r8k.c tlb-sb1.c 
	linux/arch/mips/momentum/jaguar_atx: Tag: MaltaRef_2_6 
	                                     .cvsignore 
	linux/arch/mips/momentum/ocelot_c: Tag: MaltaRef_2_6 .cvsignore 
	                                   cpci-irq.c irq.c uart-irq.c 
	linux/arch/mips/momentum/ocelot_g: Tag: MaltaRef_2_6 gt-irq.c 
	                                   irq.c 
	linux/arch/mips/pci: Tag: MaltaRef_2_6 Makefile fixup-atlas.c 
	                     fixup-au1000.c fixup-capcella.c 
	                     fixup-cobalt.c fixup-ev96100.c fixup-ip32.c 
	                     fixup-ite8172g.c fixup-ivr.c fixup-jaguar.c 
	                     fixup-jmr3927.c fixup-malta.c 
	                     fixup-mpc30x.c fixup-ocelot-c.c 
	                     fixup-ocelot-g.c fixup-rbtx4927.c 
	                     fixup-sni.c fixup-tb0219.c fixup-tb0226.c 
	                     fixup-yosemite.c ops-au1000.c 
	                     ops-bonito64.c ops-gt64111.c ops-gt64120.c 
	                     ops-msc.c ops-sni.c ops-titan.c 
	                     ops-tx4927.c ops-vr41xx.c pci-ddb5074.c 
	                     pci-ddb5476.c pci-ddb5477.c pci-ip27.c 
	                     pci-ip32.c pci-lasat.c pci-sb1250.c 
	                     pci-vr41xx.c pci-vr41xx.h pci-yosemite.c 
	                     pci.c 
	linux/arch/mips/pmc-sierra/yosemite: Tag: MaltaRef_2_6 
	                                     .cvsignore Makefile 
	                                     atmel_read_eeprom.h 
	                                     dbg_io.c ht-irq.c ht.c 
	                                     irq-handler.S irq.c prom.c 
	                                     py-console.c setup.c 
	                                     setup.h smp.c 
	linux/arch/mips/sgi-ip22: Tag: MaltaRef_2_6 .cvsignore 
	                          ip22-berr.c ip22-nvram.c ip22-setup.c 
	linux/arch/mips/sgi-ip27: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                          ip27-hubio.c ip27-init.c 
	                          ip27-irq-glue.S ip27-irq.c 
	                          ip27-klnuma.c ip27-memory.c ip27-nmi.c 
	                          ip27-reset.c ip27-smp.c ip27-timer.c 
	linux/arch/mips/sgi-ip32: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                          crime.c ip32-irq.c ip32-reset.c 
	                          ip32-setup.c 
	linux/arch/mips/sibyte: Tag: MaltaRef_2_6 .cvsignore 
	linux/arch/mips/sibyte/cfe: Tag: MaltaRef_2_6 .cvsignore setup.c 
	                            smp.c 
	linux/arch/mips/sibyte/sb1250: Tag: MaltaRef_2_6 .cvsignore 
	                               bcm1250_tbprof.c bus_watcher.c 
	                               irq.c irq_handler.S prom.c smp.c 
	                               time.c 
	linux/arch/mips/sibyte/swarm: Tag: MaltaRef_2_6 .cvsignore 
	                              rtc_m41t81.c rtc_xicor1241.c 
	                              setup.c time.c 
	linux/arch/mips/sni: Tag: MaltaRef_2_6 .cvsignore irq.c 
	linux/arch/mips/tx4927/common: Tag: MaltaRef_2_6 Makefile 
	                               tx4927_irq.c tx4927_setup.c 
	linux/arch/mips/tx4927/toshiba_rbtx4927: Tag: MaltaRef_2_6 
	                                         toshiba_rbtx4927_irq.c 
	                                         toshiba_rbtx4927_prom.c 
	                                         toshiba_rbtx4927_setup.c 
	linux/arch/mips/vr41xx/casio-e55: Tag: MaltaRef_2_6 .cvsignore 
	                                  setup.c 
	linux/arch/mips/vr41xx/common: Tag: MaltaRef_2_6 .cvsignore 
	                               Makefile bcu.c cmu.c giu.c icu.c 
	                               init.c int-handler.S ksyms.c 
	                               pmu.c vrc4173.c 
	linux/arch/mips/vr41xx/ibm-workpad: Tag: MaltaRef_2_6 .cvsignore 
	                                    setup.c 
	linux/arch/mips/vr41xx/nec-eagle: Tag: MaltaRef_2_6 .cvsignore 
	linux/arch/mips/vr41xx/tanbac-tb0226: Tag: MaltaRef_2_6 setup.c 
	linux/arch/mips/vr41xx/tanbac-tb0229: Tag: MaltaRef_2_6 
	                                      .cvsignore Makefile 
	                                      setup.c 
	linux/arch/mips/vr41xx/victor-mpc30x: Tag: MaltaRef_2_6 
	                                      .cvsignore setup.c 
	linux/arch/mips/vr41xx/zao-capcella: Tag: MaltaRef_2_6 
	                                     .cvsignore setup.c 
	linux/arch/parisc: Tag: MaltaRef_2_6 Kconfig Makefile 
	linux/arch/parisc/configs: Tag: MaltaRef_2_6 712_defconfig 
	                           a500_defconfig b180_defconfig 
	                           c3000_defconfig 
	linux/arch/parisc/hpux: Tag: MaltaRef_2_6 entry_hpux.S fs.c 
	                        sys_hpux.c 
	linux/arch/parisc/kernel: Tag: MaltaRef_2_6 Makefile 
	                          asm-offsets.c binfmt_elf32.c cache.c 
	                          drivers.c entry.S firmware.c 
	                          hardware.c head.S hpmc.S init_task.c 
	                          inventory.c ioctl32.c irq.c module.c 
	                          pacache.S parisc_ksyms.c pci-dma.c 
	                          pdc_chassis.c pdc_cons.c perf.c 
	                          perf_asm.S perf_images.h process.c 
	                          processor.c ptrace.c real2.S setup.c 
	                          signal.c signal32.c signal32.h smp.c 
	                          sys_parisc.c sys_parisc32.c syscall.S 
	                          syscall_table.S time.c traps.c 
	                          unaligned.c unwind.c vmlinux.lds.S 
	linux/arch/parisc/lib: Tag: MaltaRef_2_6 Makefile bitops.c 
	                       checksum.c debuglocks.c io.c lusercopy.S 
	linux/arch/parisc/math-emu: Tag: MaltaRef_2_6 driver.c 
	linux/arch/parisc/mm: Tag: MaltaRef_2_6 fault.c init.c ioremap.c 
	                      kmap.c 
	linux/arch/parisc/oprofile: Tag: MaltaRef_2_6 init.c 
	linux/arch/ppc : Tag: MaltaRef_2_6 Kconfig Kconfig.debug 
	                 Makefile 
	linux/arch/ppc/4xx_io: Tag: MaltaRef_2_6 serial_sicc.c 
	linux/arch/ppc/8260_io: Tag: MaltaRef_2_6 Kconfig enet.c 
	                        fcc_enet.c 
	linux/arch/ppc/8xx_io: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                       Makefile commproc.c cs4218_tdm.c enet.c 
	                       fec.c micropatch.c 
	linux/arch/ppc/amiga: Tag: MaltaRef_2_6 config.c 
	linux/arch/ppc/boot/common: Tag: MaltaRef_2_6 misc-common.c 
	                            ns16550.c serial_stub.c util.S 
	linux/arch/ppc/boot/images: Tag: MaltaRef_2_6 Makefile 
	linux/arch/ppc/boot/include: Tag: MaltaRef_2_6 nonstdio.h 
	linux/arch/ppc/boot/lib: Tag: MaltaRef_2_6 Makefile 
	linux/arch/ppc/boot/openfirmware: Tag: MaltaRef_2_6 coffmain.c 
	                                  common.c misc.S 
	linux/arch/ppc/boot/simple: Tag: MaltaRef_2_6 Makefile clear.S 
	                            embed_config.c head.S m8260_tty.c 
	                            misc-embedded.c misc-prep.c 
	                            misc-spruce.c misc.c mpc52xx_tty.c 
	                            relocate.S 
	linux/arch/ppc/boot/utils: Tag: MaltaRef_2_6 mkbugboot.c 
	                           mktree.c 
	linux/arch/ppc/configs: Tag: MaltaRef_2_6 FADS_defconfig 
	                        IVMS8_defconfig SM850_defconfig 
	                        SPD823TS_defconfig TQM823L_defconfig 
	                        TQM850L_defconfig TQM860L_defconfig 
	                        adir_defconfig apus_defconfig 
	                        bseip_defconfig common_defconfig 
	                        ev64260_defconfig ibmchrp_defconfig 
	                        k2_defconfig mbx_defconfig 
	                        menf1_defconfig mvme5100_defconfig 
	                        pcore_defconfig pmac_defconfig 
	                        pplus_defconfig rpxcllf_defconfig 
	                        rpxlite_defconfig 
	linux/arch/ppc/kernel: Tag: MaltaRef_2_6 Makefile align.c 
	                       asm-offsets.c bitops.c cpu_setup_6xx.S 
	                       cpu_setup_power4.S cputable.c 
	                       dma-mapping.c entry.S head.S head_44x.S 
	                       head_4xx.S head_8xx.S idle.c idle_6xx.S 
	                       idle_power4.S irq.c l2cr.S misc.S pci.c 
	                       ppc-stub.c ppc_htab.c ppc_ksyms.c 
	                       process.c ptrace.c setup.c signal.c smp.c 
	                       softemu8xx.c syscalls.c temp.c time.c 
	                       traps.c vmlinux.lds.S 
	linux/arch/ppc/lib: Tag: MaltaRef_2_6 checksum.S dec_and_lock.c 
	                    locks.c rheap.c string.S 
	linux/arch/ppc/math-emu: Tag: MaltaRef_2_6 op-common.h 
	linux/arch/ppc/mm: Tag: MaltaRef_2_6 44x_mmu.c fsl_booke_mmu.c 
	                   hashtable.S init.c mmu_decl.h pgtable.c 
	                   ppc_mmu.c tlb.c 
	linux/arch/ppc/oprofile: Tag: MaltaRef_2_6 Makefile 
	linux/arch/ppc/platforms: Tag: MaltaRef_2_6 Makefile adir_pic.c 
	                          adir_setup.c apus_setup.c chrp_pci.c 
	                          chrp_setup.c chrp_smp.c chrp_time.c 
	                          est8260.h ev64260.h gemini_pci.c 
	                          gemini_prom.S gemini_setup.c k2.c 
	                          lite5200.c lite5200.h mcpn765.c 
	                          mcpn765.h mpc5200.c mvme5100.h 
	                          pal4_setup.c pcore.c pmac_backlight.c 
	                          pmac_cpufreq.c pmac_feature.c 
	                          pmac_low_i2c.c pmac_nvram.c pmac_pci.c 
	                          pmac_pic.c pmac_setup.c pmac_sleep.S 
	                          pmac_smp.c pmac_time.c powerpmc250.h 
	                          pplus.c pq2ads.h prep_pci.c 
	                          prep_setup.c prpmc750.c prpmc750.h 
	                          prpmc800.c prpmc800.h residual.c 
	                          rpx8260.h rpxclassic.h rpxlite.h 
	                          sandpoint.c sbc82xx.c sbc82xx.h 
	                          spruce.c tqm8260.h tqm8260_setup.c 
	                          tqm8xx.h 
	linux/arch/ppc/platforms/4xx: Tag: MaltaRef_2_6 Kconfig Makefile 
	                              ebony.c ebony.h ibm405ep.c 
	                              ibm405gp.c ibm405gpr.c ibm440gp.c 
	                              ibm440gx.c ibmnp405h.h ibmstbx25.c 
	                              oak.c ocotea.c ocotea.h redwood6.c 
	                              sycamore.c 
	linux/arch/ppc/platforms/85xx: Tag: MaltaRef_2_6 Kconfig 
	                               Makefile mpc8540_ads.c 
	                               mpc8540_ads.h mpc8555_cds.h 
	                               mpc8560_ads.c 
	                               mpc85xx_ads_common.c 
	                               mpc85xx_cds_common.c 
	                               mpc85xx_cds_common.h sbc8560.c 
	                               sbc85xx.c 
	linux/arch/ppc/syslib: Tag: MaltaRef_2_6 Makefile btext.c 
	                       cpc700.h cpm2_pic.c cpm2_pic.h 
	                       gen550_dbg.c gen550_kgdb.c gt64260_pic.c 
	                       hawk_common.c i8259.c ibm440gx_common.c 
	                       ibm440gx_common.h ibm44x_common.c 
	                       ibm44x_common.h indirect_pci.c 
	                       m8260_pci_erratum9.c m8260_setup.c 
	                       m8xx_setup.c mpc10x_common.c 
	                       mpc52xx_pic.c mpc52xx_setup.c open_pic.c 
	                       open_pic2.c open_pic_defs.h ppc405_pci.c 
	                       ppc4xx_dma.c ppc4xx_pic.c ppc4xx_setup.c 
	                       ppc4xx_sgdma.c ppc85xx_common.c 
	                       ppc85xx_common.h ppc85xx_setup.c 
	                       ppc85xx_setup.h ppc8xx_pic.c prom.c 
	                       prom_init.c qspan_pci.c todc_time.c 
	linux/arch/ppc/xmon: Tag: MaltaRef_2_6 start.c xmon.c 
	linux/arch/ppc64: Tag: MaltaRef_2_6 Kconfig Kconfig.debug 
	                  Makefile defconfig 
	linux/arch/ppc64/boot: Tag: MaltaRef_2_6 Makefile addnote.c 
	                       install.sh main.c string.S zImage.lds 
	linux/arch/ppc64/configs: Tag: MaltaRef_2_6 g5_defconfig 
	                          iSeries_defconfig pSeries_defconfig 
	linux/arch/ppc64/kernel: Tag: MaltaRef_2_6 HvLpEvent.c 
	                         ItLpQueue.c LparData.c Makefile align.c 
	                         asm-offsets.c binfmt_elf32.c bitops.c 
	                         btext.c cpu_setup_power4.S cputable.c 
	                         dma.c eeh.c entry.S head.S hvconsole.c 
	                         i8259.c i8259.h iSeries_VpdInfo.c 
	                         iSeries_htab.c iSeries_iommu.c 
	                         iSeries_irq.c iSeries_pci.c 
	                         iSeries_pci_reset.c iSeries_proc.c 
	                         iSeries_setup.c iSeries_setup.h idle.c 
	                         idle_power4.S ioctl32.c iommu.c irq.c 
	                         lmb.c lparcfg.c mf.c misc.S module.c 
	                         nvram.c of_device.c pSeries_hvCall.S 
	                         pSeries_iommu.c pSeries_lpar.c 
	                         pSeries_nvram.c pSeries_pci.c 
	                         pacaData.c pci.c pci.h pci_dn.c 
	                         pci_iommu.c pmac.h pmac_feature.c 
	                         pmac_low_i2c.c pmac_nvram.c pmac_pci.c 
	                         pmac_setup.c pmac_smp.c pmac_time.c 
	                         ppc_ksyms.c proc_ppc64.c process.c 
	                         prom.c ptrace.c ptrace32.c ras.c 
	                         rtas-proc.c rtas.c rtas_flash.c rtasd.c 
	                         rtc.c scanlog.c semaphore.c setup.c 
	                         signal.c signal32.c smp.c sys_ppc32.c 
	                         syscalls.c sysfs.c time.c traps.c 
	                         udbg.c vecemu.c vio.c viopath.c 
	                         vmlinux.lds.S xics.c 
	linux/arch/ppc64/lib: Tag: MaltaRef_2_6 Makefile checksum.S 
	                      dec_and_lock.c locks.c 
	linux/arch/ppc64/mm: Tag: MaltaRef_2_6 Makefile fault.c 
	                     hash_low.S hash_utils.c hugetlbpage.c 
	                     imalloc.c init.c numa.c slb.c slb_low.S 
	                     stab.c tlb.c 
	linux/arch/ppc64/oprofile: Tag: MaltaRef_2_6 common.c op_impl.h 
	                           op_model_power4.c op_model_rs64.c 
	linux/arch/ppc64/xmon: Tag: MaltaRef_2_6 ppc-opc.c start.c 
	                       xmon.c 
	linux/arch/s390: Tag: MaltaRef_2_6 Kconfig Makefile defconfig 
	linux/arch/s390/appldata: Tag: MaltaRef_2_6 appldata_base.c 
	                          appldata_mem.c appldata_net_sum.c 
	                          appldata_os.c 
	linux/arch/s390/boot: Tag: MaltaRef_2_6 Makefile 
	linux/arch/s390/kernel: Tag: MaltaRef_2_6 Makefile asm-offsets.c 
	                        binfmt_elf32.c compat_ioctl.c 
	                        compat_linux.c compat_linux.h 
	                        compat_signal.c compat_wrapper.S cpcmd.c 
	                        debug.c ebcdic.c entry.S entry64.S 
	                        head.S head64.S module.c process.c 
	                        profile.c ptrace.c s390_ext.c 
	                        s390_ksyms.c setup.c signal.c smp.c 
	                        sys_s390.c syscalls.S time.c traps.c 
	                        vmlinux.lds.S vtime.c 
	linux/arch/s390/lib: Tag: MaltaRef_2_6 string.c 
	linux/arch/s390/mm: Tag: MaltaRef_2_6 Makefile cmm.c extmem.c 
	                    fault.c init.c 
	linux/arch/s390/oprofile: Tag: MaltaRef_2_6 Kconfig init.c 
	linux/arch/sh  : Tag: MaltaRef_2_6 Kconfig Makefile 
	linux/arch/sh/boards/bigsur: Tag: MaltaRef_2_6 irq.c setup.c 
	linux/arch/sh/boards/dreamcast: Tag: MaltaRef_2_6 setup.c 
	linux/arch/sh/boards/harp: Tag: MaltaRef_2_6 setup.c 
	linux/arch/sh/boards/hp6xx/hp620: Tag: MaltaRef_2_6 Makefile 
	linux/arch/sh/boards/overdrive: Tag: MaltaRef_2_6 pcidma.c 
	linux/arch/sh/boards/renesas/hs7751rvoip: Tag: MaltaRef_2_6 io.c 
	linux/arch/sh/boards/renesas/rts7751r2d: Tag: MaltaRef_2_6 
	                                         mach.c 
	linux/arch/sh/boards/se/7300: Tag: MaltaRef_2_6 io.c 
	linux/arch/sh/boards/se/770x: Tag: MaltaRef_2_6 irq.c mach.c 
	linux/arch/sh/boards/se/7751: Tag: MaltaRef_2_6 io.c pci.c 
	linux/arch/sh/boards/snapgear: Tag: MaltaRef_2_6 setup.c 
	linux/arch/sh/cchips/voyagergx: Tag: MaltaRef_2_6 consistent.c 
	linux/arch/sh/configs: Tag: MaltaRef_2_6 adx_defconfig 
	                       cqreek_defconfig dreamcast_defconfig 
	                       hp680_defconfig rts7751r2d_defconfig 
	                       se7300_defconfig se7751_defconfig 
	                       snapgear_defconfig systemh_defconfig 
	linux/arch/sh/drivers/dma: Tag: MaltaRef_2_6 dma-api.c dma-g2.c 
	                           dma-pvr2.c 
	linux/arch/sh/drivers/pci: Tag: MaltaRef_2_6 Kconfig Makefile 
	                           dma-dreamcast.c fixups-dreamcast.c 
	                           fixups-rts7751r2d.c ops-rts7751r2d.c 
	                           pci-auto.c pci-sh7751.c pci-st40.c 
	                           pci-st40.h pci.c 
	linux/arch/sh/kernel: Tag: MaltaRef_2_6 cpufreq.c early_printk.c 
	                      entry.S irq.c process.c ptrace.c setup.c 
	                      sh_bios.c sh_ksyms.c signal.c smp.c time.c 
	                      traps.c vmlinux.lds.S 
	linux/arch/sh/kernel/cpu: Tag: MaltaRef_2_6 bus.c init.c 
	                          irq_imask.c irq_ipr.c 
	linux/arch/sh/kernel/cpu/sh2: Tag: MaltaRef_2_6 Makefile 
	linux/arch/sh/kernel/cpu/sh3: Tag: MaltaRef_2_6 Makefile 
	linux/arch/sh/kernel/cpu/sh4: Tag: MaltaRef_2_6 Makefile ex.S 
	                              fpu.c irq_intc2.c sq.c 
	linux/arch/sh/lib: Tag: MaltaRef_2_6 Makefile delay.c 
	linux/arch/sh/mm: Tag: MaltaRef_2_6 Makefile cache-sh2.c 
	                  cache-sh3.c cache-sh4.c consistent.c extable.c 
	                  fault-nommu.c fault.c hugetlbpage.c init.c 
	                  ioremap.c pg-sh4.c tlb-sh3.c tlb-sh4.c 
	linux/arch/sh/oprofile: Tag: MaltaRef_2_6 Makefile 
	                        op_model_null.c 
	linux/arch/sh/ramdisk: Tag: MaltaRef_2_6 Makefile 
	linux/arch/sh/tools: Tag: MaltaRef_2_6 Makefile mach-types 
	linux/arch/sh64: Tag: MaltaRef_2_6 Kconfig Kconfig.debug 
	                 Makefile 
	linux/arch/sh64/configs: Tag: MaltaRef_2_6 cayman_defconfig 
	linux/arch/sh64/kernel: Tag: MaltaRef_2_6 Makefile dma.c 
	                        early_printk.c entry.S fpu.c head.S 
	                        irq.c irq_intc.c pci_sh5.c pcibios.c 
	                        process.c ptrace.c setup.c sh_ksyms.c 
	                        signal.c switchto.S sys_sh64.c 
	                        syscalls.S time.c traps.c vmlinux.lds.S 
	linux/arch/sh64/lib: Tag: MaltaRef_2_6 Makefile c-checksum.c 
	                     copy_user_memcpy.S dbg.c io.c page_clear.S 
	                     page_copy.S 
	linux/arch/sh64/mach-cayman: Tag: MaltaRef_2_6 Makefile irq.c 
	                             setup.c 
	linux/arch/sh64/mm: Tag: MaltaRef_2_6 cache.c extable.c fault.c 
	                    hugetlbpage.c init.c ioremap.c tlbmiss.c 
	linux/arch/sh64/oprofile: Tag: MaltaRef_2_6 op_model_null.c 
	linux/arch/sparc: Tag: MaltaRef_2_6 Kconfig Makefile 
	linux/arch/sparc/kernel: Tag: MaltaRef_2_6 apc.c auxio.c ebus.c 
	                         entry.S idprom.c init_task.c ioport.c 
	                         irq.c muldiv.c pcic.c pmc.c process.c 
	                         ptrace.c semaphore.c setup.c signal.c 
	                         smp.c sparc_ksyms.c sun4c_irq.c 
	                         sun4d_irq.c sun4d_smp.c sun4m_smp.c 
	                         sys_sparc.c sys_sunos.c systbls.S 
	                         time.c traps.c unaligned.c 
	                         vmlinux.lds.S 
	linux/arch/sparc/lib: Tag: MaltaRef_2_6 atomic32.c bitext.c 
	                      memcpy.S 
	linux/arch/sparc/mm: Tag: MaltaRef_2_6 fault.c generic.c 
	                     highmem.c init.c io-unit.c iommu.c srmmu.c 
	                     sun4c.c 
	linux/arch/sparc/prom: Tag: MaltaRef_2_6 console.c memory.c 
	                       misc.c ranges.c sun4prom.c tree.c 
	linux/arch/sparc64: Tag: MaltaRef_2_6 Kconfig Kconfig.debug 
	                    Makefile defconfig 
	linux/arch/sparc64/kernel: Tag: MaltaRef_2_6 Makefile auxio.c 
	                           binfmt_aout32.c binfmt_elf32.c 
	                           central.c chmc.c cpu.c devices.c 
	                           dtlb_backend.S dtlb_base.S entry.S 
	                           etrap.S head.S ioctl32.c irq.c isa.c 
	                           module.c pci.c pci_common.c 
	                           pci_impl.h pci_iommu.c pci_psycho.c 
	                           pci_sabre.c pci_schizo.c power.c 
	                           process.c ptrace.c rtrap.S sbus.c 
	                           semaphore.c setup.c signal.c 
	                           signal32.c smp.c sparc64_ksyms.c 
	                           sys32.S sys_sparc.c sys_sparc32.c 
	                           sys_sunos32.c systbls.S time.c 
	                           trampoline.S traps.c ttable.S 
	                           unaligned.c vmlinux.lds.S winfixup.S 
	linux/arch/sparc64/lib: Tag: MaltaRef_2_6 Makefile PeeCeeI.c 
	                        U1memcpy.S U3memcpy.S U3patch.S atomic.S 
	                        bitops.S checksum.S copy_in_user.S 
	                        copy_page.S debuglocks.c dec_and_lock.S 
	                        find_bit.c ipcsum.S mcount.S memcmp.S 
	                        memmove.S memscan.S strlen.S 
	                        strlen_user.S strncmp.S 
	                        strncpy_from_user.S user_fixup.c xor.S 
	linux/arch/sparc64/mm: Tag: MaltaRef_2_6 fault.c generic.c 
	                       hugetlbpage.c init.c tlb.c ultra.S 
	linux/arch/sparc64/oprofile: Tag: MaltaRef_2_6 init.c 
	linux/arch/sparc64/prom: Tag: MaltaRef_2_6 Makefile map.S 
	                         memory.c p1275.c 
	linux/arch/sparc64/solaris: Tag: MaltaRef_2_6 entry64.S fs.c 
	                            ioctl.c misc.c socksys.c systbl.S 
	                            timod.c 
	linux/arch/um  : Tag: MaltaRef_2_6 Kconfig Kconfig.debug 
	                 Kconfig_char Kconfig_net Makefile Makefile-i386 
	                 Makefile-os-Linux Makefile-skas Makefile-tt 
	                 config.release defconfig 
	linux/arch/um/drivers: Tag: MaltaRef_2_6 Makefile chan_kern.c 
	                       chan_user.c daemon_user.c fd.c 
	                       harddog_user.c hostaudio_kern.c line.c 
	                       mcast_kern.c mcast_user.c mconsole_kern.c 
	                       mconsole_user.c mmapper_kern.c net_kern.c 
	                       net_user.c null.c port_kern.c port_user.c 
	                       pty.c slip_user.c slirp_kern.c 
	                       slirp_user.c ssl.c stdio_console.c tty.c 
	                       ubd_kern.c ubd_user.c xterm.c 
	                       xterm_kern.c 
	linux/arch/um/include: Tag: MaltaRef_2_6 chan_kern.h chan_user.h 
	                       choose-mode.h frame_kern.h init.h 
	                       irq_user.h kern.h kern_util.h line.h 
	                       mconsole.h mem.h mem_user.h mode.h 
	                       mode_kern.h net_kern.h os.h process.h 
	                       ptrace_user.h signal_user.h skas_ptrace.h 
	                       syscall_user.h sysrq.h time_user.h tlb.h 
	                       ubd_user.h um_mmu.h um_uaccess.h 
	                       uml_uaccess.h user.h user_util.h 
	linux/arch/um/include/sysdep-i386: Tag: MaltaRef_2_6 checksum.h 
	                                   ptrace.h ptrace_user.h 
	                                   sigcontext.h syscalls.h 
	linux/arch/um/include/sysdep-ppc: Tag: MaltaRef_2_6 syscalls.h 
	linux/arch/um/kernel: Tag: MaltaRef_2_6 Makefile checksum.c 
	                      config.c.in exec_kern.c exitcode.c 
	                      gmon_syms.c helper.c init_task.c irq.c 
	                      irq_user.c ksyms.c mem.c mem_user.c 
	                      process.c process_kern.c ptrace.c reboot.c 
	                      sigio_kern.c sigio_user.c signal_kern.c 
	                      signal_user.c smp.c syscall_kern.c 
	                      syscall_user.c sysrq.c tempfile.c time.c 
	                      time_kern.c tlb.c trap_kern.c trap_user.c 
	                      tty_log.c uaccess_user.c um_arch.c umid.c 
	                      user_util.c vmlinux.lds.S 
	linux/arch/um/kernel/skas: Tag: MaltaRef_2_6 Makefile 
	                           exec_kern.c mem.c mem_user.c mmu.c 
	                           process.c process_kern.c 
	                           syscall_kern.c syscall_user.c tlb.c 
	                           trap_user.c 
	linux/arch/um/kernel/skas/include: Tag: MaltaRef_2_6 skas.h 
	linux/arch/um/kernel/skas/util: Tag: MaltaRef_2_6 Makefile 
	linux/arch/um/kernel/tt: Tag: MaltaRef_2_6 Makefile exec_kern.c 
	                         exec_user.c gdb.c ksyms.c mem.c 
	                         mem_user.c process_kern.c 
	                         syscall_kern.c syscall_user.c tlb.c 
	                         tracer.c trap_user.c uaccess_user.c 
	                         unmap.c 
	linux/arch/um/kernel/tt/include: Tag: MaltaRef_2_6 tt.h 
	linux/arch/um/kernel/tt/ptproxy: Tag: MaltaRef_2_6 Makefile 
	                                 proxy.c ptrace.c sysdep.c 
	                                 wait.c 
	linux/arch/um/os-Linux: Tag: MaltaRef_2_6 Makefile file.c 
	                        process.c tty.c 
	linux/arch/um/os-Linux/drivers: Tag: MaltaRef_2_6 Makefile 
	                                ethertap_kern.c ethertap_user.c 
	                                tuntap_user.c 
	linux/arch/um/sys-i386: Tag: MaltaRef_2_6 Makefile bugs.c 
	                        checksum.S fault.c ksyms.c ldt.c 
	                        ptrace.c ptrace_user.c sigcontext.c 
	                        syscalls.c sysrq.c 
	linux/arch/um/sys-i386/util: Tag: MaltaRef_2_6 Makefile mk_sc.c 
	linux/arch/um/sys-ia64: Tag: MaltaRef_2_6 Makefile 
	linux/arch/um/sys-ppc: Tag: MaltaRef_2_6 Makefile ptrace.c 
	                       ptrace_user.c sysrq.c 
	linux/arch/um/util: Tag: MaltaRef_2_6 Makefile 
	linux/arch/v850: Tag: MaltaRef_2_6 Kconfig 
	linux/arch/v850/kernel: Tag: MaltaRef_2_6 asm-consts.c 
	                        fpga85e2c.c irq.c memcons.c ptrace.c 
	                        rte_cb_leds.c rte_mb_a_pci.c semaphore.c 
	                        setup.c signal.c sim85e2.c simcons.c 
	                        syscalls.c time.c v850_ksyms.c 
	                        vmlinux.lds.S 
	linux/arch/v850/lib: Tag: MaltaRef_2_6 checksum.c memcpy.c 
	linux/arch/x86_64: Tag: MaltaRef_2_6 Kconfig Kconfig.debug 
	                   Makefile defconfig 
	linux/arch/x86_64/boot: Tag: MaltaRef_2_6 Makefile bootsect.S 
	                        setup.S video.S 
	linux/arch/x86_64/boot/compressed: Tag: MaltaRef_2_6 Makefile 
	linux/arch/x86_64/ia32: Tag: MaltaRef_2_6 fpu32.c ia32_aout.c 
	                        ia32_binfmt.c ia32_ioctl.c ia32_signal.c 
	                        ia32entry.S ipc32.c ptrace32.c 
	                        sys_ia32.c syscall32.c 
	                        vsyscall-sigreturn.S vsyscall.lds 
	linux/arch/x86_64/kernel: Tag: MaltaRef_2_6 Makefile aperture.c 
	                          apic.c asm-offsets.c e820.c 
	                          early_printk.c entry.S head.S head64.c 
	                          i387.c i8259.c init_task.c io_apic.c 
	                          ioport.c irq.c ldt.c mce.c module.c 
	                          mpparse.c msr.c nmi.c pci-dma.c 
	                          pci-gart.c pci-nommu.c process.c 
	                          ptrace.c reboot.c semaphore.c setup.c 
	                          setup64.c signal.c smp.c smpboot.c 
	                          suspend.c suspend_asm.S sys_x86_64.c 
	                          time.c trampoline.S traps.c 
	                          vmlinux.lds.S vsyscall.c x8664_ksyms.c 
	linux/arch/x86_64/kernel/acpi: Tag: MaltaRef_2_6 sleep.c 
	                               wakeup.S 
	linux/arch/x86_64/kernel/cpufreq: Tag: MaltaRef_2_6 Kconfig 
	                                  Makefile 
	linux/arch/x86_64/lib: Tag: MaltaRef_2_6 Makefile bitstr.c 
	                       copy_user.S csum-wrappers.c 
	                       dec_and_lock.c delay.c getuser.S io.c 
	                       memmove.c putuser.S usercopy.c 
	linux/arch/x86_64/mm: Tag: MaltaRef_2_6 Makefile extable.c 
	                      fault.c init.c ioremap.c k8topology.c 
	                      numa.c pageattr.c 
	linux/arch/x86_64/oprofile: Tag: MaltaRef_2_6 Makefile 
	linux/arch/x86_64/pci: Tag: MaltaRef_2_6 Makefile mmconfig.c 
	linux/crypto   : Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                 aes.c api.c blowfish.c cast5.c cast6.c cipher.c 
	                 crypto_null.c deflate.c internal.h 
	                 michael_mic.c scatterwalk.c scatterwalk.h 
	                 serpent.c sha1.c sha256.c sha512.c tcrypt.c 
	                 tcrypt.h tea.c 
	linux/drivers  : Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	linux/drivers/acorn/block: Tag: MaltaRef_2_6 fd1772.c mfmhd.c 
	linux/drivers/acorn/char: Tag: MaltaRef_2_6 .cvsignore i2c.c 
	                          pcf8583.c 
	linux/drivers/acorn/net: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/acorn/scsi: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/acpi: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                    Makefile ac.c asus_acpi.c battery.c 
	                    blacklist.c bus.c button.c debug.c ec.c 
	                    event.c fan.c motherboard.c numa.c osl.c 
	                    pci_bind.c pci_irq.c pci_link.c pci_root.c 
	                    power.c scan.c system.c tables.c thermal.c 
	                    toshiba_acpi.c utils.c 
	linux/drivers/acpi/dispatcher: Tag: MaltaRef_2_6 .cvsignore 
	                               dsfield.c dsinit.c dsmethod.c 
	                               dsmthdat.c dsobject.c dsopcode.c 
	                               dsutils.c dswexec.c dswload.c 
	                               dswscope.c dswstate.c 
	linux/drivers/acpi/events: Tag: MaltaRef_2_6 .cvsignore 
	                           evevent.c evgpe.c evgpeblk.c evmisc.c 
	                           evregion.c evrgnini.c evsci.c 
	                           evxface.c evxfevnt.c evxfregn.c 
	linux/drivers/acpi/executer: Tag: MaltaRef_2_6 .cvsignore 
	                             exconfig.c exconvrt.c excreate.c 
	                             exdump.c exfield.c exfldio.c 
	                             exmisc.c exmutex.c exnames.c 
	                             exoparg1.c exoparg2.c exoparg3.c 
	                             exoparg6.c exprep.c exregion.c 
	                             exresnte.c exresolv.c exresop.c 
	                             exstore.c exstoren.c exstorob.c 
	                             exsystem.c exutils.c 
	linux/drivers/acpi/hardware: Tag: MaltaRef_2_6 .cvsignore 
	                             Makefile hwacpi.c hwgpe.c hwregs.c 
	                             hwsleep.c hwtimer.c 
	linux/drivers/acpi/namespace: Tag: MaltaRef_2_6 .cvsignore 
	                              Makefile nsaccess.c nsalloc.c 
	                              nsdump.c nsdumpdv.c nseval.c 
	                              nsinit.c nsload.c nsnames.c 
	                              nsobject.c nsparse.c nssearch.c 
	                              nsutils.c nswalk.c nsxfeval.c 
	                              nsxfname.c nsxfobj.c 
	linux/drivers/acpi/ospm: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/acpi/ospm/ac_adapter: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/acpi/ospm/battery: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/acpi/ospm/busmgr: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/acpi/ospm/button: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/acpi/ospm/ec: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/acpi/ospm/processor: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/acpi/ospm/system: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/acpi/ospm/thermal: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/acpi/parser: Tag: MaltaRef_2_6 .cvsignore psargs.c 
	                           psopcode.c psparse.c psscope.c 
	                           pstree.c psutils.c pswalk.c psxface.c 
	linux/drivers/acpi/resources: Tag: MaltaRef_2_6 .cvsignore 
	                              Makefile rsaddr.c rscalc.c 
	                              rscreate.c rsdump.c rsio.c rsirq.c 
	                              rslist.c rsmemory.c rsmisc.c 
	                              rsutils.c rsxface.c 
	linux/drivers/acpi/sleep: Tag: MaltaRef_2_6 Makefile main.c 
	                          poweroff.c proc.c sleep.h wakeup.c 
	linux/drivers/acpi/tables: Tag: MaltaRef_2_6 .cvsignore 
	                           tbconvrt.c tbget.c tbgetall.c 
	                           tbinstal.c tbrsdt.c tbutils.c 
	                           tbxface.c tbxfroot.c 
	linux/drivers/acpi/utilities: Tag: MaltaRef_2_6 .cvsignore 
	                              utalloc.c utcopy.c utdebug.c 
	                              utdelete.c uteval.c utglobal.c 
	                              utinit.c utmath.c utmisc.c 
	                              utobject.c utxface.c 
	linux/drivers/atm: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                   ambassador.c ambassador.h atmtcp.c eni.c 
	                   eni.h firestream.c firestream.h fore200e.c 
	                   fore200e.h he.c he.h horizon.c horizon.h 
	                   idt77105.c idt77105.h idt77252.c idt77252.h 
	                   iphase.c iphase.h lanai.c nicstar.c nicstar.h 
	                   nicstarmac.c suni.c zatm.c 
	linux/drivers/base: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                    Makefile bus.c class.c class_simple.c core.c 
	                    cpu.c dmapool.c driver.c firmware.c 
	                    firmware_class.c init.c map.c node.c 
	                    platform.c sys.c 
	linux/drivers/base/fs: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/base/power: Tag: MaltaRef_2_6 .cvsignore main.c 
	                          power.h resume.c runtime.c shutdown.c 
	                          suspend.c 
	linux/drivers/block: Tag: MaltaRef_2_6 .cvsignore DAC960.c 
	                     DAC960.h Kconfig Kconfig.iosched Makefile 
	                     acsi.c amiflop.c as-iosched.c ataflop.c 
	                     cciss.c cciss.h cciss_scsi.c cciss_scsi.h 
	                     cfq-iosched.c cpqarray.c cpqarray.h 
	                     deadline-iosched.c elevator.c floppy.c 
	                     genhd.c ida_cmd.h ida_ioctl.h ioctl.c 
	                     ll_rw_blk.c loop.c nbd.c noop-iosched.c 
	                     ps2esdi.c rd.c scsi_ioctl.c smart1,2.h 
	                     swim3.c swim_iop.c sx8.c ub.c umem.c 
	                     viodasd.c xd.c z2ram.c 
	linux/drivers/block/paride: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                            bpck6.c paride.c paride.h pcd.c pd.c 
	                            pf.c pg.c pseudo.h pt.c 
	linux/drivers/bluetooth: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                         Makefile bcm203x.c bfusb.c 
	                         bluecard_cs.c bt3c_cs.c btuart_cs.c 
	                         dtl1_cs.c hci_bcsp.c hci_ldisc.c 
	                         hci_usb.c hci_usb.h hci_vhci.c 
	linux/drivers/cdrom: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                     Makefile aztcd.c cdrom.c cdu31a.c cdu31a.h 
	                     cm206.c gscd.c isp16.c isp16.h mcdx.c 
	                     optcd.c sbpcd.c sjcd.c sonycd535.c viocd.c 
	linux/drivers/char: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                    Makefile amiserial.c applicom.c 
	                    au1000_gpio.c au1000_ts.c au1000_usbraw.c 
	                    au1000_usbtty.c consolemap.c cp437.uni 
	                    cyclades.c ds1286.c ds1620.c dsp56k.c dtlk.c 
	                    ec3104_keyb.c efirtc.c epca.c epca.h esp.c 
	                    generic_nvram.c generic_serial.c genrtc.c 
	                    hangcheck-timer.c hpet.c hvc_console.c 
	                    hvcs.c hvsi.c hw_random.c i8k.c ip2.c 
	                    ip2main.c isicom.c istallion.c keyboard.c 
	                    lcd.c lcd.h lp.c mem.c misc.c moxa.c mxser.c 
	                    n_hdlc.c n_r3964.c n_tty.c nvram.c nwflash.c 
	                    pty.c qtronix.c random.c raw.c riscom8.c 
	                    rocket.c rocket_int.h rtc.c sb1250_duart.c 
	                    scx200_gpio.c selection.c ser_a2232.c 
	                    serial167.c snsc.c snsc.h sonypi.c 
	                    specialix.c specialix_io8.h stallion.c sx.c 
	                    sx.h synclink.c synclinkmp.c sysrq.c tipar.c 
	                    toshiba.c tty_io.c tty_ioctl.c vc_screen.c 
	                    viocons.c viotape.c vme_scc.c vt.c 
	                    vt_ioctl.c 
	linux/drivers/char/agp: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                        Makefile agp.h ali-agp.c alpha-agp.c 
	                        amd-k7-agp.c amd64-agp.c ati-agp.c 
	                        backend.c efficeon-agp.c frontend.c 
	                        generic.c hp-agp.c i460-agp.c 
	                        intel-agp.c isoch.c nvidia-agp.c 
	                        sis-agp.c sworks-agp.c uninorth-agp.c 
	                        via-agp.c 
	linux/drivers/char/drm: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                        Makefile drmP.h drm_memory.h 
	                        drm_memory_debug.h drm_os_linux.h 
	                        drm_pciids.h ffb_context.c ffb_drv.c 
	                        ffb_drv.h gamma_context.h gamma_dma.c 
	                        gamma_drv.c gamma_drv.h gamma_lists.h 
	                        i810_dma.c i810_drm.h i810_drv.c 
	                        i810_drv.h i830_dma.c i830_drm.h 
	                        i830_drv.c i830_drv.h i830_irq.c 
	                        mga_dma.c mga_drv.c mga_drv.h mga_irq.c 
	                        mga_state.c mga_warp.c r128_cce.c 
	                        r128_drv.c r128_drv.h r128_irq.c 
	                        r128_state.c radeon_cp.c radeon_drm.h 
	                        radeon_drv.c radeon_drv.h radeon_irq.c 
	                        radeon_mem.c radeon_state.c sis_drm.h 
	                        sis_drv.c sis_drv.h sis_ds.c sis_ds.h 
	                        sis_mm.c tdfx_drv.c 
	linux/drivers/char/ftape: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/char/ftape/compressor: Tag: MaltaRef_2_6 
	                                     .cvsignore 
	                                     zftape-compress.c 
	linux/drivers/char/ftape/lowlevel: Tag: MaltaRef_2_6 .cvsignore 
	                                   fc-10.c fdc-io.c fdc-io.h 
	                                   ftape-bsm.c ftape-bsm.h 
	                                   ftape-calibr.c ftape-ctl.c 
	                                   ftape-ctl.h ftape-init.c 
	                                   ftape-io.c ftape-io.h 
	                                   ftape-proc.c ftape-rw.c 
	                                   ftape-rw.h 
	linux/drivers/char/ftape/zftape: Tag: MaltaRef_2_6 .cvsignore 
	                                 zftape-buffers.c 
	                                 zftape-buffers.h zftape-init.c 
	                                 zftape-init.h zftape-rw.c 
	                                 zftape-rw.h zftape-vtbl.c 
	                                 zftape-vtbl.h zftape_syms.c 
	linux/drivers/char/ip2: Tag: MaltaRef_2_6 .cvsignore fip_firm.h 
	                        i2cmd.c i2cmd.h i2lib.c ip2types.h 
	linux/drivers/char/ipmi: Tag: MaltaRef_2_6 Kconfig ipmi_bt_sm.c 
	                         ipmi_devintf.c ipmi_msghandler.c 
	                         ipmi_poweroff.c ipmi_si_intf.c 
	                         ipmi_si_sm.h ipmi_watchdog.c 
	linux/drivers/char/mwave: Tag: MaltaRef_2_6 .cvsignore 3780i.c 
	                          mwavedd.c smapi.c 
	linux/drivers/char/pcmcia: Tag: MaltaRef_2_6 .cvsignore 
	                           synclink_cs.c 
	linux/drivers/char/rio: Tag: MaltaRef_2_6 .cvsignore func.h 
	                        linux_compat.h rio_linux.c rioboot.c 
	                        riocmd.c rioctrl.c rioinit.c riointr.c 
	                        rioroute.c riotable.c riotty.c 
	linux/drivers/char/watchdog: Tag: MaltaRef_2_6 .cvsignore 
	                             Kconfig Makefile alim7101_wdt.c 
	                             i8xx_tco.c ixp2000_wdt.c 
	                             ixp4xx_wdt.c machzwd.c pcwd.c 
	                             pcwd_pci.c pcwd_usb.c sa1100_wdt.c 
	                             sc1200wdt.c sc520_wdt.c 
	                             scx200_wdt.c wdt_pci.c 
	linux/drivers/cpufreq: Tag: MaltaRef_2_6 Kconfig Makefile 
	                       cpufreq.c cpufreq_performance.c 
	                       cpufreq_powersave.c cpufreq_userspace.c 
	                       freq_table.c 
	linux/drivers/dio: Tag: MaltaRef_2_6 .cvsignore Makefile dio.c 
	linux/drivers/eisa: Tag: MaltaRef_2_6 Makefile eisa-bus.c 
	                    pci_eisa.c 
	linux/drivers/fc4: Tag: MaltaRef_2_6 .cvsignore soc.c soc.h 
	                   socal.c socal.h 
	linux/drivers/firmware: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                        edd.c efivars.c pcdp.c 
	linux/drivers/i2c: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                   i2c-core.c i2c-dev.c i2c-sensor-detect.c 
	                   i2c-sensor-vid.c 
	linux/drivers/i2c/algos: Tag: MaltaRef_2_6 Kconfig 
	                         i2c-algo-bit.c i2c-algo-ite.c 
	                         i2c-algo-pca.c i2c-algo-pcf.c 
	                         i2c-algo-sgi.c i2c-algo-sibyte.c 
	linux/drivers/i2c/busses: Tag: MaltaRef_2_6 Kconfig Makefile 
	                          i2c-ali1535.c i2c-ali1563.c 
	                          i2c-ali15x3.c i2c-amd756.c 
	                          i2c-amd8111.c i2c-elektor.c 
	                          i2c-hydra.c i2c-i801.c i2c-i810.c 
	                          i2c-ibm_iic.c i2c-ibm_iic.h 
	                          i2c-iop3xx.c i2c-iop3xx.h i2c-ite.c 
	                          i2c-ixp4xx.c i2c-keywest.c 
	                          i2c-keywest.h i2c-mpc.c i2c-nforce2.c 
	                          i2c-piix4.c i2c-prosavage.c 
	                          i2c-savage4.c i2c-sibyte.c 
	                          i2c-sis5595.c i2c-sis630.c 
	                          i2c-sis96x.c i2c-via.c i2c-viapro.c 
	                          i2c-voodoo3.c scx200_acb.c 
	                          scx200_i2c.c 
	linux/drivers/i2c/chips: Tag: MaltaRef_2_6 Kconfig Makefile 
	                         adm1021.c adm1025.c adm1031.c asb100.c 
	                         ds1621.c eeprom.c fscher.c gl518sm.c 
	                         it87.c lm75.c lm77.c lm78.c lm80.c 
	                         lm83.c lm85.c lm90.c max1619.c 
	                         pcf8574.c pcf8591.c rtc8564.c 
	                         smsc47m1.c via686a.c w83627hf.c 
	                         w83781d.c w83l785ts.c 
	linux/drivers/i2o: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/ide: Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                   ide-cd.c ide-cd.h ide-disk.c ide-dma.c 
	                   ide-floppy.c ide-io.c ide-iops.c ide-lib.c 
	                   ide-pnp.c ide-probe.c ide-proc.c ide-tape.c 
	                   ide-taskfile.c ide.c setup-pci.c 
	linux/drivers/ide/arm: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                       icside.c rapide.c 
	linux/drivers/ide/legacy: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                          ali14xx.c dtc2278.c hd.c ht6560b.c 
	                          ide-cs.c qd65xx.c qd65xx.h umc8672.c 
	linux/drivers/ide/mips: Tag: MaltaRef_2_6 .cvsignore swarm.c 
	linux/drivers/ide/pci: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                       aec62xx.c alim15x3.c amd74xx.c atiixp.c 
	                       cmd640.c cmd64x.c cs5520.c cs5530.c 
	                       cy82c693.c generic.c hpt34x.c hpt366.c 
	                       it8172.c ns87415.c opti621.c 
	                       pdc202xx_new.c pdc202xx_old.c piix.c 
	                       rz1000.c sc1200.c serverworks.c sgiioc4.c 
	                       siimage.c sis5513.c sl82c105.c slc90e66.c 
	                       triflex.c trm290.c via82cxxx.c 
	linux/drivers/ide/ppc: Tag: MaltaRef_2_6 .cvsignore pmac.c 
	linux/drivers/ieee1394: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                        amdtp.c config_roms.c csr.c csr1212.c 
	                        dma.c dv1394.c eth1394.c eth1394.h 
	                        highlevel.c ieee1394.h ieee1394_core.c 
	                        ieee1394_core.h ieee1394_transactions.c 
	                        ieee1394_transactions.h nodemgr.c 
	                        nodemgr.h ohci1394.c ohci1394.h 
	                        pcilynx.c pcilynx.h raw1394.c sbp2.c 
	                        sbp2.h video1394.c 
	linux/drivers/input: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                     evbug.c evdev.c input.c joydev.c mousedev.c 
	                     power.c tsdev.c 
	linux/drivers/input/gameport: Tag: MaltaRef_2_6 .cvsignore 
	                              Kconfig cs461x.c emu10k1-gp.c 
	                              fm801-gp.c gameport.c lightning.c 
	                              ns558.c vortex.c 
	linux/drivers/input/joystick: Tag: MaltaRef_2_6 .cvsignore 
	                              Kconfig a3d.c adi.c amijoy.c 
	                              analog.c cobra.c db9.c gamecon.c 
	                              gf2k.c grip.c grip_mp.c 
	                              guillemot.c interact.c joydump.c 
	                              magellan.c sidewinder.c 
	                              spaceball.c spaceorb.c stinger.c 
	                              tmdc.c turbografx.c twidjoy.c 
	                              warrior.c 
	linux/drivers/input/joystick/iforce: Tag: MaltaRef_2_6 Kconfig 
	                                     iforce-main.c 
	                                     iforce-serio.c iforce.h 
	linux/drivers/input/keyboard: Tag: MaltaRef_2_6 .cvsignore 
	                              Kconfig Makefile atkbd.c 
	                              hpps2atkbd.h lkkbd.c newtonkbd.c 
	                              sunkbd.c xtkbd.c 
	linux/drivers/input/misc: Tag: MaltaRef_2_6 Kconfig Makefile 
	                          pcspkr.c sparcspkr.c uinput.c 
	linux/drivers/input/mouse: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                           Makefile logips2pp.c logips2pp.h 
	                           pc110pad.c psmouse-base.c psmouse.h 
	                           sermouse.c synaptics.c synaptics.h 
	                           vsxxxaa.c 
	linux/drivers/input/serio: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                           Makefile ambakmi.c ct82c710.c 
	                           gscps2.c i8042-io.h i8042-sparcio.h 
	                           i8042.c i8042.h maceps2.c parkbd.c 
	                           pcips2.c q40kbd.c rpckbd.c 
	                           sa1111ps2.c serio.c serport.c 
	linux/drivers/input/touchscreen: Tag: MaltaRef_2_6 Kconfig 
	                                 Makefile gunze.c 
	                                 h3600_ts_input.c 
	linux/drivers/isdn: Tag: MaltaRef_2_6 .cvsignore Makefile 
	linux/drivers/isdn/act2000: Tag: MaltaRef_2_6 .cvsignore 
	                            act2000_isa.c module.c 
	linux/drivers/isdn/avmb1: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/isdn/capi: Tag: MaltaRef_2_6 .cvsignore capi.c 
	                         capidrv.c capifs.c kcapi.c kcapi_proc.c 
	linux/drivers/isdn/divert: Tag: MaltaRef_2_6 .cvsignore 
	                           divert_init.c divert_procfs.c 
	                           isdn_divert.c isdn_divert.h 
	linux/drivers/isdn/eicon: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/isdn/hardware: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/isdn/hardware/avm: Tag: MaltaRef_2_6 .cvsignore 
	                                 Kconfig avm_cs.c avmcard.h b1.c 
	                                 b1dma.c b1pci.c b1pcmcia.c c4.c 
	                                 t1isa.c t1pci.c 
	linux/drivers/isdn/hardware/eicon: Tag: MaltaRef_2_6 capifunc.c 
	                                   capifunc.h dadapter.c 
	                                   dadapter.h debug.c debug_if.h 
	                                   debuglib.h di.c di.h 
	                                   diddfunc.c diva_didd.c 
	                                   diva_pci.h divamnt.c 
	                                   divasfunc.c divasi.c 
	                                   divasmain.c divasproc.c 
	                                   divasync.h idifunc.c io.c 
	                                   io.h maintidi.c maintidi.h 
	                                   message.c mntfunc.c os_4bri.c 
	                                   os_bri.c os_pri.c pc.h 
	                                   platform.h s_4bri.c s_bri.c 
	                                   s_pri.c xdi_adapter.h 
	                                   xdi_vers.h 
	linux/drivers/isdn/hisax: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                          Makefile amd7930_fn.c avm_a1p.c 
	                          avm_pci.c avma1_cs.c bkm_a4t.c 
	                          bkm_a8.c config.c diva.c elsa.c 
	                          elsa_cs.c enternow_pci.c gazel.c 
	                          hfc_pci.c hfc_sx.c hfc_usb.c 
	                          hfcscard.c hisax.h hisax_fcpcipnp.c 
	                          hisax_isac.c icc.c icc.h isdnhdlc.c 
	                          isurf.c niccy.c nj_s.c nj_u.c 
	                          sedlbauer.c sedlbauer_cs.c st5481_b.c 
	                          st5481_d.c st5481_init.c st5481_usb.c 
	                          teles0.c teles3.c teles_cs.c 
	                          telespci.c w6692.c 
	linux/drivers/isdn/hysdn: Tag: MaltaRef_2_6 .cvsignore 
	                          boardergo.c hycapi.c hysdn_sched.c 
	linux/drivers/isdn/i4l: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                        isdn_bsdcomp.c isdn_common.c isdn_net.c 
	                        isdn_net.h isdn_ppp.c isdn_tty.c 
	                        isdn_x25iface.c 
	linux/drivers/isdn/icn: Tag: MaltaRef_2_6 .cvsignore icn.c icn.h 
	linux/drivers/isdn/isdnloop: Tag: MaltaRef_2_6 .cvsignore 
	                             isdnloop.c 
	linux/drivers/isdn/pcbit: Tag: MaltaRef_2_6 .cvsignore drv.c 
	                          module.c pcbit.h 
	linux/drivers/isdn/sc: Tag: MaltaRef_2_6 .cvsignore card.h 
	                       hardware.h init.c 
	linux/drivers/isdn/tpam: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/macintosh: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                         Makefile adb.c adbhid.c ans-lcd.c 
	                         macio-adb.c macio_asic.c macserial.c 
	                         mediabay.c nvram.c therm_adt746x.c 
	                         therm_pm72.c therm_pm72.h 
	                         therm_windtunnel.c via-cuda.c via-pmu.c 
	linux/drivers/mca: Tag: MaltaRef_2_6 mca-bus.c mca-legacy.c 
	                   mca-proc.c 
	linux/drivers/md: Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                  dm-crypt.c dm-io.c dm-ioctl.c dm-linear.c 
	                  dm-log.c dm-log.h dm-raid1.c dm-snap.c 
	                  dm-stripe.c dm-table.c dm-target.c dm-zero.c 
	                  dm.c dm.h kcopyd.c linear.c md.c multipath.c 
	                  raid0.c raid1.c raid5.c raid6algos.c 
	                  raid6main.c 
	linux/drivers/media: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	linux/drivers/media/common: Tag: MaltaRef_2_6 .cvsignore 
	                            ir-common.c saa7146_core.c 
	                            saa7146_fops.c saa7146_hlp.c 
	                            saa7146_i2c.c saa7146_vbi.c 
	                            saa7146_video.c saa7146_vv_ksyms.c 
	linux/drivers/media/dvb: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                         Makefile 
	linux/drivers/media/dvb/av7110: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/media/dvb/b2c2: Tag: MaltaRef_2_6 .cvsignore 
	                              Kconfig Makefile skystar2.c 
	linux/drivers/media/dvb/bt8xx: Tag: MaltaRef_2_6 .cvsignore 
	                               Kconfig Makefile bt878.c bt878.h 
	                               dvb-bt8xx.c dvb-bt8xx.h 
	linux/drivers/media/dvb/dvb-core: Tag: MaltaRef_2_6 .cvsignore 
	                                  Makefile demux.h dmxdev.c 
	                                  dmxdev.h dvb_ca_en50221.c 
	                                  dvb_ca_en50221.h dvb_demux.c 
	                                  dvb_demux.h dvb_filter.c 
	                                  dvb_filter.h dvb_frontend.c 
	                                  dvb_frontend.h dvb_net.c 
	                                  dvb_net.h dvb_ringbuffer.c 
	                                  dvb_ringbuffer.h dvbdev.c 
	                                  dvbdev.h 
	linux/drivers/media/dvb/frontends: Tag: MaltaRef_2_6 .cvsignore 
	                                   Kconfig Makefile at76c651.c 
	                                   cx24110.c dvb_dummy_fe.c 
	                                   mt312.c mt312.h nxt6000.c 
	                                   nxt6000.h sp887x.c stv0299.c 
	                                   tda1004x.c ves1820.c 
	                                   ves1x93.c 
	linux/drivers/media/dvb/ttpci: Tag: MaltaRef_2_6 .cvsignore 
	                               Kconfig Makefile av7110.c 
	                               av7110.h av7110_av.c av7110_av.h 
	                               av7110_ca.c av7110_ca.h 
	                               av7110_hw.c av7110_hw.h 
	                               av7110_ipack.c av7110_ipack.h 
	                               av7110_ir.c av7110_v4l.c 
	                               budget-av.c budget-ci.c 
	                               budget-core.c budget-patch.c 
	                               budget.c budget.h ttpci-eeprom.c 
	                               ttpci-eeprom.h 
	linux/drivers/media/dvb/ttusb-budget: Tag: MaltaRef_2_6 
	                                      .cvsignore Kconfig 
	                                      Makefile 
	                                      dvb-ttusb-budget.c 
	                                      dvb-ttusb-dspbootcode.h 
	linux/drivers/media/dvb/ttusb-dec: Tag: MaltaRef_2_6 .cvsignore 
	                                   Kconfig Makefile ttusb_dec.c 
	linux/drivers/media/radio: Tag: MaltaRef_2_6 .cvsignore 
	                           miropcm20-radio.c miropcm20-rds.c 
	                           radio-aimslab.c radio-aztech.c 
	                           radio-cadet.c radio-gemtek-pci.c 
	                           radio-gemtek.c radio-maestro.c 
	                           radio-maxiradio.c radio-rtrack2.c 
	                           radio-sf16fmi.c radio-sf16fmr2.c 
	                           radio-terratec.c radio-trust.c 
	                           radio-typhoon.c radio-zoltrix.c 
	linux/drivers/media/video: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                           Makefile adv7170.c adv7175.c bt819.c 
	                           bt848.h bt856.c btcx-risc.c 
	                           btcx-risc.h bttv-cards.c 
	                           bttv-driver.c bttv-gpio.c bttv-i2c.c 
	                           bttv-if.c bttv-risc.c bttv-vbi.c 
	                           bttv.h bttvp.h bw-qcam.c c-qcam.c 
	                           cpia.c cpia_pp.c cpia_usb.c dpc7146.c 
	                           hexium_gemini.c hexium_orion.c 
	                           ir-kbd-gpio.c ir-kbd-i2c.c meye.c 
	                           meye.h msp3400.c msp3400.h mxb.c 
	                           mxb.h planb.c pms.c saa5246a.c 
	                           saa5246a.h saa5249.c saa7110.c 
	                           saa7111.c saa7114.c saa7146.h 
	                           saa7185.c stradis.c swarm_saa7114h.c 
	                           tda7432.c tda9840.c tda9875.c 
	                           tda9887.c tea6415c.c tea6420.c 
	                           tuner-3036.c tvaudio.c tvaudio.h 
	                           tvmixer.c v4l1-compat.c v4l2-common.c 
	                           video-buf.c videocodec.c videocodec.h 
	                           videodev.c vpx3220.c w9966.c zoran.h 
	                           zoran_card.c zoran_device.c 
	                           zoran_device.h zoran_driver.c 
	                           zr36016.c zr36050.c zr36050.h 
	                           zr36060.c zr36060.h zr36120.c 
	linux/drivers/media/video/cx88: Tag: MaltaRef_2_6 Makefile 
	                                cx88-cards.c cx88-core.c 
	                                cx88-i2c.c cx88-reg.h 
	                                cx88-tvaudio.c cx88-vbi.c 
	                                cx88-video.c cx88.h 
	linux/drivers/media/video/ovcamchip: Tag: MaltaRef_2_6 
	                                     ovcamchip_core.c 
	linux/drivers/media/video/saa7134: Tag: MaltaRef_2_6 Makefile 
	                                   saa6752hs.c saa7134-cards.c 
	                                   saa7134-core.c saa7134-i2c.c 
	                                   saa7134-input.c saa7134-oss.c 
	                                   saa7134-reg.h saa7134-ts.c 
	                                   saa7134-tvaudio.c 
	                                   saa7134-vbi.c saa7134-video.c 
	                                   saa7134.h 
	linux/drivers/message: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/message/fusion: Tag: MaltaRef_2_6 .cvsignore 
	                              Kconfig Makefile mptbase.c 
	                              mptbase.h mptctl.c mptlan.c 
	                              mptscsih.c mptscsih.h 
	linux/drivers/message/i2o: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                           i2o_block.c i2o_config.c i2o_proc.c 
	                           i2o_scsi.c 
	linux/drivers/misc: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                    Makefile 
	linux/drivers/misc/ibmasm: Tag: MaltaRef_2_6 ibmasm.h ibmasmfs.c 
	                           lowlevel.c lowlevel.h module.c uart.c 
	linux/drivers/mmc: Tag: MaltaRef_2_6 Kconfig Makefile mmc.c 
	                   mmc_block.c mmc_queue.c mmc_queue.h 
	                   mmc_sysfs.c mmci.c mmci.h pxamci.c pxamci.h 
	linux/drivers/mtd: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                   cmdlinepart.c ftl.c inftlcore.c inftlmount.c 
	                   mtd_blkdevs.c mtdblock.c mtdblock_ro.c 
	                   mtdchar.c mtdcore.c mtdpart.c nftlcore.c 
	                   nftlmount.c redboot.c 
	linux/drivers/mtd/chips: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                         amd_flash.c cfi_cmdset_0001.c 
	                         cfi_cmdset_0002.c cfi_cmdset_0020.c 
	                         cfi_probe.c cfi_util.c chipreg.c 
	                         gen_probe.c jedec.c jedec_probe.c 
	                         map_absent.c map_ram.c map_rom.c 
	linux/drivers/mtd/devices: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                           Makefile blkmtd.c doc2000.c doc2001.c 
	                           doc2001plus.c docprobe.c ms02-nv.c 
	                           mtdram.c phram.c pmc551.c slram.c 
	linux/drivers/mtd/maps: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                        Makefile amd76xrom.c arctic-mtd.c 
	                        autcpu12-nvram.c beech-mtd.c cdb89712.c 
	                        ceiva.c cfi_flagadm.c cstm_mips_ixx.c 
	                        dbox2-flash.c dc21285.c dilnetpc.c 
	                        dmv182.c ebony.c edb7312.c elan-104nc.c 
	                        epxa10db-flash.c fortunet.c 
	                        h720x-flash.c ichxrom.c impa7.c 
	                        integrator-flash.c iq80310.c ixp4xx.c 
	                        l440gx.c lasat.c lubbock-flash.c 
	                        mbx860.c mpc1211.c netsc520.c nettel.c 
	                        ocelot.c octagon-5066.c 
	                        omap-toto-flash.c pci.c pcmciamtd.c 
	                        physmap.c pnc2000.c redwood.c rpxlite.c 
	                        sa1100-flash.c sbc_gxx.c sc520cdp.c 
	                        scb2_flash.c scx200_docflash.c 
	                        solutionengine.c sun_uflash.c tqm8xxl.c 
	                        uclinux.c vmax301.c wr_sbc82xx_flash.c 
	linux/drivers/mtd/nand: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                        Makefile au1550nd.c autcpu12.c 
	                        diskonchip.c edb7312.c nand_base.c 
	                        nand_bbt.c ppchameleonevb.c spia.c 
	                        toto.c tx4925ndfmc.c tx4938ndfmc.c 
	linux/drivers/net: Tag: MaltaRef_2_6 .cvsignore 3c501.c 3c503.c 
	                   3c505.c 3c507.c 3c509.c 3c515.c 3c523.c 
	                   3c527.c 3c59x.c 7990.c 7990.h 8139cp.c 
	                   8139too.c 82596.c 8390.c 8390.h Kconfig 
	                   Makefile Space.c a2065.c ac3200.c acenic.c 
	                   acenic.h acenic_firmware.h amd8111e.c 
	                   amd8111e.h ariadne.c at1700.c atari_bionet.c 
	                   atari_pamsnet.c atarilance.c atp.c 
	                   au1000_eth.c au1000_eth.h b44.c b44.h 
	                   big_sur_ge.c big_sur_ge.h bmac.c bsd_comp.c 
	                   cs89x0.c cs89x0.h de600.c de620.c declance.c 
	                   defxx.c defxx.h depca.c dgrs.c dl2k.c dl2k.h 
	                   dummy.c e100.c e2100.c eepro.c eepro100.c 
	                   eexpress.c epic100.c eql.c es3210.c eth16i.c 
	                   ewrk3.c fealnx.c fec.c fec.h fmv18x.c 
	                   forcedeth.c gianfar.c gianfar.h 
	                   gianfar_ethtool.c gt64240eth.c gt64240eth.h 
	                   gt96100eth.c gt96100eth.h hamachi.c hp-plus.c 
	                   hp.c hp100.c hplance.c hplance.h hydra.c 
	                   ibmlana.c ibmlana.h ibmveth.c ioc3-eth.c 
	                   isa-skeleton.c iseries_veth.c jazzsonic.c 
	                   lance.c lasi_82596.c lne390.c loopback.c 
	                   lp486e.c mac8390.c mac89x0.c mace.c 
	                   macsonic.c meth.c mii.c mv643xx_eth.c 
	                   mv643xx_eth.h mvme147.c myri_sbus.c 
	                   myri_sbus.h natsemi.c ne.c ne2.c ne2k-pci.c 
	                   ne3210.c netconsole.c ni5010.c ni52.c ni65.c 
	                   ns83820.c pci-skeleton.c pcnet32.c plip.c 
	                   ppp_async.c ppp_deflate.c ppp_generic.c 
	                   ppp_synctty.c pppoe.c pppox.c r8169.c 
	                   rrunner.c rrunner.h s2io-regs.h s2io.c s2io.h 
	                   saa9730.c saa9730.h sb1000.c sb1250-mac.c 
	                   seeq8005.c sgiseeq.c shaper.c sis900.c 
	                   sk_g16.c sk_mca.c sk_mca.h slhc.c slip.c 
	                   smc-mca.c smc-ultra.c smc-ultra32.c smc9194.c 
	                   smc91x.c smc91x.h sonic.c starfire.c 
	                   sun3_82586.c sun3lance.c sunbmac.c sunbmac.h 
	                   sundance.c sungem.c sungem.h sungem_phy.c 
	                   sungem_phy.h sunhme.c sunhme.h sunlance.c 
	                   sunqe.c sunqe.h tc35815.c tg3.c tg3.h 
	                   titan_ge.c titan_ge.h titan_mdio.c 
	                   titan_mdio.h tlan.c tlan.h tun.c 
	                   typhoon-firmware.h typhoon.c via-rhine.c 
	                   via-velocity.c via-velocity.h wd.c 
	                   yellowfin.c znet.c 
	linux/drivers/net/appletalk: Tag: MaltaRef_2_6 .cvsignore 
	                             Kconfig cops.c cops_ffdrv.h 
	                             cops_ltdrv.h ipddp.c ltpc.c 
	linux/drivers/net/arcnet: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                          Makefile arc-rawmode.c arc-rimi.c 
	                          arcnet.c com20020-isa.c com20020.c 
	                          com90io.c com90xx.c rfc1051.c 
	                          rfc1201.c 
	linux/drivers/net/arm: Tag: MaltaRef_2_6 am79c961a.c ether1.c 
	                       ether1.h ether3.c ether3.h etherh.c 
	linux/drivers/net/bonding: Tag: MaltaRef_2_6 .cvsignore 
	                           bond_3ad.c bond_3ad.h bond_alb.c 
	                           bond_main.c bonding.h 
	linux/drivers/net/e100: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/net/e1000: Tag: MaltaRef_2_6 .cvsignore e1000.h 
	                         e1000_ethtool.c e1000_hw.c e1000_hw.h 
	                         e1000_main.c e1000_osdep.h 
	                         e1000_param.c 
	linux/drivers/net/fc: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/net/fec_8xx: Tag: MaltaRef_2_6 fec_8xx-netta.c 
	                           fec_main.c fec_mii.c 
	linux/drivers/net/hamradio: Tag: MaltaRef_2_6 .cvsignore 6pack.c 
	                            Kconfig baycom_epp.c baycom_par.c 
	                            baycom_ser_fdx.c baycom_ser_hdx.c 
	                            bpqether.c dmascc.c hdlcdrv.c 
	                            mkiss.c scc.c yam.c 
	linux/drivers/net/ibm_emac: Tag: MaltaRef_2_6 ibm_emac.h 
	                            ibm_emac_core.c ibm_emac_core.h 
	                            ibm_emac_mal.c ibm_emac_mal.h 
	                            ibm_emac_phy.c 
	linux/drivers/net/irda: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                        act200l-sir.c act200l.c actisys.c 
	                        ali-ircc.c au1k_ir.c donauboe.c 
	                        girbil-sir.c girbil.c irda-usb.c 
	                        irport.c irport.h irtty-sir.c 
	                        ma600-sir.c ma600.c mcp2120-sir.c 
	                        mcp2120.c nsc-ircc.c sa1100_ir.c 
	                        sir_dev.c sir_kthread.c smsc-ircc2.c 
	                        stir4200.c tekram-sir.c tekram.c 
	                        via-ircc.c via-ircc.h vlsi_ir.c 
	                        vlsi_ir.h w83977af_ir.c 
	linux/drivers/net/ixgb: Tag: MaltaRef_2_6 ixgb.h ixgb_ee.c 
	                        ixgb_ee.h ixgb_ethtool.c ixgb_hw.c 
	                        ixgb_hw.h ixgb_ids.h ixgb_main.c 
	                        ixgb_osdep.h ixgb_param.c 
	linux/drivers/net/pcmcia: Tag: MaltaRef_2_6 .cvsignore 
	                          3c574_cs.c 3c589_cs.c Kconfig 
	                          axnet_cs.c com20020_cs.c fmvj18x_cs.c 
	                          ibmtr_cs.c nmclan_cs.c pcnet_cs.c 
	                          smc91c92_cs.c xirc2ps_cs.c 
	linux/drivers/net/sk98lin: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                           skaddr.c skge.c skproc.c 
	linux/drivers/net/sk98lin/h: Tag: MaltaRef_2_6 .cvsignore 
	                             skdrv1st.h skdrv2nd.h 
	linux/drivers/net/skfp: Tag: MaltaRef_2_6 .cvsignore hwmtm.c 
	                        skfddi.c smt.c 
	linux/drivers/net/skfp/h: Tag: MaltaRef_2_6 fplustm.h targethw.h 
	                          targetos.h types.h 
	linux/drivers/net/tokenring: Tag: MaltaRef_2_6 .cvsignore 
	                             3c359.c 3c359.h Kconfig abyss.c 
	                             ibmtr.c lanstreamer.c lanstreamer.h 
	                             olympic.c olympic.h proteon.c 
	                             skisa.c smctr.c tms380tr.c tmspci.c 
	linux/drivers/net/tulip: Tag: MaltaRef_2_6 .cvsignore 21142.c 
	                         Kconfig de2104x.c de4x5.c dmfe.c 
	                         eeprom.c interrupt.c media.c pnic.c 
	                         pnic2.c timer.c tulip.h tulip_core.c 
	                         winbond-840.c xircom_cb.c 
	                         xircom_tulip_cb.c 
	linux/drivers/net/wan: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                       c101.c cosa.c cosa.h cycx_drv.c 
	                       cycx_main.c cycx_x25.c dlci.c dscc4.c 
	                       farsync.c hd6457x.c hdlc_x25.c 
	                       hostess_sv11.c lapbether.c n2.c pc300.h 
	                       pc300_drv.c pc300_tty.c pci200syn.c 
	                       sbni.c sdla.c sdla_chdlc.c sdla_fr.c 
	                       sdladrv.c sdlamain.c sealevel.c syncppp.c 
	                       wanxl.c x25_asy.c z85230.c 
	linux/drivers/net/wan/lmc: Tag: MaltaRef_2_6 .cvsignore 
	                           lmc_debug.c lmc_main.c lmc_media.c 
	                           lmc_proto.c 
	linux/drivers/net/wireless: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                            airo.c airo_cs.c airport.c 
	                            arlan-main.c arlan-proc.c arlan.h 
	                            atmel.c atmel_cs.c atmel_pci.c 
	                            hermes.c hermes.h netwave_cs.c 
	                            orinoco.c orinoco.h orinoco_cs.c 
	                            orinoco_pci.c orinoco_plx.c 
	                            orinoco_tmd.c ray_cs.c ray_cs.h 
	                            strip.c wavelan.c wavelan.p.h 
	                            wavelan_cs.c wavelan_cs.p.h 
	                            wl3501_cs.c 
	linux/drivers/net/wireless/prism54: Tag: MaltaRef_2_6 Makefile 
	                                    isl_38xx.c isl_38xx.h 
	                                    isl_ioctl.c isl_ioctl.h 
	                                    isl_oid.h islpci_dev.c 
	                                    islpci_dev.h islpci_eth.c 
	                                    islpci_hotplug.c 
	                                    islpci_mgt.c islpci_mgt.h 
	                                    oid_mgt.c oid_mgt.h 
	                                    prismcompat.h 
	linux/drivers/nubus: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/oprofile: Tag: MaltaRef_2_6 buffer_sync.c 
	                        buffer_sync.h cpu_buffer.c cpu_buffer.h 
	                        event_buffer.c event_buffer.h oprof.c 
	                        oprof.h oprofile_files.c 
	                        oprofile_stats.c oprofile_stats.h 
	                        oprofilefs.c timer_int.c 
	linux/drivers/parisc: Tag: MaltaRef_2_6 Kconfig Makefile asp.c 
	                      ccio-dma.c dino.c eisa.c eisa_eeprom.c 
	                      gsc.c gsc.h hppb.c iosapic.c 
	                      iosapic_private.h lasi.c lba_pci.c led.c 
	                      power.c sba_iommu.c superio.c wax.c 
	linux/drivers/parport: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                       daisy.c ieee1284.c parport_arc.c 
	                       parport_cs.c parport_gsc.c parport_pc.c 
	                       parport_serial.c parport_sunbpp.c probe.c 
	                       procfs.c share.c 
	linux/drivers/pci: Tag: MaltaRef_2_6 Kconfig Makefile access.c 
	                   bus.c gen-devlist.c hotplug.c msi.c msi.h 
	                   pci-driver.c pci-sysfs.c pci.c pci.h pci.ids 
	                   probe.c proc.c quirks.c remove.c search.c 
	                   setup-bus.c setup-irq.c setup-res.c syscall.c 
	linux/drivers/pci/hotplug: Tag: MaltaRef_2_6 Kconfig Makefile 
	                           acpiphp_core.c acpiphp_glue.c 
	                           acpiphp_ibm.c cpci_hotplug.h 
	                           cpci_hotplug_core.c 
	                           cpci_hotplug_pci.c cpcihp_generic.c 
	                           cpcihp_zt5550.c cpqphp.h 
	                           cpqphp_core.c cpqphp_ctrl.c 
	                           cpqphp_nvram.c cpqphp_nvram.h 
	                           cpqphp_pci.c fakephp.c ibmphp.h 
	                           ibmphp_core.c ibmphp_ebda.c 
	                           ibmphp_hpc.c ibmphp_pci.c 
	                           pci_hotplug.h pci_hotplug_core.c 
	                           pciehp.h pciehp_core.c pciehp_ctrl.c 
	                           pciehp_hpc.c pciehp_pci.c 
	                           pciehprm_acpi.c pcihp_skeleton.c 
	                           rpadlpar_core.c rpaphp.h 
	                           rpaphp_core.c rpaphp_pci.c 
	                           rpaphp_slot.c rpaphp_vio.c shpchp.h 
	                           shpchp_core.c shpchp_ctrl.c 
	                           shpchp_hpc.c shpchprm_acpi.c 
	                           shpchprm_legacy.c 
	linux/drivers/pcmcia: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                      Makefile au1000_db1x00.c au1000_generic.c 
	                      au1000_generic.h au1000_pb1x00.c 
	                      au1000_xxs1500.c cardbus.c cistpl.c cs.c 
	                      cs_internal.h ds.c hd64465_ss.c i82092.c 
	                      i82092aa.h i82365.c o2micro.h pd6729.c 
	                      pd6729.h pxa2xx_base.c pxa2xx_lubbock.c 
	                      pxa2xx_mainstone.c rsrc_mgr.c 
	                      sa1100_generic.c sa1100_h3600.c 
	                      sa1100_simpad.c sa1111_generic.c 
	                      soc_common.c soc_common.h socket_sysfs.c 
	                      tcic.c ti113x.h vrc4171_card.c 
	                      vrc4173_cardu.c yenta_socket.c 
	                      yenta_socket.h 
	linux/drivers/pnp: Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                   core.c interface.c manager.c quirks.c 
	                   resource.c system.c 
	linux/drivers/pnp/isapnp: Tag: MaltaRef_2_6 Kconfig core.c 
	linux/drivers/pnp/pnpbios: Tag: MaltaRef_2_6 Kconfig bioscalls.c 
	                           core.c proc.c rsparser.c 
	linux/drivers/s390: Tag: MaltaRef_2_6 Kconfig s390mach.h 
	linux/drivers/s390/block: Tag: MaltaRef_2_6 dasd.c 
	                          dasd_3990_erp.c dasd_cmb.c 
	                          dasd_devmap.c dasd_diag.c dasd_eckd.c 
	                          dasd_eckd.h dasd_erp.c dasd_fba.c 
	                          dasd_genhd.c dasd_int.h dasd_ioctl.c 
	                          dasd_proc.c dcssblk.c xpram.c 
	linux/drivers/s390/char: Tag: MaltaRef_2_6 Makefile con3215.c 
	                         con3270.c keyboard.c raw3270.c sclp.c 
	                         sclp.h sclp_con.c sclp_cpi.c sclp_rw.c 
	                         sclp_rw.h sclp_tty.c sclp_vt220.c 
	                         tape_block.c tape_core.c tty3270.c 
	linux/drivers/s390/cio: Tag: MaltaRef_2_6 airq.c blacklist.c 
	                        ccwgroup.c chsc.c chsc.h cio.c cio.h 
	                        cmf.c css.c css.h device.c device_fsm.c 
	                        device_id.c device_ops.c device_pgid.c 
	                        qdio.c qdio.h 
	linux/drivers/s390/crypto: Tag: MaltaRef_2_6 Makefile 
	                           z90common.h z90crypt.h z90hardware.c 
	                           z90main.c 
	linux/drivers/s390/net: Tag: MaltaRef_2_6 Kconfig Makefile 
	                        ctcdbug.h ctcmain.c ctctty.c cu3088.c 
	                        cu3088.h iucv.c iucv.h lcs.c lcs.h 
	                        netiucv.c qeth.h qeth_main.c qeth_mpc.h 
	                        qeth_proc.c qeth_sys.c smsgiucv.c 
	                        smsgiucv.h 
	linux/drivers/s390/scsi: Tag: MaltaRef_2_6 zfcp_aux.c zfcp_ccw.c 
	                         zfcp_def.h zfcp_erp.c zfcp_ext.h 
	                         zfcp_fsf.c zfcp_fsf.h zfcp_qdio.c 
	                         zfcp_scsi.c zfcp_sysfs_adapter.c 
	                         zfcp_sysfs_driver.c zfcp_sysfs_port.c 
	                         zfcp_sysfs_unit.c 
	linux/drivers/sbus: Tag: MaltaRef_2_6 .cvsignore dvma.c sbus.c 
	linux/drivers/sbus/audio: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/sbus/char: Tag: MaltaRef_2_6 .cvsignore aurora.c 
	                         bbc_envctrl.c bbc_i2c.c bpp.c 
	                         cpwatchdog.c display7seg.c envctrl.c 
	                         flash.c jsflash.c openprom.c 
	                         riowatchdog.c rtc.c vfc_dev.c 
	linux/drivers/scsi: Tag: MaltaRef_2_6 .cvsignore 3w-9xxx.c 
	                    3w-9xxx.h 3w-xxxx.c 3w-xxxx.h 53c700.c 
	                    53c700.h 53c7xx.c BusLogic.c BusLogic.h 
	                    Kconfig Makefile NCR5380.c NCR5380.h 
	                    NCR53C9x.c NCR53C9x.h NCR53c406a.c 
	                    NCR_D700.c NCR_Q720.c advansys.c advansys.h 
	                    aha152x.c aha1542.c aha1542.h aic7xxx_old.c 
	                    ata_piix.c atari_NCR5380.c atari_scsi.c 
	                    atp870u.c atp870u.h constants.c 
	                    cpqfcTScontrol.c cpqfcTSinit.c 
	                    cpqfcTSworker.c dc395x.c dec_esp.c 
	                    dmx3191d.c dpt_i2o.c dpti.h dtc.c dtc.h 
	                    eata.c eata_pio.c esp.c esp.h fd_mcs.c 
	                    fdomain.c g_NCR5380.c gdth.c gdth.h 
	                    gdth_proc.c gdth_proc.h hosts.c ibmmca.c 
	                    ide-scsi.c imm.c in2000.c ipr.c ipr.h ips.c 
	                    ips.h jazz_esp.c lasi700.c libata-core.c 
	                    libata-scsi.c libata.h mac53c94.c mac_esp.c 
	                    mac_scsi.c mca_53c9x.c megaraid.c mesh.c 
	                    ncr53c8xx.c ncr53c8xx.h nsp32.c nsp32.h 
	                    oktagon_esp.c osst.c osst.h pas16.c 
	                    pci2000.c pluto.c ppa.c psi240i.c psi240i.h 
	                    ql12160_fw.h ql1280_fw.h qla1280.c qla1280.h 
	                    qlogicfas.c qlogicfc.c qlogicfc_asm.c 
	                    qlogicisp.c qlogicpti.c qlogicpti.h 
	                    sata_nv.c sata_promise.c sata_sil.c 
	                    sata_sis.c sata_svw.c sata_sx4.c sata_via.c 
	                    sata_vsc.c scsi.c scsi.h scsi_debug.c 
	                    scsi_devinfo.c scsi_error.c scsi_ioctl.c 
	                    scsi_lib.c scsi_module.c scsi_priv.h 
	                    scsi_scan.c scsi_sysfs.c scsi_transport_fc.c 
	                    scsi_transport_spi.c scsicam.c sd.c 
	                    seagate.c sg.c sgiwd93.c sim710.c sr.c 
	                    sr_ioctl.c st.c st.h sun3_NCR5380.c 
	                    sun3_scsi.c sun3_scsi_vme.c sun3x_esp.c 
	                    sym53c416.c sym53c8xx_comm.h 
	                    sym53c8xx_defs.h t128.c t128.h tmscsim.c 
	                    tmscsim.h u14-34f.c ultrastor.c wd33c93.c 
	                    wd33c93.h wd7000.c zalon.c 
	linux/drivers/scsi/aacraid: Tag: MaltaRef_2_6 README aachba.c 
	                            aacraid.h commctrl.c comminit.c 
	                            commsup.c linit.c rkt.c rx.c sa.c 
	linux/drivers/scsi/aic7xxx: Tag: MaltaRef_2_6 .cvsignore 
	                            Kconfig.aic79xx Kconfig.aic7xxx 
	                            aic7770_osm.c aic79xx.h aic79xx.reg 
	                            aic79xx_core.c aic79xx_inline.h 
	                            aic79xx_osm.c aic79xx_osm.h 
	                            aic79xx_osm_pci.c aic79xx_pci.c 
	                            aic7xxx.h aic7xxx_core.c 
	                            aic7xxx_osm.c aic7xxx_osm.h 
	                            aic7xxx_osm_pci.c aic7xxx_pci.c 
	                            aic7xxx_proc.c aiclib.c aiclib.h 
	                            cam.h 
	linux/drivers/scsi/aic7xxx/aicasm: Tag: MaltaRef_2_6 Makefile 
	linux/drivers/scsi/aic7xxx_old: Tag: MaltaRef_2_6 aic7xxx_proc.c 
	linux/drivers/scsi/arm: Tag: MaltaRef_2_6 acornscsi.c arxescsi.c 
	                        cumana_1.c cumana_2.c ecoscsi.c eesox.c 
	                        fas216.c fas216.h oak.c powertec.c 
	                        scsi.h 
	linux/drivers/scsi/dpt: Tag: MaltaRef_2_6 dpti_ioctl.h 
	linux/drivers/scsi/pcmcia: Tag: MaltaRef_2_6 .cvsignore 
	                           aha152x_stub.c fdomain_stub.c 
	                           nsp_cs.c qlogic_stub.c sym53c500_cs.c 
	linux/drivers/scsi/qla2xxx: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                            Makefile ql2100.c ql2200.c ql2300.c 
	                            ql2300_fw.c ql2322.c ql2322_fw.c 
	                            ql6312.c ql6312_fw.c qla_dbg.c 
	                            qla_def.h qla_devtbl.h qla_gbl.h 
	                            qla_init.c qla_inline.h qla_iocb.c 
	                            qla_isr.c qla_mbx.c qla_os.c 
	                            qla_rscn.c qla_sup.c qla_version.h 
	linux/drivers/scsi/sym53c8xx_2: Tag: MaltaRef_2_6 .cvsignore 
	                                Makefile sym53c8xx.h sym_defs.h 
	                                sym_fw.c sym_fw.h sym_fw1.h 
	                                sym_fw2.h sym_glue.c sym_glue.h 
	                                sym_hipd.c sym_hipd.h 
	                                sym_malloc.c sym_misc.h 
	                                sym_nvram.c sym_nvram.h 
	linux/drivers/serial: Tag: MaltaRef_2_6 .cvsignore 21285.c 
	                      68328serial.c 68360serial.c 8250.c 8250.h 
	                      8250_acorn.c 8250_acpi.c 8250_gsc.c 
	                      8250_pci.c 8250_pnp.c Kconfig Makefile 
	                      amba-pl010.c amba-pl011.c au1x00_uart.c 
	                      bast_sio.c clps711x.c dz.c icom.c icom.h 
	                      ip22zilog.c mcfserial.c mpc52xx_uart.c 
	                      mux.c pmac_zilog.c pmac_zilog.h pxa.c 
	                      s3c2410.c sa1100.c serial_core.c 
	                      serial_cs.c serial_lh7a40x.c sh-sci.c 
	                      sh-sci.h sn_console.c sunsab.c sunsab.h 
	                      sunsu.c sunzilog.c uart00.c 
	linux/drivers/serial/cpm_uart: Tag: MaltaRef_2_6 cpm_uart.h 
	                               cpm_uart_core.c cpm_uart_cpm1.c 
	                               cpm_uart_cpm2.c 
	linux/drivers/tc: Tag: MaltaRef_2_6 .cvsignore zs.c 
	linux/drivers/telephony: Tag: MaltaRef_2_6 .cvsignore ixj.c 
	                         ixj.h ixj_pcmcia.c 
	linux/drivers/usb: Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                   README usb-skeleton.c 
	linux/drivers/usb/class: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                         audio.c bluetty.c cdc-acm.c cdc-acm.h 
	                         usb-midi.c usb-midi.h usblp.c 
	linux/drivers/usb/core: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                        buffer.c config.c devices.c devio.c 
	                        file.c hcd-pci.c hcd.c hcd.h hub.c hub.h 
	                        inode.c message.c sysfs.c urb.c usb.c 
	                        usb.h 
	linux/drivers/usb/gadget: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                          Makefile config.c dummy_hcd.c 
	                          epautoconf.c ether.c file_storage.c 
	                          gadget_chips.h goku_udc.c goku_udc.h 
	                          inode.c net2280.c net2280.h 
	                          pxa2xx_udc.c pxa2xx_udc.h rndis.c 
	                          rndis.h serial.c usbstring.c zero.c 
	linux/drivers/usb/host: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                        Makefile ehci-dbg.c ehci-hcd.c 
	                        ehci-hub.c ehci-mem.c ehci-q.c 
	                        ehci-sched.c ehci.h ohci-dbg.c 
	                        ohci-hcd.c ohci-hub.c ohci-lh7a404.c 
	                        ohci-mem.c ohci-omap.c ohci-pci.c 
	                        ohci-q.c ohci-sa1111.c ohci.h 
	                        uhci-debug.c uhci-hcd.c uhci-hcd.h 
	                        uhci-hub.c 
	linux/drivers/usb/image: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                         Makefile mdc800.c microtek.c microtek.h 
	linux/drivers/usb/input: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                         aiptek.c ati_remote.c hid-core.c 
	                         hid-debug.h hid-ff.c hid-input.c 
	                         hid-lgff.c hid.h hiddev.c kbtab.c 
	                         mtouchusb.c pid.c pid.h powermate.c 
	                         touchkitusb.c usbkbd.c usbmouse.c 
	                         wacom.c xpad.c 
	linux/drivers/usb/media: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                         Makefile dabusb.c ibmcam.c konicawc.c 
	                         ov511.c se401.c sn9c102.h 
	                         sn9c102_core.c sn9c102_pas106b.c 
	                         sn9c102_pas202bcb.c sn9c102_sensor.h 
	                         sn9c102_tas5110c1b.c 
	                         sn9c102_tas5130d1b.c stv680.c 
	                         ultracam.c usbvideo.c vicam.c w9968cf.c 
	                         w9968cf.h 
	linux/drivers/usb/misc: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                        Makefile auerswald.c cytherm.c emi26.c 
	                        emi62.c legousbtower.c phidgetservo.c 
	                        rio500.c usblcd.c usbled.c usbtest.c 
	                        uss720.c 
	linux/drivers/usb/net: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                       Makefile catc.c kaweth.c kawethfw.h 
	                       pegasus.c pegasus.h rtl8150.c usbnet.c 
	linux/drivers/usb/serial: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                          Makefile belkin_sa.c bus.c console.c 
	                          cyberjack.c digi_acceleport.c empeg.c 
	                          ezusb.c ftdi_sio.c ftdi_sio.h 
	                          generic.c io_edgeport.c io_edgeport.h 
	                          io_fw_boot.h io_fw_boot2.h 
	                          io_fw_down.h io_fw_down2.h 
	                          io_fw_down3.h io_tables.h io_ti.c 
	                          io_usbvend.h ipaq.c ipaq.h ir-usb.c 
	                          keyspan.c keyspan.h keyspan_pda.c 
	                          keyspan_usa90msg.h kl5kusb105.c 
	                          kobil_sct.c mct_u232.c omninet.c 
	                          pl2303.c pl2303.h safe_serial.c 
	                          usb-serial.c usb-serial.h visor.c 
	                          visor.h whiteheat.c 
	linux/drivers/usb/storage: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                           Makefile datafab.c debug.c debug.h 
	                           dpcm.c freecom.c initializers.c 
	                           isd200.c jumpshot.c protocol.c 
	                           protocol.h scsiglue.c scsiglue.h 
	                           sddr09.c sddr55.c shuttle_usbat.c 
	                           shuttle_usbat.h transport.c 
	                           transport.h unusual_devs.h usb.c 
	                           usb.h 
	linux/drivers/video: Tag: MaltaRef_2_6 .cvsignore 68328fb.c 
	                     Kconfig Makefile acornfb.c amba-clcd.c 
	                     amifb.c asiliantfb.c au1100fb.c au1100fb.h 
	                     bw2.c cfbcopyarea.c cfbfillrect.c 
	                     cfbimgblt.c cg14.c cg3.c cg6.c chipsfb.c 
	                     cirrusfb.c clps711xfb.c controlfb.c 
	                     cyber2000fb.c cyber2000fb.h dnfb.c 
	                     epson1355fb.c epson1356fb.c fbcmap.c 
	                     fbmem.c fbmon.c fbsysfs.c ffb.c fm2fb.c 
	                     g364fb.c gbefb.c hgafb.c hitfb.c hpfb.c 
	                     igafb.c imsttfb.c leo.c macfb.c macmodes.c 
	                     maxinefb.c modedb.c neofb.c offb.c p9100.c 
	                     platinumfb.c pm2fb.c pm3fb.c pmag-ba-fb.c 
	                     pmagb-b-fb.c pvr2fb.c pxafb.c q40fb.c 
	                     radeonfb.c sa1100fb.c sbuslib.c sgivwfb.c 
	                     skeletonfb.c softcursor.c sstfb.c stifb.c 
	                     sun3fb.c tcx.c tdfxfb.c tgafb.c tridentfb.c 
	                     tx3912fb.c valkyriefb.c vesafb.c vfb.c 
	                     vga16fb.c vgastate.c 
	linux/drivers/video/aty: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                         ati_ids.h aty128fb.c atyfb.h 
	                         atyfb_base.c mach64_accel.c mach64_ct.c 
	                         mach64_cursor.c mach64_gx.c 
	                         radeon_accel.c radeon_base.c 
	                         radeon_i2c.c radeon_monitor.c 
	                         radeon_pm.c radeonfb.h xlinit.c 
	linux/drivers/video/console: Tag: MaltaRef_2_6 .cvsignore 
	                             Kconfig Makefile dummycon.c fbcon.c 
	                             fbcon.h font_6x11.c mdacon.c 
	                             newport_con.c promcon.c sticon.c 
	                             sticore.c vgacon.c 
	linux/drivers/video/i810: Tag: MaltaRef_2_6 i810.h i810_accel.c 
	                          i810_gtf.c i810_main.c i810_main.h 
	linux/drivers/video/kyro: Tag: MaltaRef_2_6 STG4000InitDevice.c 
	                          STG4000Interface.h 
	                          STG4000OverlayDevice.c STG4000Ramdac.c 
	                          STG4000Reg.h STG4000VTG.c fbdev.c 
	linux/drivers/video/logo: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                          Makefile logo.c 
	linux/drivers/video/matrox: Tag: MaltaRef_2_6 .cvsignore 
	                            Makefile matroxfb_DAC1064.c 
	                            matroxfb_DAC1064.h matroxfb_accel.c 
	                            matroxfb_base.c matroxfb_base.h 
	                            matroxfb_crtc2.c matroxfb_crtc2.h 
	                            matroxfb_g450.h matroxfb_misc.c 
	linux/drivers/video/riva: Tag: MaltaRef_2_6 .cvsignore fbdev.c 
	                          nv_driver.c riva_hw.c riva_hw.h 
	                          rivafb-i2c.c rivafb.h 
	linux/drivers/video/sis: Tag: MaltaRef_2_6 .cvsignore 300vtbl.h 
	                         310vtbl.h init.c init.h init301.c 
	                         init301.h initdef.h oem300.h oem310.h 
	                         osdef.h sis.h sis_main.c sis_main.h 
	                         vgatypes.h vstruct.h 
	linux/drivers/w1: Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                  dscore.c dscore.h matrox_w1.c w1.c w1.h 
	                  w1_family.c w1_int.c w1_int.h w1_io.c w1_io.h 
	                  w1_netlink.c w1_smem.c w1_therm.c 
	linux/drivers/zorro: Tag: MaltaRef_2_6 .cvsignore zorro.c 
	linux/fs       : Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                 Kconfig.binfmt Makefile aio.c attr.c 
	                 bad_inode.c binfmt_aout.c binfmt_elf.c 
	                 binfmt_em86.c binfmt_flat.c binfmt_misc.c 
	                 binfmt_script.c binfmt_som.c bio.c block_dev.c 
	                 buffer.c char_dev.c compat.c compat_ioctl.c 
	                 dcache.c dcookies.c direct-io.c dquot.c 
	                 eventpoll.c exec.c fcntl.c fifo.c file.c 
	                 file_table.c filesystems.c fs-writeback.c 
	                 inode.c ioctl.c libfs.c locks.c mbcache.c 
	                 mpage.c namei.c namespace.c nfsctl.c open.c 
	                 pipe.c posix_acl.c quota.c quota_v1.c 
	                 quota_v2.c read_write.c readdir.c select.c 
	                 seq_file.c stat.c super.c xattr.c 
	linux/fs/adfs  : Tag: MaltaRef_2_6 .cvsignore adfs.h dir.c 
	                 dir_f.c dir_fplus.h inode.c map.c super.c 
	linux/fs/affs  : Tag: MaltaRef_2_6 .cvsignore amigaffs.c 
	                 bitmap.c dir.c file.c inode.c namei.c super.c 
	                 symlink.c 
	linux/fs/afs   : Tag: MaltaRef_2_6 .cvsignore cell.c cmservice.c 
	                 dir.c file.c fsclient.c inode.c kafsasyncd.c 
	                 kafstimod.c main.c mntpt.c server.c types.h 
	                 vlclient.c vlclient.h vlocation.c vnode.c 
	                 volume.c volume.h 
	linux/fs/autofs: Tag: MaltaRef_2_6 .cvsignore inode.c root.c 
	linux/fs/autofs4: Tag: MaltaRef_2_6 .cvsignore autofs_i.h 
	                  expire.c inode.c root.c waitq.c 
	linux/fs/befs  : Tag: MaltaRef_2_6 .cvsignore debug.c linuxvfs.c 
	linux/fs/bfs   : Tag: MaltaRef_2_6 .cvsignore dir.c inode.c 
	linux/fs/cifs  : Tag: MaltaRef_2_6 .cvsignore AUTHORS CHANGES 
	                 Makefile README TODO asn1.c cifs_debug.c 
	                 cifs_fs_sb.h cifs_unicode.c cifsencrypt.c 
	                 cifsfs.c cifsfs.h cifsglob.h cifspdu.h 
	                 cifsproto.h cifssmb.c connect.c dir.c fcntl.c 
	                 file.c inode.c link.c md4.c misc.c netmisc.c 
	                 ntlmssp.h smbdes.c smbencrypt.c smberr.h 
	                 transport.c xattr.c 
	linux/fs/coda  : Tag: MaltaRef_2_6 .cvsignore cnode.c 
	                 coda_linux.c dir.c file.c inode.c psdev.c 
	                 sysctl.c upcall.c 
	linux/fs/cramfs: Tag: MaltaRef_2_6 .cvsignore inode.c 
	linux/fs/cramfs/inflate: Tag: MaltaRef_2_6 .cvsignore 
	linux/fs/devfs : Tag: MaltaRef_2_6 .cvsignore base.c util.c 
	linux/fs/devpts: Tag: MaltaRef_2_6 .cvsignore Makefile inode.c 
	                 xattr_security.c 
	linux/fs/driverfs: Tag: MaltaRef_2_6 .cvsignore 
	linux/fs/efs   : Tag: MaltaRef_2_6 .cvsignore inode.c namei.c 
	                 super.c 
	linux/fs/exportfs: Tag: MaltaRef_2_6 .cvsignore expfs.c 
	linux/fs/ext2  : Tag: MaltaRef_2_6 .cvsignore acl.c acl.h 
	                 balloc.c dir.c ext2.h file.c ialloc.c inode.c 
	                 ioctl.c namei.c super.c symlink.c xattr.c 
	                 xattr.h xattr_security.c xattr_trusted.c 
	                 xattr_user.c 
	linux/fs/ext3  : Tag: MaltaRef_2_6 .cvsignore Makefile acl.c 
	                 acl.h balloc.c dir.c file.c fsync.c hash.c 
	                 ialloc.c inode.c ioctl.c namei.c super.c 
	                 symlink.c xattr.c xattr.h xattr_security.c 
	                 xattr_trusted.c xattr_user.c 
	linux/fs/fat   : Tag: MaltaRef_2_6 .cvsignore Makefile cache.c 
	                 dir.c file.c inode.c misc.c 
	linux/fs/freevxfs: Tag: MaltaRef_2_6 .cvsignore vxfs_extern.h 
	                   vxfs_inode.c vxfs_super.c 
	linux/fs/hfs   : Tag: MaltaRef_2_6 .cvsignore Makefile bfind.c 
	                 bitmap.c bnode.c brec.c btree.c btree.h 
	                 catalog.c dir.c extent.c hfs.h hfs_fs.h inode.c 
	                 mdb.c part_tbl.c super.c 
	linux/fs/hfsplus: Tag: MaltaRef_2_6 bfind.c bitmap.c bnode.c 
	                  brec.c btree.c catalog.c dir.c extents.c 
	                  hfsplus_fs.h hfsplus_raw.h inode.c ioctl.c 
	                  options.c part_tbl.c super.c tables.c 
	                  unicode.c wrapper.c 
	linux/fs/hpfs  : Tag: MaltaRef_2_6 .cvsignore alloc.c dentry.c 
	                 dnode.c file.c hpfs.h hpfs_fn.h inode.c name.c 
	                 super.c 
	linux/fs/hugetlbfs: Tag: MaltaRef_2_6 inode.c 
	linux/fs/intermezzo: Tag: MaltaRef_2_6 .cvsignore 
	linux/fs/isofs : Tag: MaltaRef_2_6 .cvsignore compress.c dir.c 
	                 export.c inode.c joliet.c namei.c rock.c util.c 
	linux/fs/jbd   : Tag: MaltaRef_2_6 .cvsignore checkpoint.c 
	                 commit.c journal.c recovery.c revoke.c 
	                 transaction.c 
	linux/fs/jffs  : Tag: MaltaRef_2_6 .cvsignore inode-v23.c 
	                 intrep.c intrep.h jffs_fm.c jffs_fm.h 
	linux/fs/jffs2 : Tag: MaltaRef_2_6 .cvsignore Makefile 
	                 README.Locking background.c build.c compr.c 
	                 compr.h compr_rtime.c compr_rubin.c 
	                 compr_zlib.c dir.c erase.c file.c fs.c gc.c 
	                 ioctl.c malloc.c nodelist.c nodelist.h 
	                 nodemgmt.c os-linux.h pushpull.h read.c 
	                 readinode.c scan.c super.c symlink.c wbuf.c 
	                 write.c writev.c 
	linux/fs/jfs   : Tag: MaltaRef_2_6 .cvsignore acl.c inode.c 
	                 jfs_dinode.h jfs_dmap.c jfs_dmap.h jfs_dtree.c 
	                 jfs_dtree.h jfs_extent.c jfs_imap.c jfs_imap.h 
	                 jfs_incore.h jfs_inode.c jfs_logmgr.c 
	                 jfs_logmgr.h jfs_metapage.c jfs_metapage.h 
	                 jfs_mount.c jfs_superblock.h jfs_txnmgr.c 
	                 jfs_types.h jfs_umount.c jfs_unicode.c 
	                 jfs_unicode.h jfs_xattr.h jfs_xtree.c 
	                 jfs_xtree.h namei.c resize.c super.c xattr.c 
	linux/fs/lockd : Tag: MaltaRef_2_6 .cvsignore Makefile 
	                 clntproc.c host.c mon.c svc.c svc4proc.c 
	                 svclock.c svcproc.c xdr.c xdr4.c 
	linux/fs/minix : Tag: MaltaRef_2_6 .cvsignore bitmap.c dir.c 
	                 inode.c itree_common.c namei.c 
	linux/fs/msdos : Tag: MaltaRef_2_6 .cvsignore namei.c 
	linux/fs/ncpfs : Tag: MaltaRef_2_6 .cvsignore dir.c file.c 
	                 inode.c ioctl.c mmap.c ncplib_kernel.c 
	                 ncplib_kernel.h ncpsign_kernel.c sock.c 
	                 symlink.c 
	linux/fs/nfs   : Tag: MaltaRef_2_6 .cvsignore callback.c dir.c 
	                 direct.c file.c idmap.c inode.c mount_clnt.c 
	                 nfs2xdr.c nfs3proc.c nfs3xdr.c nfs4proc.c 
	                 nfs4state.c nfs4xdr.c nfsroot.c proc.c read.c 
	                 symlink.c unlink.c write.c 
	linux/fs/nfsd  : Tag: MaltaRef_2_6 .cvsignore Makefile export.c 
	                 lockd.c nfs3proc.c nfs3xdr.c nfs4acl.c 
	                 nfs4proc.c nfs4state.c nfs4xdr.c nfscache.c 
	                 nfsctl.c nfsfh.c nfsproc.c nfssvc.c vfs.c 
	linux/fs/nls   : Tag: MaltaRef_2_6 .cvsignore nls_ascii.c 
	                 nls_base.c nls_cp932.c nls_cp936.c nls_cp949.c 
	                 nls_cp950.c 
	linux/fs/ntfs  : Tag: MaltaRef_2_6 .cvsignore ChangeLog Makefile 
	                 aops.c attrib.c attrib.h bitmap.c collate.c 
	                 collate.h compress.c debug.c debug.h dir.c 
	                 dir.h endian.h file.c index.c index.h inode.c 
	                 inode.h layout.h lcnalloc.c lcnalloc.h 
	                 logfile.c logfile.h malloc.h mft.c mft.h mst.c 
	                 namei.c ntfs.h quota.c super.c time.h types.h 
	                 unistr.c upcase.c volume.h 
	linux/fs/openpromfs: Tag: MaltaRef_2_6 .cvsignore inode.c 
	linux/fs/partitions: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                     acorn.c amiga.c atari.h check.c devfs.c 
	                     efi.c efi.h ibm.c ldm.c ldm.h mac.h msdos.c 
	                     osf.c sgi.c sun.c 
	linux/fs/proc  : Tag: MaltaRef_2_6 .cvsignore Makefile array.c 
	                 base.c generic.c inode.c kcore.c proc_devtree.c 
	                 proc_misc.c proc_tty.c root.c task_mmu.c 
	                 task_nommu.c 
	linux/fs/qnx4  : Tag: MaltaRef_2_6 .cvsignore bitmap.c inode.c 
	                 namei.c truncate.c 
	linux/fs/ramfs : Tag: MaltaRef_2_6 .cvsignore inode.c 
	linux/fs/reiserfs: Tag: MaltaRef_2_6 .cvsignore bitmap.c dir.c 
	                   do_balan.c file.c fix_node.c ibalance.c 
	                   inode.c ioctl.c item_ops.c journal.c namei.c 
	                   objectid.c prints.c procfs.c resize.c stree.c 
	                   super.c tail_conversion.c xattr.c xattr_acl.c 
	                   xattr_security.c xattr_trusted.c xattr_user.c 
	linux/fs/romfs : Tag: MaltaRef_2_6 .cvsignore inode.c 
	linux/fs/smbfs : Tag: MaltaRef_2_6 .cvsignore file.c inode.c 
	                 proc.c proto.h request.c smbiod.c 
	linux/fs/sysfs : Tag: MaltaRef_2_6 .cvsignore bin.c dir.c file.c 
	                 group.c inode.c mount.c symlink.c sysfs.h 
	linux/fs/sysv  : Tag: MaltaRef_2_6 .cvsignore CHANGES ChangeLog 
	                 balloc.c dir.c ialloc.c inode.c itree.c namei.c 
	                 super.c sysv.h 
	linux/fs/udf   : Tag: MaltaRef_2_6 .cvsignore balloc.c dir.c 
	                 directory.c ecma_167.h file.c fsync.c ialloc.c 
	                 inode.c lowlevel.c misc.c namei.c osta_udf.h 
	                 partition.c super.c truncate.c udfdecl.h 
	                 udfend.h udftime.c 
	linux/fs/ufs   : Tag: MaltaRef_2_6 .cvsignore balloc.c 
	                 cylinder.c dir.c ialloc.c inode.c namei.c 
	                 super.c swab.h truncate.c util.c util.h 
	linux/fs/umsdos: Tag: MaltaRef_2_6 .cvsignore 
	linux/fs/vfat  : Tag: MaltaRef_2_6 .cvsignore namei.c 
	linux/fs/xfs   : Tag: MaltaRef_2_6 .cvsignore Makefile xfs_acl.c 
	                 xfs_alloc.c xfs_alloc_btree.c xfs_arch.h 
	                 xfs_attr.c xfs_attr_leaf.c xfs_bmap.c 
	                 xfs_bmap_btree.c xfs_bmap_btree.h xfs_btree.c 
	                 xfs_clnt.h xfs_da_btree.c xfs_dfrag.c 
	                 xfs_dinode.h xfs_dir.c xfs_dir2.c 
	                 xfs_dir2_block.c xfs_dir2_block.h 
	                 xfs_dir2_data.c xfs_dir2_data.h xfs_dir2_leaf.c 
	                 xfs_dir2_leaf.h xfs_dir2_node.c xfs_dir2_sf.c 
	                 xfs_dir2_sf.h xfs_dir_leaf.c xfs_dir_leaf.h 
	                 xfs_dir_sf.h xfs_fs.h xfs_fsops.c xfs_ialloc.c 
	                 xfs_ialloc_btree.c xfs_ialloc_btree.h 
	                 xfs_iget.c xfs_inode.c xfs_inode.h 
	                 xfs_inode_item.c xfs_iomap.c xfs_iomap.h 
	                 xfs_itable.c xfs_log.c xfs_log.h xfs_log_priv.h 
	                 xfs_log_recover.c xfs_macros.c xfs_mount.c 
	                 xfs_mount.h xfs_rename.c xfs_rtalloc.c 
	                 xfs_trans.c xfs_trans.h xfs_trans_inode.c 
	                 xfs_types.h xfs_utils.c xfs_utils.h 
	                 xfs_vfsops.c xfs_vnodeops.c 
	linux/fs/xfs/linux: Tag: MaltaRef_2_6 .cvsignore 
	linux/fs/xfs/linux-2.6: Tag: MaltaRef_2_6 .cvsignore kmem.c 
	                        kmem.h xfs_aops.c xfs_buf.c xfs_buf.h 
	                        xfs_file.c xfs_globals.c xfs_ioctl.c 
	                        xfs_ioctl32.c xfs_ioctl32.h xfs_iops.c 
	                        xfs_linux.h xfs_lrw.c xfs_lrw.h 
	                        xfs_stats.h xfs_super.c xfs_super.h 
	                        xfs_sysctl.c xfs_sysctl.h xfs_vfs.c 
	                        xfs_vfs.h xfs_vnode.c xfs_vnode.h 
	linux/fs/xfs/pagebuf: Tag: MaltaRef_2_6 .cvsignore 
	linux/fs/xfs/quota: Tag: MaltaRef_2_6 .cvsignore xfs_dquot.c 
	                    xfs_dquot.h xfs_qm.c xfs_qm.h xfs_qm_bhv.c 
	                    xfs_qm_syscalls.c xfs_quota_priv.h 
	                    xfs_trans_dquot.c 
	linux/fs/xfs/support: Tag: MaltaRef_2_6 .cvsignore debug.c 
	linux/include/acpi: Tag: MaltaRef_2_6 acconfig.h acdebug.h 
	                    acdisasm.h acdispat.h acevents.h acexcep.h 
	                    acglobal.h achware.h acinterp.h aclocal.h 
	                    acmacros.h acnamesp.h acobject.h acoutput.h 
	                    acparser.h acpi.h acpi_bus.h acpi_drivers.h 
	                    acpiosxf.h acpixf.h acresrc.h acstruct.h 
	                    actables.h actbl.h actbl1.h actbl2.h 
	                    actypes.h acutils.h amlcode.h amlresrc.h 
	                    processor.h 
	linux/include/acpi/platform: Tag: MaltaRef_2_6 acenv.h acgcc.h 
	                             aclinux.h 
	linux/include/asm-alpha: Tag: MaltaRef_2_6 a.out.h bitops.h 
	                         bug.h cache.h cacheflush.h compiler.h 
	                         core_apecs.h core_cia.h core_irongate.h 
	                         core_lca.h core_marvel.h core_mcpcia.h 
	                         core_polaris.h core_t2.h core_titan.h 
	                         core_tsunami.h core_wildfire.h 
	                         dma-mapping.h errno.h hardirq.h io.h 
	                         jensen.h machvec.h mmu_context.h 
	                         mmzone.h page.h pci.h pgalloc.h 
	                         pgtable.h processor.h ptrace.h 
	                         resource.h semaphore.h siginfo.h 
	                         signal.h socket.h spinlock.h string.h 
	                         sysinfo.h system.h thread_info.h 
	                         timex.h tlbflush.h topology.h uaccess.h 
	                         unaligned.h unistd.h vga.h 
	linux/include/asm-arm: Tag: MaltaRef_2_6 apm.h atomic.h bitops.h 
	                       bug.h cacheflush.h checksum.h delay.h 
	                       dma-mapping.h domain.h ecard.h elf.h 
	                       hardirq.h ide.h io.h ipc.h irq.h memory.h 
	                       mmu_context.h numnodes.h page.h param.h 
	                       pgalloc.h pgtable.h posix_types.h 
	                       processor.h procinfo.h ptrace.h 
	                       resource.h semaphore.h serial.h setup.h 
	                       signal.h smp.h socket.h spinlock.h 
	                       string.h system.h thread_info.h timex.h 
	                       tlb.h tlbflush.h uaccess.h unistd.h 
	linux/include/asm-arm/arch-cl7500: Tag: MaltaRef_2_6 hardware.h 
	                                   uncompress.h vmalloc.h 
	linux/include/asm-arm/arch-clps711x: Tag: MaltaRef_2_6 io.h 
	                                     time.h uncompress.h 
	                                     vmalloc.h 
	linux/include/asm-arm/arch-ebsa110: Tag: MaltaRef_2_6 io.h 
	                                    param.h uncompress.h 
	                                    vmalloc.h 
	linux/include/asm-arm/arch-ebsa285: Tag: MaltaRef_2_6 io.h 
	                                    uncompress.h vmalloc.h 
	linux/include/asm-arm/arch-epxa10db: Tag: MaltaRef_2_6 io.h 
	                                     uncompress.h vmalloc.h 
	linux/include/asm-arm/arch-imx: Tag: MaltaRef_2_6 hardware.h 
	                                imx-regs.h io.h uncompress.h 
	                                vmalloc.h 
	linux/include/asm-arm/arch-integrator: Tag: MaltaRef_2_6 cm.h 
	                                       io.h lm.h platform.h 
	                                       uncompress.h vmalloc.h 
	linux/include/asm-arm/arch-iop3xx: Tag: MaltaRef_2_6 dma.h 
	                                   hardware.h io.h iop321-irqs.h 
	                                   iop321.h iq80321.h irqs.h 
	                                   memory.h system.h timex.h 
	                                   uncompress.h vmalloc.h 
	linux/include/asm-arm/arch-ixp4xx: Tag: MaltaRef_2_6 hardware.h 
	                                   io.h irqs.h ixp4xx-regs.h 
	                                   platform.h system.h 
	                                   uncompress.h vmalloc.h 
	linux/include/asm-arm/arch-l7200: Tag: MaltaRef_2_6 io.h param.h 
	                                  time.h uncompress.h vmalloc.h 
	linux/include/asm-arm/arch-lh7a40x: Tag: MaltaRef_2_6 io.h 
	                                    memory.h timex.h 
	                                    uncompress.h vmalloc.h 
	linux/include/asm-arm/arch-omap: Tag: MaltaRef_2_6 board-h2.h 
	                                 board-h3.h board-h4.h 
	                                 board-innovator.h board-osk.h 
	                                 board.h dma.h fpga.h gpio.h 
	                                 hardware.h io.h irqs.h mcbsp.h 
	                                 memory.h mux.h param.h pm.h 
	                                 timex.h uncompress.h vmalloc.h 
	linux/include/asm-arm/arch-pxa: Tag: MaltaRef_2_6 hardware.h 
	                                idp.h io.h irqs.h memory.h 
	                                pxa-regs.h system.h uncompress.h 
	                                vmalloc.h 
	linux/include/asm-arm/arch-rpc: Tag: MaltaRef_2_6 hardware.h 
	                                io.h uncompress.h vmalloc.h 
	linux/include/asm-arm/arch-s3c2410: Tag: MaltaRef_2_6 
	                                    bast-cpld.h bast-irq.h dma.h 
	                                    hardware.h io.h irqs.h map.h 
	                                    memory.h param.h 
	                                    regs-clock.h regs-gpio.h 
	                                    regs-iis.h regs-irq.h 
	                                    regs-lcd.h regs-rtc.h 
	                                    regs-serial.h regs-timer.h 
	                                    regs-watchdog.h system.h 
	                                    timex.h uncompress.h 
	                                    vmalloc.h vr1000-map.h 
	linux/include/asm-arm/arch-sa1100: Tag: MaltaRef_2_6 collie.h 
	                                   ide.h io.h irqs.h system.h 
	                                   timex.h uncompress.h 
	                                   vmalloc.h 
	linux/include/asm-arm/arch-shark: Tag: MaltaRef_2_6 io.h 
	                                  uncompress.h vmalloc.h 
	linux/include/asm-arm/arch-versatile: Tag: MaltaRef_2_6 
	                                      hardware.h io.h platform.h 
	                                      timex.h uncompress.h 
	                                      vmalloc.h 
	linux/include/asm-arm/hardware: Tag: MaltaRef_2_6 amba.h 
	                                amba_clcd.h clock.h locomo.h 
	                                sa1111.h 
	linux/include/asm-arm/mach: Tag: MaltaRef_2_6 arch.h flash.h 
	                            irq.h map.h mmc.h pci.h time.h 
	linux/include/asm-arm26: Tag: MaltaRef_2_6 atomic.h bitops.h 
	                         bug.h cacheflush.h checksum.h 
	                         constants.h hardirq.h hardware.h io.h 
	                         ipc.h irqchip.h pgtable.h posix_types.h 
	                         processor.h ptrace.h resource.h 
	                         semaphore.h setup.h signal.h socket.h 
	                         system.h thread_info.h timex.h tlb.h 
	                         uaccess.h unistd.h 
	linux/include/asm-cris: Tag: MaltaRef_2_6 cacheflush.h hardirq.h 
	                        io.h ipc.h page.h pgalloc.h pgtable.h 
	                        resource.h semaphore.h signal.h socket.h 
	                        system.h thread_info.h uaccess.h 
	                        unistd.h 
	linux/include/asm-cris/arch-v10: Tag: MaltaRef_2_6 ptrace.h 
	linux/include/asm-generic: Tag: MaltaRef_2_6 bug.h 
	                           dma-mapping-broken.h dma-mapping.h 
	                           errno.h ide_iops.h local.h pci.h 
	                           pgtable.h sections.h siginfo.h tlb.h 
	                           topology.h unaligned.h vmlinux.lds.h 
	linux/include/asm-h8300: Tag: MaltaRef_2_6 bitops.h cacheflush.h 
	                         delay.h hardirq.h io.h ipc.h mmu.h 
	                         page.h pgtable.h processor.h ptrace.h 
	                         resource.h semaphore.h sigcontext.h 
	                         signal.h socket.h system.h 
	                         thread_info.h timex.h uaccess.h 
	                         ucontext.h unistd.h 
	linux/include/asm-i386: Tag: MaltaRef_2_6 acpi.h agp.h apic.h 
	                        atomic.h bitops.h bug.h cacheflush.h 
	                        checksum.h cpu.h cpufeature.h desc.h 
	                        dma-mapping.h e820.h elf.h fixmap.h 
	                        floppy.h hardirq.h highmem.h hpet.h 
	                        hw_irq.h i387.h io.h io_apic.h ipc.h 
	                        irq.h linkage.h mc146818rtc.h mca.h 
	                        mmzone.h module.h mpspec.h msr.h node.h 
	                        page.h pgalloc.h pgtable-2level-defs.h 
	                        pgtable-2level.h pgtable-3level.h 
	                        pgtable.h processor.h ptrace.h 
	                        resource.h rwlock.h segment.h 
	                        semaphore.h setup.h signal.h smp.h 
	                        socket.h spinlock.h string.h suspend.h 
	                        system.h thread_info.h timer.h timex.h 
	                        topology.h uaccess.h unistd.h 
	linux/include/asm-i386/mach-bigsmp: Tag: MaltaRef_2_6 mach_ipi.h 
	linux/include/asm-i386/mach-default: Tag: MaltaRef_2_6 
	                                     do_timer.h mach_traps.h 
	linux/include/asm-i386/mach-es7000: Tag: MaltaRef_2_6 mach_ipi.h 
	                                    mach_mpparse.h mach_mpspec.h 
	linux/include/asm-i386/mach-numaq: Tag: MaltaRef_2_6 mach_apic.h 
	linux/include/asm-i386/mach-summit: Tag: MaltaRef_2_6 
	                                    mach_apic.h mach_ipi.h 
	                                    mach_mpparse.h 
	linux/include/asm-i386/mach-visws: Tag: MaltaRef_2_6 do_timer.h 
	linux/include/asm-i386/mach-voyager: Tag: MaltaRef_2_6 
	                                     do_timer.h 
	linux/include/asm-ia64: Tag: MaltaRef_2_6 acpi.h bitops.h bug.h 
	                        cacheflush.h compat.h cpu.h delay.h 
	                        dma-mapping.h elf.h gcc_intrin.h 
	                        hardirq.h hw_irq.h ia32.h io.h iosapic.h 
	                        kregs.h machvec.h machvec_init.h 
	                        machvec_sn2.h mca.h mca_asm.h 
	                        mmu_context.h mmzone.h msi.h nodedata.h 
	                        numa.h numnodes.h page.h pal.h pci.h 
	                        perfmon.h pgalloc.h pgtable.h 
	                        processor.h ptrace.h resource.h sal.h 
	                        sections.h semaphore.h siginfo.h 
	                        signal.h smp.h socket.h spinlock.h 
	                        string.h system.h thread_info.h tlb.h 
	                        tlbflush.h topology.h uaccess.h 
	                        unaligned.h unistd.h 
	linux/include/asm-ia64/sn: Tag: MaltaRef_2_6 addrs.h arch.h 
	                           bte.h clksupport.h geo.h intr.h io.h 
	                           klconfig.h leds.h module.h nodepda.h 
	                           pda.h rw_mmr.h simulator.h sn_cpuid.h 
	                           sn_sal.h types.h 
	linux/include/asm-m68k: Tag: MaltaRef_2_6 atomic.h blinken.h 
	                        bootinfo.h bug.h cacheflush.h checksum.h 
	                        hardirq.h io.h ipc.h mc146818rtc.h 
	                        motorola_pgalloc.h motorola_pgtable.h 
	                        pgtable.h processor.h ptrace.h 
	                        resource.h semaphore.h setup.h signal.h 
	                        socket.h sun3_pgtable.h system.h 
	                        thread_info.h timex.h tlbflush.h 
	                        uaccess.h unistd.h 
	linux/include/asm-m68knommu: Tag: MaltaRef_2_6 MC68328.h 
	                             MC68EZ328.h MC68VZ328.h atomic.h 
	                             bitops.h cacheflush.h checksum.h 
	                             coldfire.h delay.h elf.h entry.h 
	                             hardirq.h io.h ipc.h kmap_types.h 
	                             m5206sim.h m5249sim.h mcfdma.h 
	                             mcfpit.h mcfsim.h mcfuart.h mmu.h 
	                             page.h page_offset.h param.h 
	                             pgtable.h processor.h ptrace.h 
	                             semaphore.h signal.h system.h 
	                             thread_info.h uaccess.h unaligned.h 
	                             unistd.h 
	linux/include/asm-mips: Tag: MaltaRef_2_6 .cvsignore addrspace.h 
	                        asm.h asmmacro-32.h asmmacro-64.h 
	                        bitops.h bootinfo.h break.h bug.h bugs.h 
	                        cacheflush.h checksum.h compat.h 
	                        cpu-features.h cpu-info.h cpu.h debug.h 
	                        delay.h div64.h dma-mapping.h elf.h 
	                        errno.h fixmap.h fpu.h fpu_emulator.h 
	                        gt64120.h hardirq.h hazards.h hw_irq.h 
	                        ide.h inst.h inventory.h io.h ipc.h 
	                        irq.h irq_cpu.h mipsregs.h mmu_context.h 
	                        mmzone.h module.h numnodes.h paccess.h 
	                        page.h pci.h pgalloc.h pgtable-32.h 
	                        pgtable-64.h pgtable-bits.h pgtable.h 
	                        pmon.h prefetch.h processor.h ptrace.h 
	                        r4kcache.h resource.h sections.h 
	                        semaphore.h serial.h sgiarcs.h 
	                        sigcontext.h siginfo.h signal.h sim.h 
	                        smp.h socket.h spinlock.h stackframe.h 
	                        statfs.h string.h system.h thread_info.h 
	                        timex.h uaccess.h ucontext.h unaligned.h 
	                        unistd.h 
	linux/include/asm-mips/cobalt: Tag: MaltaRef_2_6 cobalt.h 
	linux/include/asm-mips/ip32: Tag: MaltaRef_2_6 crime.h 
	linux/include/asm-mips/jmr3927: Tag: MaltaRef_2_6 jmr3927.h 
	linux/include/asm-mips/mach-atlas: Tag: MaltaRef_2_6 
	                                   mc146818rtc.h 
	linux/include/asm-mips/mach-au1x00: Tag: MaltaRef_2_6 au1000.h 
	                                    au1xxx_dbdma.h au1xxx_psc.h 
	linux/include/asm-mips/mach-db1x00: Tag: MaltaRef_2_6 db1x00.h 
	linux/include/asm-mips/mach-ev64120: Tag: MaltaRef_2_6 
	                                     mach-gt64120.h 
	linux/include/asm-mips/mach-ev96100: Tag: MaltaRef_2_6 
	                                     mach-gt64120.h 
	linux/include/asm-mips/mach-generic: Tag: MaltaRef_2_6 floppy.h 
	                                     ide.h spaces.h 
	linux/include/asm-mips/mach-ip22: Tag: MaltaRef_2_6 
	                                  cpu-feature-overrides.h 
	linux/include/asm-mips/mach-ip27: Tag: MaltaRef_2_6 
	                                  cpu-feature-overrides.h 
	                                  mmzone.h spaces.h topology.h 
	linux/include/asm-mips/mach-ip32: Tag: MaltaRef_2_6 
	                                  mc146818rtc.h 
	linux/include/asm-mips/mach-ja: Tag: MaltaRef_2_6 
	                                cpu-feature-overrides.h 
	linux/include/asm-mips/mach-lasat: Tag: MaltaRef_2_6 
	                                   mach-gt64120.h 
	linux/include/asm-mips/mach-mips: Tag: MaltaRef_2_6 
	                                  cpu-feature-overrides.h 
	                                  mach-gt64120.h 
	linux/include/asm-mips/mach-ocelot: Tag: MaltaRef_2_6 
	                                    mach-gt64120.h 
	linux/include/asm-mips/mach-pb1x00: Tag: MaltaRef_2_6 pb1550.h 
	linux/include/asm-mips/mach-rm200: Tag: MaltaRef_2_6 
	                                   cpu-feature-overrides.h 
	linux/include/asm-mips/mach-yosemite: Tag: MaltaRef_2_6 
	                                      cpu-feature-overrides.h 
	linux/include/asm-mips/mips-boards: Tag: MaltaRef_2_6 
	                                    msc01_pci.h 
	linux/include/asm-mips/sgi: Tag: MaltaRef_2_6 ioc.h sgi.h 
	linux/include/asm-mips/sibyte: Tag: MaltaRef_2_6 board.h 
	                               sb1250.h 
	linux/include/asm-mips/sn: Tag: MaltaRef_2_6 hub.h 
	                           mapped_kernel.h sn_private.h 
	linux/include/asm-mips/sn/sn0: Tag: MaltaRef_2_6 hubio.h 
	linux/include/asm-mips/tx4927: Tag: MaltaRef_2_6 tx4927.h 
	linux/include/asm-mips/vr41xx: Tag: MaltaRef_2_6 vr41xx.h 
	                               vrc4173.h 
	linux/include/asm-parisc: Tag: MaltaRef_2_6 assembly.h atomic.h 
	                          bitops.h bug.h cache.h cacheflush.h 
	                          checksum.h compat.h dma-mapping.h 
	                          dma.h eisa_eeprom.h errno.h floppy.h 
	                          hardirq.h hardware.h hw_irq.h ide.h 
	                          io.h irq.h led.h module.h numnodes.h 
	                          parisc-device.h pci.h pdc.h 
	                          pdc_chassis.h pdcpat.h pgalloc.h 
	                          pgtable.h posix_types.h processor.h 
	                          ptrace.h resource.h semaphore.h 
	                          serial.h signal.h socket.h spinlock.h 
	                          string.h superio.h system.h 
	                          thread_info.h timex.h tlbflush.h 
	                          uaccess.h unaligned.h unistd.h 
	                          unwind.h 
	linux/include/asm-ppc: Tag: MaltaRef_2_6 8xx_immap.h bug.h 
	                       cache.h cacheflush.h checksum.h 
	                       commproc.h cpm2.h cputable.h dbdma.h 
	                       dma-mapping.h dma.h floppy.h gg2.h 
	                       hardirq.h highmem.h hw_irq.h hydra.h 
	                       ibm44x.h ibm4xx.h ide.h immap_cpm2.h io.h 
	                       ipc.h irq.h keylargo.h m8260_pci.h 
	                       machdep.h macio.h mmu.h mpc10x.h 
	                       mpc52xx.h mpc52xx_psc.h mpc8260.h 
	                       mpc85xx.h mpc8xx.h ocp.h ocp_ids.h 
	                       of_device.h open_pic.h page.h 
	                       pci-bridge.h pci.h pgtable.h 
	                       pmac_feature.h ppc4xx_dma.h ppc4xx_pic.h 
	                       ppcboot.h processor.h prom.h ptrace.h 
	                       reg.h reg_booke.h residual.h resource.h 
	                       rwsem.h sections.h semaphore.h serial.h 
	                       sigcontext.h signal.h smp.h socket.h 
	                       spinlock.h string.h system.h 
	                       thread_info.h time.h timex.h todc.h 
	                       uaccess.h uninorth.h unistd.h 
	linux/include/asm-ppc64: Tag: MaltaRef_2_6 a.out.h btext.h bug.h 
	                         cache.h cacheflush.h cputable.h 
	                         dma-mapping.h eeh.h elf.h floppy.h 
	                         hardirq.h hvcall.h hvconsole.h ide.h 
	                         io.h iommu.h ipc.h irq.h lmb.h 
	                         machdep.h memory.h mmu.h mmu_context.h 
	                         mmzone.h naca.h paca.h page.h 
	                         pci-bridge.h pci.h pgalloc.h pgtable.h 
	                         ppc32.h ppcdebug.h processor.h prom.h 
	                         ptrace-common.h ptrace.h resource.h 
	                         rtas.h sections.h semaphore.h serial.h 
	                         signal.h smp.h socket.h spinlock.h 
	                         string.h system.h systemcfg.h 
	                         thread_info.h time.h timex.h tlb.h 
	                         tlbflush.h topology.h uaccess.h udbg.h 
	                         unistd.h vio.h xics.h 
	linux/include/asm-ppc64/iSeries: Tag: MaltaRef_2_6 HvLpEvent.h 
	                                 HvReleaseData.h LparData.h 
	                                 iSeries_io.h iSeries_pci.h mf.h 
	linux/include/asm-s390: Tag: MaltaRef_2_6 atomic.h bug.h 
	                        cacheflush.h ccwdev.h cio.h cmb.h 
	                        cpcmd.h debug.h elf.h extmem.h hardirq.h 
	                        idals.h io.h ipc.h irq.h lowcore.h 
	                        page.h pgalloc.h pgtable.h posix_types.h 
	                        processor.h ptrace.h resource.h 
	                        siginfo.h signal.h smp.h socket.h 
	                        spinlock.h string.h system.h 
	                        thread_info.h timer.h timex.h uaccess.h 
	                        unistd.h user.h 
	linux/include/asm-sh: Tag: MaltaRef_2_6 adc.h addrspace.h 
	                      bitops.h bug.h bugs.h bus-sh.h cache.h 
	                      cacheflush.h checksum.h dma-mapping.h 
	                      dma.h floppy.h freq.h hardirq.h io.h ipc.h 
	                      irq.h machvec.h mc146818rtc.h 
	                      mmu_context.h page.h pgalloc.h 
	                      pgtable-2level.h pgtable.h processor.h 
	                      ptrace.h resource.h rtc.h semaphore.h 
	                      shmparam.h signal.h socket.h spinlock.h 
	                      string.h system.h thread_info.h timex.h 
	                      uaccess.h ubc.h unaligned.h unistd.h 
	                      user.h watchdog.h 
	linux/include/asm-sh/cpu-sh2: Tag: MaltaRef_2_6 cacheflush.h 
	linux/include/asm-sh/cpu-sh3: Tag: MaltaRef_2_6 cache.h 
	                              cacheflush.h freq.h 
	linux/include/asm-sh/cpu-sh4: Tag: MaltaRef_2_6 cacheflush.h 
	                              freq.h 
	linux/include/asm-sh/mpc1211: Tag: MaltaRef_2_6 keyboard.h 
	linux/include/asm-sh/se: Tag: MaltaRef_2_6 se.h 
	linux/include/asm-sh64: Tag: MaltaRef_2_6 bug.h cacheflush.h 
	                        checksum.h dma-mapping.h elf.h hardirq.h 
	                        hardware.h ide.h io.h ioctls.h ipc.h 
	                        irq.h keyboard.h module.h pgalloc.h 
	                        pgtable.h processor.h ptrace.h 
	                        semaphore.h signal.h system.h 
	                        thread_info.h timex.h uaccess.h 
	                        unaligned.h unistd.h 
	linux/include/asm-sparc: Tag: MaltaRef_2_6 asi.h atomic.h 
	                         bitext.h bitops.h bug.h cacheflush.h 
	                         checksum.h dma-mapping.h dma.h elf.h 
	                         errno.h fbio.h floppy.h hardirq.h 
	                         highmem.h io.h ipc.h mostek.h mxcc.h 
	                         oplib.h pcic.h pgtable.h pgtsrmmu.h 
	                         processor.h ptrace.h resource.h sbus.h 
	                         semaphore.h sigcontext.h signal.h 
	                         socket.h spinlock.h string.h svr4.h 
	                         system.h thread_info.h timex.h 
	                         uaccess.h unaligned.h unistd.h vaddrs.h 
	                         winmacro.h 
	linux/include/asm-sparc64: Tag: MaltaRef_2_6 atomic.h bitops.h 
	                           bug.h bugs.h cacheflush.h checksum.h 
	                           compat.h cpudata.h delay.h dma.h 
	                           ebus.h elf.h errno.h fbio.h hardirq.h 
	                           ide.h io.h iommu.h ipc.h kdebug.h 
	                           mmu.h mmu_context.h mostek.h page.h 
	                           parport.h pbm.h pci.h percpu.h 
	                           pgalloc.h pgtable.h processor.h 
	                           ptrace.h resource.h rwsem.h 
	                           sections.h sigcontext.h siginfo.h 
	                           signal.h smp.h socket.h spinlock.h 
	                           spitfire.h stat.h system.h 
	                           thread_info.h timex.h tlb.h ttable.h 
	                           uaccess.h unaligned.h unistd.h vga.h 
	linux/include/asm-um: Tag: MaltaRef_2_6 archparam-i386.h 
	                      archparam-ppc.h atomic.h common.lds.S 
	                      current.h delay.h dma-mapping.h elf.h 
	                      fixmap.h hardirq.h io.h ipc.h irq.h 
	                      linkage.h mmu_context.h page.h pgalloc.h 
	                      pgtable.h processor-generic.h 
	                      processor-i386.h ptrace-generic.h 
	                      ptrace-i386.h setup.h signal.h smp.h 
	                      spinlock.h system-generic.h system-i386.h 
	                      thread_info.h timex.h uaccess.h unistd.h 
	linux/include/asm-v850: Tag: MaltaRef_2_6 bug.h cacheflush.h 
	                        hardirq.h io.h ipc.h pgtable.h 
	                        posix_types.h processor.h ptrace.h 
	                        resource.h signal.h socket.h string.h 
	                        system.h thread_info.h timex.h uaccess.h 
	                        unistd.h 
	linux/include/asm-x86_64: Tag: MaltaRef_2_6 acpi.h agp.h apic.h 
	                          apicdef.h atomic.h bitops.h 
	                          bootsetup.h bug.h cacheflush.h 
	                          calling.h checksum.h compat.h 
	                          cpufeature.h desc.h dma-mapping.h 
	                          e820.h elf.h floppy.h hardirq.h hpet.h 
	                          hw_irq.h i387.h ia32.h ia32_unistd.h 
	                          io.h io_apic.h irq.h kdebug.h local.h 
	                          mce.h mmu_context.h mmzone.h mpspec.h 
	                          msi.h msr.h mtrr.h nmi.h numa.h 
	                          numnodes.h page.h pci.h pda.h 
	                          pgalloc.h pgtable.h processor.h 
	                          proto.h ptrace.h resource.h segment.h 
	                          semaphore.h siginfo.h signal.h smp.h 
	                          socket.h spinlock.h suspend.h system.h 
	                          thread_info.h timex.h topology.h 
	                          uaccess.h unistd.h vsyscall.h 
	linux/include/linux: Tag: MaltaRef_2_6 ac97_codec.h acct.h 
	                     acpi.h adfs_fs.h adfs_fs_i.h adfs_fs_sb.h 
	                     affs_fs.h affs_hardblocks.h agp_backend.h 
	                     agpgart.h aio.h aio_abi.h amigaffs.h 
	                     arcdevice.h ata.h atalk.h atm.h atmdev.h 
	                     atmsvc.h audit.h auto_fs4.h awe_voice.h 
	                     backing-dev.h binfmts.h bio.h bitmap.h 
	                     bitops.h blkdev.h bootmem.h buffer_head.h 
	                     capability.h cdev.h cdrom.h coda.h 
	                     coda_proc.h coda_psdev.h com20020.h 
	                     compat.h compat_ioctl.h compiler-gcc2.h 
	                     compiler-gcc3.h compiler.h completion.h 
	                     console.h console_struct.h consolemap.h 
	                     cpu.h cpufreq.h cpumask.h crc-ccitt.h 
	                     crypto.h cyclades.h cyclomx.h cycx_drv.h 
	                     dcache.h delay.h device-mapper.h device.h 
	                     dio.h divert.h dm-ioctl.h dma-mapping.h 
	                     dnotify.h dqblk_xfs.h edd.h eeprom.h efi.h 
	                     efs_dir.h efs_fs.h efs_fs_i.h efs_fs_sb.h 
	                     efs_vh.h elevator.h elf.h err.h errno.h 
	                     etherdevice.h ethtool.h ext2_fs.h ext3_fs.h 
	                     ext3_fs_i.h ext3_fs_sb.h ext3_jbd.h fb.h 
	                     fcdevice.h fddidevice.h file.h filter.h 
	                     firmware.h fs.h gameport.h generic_serial.h 
	                     genhd.h gfp.h hayesesp.h hdlc.h hdreg.h 
	                     hiddev.h highmem.h highuid.h hippidevice.h 
	                     hpet.h hugetlb.h i2c-id.h i2c-sensor.h 
	                     i2c-vid.h i2c.h i2o-dev.h i2o.h ibmtr.h 
	                     icmp.h ide.h idr.h if.h if_arcnet.h 
	                     if_arp.h if_bridge.h if_ec.h if_ether.h 
	                     if_fddi.h if_ltalk.h if_ppp.h if_pppox.h 
	                     if_shaper.h if_tr.h if_tun.h if_vlan.h 
	                     in6.h inet.h inetdevice.h init.h 
	                     init_task.h input.h interrupt.h ioctl32.h 
	                     ioport.h ip.h ip6_tunnel.h ipmi.h 
	                     ipmi_msgdefs.h ipmi_smi.h ipv6.h 
	                     ipv6_route.h irq.h irq_cpustat.h isapnp.h 
	                     isicom.h iso_fs.h ixjuser.h jbd.h jffs.h 
	                     jffs2.h jffs2_fs_i.h jffs2_fs_sb.h 
	                     jiffies.h journal-head.h joystick.h 
	                     kallsyms.h kernel.h kernel_stat.h 
	                     keyboard.h kmod.h kobj_map.h kobject.h 
	                     kref.h libata.h linkage.h list.h loop.h 
	                     lp.h major.h mbcache.h mc146818rtc.h 
	                     mca-legacy.h mca.h mempolicy.h mempool.h 
	                     meye.h mii.h miscdevice.h mm.h mman.h 
	                     mmzone.h mod_devicetable.h module.h 
	                     moduleparam.h mount.h mpage.h msdos_fs.h 
	                     mtio.h mv643xx.h namei.h ncp.h ncp_fs.h 
	                     ncp_fs_i.h ncp_no.h net.h netdevice.h 
	                     netfilter.h netfilter_ipv4.h 
	                     netfilter_ipv6.h netlink.h netpoll.h nfs4.h 
	                     nfs_fs.h nfs_fs_sb.h nfs_xdr.h nls.h node.h 
	                     notifier.h oprofile.h page-flags.h 
	                     pagemap.h pagevec.h parport.h parport_pc.h 
	                     pci.h pci_ids.h percpu.h personality.h 
	                     pfkeyv2.h pid.h pipe_fs_i.h pkt_cls.h 
	                     pkt_sched.h pm.h pnp.h poll.h 
	                     posix-timers.h posix_acl.h prctl.h 
	                     preempt.h prio_tree.h proc_fs.h profile.h 
	                     ptrace.h qnx4_fs.h quota.h quotaio_v2.h 
	                     quotaops.h random.h rbtree.h rcupdate.h 
	                     reiserfs_acl.h reiserfs_fs.h 
	                     reiserfs_fs_i.h reiserfs_fs_sb.h 
	                     reiserfs_xattr.h resource.h rmap.h 
	                     romfs_fs.h rtnetlink.h sched.h sctp.h 
	                     scx200.h scx200_gpio.h security.h 
	                     selection.h sem.h seq_file.h serial.h 
	                     serial_core.h serial_reg.h serio.h shm.h 
	                     shmem_fs.h signal.h skbuff.h slab.h 
	                     smb_fs.h smb_mount.h smp.h smp_lock.h 
	                     socket.h sockios.h sonypi.h soundcard.h 
	                     spinlock.h stallion.h stddef.h 
	                     stop_machine.h suspend.h swap.h swapops.h 
	                     syscalls.h sysctl.h sysdev.h sysfs.h 
	                     sysrq.h sysv_fs.h tcp.h threads.h ticable.h 
	                     time.h times.h timex.h topology.h 
	                     trdevice.h tty.h tty_driver.h tty_ldisc.h 
	                     types.h udf_fs_i.h udf_fs_sb.h udp.h 
	                     ufs_fs.h ufs_fs_i.h uinput.h umem.h usb.h 
	                     usb_ch9.h usb_gadget.h usb_otg.h 
	                     usbdevice_fs.h videodev.h videodev2.h 
	                     videotext.h vmalloc.h vt_kern.h wait.h 
	                     wireless.h workqueue.h writeback.h xattr.h 
	                     xfrm.h 
	linux/include/linux/byteorder: Tag: MaltaRef_2_6 big_endian.h 
	                               generic.h little_endian.h 
	linux/include/linux/dvb: Tag: MaltaRef_2_6 audio.h ca.h dmx.h 
	                         frontend.h net.h osd.h version.h 
	                         video.h 
	linux/include/linux/lockd: Tag: MaltaRef_2_6 debug.h lockd.h 
	                           xdr.h 
	linux/include/linux/mmc: Tag: MaltaRef_2_6 card.h host.h mmc.h 
	                         protocol.h 
	linux/include/linux/mtd: Tag: MaltaRef_2_6 cfi.h doc2000.h 
	                         flashchip.h gen_probe.h map.h nand.h 
	                         partitions.h 
	linux/include/linux/netfilter_arp: Tag: MaltaRef_2_6 
	                                   arp_tables.h 
	linux/include/linux/netfilter_bridge: Tag: MaltaRef_2_6 
	                                      ebt_802_3.h ebtables.h 
	linux/include/linux/netfilter_ipv4: Tag: MaltaRef_2_6 
	                                    ip_conntrack.h 
	                                    ip_conntrack_amanda.h 
	                                    ip_conntrack_core.h 
	                                    ip_conntrack_ftp.h 
	                                    ip_conntrack_helper.h 
	                                    ip_conntrack_irc.h 
	                                    ip_conntrack_protocol.h 
	                                    ip_conntrack_tcp.h 
	                                    ip_conntrack_tftp.h 
	                                    ip_conntrack_tuple.h 
	                                    ip_nat.h ip_nat_core.h 
	                                    ip_nat_helper.h 
	                                    ip_nat_protocol.h 
	                                    ip_tables.h ipt_LOG.h 
	                                    ipt_MARK.h ipt_conntrack.h 
	                                    ipt_multiport.h 
	linux/include/linux/netfilter_ipv6: Tag: MaltaRef_2_6 
	                                    ip6_tables.h ip6t_LOG.h 
	linux/include/linux/nfsd: Tag: MaltaRef_2_6 cache.h nfsd.h 
	                          state.h xdr4.h 
	linux/include/linux/raid: Tag: MaltaRef_2_6 linear.h md.h md_k.h 
	                          md_p.h multipath.h raid1.h raid5.h 
	linux/include/linux/sunrpc: Tag: MaltaRef_2_6 auth.h auth_gss.h 
	                            cache.h clnt.h gss_api.h gss_asn1.h 
	                            sched.h svc.h svcauth.h xdr.h xprt.h 
	linux/include/math-emu: Tag: MaltaRef_2_6 op-common.h 
	linux/include/media: Tag: MaltaRef_2_6 audiochip.h id.h 
	                     ir-common.h saa6752hs.h saa7146.h 
	                     saa7146_vv.h tuner.h video-buf.h 
	linux/include/mtd: Tag: MaltaRef_2_6 mtd-abi.h 
	linux/include/net: Tag: MaltaRef_2_6 addrconf.h af_unix.h ax25.h 
	                   checksum.h dn.h dn_fib.h dn_neigh.h dn_nsp.h 
	                   dst.h flow.h icmp.h if_inet6.h inet_ecn.h 
	                   inetpeer.h ip.h ip6_route.h ip_fib.h ip_vs.h 
	                   ipcomp.h ipconfig.h ipv6.h ipx.h iw_handler.h 
	                   llc_c_ac.h llc_c_ev.h llc_conn.h llc_pdu.h 
	                   llc_sap.h ndisc.h neighbour.h netrom.h 
	                   pkt_act.h pkt_cls.h pkt_sched.h rose.h 
	                   route.h scm.h slhc_vj.h snmp.h sock.h tcp.h 
	                   tcp_ecn.h udp.h x25.h xfrm.h 
	linux/include/net/bluetooth: Tag: MaltaRef_2_6 bluetooth.h hci.h 
	                             hci_core.h l2cap.h rfcomm.h sco.h 
	linux/include/net/irda: Tag: MaltaRef_2_6 af_irda.h 
	                        ircomm_event.h ircomm_lmp.h 
	                        ircomm_param.h ircomm_ttp.h ircomm_tty.h 
	                        ircomm_tty_attach.h irda.h irda_device.h 
	                        iriap.h irias_object.h irlan_client.h 
	                        irlan_common.h irlap.h irlap_frame.h 
	                        irlmp.h irttp.h parameters.h qos.h 
	                        timer.h 
	linux/include/net/sctp: Tag: MaltaRef_2_6 command.h constants.h 
	                        sctp.h sm.h structs.h tsnmap.h 
	                        ulpevent.h ulpqueue.h user.h 
	linux/include/pcmcia: Tag: MaltaRef_2_6 bulkmem.h ciscode.h 
	                      cisreg.h cistpl.h cs.h cs_types.h ds.h 
	                      mem_op.h ss.h 
	linux/include/rxrpc: Tag: MaltaRef_2_6 call.h connection.h 
	                     packet.h peer.h rxrpc.h transport.h types.h 
	linux/include/scsi: Tag: MaltaRef_2_6 scsi.h scsi_cmnd.h 
	                    scsi_dbg.h scsi_device.h scsi_devinfo.h 
	                    scsi_driver.h scsi_eh.h scsi_host.h 
	                    scsi_ioctl.h scsi_tcq.h scsi_transport.h 
	                    scsi_transport_fc.h scsi_transport_spi.h 
	linux/include/sound: Tag: MaltaRef_2_6 ac97_codec.h ad1848.h 
	                     ainstr_fm.h ainstr_gf1.h ainstr_iw.h 
	                     ainstr_simple.h ak4117.h ak4531_codec.h 
	                     ak4xxx-adda.h asequencer.h asound.h 
	                     asoundef.h control.h core.h cs4231.h 
	                     cs46xx.h cs8427.h driver.h emu10k1.h 
	                     es1688.h gus.h hdsp.h hwdep.h info.h 
	                     initval.h memalloc.h mixer_oss.h mpu401.h 
	                     opl3.h pcm.h pcm_oss.h rawmidi.h sb.h 
	                     seq_kernel.h seq_midi_emul.h seq_virmidi.h 
	                     snd_wavefront.h soundfont.h timer.h 
	                     trident.h version.h vx_core.h ymfpci.h 
	linux/include/video: Tag: MaltaRef_2_6 edid.h kyro.h mach64.h 
	                     neomagic.h newport.h permedia2.h pm3fb.h 
	                     radeon.h sstfb.h tdfx.h tgafb.h trident.h 
	                     vga.h 
	linux/init     : Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                 do_mounts.c do_mounts_devfs.c do_mounts_md.c 
	                 do_mounts_rd.c initramfs.c main.c version.c 
	linux/ipc      : Tag: MaltaRef_2_6 .cvsignore compat_mq.c 
	                 mqueue.c msg.c sem.c shm.c util.c util.h 
	linux/kernel   : Tag: MaltaRef_2_6 .cvsignore Makefile acct.c 
	                 audit.c auditsc.c capability.c compat.c cpu.c 
	                 dma.c exec_domain.c exit.c fork.c futex.c 
	                 intermodule.c itimer.c kallsyms.c kmod.c 
	                 kthread.c module.c panic.c params.c pid.c 
	                 posix-timers.c printk.c profile.c ptrace.c 
	                 rcupdate.c resource.c sched.c signal.c 
	                 softirq.c stop_machine.c sys.c sysctl.c time.c 
	                 timer.c user.c workqueue.c 
	linux/kernel/power: Tag: MaltaRef_2_6 Kconfig Makefile console.c 
	                    disk.c main.c pm.c power.h poweroff.c 
	                    process.c smp.c swsusp.c 
	linux/lib      : Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                 Kconfig.debug Makefile bitmap.c dec_and_lock.c 
	                 extable.c idr.c inflate.c kobject.c kref.c 
	                 parser.c radix-tree.c rwsem-spinlock.c rwsem.c 
	                 string.c vsprintf.c 
	linux/lib/zlib_deflate: Tag: MaltaRef_2_6 .cvsignore 
	linux/lib/zlib_inflate: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                        infblock.c inflate.c inftrees.c 
	                        inftrees.h 
	linux/mm       : Tag: MaltaRef_2_6 .cvsignore Makefile bootmem.c 
	                 fadvise.c filemap.c fremap.c highmem.c 
	                 hugetlb.c madvise.c memory.c mempolicy.c 
	                 mempool.c mincore.c mlock.c mmap.c mprotect.c 
	                 mremap.c msync.c nommu.c oom_kill.c 
	                 page-writeback.c page_alloc.c page_io.c 
	                 pdflush.c prio_tree.c readahead.c rmap.c 
	                 shmem.c slab.c swap_state.c swapfile.c thrash.c 
	                 truncate.c vmalloc.c vmscan.c 
	linux/net      : Tag: MaltaRef_2_6 Kconfig Makefile compat.c 
	                 socket.c 
	linux/net/802  : Tag: MaltaRef_2_6 .cvsignore fc.c fddi.c 
	                 hippi.c psnap.c tr.c 
	linux/net/8021q: Tag: MaltaRef_2_6 .cvsignore vlan.c vlan.h 
	                 vlan_dev.c vlanproc.c vlanproc.h 
	linux/net/appletalk: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                     aarp.c atalk_proc.c ddp.c 
	linux/net/atm  : Tag: MaltaRef_2_6 .cvsignore addr.c addr.h 
	                 atm_misc.c br2684.c clip.c common.c ioctl.c 
	                 lec.c lec.h lec_arpc.h mpc.c mpc.h mpoa_proc.c 
	                 pppoatm.c proc.c protocols.h raw.c resources.c 
	                 signaling.c svc.c 
	linux/net/ax25 : Tag: MaltaRef_2_6 .cvsignore af_ax25.c 
	                 ax25_dev.c ax25_ds_subr.c ax25_iface.c 
	                 ax25_in.c ax25_ip.c ax25_out.c ax25_route.c 
	                 ax25_subr.c ax25_uid.c 
	linux/net/bluetooth: Tag: MaltaRef_2_6 .cvsignore af_bluetooth.c 
	                     hci_conn.c hci_core.c hci_event.c 
	                     hci_sock.c hci_sysfs.c l2cap.c lib.c sco.c 
	linux/net/bluetooth/bnep: Tag: MaltaRef_2_6 core.c sock.c 
	linux/net/bluetooth/cmtp: Tag: MaltaRef_2_6 capi.c cmtp.h core.c 
	                          sock.c 
	linux/net/bluetooth/hidp: Tag: MaltaRef_2_6 core.c hidp.h sock.c 
	linux/net/bluetooth/rfcomm: Tag: MaltaRef_2_6 core.c sock.c 
	                            tty.c 
	linux/net/bridge: Tag: MaltaRef_2_6 .cvsignore br.c br_device.c 
	                  br_fdb.c br_if.c br_input.c br_ioctl.c 
	                  br_netfilter.c br_notify.c br_private.h 
	                  br_stp_bpdu.c br_stp_if.c br_sysfs_if.c 
	linux/net/bridge/netfilter: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                            Makefile ebt_802_3.c ebt_among.c 
	                            ebt_arp.c ebt_arpreply.c ebt_dnat.c 
	                            ebt_ip.c ebt_limit.c ebt_log.c 
	                            ebt_redirect.c ebt_snat.c ebt_vlan.c 
	                            ebtables.c 
	linux/net/core : Tag: MaltaRef_2_6 .cvsignore Makefile 
	                 datagram.c dev.c dev_mcast.c dst.c dv.c 
	                 ethtool.c iovec.c link_watch.c neighbour.c 
	                 net-sysfs.c netfilter.c netpoll.c pktgen.c 
	                 rtnetlink.c scm.c skbuff.c sock.c stream.c 
	                 utils.c wireless.c 
	linux/net/decnet: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                  af_decnet.c dn_dev.c dn_fib.c dn_neigh.c 
	                  dn_nsp_in.c dn_nsp_out.c dn_route.c dn_rules.c 
	                  dn_table.c dn_timer.c 
	linux/net/decnet/netfilter: Tag: MaltaRef_2_6 .cvsignore 
	                            dn_rtmsg.c 
	linux/net/econet: Tag: MaltaRef_2_6 .cvsignore af_econet.c 
	linux/net/ethernet: Tag: MaltaRef_2_6 .cvsignore eth.c 
	linux/net/ipv4 : Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                 af_inet.c ah4.c arp.c datagram.c devinet.c 
	                 esp4.c fib_frontend.c fib_hash.c fib_rules.c 
	                 fib_semantics.c icmp.c igmp.c inetpeer.c 
	                 ip_fragment.c ip_gre.c ip_input.c ip_options.c 
	                 ip_output.c ip_sockglue.c ipcomp.c ipconfig.c 
	                 ipip.c ipmr.c protocol.c raw.c route.c 
	                 syncookies.c sysctl_net_ipv4.c tcp.c tcp_diag.c 
	                 tcp_input.c tcp_ipv4.c tcp_minisocks.c 
	                 tcp_output.c tcp_timer.c udp.c xfrm4_input.c 
	                 xfrm4_output.c xfrm4_policy.c xfrm4_state.c 
	                 xfrm4_tunnel.c 
	linux/net/ipv4/ipvs: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                     ip_vs_app.c ip_vs_conn.c ip_vs_core.c 
	                     ip_vs_ctl.c ip_vs_est.c ip_vs_ftp.c 
	                     ip_vs_lblc.c ip_vs_lblcr.c ip_vs_proto.c 
	                     ip_vs_proto_tcp.c ip_vs_proto_udp.c 
	                     ip_vs_sched.c ip_vs_sync.c ip_vs_wrr.c 
	                     ip_vs_xmit.c 
	linux/net/ipv4/netfilter: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                          Makefile arp_tables.c 
	                          arptable_filter.c 
	                          ip_conntrack_amanda.c 
	                          ip_conntrack_core.c ip_conntrack_ftp.c 
	                          ip_conntrack_irc.c 
	                          ip_conntrack_proto_generic.c 
	                          ip_conntrack_proto_icmp.c 
	                          ip_conntrack_proto_sctp.c 
	                          ip_conntrack_proto_tcp.c 
	                          ip_conntrack_proto_udp.c 
	                          ip_conntrack_standalone.c 
	                          ip_conntrack_tftp.c ip_nat_amanda.c 
	                          ip_nat_core.c ip_nat_ftp.c 
	                          ip_nat_helper.c ip_nat_irc.c 
	                          ip_nat_proto_icmp.c ip_nat_proto_tcp.c 
	                          ip_nat_proto_udp.c 
	                          ip_nat_proto_unknown.c ip_nat_rule.c 
	                          ip_nat_snmp_basic.c 
	                          ip_nat_standalone.c ip_nat_tftp.c 
	                          ip_queue.c ip_tables.c ipt_ECN.c 
	                          ipt_LOG.c ipt_MARK.c ipt_MASQUERADE.c 
	                          ipt_NETMAP.c ipt_NOTRACK.c 
	                          ipt_REDIRECT.c ipt_REJECT.c ipt_SAME.c 
	                          ipt_TCPMSS.c ipt_ULOG.c 
	                          ipt_conntrack.c ipt_helper.c 
	                          ipt_limit.c ipt_mac.c ipt_multiport.c 
	                          ipt_recent.c ipt_sctp.c ipt_state.c 
	                          ipt_tcpmss.c iptable_filter.c 
	                          iptable_mangle.c iptable_raw.c 
	linux/net/ipv6 : Tag: MaltaRef_2_6 .cvsignore Kconfig addrconf.c 
	                 af_inet6.c ah6.c anycast.c datagram.c esp6.c 
	                 exthdrs.c exthdrs_core.c icmp.c ip6_fib.c 
	                 ip6_flowlabel.c ip6_input.c ip6_output.c 
	                 ip6_tunnel.c ipcomp6.c ipv6_sockglue.c 
	                 ipv6_syms.c mcast.c ndisc.c proc.c protocol.c 
	                 raw.c reassembly.c route.c sit.c 
	                 sysctl_net_ipv6.c tcp_ipv6.c udp.c 
	                 xfrm6_input.c xfrm6_output.c xfrm6_policy.c 
	                 xfrm6_state.c xfrm6_tunnel.c 
	linux/net/ipv6/netfilter: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                          Makefile ip6_queue.c ip6_tables.c 
	                          ip6t_LOG.c ip6t_MARK.c ip6t_ah.c 
	                          ip6t_dst.c ip6t_esp.c ip6t_eui64.c 
	                          ip6t_frag.c ip6t_hbh.c ip6t_hl.c 
	                          ip6t_ipv6header.c ip6t_length.c 
	                          ip6t_limit.c ip6t_mac.c ip6t_mark.c 
	                          ip6t_multiport.c ip6t_owner.c 
	                          ip6t_rt.c ip6table_filter.c 
	                          ip6table_mangle.c ip6table_raw.c 
	linux/net/ipx  : Tag: MaltaRef_2_6 .cvsignore af_ipx.c 
	                 ipx_proc.c ipx_route.c 
	linux/net/irda : Tag: MaltaRef_2_6 .cvsignore af_irda.c 
	                 discovery.c irda_device.c iriap.c iriap_event.c 
	                 irias_object.c irlap.c irlap_event.c 
	                 irlap_frame.c irlmp.c irlmp_event.c 
	                 irlmp_frame.c irmod.c irqueue.c irsysctl.c 
	                 irttp.c parameters.c qos.c timer.c wrapper.c 
	linux/net/irda/compressors: Tag: MaltaRef_2_6 .cvsignore 
	linux/net/irda/ircomm: Tag: MaltaRef_2_6 .cvsignore 
	                       ircomm_core.c ircomm_event.c ircomm_lmp.c 
	                       ircomm_param.c ircomm_ttp.c ircomm_tty.c 
	                       ircomm_tty_attach.c ircomm_tty_ioctl.c 
	linux/net/irda/irlan: Tag: MaltaRef_2_6 .cvsignore 
	                      irlan_client.c irlan_client_event.c 
	                      irlan_common.c irlan_eth.c irlan_event.c 
	                      irlan_filter.c irlan_provider.c 
	                      irlan_provider_event.c 
	linux/net/irda/irnet: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                      irnet.h irnet_irda.c irnet_ppp.c 
	                      irnet_ppp.h 
	linux/net/key  : Tag: MaltaRef_2_6 .cvsignore af_key.c 
	linux/net/lapb : Tag: MaltaRef_2_6 .cvsignore lapb_iface.c 
	linux/net/llc  : Tag: MaltaRef_2_6 .cvsignore af_llc.c 
	                 llc_c_ac.c llc_c_ev.c llc_conn.c llc_core.c 
	                 llc_if.c llc_input.c llc_output.c llc_pdu.c 
	                 llc_proc.c llc_sap.c llc_station.c 
	linux/net/netlink: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                   af_netlink.c 
	linux/net/netrom: Tag: MaltaRef_2_6 .cvsignore af_netrom.c 
	                  nr_in.c nr_out.c nr_route.c nr_subr.c 
	                  nr_timer.c 
	linux/net/packet: Tag: MaltaRef_2_6 .cvsignore af_packet.c 
	linux/net/rose : Tag: MaltaRef_2_6 .cvsignore af_rose.c 
	                 rose_dev.c rose_in.c rose_link.c rose_out.c 
	                 rose_route.c rose_subr.c rose_timer.c 
	linux/net/rxrpc: Tag: MaltaRef_2_6 .cvsignore call.c 
	                 connection.c internal.h krxiod.c krxsecd.c 
	                 krxtimod.c main.c peer.c rxrpc_syms.c 
	                 transport.c 
	linux/net/sched: Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                 act_api.c cls_api.c cls_fw.c cls_route.c 
	                 cls_rsvp.c cls_rsvp.h cls_rsvp6.c cls_tcindex.c 
	                 cls_u32.c estimator.c police.c sch_api.c 
	                 sch_atm.c sch_cbq.c sch_dsmark.c sch_fifo.c 
	                 sch_generic.c sch_gred.c sch_hfsc.c sch_htb.c 
	                 sch_ingress.c sch_netem.c sch_prio.c sch_red.c 
	                 sch_sfq.c sch_tbf.c sch_teql.c 
	linux/net/sctp : Tag: MaltaRef_2_6 .cvsignore associola.c 
	                 bind_addr.c chunk.c command.c debug.c 
	                 endpointola.c input.c inqueue.c ipv6.c objcnt.c 
	                 output.c outqueue.c proc.c protocol.c 
	                 sm_make_chunk.c sm_sideeffect.c sm_statefuns.c 
	                 sm_statetable.c socket.c ssnmap.c sysctl.c 
	                 transport.c tsnmap.c ulpevent.c ulpqueue.c 
	linux/net/sunrpc: Tag: MaltaRef_2_6 .cvsignore auth.c 
	                  auth_null.c auth_unix.c cache.c clnt.c 
	                  pmap_clnt.c rpc_pipe.c sched.c sunrpc_syms.c 
	                  svc.c svcauth.c svcauth_unix.c svcsock.c xdr.c 
	                  xprt.c 
	linux/net/sunrpc/auth_gss: Tag: MaltaRef_2_6 .cvsignore 
	                           auth_gss.c gss_generic_token.c 
	                           gss_krb5_crypto.c gss_krb5_mech.c 
	                           gss_mech_switch.c gss_spkm3_mech.c 
	                           gss_spkm3_seal.c svcauth_gss.c 
	linux/net/unix : Tag: MaltaRef_2_6 .cvsignore af_unix.c 
	                 garbage.c sysctl_net_unix.c 
	linux/net/wanrouter: Tag: MaltaRef_2_6 .cvsignore af_wanpipe.c 
	                     wanmain.c 
	linux/net/x25  : Tag: MaltaRef_2_6 .cvsignore af_x25.c 
	                 sysctl_net_x25.c x25_dev.c x25_facilities.c 
	                 x25_in.c x25_link.c x25_out.c x25_proc.c 
	                 x25_route.c x25_subr.c x25_timer.c 
	linux/net/xfrm : Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                 xfrm_algo.c xfrm_input.c xfrm_policy.c 
	                 xfrm_state.c xfrm_user.c 
	linux/scripts  : Tag: MaltaRef_2_6 Makefile.build Makefile.clean 
	                 Makefile.host Makefile.lib Makefile.modinst 
	                 Makefile.modpost checkstack.pl conmakehash.c 
	                 kallsyms.c kernel-doc mksysmap patch-kernel 
	                 reference_discarded.pl reference_init.pl 
	                 ver_linux 
	linux/scripts/basic: Tag: MaltaRef_2_6 .cvsignore docproc.c 
	                     fixdep.c split-include.c 
	linux/scripts/genksyms: Tag: MaltaRef_2_6 .cvsignore genksyms.c 
	                        genksyms.h 
	linux/scripts/kconfig: Tag: MaltaRef_2_6 Makefile conf.c 
	                       confdata.c expr.c expr.h gconf.c lkc.h 
	                       lkc_proto.h mconf.c menu.c qconf.cc 
	                       symbol.c zconf.tab.c_shipped zconf.y 
	linux/scripts/lxdialog: Tag: MaltaRef_2_6 Makefile checklist.c 
	                        colors.h dialog.h lxdialog.c menubox.c 
	linux/scripts/mod: Tag: MaltaRef_2_6 file2alias.c modpost.c 
	                   modpost.h sumversion.c 
	linux/scripts/package: Tag: MaltaRef_2_6 builddeb mkspec 
	linux/security : Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                 capability.c commoncap.c dummy.c security.c 
	linux/security/selinux: Tag: MaltaRef_2_6 Kconfig avc.c hooks.c 
	                        netif.c nlmsgtab.c selinuxfs.c 
	linux/security/selinux/include: Tag: MaltaRef_2_6 av_inherit.h 
	                                av_perm_to_string.h 
	                                av_permissions.h avc.h avc_ss.h 
	                                class_to_string.h 
	                                common_perm_to_string.h flask.h 
	                                netif.h objsec.h security.h 
	linux/security/selinux/ss: Tag: MaltaRef_2_6 Makefile avtab.c 
	                           avtab.h conditional.c constraint.h 
	                           context.h ebitmap.c ebitmap.h 
	                           hashtab.c hashtab.h mls.c mls.h 
	                           mls_types.h policydb.c policydb.h 
	                           services.c services.h sidtab.c 
	linux/sound    : Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                 sound_core.c 
	linux/sound/arm: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                 sa11xx-uda1341.c 
	linux/sound/core: Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                  control.c device.c hwdep.c info.c info_oss.c 
	                  init.c memalloc.c memory.c misc.c pcm.c 
	                  pcm_lib.c pcm_memory.c pcm_misc.c pcm_native.c 
	                  pcm_timer.c rawmidi.c rtctimer.c sgbuf.c 
	                  sound.c timer.c 
	linux/sound/core/ioctl32: Tag: MaltaRef_2_6 .cvsignore 
	linux/sound/core/oss: Tag: MaltaRef_2_6 .cvsignore mixer_oss.c 
	                      mulaw.c pcm_oss.c pcm_plugin.c 
	                      pcm_plugin.h rate.c route.c 
	linux/sound/core/seq: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                      seq.c seq_clientmgr.c seq_clientmgr.h 
	                      seq_device.c seq_dummy.c seq_fifo.c 
	                      seq_instr.c seq_memory.c seq_memory.h 
	                      seq_midi.c seq_midi_emul.c 
	                      seq_midi_event.c seq_ports.c seq_prioq.c 
	                      seq_queue.c seq_queue.h seq_system.c 
	                      seq_timer.c seq_virmidi.c 
	linux/sound/core/seq/instr: Tag: MaltaRef_2_6 .cvsignore 
	                            Makefile ainstr_fm.c ainstr_gf1.c 
	                            ainstr_iw.c ainstr_simple.c 
	linux/sound/core/seq/oss: Tag: MaltaRef_2_6 .cvsignore seq_oss.c 
	                          seq_oss_device.h seq_oss_init.c 
	                          seq_oss_ioctl.c seq_oss_midi.c 
	                          seq_oss_readq.c seq_oss_readq.h 
	                          seq_oss_rw.c seq_oss_synth.c 
	                          seq_oss_timer.c seq_oss_writeq.c 
	linux/sound/drivers: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                     dummy.c mtpav.c serial-u16550.c virmidi.c 
	linux/sound/drivers/mpu401: Tag: MaltaRef_2_6 .cvsignore 
	                            mpu401.c mpu401_uart.c 
	linux/sound/drivers/opl3: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                          opl3_drums.c opl3_lib.c opl3_midi.c 
	                          opl3_oss.c opl3_seq.c opl3_synth.c 
	linux/sound/drivers/opl4: Tag: MaltaRef_2_6 Makefile opl4_lib.c 
	                          opl4_local.h opl4_mixer.c opl4_proc.c 
	                          opl4_seq.c opl4_synth.c 
	linux/sound/drivers/vx: Tag: MaltaRef_2_6 vx_cmd.c vx_cmd.h 
	                        vx_core.c vx_hwdep.c vx_mixer.c vx_pcm.c 
	                        vx_uer.c 
	linux/sound/i2c: Tag: MaltaRef_2_6 .cvsignore cs8427.c i2c.c 
	                 tea6330t.c 
	linux/sound/i2c/l3: Tag: MaltaRef_2_6 .cvsignore uda1341.c 
	linux/sound/i2c/other: Tag: MaltaRef_2_6 Makefile ak4117.c 
	                       ak4xxx-adda.c tea575x-tuner.c 
	linux/sound/isa: Tag: MaltaRef_2_6 .cvsignore Kconfig als100.c 
	                 azt2320.c cmi8330.c dt019x.c es18xx.c opl3sa2.c 
	                 sgalaxy.c sscape.c 
	linux/sound/isa/ad1816a: Tag: MaltaRef_2_6 .cvsignore ad1816a.c 
	                         ad1816a_lib.c 
	linux/sound/isa/ad1848: Tag: MaltaRef_2_6 .cvsignore ad1848.c 
	                        ad1848_lib.c 
	linux/sound/isa/cs423x: Tag: MaltaRef_2_6 .cvsignore cs4231.c 
	                        cs4231_lib.c cs4236.c cs4236_lib.c 
	linux/sound/isa/es1688: Tag: MaltaRef_2_6 .cvsignore es1688.c 
	                        es1688_lib.c 
	linux/sound/isa/gus: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                     gus_dma.c gus_dram.c gus_instr.c gus_irq.c 
	                     gus_main.c gus_mem.c gus_mem_proc.c 
	                     gus_mixer.c gus_pcm.c gus_reset.c 
	                     gus_sample.c gus_synth.c gus_timer.c 
	                     gus_uart.c gusclassic.c gusextreme.c 
	                     gusmax.c interwave.c 
	linux/sound/isa/opti9xx: Tag: MaltaRef_2_6 .cvsignore 
	                         opti92x-ad1848.c 
	linux/sound/isa/sb: Tag: MaltaRef_2_6 .cvsignore emu8000.c 
	                    emu8000_callback.c emu8000_local.h 
	                    emu8000_patch.c emu8000_pcm.c 
	                    emu8000_synth.c es968.c sb16.c sb16_csp.c 
	                    sb16_main.c sb8.c sb8_main.c sb8_midi.c 
	                    sb_common.c sb_mixer.c 
	linux/sound/isa/wavefront: Tag: MaltaRef_2_6 .cvsignore 
	                           wavefront.c wavefront_fx.c 
	                           wavefront_midi.c wavefront_synth.c 
	linux/sound/oss: Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                 ac97.c ac97.h ac97_codec.c aci.c aci.h ad1816.c 
	                 ad1848.c ad1848.h ad1889.c ad1889.h 
	                 adlib_card.c aedsp16.c ali5455.c au1000.c 
	                 audio.c audio_syms.c awe_wave.c btaudio.c 
	                 cmpci.c cs4232.c cs46xx.c cs46xx_wrapper-24.h 
	                 cs46xxpm-24.h dev_table.c dev_table.h dmabuf.c 
	                 es1370.c es1371.c esssolo1.c forte.c gus_card.c 
	                 gus_wave.c harmony.c i810_audio.c ite8172.c 
	                 kahlua.c mad16.c maestro.c maestro3.c 
	                 maestro3.h maui.c midibuf.c mpu401.c mpu401.h 
	                 msnd.c msnd.h msnd_pinnacle.c nec_vrc5477.c 
	                 nm256.h nm256_audio.c opl3.c opl3sa.c opl3sa2.c 
	                 pas2_card.c pss.c rme96xx.c sb.h sb_card.c 
	                 sb_common.c sb_ess.c sequencer.c sgalaxy.c 
	                 sonicvibes.c sound_calls.h sound_syms.c 
	                 soundcard.c sscape.c swarm_cs4297a.c 
	                 sys_timer.c trident.c trix.c uart401.c 
	                 uart6850.c v_midi.c via82cxxx_audio.c vwsnd.c 
	                 waveartist.c wavfront.c wf_midi.c ymfpci.c 
	                 ymfpci.h 
	linux/sound/oss/cs4281: Tag: MaltaRef_2_6 .cvsignore 
	                        cs4281_wrapper-24.c cs4281m.c 
	                        cs4281pm-24.c 
	linux/sound/oss/dmasound: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                          dac3550a.c dmasound_awacs.c 
	linux/sound/oss/emu10k1: Tag: MaltaRef_2_6 .cvsignore audio.c 
	                         audio.h cardmi.c cardmi.h cardwi.c 
	                         efxmgr.c hwaccess.c hwaccess.h main.c 
	                         midi.c voicemgr.c 
	linux/sound/parisc: Tag: MaltaRef_2_6 Kconfig harmony.c 
	linux/sound/pci: Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                 als4000.c atiixp.c azt3328.c bt87x.c cmipci.c 
	                 cs4281.c ens1370.c es1938.c es1968.c fm801.c 
	                 intel8x0.c intel8x0m.c maestro3.c rme32.c 
	                 rme96.c sonicvibes.c via82xx.c 
	linux/sound/pci/ac97: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                      ac97_codec.c ac97_id.h ac97_local.h 
	                      ac97_patch.c ac97_patch.h ac97_pcm.c 
	                      ac97_proc.c ak4531_codec.c 
	linux/sound/pci/ali5451: Tag: MaltaRef_2_6 .cvsignore ali5451.c 
	linux/sound/pci/au88x0: Tag: MaltaRef_2_6 au88x0.c au88x0.h 
	                        au88x0_a3d.c au88x0_core.c au88x0_eq.c 
	                        au88x0_game.c au88x0_mixer.c 
	                        au88x0_mpu401.c au88x0_pcm.c 
	                        au88x0_xtalk.c au88x0_xtalk.h 
	linux/sound/pci/cs46xx: Tag: MaltaRef_2_6 .cvsignore cs46xx.c 
	                        cs46xx_lib.c cs46xx_lib.h dsp_spos.c 
	                        dsp_spos_scb_lib.c 
	linux/sound/pci/cs46xx/imgs: Tag: MaltaRef_2_6 cwcdma.h 
	linux/sound/pci/emu10k1: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                         emu10k1.c emu10k1_callback.c 
	                         emu10k1_main.c emu10k1_patch.c 
	                         emu10k1_synth.c emufx.c emumixer.c 
	                         emumpu401.c emupcm.c emuproc.c io.c 
	                         irq.c memory.c voice.c 
	linux/sound/pci/ice1712: Tag: MaltaRef_2_6 Makefile ak4xxx.c 
	                         aureon.c aureon.h delta.c delta.h 
	                         envy24ht.h ews.c ews.h hoontech.c 
	                         ice1712.c ice1712.h ice1724.c revo.c 
	linux/sound/pci/korg1212: Tag: MaltaRef_2_6 .cvsignore 
	                          korg1212.c 
	linux/sound/pci/mixart: Tag: MaltaRef_2_6 mixart.c mixart.h 
	                        mixart_core.c mixart_hwdep.c 
	                        mixart_hwdep.h mixart_mixer.c 
	linux/sound/pci/nm256: Tag: MaltaRef_2_6 .cvsignore nm256.c 
	linux/sound/pci/rme9652: Tag: MaltaRef_2_6 .cvsignore hdsp.c 
	                         rme9652.c 
	linux/sound/pci/trident: Tag: MaltaRef_2_6 .cvsignore trident.c 
	                         trident_main.c trident_memory.c 
	                         trident_synth.c 
	linux/sound/pci/vx222: Tag: MaltaRef_2_6 vx222.c vx222.h 
	                       vx222_ops.c 
	linux/sound/pci/ymfpci: Tag: MaltaRef_2_6 .cvsignore ymfpci.c 
	                        ymfpci_main.c 
	linux/sound/pcmcia: Tag: MaltaRef_2_6 Kconfig 
	linux/sound/pcmcia/pdaudiocf: Tag: MaltaRef_2_6 pdaudiocf.c 
	                              pdaudiocf.h pdaudiocf_core.c 
	                              pdaudiocf_irq.c pdaudiocf_pcm.c 
	linux/sound/pcmcia/vx: Tag: MaltaRef_2_6 vx_entry.c vxp_mixer.c 
	                       vxp_ops.c vxpocket.c vxpocket.h 
	linux/sound/ppc: Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                 awacs.c burgundy.c daca.c keywest.c pmac.c 
	                 pmac.h powermac.c tumbler.c 
	linux/sound/sparc: Tag: MaltaRef_2_6 amd7930.c cs4231.c 
	linux/sound/synth: Tag: MaltaRef_2_6 .cvsignore util_mem.c 
	linux/sound/synth/emux: Tag: MaltaRef_2_6 .cvsignore emux.c 
	                        emux_effect.c emux_hwdep.c emux_nrpn.c 
	                        emux_oss.c emux_proc.c emux_seq.c 
	                        emux_synth.c soundfont.c 
	linux/sound/usb: Tag: MaltaRef_2_6 Kconfig Makefile usbaudio.c 
	                 usbaudio.h usbmidi.c usbmixer.c usbmixer_maps.c 
	                 usbquirks.h 
	linux/usr      : Tag: MaltaRef_2_6 .cvsignore Makefile 
	                 gen_init_cpio.c 
Added files:
	linux/Documentation: Tag: MaltaRef_2_6 ManagementStyle 
	                     PCIEBUS-HOWTO.txt README.cycladesZ 
	                     SecurityBugs atomic_ops.txt cpusets.txt 
	                     dontdiff feature-removal-schedule.txt 
	                     ibm-acpi.txt keys.txt kref.txt 
	                     nommu-mmap.txt prio_tree.txt 
	                     sched-stats.txt seclvl.txt sparse.txt 
	                     stable_api_nonsense.txt 
	                     time_interpolators.txt tty.txt 
	linux/Documentation/DocBook: Tag: MaltaRef_2_6 .cvsignore 
	                             librs.tmpl mtdnand.tmpl 
	                             stylesheet.xsl 
	linux/Documentation/RCU: Tag: MaltaRef_2_6 RTFP.txt UP.txt 
	                         arrayRCU.txt checklist.txt listRCU.txt 
	                         rcu.txt 
	linux/Documentation/aoe: Tag: MaltaRef_2_6 aoe.txt autoload.sh 
	                         mkdevs.sh mkshelf.sh status.sh todo.txt 
	                         udev-install.sh udev.txt 
	linux/Documentation/arm: Tag: MaltaRef_2_6 IXP2000 
	linux/Documentation/arm/Samsung-S3C24XX: Tag: MaltaRef_2_6 
	                                         GPIO.txt H1940.txt 
	                                         SMDK2440.txt 
	                                         Suspend.txt 
	linux/Documentation/cdrom: Tag: MaltaRef_2_6 packet-writing.txt 
	linux/Documentation/cpu-freq: Tag: MaltaRef_2_6 
	                              cpufreq-nforce2.txt 
	                              cpufreq-stats.txt 
	linux/Documentation/dvb: Tag: MaltaRef_2_6 README.dibusb 
	                         README.flexcop ci.txt get_dvb_firmware 
	                         udev.txt 
	linux/Documentation/filesystems: Tag: MaltaRef_2_6 sysfs-pci.txt 
	linux/Documentation/fujitsu/frv: Tag: MaltaRef_2_6 README.txt 
	                                 atomic-ops.txt booting.txt 
	                                 clock.txt configuring.txt 
	                                 features.txt gdbinit 
	                                 gdbstub.txt mmu-layout.txt 
	linux/Documentation/i2c: Tag: MaltaRef_2_6 i2c-stub 
	linux/Documentation/i2c/busses: Tag: MaltaRef_2_6 i2c-ali1535 
	                                i2c-ali1563 i2c-ali15x3 
	                                i2c-amd756 i2c-amd8111 i2c-i801 
	                                i2c-i810 i2c-nforce2 i2c-parport 
	                                i2c-parport-light i2c-pca-isa 
	                                i2c-piix4 i2c-prosavage 
	                                i2c-savage4 i2c-sis5595 
	                                i2c-sis630 i2c-sis69x i2c-via 
	                                i2c-viapro i2c-voodoo3 
	                                scx200_acb 
	linux/Documentation/i2c/chips: Tag: MaltaRef_2_6 smsc47b397.txt 
	linux/Documentation/i2o: Tag: MaltaRef_2_6 README ioctl 
	linux/Documentation/ia64: Tag: MaltaRef_2_6 serial.txt 
	linux/Documentation/infiniband: Tag: MaltaRef_2_6 ipoib.txt 
	                                sysfs.txt user_mad.txt 
	linux/Documentation/ioctl: Tag: MaltaRef_2_6 cdrom.txt hdio.txt 
	linux/Documentation/networking: Tag: MaltaRef_2_6 gen_stats.txt 
	                                proc_net_tcp.txt 
	linux/Documentation/power: Tag: MaltaRef_2_6 kernel_threads.txt 
	                           video_extension.txt 
	linux/Documentation/powerpc: Tag: MaltaRef_2_6 cpu_features.txt 
	                             eeh-pci-error-recovery.txt 
	linux/Documentation/s390: Tag: MaltaRef_2_6 monreader.txt 
	linux/Documentation/scsi: Tag: MaltaRef_2_6 ChangeLog.1992-1997 
	                          ChangeLog.lpfc lpfc.txt megaraid.txt 
	linux/Documentation/sound/alsa: Tag: MaltaRef_2_6 Bt87x.txt 
	                                VIA82xx-mixer.txt hda_codec.txt 
	linux/Documentation/usb: Tag: MaltaRef_2_6 gadget_serial.txt 
	                         usbmon.txt 
	linux/Documentation/w1: Tag: MaltaRef_2_6 w1.generic 
	linux/arch/alpha/kernel: Tag: MaltaRef_2_6 io.c 
	linux/arch/arm/boot/compressed: Tag: MaltaRef_2_6 big-endian.S 
	                                head-sharpsl.S 
	linux/arch/arm/common: Tag: MaltaRef_2_6 Kconfig icst307.c 
	                       rtctime.c scoop.c sharpsl_param.c 
	linux/arch/arm/configs: Tag: MaltaRef_2_6 enp2611_defconfig 
	                        ep80219_defconfig h7201_defconfig 
	                        h7202_defconfig iq31244_defconfig 
	                        iq80331_defconfig iq80332_defconfig 
	                        ixdp2400_defconfig ixdp2401_defconfig 
	                        ixdp2800_defconfig ixdp2801_defconfig 
	                        omap_h2_1610_defconfig 
	                        pxa255-idp_defconfig simpad_defconfig 
	linux/arch/arm/kernel: Tag: MaltaRef_2_6 smp.c 
	linux/arch/arm/lib: Tag: MaltaRef_2_6 bitops.h io-readsl.S 
	linux/arch/arm/mach-clps711x: Tag: MaltaRef_2_6 Makefile.boot 
	                              common.h 
	linux/arch/arm/mach-clps7500: Tag: MaltaRef_2_6 Makefile.boot 
	linux/arch/arm/mach-ebsa110: Tag: MaltaRef_2_6 Makefile.boot 
	linux/arch/arm/mach-epxa10db: Tag: MaltaRef_2_6 Makefile.boot 
	linux/arch/arm/mach-footbridge: Tag: MaltaRef_2_6 Makefile.boot 
	                                co285.c common.c common.h 
	                                dc21285-timer.c ebsa285.c 
	                                isa-timer.c isa.c personal.c 
	linux/arch/arm/mach-h720x: Tag: MaltaRef_2_6 Kconfig Makefile 
	                           Makefile.boot common.c common.h 
	                           cpu-h7201.c cpu-h7202.c h7201-eval.c 
	                           h7202-eval.c 
	linux/arch/arm/mach-imx: Tag: MaltaRef_2_6 Makefile.boot 
	linux/arch/arm/mach-integrator: Tag: MaltaRef_2_6 Makefile.boot 
	                                common.h 
	linux/arch/arm/mach-iop3xx: Tag: MaltaRef_2_6 Makefile.boot 
	                            common.c iop321-setup.c iop331-irq.c 
	                            iop331-pci.c iop331-setup.c 
	                            iop331-time.c iq31244-mm.c 
	                            iq31244-pci.c iq80321-mm.c 
	                            iq80331-mm.c iq80331-pci.c 
	                            iq80332-mm.c iq80332-pci.c 
	linux/arch/arm/mach-ixp2000: Tag: MaltaRef_2_6 Kconfig Makefile 
	                             Makefile.boot core.c enp2611.c 
	                             ixdp2400.c ixdp2800.c ixdp2x00.c 
	                             ixdp2x01.c pci.c 
	linux/arch/arm/mach-ixp4xx: Tag: MaltaRef_2_6 Makefile.boot 
	                            gtwx5715-pci.c gtwx5715-setup.c 
	                            ixdpg425-pci.c 
	linux/arch/arm/mach-l7200: Tag: MaltaRef_2_6 Makefile.boot 
	linux/arch/arm/mach-lh7a40x: Tag: MaltaRef_2_6 Makefile.boot 
	                             common.h 
	linux/arch/arm/mach-omap: Tag: MaltaRef_2_6 Makefile.boot 
	                          board-netstar.c board-voiceblue.c 
	                          clock.c clock.h leds-osk.c pm.c 
	                          sleep.S 
	linux/arch/arm/mach-pxa: Tag: MaltaRef_2_6 Makefile.boot corgi.c 
	                         corgi_ssp.c poodle.c ssp.c 
	linux/arch/arm/mach-rpc: Tag: MaltaRef_2_6 Makefile.boot 
	linux/arch/arm/mach-s3c2410: Tag: MaltaRef_2_6 Makefile.boot 
	                             cpu.c cpu.h mach-n30.c 
	                             mach-nexcoder.c mach-otom.c 
	                             mach-rx3715.c mach-smdk2440.c pm.c 
	                             pm.h s3c2440-dsc.c s3c2440.c 
	                             s3c2440.h sleep.S usb-simtec.c 
	                             usb-simtec.h 
	linux/arch/arm/mach-sa1100: Tag: MaltaRef_2_6 Makefile.boot 
	linux/arch/arm/mach-shark: Tag: MaltaRef_2_6 Makefile.boot 
	linux/arch/arm/mach-versatile: Tag: MaltaRef_2_6 Kconfig 
	                               Makefile.boot core.h 
	                               versatile_ab.c versatile_pb.c 
	linux/arch/arm/mm: Tag: MaltaRef_2_6 abort-macro.S 
	                   copypage-v4mc.c flush.c 
	linux/arch/arm26/kernel: Tag: MaltaRef_2_6 calls.S head.S 
	linux/arch/arm26/lib: Tag: MaltaRef_2_6 io-readsl.S io-readsw.S 
	                      io-writesw.S 
	linux/arch/arm26/machine: Tag: MaltaRef_2_6 latches.c 
	linux/arch/arm26/mm: Tag: MaltaRef_2_6 memc.c small_page.c 
	linux/arch/cris/arch-v10/kernel: Tag: MaltaRef_2_6 crisksyms.c 
	linux/arch/frv : Tag: MaltaRef_2_6 Kconfig Kconfig.debug 
	                 Makefile 
	linux/arch/frv/boot: Tag: MaltaRef_2_6 Makefile 
	linux/arch/frv/kernel: Tag: MaltaRef_2_6 Makefile break.S 
	                       cmode.S debug-stub.c dma.c entry-table.S 
	                       entry.S frv_ksyms.c gdb-io.c gdb-io.h 
	                       gdb-stub.c head-mmu-fr451.S 
	                       head-uc-fr401.S head-uc-fr451.S 
	                       head-uc-fr555.S head.S head.inc 
	                       init_task.c irq-mb93091.c irq-mb93093.c 
	                       irq-mb93493.c irq-routing.c irq.c 
	                       kernel_thread.S local.h pm-mb93093.c pm.c 
	                       process.c ptrace.c semaphore.c setup.c 
	                       signal.c sleep.S switch_to.S sys_frv.c 
	                       sysctl.c time.c traps.c uaccess.c 
	                       vmlinux.lds.S 
	linux/arch/frv/lib: Tag: MaltaRef_2_6 Makefile __ashldi3.S 
	                    __ashrdi3.S __lshrdi3.S __muldi3.S 
	                    __negdi2.S atomic-ops.S cache.S checksum.c 
	                    insl_ns.S insl_sw.S memcpy.S memset.S 
	                    outsl_ns.S outsl_sw.S 
	linux/arch/frv/mb93090-mb00: Tag: MaltaRef_2_6 Makefile 
	                             pci-dma-nommu.c pci-dma.c pci-frv.c 
	                             pci-frv.h pci-irq.c pci-vdk.c 
	linux/arch/frv/mm: Tag: MaltaRef_2_6 Makefile cache-page.c 
	                   dma-alloc.c elf-fdpic.c extable.c fault.c 
	                   highmem.c init.c kmap.c mmu-context.c 
	                   pgalloc.c tlb-flush.S tlb-miss.S unaligned.c 
	linux/arch/i386/crypto: Tag: MaltaRef_2_6 .cvsignore 
	linux/arch/i386/kernel: Tag: MaltaRef_2_6 kprobes.c quirks.c 
	                        reboot_fixups.c syscall_table.S 
	                        vmlinux.lds vsyscall-int80.so 
	                        vsyscall-note.S vsyscall-sysenter.so 
	                        vsyscall.lds.S 
	linux/arch/i386/kernel/acpi: Tag: MaltaRef_2_6 .cvsignore 
	                             earlyquirk.c 
	linux/arch/i386/kernel/cpu: Tag: MaltaRef_2_6 .cvsignore 
	                            intel_cacheinfo.c 
	linux/arch/i386/kernel/cpu/cpufreq: Tag: MaltaRef_2_6 .cvsignore 
	                                    acpi-cpufreq.c 
	                                    cpufreq-nforce2.c 
	                                    sc520_freq.c 
	                                    speedstep-est-common.h 
	linux/arch/i386/kernel/cpu/mcheck: Tag: MaltaRef_2_6 .cvsignore 
	linux/arch/i386/kernel/cpu/mtrr: Tag: MaltaRef_2_6 .cvsignore 
	linux/arch/i386/kernel/timers: Tag: MaltaRef_2_6 .cvsignore 
	linux/arch/i386/lib: Tag: MaltaRef_2_6 putuser.S 
	linux/arch/i386/mach-default: Tag: MaltaRef_2_6 .cvsignore 
	linux/arch/i386/mm: Tag: MaltaRef_2_6 mmap.c 
	linux/arch/i386/oprofile: Tag: MaltaRef_2_6 .cvsignore 
	                          backtrace.c 
	linux/arch/i386/pci: Tag: MaltaRef_2_6 .cvsignore 
	linux/arch/i386/power: Tag: MaltaRef_2_6 .cvsignore 
	linux/arch/ia64/configs: Tag: MaltaRef_2_6 bigsur_defconfig 
	                         tiger_defconfig 
	linux/arch/ia64/hp/common: Tag: MaltaRef_2_6 hwsw_iommu.c 
	linux/arch/ia64/hp/zx1: Tag: MaltaRef_2_6 
	                        hpzx1_swiotlb_machvec.c 
	linux/arch/ia64/kernel: Tag: MaltaRef_2_6 domain.c mca_drv.c 
	                        mca_drv.h mca_drv_asm.S topology.c 
	linux/arch/ia64/oprofile: Tag: MaltaRef_2_6 backtrace.c 
	                          perfmon.c 
	linux/arch/ia64/sn/include: Tag: MaltaRef_2_6 ioerror.h tio.h 
	linux/arch/ia64/sn/include/pci: Tag: MaltaRef_2_6 
	                                pcibr_provider.h pic.h tiocp.h 
	linux/arch/ia64/sn/include/xtalk: Tag: MaltaRef_2_6 hubdev.h 
	                                  xbow.h xwidgetdev.h 
	linux/arch/ia64/sn/kernel: Tag: MaltaRef_2_6 bte_error.c 
	                           huberror.c io_init.c iomv.c 
	                           klconflib.c tiocx.c xp_main.c 
	                           xp_nofault.S xpc.h xpc_channel.c 
	                           xpc_main.c xpc_partition.c xpnet.c 
	linux/arch/ia64/sn/kernel/sn2: Tag: MaltaRef_2_6 sn_hwperf.c 
	linux/arch/ia64/sn/pci: Tag: MaltaRef_2_6 Makefile pci_dma.c 
	                        tioca_provider.c 
	linux/arch/ia64/sn/pci/pcibr: Tag: MaltaRef_2_6 Makefile 
	                              pcibr_ate.c pcibr_dma.c 
	                              pcibr_provider.c pcibr_reg.c 
	linux/arch/m32r: Tag: MaltaRef_2_6 Kconfig Kconfig.debug 
	                 Makefile defconfig 
	linux/arch/m32r/boot: Tag: MaltaRef_2_6 Makefile setup.S 
	linux/arch/m32r/boot/compressed: Tag: MaltaRef_2_6 Makefile 
	                                 boot.h head.S install.sh 
	                                 m32r_sio.c misc.c vmlinux.lds.S 
	                                 vmlinux.scr 
	linux/arch/m32r/kernel: Tag: MaltaRef_2_6 Makefile align.c 
	                        entry.S head.S init_task.c io_m32700ut.c 
	                        io_mappi.c io_mappi2.c io_oaks32r.c 
	                        io_opsput.c io_usrv.c irq.c m32r_ksyms.c 
	                        module.c process.c ptrace.c semaphore.c 
	                        setup.c setup_m32700ut.c setup_mappi.c 
	                        setup_mappi2.c setup_oaks32r.c 
	                        setup_opsput.c setup_usrv.c signal.c 
	                        smp.c smpboot.c sys_m32r.c time.c 
	                        traps.c vmlinux.lds.S 
	linux/arch/m32r/lib: Tag: MaltaRef_2_6 Makefile ashxdi3.S 
	                     checksum.S csum_partial_copy.c delay.c 
	                     getuser.S memcpy.S memset.S putuser.S 
	                     strlen.S usercopy.c 
	linux/arch/m32r/m32700ut: Tag: MaltaRef_2_6 
	                          defconfig.m32700ut.smp 
	                          defconfig.m32700ut.up 
	                          dot.gdbinit_200MHz_16MB 
	                          dot.gdbinit_300MHz_32MB 
	                          dot.gdbinit_400MHz_32MB 
	linux/arch/m32r/mappi: Tag: MaltaRef_2_6 defconfig.nommu 
	                       defconfig.smp defconfig.up dot.gdbinit 
	                       dot.gdbinit.nommu dot.gdbinit.smp 
	linux/arch/m32r/mappi2: Tag: MaltaRef_2_6 defconfig.vdec2 
	                        dot.gdbinit.vdec2 
	linux/arch/m32r/mm: Tag: MaltaRef_2_6 Makefile cache.c 
	                    discontig.c extable.c fault-nommu.c fault.c 
	                    init.c ioremap-nommu.c ioremap.c mmu.S 
	                    page.S 
	linux/arch/m32r/oaks32r: Tag: MaltaRef_2_6 defconfig.nommu 
	                         dot.gdbinit.nommu 
	linux/arch/m32r/oprofile: Tag: MaltaRef_2_6 Kconfig Makefile 
	                          init.c 
	linux/arch/m32r/opsput: Tag: MaltaRef_2_6 defconfig.opsput 
	                        dot.gdbinit 
	linux/arch/m68k/configs: Tag: MaltaRef_2_6 amiga_defconfig 
	                         apollo_defconfig atari_defconfig 
	                         bvme6000_defconfig hp300_defconfig 
	                         mac_defconfig mvme147_defconfig 
	                         mvme16x_defconfig q40_defconfig 
	                         sun3_defconfig sun3x_defconfig 
	linux/arch/m68knommu/lib: Tag: MaltaRef_2_6 delay.c 
	linux/arch/m68knommu/platform/527x: Tag: MaltaRef_2_6 Makefile 
	                                    config.c 
	linux/arch/m68knommu/platform/528x: Tag: MaltaRef_2_6 Makefile 
	                                    config.c 
	linux/arch/m68knommu/platform/5307: Tag: MaltaRef_2_6 head.S 
	                                    pit.c 
	linux/arch/m68knommu/platform/68328: Tag: MaltaRef_2_6 
	                                     head-pilot.S head-ram.S 
	                                     head-rom.S 
	linux/arch/mips/au1000/common: Tag: MaltaRef_2_6 platform.c 
	linux/arch/mips/au1000/pb1200: Tag: MaltaRef_2_6 Makefile 
	                               board_setup.c init.c irqmap.c 
	linux/arch/mips/configs: Tag: MaltaRef_2_6 db1550_defconfig 
	                         ocelot_3_defconfig 
	linux/arch/mips/ddb5xxx: Tag: MaltaRef_2_6 Kconfig 
	linux/arch/mips/gt64120/ev64120: Tag: MaltaRef_2_6 Kconfig 
	linux/arch/mips/ite-boards: Tag: MaltaRef_2_6 Kconfig 
	linux/arch/mips/jazz: Tag: MaltaRef_2_6 Kconfig 
	linux/arch/mips/kernel: Tag: MaltaRef_2_6 dma-no-isa.c 
	                        irix5sys.S irq-rm9000.c signal-common.h 
	linux/arch/mips/lasat: Tag: MaltaRef_2_6 Kconfig 
	linux/arch/mips/lib: Tag: MaltaRef_2_6 uncached.c 
	linux/arch/mips/mm: Tag: MaltaRef_2_6 dma-ip32.c tlbex-fault.S 
	                    tlbex.c 
	linux/arch/mips/momentum: Tag: MaltaRef_2_6 Kconfig 
	linux/arch/mips/momentum/ocelot_3: Tag: MaltaRef_2_6 Makefile 
	                                   int-handler.S irq.c 
	                                   ocelot_3_fpga.h prom.c 
	                                   reset.c setup.c 
	linux/arch/mips/oprofile: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                          Makefile common.c op_impl.h 
	                          op_model_rm9000.c 
	linux/arch/mips/pci: Tag: MaltaRef_2_6 fixup-ocelot3.c 
	                     fixup-sb1250.c fixup-vr4133.c 
	linux/arch/mips/pmc-sierra: Tag: MaltaRef_2_6 Kconfig 
	linux/arch/mips/sgi-ip27: Tag: MaltaRef_2_6 Kconfig ip27-dbgio.c 
	linux/arch/mips/sgi-ip32: Tag: MaltaRef_2_6 ip32-memory.c 
	linux/arch/mips/sibyte: Tag: MaltaRef_2_6 Kconfig 
	linux/arch/mips/tx4927: Tag: MaltaRef_2_6 Kconfig 
	linux/arch/mips/vr41xx: Tag: MaltaRef_2_6 Kconfig 
	linux/arch/mips/vr41xx/common: Tag: MaltaRef_2_6 irq.c 
	linux/arch/mips/vr41xx/nec-cmbvr4133: Tag: MaltaRef_2_6 Makefile 
	                                      init.c irq.c m1535plus.c 
	                                      setup.c 
	linux/arch/parisc: Tag: MaltaRef_2_6 install.sh 
	linux/arch/parisc/kernel: Tag: MaltaRef_2_6 topology.c 
	linux/arch/parisc/lib: Tag: MaltaRef_2_6 fixup.S iomap.c 
	                       memcpy.c 
	linux/arch/ppc/boot/include: Tag: MaltaRef_2_6 mpsc_defs.h 
	                             serial.h 
	linux/arch/ppc/boot/simple: Tag: MaltaRef_2_6 chrpmap.c 
	                            misc-chestnut.c misc-cpci690.c 
	                            misc-ev64260.c misc-katana.c 
	                            misc-mv64x60.c misc-radstone_ppc7d.c 
	                            mv64x60_tty.c openbios.c pibs.c 
	                            prepmap.c 
	linux/arch/ppc/configs: Tag: MaltaRef_2_6 chestnut_defconfig 
	                        cpci690_defconfig hdpu_defconfig 
	                        katana_defconfig luan_defconfig 
	                        mpc834x_sys_defconfig 
	                        mpc8540_ads_defconfig 
	                        mpc8555_cds_defconfig 
	                        mpc8560_ads_defconfig 
	                        radstone_ppc7d_defconfig 
	                        stx_gp3_defconfig 
	linux/arch/ppc/kernel: Tag: MaltaRef_2_6 fpu.S head_booke.h 
	                       head_fsl_booke.S perfmon.c 
	                       perfmon_fsl_booke.c swsusp.S 
	linux/arch/ppc/oprofile: Tag: MaltaRef_2_6 common.c op_impl.h 
	                         op_model_fsl_booke.c 
	linux/arch/ppc/platforms: Tag: MaltaRef_2_6 chestnut.c 
	                          chestnut.h chrp_pegasos_eth.c 
	                          cpci690.c cpci690.h ev64260.c hdpu.c 
	                          hdpu.h katana.c katana.h lopec.c 
	                          lopec.h mvme5100.c pmac_cache.S 
	                          pq2ads.c radstone_ppc7d.c 
	                          radstone_ppc7d.h 
	linux/arch/ppc/platforms/4xx: Tag: MaltaRef_2_6 ibm440sp.c 
	                              ibm440sp.h luan.c luan.h 
	                              virtex-ii_pro.c virtex-ii_pro.h 
	                              xilinx_ml300.c xilinx_ml300.h 
	linux/arch/ppc/platforms/4xx/xparameters: Tag: MaltaRef_2_6 
	                                          xparameters_ml300.h 
	linux/arch/ppc/platforms/83xx: Tag: MaltaRef_2_6 Makefile 
	                               mpc834x_sys.c mpc834x_sys.h 
	linux/arch/ppc/platforms/85xx: Tag: MaltaRef_2_6 stx_gp3.c 
	                               stx_gp3.h 
	linux/arch/ppc/syslib: Tag: MaltaRef_2_6 gen550.h 
	                       ibm440sp_common.c ibm440sp_common.h 
	                       ipic.c ipic.h m82xx_pci.c m82xx_pci.h 
	                       m8xx_wdt.c m8xx_wdt.h mpc52xx_devices.c 
	                       mpc52xx_pci.c mpc52xx_pci.h mpc52xx_sys.c 
	                       mpc83xx_devices.c mpc83xx_sys.c 
	                       mpc85xx_devices.c mpc85xx_sys.c 
	                       mv64360_pic.c mv64x60.c mv64x60_dbg.c 
	                       mv64x60_win.c ppc403_pic.c 
	                       ppc83xx_setup.c ppc83xx_setup.h ppc_sys.c 
	                       xilinx_pic.c 
	linux/arch/ppc64/configs: Tag: MaltaRef_2_6 maple_defconfig 
	linux/arch/ppc64/kernel: Tag: MaltaRef_2_6 iSeries_smp.c iomap.c 
	                         kprobes.c maple_pci.c maple_setup.c 
	                         maple_time.c mpic.c mpic.h 
	                         pSeries_reconfig.c pSeries_setup.c 
	                         pSeries_smp.c pci_direct_iommu.c pmc.c 
	                         prom_init.c u3_iommu.c vdso.c 
	linux/arch/ppc64/kernel/vdso32: Tag: MaltaRef_2_6 Makefile 
	                                cacheflush.S datapage.S 
	                                gettimeofday.S note.S sigtramp.S 
	                                vdso32.lds.S vdso32_wrapper.S 
	linux/arch/ppc64/kernel/vdso64: Tag: MaltaRef_2_6 Makefile 
	                                cacheflush.S datapage.S 
	                                gettimeofday.S note.S sigtramp.S 
	                                vdso64.lds.S vdso64_wrapper.S 
	linux/arch/ppc64/lib: Tag: MaltaRef_2_6 sstep.c 
	linux/arch/ppc64/mm: Tag: MaltaRef_2_6 hash_native.c mmap.c 
	linux/arch/ppc64/xmon: Tag: MaltaRef_2_6 setjmp.S 
	linux/arch/s390/kernel: Tag: MaltaRef_2_6 irq.c 
	linux/arch/s390/mm: Tag: MaltaRef_2_6 mmap.c 
	linux/arch/sh/boards/hp6xx/hp620: Tag: MaltaRef_2_6 setup.c 
	linux/arch/sh/boards/renesas/edosk7705: Tag: MaltaRef_2_6 
	                                        Makefile io.c setup.c 
	linux/arch/sh/boards/se/73180: Tag: MaltaRef_2_6 Makefile io.c 
	                               irq.c led.c setup.c 
	linux/arch/sh/boards/sh03: Tag: MaltaRef_2_6 Makefile led.c 
	                           rtc.c setup.c 
	linux/arch/sh/boards/superh/microdev: Tag: MaltaRef_2_6 Makefile 
	                                      io.c irq.c led.c setup.c 
	linux/arch/sh/configs: Tag: MaltaRef_2_6 microdev_defconfig 
	                       se73180_defconfig se7705_defconfig 
	                       se7750_defconfig sh03_defconfig 
	linux/arch/sh/drivers/pci: Tag: MaltaRef_2_6 fixups-sh03.c 
	                           ops-sh03.c 
	linux/arch/sh/kernel: Tag: MaltaRef_2_6 asm-offsets.c 
	linux/arch/sh/kernel/cpu/sh2: Tag: MaltaRef_2_6 probe.c 
	linux/arch/sh/kernel/cpu/sh3: Tag: MaltaRef_2_6 probe.c 
	linux/arch/sh/kernel/cpu/sh4: Tag: MaltaRef_2_6 probe.c 
	linux/arch/sh/lib: Tag: MaltaRef_2_6 memcpy-sh4.S 
	linux/arch/sh/mm: Tag: MaltaRef_2_6 cache-sh7705.c pg-sh7705.c 
	linux/arch/sh/oprofile: Tag: MaltaRef_2_6 op_model_sh7750.c 
	linux/arch/sh/tools: Tag: MaltaRef_2_6 gen-mach-types 
	linux/arch/sh64/kernel: Tag: MaltaRef_2_6 module.c 
	linux/arch/sh64/lib: Tag: MaltaRef_2_6 iomap.c 
	linux/arch/sh64/mach-cayman: Tag: MaltaRef_2_6 iomap.c 
	linux/arch/sparc64/kernel: Tag: MaltaRef_2_6 kprobes.c 
	linux/arch/sparc64/lib: Tag: MaltaRef_2_6 bzero.S csum_copy.S 
	                        csum_copy_from_user.S 
	                        csum_copy_to_user.S delay.c iomap.c 
	                        rwsem.S 
	linux/arch/sparc64/prom: Tag: MaltaRef_2_6 cif.S 
	linux/arch/um  : Tag: MaltaRef_2_6 Kconfig_i386 Kconfig_x86_64 
	                 Makefile-x86_64 
	linux/arch/um/drivers: Tag: MaltaRef_2_6 cow.h cow_sys.h 
	                       cow_user.c random.c stderr_console.c 
	linux/arch/um/include: Tag: MaltaRef_2_6 common-offsets.h 
	                       elf_user.h irq_kern.h mem_kern.h 
	                       registers.h 
	linux/arch/um/include/sysdep-i386: Tag: MaltaRef_2_6 faultinfo.h 
	                                   signal.h skas_ptrace.h 
	linux/arch/um/include/sysdep-ia64: Tag: MaltaRef_2_6 
	                                   skas_ptrace.h 
	linux/arch/um/include/sysdep-ppc: Tag: MaltaRef_2_6 
	                                  skas_ptrace.h 
	linux/arch/um/include/sysdep-x86_64: Tag: MaltaRef_2_6 
	                                     checksum.h faultinfo.h 
	                                     ptrace.h ptrace_user.h 
	                                     sigcontext.h signal.h 
	                                     skas_ptrace.h syscalls.h 
	linux/arch/um/kernel: Tag: MaltaRef_2_6 dyn.lds.S initrd.c 
	                      main.c physmem.c uml.lds.S 
	linux/arch/um/kernel/skas: Tag: MaltaRef_2_6 uaccess.c 
	linux/arch/um/kernel/skas/include: Tag: MaltaRef_2_6 mmu-skas.h 
	                                   mode-skas.h mode_kern-skas.h 
	                                   uaccess-skas.h 
	linux/arch/um/kernel/skas/util: Tag: MaltaRef_2_6 
	                                mk_ptregs-i386.c 
	                                mk_ptregs-x86_64.c 
	linux/arch/um/kernel/tt: Tag: MaltaRef_2_6 uaccess.c 
	linux/arch/um/kernel/tt/include: Tag: MaltaRef_2_6 mmu-tt.h 
	                                 mode-tt.h mode_kern-tt.h 
	                                 uaccess-tt.h 
	linux/arch/um/os-Linux: Tag: MaltaRef_2_6 elf_aux.c signal.c 
	                        time.c user_syms.c 
	linux/arch/um/os-Linux/sys-i386: Tag: MaltaRef_2_6 Makefile 
	                                 registers.c 
	linux/arch/um/os-Linux/sys-x86_64: Tag: MaltaRef_2_6 Makefile 
	                                   registers.c 
	linux/arch/um/os-Linux/util: Tag: MaltaRef_2_6 Makefile 
	                             mk_user_constants.c 
	linux/arch/um/scripts: Tag: MaltaRef_2_6 Makefile.rules 
	linux/arch/um/sys-i386: Tag: MaltaRef_2_6 delay.c 
	                        kernel-offsets.c signal.c 
	                        sys_call_table.S user-offsets.c 
	linux/arch/um/sys-i386/util: Tag: MaltaRef_2_6 mk_thread.c 
	linux/arch/um/sys-x86_64: Tag: MaltaRef_2_6 Makefile bugs.c 
	                          delay.c fault.c kernel-offsets.c 
	                          ksyms.c mem.c ptrace.c ptrace_user.c 
	                          sigcontext.c signal.c syscall_table.c 
	                          syscalls.c sysrq.c um_module.c 
	                          user-offsets.c 
	linux/arch/um/sys-x86_64/util: Tag: MaltaRef_2_6 Makefile 
	                               mk_sc.c mk_thread.c 
	linux/arch/um/util: Tag: MaltaRef_2_6 mk_constants.c mk_task.c 
	linux/arch/x86_64/kernel: Tag: MaltaRef_2_6 genapic.c 
	                          genapic_cluster.c genapic_flat.c 
	                          kprobes.c mce_intel.c pmtimer.c 
	linux/arch/x86_64/lib: Tag: MaltaRef_2_6 bitops.c 
	linux/arch/x86_64/mm: Tag: MaltaRef_2_6 srat.c 
	linux/arch/x86_64/pci: Tag: MaltaRef_2_6 Makefile-BUS k8-bus.c 
	linux/crypto   : Tag: MaltaRef_2_6 anubis.c tgr192.c wp512.c 
	linux/drivers/acpi: Tag: MaltaRef_2_6 acpi_memhotplug.c 
	                    container.c ibm_acpi.c processor_core.c 
	                    processor_idle.c processor_perflib.c 
	                    processor_thermal.c processor_throttling.c 
	                    video.c 
	linux/drivers/acpi/sleep: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/base: Tag: MaltaRef_2_6 attribute_container.c 
	                    transport_class.c 
	linux/drivers/block: Tag: MaltaRef_2_6 pktcdvd.c 
	linux/drivers/block/aoe: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                         aoe.h aoeblk.c aoechr.c aoecmd.c 
	                         aoedev.c aoemain.c aoenet.c 
	linux/drivers/bluetooth: Tag: MaltaRef_2_6 bpa10x.c 
	linux/drivers/char: Tag: MaltaRef_2_6 ds1302.c mbcs.c mbcs.h 
	                    mmtimer.c mxser.h s3c2410-rtc.c snsc_event.c 
	linux/drivers/char/agp: Tag: MaltaRef_2_6 sgi-agp.c 
	linux/drivers/char/drm: Tag: MaltaRef_2_6 ati_pcigart.c 
	                        drm_agpsupport.c drm_auth.c drm_bufs.c 
	                        drm_context.c drm_core.h drm_dma.c 
	                        drm_drawable.c drm_drv.c drm_fops.c 
	                        drm_init.c drm_ioctl.c drm_irq.c 
	                        drm_lock.c drm_memory.c drm_pci.c 
	                        drm_proc.c drm_scatter.c drm_stub.c 
	                        drm_sysfs.c drm_vm.c i915_dma.c 
	                        i915_drm.h i915_drv.c i915_drv.h 
	                        i915_irq.c i915_mem.c tdfx_drv.h 
	linux/drivers/char/ipmi: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/char/tpm: Tag: MaltaRef_2_6 Kconfig Makefile tpm.c 
	                        tpm.h tpm_atmel.c tpm_nsc.c 
	linux/drivers/char/watchdog: Tag: MaltaRef_2_6 mpc8xx_wdt.c 
	                             s3c2410_wdt.c 
	linux/drivers/cpufreq: Tag: MaltaRef_2_6 .cvsignore 
	                       cpufreq_conservative.c cpufreq_ondemand.c 
	                       cpufreq_stats.c 
	linux/drivers/crypto: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                      Makefile padlock-aes.c padlock-generic.c 
	                      padlock.h 
	linux/drivers/dio: Tag: MaltaRef_2_6 dio-driver.c dio-sysfs.c 
	linux/drivers/i2c/algos: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/i2c/busses: Tag: MaltaRef_2_6 .cvsignore 
	                          i2c-amd756-s4882.c i2c-au1550.c 
	                          i2c-au1550.h i2c-mv64xxx.c 
	                          i2c-s3c2410.c i2c-stub.c 
	linux/drivers/i2c/chips: Tag: MaltaRef_2_6 .cvsignore adm1026.c 
	                         ds1337.c fscpos.c gl520sm.c 
	                         isp1301_omap.c lm63.c lm87.c lm92.c 
	                         m41t00.c pc87360.c sis5595.c 
	                         smsc47b397.c 
	linux/drivers/ide/arm: Tag: MaltaRef_2_6 bast-ide.c 
	linux/drivers/ide/cris: Tag: MaltaRef_2_6 Makefile ide-v10.c 
	linux/drivers/infiniband: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                          Makefile 
	linux/drivers/infiniband/core: Tag: MaltaRef_2_6 .cvsignore 
	                               Makefile agent.c agent.h 
	                               agent_priv.h cache.c core_priv.h 
	                               device.c fmr_pool.c mad.c 
	                               mad_priv.h packer.c sa_query.c 
	                               smi.c smi.h sysfs.c ud_header.c 
	                               user_mad.c verbs.c 
	linux/drivers/infiniband/hw/mthca: Tag: MaltaRef_2_6 .cvsignore 
	                                   Kconfig Makefile 
	                                   mthca_allocator.c mthca_av.c 
	                                   mthca_cmd.c mthca_cmd.h 
	                                   mthca_config_reg.h mthca_cq.c 
	                                   mthca_dev.h mthca_doorbell.h 
	                                   mthca_eq.c mthca_mad.c 
	                                   mthca_main.c mthca_mcg.c 
	                                   mthca_memfree.c 
	                                   mthca_memfree.h mthca_mr.c 
	                                   mthca_pd.c mthca_profile.c 
	                                   mthca_profile.h 
	                                   mthca_provider.c 
	                                   mthca_provider.h mthca_qp.c 
	                                   mthca_reset.c mthca_uar.c 
	linux/drivers/infiniband/include: Tag: MaltaRef_2_6 ib_cache.h 
	                                  ib_fmr_pool.h ib_mad.h 
	                                  ib_pack.h ib_sa.h ib_smi.h 
	                                  ib_user_mad.h ib_verbs.h 
	linux/drivers/infiniband/ulp/ipoib: Tag: MaltaRef_2_6 .cvsignore 
	                                    Kconfig Makefile ipoib.h 
	                                    ipoib_fs.c ipoib_ib.c 
	                                    ipoib_main.c 
	                                    ipoib_multicast.c 
	                                    ipoib_verbs.c ipoib_vlan.c 
	linux/drivers/input/joystick/iforce: Tag: MaltaRef_2_6 
	                                     .cvsignore 
	linux/drivers/input/keyboard: Tag: MaltaRef_2_6 corgikbd.c 
	                              hil_kbd.c hilkbd.c locomokbd.c 
	linux/drivers/input/misc: Tag: MaltaRef_2_6 .cvsignore 
	                          hp_sdc_rtc.c 
	linux/drivers/input/mouse: Tag: MaltaRef_2_6 alps.c alps.h 
	                           hil_ptr.c 
	linux/drivers/input/serio: Tag: MaltaRef_2_6 hil_mlc.c hp_sdc.c 
	                           hp_sdc_mlc.c i8042-x86ia64io.h 
	                           libps2.c serio_raw.c 
	linux/drivers/input/touchscreen: Tag: MaltaRef_2_6 .cvsignore 
	                                 corgi_ts.c elo.c 
	                                 hp680_ts_input.c mk712.c 
	                                 mtouch.c 
	linux/drivers/isdn/hardware/eicon: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/isdn/hisax: Tag: MaltaRef_2_6 hfc4s8s_l1.c 
	                          hfc4s8s_l1.h hfc_usb.h 
	linux/drivers/macintosh: Tag: MaltaRef_2_6 smu.c 
	linux/drivers/md: Tag: MaltaRef_2_6 dm-bio-record.h dm-emc.c 
	                  dm-hw-handler.c dm-hw-handler.h dm-mpath.c 
	                  dm-mpath.h dm-path-selector.c 
	                  dm-path-selector.h dm-round-robin.c faulty.c 
	                  raid10.c raid6altivec.uc 
	linux/drivers/media/dvb/b2c2: Tag: MaltaRef_2_6 flexcop-common.h 
	                              flexcop-dma.c flexcop-eeprom.c 
	                              flexcop-fe-tuner.c 
	                              flexcop-hw-filter.c flexcop-i2c.c 
	                              flexcop-misc.c flexcop-pci.c 
	                              flexcop-reg.h flexcop-sram.c 
	                              flexcop-usb.c flexcop-usb.h 
	                              flexcop.c flexcop.h 
	linux/drivers/media/dvb/bt8xx: Tag: MaltaRef_2_6 dst.c dst_ca.c 
	                               dst_ca.h dst_common.h dst_priv.h 
	linux/drivers/media/dvb/cinergyT2: Tag: MaltaRef_2_6 .cvsignore 
	                                   Kconfig Makefile cinergyT2.c 
	linux/drivers/media/dvb/dibusb: Tag: MaltaRef_2_6 .cvsignore 
	                                Kconfig Makefile 
	                                dvb-dibusb-core.c 
	                                dvb-dibusb-dvb.c 
	                                dvb-dibusb-fe-i2c.c 
	                                dvb-dibusb-firmware.c 
	                                dvb-dibusb-remote.c 
	                                dvb-dibusb-usb.c dvb-dibusb.h 
	                                dvb-fe-dtt200u.c 
	linux/drivers/media/dvb/frontends: Tag: MaltaRef_2_6 at76c651.h 
	                                   cx22700.c cx22700.h cx22702.c 
	                                   cx22702.h cx24110.h 
	                                   dib3000-common.c 
	                                   dib3000-common.h dib3000.h 
	                                   dib3000mb.c dib3000mb_priv.h 
	                                   dib3000mc.c dib3000mc_priv.h 
	                                   dvb-pll.c dvb-pll.h 
	                                   dvb_dummy_fe.h l64781.c 
	                                   l64781.h mt312_priv.h mt352.c 
	                                   mt352.h mt352_priv.h 
	                                   nxt2002.c nxt2002.h 
	                                   nxt6000_priv.h or51132.c 
	                                   or51132.h or51211.c or51211.h 
	                                   sp8870.c sp8870.h sp887x.h 
	                                   stv0297.c stv0297.h stv0299.h 
	                                   tda10021.c tda10021.h 
	                                   tda1004x.h tda8083.c 
	                                   tda8083.h tda80xx.c tda80xx.h 
	                                   ves1820.h ves1x93.h 
	linux/drivers/media/dvb/ttusb-dec: Tag: MaltaRef_2_6 
	                                   ttusbdecfe.c ttusbdecfe.h 
	linux/drivers/media/video: Tag: MaltaRef_2_6 arv.c mt20xx.c 
	                           tda8290.c tuner-core.c tuner-simple.c 
	                           tveeprom.c video-buf-dvb.c 
	linux/drivers/media/video/cx88: Tag: MaltaRef_2_6 .cvsignore 
	                                cx88-blackbird.c cx88-dvb.c 
	                                cx88-input.c cx88-mpeg.c 
	linux/drivers/media/video/ovcamchip: Tag: MaltaRef_2_6 
	                                     .cvsignore 
	linux/drivers/media/video/saa7134: Tag: MaltaRef_2_6 .cvsignore 
	                                   saa7134-dvb.c 
	                                   saa7134-empress.c 
	linux/drivers/message/i2o: Tag: MaltaRef_2_6 debug.c device.c 
	                           driver.c exec-osm.c i2o_block.h iop.c 
	                           pci.c 
	linux/drivers/misc/hdpuftrs: Tag: MaltaRef_2_6 Makefile 
	                             hdpu_cpustate.c hdpu_nexus.c 
	linux/drivers/misc/ibmasm: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/mmc: Tag: MaltaRef_2_6 .cvsignore wbsd.c wbsd.h 
	linux/drivers/mtd/chips: Tag: MaltaRef_2_6 fwh_lock.h 
	linux/drivers/mtd/devices: Tag: MaltaRef_2_6 block2mtd.c 
	linux/drivers/mtd/maps: Tag: MaltaRef_2_6 alchemy-flash.c 
	                        bast-flash.c ipaq-flash.c ixp2000.c 
	                        ocotea.c sharpsl-flash.c ts5500_flash.c 
	                        walnut.c 
	linux/drivers/mtd/nand: Tag: MaltaRef_2_6 h1910.c nandsim.c 
	                        rtc_from4.c s3c2410.c sharpsl.c 
	linux/drivers/net: Tag: MaltaRef_2_6 bnx2.c bnx2.h bnx2_fw.h 
	linux/drivers/net/arcnet: Tag: MaltaRef_2_6 capmode.c 
	linux/drivers/net/cris: Tag: MaltaRef_2_6 Makefile eth_v10.c 
	linux/drivers/net/ixgb: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/net/sk98lin: Tag: MaltaRef_2_6 skethtool.c 
	linux/drivers/net/wireless: Tag: MaltaRef_2_6 atmel.h 
	linux/drivers/net/wireless/prism54: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/oprofile: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/parisc: Tag: MaltaRef_2_6 pdc_stable.c 
	linux/drivers/parport: Tag: MaltaRef_2_6 parport_gsc.h 
	linux/drivers/pci: Tag: MaltaRef_2_6 pci-acpi.c rom.c 
	linux/drivers/pci/pcie: Tag: MaltaRef_2_6 Kconfig Makefile 
	                        portdrv.h portdrv_bus.c portdrv_core.c 
	                        portdrv_pci.c 
	linux/drivers/pcmcia: Tag: MaltaRef_2_6 m32r_cfc.c m32r_cfc.h 
	                      m32r_pcc.c m32r_pcc.h pcmcia_compat.c 
	                      pxa2xx_sharpsl.c rsrc_nonstatic.c 
	linux/drivers/pnp/isapnp: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/pnp/pnpacpi: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                           Makefile core.c pnpacpi.h rsparser.c 
	linux/drivers/s390/char: Tag: MaltaRef_2_6 monreader.c 
	                         sclp_quiesce.c vmlogrdr.c vmwatchdog.c 
	linux/drivers/s390/net: Tag: MaltaRef_2_6 claw.c claw.h 
	                        ctcmain.h qeth_eddp.c qeth_eddp.h 
	                        qeth_tso.h 
	linux/drivers/scsi: Tag: MaltaRef_2_6 a100u2w.c a100u2w.h ahci.c 
	                    gdth_kcompat.h initio.c initio.h ql1040_fw.h 
	                    sata_qstor.c sata_uli.c 
	                    scsi_transport_iscsi.c 
	linux/drivers/scsi/aacraid: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/scsi/aic7xxx: Tag: MaltaRef_2_6 aic79xx_pci.h 
	                            aic7xxx_pci.h 
	linux/drivers/scsi/ibmvscsi: Tag: MaltaRef_2_6 Makefile 
	                             ibmvscsi.c ibmvscsi.h 
	                             iseries_vscsi.c rpa_vscsi.c srp.h 
	                             viosrp.h 
	linux/drivers/scsi/lpfc: Tag: MaltaRef_2_6 Makefile lpfc.h 
	                         lpfc_attr.c lpfc_compat.h lpfc_crtn.h 
	                         lpfc_ct.c lpfc_disc.h lpfc_els.c 
	                         lpfc_hbadisc.c lpfc_hw.h lpfc_init.c 
	                         lpfc_logmsg.h lpfc_mbox.c lpfc_mem.c 
	                         lpfc_nportdisc.c lpfc_scsi.c 
	                         lpfc_scsi.h lpfc_sli.c lpfc_sli.h 
	                         lpfc_version.h 
	linux/drivers/scsi/megaraid: Tag: MaltaRef_2_6 .cvsignore 
	                             Kconfig.megaraid Makefile 
	                             mbox_defs.h mega_common.h 
	                             megaraid_ioctl.h megaraid_mbox.c 
	                             megaraid_mbox.h megaraid_mm.c 
	                             megaraid_mm.h 
	linux/drivers/scsi/qla2xxx: Tag: MaltaRef_2_6 qla_attr.c 
	linux/drivers/serial: Tag: MaltaRef_2_6 8250_early.c 
	                      8250_hp300.c crisv10.c crisv10.h imx.c 
	                      ioc4_serial.c m32r_sio.c m32r_sio.h 
	                      m32r_sio_reg.h mpsc.c mpsc.h serial_txx9.c 
	linux/drivers/serial/jsm: Tag: MaltaRef_2_6 Makefile jsm.h 
	                          jsm_driver.c jsm_neo.c jsm_tty.c 
	linux/drivers/sh: Tag: MaltaRef_2_6 Makefile 
	linux/drivers/sh/superhyway: Tag: MaltaRef_2_6 Makefile 
	                             superhyway-sysfs.c superhyway.c 
	linux/drivers/sn: Tag: MaltaRef_2_6 Makefile ioc4.c 
	linux/drivers/usb/atm: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                       Makefile speedtch.c usb_atm.c usb_atm.h 
	linux/drivers/usb/core: Tag: MaltaRef_2_6 otg_whitelist.h 
	linux/drivers/usb/gadget: Tag: MaltaRef_2_6 lh7a40x_udc.c 
	                          lh7a40x_udc.h omap_udc.c omap_udc.h 
	linux/drivers/usb/host: Tag: MaltaRef_2_6 hc_crisv10.c 
	                        hc_crisv10.h ohci-au1xxx.c 
	                        ohci-ppc-soc.c ohci-pxa27x.c sl811-hcd.c 
	                        sl811.h sl811_cs.c uhci-q.c 
	linux/drivers/usb/media: Tag: MaltaRef_2_6 sn9c102_hv7131d.c 
	                         sn9c102_mi0343.c 
	linux/drivers/usb/media/pwc: Tag: MaltaRef_2_6 Makefile 
	                             philips.txt pwc-ctrl.c pwc-if.c 
	                             pwc-ioctl.h pwc-kiara.c pwc-kiara.h 
	                             pwc-misc.c pwc-nala.h pwc-timon.c 
	                             pwc-timon.h pwc-uncompress.c 
	                             pwc-uncompress.h pwc.h 
	linux/drivers/usb/misc: Tag: MaltaRef_2_6 idmouse.c phidgetkit.c 
	linux/drivers/usb/misc/sisusbvga: Tag: MaltaRef_2_6 .cvsignore 
	                                  Kconfig Makefile sisusb.c 
	                                  sisusb.h 
	linux/drivers/usb/mon: Tag: MaltaRef_2_6 .cvsignore Kconfig 
	                       Makefile mon_main.c mon_stat.c mon_text.c 
	                       usb_mon.h 
	linux/drivers/usb/net: Tag: MaltaRef_2_6 zd1201.c zd1201.h 
	linux/drivers/usb/serial: Tag: MaltaRef_2_6 airprime.c cp2101.c 
	                          cypress_m8.c cypress_m8.h garmin_gps.c 
	                          hp4x.c ipw.c option.c ti_fw_3410.h 
	                          ti_fw_5052.h ti_usb_3410_5052.c 
	                          ti_usb_3410_5052.h 
	linux/drivers/video: Tag: MaltaRef_2_6 imxfb.c imxfb.h 
	                     s1d13xxxfb.c smivgxfb.c smivgxfb.h w100fb.c 
	                     w100fb.h 
	linux/drivers/video/backlight: Tag: MaltaRef_2_6 .cvsignore 
	                               Kconfig Makefile backlight.c 
	                               corgi_bl.c lcd.c 
	linux/drivers/video/console: Tag: MaltaRef_2_6 bitblit.c 
	                             tileblit.c 
	linux/drivers/video/geode: Tag: MaltaRef_2_6 Kconfig Makefile 
	                           display_gx1.c display_gx1.h geodefb.h 
	                           gx1fb_core.c video_cs5530.c 
	                           video_cs5530.h 
	linux/drivers/video/i810: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/video/intelfb: Tag: MaltaRef_2_6 .cvsignore 
	                             Makefile intelfb.h intelfbdrv.c 
	                             intelfbhw.c intelfbhw.h 
	linux/drivers/video/kyro: Tag: MaltaRef_2_6 .cvsignore 
	linux/drivers/video/nvidia: Tag: MaltaRef_2_6 Makefile 
	                            nv_accel.c nv_dma.h nv_hw.c nv_i2c.c 
	                            nv_local.h nv_of.c nv_proto.h 
	                            nv_setup.c nv_type.h nvidia.c 
	linux/drivers/video/savage: Tag: MaltaRef_2_6 .cvsignore 
	                            Makefile savagefb-i2c.c savagefb.h 
	                            savagefb_accel.c savagefb_driver.c 
	linux/fs       : Tag: MaltaRef_2_6 binfmt_elf_fdpic.c 
	linux/fs/affs  : Tag: MaltaRef_2_6 affs.h 
	linux/fs/cifs  : Tag: MaltaRef_2_6 cifsencrypt.h ioctl.c 
	                 readdir.c 
	linux/fs/debugfs: Tag: MaltaRef_2_6 .cvsignore Makefile file.c 
	                  inode.c 
	linux/fs/ext3  : Tag: MaltaRef_2_6 resize.c 
	linux/fs/fat   : Tag: MaltaRef_2_6 fatent.c 
	linux/fs/hfs   : Tag: MaltaRef_2_6 attr.c 
	linux/fs/hfsplus: Tag: MaltaRef_2_6 .cvsignore 
	linux/fs/hostfs: Tag: MaltaRef_2_6 Makefile hostfs.h 
	                 hostfs_kern.c hostfs_user.c 
	linux/fs/hppfs : Tag: MaltaRef_2_6 Makefile hppfs_kern.c 
	linux/fs/hugetlbfs: Tag: MaltaRef_2_6 .cvsignore 
	linux/fs/isofs : Tag: MaltaRef_2_6 isofs.h 
	linux/fs/nfsd  : Tag: MaltaRef_2_6 nfs4callback.c 
	linux/fs/ntfs  : Tag: MaltaRef_2_6 aops.h runlist.c runlist.h 
	linux/fs/proc  : Tag: MaltaRef_2_6 internal.h mmu.c nommu.c 
	linux/fs/xfs   : Tag: MaltaRef_2_6 Kconfig 
	linux/fs/xfs/linux-2.6: Tag: MaltaRef_2_6 xfs_export.c 
	                        xfs_export.h 
	linux/include/acpi: Tag: MaltaRef_2_6 container.h 
	linux/include/asm-alpha: Tag: MaltaRef_2_6 cputime.h 
	                         io_trivial.h 
	linux/include/asm-arm: Tag: MaltaRef_2_6 cpu.h cputime.h rtc.h 
	linux/include/asm-arm/arch-cl7500: Tag: MaltaRef_2_6 
	                                   debug-macro.S entry-macro.S 
	linux/include/asm-arm/arch-clps711x: Tag: MaltaRef_2_6 
	                                     debug-macro.S entry-macro.S 
	linux/include/asm-arm/arch-ebsa110: Tag: MaltaRef_2_6 
	                                    debug-macro.S entry-macro.S 
	linux/include/asm-arm/arch-ebsa285: Tag: MaltaRef_2_6 
	                                    debug-macro.S entry-macro.S 
	linux/include/asm-arm/arch-epxa10db: Tag: MaltaRef_2_6 
	                                     debug-macro.S entry-macro.S 
	linux/include/asm-arm/arch-h720x: Tag: MaltaRef_2_6 boards.h 
	                                  debug-macro.S dma.h 
	                                  entry-macro.S h7201-regs.h 
	                                  h7202-regs.h hardware.h io.h 
	                                  irq.h irqs.h memory.h param.h 
	                                  system.h timex.h uncompress.h 
	                                  vmalloc.h 
	linux/include/asm-arm/arch-imx: Tag: MaltaRef_2_6 debug-macro.S 
	                                entry-macro.S imxfb.h 
	linux/include/asm-arm/arch-integrator: Tag: MaltaRef_2_6 
	                                       debug-macro.S 
	                                       entry-macro.S 
	linux/include/asm-arm/arch-iop3xx: Tag: MaltaRef_2_6 
	                                   debug-macro.S entry-macro.S 
	                                   iop331-irqs.h iop331.h 
	                                   iq31244.h iq80331.h iq80332.h 
	linux/include/asm-arm/arch-ixp2000: Tag: MaltaRef_2_6 
	                                    debug-macro.S dma.h 
	                                    enp2611.h entry-macro.S 
	                                    gpio.h hardware.h io.h irq.h 
	                                    irqs.h ixdp2x00.h ixdp2x01.h 
	                                    ixp2000-regs.h memory.h 
	                                    param.h platform.h system.h 
	                                    timex.h uncompress.h 
	                                    vmalloc.h 
	linux/include/asm-arm/arch-ixp4xx: Tag: MaltaRef_2_6 
	                                   debug-macro.S entry-macro.S 
	                                   gtwx5715.h 
	linux/include/asm-arm/arch-l7200: Tag: MaltaRef_2_6 
	                                  debug-macro.S entry-macro.S 
	linux/include/asm-arm/arch-lh7a40x: Tag: MaltaRef_2_6 
	                                    debug-macro.S entry-macro.S 
	linux/include/asm-arm/arch-omap: Tag: MaltaRef_2_6 aic23.h 
	                                 board-netstar.h 
	                                 board-voiceblue.h cpu.h 
	                                 debug-macro.S entry-macro.S 
	                                 omap16xx.h tc.h 
	linux/include/asm-arm/arch-pxa: Tag: MaltaRef_2_6 audio.h 
	                                corgi.h debug-macro.S 
	                                entry-macro.S mmc.h poodle.h 
	                                ssp.h 
	linux/include/asm-arm/arch-rpc: Tag: MaltaRef_2_6 debug-macro.S 
	                                entry-macro.S 
	linux/include/asm-arm/arch-s3c2410: Tag: MaltaRef_2_6 bast-pmu.h 
	                                    debug-macro.S entry-macro.S 
	                                    idle.h iic.h nand.h 
	                                    otom-map.h regs-adc.h 
	                                    regs-dsc.h regs-gpioj.h 
	                                    regs-iic.h regs-mem.h 
	                                    regs-nand.h regs-sdi.h 
	                                    regs-spi.h regs-udc.h 
	                                    usb-control.h 
	linux/include/asm-arm/arch-sa1100: Tag: MaltaRef_2_6 
	                                   debug-macro.S entry-macro.S 
	linux/include/asm-arm/arch-shark: Tag: MaltaRef_2_6 
	                                  debug-macro.S entry-macro.S 
	linux/include/asm-arm/arch-versatile: Tag: MaltaRef_2_6 
	                                      debug-macro.S 
	                                      entry-macro.S 
	linux/include/asm-arm/hardware: Tag: MaltaRef_2_6 
	                                entry-macro-iomd.S icst307.h 
	                                scoop.h 
	linux/include/asm-arm/mach: Tag: MaltaRef_2_6 irda.h 
	                            sharpsl_param.h 
	linux/include/asm-arm26: Tag: MaltaRef_2_6 cputime.h 
	                         dma-mapping.h 
	linux/include/asm-cris: Tag: MaltaRef_2_6 cputime.h 
	linux/include/asm-frv: Tag: MaltaRef_2_6 a.out.h atomic.h 
	                       ax88796.h bitops.h bug.h bugs.h 
	                       busctl-regs.h byteorder.h cache.h 
	                       cacheflush.h checksum.h cpu-irqs.h 
	                       cpumask.h cputime.h current.h delay.h 
	                       div64.h dm9000.h dma-mapping.h dma.h 
	                       elf.h errno.h fcntl.h fpu.h gdb-stub.h 
	                       gpio-regs.h hardirq.h highmem.h hw_irq.h 
	                       ide.h init.h io.h ioctl.h ioctls.h ipc.h 
	                       ipcbuf.h irc-regs.h irq-routing.h irq.h 
	                       kmap_types.h linkage.h local.h math-emu.h 
	                       mb-regs.h mb86943a.h mb93091-fpga-irqs.h 
	                       mb93093-fpga-irqs.h mb93493-irqs.h 
	                       mb93493-regs.h mem-layout.h mman.h mmu.h 
	                       mmu_context.h module.h msgbuf.h namei.h 
	                       page.h param.h pci.h percpu.h pgalloc.h 
	                       pgtable.h poll.h posix_types.h 
	                       processor.h ptrace.h registers.h 
	                       resource.h scatterlist.h sections.h 
	                       segment.h semaphore.h sembuf.h 
	                       serial-regs.h serial.h setup.h shmbuf.h 
	                       shmparam.h sigcontext.h siginfo.h 
	                       signal.h smp.h socket.h sockios.h 
	                       spinlock.h spr-regs.h stat.h statfs.h 
	                       string.h suspend.h system.h termbits.h 
	                       termios.h thread_info.h timer-regs.h 
	                       timex.h tlb.h tlbflush.h topology.h 
	                       types.h uaccess.h ucontext.h unaligned.h 
	                       unistd.h user.h virtconvert.h 
	linux/include/asm-generic: Tag: MaltaRef_2_6 4level-fixup.h 
	                           cputime.h iomap.h ipc.h 
	                           pgtable-nopmd.h pgtable-nopud.h 
	                           resource.h signal.h termios.h 
	                           uaccess.h 
	linux/include/asm-h8300: Tag: MaltaRef_2_6 cputime.h 
	linux/include/asm-i386: Tag: MaltaRef_2_6 .cvsignore 
	                        asm_offsets.h cputime.h kdebug.h 
	                        kprobes.h pci-direct.h seccomp.h 
	linux/include/asm-ia64: Tag: MaltaRef_2_6 cputime.h 
	                        machvec_hpzx1_swiotlb.h 
	linux/include/asm-ia64/sn: Tag: MaltaRef_2_6 l1.h 
	                           pcibus_provider_defs.h pcidev.h 
	                           shub_mmr.h shubio.h tioca.h 
	                           tioca_provider.h tiocx.h xp.h 
	linux/include/asm-ia64/sn/sn2: Tag: MaltaRef_2_6 sn_hwperf.h 
	linux/include/asm-m32r: Tag: MaltaRef_2_6 a.out.h addrspace.h 
	                        assembler.h atomic.h bitops.h bug.h 
	                        bugs.h byteorder.h cache.h cachectl.h 
	                        cacheflush.h checksum.h cputime.h 
	                        current.h delay.h div64.h dma-mapping.h 
	                        dma.h elf.h errno.h fcntl.h flat.h 
	                        hardirq.h hdreg.h hw_irq.h ide.h io.h 
	                        ioctl.h ioctls.h ipc.h ipcbuf.h irq.h 
	                        kmap_types.h linkage.h local.h m32102.h 
	                        m32102peri.h m32r.h m32r_mp_fpga.h 
	                        mc146818rtc.h mman.h mmu.h mmu_context.h 
	                        mmzone.h module.h msgbuf.h namei.h 
	                        numnodes.h page.h param.h pci.h percpu.h 
	                        pgalloc.h pgtable-2level.h pgtable.h 
	                        poll.h posix_types.h processor.h 
	                        ptrace.h resource.h rtc.h scatterlist.h 
	                        sections.h segment.h semaphore.h 
	                        sembuf.h serial.h setup.h shmbuf.h 
	                        shmparam.h sigcontext.h siginfo.h 
	                        signal.h smp.h socket.h sockios.h 
	                        spinlock.h stat.h statfs.h string.h 
	                        syscall.h system.h termbits.h termios.h 
	                        thread_info.h timex.h tlb.h tlbflush.h 
	                        topology.h types.h uaccess.h ucontext.h 
	                        unaligned.h unistd.h user.h vga.h xor.h 
	linux/include/asm-m32r/m32700ut: Tag: MaltaRef_2_6 
	                                 m32700ut_lan.h m32700ut_lcd.h 
	                                 m32700ut_pld.h 
	linux/include/asm-m32r/mappi2: Tag: MaltaRef_2_6 mappi2_pld.h 
	linux/include/asm-m32r/opsput: Tag: MaltaRef_2_6 opsput_lan.h 
	                               opsput_lcd.h opsput_pld.h 
	linux/include/asm-m68k: Tag: MaltaRef_2_6 cputime.h hp300hw.h 
	linux/include/asm-m68knommu: Tag: MaltaRef_2_6 cputime.h 
	                             m527xsim.h m528xsim.h mcfcache.h 
	linux/include/asm-mips: Tag: MaltaRef_2_6 abi.h compiler.h 
	                        cputime.h dsp.h interrupt.h m48t37.h 
	                        reg.h 
	linux/include/asm-mips/cobalt: Tag: MaltaRef_2_6 mach-gt64120.h 
	linux/include/asm-mips/mach-db1x00: Tag: MaltaRef_2_6 db1200.h 
	linux/include/asm-mips/mach-ip22: Tag: MaltaRef_2_6 spaces.h 
	linux/include/asm-mips/mach-ip32: Tag: MaltaRef_2_6 
	                                  cpu-feature-overrides.h 
	                                  spaces.h 
	linux/include/asm-mips/mach-ocelot3: Tag: MaltaRef_2_6 
	                                     cpu-feature-overrides.h 
	linux/include/asm-mips/mach-pb1x00: Tag: MaltaRef_2_6 pb1200.h 
	linux/include/asm-mips/mach-sibyte: Tag: MaltaRef_2_6 
	                                    cpu-feature-overrides.h 
	linux/include/asm-mips/tx4927: Tag: MaltaRef_2_6 
	                               smsc_fdc37m81x.h 
	linux/include/asm-mips/vr41xx: Tag: MaltaRef_2_6 cmbvr4133.h 
	                               pci.h 
	linux/include/asm-parisc: Tag: MaltaRef_2_6 cputime.h 
	linux/include/asm-ppc: Tag: MaltaRef_2_6 8253pit.h cputime.h 
	                       ipic.h mpc83xx.h mv64x60.h mv64x60_defs.h 
	                       perfmon.h ppc_sys.h suspend.h 
	                       xparameters.h 
	linux/include/asm-ppc64: Tag: MaltaRef_2_6 8253pit.h agp.h 
	                         cputime.h imalloc.h kdebug.h kprobes.h 
	                         lppaca.h pSeries_reconfig.h 
	                         plpar_wrappers.h pmc.h seccomp.h smu.h 
	                         sstep.h vdso.h 
	linux/include/asm-s390: Tag: MaltaRef_2_6 cputime.h 
	linux/include/asm-sh: Tag: MaltaRef_2_6 cputime.h irq-sh73180.h 
	linux/include/asm-sh/cpu-sh3: Tag: MaltaRef_2_6 timer.h 
	linux/include/asm-sh/cpu-sh4: Tag: MaltaRef_2_6 timer.h 
	linux/include/asm-sh/edosk7705: Tag: MaltaRef_2_6 io.h 
	linux/include/asm-sh/microdev: Tag: MaltaRef_2_6 io.h irq.h 
	linux/include/asm-sh/se73180: Tag: MaltaRef_2_6 io.h se73180.h 
	linux/include/asm-sh/sh03: Tag: MaltaRef_2_6 ide.h io.h sh03.h 
	linux/include/asm-sh64: Tag: MaltaRef_2_6 cputime.h 
	linux/include/asm-sparc: Tag: MaltaRef_2_6 cputime.h 
	linux/include/asm-sparc64: Tag: MaltaRef_2_6 cputime.h kprobes.h 
	                           rwsem-const.h 
	linux/include/asm-um: Tag: MaltaRef_2_6 apic.h 
	                      archparam-x86_64.h calling.h cpufeature.h 
	                      cputime.h dwarf2.h elf-i386.h elf-ppc.h 
	                      elf-x86_64.h local.h module-generic.h 
	                      module-i386.h module-x86_64.h pda.h 
	                      pgtable-2level.h pgtable-3level.h prctl.h 
	                      processor-x86_64.h ptrace-x86_64.h 
	                      sections.h sigcontext-x86_64.h 
	                      system-x86_64.h vm-flags-i386.h 
	                      vm-flags-x86_64.h 
	linux/include/asm-v850: Tag: MaltaRef_2_6 cputime.h 
	linux/include/asm-x86_64: Tag: MaltaRef_2_6 cputime.h genapic.h 
	                          ipi.h kprobes.h mach_apic.h seccomp.h 
	                          swiotlb.h 
	linux/include/linux: Tag: MaltaRef_2_6 attribute_container.h 
	                     backlight.h compiler-gcc4.h cpuset.h 
	                     cryptohash.h debugfs.h elf-fdpic.h 
	                     fsl_devices.h gen_stats.h hardirq.h 
	                     hdpu_features.h if_infiniband.h 
	                     ioc4_common.h ip_mp_alg.h key-ui.h key.h 
	                     keyctl.h kfifo.h kobject_uevent.h kprobes.h 
	                     lcd.h libps2.h mmtimer.h nodemask.h 
	                     patchkey.h pci-acpi.h pcieport_if.h 
	                     pktcdvd.h ramfs.h reboot_fixups.h rslib.h 
	                     scatterlist.h seccomp.h serial_8250.h 
	                     sort.h superhyway.h transport_class.h 
	                     usb_cdc.h usb_sl811.h via.h 
	linux/include/linux/mtd: Tag: MaltaRef_2_6 xip.h 
	linux/include/linux/netfilter_bridge: Tag: MaltaRef_2_6 
	                                      ebt_ulog.h 
	linux/include/linux/netfilter_ipv4: Tag: MaltaRef_2_6 
	                                    ipt_CLUSTERIP.h 
	                                    ipt_CONNMARK.h ipt_comment.h 
	                                    ipt_connmark.h 
	                                    ipt_hashlimit.h 
	linux/include/linux/netfilter_ipv6: Tag: MaltaRef_2_6 
	                                    ip6t_physdev.h 
	linux/include/linux/raid: Tag: MaltaRef_2_6 raid10.h 
	linux/include/linux/tc_act: Tag: MaltaRef_2_6 tc_defact.h 
	                            tc_gact.h tc_ipt.h tc_mirred.h 
	                            tc_pedit.h 
	linux/include/linux/tc_ematch: Tag: MaltaRef_2_6 tc_em_cmp.h 
	                               tc_em_meta.h tc_em_nbyte.h 
	linux/include/media: Tag: MaltaRef_2_6 tveeprom.h 
	                     video-buf-dvb.h 
	linux/include/net: Tag: MaltaRef_2_6 act_api.h act_generic.h 
	                   gen_stats.h ip_mp_alg.h sch_generic.h 
	                   x25device.h 
	linux/include/net/tc_act: Tag: MaltaRef_2_6 tc_defact.h 
	                          tc_gact.h tc_ipt.h tc_mirred.h 
	                          tc_pedit.h 
	linux/include/scsi: Tag: MaltaRef_2_6 scsi_transport_iscsi.h 
	linux/include/sound: Tag: MaltaRef_2_6 ak4114.h pcm-indirect.h 
	linux/include/video: Tag: MaltaRef_2_6 s1d13xxxfb.h w100fb.h 
	linux/init     : Tag: MaltaRef_2_6 calibrate.c 
	linux/kernel   : Tag: MaltaRef_2_6 cpuset.c kfifo.c kprobes.c 
	                 ksysfs.c posix-cpu-timers.c seccomp.c 
	                 spinlock.c sys_ni.c wait.c 
	linux/kernel/irq: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                  autoprobe.c handle.c internals.h manage.c 
	                  proc.c spurious.c 
	linux/kernel/power: Tag: MaltaRef_2_6 .cvsignore 
	linux/lib      : Tag: MaltaRef_2_6 find_next_bit.c halfmd4.c 
	                 iomap.c kernel_lock.c kobject_uevent.c 
	                 prio_tree.c sha1.c sort.c 
	linux/lib/reed_solomon: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                        decode_rs.c encode_rs.c reed_solomon.c 
	linux/lib/zlib_inflate: Tag: MaltaRef_2_6 inflate_sync.c 
	linux/mm       : Tag: MaltaRef_2_6 internal.h tiny-shmem.c 
	linux/net/appletalk: Tag: MaltaRef_2_6 dev.c 
	linux/net/bluetooth/bnep: Tag: MaltaRef_2_6 .cvsignore 
	linux/net/bluetooth/cmtp: Tag: MaltaRef_2_6 .cvsignore 
	linux/net/bluetooth/hidp: Tag: MaltaRef_2_6 .cvsignore 
	linux/net/bluetooth/rfcomm: Tag: MaltaRef_2_6 .cvsignore 
	linux/net/bridge/netfilter: Tag: MaltaRef_2_6 ebt_ulog.c 
	linux/net/core : Tag: MaltaRef_2_6 gen_estimator.c gen_stats.c 
	linux/net/ipv4 : Tag: MaltaRef_2_6 fib_lookup.h multipath.c 
	                 multipath_drr.c multipath_random.c 
	                 multipath_rr.c multipath_wrandom.c 
	linux/net/ipv4/netfilter: Tag: MaltaRef_2_6 ipt_CLUSTERIP.c 
	                          ipt_CONNMARK.c ipt_comment.c 
	                          ipt_connmark.c ipt_hashlimit.c 
	linux/net/ipv6/netfilter: Tag: MaltaRef_2_6 ip6t_physdev.c 
	linux/net/sched: Tag: MaltaRef_2_6 cls_basic.c em_cmp.c 
	                 em_meta.c em_nbyte.c em_u32.c ematch.c gact.c 
	                 ipt.c mirred.c pedit.c simple.c 
	linux/scripts  : Tag: MaltaRef_2_6 gen_initramfs_list.sh 
	                 namespace.pl show_delta 
	linux/scripts/kconfig: Tag: MaltaRef_2_6 POTFILES.in kxgettext.c 
	                       util.c 
	linux/security : Tag: MaltaRef_2_6 seclvl.c 
	linux/security/keys: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                     compat.c internal.h key.c keyctl.c 
	                     keyring.c proc.c process_keys.c 
	                     request_key.c user_defined.c 
	linux/security/selinux: Tag: MaltaRef_2_6 .cvsignore 
	linux/security/selinux/ss: Tag: MaltaRef_2_6 .cvsignore 
	linux/sound/core: Tag: MaltaRef_2_6 control_compat.c 
	                  hwdep_compat.c pcm_compat.c rawmidi_compat.c 
	                  timer_compat.c 
	linux/sound/core/seq: Tag: MaltaRef_2_6 seq_compat.c 
	linux/sound/drivers/opl4: Tag: MaltaRef_2_6 .cvsignore 
	linux/sound/drivers/vx: Tag: MaltaRef_2_6 .cvsignore 
	linux/sound/i2c/other: Tag: MaltaRef_2_6 .cvsignore ak4114.c 
	linux/sound/mips: Tag: MaltaRef_2_6 .cvsignore Kconfig Makefile 
	                  au1x00.c 
	linux/sound/oss: Tag: MaltaRef_2_6 au1550_ac97.c au1550_i2s.c 
	linux/sound/parisc: Tag: MaltaRef_2_6 .cvsignore harmony.h 
	linux/sound/pci: Tag: MaltaRef_2_6 atiixp_modem.c 
	                 via82xx_modem.c 
	linux/sound/pci/au88x0: Tag: MaltaRef_2_6 .cvsignore 
	linux/sound/pci/ca0106: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                        ca0106.h ca0106_main.c ca0106_mixer.c 
	                        ca0106_proc.c 
	linux/sound/pci/emu10k1: Tag: MaltaRef_2_6 emu10k1x.c p16v.c 
	                         p16v.h timer.c 
	linux/sound/pci/hda: Tag: MaltaRef_2_6 Makefile hda_codec.c 
	                     hda_codec.h hda_generic.c hda_intel.c 
	                     hda_local.h hda_patch.h hda_proc.c 
	                     patch_analog.c patch_cmedia.c 
	                     patch_realtek.c 
	linux/sound/pci/ice1712: Tag: MaltaRef_2_6 .cvsignore juli.c 
	                         juli.h phase.c phase.h pontis.c 
	                         pontis.h prodigy192.c prodigy192.h 
	                         stac946x.h vt1720_mobo.c vt1720_mobo.h 
	linux/sound/pci/mixart: Tag: MaltaRef_2_6 .cvsignore 
	linux/sound/pci/vx222: Tag: MaltaRef_2_6 .cvsignore 
	linux/sound/pcmcia/pdaudiocf: Tag: MaltaRef_2_6 .cvsignore 
	linux/sound/pcmcia/vx: Tag: MaltaRef_2_6 .cvsignore 
	linux/sound/ppc: Tag: MaltaRef_2_6 beep.c toonie.c 
	linux/sound/sparc: Tag: MaltaRef_2_6 .cvsignore 
	linux/sound/usb: Tag: MaltaRef_2_6 .cvsignore 
	linux/sound/usb/usx2y: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                       usX2Yhwdep.c usX2Yhwdep.h 
	                       usbus428ctldefs.h usbusx2y.c usbusx2y.h 
	                       usbusx2yaudio.c usx2y.h usx2yhwdeppcm.c 
	                       usx2yhwdeppcm.h 
Removed files:
	linux/Documentation: Tag: MaltaRef_2_6 README.moxa digiboard.txt 
	                     mkdev.cciss mkdev.ida 
	linux/Documentation/BK-usage: Tag: MaltaRef_2_6 00-INDEX 
	                              bk-kernel-howto.txt bk-make-sum 
	                              bksend bz64wrap cpcset 
	                              cset-to-linus csets-to-patches 
	                              gcapatch unbz64wrap 
	linux/Documentation/DocBook: Tag: MaltaRef_2_6 mousedrivers.tmpl 
	                             tulip-user.tmpl via-audio.tmpl 
	linux/Documentation/cdrom: Tag: MaltaRef_2_6 mcd 
	linux/Documentation/dvb: Tag: MaltaRef_2_6 firmware.txt 
	linux/Documentation/filesystems: Tag: MaltaRef_2_6 umsdos.txt 
	linux/Documentation/i2c: Tag: MaltaRef_2_6 i2c-old-porting 
	                         i2c-parport 
	linux/Documentation/isdn: Tag: MaltaRef_2_6 README.eicon 
	linux/Documentation/networking: Tag: MaltaRef_2_6 ethertap.txt 
	linux/Documentation/scsi: Tag: MaltaRef_2_6 ChangeLog 
	                          qla2xxx.revision.notes 
	linux/Documentation/sound/oss: Tag: MaltaRef_2_6 ChangeLog.awe 
	                               ChangeLog.multisound 
	linux/Documentation/usb: Tag: MaltaRef_2_6 philips.txt 
	                         silverlink.txt 
	linux/arch/alpha/lib: Tag: MaltaRef_2_6 io.c 
	linux/arch/arm : Tag: MaltaRef_2_6 defconfig 
	linux/arch/arm/boot/compressed: Tag: MaltaRef_2_6 hw-bse.c 
	linux/arch/arm/configs: Tag: MaltaRef_2_6 a5k_defconfig 
	                        adsbitsy_defconfig brutus_defconfig 
	                        empeg_defconfig flexanet_defconfig 
	                        freebird_defconfig 
	                        freebird_new_defconfig 
	                        graphicsclient_defconfig 
	                        graphicsmaster_defconfig 
	                        huw_webpanel_defconfig iq80310_defconfig 
	                        pangolin_defconfig 
	                        pfs168_mqtft_defconfig 
	                        pfs168_mqvga_defconfig 
	                        pfs168_sastn_defconfig 
	                        pfs168_satft_defconfig sherman_defconfig 
	                        stork_defconfig system3_defconfig 
	                        trizeps_defconfig 
	linux/arch/arm/lib: Tag: MaltaRef_2_6 io-readsl-armv3.S 
	                    io-readsl-armv4.S 
	linux/arch/arm/mach-footbridge: Tag: MaltaRef_2_6 arch.c irq.c 
	                                mm.c 
	linux/arch/arm/mach-iop3xx: Tag: MaltaRef_2_6 arch.c 
	                            iop310-irq.c iop310-pci.c 
	                            iq80310-irq.c iq80310-pci.c 
	                            iq80310-time.c mm-321.c mm.c 
	                            xs80200-irq.c 
	linux/arch/arm/mach-ixp4xx: Tag: MaltaRef_2_6 prpmc1100-pci.c 
	                            prpmc1100-setup.c 
	linux/arch/arm/mach-omap: Tag: MaltaRef_2_6 bus.c clocks.c 
	                          leds-perseus2.c 
	linux/arch/arm/mach-sa1100: Tag: MaltaRef_2_6 adsbitsy.c 
	                            brutus.c empeg.c flexanet.c 
	                            freebird.c graphicsclient.c 
	                            graphicsmaster.c huw_webpanel.c 
	                            itsy.c leds-adsbitsy.c leds-brutus.c 
	                            leds-flexanet.c 
	                            leds-graphicsclient.c 
	                            leds-graphicsmaster.c leds-pfs168.c 
	                            leds-system3.c nanoengine.c 
	                            omnimeter.c pangolin.c pfs168.c 
	                            sherman.c stork.c system3.c 
	                            trizeps.c xp860.c yopy.c 
	linux/arch/arm/mm: Tag: MaltaRef_2_6 copypage-v4mc.S 
	linux/arch/arm26/boot/compressed: Tag: MaltaRef_2_6 ofw-shark.c 
	linux/arch/arm26/kernel: Tag: MaltaRef_2_6 time-acorn.c 
	linux/arch/arm26/lib: Tag: MaltaRef_2_6 io-readsl-armv3.S 
	                      io-readsw-armv3.S io-writesw-armv3.S 
	linux/arch/arm26/machine: Tag: MaltaRef_2_6 head.S oldlatches.c 
	                          small_page.c 
	linux/arch/arm26/mm: Tag: MaltaRef_2_6 mm-memc.c 
	linux/arch/cris/arch-v10/drivers: Tag: MaltaRef_2_6 ethernet.c 
	                                  ide.c serial.c serial.h 
	linux/arch/h8300/platform/h8300h/aki3068net: Tag: MaltaRef_2_6 
	                                             ram.ld 
	linux/arch/h8300/platform/h8300h/generic: Tag: MaltaRef_2_6 
	                                          ram.ld rom.ld 
	linux/arch/h8300/platform/h8300h/h8max: Tag: MaltaRef_2_6 ram.ld 
	linux/arch/h8300/platform/h8s/edosk2674: Tag: MaltaRef_2_6 
	                                         ram.ld rom.ld 
	linux/arch/h8300/platform/h8s/generic: Tag: MaltaRef_2_6 ram.ld 
	                                       rom.ld 
	linux/arch/i386/kernel/cpu/cpufreq: Tag: MaltaRef_2_6 acpi.c 
	linux/arch/i386/pci: Tag: MaltaRef_2_6 changelog 
	linux/arch/i386/power: Tag: MaltaRef_2_6 pmdisk.S 
	linux/arch/ia64/configs: Tag: MaltaRef_2_6 generic_defconfig 
	linux/arch/ia64/dig: Tag: MaltaRef_2_6 topology.c 
	linux/arch/ia64/sn/fakeprom: Tag: MaltaRef_2_6 Makefile README 
	                             fpmem.c fpmem.h fprom.lds 
	                             fpromasm.S fw-emu.c klgraph_init.c 
	                             main.c make_textsym runsim 
	linux/arch/ia64/sn/io: Tag: MaltaRef_2_6 Makefile cdl.c io.c 
	                       snia_if.c xswitch.c 
	linux/arch/ia64/sn/io/drivers: Tag: MaltaRef_2_6 Makefile 
	                               ioconfig_bus.c 
	linux/arch/ia64/sn/io/hwgfs: Tag: MaltaRef_2_6 Makefile hcl.c 
	                             hcl_util.c interface.c labelcl.c 
	                             ramfs.c 
	linux/arch/ia64/sn/io/machvec: Tag: MaltaRef_2_6 Makefile iomv.c 
	                               pci.c pci_bus_cvlink.c pci_dma.c 
	linux/arch/ia64/sn/io/platform_init: Tag: MaltaRef_2_6 Makefile 
	                                     sgi_io_init.c 
	linux/arch/ia64/sn/io/sn2: Tag: MaltaRef_2_6 Makefile 
	                           bte_error.c geo_op.c klconflib.c 
	                           klgraph.c l1_command.c ml_SN_init.c 
	                           ml_SN_intr.c ml_iograph.c module.c 
	                           pciio.c pic.c shub.c shub_intr.c 
	                           shuberror.c shubio.c xbow.c xtalk.c 
	linux/arch/ia64/sn/io/sn2/pcibr: Tag: MaltaRef_2_6 Makefile 
	                                 pcibr_ate.c pcibr_config.c 
	                                 pcibr_dvr.c pcibr_error.c 
	                                 pcibr_hints.c pcibr_intr.c 
	                                 pcibr_reg.c pcibr_rrb.c 
	                                 pcibr_slot.c 
	linux/arch/ia64/sn/kernel: Tag: MaltaRef_2_6 probe.c 
	linux/arch/m68k/apollo: Tag: MaltaRef_2_6 dn_debug.c 
	linux/arch/m68k/sun3x: Tag: MaltaRef_2_6 sun3x_ksyms.c 
	linux/arch/m68knommu/platform/5206/ARNEWSH: Tag: MaltaRef_2_6 
	                                            crt0_ram.S 
	linux/arch/m68knommu/platform/5206e/MOTOROLA: Tag: MaltaRef_2_6 
	                                              crt0_ram.S 
	linux/arch/m68knommu/platform/5206e/eLITE: Tag: MaltaRef_2_6 
	                                           crt0_ram.S 
	linux/arch/m68knommu/platform/5249/MOTOROLA: Tag: MaltaRef_2_6 
	                                             crt0_ram.S 
	linux/arch/m68knommu/platform/5272/MOTOROLA: Tag: MaltaRef_2_6 
	                                             crt0_ram.S 
	linux/arch/m68knommu/platform/5272/NETtel: Tag: MaltaRef_2_6 
	                                           crt0_ram.S 
	linux/arch/m68knommu/platform/5272/senTec: Tag: MaltaRef_2_6 
	                                           crt0_ram.S 
	linux/arch/m68knommu/platform/5282: Tag: MaltaRef_2_6 Makefile 
	                                    config.c pit.c 
	linux/arch/m68knommu/platform/5282/MOTOROLA: Tag: MaltaRef_2_6 
	                                             crt0_ram.S 
	linux/arch/m68knommu/platform/5282/senTec: Tag: MaltaRef_2_6 
	                                           crt0_ram.S 
	linux/arch/m68knommu/platform/5307/ARNEWSH: Tag: MaltaRef_2_6 
	                                            crt0_ram.S 
	linux/arch/m68knommu/platform/5307/CLEOPATRA: Tag: MaltaRef_2_6 
	                                              crt0_ram.S 
	linux/arch/m68knommu/platform/5307/MOTOROLA: Tag: MaltaRef_2_6 
	                                             crt0_ram.S 
	linux/arch/m68knommu/platform/5307/MP3: Tag: MaltaRef_2_6 
	                                        crt0_ram.S 
	linux/arch/m68knommu/platform/5307/NETtel: Tag: MaltaRef_2_6 
	                                           crt0_ram.S 
	linux/arch/m68knommu/platform/5407/CLEOPATRA: Tag: MaltaRef_2_6 
	                                              crt0_ram.S 
	linux/arch/m68knommu/platform/5407/MOTOROLA: Tag: MaltaRef_2_6 
	                                             crt0_ram.S 
	linux/arch/m68knommu/platform/68328/pilot: Tag: MaltaRef_2_6 
	                                           crt0_rom.S 
	linux/arch/m68knommu/platform/68360/uCquicc: Tag: MaltaRef_2_6 
	                                             crt0_ram.S 
	                                             crt0_rom.S 
	linux/arch/m68knommu/platform/68EZ328/ucsimm: Tag: MaltaRef_2_6 
	                                              crt0_fixed.S 
	                                              crt0_himem.S 
	                                              crt0_ram.S 
	                                              crt0_rom.S 
	linux/arch/m68knommu/platform/68VZ328/de2: Tag: MaltaRef_2_6 
	                                           Makefile crt0_ram.S 
	linux/arch/m68knommu/platform/68VZ328/ucdimm: Tag: MaltaRef_2_6 
	                                              Makefile 
	                                              crt0_fixed.S 
	                                              crt0_himem.S 
	                                              crt0_ram.S 
	                                              crt0_rom.S 
	linux/arch/mips/baget: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                       baget.c bagetIRQ.S balo.c balo_supp.S 
	                       irq.c ld.script.balo print.c reset.c 
	                       setup.c time.c 
	linux/arch/mips/baget/prom: Tag: MaltaRef_2_6 .cvsignore 
	                            Makefile init.c 
	linux/arch/mips/cobalt: Tag: MaltaRef_2_6 promcon.c 
	linux/arch/mips/configs: Tag: MaltaRef_2_6 bosporus_defconfig 
	                         mirage_defconfig mtx1_defconfig 
	                         osprey_defconfig pb1000_defconfig 
	                         xxs1500_defconfig 
	linux/arch/mips/ddb5xxx/common: Tag: MaltaRef_2_6 irq.c 
	linux/arch/mips/hp-lj: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                       asic.c gdb_hook.c init.c int-handler.S 
	                       irq.c setup.c utils.c utils.h 
	linux/arch/mips/kernel: Tag: MaltaRef_2_6 irix5sys.h 
	                        module-elf32.c module-elf64.c reg.c 
	linux/arch/mips/mm: Tag: MaltaRef_2_6 tlb64-glue-r4k.S 
	                    tlb64-glue-sb1.S tlbex32-r3k.S tlbex32-r4k.S 
	                    tlbex64-r4k.S 
	linux/arch/mips/pci: Tag: MaltaRef_2_6 fixup-lasat.c pci-hplj.c 
	linux/arch/mips/ramdisk: Tag: MaltaRef_2_6 .cvsignore Makefile 
	                         ld.script 
	linux/arch/mips/vr4181/common: Tag: MaltaRef_2_6 .cvsignore 
	                               Makefile int_handler.S irq.c 
	                               serial.c time.c 
	linux/arch/mips/vr4181/osprey: Tag: MaltaRef_2_6 .cvsignore 
	                               Makefile dbg_io.c prom.c reset.c 
	                               setup.c 
	linux/arch/mips/vr41xx/common: Tag: MaltaRef_2_6 serial.c 
	                               vrc4171.c 
	linux/arch/mips/vr41xx/tanbac-tb0229: Tag: MaltaRef_2_6 tb0219.c 
	linux/arch/parisc/configs: Tag: MaltaRef_2_6 n4000_defconfig 
	linux/arch/parisc/kernel: Tag: MaltaRef_2_6 head64.S 
	linux/arch/ppc : Tag: MaltaRef_2_6 defconfig 
	linux/arch/ppc/8xx_io: Tag: MaltaRef_2_6 uart.c 
	linux/arch/ppc/boot/include: Tag: MaltaRef_2_6 zlib.h 
	linux/arch/ppc/boot/lib: Tag: MaltaRef_2_6 zlib.c 
	linux/arch/ppc/boot/simple: Tag: MaltaRef_2_6 chrpmap.S 
	                            gt64260_tty.c legacy.S 
	                            misc-ev64260.S 
	linux/arch/ppc/kernel: Tag: MaltaRef_2_6 head_e500.S 
	linux/arch/ppc/oprofile: Tag: MaltaRef_2_6 init.c 
	linux/arch/ppc/platforms: Tag: MaltaRef_2_6 est8260_setup.c 
	                          ev64260_setup.c lopec_pci.c 
	                          lopec_serial.h lopec_setup.c 
	                          mcpn765_serial.h mvme5100_pci.c 
	                          mvme5100_serial.h mvme5100_setup.c 
	                          powerpmc250_serial.h pq2ads_setup.c 
	                          prpmc750_serial.h prpmc800_serial.h 
	                          rpx8260.c 
	linux/arch/ppc/platforms/85xx: Tag: MaltaRef_2_6 mpc8540.c 
	                               mpc8555.c mpc8560.c 
	linux/arch/ppc/syslib: Tag: MaltaRef_2_6 gt64260_common.c 
	                       m8260_pci.c m8260_pci.h ppc4xx_serial.c 
	linux/arch/ppc64/boot: Tag: MaltaRef_2_6 addSystemMap.c 
	                       no_initrd.c start.c 
	linux/arch/ppc64/kernel: Tag: MaltaRef_2_6 chrp_setup.c 
	                         iSeries_IoMmTable.c iSeries_IoMmTable.h 
	                         mf_proc.c open_pic.c open_pic.h 
	                         open_pic_defs.h open_pic_u3.c 
	                         pSeries_htab.c pci_dma_direct.c 
	                         pmac_iommu.c stab.c 
	linux/arch/ppc64/xmon: Tag: MaltaRef_2_6 setjmp.c 
	linux/arch/s390/kernel: Tag: MaltaRef_2_6 compat_exec.c 
	linux/arch/sh  : Tag: MaltaRef_2_6 defconfig 
	linux/arch/sh/tools: Tag: MaltaRef_2_6 machgen.sh 
	linux/arch/sh64: Tag: MaltaRef_2_6 defconfig 
	linux/arch/sh64/lib: Tag: MaltaRef_2_6 old-checksum.c 
	linux/arch/sparc64/lib: Tag: MaltaRef_2_6 U3copy_in_user.S VIS.h 
	                        VISbzero.S VIScopy.S VIScsum.S 
	                        VIScsumcopy.S VIScsumcopyusr.S 
	                        VISmemset.S rwlock.S rwsem.c splock.S 
	linux/arch/um  : Tag: MaltaRef_2_6 Kconfig_block dyn.lds.S 
	                 main.c uml.lds.S 
	linux/arch/um/drivers: Tag: MaltaRef_2_6 hostaudio_user.c 
	linux/arch/um/include: Tag: MaltaRef_2_6 2_5compat.h Makefile 
	                       frame.h frame_user.h hostaudio.h umn.h 
	linux/arch/um/include/sysdep-i386: Tag: MaltaRef_2_6 frame.h 
	                                   frame_kern.h frame_user.h 
	linux/arch/um/kernel: Tag: MaltaRef_2_6 frame.c frame_kern.c 
	                      initrd_kern.c initrd_user.c mprot.h 
	                      sys_call_table.c user_syms.c 
	linux/arch/um/kernel/skas: Tag: MaltaRef_2_6 exec_user.c 
	linux/arch/um/kernel/skas/include: Tag: MaltaRef_2_6 mmu.h 
	                                   mode.h mode_kern.h 
	                                   ptrace-skas.h uaccess.h 
	linux/arch/um/kernel/skas/sys-i386: Tag: MaltaRef_2_6 Makefile 
	                                    sigcontext.c 
	linux/arch/um/kernel/skas/util: Tag: MaltaRef_2_6 mk_ptregs.c 
	linux/arch/um/kernel/tt/include: Tag: MaltaRef_2_6 mmu.h mode.h 
	                                 mode_kern.h ptrace-tt.h 
	                                 uaccess.h 
	linux/arch/um/kernel/tt/sys-i386: Tag: MaltaRef_2_6 Makefile 
	                                  sigcontext.c 
	linux/arch/um/sys-i386: Tag: MaltaRef_2_6 extable.c 
	linux/arch/um/sys-i386/util: Tag: MaltaRef_2_6 mk_thread_kern.c 
	                             mk_thread_user.c 
	linux/arch/um/util: Tag: MaltaRef_2_6 mk_constants_kern.c 
	                    mk_constants_user.c mk_task_kern.c 
	                    mk_task_user.c 
	linux/arch/x86_64/kernel: Tag: MaltaRef_2_6 Makefile-HEAD 
	                          domain.c vsyscall.S warmreboot.S 
	linux/arch/x86_64/lib: Tag: MaltaRef_2_6 old-checksum.c 
	linux/drivers/acpi: Tag: MaltaRef_2_6 acpi_ksyms.c processor.c 
	linux/drivers/atm: Tag: MaltaRef_2_6 nicstarmac.h 
	linux/drivers/base: Tag: MaltaRef_2_6 interface.c 
	linux/drivers/block/paride: Tag: MaltaRef_2_6 setup.h 
	linux/drivers/cdrom: Tag: MaltaRef_2_6 mcd.c mcd.h 
	linux/drivers/char: Tag: MaltaRef_2_6 README.computone 
	                    README.cycladesZ README.cyclomY README.epca 
	                    README.scc busmouse.c busmouse.h 
	                    console_macros.h digi_bios.h digi_fep.h 
	                    fep.h hp600_keyb.c pcxx.c pcxx.h rsf16fmi.h 
	                    serial_tx3912.c serial_tx3912.h 
	                    serial_txx9.c serial_txx927.c sonypi.h 
	                    tpqic02.c vac-serial.c 
	linux/drivers/char/agp: Tag: MaltaRef_2_6 intel-mch-agp.c 
	linux/drivers/char/drm: Tag: MaltaRef_2_6 ati_pcigart.h 
	                        drm_agpsupport.h drm_auth.h drm_bufs.h 
	                        drm_context.h drm_dma.h drm_drawable.h 
	                        drm_drv.h drm_fops.h drm_init.h 
	                        drm_ioctl.h drm_irq.h drm_lock.h 
	                        drm_proc.h drm_scatter.h drm_stub.h 
	                        drm_vm.h ffb.h gamma.h i810.h i830.h 
	                        mga.h r128.h radeon.h sis.h tdfx.h 
	linux/drivers/char/ip2: Tag: MaltaRef_2_6 Makefile ip2mkdev.c 
	                        ip2stat.c ip2trace.c 
	linux/drivers/char/rio: Tag: MaltaRef_2_6 cdproto.h 
	linux/drivers/cpufreq: Tag: MaltaRef_2_6 proc_intf.c 
	linux/drivers/i2c: Tag: MaltaRef_2_6 i2c-max1617.c i2c-sensor.c 
	linux/drivers/ide: Tag: MaltaRef_2_6 ide-default.c 
	linux/drivers/ide/legacy: Tag: MaltaRef_2_6 pdc4030.c pdc4030.h 
	linux/drivers/ide/pci: Tag: MaltaRef_2_6 adma100.c adma100.h 
	                       aec62xx.h cmd64x.h cy82c693.h generic.h 
	                       hpt34x.h hpt366.h it8172.h opti621.h 
	                       pdc202xx_new.h pdc202xx_old.h piix.h 
	                       serverworks.h 
	linux/drivers/isdn/tpam: Tag: MaltaRef_2_6 Kconfig Makefile 
	                         tpam.h tpam_commands.c tpam_crcpc.c 
	                         tpam_hdlc.c tpam_main.c tpam_memory.c 
	                         tpam_nco.c tpam_queues.c 
	linux/drivers/media/dvb/dvb-core: Tag: MaltaRef_2_6 Makefile.lib 
	                                  dvb_functions.c 
	                                  dvb_functions.h dvb_i2c.c 
	                                  dvb_i2c.h dvb_ksyms.c 
	linux/drivers/media/dvb/frontends: Tag: MaltaRef_2_6 
	                                   alps_tdlb7.c alps_tdmb7.c 
	                                   dst-bt878.h dst.c 
	                                   grundig_29504-401.c 
	                                   grundig_29504-491.c 
	                                   sp887x_firm.h 
	linux/drivers/media/video: Tag: MaltaRef_2_6 tuner.c 
	linux/drivers/message/fusion: Tag: MaltaRef_2_6 ascq_tbl.c 
	                              ascq_tbl.sh isense.c isense.h 
	                              scsi3.h scsiops.c 
	linux/drivers/message/i2o: Tag: MaltaRef_2_6 i2o_core.c 
	linux/drivers/mtd: Tag: MaltaRef_2_6 mtdblock.h 
	linux/drivers/mtd/devices: Tag: MaltaRef_2_6 doc1000.c 
	linux/drivers/mtd/maps: Tag: MaltaRef_2_6 db1550-flash.c 
	                        db1x00-flash.c ich2rom.c 
	                        integrator-flash-v24.c pb1550-flash.c 
	                        pb1xxx-flash.c 
	linux/drivers/net: Tag: MaltaRef_2_6 bagetlance.c ethertap.c 
	                   mv64340_eth.c mv64340_eth.h net_init.c 
	linux/drivers/net/fc: Tag: MaltaRef_2_6 Makefile iph5526.c 
	                      iph5526_ip.h iph5526_novram.c 
	                      iph5526_scsi.h tach.h tach_structs.h 
	linux/drivers/pci/hotplug: Tag: MaltaRef_2_6 pciehp_sysfs.c 
	linux/drivers/pcmcia: Tag: MaltaRef_2_6 bulkmem.c 
	                      sa1100_adsbitsy.c sa1100_flexanet.c 
	                      sa1100_freebird.c sa1100_graphicsclient.c 
	                      sa1100_graphicsmaster.c sa1100_pangolin.c 
	                      sa1100_pfs168.c sa1100_stork.c 
	                      sa1100_system3.c sa1100_trizeps.c 
	                      sa1100_xp860.c sa1100_yopy.c 
	linux/drivers/scsi: Tag: MaltaRef_2_6 dc390.h dmx3191d.h 
	                    fd_mcs.h i60uscsi.c i91uscsi.c i91uscsi.h 
	                    ini9100u.c ini9100u.h inia100.c inia100.h 
	                    lasi700.h qlogicfc.h qlogicisp.h 
	                    scsi_obsolete.h scsi_syms.c scsiiom.c 
	                    sgiwd93.h 
	linux/drivers/scsi/dpt: Tag: MaltaRef_2_6 dpt_osdutil.h 
	linux/drivers/scsi/qla2xxx: Tag: MaltaRef_2_6 ql6322.c 
	                            ql6322_fw.c qla_listops.h 
	linux/drivers/scsi/sym53c8xx_2: Tag: MaltaRef_2_6 sym_conf.h 
	                                sym_misc.c 
	linux/drivers/usb/host: Tag: MaltaRef_2_6 hc_simple.c 
	                        hc_simple.h hc_sl811.c hc_sl811.h 
	                        hc_sl811_rh.c ohci-omap.h 
	linux/drivers/usb/image: Tag: MaltaRef_2_6 hpusbscsi.c 
	                         hpusbscsi.h 
	linux/drivers/usb/media: Tag: MaltaRef_2_6 pwc-ctrl.c pwc-if.c 
	                         pwc-ioctl.h pwc-misc.c pwc-uncompress.c 
	                         pwc-uncompress.h pwc.h pwc_kiara.h 
	                         pwc_nala.h pwc_timon.h 
	linux/drivers/usb/misc: Tag: MaltaRef_2_6 speedtch.c tiglusb.c 
	                        tiglusb.h 
	linux/drivers/video: Tag: MaltaRef_2_6 tx3912fb.h 
	linux/fs/devpts: Tag: MaltaRef_2_6 xattr.c xattr.h 
	linux/fs/fat   : Tag: MaltaRef_2_6 fatfs_syms.c 
	linux/fs/jfs   : Tag: MaltaRef_2_6 jfs_defragfs.h 
	linux/fs/lockd : Tag: MaltaRef_2_6 lockd_syms.c 
	linux/fs/smbfs : Tag: MaltaRef_2_6 ChangeLog 
	linux/fs/umsdos: Tag: MaltaRef_2_6 Makefile README-WIP.txt dir.c 
	                 emd.c inode.c ioctl.c mangle.c namei.c rdir.c 
	                 specs 
	linux/fs/xfs   : Tag: MaltaRef_2_6 xfs_cap.c xfs_mac.c 
	linux/include/asm-arm/arch-cl7500: Tag: MaltaRef_2_6 serial.h 
	linux/include/asm-arm/arch-ebsa110: Tag: MaltaRef_2_6 serial.h 
	linux/include/asm-arm/arch-ebsa285: Tag: MaltaRef_2_6 serial.h 
	linux/include/asm-arm/arch-epxa10db: Tag: MaltaRef_2_6 serial.h 
	linux/include/asm-arm/arch-imx: Tag: MaltaRef_2_6 serial.h 
	linux/include/asm-arm/arch-integrator: Tag: MaltaRef_2_6 
	                                       serial.h time.h 
	linux/include/asm-arm/arch-iop3xx: Tag: MaltaRef_2_6 
	                                   iop310-irqs.h iop310.h 
	                                   iq80310.h pmon.h serial.h 
	linux/include/asm-arm/arch-ixp4xx: Tag: MaltaRef_2_6 serial.h 
	linux/include/asm-arm/arch-lh7a40x: Tag: MaltaRef_2_6 serial.h 
	linux/include/asm-arm/arch-omap: Tag: MaltaRef_2_6 bus.h 
	                                 clocks.h omap1610.h omap5912.h 
	                                 serial.h 
	linux/include/asm-arm/arch-pxa: Tag: MaltaRef_2_6 serial.h 
	linux/include/asm-arm/arch-rpc: Tag: MaltaRef_2_6 serial.h 
	linux/include/asm-arm/arch-s3c2410: Tag: MaltaRef_2_6 serial.h 
	linux/include/asm-arm/arch-sa1100: Tag: MaltaRef_2_6 adsbitsy.h 
	                                   flexanet.h freebird.h 
	                                   graphicsclient.h 
	                                   graphicsmaster.h 
	                                   huw_webpanel.h itsy.h mftb2.h 
	                                   omnimeter.h pangolin.h 
	                                   pfs168.h pleb.h serial.h 
	                                   stork.h system3.h trizeps.h 
	                                   yopy.h 
	linux/include/asm-arm/arch-shark: Tag: MaltaRef_2_6 serial.h 
	linux/include/asm-arm/arch-versatile: Tag: MaltaRef_2_6 serial.h 
	linux/include/asm-arm26: Tag: MaltaRef_2_6 calls.h ian_char.h 
	                         linux_logo.h 
	linux/include/asm-h8300: Tag: MaltaRef_2_6 linux_logo.h 
	                         softirq.h 
	linux/include/asm-ia64: Tag: MaltaRef_2_6 ioctl32.h 
	linux/include/asm-ia64/sn: Tag: MaltaRef_2_6 cdl.h dmamap.h 
	                           driver.h fetchop.h hcl.h hcl_util.h 
	                           hwgfs.h ifconfig_net.h ioc4.h 
	                           ioconfig_bus.h ioerror.h 
	                           ioerror_handling.h iograph.h kldir.h 
	                           labelcl.h pio.h prio.h router.h sgi.h 
	                           slotnum.h sn_fru.h sn_private.h 
	                           sndrv.h vector.h 
	linux/include/asm-ia64/sn/ksys: Tag: MaltaRef_2_6 elsc.h l1.h 
	linux/include/asm-ia64/sn/pci: Tag: MaltaRef_2_6 bridge.h 
	                               pci_bus_cvlink.h pci_defs.h 
	                               pcibr.h pcibr_private.h pciio.h 
	                               pciio_private.h pic.h 
	linux/include/asm-ia64/sn/sn2: Tag: MaltaRef_2_6 addrs.h arch.h 
	                               geo.h intr.h io.h shub.h 
	                               shub_md.h shub_mmr.h shub_mmr_t.h 
	                               shubio.h slotnum.h sn_private.h 
	linux/include/asm-ia64/sn/xtalk: Tag: MaltaRef_2_6 xbow.h 
	                                 xbow_info.h xswitch.h xtalk.h 
	                                 xtalk_private.h xtalkaddrs.h 
	                                 xwidget.h 
	linux/include/asm-m68k: Tag: MaltaRef_2_6 adb_mouse.h 
	                        atari_SCCserial.h 
	linux/include/asm-m68knommu: Tag: MaltaRef_2_6 io_hw_swap.h 
	                             keyboard.h m5282sim.h nap.h semp3.h 
	                             shglcore.h shglports.h 
	linux/include/asm-mips: Tag: MaltaRef_2_6 mv64340.h ng1.h 
	                        ng1hw.h pci_channel.h 
	linux/include/asm-mips/baget: Tag: MaltaRef_2_6 baget.h vac.h 
	                              vic.h 
	linux/include/asm-mips/hp-lj: Tag: MaltaRef_2_6 asic.h 
	linux/include/asm-mips/it8172: Tag: MaltaRef_2_6 it8172_lpc.h 
	linux/include/asm-mips/vr4181: Tag: MaltaRef_2_6 irq.h vr4181.h 
	linux/include/asm-mips/vr41xx: Tag: MaltaRef_2_6 vrc4171.h 
	linux/include/asm-parisc: Tag: MaltaRef_2_6 bootdata.h 
	                          parport_gsc.h som.h 
	linux/include/asm-ppc64: Tag: MaltaRef_2_6 bootx.h 
	linux/include/asm-ppc64/iSeries: Tag: MaltaRef_2_6 ItLpPaca.h 
	                                 iSeries_VpdInfo.h 
	                                 iSeries_fixup.h 
	linux/include/asm-sh64: Tag: MaltaRef_2_6 smplock.h softirq.h 
	linux/include/asm-um: Tag: MaltaRef_2_6 module.h smplock.h 
	linux/include/asm-x86_64: Tag: MaltaRef_2_6 ioctl32.h ipc.h 
	linux/include/linux: Tag: MaltaRef_2_6 affs_fs_i.h affs_fs_sb.h 
	                     blk.h compiler-gcc+.h dp83840.h iso_fs_i.h 
	                     iso_fs_sb.h msdos_fs_i.h msdos_fs_sb.h 
	                     tpqic02.h umsdos_fs.h umsdos_fs.p 
	                     umsdos_fs_i.h 
	linux/include/linux/netfilter_ipv4: Tag: MaltaRef_2_6 
	                                    compat_firewall.h 
	                                    ipchains_core.h 
	                                    ipfwadm_core.h 
	linux/include/linux/netfilter_ipv6: Tag: MaltaRef_2_6 
	                                    ip6t_REJECT.h 
	linux/include/pcmcia: Tag: MaltaRef_2_6 ftl.h memory.h 
	linux/include/sound: Tag: MaltaRef_2_6 sndmagic.h soundmem.h 
	                     yss225.h 
	linux/kernel/power: Tag: MaltaRef_2_6 pmdisk.c 
	linux/lib/zlib_inflate: Tag: MaltaRef_2_6 inffixed.h 
	linux/net/ipv4 : Tag: MaltaRef_2_6 ip_nat_dumb.c 
	linux/net/ipv4/ipvs: Tag: MaltaRef_2_6 ip_vs_proto_icmp.c 
	linux/net/ipv4/netfilter: Tag: MaltaRef_2_6 ip_fw_compat.c 
	                          ip_fw_compat.h ip_fw_compat_masq.c 
	                          ip_fw_compat_redir.c ipchains_core.c 
	                          ipfwadm_core.c 
	linux/net/ipv6 : Tag: MaltaRef_2_6 README 
	linux/net/netlink: Tag: MaltaRef_2_6 netlink_dev.c 
	linux/net/sunrpc: Tag: MaltaRef_2_6 svcauth_des.c 
	linux/net/sunrpc/auth_gss: Tag: MaltaRef_2_6 gss_pseudoflavors.c 
	                           sunrpcgss_syms.c 
	linux/net/xfrm : Tag: MaltaRef_2_6 xfrm_export.c 
	linux/scripts  : Tag: MaltaRef_2_6 README.Menuconfig makeman 
	                 split-man 
	linux/sound/core/ioctl32: Tag: MaltaRef_2_6 Makefile hwdep32.c 
	                          ioctl32.c ioctl32.h pcm32.c 
	                          rawmidi32.c seq32.c timer32.c 
	linux/sound/core/seq/oss: Tag: MaltaRef_2_6 seq_oss_misc.c 
	linux/sound/isa/gus: Tag: MaltaRef_2_6 gus_lfo.c 
	linux/sound/oss: Tag: MaltaRef_2_6 au1550_psc.c cs4232.h 
	                 maestro_tables.h 

Log message:
	Merged latest changes from HEAD to MaltaRef_2_6_merged_20050613

diff -urN malta/linux/CREDITS malta/linux/CREDITS
--- malta/linux/CREDITS	2004/09/14 16:27:37	1.123.1000.2
+++ malta/linux/CREDITS	2005/06/21 13:20:26	1.123.1000.3
@@ -34,8 +34,9 @@
 E: airlied@linux.ie
 W: http://www.csn.ul.ie/~airlied
 D: NFS over TCP patches
-S: University of Limerick
-S: Ireland
+D: in-kernel DRM Maintainer
+S: Longford, Ireland
+S: Sydney, Australia
 
 N: Tigran A. Aivazian
 E: tigran@veritas.com
@@ -46,13 +47,11 @@
 S: United Kingdom
 
 N: Werner Almesberger
-E: werner.almesberger@epfl.ch
+E: werner@almesberger.net
+W: http://www.almesberger.net/
 D: dosfs, LILO, some fd features, ATM, various other hacks here and there
-S: Ecole Polytechnique Federale de Lausanne
-S: DSC ICA
-S: INN (Ecublens)
-S: CH-1015 Lausanne
-S: Switzerland
+S: Buenos Aires
+S: Argentina
 
 N: Tim Alpaerts
 E: tim_alpaerts@toyota-motor-europe.com
@@ -281,6 +280,11 @@
 S: Greenbelt, Maryland 20771
 S: USA
 
+N: Adam Belay
+E: ambx1@neo.rr.com
+D: Linux Plug and Play Support
+S: USA
+
 N: Daniele Bellucci
 E: bellucda@tiscali.it
 D: Various Janitor work.
@@ -325,8 +329,6 @@
 S: USA
 
 N: Hennus Bergman
-E: hennus@cybercomm.nl
-W: http://www.cybercomm.nl/~hennus/
 P: 1024/77D50909 76 99 FD 31 91 E1 96 1C  90 BB 22 80 62 F6 BD 63
 D: Author and maintainer of the QIC-02 tape driver
 S: The Netherlands
@@ -337,7 +339,7 @@
 D: dsp56k device driver
 
 N: Ross Biro
-E: bir7@leland.Stanford.Edu
+E: ross.biro@gmail.com
 D: Original author of the Linux networking code
 
 N: Anton Blanchard
@@ -492,6 +494,14 @@
 D: REINER SCT cyberJack pinpad/e-com USB chipcard reader driver
 S: Germany
 
+N: Adrian Bunk
+E: bunk@stusta.de
+P: 1024D/4F12B400  B29C E71E FE19 6755 5C8A  84D4 99FC EA98 4F12 B400
+D: misc kernel hacking and testing
+S: Grasmeierstrasse 11
+S: 80805 Muenchen
+S: Germany
+
 N: Ray Burr
 E: ryb@nightmare.com
 D: Original author of Amiga FFS filesystem
@@ -513,6 +523,14 @@
 S: Oxford
 S: United Kingdom
 
+N: Luiz Fernando N. Capitulino
+E: lcapitulino@terra.com.br
+E: lcapitulino@prefeitura.sp.gov.br
+W: http://www.telecentros.sp.gov.br
+D: Little fixes and a lot of janitorial work
+S: E-GOV Telecentros SP
+S: Brazil
+
 N: Remy Card
 E: Remy.Card@masi.ibp.fr
 E: Remy.Card@linux.org
@@ -625,6 +643,14 @@
 D: Assorted sched/mm titbits
 S: Oxfordshire, UK.
 
+N: Kees Cook
+E: kees@outflux.net
+W: http://outflux.net/
+P: 1024D/17063E6D 9FA3 C49C 23C9 D1BC 2E30  1975 1FFF 4BA9 1706 3E6D
+D: Minor updates to SCSI code for the Communications type
+S: (ask for current address)
+S: USA
+
 N: Mark Corner
 E: mcorner@umich.edu
 W: http://www.eecs.umich.edu/~mcorner/
@@ -639,14 +665,6 @@
 S: Santa Cruz, California
 S: USA
 
-N: Kees Cook
-E: kees@outflux.net
-W: http://outflux.net/
-P: 1024D/17063E6D 9FA3 C49C 23C9 D1BC 2E30  1975 1FFF 4BA9 1706 3E6D
-D: Minor updates to SCSI code for the Communications type
-S: (ask for current address)
-S: USA
-
 N: Alan Cox
 W: http://www.linux.org.uk/diary/
 D: Linux Networking (0.99.10->2.0.29)
@@ -735,6 +753,12 @@
 S: D-69231 Rauenberg
 S: Germany
 
+N: Jean Delvare
+E: khali@linux-fr.org
+W: http://khali.linux-fr.org/
+D: Several hardware monitoring drivers
+S: France
+
 N: Peter Denison
 E: peterd@pnd-pc.demon.co.uk
 W: http://www.pnd-pc.demon.co.uk/promise/
@@ -754,7 +778,7 @@
 D: HTB qdisc and random networking hacks
 
 N: Alex deVries
-E: adevries@thepuffingroup.com
+E: alex@onefishtwo.ca
 D: Various SGI parts, bits of HAL2 and Newport, PA-RISC Linux.
 S: 41.5 William Street
 S: Ottawa, Ontario
@@ -780,6 +804,21 @@
 S: Round Rock, TX  78682
 S: USA
 
+N: Ben Dooks
+E: ben-linux@fluff.org
+E: ben@simtec.co.uk
+W: http://www.fluff.org/ben/
+W: http://www.simtec.co.uk/
+D: Samsung S3C2410/S3C2440 support, general ARM support
+D: Maintaining Simtec Electronics development boards
+S: Simtec Electronics
+S: Avondale Drive
+S: Tarleton
+S: Preston
+S: Lancs
+S: PR4 6AX
+S: United Kingdom
+
 N: John G Dorsey
 E: john+@cs.cmu.edu
 D: ARM Linux ports to Assabet/Neponset, Spot
@@ -801,6 +840,11 @@
 W: http://www.fsmlabs.com/linuxppcbk.html
 D: PowerPC
 
+N: Daniel Drake
+E: dsd@gentoo.org
+D: USBAT02 CompactFlash support in usb-storage
+S: UK
+
 N: Oleg Drokin
 E: green@ccssu.crimea.ua
 W: http://www.ccssu.crimea.ua/~green
@@ -838,13 +882,12 @@
 S: USA
 
 N: Randy Dunlap
-E: rddunlap@osdl.org
+E: rdunlap@xenotime.net
 W: http://www.xenotime.net/linux/linux.html
 W: http://www.linux-usb.org
 D: Linux-USB subsystem, USB core/UHCI/printer/storage drivers
 D: x86 SMP, ACPI, bootflag hacking
-S: 12725 SW Millikan Way, Suite 400
-S: Beaverton, Oregon 97005
+S: (ask for current address)
 S: USA
 
 N: Bob Dunlop
@@ -905,6 +948,10 @@
 S: S-114 79 Stockholm
 S: Sweden
 
+N: David Engebretsen
+E: engebret@us.ibm.com
+D: Linux port to 64-bit PowerPC architecture
+
 N: Michael Engel
 E: engel@unix-ag.org
 D: DECstation framebuffer drivers
@@ -1049,6 +1096,12 @@
 S: 80050-430 - Curitiba - Paraná
 S: Brazil
 
+N: Kumar Gala
+E: kumar.gala@freescale.com
+D: Embedded PowerPC 6xx/7xx/74xx/82xx/83xx/85xx support
+S: Austin, Texas 78729
+S: USA
+
 N: Nigel Gamble
 E: nigel@nrg.org
 D: Interrupt-driven printer driver
@@ -1060,12 +1113,6 @@
 N: Jeff Garzik
 E: jgarzik@pobox.com
 
-N: Kumar Gala
-E: kumar.gala@freescale.com
-D: Embedded PowerPC 6xx/7xx/74xx/82xx/85xx support
-S: Austin, Texas 78729
-S: USA
-
 N: Jacques Gelinas
 E: jacques@solucorp.qc.ca
 D: Author of the Umsdos file system
@@ -1563,10 +1610,37 @@
 D: Various Janitor work.
 S: United Kingdom
 
+N: Martin Josfsson
+E: gandalf@wlug.westbo.se
+P: 1024D/F6B6D3B1 7610 7CED 5C34 4AA6 DBA2  8BE1 5A6D AF95 F6B6 D3B1
+D: netfilter: SAME target
+D: netfilter: helper target
+D: netfilter: various other hacks
+S: Ronneby
+S: Sweden
+
 N: Ani Joshi
 E: ajoshi@shell.unixbox.com
 D: fbdev hacking
 
+N: Jesper Juhl
+E: juhl-lkml@dif.dk
+D: Various small janitor fixes, cleanups etc.
+S: Lemnosvej 1, 3.tv
+S: 2300 Copenhagen S
+S: Denmark
+
+N: Jozsef Kadlecsik
+E: kadlec@blackhole.kfki.hu
+P: 1024D/470DB964 4CB3 1A05 713E 9BF7 FAC5  5809 DD8C B7B1 470D B964
+D: netfilter: TCP window tracking code
+D: netfilter: raw table
+D: netfilter: iprange match
+D: netfilter: new logging interfaces
+D: netfilter: various other hacks
+S: Tata
+S: Hungary
+
 N: Bernhard Kaindl
 E: bkaindl@netway.at
 E: edv@bartelt.via.at
@@ -1755,7 +1829,8 @@
 
 N: Greg Kroah-Hartman
 E: greg@kroah.com
-W: http://www.kroah.com/linux-usb/
+E: gregkh@suse.de
+W: http://www.kroah.com/linux/
 D: USB Serial Converter driver framework, USB Handspring Visor driver
 D: ConnectTech WHITEHeat USB driver, Generic USB Serial driver
 D: USB I/O Edgeport driver, USB Serial IrDA driver
@@ -1763,6 +1838,7 @@
 D: bits and pieces of USB core code.
 D: PCI Hotplug core, PCI Hotplug Compaq driver modifications
 D: portions of the Linux Security Module (LSM) framework
+D: parts of the driver core, debugfs.
 
 N: Russell Kroll
 E: rkroll@exploits.org
@@ -1818,11 +1894,6 @@
 S: 370 01  Ceske Budejovice
 S: Czech Republic
 
-N: Adam Belay
-E: ambx1@neo.rr.com
-D: Linux Plug and Play Support
-S: USA
-
 N: Bas Laarhoven
 E: sjml@xs4all.nl
 D: Loadable modules and ftape driver
@@ -1842,7 +1913,7 @@
 D: Bug fixes
 
 N: Paul Laufer
-E: pelaufer@csupomona.edu
+E: paul@laufernet.com
 D: Soundblaster driver fixes, ISAPnP quirk
 S: California, USA
 
@@ -1886,7 +1957,8 @@
 N: Colin Leroy
 E: colin@colino.net
 W: http://www.geekounet.org/
-D: PowerMac adt7467 fan driver
+D: PowerMac adt746x fan driver
+D: Random fixing of various drivers (macintosh, usb, sound)
 S: Toulouse
 S: France
 
@@ -1954,12 +2026,6 @@
 S: Niwot, Colorado 80503
 S: USA
 
-N: Pete Popov
-E: pete_popov@yahoo.com
-D: Linux/MIPS AMD/Alchemy Port and mips hacking and debugging
-S: San Jose, CA 95134
-S: USA
-
 N: Robert M. Love
 E: rml@tech9.net
 E: rml@novell.com
@@ -1976,6 +2042,17 @@
 E: hjl@gnu.ai.mit.edu
 D: GCC + libraries hacker
 
+N: Michal Ludvig
+E: michal@logix.cz
+E: michal.ludvig@asterisk.co.nz
+W: http://www.logix.cz/michal
+P: 1024D/C45B2218 1162 6471 D391 76E0 9F99  29DA 0C3A 2509 C45B 2218
+D: VIA PadLock driver
+D: Netfilter pkttype module
+S: Asterisk Ltd.
+S: Auckland
+S: New Zealand
+
 N: Tuomas J. Lukka
 E: Tuomas.Lukka@Helsinki.FI
 D: Original dual-monitor patches
@@ -2127,6 +2204,16 @@
 S: (address available on request)
 S: USA
 
+N: Patrick McHardy
+E: kaber@trash.net
+P: 1024D/12155E80 B128 7DE6 FF0A C2B2 48BE  AB4C C9D4 964E 1215 5E80
+D: netfilter: endless number of bugfixes
+D: netfilter: CLASSIFY target
+D: netfilter: addrtype match
+D: tc: HFSC scheduler
+S: Freiburg
+S: Germany
+
 N: Mike McLagan
 E: mike.mclagan@linux.org
 W: http://www.invlogic.com/~mmclagan
@@ -2214,14 +2301,13 @@
 S: Netherlands
 
 N: David S. Miller
-E: davem@redhat.com
+E: davem@davemloft.net
 D: Sparc and blue box hacker
 D: Vger Linux mailing list co-maintainer
 D: Linux Emacs elf/qmagic support + other libc/gcc things
 D: Yee bore de yee bore! ;-)
-S: 750 N. Shoreline Blvd.
-S: Apt. #111
-S: Mountain View, California 94043
+S: 575 Harrison St. #103
+S: San Francisco, CA 94105
 S: USA
 
 N: Rick Miller
@@ -2570,6 +2656,7 @@
 E: nico@cam.org
 D: StrongARM SA1100 support integrator & hacker
 D: Xscale PXA architecture
+D: unified SMC 91C9x/91C11x ethernet driver (smc91x)
 S: Montreal, Quebec, Canada
 
 N: Ken Pizzini
@@ -2582,6 +2669,12 @@
 D: sonypi, meye drivers, mct_u232 usb serial hacks
 S: Paris, France
 
+N: Pete Popov
+E: pete_popov@yahoo.com
+D: Linux/MIPS AMD/Alchemy Port and mips hacking and debugging
+S: San Jose, CA 95134
+S: USA
+
 N: Matt Porter
 E: mporter@kernel.crashing.org
 D: Motorola PowerPC PReP support
@@ -2709,7 +2802,7 @@
 E: luca.risolia@studio.unibo.it
 P: 1024D/FCE635A4 88E8 F32F 7244 68BA 3958  5D40 99DA 5D2A FCE6 35A4
 D: V4L driver for W996[87]CF JPEG USB Dual Mode Camera Chips
-D: V4L2 driver for SN9C10[12] PC Camera Controllers
+D: V4L2 driver for SN9C10x PC Camera Controllers
 S: Via Liberta' 41/A
 S: Osio Sotto, 24046, Bergamo
 S: Italy
@@ -2797,7 +2890,7 @@
 
 N: Paul `Rusty' Russell
 E: rusty@rustcorp.com.au
-W: http://www.samba.org/netfilter
+W: http://ozlabs.org/~rusty
 D: Ruggedly handsome.
 D: netfilter, ipchains with Michael Neuling.
 S: 52 Moore St
@@ -2821,7 +2914,6 @@
 S: Wellington
 S: New Zealand
 
-
 N: Sampo Saaristo
 E: sambo@cs.tut.fi
 D: Co-author of Multi-Protocol Over ATM (MPOA)
@@ -2838,6 +2930,9 @@
 S: 8006 Zuerich
 S: Switzerland
 
+N: Manuel Estrada Sainz
+D: Firmware loader (request_firmware)
+
 N: Wayne Salamon
 E: wsalamon@tislabs.com
 E: wsalamon@nai.com
@@ -2864,10 +2959,10 @@
 S: Finland
 
 N: Deepak Saxena
-E: deepak@csociety.purdue.edu
+E: dsaxena@plexity.net
 D: I2O kernel layer (config, block, core, pci, net). I2O disk support for LILO
-D: XScale(IOP310) porting
-S: Tempe, Arizona
+D: XScale(IOP, IXP) porting and other random ARM bits
+S: Portland, OR
 
 N: Eric Schenk
 E: Eric.Schenk@dna.lth.se
@@ -3093,6 +3188,14 @@
 S: Seattle, WA  98195-1800
 S: USA
 
+N: Eugene Surovegin
+E: ebs@ebshome.net
+W: http://kernel.ebshome.net/
+P: 1024D/AE5467F1 FF22 39F1 6728 89F6 6E6C  2365 7602 F33D AE54 67F1
+D: Embedded PowerPC 4xx: I2C, PIC and random hacks/fixes
+S: Sunnyvale, California 94085
+S: USA
+
 N: Corey Thomas
 E: corey@world.std.com
 W: http://world.std.com/~corey/index.html
@@ -3195,6 +3298,7 @@
 D: Author of job control and system call restart code
 D: Author of ramdisk device driver
 D: Author of loopback device driver
+D: Author of /dev/random driver
 S: MIT Room E40-343
 S: 1 Amherst Street
 S: Cambridge, Massachusetts 02139
@@ -3252,10 +3356,11 @@
 S: USA
 
 N: Matthias Urlichs
-E: urlichs@noris.de
-E: urlichs@smurf.sub.org
+E: smurf@smurf.noris.de
+E: smurf@debian.org
+E: matthias@urlichs.de
 D: Consultant, developer, kernel hacker
-D: Playing with Streams, ISDN, and BSD networking code for Linux
+D: In a previous life, worked on Streams/ISDN/BSD networking code for Linux
 S: Schleiermacherstrasse 12
 S: 90491 Nuernberg
 S: Germany
@@ -3272,7 +3377,7 @@
 D: Atari Falcon chipset IDE
 D: Amiga Gayle chipset IDE
 D: mipsel NEC DDB Vrc-5074
-S: Holsbeeksesteenweg 166
+S: Emiel Vlieberghlaan 2A/21
 S: B-3010 Kessel-Lo
 S: Belgium
 
@@ -3289,14 +3394,6 @@
 S: 10200 Prague 10, Hostivar
 S: Czech Republic
 
-N: James R. Van Zandt
-E: jrv@vanzandt.mv.com
-P: 1024/E298966D F0 37 4F FD E5 7E C5 E6  F1 A0 1E 22 6F 46 DA 0C
-D: Author and maintainer of the Double Talk speech synthesizer driver
-S: 27 Spencer Drive
-S: Nashua, New Hampshire 03062
-S: USA
-
 N: Heikki Vatiainen
 E: hessu@cs.tut.fi
 D: Co-author of Multi-Protocol Over ATM (MPOA), some LANE hacks
@@ -3335,6 +3432,7 @@
 E: pe1rxq@amsat.org
 W: http://www.chello.nl/~j.vreeken/
 D: SE401 usb webcam driver
+D: ZD1201 usb wireless lan driver
 S: Maastrichterweg 63
 S: 5554 GG Valkenswaard
 S: The Netherlands
@@ -3387,6 +3485,18 @@
 S: Berkeley, CA 94720-1776
 S: USA
 
+N: Harald Welte
+E: laforge@netfilter.org
+P: 1024D/30F48BFF DBDE 6912 8831 9A53 879B  9190 5DA5 C655 30F4 8BFF
+W: http://gnumonks.org/users/laforge
+D: netfilter: new nat helper infrastructure
+D: netfilter: ULOG, ECN, DSCP target
+D: netfilter: TTL match
+D: netfilter: IPv6 mangle table
+D: netfilter: various other hacks
+S: Berlin
+S: Germany
+
 N: Bill Wendling
 E: wendling@ganymede.isdn.uiuc.edu
 W: http://www.ncsa.uiuc.edu/~wendling/
@@ -3502,7 +3612,6 @@
 
 N: David Woodhouse
 E: dwmw2@infradead.org
-E: dwmw2@redhat.com
 D: ARCnet stuff, Applicom board driver, SO_BINDTODEVICE,
 D: some Alpha platform porting from 2.0, Memory Technology Devices,
 D: Acquire watchdog timer, PC speaker driver maintenance,
@@ -3578,6 +3687,14 @@
 S: Tokyo 153
 S: Japan
 
+N: James R. Van Zandt
+E: jrv@vanzandt.mv.com
+P: 1024/E298966D F0 37 4F FD E5 7E C5 E6  F1 A0 1E 22 6F 46 DA 0C
+D: Author and maintainer of the Double Talk speech synthesizer driver
+S: 27 Spencer Drive
+S: Nashua, New Hampshire 03062
+S: USA
+
 N: Orest Zborowski
 E: orestz@eskimo.com
 D: XFree86 and kernel development
@@ -3619,13 +3736,6 @@
 D: EISA/sysfs subsystem
 S: France
 
-N: Luiz Fernando N. Capitulino
-E: lcapitulino@terra.com.br
-E: lcapitulino@prefeitura.sp.gov.br
-W: http://www.telecentros.sp.gov.br
-D: Little fixes and a lot of janitorial work
-S: E-GOV Telecentros SP
-S: Brazil
 
 # Don't add your name here, unless you really _are_ after Marc
 # alphabetically. Leonard used to be very proud of being the 
diff -urN malta/linux/MAINTAINERS malta/linux/MAINTAINERS
--- malta/linux/MAINTAINERS	2004/09/14 16:27:37	1.151.1000.2
+++ malta/linux/MAINTAINERS	2005/06/21 13:20:27	1.151.1000.3
@@ -73,21 +73,21 @@
 3C359 NETWORK DRIVER
 P:	Mike Phillips
 M:	mikep@linuxtr.net
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 L:	linux-tr@linuxtr.net
 W:	http://www.linuxtr.net
 S:	Maintained
 
 3C505 NETWORK DRIVER
 P:	Philip Blundell
-M:	Philip.Blundell@pobox.com
-L:	linux-net@vger.kernel.org
+M:	philb@gnu.org
+L:	netdev@oss.sgi.com
 S:	Maintained
 
 3CR990 NETWORK DRIVER
 P:	David Dillow
 M:	dave@thedillows.org
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 S:	Maintained
 
 3W-XXXX ATA-RAID CONTROLLER DRIVER
@@ -143,7 +143,7 @@
 8390 NETWORK DRIVERS [WD80x3/SMC-ELITE, SMC-ULTRA, NE2000, 3C503, etc.]
 P:	Paul Gortmaker
 M:	p_gortmaker@yahoo.com
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 S:	Maintained
 
 A2232 SERIAL BOARD DRIVER
@@ -155,7 +155,7 @@
 
 AIO
 P:	Benjamin LaHaise
-M:	bcrl@redhat.com
+M:	bcrl@kvack.org
 L:	linux-aio@kvack.org
 S:	Supported
 
@@ -169,17 +169,9 @@
 P:	Robert Siemer
 M:	Robert.Siemer@gmx.de
 L:	linux-sound@vger.kernel.org
-W:	http://www.uni-karlsruhe.de/~Robert.Siemer/Private/
+W:	http://www.stud.uni-karlsruhe.de/~uh1b/
 S:	Maintained
 
-ACP/MWAVE MODEM
-P:	Paul B Schroeder
-M:	paulsch@us.ibm.com
-P:	Mike Sullivan
-M:	sullivam@us.ibm.com
-W:	http://www.ibm.com/linux/ltc/
-S:	Supported
-
 AACRAID SCSI RAID DRIVER
 P:	Adaptec OEM Raid Solutions
 L:	linux-scsi@vger.kernel.org
@@ -195,8 +187,14 @@
 
 AD1816 SOUND DRIVER
 P:	Thorsten Knabe
-W:	http://www.student.informatik.tu-darmstadt.de/~tek/projects/linux.html
-W:	http://www.tu-darmstadt.de/~tek01/projects/linux.html
+M:	Thorsten Knabe <linux@thorsten-knabe.de>
+W:	http://linux.thorsten-knabe.de
+S:	Maintained
+
+ADM1025 HARDWARE MONITOR DRIVER
+P:	Jean Delvare
+M:	khali@linux-fr.org
+L:	sensors@stimpy.netroedge.com
 S:	Maintained
 
 ADT746X FAN DRIVER
@@ -241,6 +239,12 @@
 W:	http://www.linux-usb.org/SpeedTouch/
 S:	Maintained
 
+ALI1563 I2C DRIVER
+P:	Rudolf Marek
+M:	r.marek@sh.cvut.cz
+L:	sensors@stimpy.netroedge.com
+S:	Maintained
+
 ALPHA PORT
 P:	Richard Henderson
 M:	rth@twiddle.net
@@ -277,8 +281,19 @@
 S:	Maintained
 
 ARM MFM AND FLOPPY DRIVERS
-P:	Dave Gilbert
-M:	linux@treblig.org
+P:	Ian Molton
+M:	spyro@f2s.com
+S:	Maintained
+
+ARM/CORGI MACHINE SUPPORT
+P:	Richard Purdie
+M:	rpurdie@rpsys.net
+S:	Maintained
+
+ARM/PLEB SUPPORT
+P:	Peter Chubb
+M:	pleb@gelato.unsw.edu.au
+W:	http://www.disy.cse.unsw.edu.au/Hardware/PLEB
 S:	Maintained
 
 ARM/PT DIGITAL BOARD PORT
@@ -301,9 +316,23 @@
 W:	http://www.arm.linux.org.uk/
 S:	Maintained
 
+ARM/S3C2410 ARM ARCHITECTURE
+P:	Ben Dooks
+M:	ben-s3c2410@fluff.org
+L:	linux-arm-kernel@lists.arm.linux.org.uk
+W:	http://www.fluff.org/ben/linux/
+S:	Maintained
+
+ARM/S3C2440 ARM ARCHITECTURE
+P:	Ben Dooks
+M:	ben-s3c2440@fluff.org
+L:	linux-arm-kernel@lists.arm.linux.org.uk
+W:	http://www.fluff.org/ben/linux/
+S:	Maintained
+
 ARPD SUPPORT
 P:	Jonathan Layes
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 S:	Maintained
 
 ASUS ACPI EXTRAS DRIVER
@@ -316,6 +345,12 @@
 W:	http://julien.lerouge.free.fr
 S:	Maintained
 
+ATA OVER ETHERNET DRIVER
+P:	Ed L. Cashin
+M:	ecashin@coraid.com
+W:	http://www.coraid.com/support/linux
+S:	Supported
+
 ATM
 P:	Chas Williams
 M:	chas@cmf.nrl.navy.mil
@@ -420,6 +455,11 @@
 M:	marcel@holtmann.org
 S:	Maintained
 
+BLUETOOTH HCI BPA10X DRIVER
+P:	Marcel Holtmann
+M:	marcel@holtmann.org
+S:	Maintained
+
 BLUETOOTH HCI BFUSB DRIVER
 P:	Marcel Holtmann
 M:	marcel@holtmann.org
@@ -464,7 +504,7 @@
 M:	kraxel@bytesex.org
 L:	video4linux-list@redhat.com
 W:	http://bytesex.org/bttv/
-S:	Maintained
+S:	Orphan
 
 BUSLOGIC SCSI DRIVER
 P:	Leonard N. Zubkoff
@@ -525,10 +565,9 @@
 COMPUTONE INTELLIPORT MULTIPORT CARD
 P:	Michael H. Warfield
 M:	Michael H. Warfield <mhw@wittsend.com>
-W:	http://www.computone.com/
 W:	http://www.wittsend.com/computone.html
 L:	linux-computone@lazuli.wittsend.com
-S:	Supported
+S:	Orphaned
 
 COSA/SRP SYNC SERIAL DRIVER
 P:	Jan "Yenya" Kasprzak
@@ -539,7 +578,7 @@
 CPU FREQUENCY DRIVERS
 P:	Dave Jones
 M:	davej@codemonkey.org.uk
-L:	cpufreq@www.linux.org.uk
+L:	cpufreq@lists.linux.org.uk
 W:	http://www.codemonkey.org.uk/projects/cpufreq/
 S:	Maintained
 
@@ -553,19 +592,18 @@
 S:     Orphan
 
 CRIS PORT
-P:	Bjorn Wesen
-M:	bjornw@axis.com
+P:	Mikael Starvik
+M:	starvik@axis.com
 L:	dev-etrax@axis.com
 W:	http://developer.axis.com
 S:	Maintained
 
 CRYPTO API
-P:	James Morris
-M:	jmorris@redhat.com
+P:	Herbert Xu
+M:	herbert@gondor.apana.org.au
 P:	David S. Miller
-M:	davem@redhat.com
-W	http://samba.org/~jamesm/crypto/
-L:	linux-kernel@vger.kernel.org
+M:	davem@davemloft.net
+L:	linux-crypto@vger.kernel.org
 S:	Maintained
 
 CYBERPRO FB DRIVER
@@ -621,12 +659,14 @@
 P:	Kurt Garloff
 M:	garloff@suse.de
 W:	http://www.garloff.de/kurt/linux/dc390/
+P:	Guennadi Liakhovetski
+M:	g.liakhovetski@gmx.de
 S:	Maintained
 
 DECnet NETWORK LAYER
-P:	Steven Whitehouse
-M:	SteveW@ACM.org
-W:	http://www.sucs.swan.ac.uk/~rohan/DECnet/index.html
+P:	Patrick Caulfield
+M:	patrick@tykepenguin.com
+W:	http://linux-decnet.sourceforge.net
 L:	linux-decnet-user@lists.sourceforge.net
 S:	Maintained
 
@@ -648,8 +688,9 @@
 S:	Maintained
 
 DEVICE NUMBER REGISTRY
-P:	John Cagle
+P:	Torben Mathiasen
 M:	device@lanana.org
+W:	http://lanana.org/docs/device-list/index.html
 L:	linux-kernel@vger.kernel.org
 S:	Maintained
 
@@ -661,19 +702,12 @@
 M:	Eng.Linux@digi.com
 L:	Eng.Linux@digi.com
 W:	http://www.digi.com
-S:	Maintained
+S:	Orphaned
 
 DIGI RIGHTSWITCH NETWORK DRIVER
 P:	Rick Richardson
-L:	linux-net@vger.kernel.org
-W:	http://www.digi.com
-S:	Orphaned
-
-DIGIBOARD PC/XE AND PC/XI DRIVER
-P:	Christoph Lameter
-M:	christoph@lameter.com
+L:	netdev@oss.sgi.com
 W:	http://www.digi.com
-L:	digilnux@digi.com
 S:	Orphaned
 
 DIRECTORY NOTIFICATION
@@ -691,8 +725,8 @@
 S:	Maintained
 
 DISKQUOTA:
-P:	Marco van Wieringen
-M:	mvw@planets.elm.net
+P:	Jan Kara
+M:	jack@suse.cz
 L:	linux-kernel@vger.kernel.org
 S:	Maintained
 
@@ -710,13 +744,15 @@
 
 DRIVER CORE, KOBJECTS, AND SYSFS
 P:	Greg Kroah-Hartman
-M:	greg@kroah.com
+M:	gregkh@suse.de
 L:	linux-kernel@vger.kernel.org
 S:	Supported
 
 DRM DRIVERS
+P:	David Airlie
+M:	airlied@linux.ie
 L:	dri-devel@lists.sourceforge.net
-S:	Supported
+S:	Maintained
 
 DSCC4 DRIVER
 P:	François Romieu
@@ -762,8 +798,8 @@
 S:	Maintained
 
 EMU10K1 SOUND DRIVER
-P:	Rui Sousa	
-M:	rui.p.m.sousa@clix.pt	
+P:	James Courtier-Dutton
+M:	James@superbug.demon.co.uk
 L:	emu10k1-devel@lists.sourceforge.net
 W:	http://sourceforge.net/projects/emu10k1/
 S:	Maintained
@@ -775,8 +811,8 @@
 
 ETHEREXPRESS-16 NETWORK DRIVER
 P:	Philip Blundell
-M:	Philip.Blundell@pobox.com
-L:	linux-net@vger.kernel.org
+M:	philb@gnu.org
+L:	netdev@oss.sgi.com
 S:	Maintained
 
 ETHERNET BRIDGE
@@ -797,7 +833,7 @@
 
 EXT3 FILE SYSTEM
 P:	Stephen Tweedie, Andrew Morton
-M:	sct@redhat.com, akpm@digeo.com, adilger@clusterfs.com
+M:	sct@redhat.com, akpm@osdl.org, adilger@clusterfs.com
 L:	ext3-users@redhat.com
 S:	Maintained
 
@@ -809,11 +845,11 @@
 S:	Supported
 
 FRAMEBUFFER LAYER
-P:	James Simmons, Geert Uytterhoeven	
-M:	jsimmons@infradead.org, geert@linux-m68k.org	
+P:	Antonino Daplas
+M:	adaplas@pol.net
 L:	linux-fbdev-devel@lists.sourceforge.net	
 W:	http://linux-fbdev.sourceforge.net/
-S:	Supported
+S:	Maintained
 
 FILE LOCKING (flock() and fcntl()/lockf())
 P:	Matthew Wilcox
@@ -823,14 +859,12 @@
 
 FILESYSTEMS (VFS and infrastructure)
 P:	Alexander Viro
-M:	viro@math.psu.edu
+M:	viro@parcelfarce.linux.theplanet.co.uk
 S:	Maintained
 
 FIRMWARE LOADER (request_firmware)
-P:	Manuel Estrada Sainz
-M:	ranty@debian.org
 L:	linux-kernel@vger.kernel.org
-S:	Maintained
+S:	Orphan
 
 FPU EMULATOR
 P:	Bill Metzenthen
@@ -841,7 +875,7 @@
 FRAME RELAY DLCI/FRAD (Sangoma drivers too)
 P:	Mike McLagan
 M:	mike.mclagan@linux.org
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 S:	Maintained
 
 FREEVXFS FILESYSTEM
@@ -850,12 +884,15 @@
 W:	ftp://ftp.openlinux.org/pub/people/hch/vxfs
 S:	Maintained
 
+FUJITSU FR-V PORT
+P:	David Howells
+M:	dhowells@redhat.com
+S:	Maintained
+
 FTAPE/QIC-117
-P:	Claus-Justus Heine
-M:	claus@momo.math.rwth-aachen.de
 L:	linux-tape@vger.kernel.org
-W:	http://www-math.math.rwth-aachen.de/~LBFM/claus/ftape/
-S:	Maintained
+W:	http://sourceforge.net/projects/ftape
+S:	Orphan
 
 FUTURE DOMAIN TMC-16x0 SCSI DRIVER (16-bit)
 P:	Rik Faith
@@ -870,10 +907,17 @@
 W:	http://www.icp-vortex.com/
 S:	Supported
 
-GENERIC HDLC DRIVER, N2 AND C101 DRIVERS
+GENERIC HDLC DRIVER, N2, C101, PCI200SYN and WANXL DRIVERS
 P:	Krzysztof Halasa
 M:	khc@pm.waw.pl
-W:	http://hq.pm.waw.pl/hdlc/
+W:	http://www.kernel.org/pub/linux/utils/net/hdlc/
+S:	Maintained
+
+HARMONY SOUND DRIVER
+P:	Kyle McMartin
+M:	kyle@parisc-linux.org
+W:	http://www.parisc-linux.org/~kyle/harmony/
+L:	parisc-linux@lists.parisc-linux.org
 S:	Maintained
 
 HAYES ESP SERIAL DRIVER
@@ -938,20 +982,26 @@
 W:	http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi
 S:	Maintained
 
-HPUSBSCSI
-P:	Oliver Neukum
-M:	drivers@neukum.org
+HUGETLB FILESYSTEM
+P:	William Irwin
+M:	wli@holomorphy.com
 S:	Maintained
 
 I2C AND SENSORS DRIVERS
 P:	Greg Kroah-Hartman
 M:	greg@kroah.com
-P:	Philip Edelbrock
-M:	phil@netroedge.com
+P:	Jean Delvare
+M:	khali@linux-fr.org
 L:	sensors@stimpy.netroedge.com
 W:	http://www.lm-sensors.nu/
 S:	Maintained
 
+I2O
+P:	Markus Lidel
+M:	markus.lidel@shadowconnect.com
+W:	http://i2o.shadowconnect.com/
+S:	Maintained
+
 i386 BOOT CODE
 P:	Riley H. Williams
 M:	Riley@Williams.Name
@@ -972,15 +1022,15 @@
 S:	Maintained
 
 IA64 (Itanium) PLATFORM
-P:	David Mosberger-Tang
-M:	davidm@hpl.hp.com
+P:	Tony Luck
+M:	tony.luck@intel.com
 L:	linux-ia64@vger.kernel.org
 W:	http://www.ia64-linux.org/
 S:	Maintained
 
 SN-IA64 (Itanium) SUB-PLATFORM
-P:	Jesse Barnes
-M:	jbarnes@sgi.com
+P:	Greg Edwards
+M:	edwardsg@sgi.com
 L:	linux-altix@sgi.com
 L:	linux-ia64@vger.kernel.org
 W:	http://www.sgi.com/altix
@@ -1031,9 +1081,21 @@
 L:	linux-kernel@vger.kernel.org
 S:	Maintained
 
+IEEE 1394 ETHERNET (eth1394)
+L:	linux1394-devel@lists.sourceforge.net
+W:	http://www.linux1394.org/
+S:	Orphan
+
+IEEE 1394 SBP2
+L:	linux1394-devel@lists.sourceforge.net
+W:	http://www.linux1394.org/
+S:	Orphan
+
 IEEE 1394 SUBSYSTEM
 P:	Ben Collins
 M:	bcollins@debian.org
+P:	Jody McIntyre
+M:	scjody@steamballoon.com
 L:	linux1394-devel@lists.sourceforge.net
 W:	http://www.linux1394.org/
 S:	Maintained
@@ -1041,13 +1103,15 @@
 IEEE 1394 OHCI DRIVER
 P:	Ben Collins
 M:	bcollins@debian.org
+P:	Jody McIntyre
+M:	scjody@steamballoon.com
 L:	linux1394-devel@lists.sourceforge.net
 W:	http://www.linux1394.org/
 S:	Maintained
 
 IEEE 1394 PCILYNX DRIVER
-P:	Andreas Bombe
-M:	andreas.bombe@munich.netsurf.de
+P:	Jody McIntyre
+M:	scjody@steamballoon.com
 L:	linux1394-devel@lists.sourceforge.net
 W:	http://www.linux1394.org/
 S:	Maintained
@@ -1055,6 +1119,8 @@
 IEEE 1394 RAW I/O DRIVER
 P:	Ben Collins
 M:	bcollins@debian.org
+P:	Dan Dennedy
+M:	dan@dennedy.org
 L:	linux1394-devel@lists.sourceforge.net
 W:	http://www.linux1394.org/
 S:	Maintained
@@ -1065,6 +1131,24 @@
 L:	linux-fbdev-devel@lists.sourceforge.net
 S:	Maintained
 
+INFINIBAND SUBSYSTEM
+P:	Roland Dreier
+M:	roland@topspin.com
+P:	Sean Hefty
+M:	mshefty@ichips.intel.com
+P:	Hal Rosenstock
+M:	halr@voltaire.com
+L:	openib-general@openib.org
+W:	http://www.openib.org/
+S:	Supported
+
+INPUT (KEYBOARD, MOUSE, JOYSTICK) DRIVERS
+P:	Vojtech Pavlik
+M:	vojtech@suse.cz
+L:	linux-input@atrey.karlin.mff.cuni.cz
+L:	linux-joystick@atrey.karlin.mff.cuni.cz
+S:	Maintained
+
 INTEL 810/815 FRAMEBUFFER DRIVER
 P:      Antonino Daplas
 M:      adaplas@pol.net
@@ -1092,8 +1176,8 @@
 M:	john.ronciak@intel.com
 P:	Ganesh Venkatesan
 M:	ganesh.venkatesan@intel.com
-P:	Scott Feldman
-M:	scott.feldman@intel.com
+P:	Jesse Brandeburg
+M:	jesse.brandeburg@intel.com
 W:	http://sourceforge.net/projects/e1000/
 S:	Supported
 
@@ -1117,13 +1201,6 @@
 W:	http://sourceforge.net/projects/e1000/
 S:	Supported
 
-INTERMEZZO FILE SYSTEM
-P:	Cluster File Systems	
-M:	intermezzo-devel@lists.sf.net
-W:	http://www.inter-mezzo.org/
-L:	intermezzo-discuss@lists.sourceforge.net
-S:	Maintained
-
 IOC3 DRIVER
 P:	Ralf Baechle
 M:	ralf@linux-mips.org
@@ -1138,7 +1215,7 @@
 IPX NETWORK LAYER
 P:	Arnaldo Carvalho de Melo
 M:	acme@conectiva.com.br
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 S:	Maintained
 
 IRDA SUBSYSTEM
@@ -1185,17 +1262,10 @@
 JFS FILESYSTEM
 P:	Dave Kleikamp
 M:	shaggy@austin.ibm.com
-L:	jfs-discussion@oss.software.ibm.com
-W:	http://oss.software.ibm.com/jfs/
+L:	jfs-discussion@lists.sourceforge.net
+W:	http://jfs.sourceforge.net/
 S:	Supported
 
-JOYSTICK DRIVER
-P:	Vojtech Pavlik
-M:	vojtech@suse.cz
-L:	linux-joystick@atrey.karlin.mff.cuni.cz
-W:	http://www.suse.cz/development/joystick/
-S:	Maintained
-
 KCONFIG
 P:	Roman Zippel
 M:	zippel@linux-m68k.org
@@ -1237,6 +1307,12 @@
 W:	http://www.cse.unsw.edu.au/~neilb/patches/linux-devel/
 S:	Maintained
 
+KERNEL EVENT LAYER (KOBJECT_UEVENT)
+P:	Robert Love
+M:	rml@novell.com
+L:	linux-kernel@vger.kernel.org
+S:	Maintained
+
 LANMEDIA WAN CARD DRIVER
 P:	Andrew Stanley-Jones
 M:	asj@lanmedia.com
@@ -1277,35 +1353,45 @@
 LINUX FOR POWERPC
 P:	Paul Mackerras
 M:	paulus@samba.org
-W:	http://www.fsmlabs.com/linuxppcbk.html
+W:	http://www.penguinppc.org/
+L:	linuxppc-dev@ozlabs.org
 S:	Supported
 
 LINUX FOR POWER MACINTOSH
 P:	Benjamin Herrenschmidt
 M:	benh@kernel.crashing.org
-W:	http://www.linuxppc.org/
-L:	linuxppc-dev@lists.linuxppc.org
+W:	http://www.penguinppc.org/
+L:	linuxppc-dev@ozlabs.org
+S:	Maintained
+
+LINUX FOR POWERPC EMBEDDED MPC52XX
+P:	Sylvain Munaut
+M:	tnt@246tNt.com
+W:	http://www.246tNt.com/mpc52xx/
+W:	http://www.penguinppc.org/
+L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-embedded@ozlabs.org
 S:	Maintained
 
 LINUX FOR POWERPC EMBEDDED PPC4XX
 P:	Matt Porter
 M:	mporter@kernel.crashing.org
 W:	http://www.penguinppc.org/
-L:	linuxppc-embedded@lists.linuxppc.org
+L:	linuxppc-embedded@ozlabs.org
 S:	Maintained
 
 LINUX FOR POWERPC EMBEDDED PPC8XX AND BOOT CODE
 P:	Tom Rini
 M:	trini@kernel.crashing.org
 W:	http://www.penguinppc.org/
-L:	linuxppc-embedded@lists.linuxppc.org
+L:	linuxppc-embedded@ozlabs.org
 S:	Maintained
 
-LINUX FOR POWERPC EMBEDDED PPC85XX
+LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX
 P:     Kumar Gala
 M:     kumar.gala@freescale.com
 W:     http://www.penguinppc.org/
-L:     linuxppc-embedded@lists.linuxppc.org
+L:     linuxppc-embedded@ozlabs.org
 S:     Maintained
 
 LLC (802.2)
@@ -1314,12 +1400,14 @@
 S:	Maintained
 
 LINUX FOR 64BIT POWERPC
-P:	David Engebretsen (stable kernel)
-M:	engebret@us.ibm.com
-P:	Anton Blanchard (development kernel)
+P:	Paul Mackerras
+M:	paulus@samba.org
+M:	paulus@au.ibm.com
+P:	Anton Blanchard
+M:	anton@samba.org
 M:	anton@au.ibm.com
 W:	http://linuxppc64.org
-L:	linuxppc64-dev@lists.linuxppc.org
+L:	linuxppc64-dev@ozlabs.org
 S:	Supported
 
 LINUX SECURITY MODULE (LSM) FRAMEWORK
@@ -1329,6 +1417,18 @@
 W:	http://lsm.immunix.org
 S:	Supported
 
+LM83 HARDWARE MONITOR DRIVER
+P:	Jean Delvare
+M:	khali@linux-fr.org
+L:	sensors@stimpy.netroedge.com
+S:	Maintained
+
+LM90 HARDWARE MONITOR DRIVER
+P:	Jean Delvare
+M:	khali@linux-fr.org
+L:	sensors@stimpy.netroedge.com
+S:	Maintained
+
 LOGICAL DISK MANAGER SUPPORT (LDM, Windows 2000/XP Dynamic Disks)
 P:	Richard Russon (FlatCap)
 M:	ldm@flatcap.org
@@ -1393,14 +1493,14 @@
 
 MEMORY TECHNOLOGY DEVICES
 P:	David Woodhouse
-M:	dwmw2@redhat.com
+M:	dwmw2@infradead.org
 W:	http://www.linux-mtd.infradead.org/
 L:	linux-mtd@lists.infradead.org
 S:	Maintained
 
 MICROTEK X6 SCANNER
 P:	Oliver Neukum
-M:	drivers@neukum.org
+M:	oliver@neukum.name
 S:	Maintained
 
 MIPS
@@ -1411,11 +1511,8 @@
 S:	Maintained
 
 MISCELLANEOUS MCA-SUPPORT
-P:	David Weinehall
-M:	Project MCA Team <mcalinux@acc.umu.se>
-M:	David Weinehall <tao@acc.umu.se>
-W:	http://www.acc.umu.se/~tao/
-W:	http://www.acc.umu.se/~mcalinux/
+P:	James Bottomley
+M:	jejb@steeleye.com
 L:	linux-kernel@vger.kernel.org
 S:	Maintained
 
@@ -1492,21 +1589,21 @@
 
 NETWORK DEVICE DRIVERS
 P:	Andrew Morton
-M:	akpm@digeo.com
+M:	akpm@osdl.org
 P:	Jeff Garzik
 M:	jgarzik@pobox.com
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 S:	Maintained
 
 NETWORKING [GENERAL]
 P:	Networking Team
 M:	netdev@oss.sgi.com
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 S:	Maintained
 
 NETWORKING [IPv4/IPv6]
 P:	David S. Miller
-M:	davem@redhat.com
+M:	davem@davemloft.net
 P:	Alexey Kuznetsov
 M:	kuznet@ms2.inr.ac.ru
 P:	Pekka Savola (ipv6)
@@ -1520,6 +1617,13 @@
 L:	netdev@oss.sgi.com
 S:	Maintained
 
+IPVS
+P:	Wensong Zhang
+M:	wensong@linux-vs.org
+P:	Julian Anastasov
+M:	ja@ssi.bg
+S:	Maintained
+
 NFS CLIENT
 P:	Trond Myklebust
 M:	trond.myklebust@fys.uio.no
@@ -1530,7 +1634,7 @@
 P:	Jan-Pascal van Best and Andreas Mohr
 M:	Jan-Pascal van Best <jvbest@qv3pluto.leidenuniv.nl>
 M:	Andreas Mohr <100.30936@germany.net>
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 S:	Maintained
 
 NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER
@@ -1572,7 +1676,7 @@
 M:	p2@ace.ulyssis.student.kuleuven.ac.be
 P:	Mike Phillips
 M:	mikep@linuxtr.net 
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 L:	linux-tr@linuxtr.net
 W:	http://www.linuxtr.net
 S:	Maintained
@@ -1601,26 +1705,28 @@
 M:	proski@gnu.org
 P:	David Gibson
 M:	hermes@gibson.dropbear.id.au
-W:	http://www.ozlabs.org/people/dgibson/dldwd
+L:	orinoco-users@lists.sourceforge.net
+L:	orinoco-devel@lists.sourceforge.net
+W:	http://www.nongnu.org/orinoco/
 S:	Maintained
 
 PARALLEL PORT SUPPORT
 P:	Phil Blundell
-M:	Philip.Blundell@pobox.com
+M:	philb@gnu.org
 P:	Tim Waugh
 M:	tim@cyberelk.net
 P:	David Campbell
 M:	campbell@torque.net
 P:	Andrea Arcangeli
-M:	andrea@e-mind.com
-L:	linux-parport@torque.net
+M:	andrea@suse.de
+L:	linux-parport@lists.infradead.org
 W:	http://people.redhat.com/twaugh/parport/
 S:	Maintained
 
 PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES
 P:	Tim Waugh
 M:	tim@cyberelk.net
-L:	linux-parport@torque.net
+L:	linux-parport@lists.infradead.org
 W:	http://www.torque.net/linux-pp.html
 S:	Maintained
 
@@ -1655,14 +1761,14 @@
 
 PCI SUBSYSTEM
 P:	Greg Kroah-Hartman
-M:	greg@kroah.com
+M:	gregkh@suse.de
 L:	linux-kernel@vger.kernel.org
+L:	linux-pci@atrey.karlin.mff.cuni.cz
 S:	Supported
 
 PCI HOTPLUG CORE
 P:	Greg Kroah-Hartman
-M:	greg@kroah.com
-M:	gregkh@us.ibm.com
+M:	gregkh@suse.de
 S:	Supported
 
 PCI HOTPLUG COMPAQ DRIVER
@@ -1677,13 +1783,19 @@
 PCNET32 NETWORK DRIVER
 P:	Thomas Bogendörfer
 M:	tsbogend@alpha.franken.de
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
+S:	Maintained
+
+PHRAM MTD DRIVER
+P:	Jörn Engel
+M:	joern@wh.fh-wedel.de
+L:	linux-mtd@lists.infradead.org
 S:	Maintained
 
 POSIX CLOCKS and TIMERS
 P:	George Anzinger
 M:	george@mvista.com
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 S:	Supported
 
 PNP SUPPORT
@@ -1704,7 +1816,7 @@
 
 PPP OVER ETHERNET
 P:	Michal Ostrowski
-M:	mostrows@styx.uwaterloo.ca
+M:	mostrows@speakeasy.net
 S:	Maintained
 
 PREEMPTIBLE KERNEL
@@ -1715,12 +1827,31 @@
 W:	ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
 S:	Supported
 
+PRISM54 WIRELESS DRIVER
+P:	Prism54 Development Team
+M:	prism54-private@prism54.org
+L:	netdev@oss.sgi.com
+W:	http://prism54.org
+S:	Maintained
+
 PROMISE DC4030 CACHING DISK CONTROLLER DRIVER
 P:	Peter Denison
 M:	promise@pnd-pc.demon.co.uk
 W:	http://www.pnd-pc.demon.co.uk/promise/
 S:	Maintained
 
+PXA2xx SUPPORT
+P:	Nicolas Pitre
+M:	nico@cam.org
+L:	linux-arm-kernel@lists.arm.linux.org.uk
+S:	Maintained
+
+QLOGIC QLA2XXX FC-SCSI DRIVER
+P:	Andrew Vasquez
+M:	andrew.vasquez@qlogic.com
+L:	linux-scsi@vger.kernel.org
+S:	Supported
+
 QNX4 FILESYSTEM
 P:	Anders Larsen
 M:	al@alarsen.net
@@ -1729,14 +1860,14 @@
 S:	Maintained
 
 RADEON FRAMEBUFFER DISPLAY DRIVER
-P:	Ani Joshi
-M:	ajoshi@shell.unixbox.com
+P:	Benjamin Herrenschmidt
+M:	benh@kernel.crashing.org
 L:	linux-fbdev-devel@lists.sourceforge.net
 S:	Maintained
 
 RAGE128 FRAMEBUFFER DISPLAY DRIVER
-P:	Ani Joshi
-M:	ajoshi@shell.unixbox.com
+P:	Paul Mackerras
+M:	paulus@samba.org
 L:	linux-fbdev-devel@lists.sourceforge.net
 S:	Maintained
 
@@ -1746,6 +1877,11 @@
 L:	linux-kernel@vger.kernel.org
 S:	Maintained
 
+RANDOM NUMBER DRIVER
+P:	Matt Mackall
+M:	mpm@selenic.com
+S:	Maintained
+
 REAL TIME CLOCK DRIVER
 P:	Paul Gortmaker
 M:	p_gortmaker@yahoo.com
@@ -1772,9 +1908,7 @@
 S:	Maintained
 
 RISCOM8 DRIVER
-P:	Dmitry Gorodchanin
-L:	linux-kernel@vger.kernel.org
-S:	Maintained
+S:	Orphan
 
 RTLINUX  REALTIME  LINUX
 P:	Victor Yodaiken
@@ -1797,12 +1931,6 @@
 W:	http://www.mihu.de/linux/saa7146
 S:	Maintained
 
-SA1100 SUPPORT
-P:	Nicolas Pitre
-M:	nico@cam.org
-L:	linux-arm@lists.arm.linux.org.uk
-S:	Maintained
-
 SBPCD CDROM DRIVER
 P:	Eberhard Moenkeberg
 M:	emoenke@gwdg.de
@@ -1860,6 +1988,11 @@
 W:	http://www.weinigel.se
 S:	Supported
 
+SECURITY CONTACT
+P:	Security Officers
+M:	security@kernel.org
+S:	Supported
+
 SELINUX SECURITY MODULE
 P:	Stephen Smalley
 M:	sds@epoch.ncsc.mil
@@ -1889,6 +2022,20 @@
 W:	http://linux-visws.sf.net
 S:	Maintained for 2.6.
 
+SIMTEC EB110ATX (Chalice CATS)
+P:	Ben Dooks
+P:	Vincent Sanders
+M:	support@simtec.co.uk
+W:	http://www.simtec.co.uk/products/EB110ATX/
+S:	Supported
+
+SIMTEC EB2410ITX (BAST)
+P:	Ben Dooks
+P:	Vincent Sanders
+M:	support@simtec.co.uk
+W:	http://www.simtec.co.uk/products/EB2410ITX/
+S:	Supported
+
 SIS 5513 IDE CONTROLLER DRIVER
 P:	Lionel Bouton
 M:	Lionel.Bouton@inet6.fr
@@ -1897,10 +2044,11 @@
 S:	Maintained
 
 SIS 900/7016 FAST ETHERNET DRIVER
-P:	Ollie Lho
-M:	ollie@sis.com.tw
-L:	linux-net@vger.kernel.org
-S:	Supported
+P:	Daniele Venzano
+M:	venza@brownhat.org
+W:	http://www.brownhat.org/sis900.html
+L:	netdev@oss.sgi.com
+S:	Maintained
 
 SIS FRAMEBUFFER DRIVER
 P:	Thomas Winischhofer
@@ -1908,6 +2056,18 @@
 W:	http://www.winischhofer.net/linuxsisvga.shtml
 S:	Maintained	
 
+SIS USB2VGA DRIVER
+P:	Thomas Winischhofer
+M:	thomas@winischhofer.net
+W:	http://www.winischhofer.at/linuxsisusbvga.shtml
+S:	Maintained
+
+SMSC47M1 HARDWARE MONITOR DRIVER
+P:	Jean Delvare
+M:	khali@linux-fr.org
+L:	sensors@stimpy.netroedge.com
+S:	Odd Fixes
+
 SMB FILESYSTEM
 P:	Urban Widmark
 M:	urban@teststation.com
@@ -1915,6 +2075,11 @@
 L:	samba@samba.org
 S:	Maintained
 
+SMC91x ETHERNET DRIVER
+P:	Nicolas Pitre
+M:	nico@cam.org
+S:	Maintained
+
 SNA NETWORK LAYER
 P:	Jay Schulist
 M:	jschlst@samba.org
@@ -1941,7 +2106,7 @@
 SONIC NETWORK DRIVER
 P:	Thomas Bogendoerfer
 M:	tsbogend@alpha.franken.de
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 S:	Maintained
 
 SONY VAIO CONTROL DEVICE DRIVER
@@ -1956,9 +2121,16 @@
 L:	alsa-devel@alsa-project.org
 S:	Maintained
 
+TPM DEVICE DRIVER
+P:	Kylene Hall
+M:	kjhall@us.ibm.com
+W:	http://tpmdd.sourceforge.net
+L:	tpmdd-devel@lists.sourceforge.net
+S:	Maintained
+
 UltraSPARC (sparc64):
 P:	David S. Miller
-M:	davem@redhat.com
+M:	davem@davemloft.net
 P:	Eddie C. Dost
 M:	ecd@skynet.be
 P:	Jakub Jelinek
@@ -1969,6 +2141,13 @@
 L:	ultralinux@vger.kernel.org
 S:	Maintained
 
+SHARP LH SUPPORT (LH7952X & LH7A40X)
+P:	Marc Singer
+M:	elf@buici.com
+W:	http://projects.buici.com/arm
+L:	linux-arm-kernel@lists.arm.linux.org.uk
+S:	Maintained
+
 SPARC (sparc32):
 P:	William L. Irwin
 M:	wli@holomorphy.com
@@ -1978,14 +2157,13 @@
 SPECIALIX IO8+ MULTIPORT SERIAL CARD DRIVER
 P:	Roger Wolff
 M:	R.E.Wolff@BitWizard.nl
-M:	io8-linux@specialix.co.uk
 L:	linux-kernel@vger.kernel.org ?
 S:	Supported
 
 SPX NETWORK LAYER
 P:	Jay Schulist
 M:	jschlst@samba.org
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 S:	Supported
 
 SRM (Alpha) environment access
@@ -2025,9 +2203,10 @@
 P:	Paul Mundt
 M:	lethal@linux-sh.org
 P:	Richard Curnow
-M:	richard.curnow@superh.com
+M:	rc@rc0.org.uk
 L:	linuxsh-shmedia-dev@lists.sourceforge.net
 W:	http://www.linux-sh.org
+W:	http://www.rc0.org.uk/sh64
 S:	Maintained
 
 SUN3/3X
@@ -2048,13 +2227,6 @@
 M:	hch@infradead.org
 S:	Maintained
 
-TI GRAPH LINK USB (SilverLink) CABLE DRIVER
-P:	Romain Lievin
-M:	roms@lpg.ticalc.org
-P:	Julien Blache
-M:	jb@technologeek.org
-S:	Maintained
-
 TI PARALLEL LINK CABLE DRIVER
 P:     Romain Lievin
 M:     roms@lpg.ticalc.org
@@ -2070,7 +2242,7 @@
 TOKEN-RING NETWORK DRIVER
 P:	Mike Phillips
 M:	mikep@linuxtr.net
-L:	linux-net@vger.kernel.org
+L:	netdev@oss.sgi.com
 L:	linux-tr@linuxtr.net
 W:	http://www.linuxtr.net
 S:	Maintained
@@ -2135,13 +2307,6 @@
 W:	http://linux-udf.sourceforge.net
 S:	Maintained
 
-UMSDOS FILESYSTEM
-P:	Matija Nalis
-M:	Matija Nalis <mnalis-umsdos@voyager.hr>
-L:	linux-kernel@vger.kernel.org
-W:	http://linux.voyager.hr/umsdos/
-S:	Maintained
-
 UNIFORM CDROM DRIVER
 P:	Jens Axboe
 M:	axboe@suse.de
@@ -2150,12 +2315,19 @@
 S:	Maintained
 
 USB ACM DRIVER
-P:	Vojtech Pavlik
-M:	vojtech@suse.cz
+P:	Oliver Neukum
+M:	oliver@neukum.name
 L:	linux-usb-users@lists.sourceforge.net
 L:	linux-usb-devel@lists.sourceforge.net
 S:	Maintained
 
+USB BLOCK DRIVER (UB ub)
+P:	Pete Zaitcev
+M:	zaitcev@redhat.com
+L:	linux-kernel@vger.kernel.org
+L:	linux-usb-devel@lists.sourceforge.net
+S:	Supported
+
 USB BLUETOOTH TTY CONVERTER DRIVER
 P:	Greg Kroah-Hartman
 M:	greg@kroah.com
@@ -2178,12 +2350,11 @@
 L:	linux-usb-devel@lists.sourceforge.net
 S:	Maintained
 
-USB HID/HIDBP/INPUT DRIVERS
+USB HID/HIDBP DRIVERS
 P:	Vojtech Pavlik
 M:	vojtech@suse.cz
 L:	linux-usb-users@lists.sourceforge.net
 L:	linux-usb-devel@lists.sourceforge.net
-W:	http://www.suse.cz/development/input/
 S:	Maintained
 
 USB HUB DRIVER
@@ -2195,7 +2366,7 @@
 
 USB KAWASAKI LSI DRIVER
 P:	Oliver Neukum
-M:	drivers@neukum.org
+M:	oliver@neukum.name
 L:	linux-usb-users@lists.sourceforge.net
 L:	linux-usb-devel@lists.sourceforge.net
 S:	Maintained
@@ -2254,6 +2425,12 @@
 W:	http://www.chello.nl/~j.vreeken/se401/
 S:	Maintained
 
+USB SERIAL CYBERJACK DRIVER
+P:	Matthias Bruestle and Harald Welte
+M:	support@reiner-sct.com
+W:	http://www.reiner-sct.de/support/treiber_cyberjack.php
+S:	Maintained
+
 USB SERIAL DIGI ACCELEPORT DRIVER
 P:	Peter Berger and Al Borchers
 M:	pberger@brimson.com
@@ -2264,11 +2441,10 @@
 
 USB SERIAL DRIVER
 P:	Greg Kroah-Hartman
-M:	greg@kroah.com
+M:	gregkh@suse.de
 L:	linux-usb-users@lists.sourceforge.net
 L:	linux-usb-devel@lists.sourceforge.net
-S:	Maintained
-W:	http://www.kroah.com/linux-usb/
+S:	Supported
 
 USB SERIAL BELKIN F5U103 DRIVER
 P:	William Greathouse
@@ -2277,6 +2453,15 @@
 L:	linux-usb-devel@lists.sourceforge.net
 S:	Maintained
 
+USB SERIAL CYPRESS M8 DRIVER
+P:	Lonnie Mendez
+M:	dignome@gmail.com
+L:	linux-usb-users@lists.sourceforge.net
+L:	linux-usb-devel@lists.sourceforge.net
+S:	Maintained
+W:	http://geocities.com/i0xox0i
+W:	http://firstlight.net/cvs
+
 USB SERIAL CYBERJACK PINPAD/E-COM DRIVER
 L:	linux-usb-users@lists.sourceforge.net
 L:	linux-usb-devel@lists.sourceforge.net
@@ -2312,16 +2497,16 @@
 W:	http://www.connecttech.com
 S:	Supported
 
-USB SN9C10[12] DRIVER
+USB SN9C10x DRIVER
 P:	Luca Risolia
 M:	luca.risolia@studio.unibo.it
 L:	linux-usb-devel@lists.sourceforge.net
-W:	http://go.lamarinapunto.com
+W:	http://www.linux-projects.org
 S:	Maintained
 
 USB SUBSYSTEM
 P:	Greg Kroah-Hartman
-M:	greg@kroah.com
+M:	gregkh@suse.de
 L:	linux-usb-users@lists.sourceforge.net
 L:	linux-usb-devel@lists.sourceforge.net
 W:	http://www.linux-usb.org
@@ -2344,7 +2529,15 @@
 P:	Luca Risolia
 M:	luca.risolia@studio.unibo.it
 L:	linux-usb-devel@lists.sourceforge.net
-W:	http://go.lamarinapunto.com
+W:	http://www.linux-projects.org
+S:	Maintained
+
+USB ZD1201 DRIVER
+P:	Jeroen Vreeken
+M:	pe1rxq@amsat.org
+L:	linux-usb-users@lists.sourceforge.net
+L:	linux-usb-devel@lists.sourceforge.net
+W:	http://linux-lc100020.sourceforge.net
 S:	Maintained
 
 USER-MODE LINUX
@@ -2370,8 +2563,9 @@
 M:	rl@hellgate.ch
 S:	Maintained
 
-UCLINUX
+UCLINUX (AND M68KNOMMU)
 P:	Greg Ungerer
+M:	gerg@uclinux.org
 M:	gerg@snapgear.com
 P:	David McCullough
 M:	davidm@snapgear.com
@@ -2404,7 +2598,8 @@
 VIDEO FOR LINUX
 P:	Gerd Knorr
 M:	kraxel@bytesex.org
-S:	Maintained
+L:	video4linux-list@redhat.com
+S:	Orphan
 
 W1 DALLAS'S 1-WIRE BUS
 P:	Evgeniy Polyakov
@@ -2412,6 +2607,19 @@
 L:	sensors@stimpy.netroedge.com
 S:	Maintained
 
+W83L51xD SD/MMC CARD INTERFACE DRIVER
+P:	Pierre Ossman
+M:	drzeus-wbsd@drzeus.cx
+L:	wbsd-devel@list.drzeus.cx
+W:	http://projects.drzeus.cx/wbsd
+S:	Maintained
+
+W83L785TS HARDWARE MONITOR DRIVER
+P:	Jean Delvare
+M:	khali@linux-fr.org
+L:	sensors@stimpy.netroedge.com
+S:	Odd Fixes
+
 WAN ROUTER & SANGOMA WANPIPE DRIVERS & API (X.25, FRAME RELAY, PPP, CISCO HDLC)
 P:	Nenad Corbic
 M:	ncorbic@sangoma.com
@@ -2469,11 +2677,11 @@
 L:	linux-hams@vger.kernel.org
 S:	Maintained
 
-YMFPCI YAMAHA PCI SOUND
+YMFPCI YAMAHA PCI SOUND (Use ALSA instead)
 P:	Pete Zaitcev
 M:	zaitcev@yahoo.com
 L:	linux-kernel@vger.kernel.org
-S:	Maintained
+S:	Obsolete
 
 Z8530 DRIVER FOR AX.25
 P:	Joerg Reuter
diff -urN malta/linux/Makefile malta/linux/Makefile
--- malta/linux/Makefile	2004/09/14 16:27:37	1.213.1000.2
+++ malta/linux/Makefile	2005/06/21 13:20:27	1.213.1000.3
@@ -1,8 +1,8 @@
 VERSION = 2
 PATCHLEVEL = 6
-SUBLEVEL = 9
-EXTRAVERSION = -rc1
-NAME=Zonked Quokka
+SUBLEVEL = 12
+EXTRAVERSION =-rc6
+NAME=Woozy Numbat
 
 # *DOCUMENTATION*
 # To see a list of typical targets execute "make help"
@@ -18,7 +18,7 @@
 #
 # Most importantly: sub-Makefiles should only ever modify files in
 # their own directory. If in some directory we have a dependency on
-# a file in another dir (which doesn't happen often, but it's of
+# a file in another dir (which doesn't happen often, but it's often
 # unavoidable when linking the built-in.o targets which finally
 # turn into vmlinux), we will call a sub make in that other dir, and
 # after that we are sure that everything which is in that other dir
@@ -67,7 +67,7 @@
 
 
 # kbuild supports saving output files in a separate directory.
-# To locate output files in a separate directory two syntax'es are supported.
+# To locate output files in a separate directory two syntaxes are supported.
 # In both cases the working directory must be the root of the kernel src.
 # 1) O=
 # Use "make O=dir/to/store/output/files/"
@@ -78,7 +78,8 @@
 # export KBUILD_OUTPUT=dir/to/store/output/files/
 # make
 #
-# The O= assigment takes precedence over the KBUILD_OUTPUT environment variable.
+# The O= assignment takes precedence over the KBUILD_OUTPUT environment
+# variable.
 
 
 # KBUILD_SRC is set on invocation of make in OBJ directory
@@ -141,7 +142,24 @@
 
 export srctree objtree VPATH TOPDIR
 
-KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
+nullstring :=
+space      := $(nullstring) # end of line
+
+# Take the contents of any files called localversion* and the config
+# variable CONFIG_LOCALVERSION and append them to KERNELRELEASE. Be
+# careful not to include files twice if building in the source
+# directory. LOCALVERSION from the command line override all of this
+
+localver := $(objtree)/localversion* $(srctree)/localversion*
+localver := $(sort $(wildcard $(localver)))
+# skip backup files (containing '~')
+localver := $(foreach f, $(localver), $(if $(findstring ~, $(f)),,$(f)))
+
+LOCALVERSION = $(subst $(space),, \
+	       $(shell cat /dev/null $(localver)) \
+	       $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
+
+KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(LOCALVERSION)
 
 # SUBARCH tells the usermode build what the underlying arch is.  That is set
 # first, and if a usermode build is happening, the "ARCH=um" on the command
@@ -271,14 +289,19 @@
             $(call cc-option, $(1),$(2))
 
 # cc-option-yn
-# Usage: flag := $(call gcc-option-yn, -march=winchip-c6)
+# Usage: flag := $(call cc-option-yn, -march=winchip-c6)
 cc-option-yn = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
                 > /dev/null 2>&1; then echo "y"; else echo "n"; fi;)
 
+# cc-option-align
+# Prefix align with either -falign or -malign
+cc-option-align = $(subst -functions=0,,\
+	$(call cc-option,-falign-functions=0,-malign-functions=0))
+
 # cc-version
 # Usage gcc-ver := $(call cc-version $(CC))
-cc-version = $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh \
-              $(if $(1), $(1), $(CC))
+cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh \
+              $(if $(1), $(1), $(CC)))
 
 
 # Look for make include files relative to root of kernel src
@@ -306,7 +329,8 @@
 KALLSYMS	= scripts/kallsyms
 PERL		= perl
 CHECK		= sparse
-CHECKFLAGS     :=
+
+CHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__
 MODFLAGS	= -DMODULE
 CFLAGS_MODULE   = $(MODFLAGS)
 AFLAGS_MODULE   = $(MODFLAGS)
@@ -314,7 +338,6 @@
 CFLAGS_KERNEL	=
 AFLAGS_KERNEL	=
 
-NOSTDINC_FLAGS  = -nostdinc -iwithprefix include
 
 # Use LINUXINCLUDE when you must reference the include/ directory.
 # Needed to be compatible with the O= option
@@ -324,13 +347,14 @@
 CPPFLAGS        := -D__KERNEL__ $(LINUXINCLUDE)
 
 CFLAGS 		:= -Wall -Wstrict-prototypes -Wno-trigraphs \
-	  	   -fno-strict-aliasing -fno-common
+	  	   -fno-strict-aliasing -fno-common \
+		   -ffreestanding
 AFLAGS		:= -D__ASSEMBLY__
 
-export	VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION KERNELRELEASE ARCH \
-	CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \
+export	VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION LOCALVERSION KERNELRELEASE \
+	ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \
 	CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE \
-	HOSTCXX HOSTCXXFLAGS LDFLAGS_BLOB LDFLAGS_MODULE CHECK CHECKFLAGS
+	HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
 
 export CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
 export CFLAGS CFLAGS_KERNEL CFLAGS_MODULE 
@@ -359,6 +383,18 @@
 scripts_basic:
 	$(Q)$(MAKE) $(build)=scripts/basic
 
+.PHONY: outputmakefile
+# outputmakefile generate a Makefile to be placed in output directory, if
+# using a seperate output directory. This allows convinient use
+# of make in output directory
+outputmakefile:
+	$(Q)if test ! $(srctree) -ef $(objtree); then \
+	$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile              \
+	    $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)         \
+	    > $(objtree)/Makefile;                                 \
+	    echo '  GEN    $(objtree)/Makefile';                   \
+	fi
+
 # To make sure we do not include .config for any of the *config targets
 # catch them early, and hand them over to scripts/kconfig/Makefile
 # It is allowed to specify more targets when calling make, including
@@ -403,9 +439,15 @@
 # *config targets only - make sure prerequisites are updated, and descend
 # in scripts/kconfig to make the *config target
 
-config: scripts_basic FORCE
+# Read arch specific Makefile to set KBUILD_DEFCONFIG as needed.
+# KBUILD_DEFCONFIG may point out an alternative default configuration
+# used for 'make defconfig'
+include $(srctree)/arch/$(ARCH)/Makefile
+export KBUILD_DEFCONFIG
+
+config: scripts_basic outputmakefile FORCE
 	$(Q)$(MAKE) $(build)=scripts/kconfig $@
-%config: scripts_basic FORCE
+%config: scripts_basic outputmakefile FORCE
 	$(Q)$(MAKE) $(build)=scripts/kconfig $@
 
 else
@@ -454,15 +496,6 @@
 include/linux/autoconf.h: ;
 endif
 
-include $(srctree)/arch/$(ARCH)/Makefile
-
-# Default kernel image to build when no specific target is given.
-# KBUILD_IMAGE may be overruled on the commandline or
-# set in the environment
-# Also any assingments in arch/$(ARCH)/Makefiel take precedence over
-# this default value
-export KBUILD_IMAGE ?= vmlinux
-
 # The all: target is the default when no target is given on the
 # command line.
 # This allow a user to issue only 'make' to build a kernel including modules
@@ -475,7 +508,16 @@
 CFLAGS		+= -O2
 endif
 
-ifndef CONFIG_FRAME_POINTER
+#Add align options if CONFIG_CC_* is not equal to 0
+add-align = $(if $(filter-out 0,$($(1))),$(cc-option-align)$(2)=$($(1)))
+CFLAGS		+= $(call add-align,CONFIG_CC_ALIGN_FUNCTIONS,-functions)
+CFLAGS		+= $(call add-align,CONFIG_CC_ALIGN_LABELS,-labels)
+CFLAGS		+= $(call add-align,CONFIG_CC_ALIGN_LOOPS,-loops)
+CFLAGS		+= $(call add-align,CONFIG_CC_ALIGN_JUMPS,-jumps)
+
+ifdef CONFIG_FRAME_POINTER
+CFLAGS		+= -fno-omit-frame-pointer
+else
 CFLAGS		+= -fomit-frame-pointer
 endif
 
@@ -483,15 +525,29 @@
 CFLAGS		+= -g
 endif
 
+include $(srctree)/arch/$(ARCH)/Makefile
+
+# arch Makefile may override CC so keep this after arch Makefile is included
+NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
+CHECKFLAGS     += $(NOSTDINC_FLAGS)
+
 # warn about C99 declaration after statement
-CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
+#CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
+
+# disable pointer signedness warnings in gcc 4.0
+CFLAGS += $(call cc-option,-Wno-pointer-sign,)
+
+# Default kernel image to build when no specific target is given.
+# KBUILD_IMAGE may be overruled on the commandline or
+# set in the environment
+# Also any assignments in arch/$(ARCH)/Makefile take precedence over
+# this default value
+export KBUILD_IMAGE ?= vmlinux
 
 #
 # INSTALL_PATH specifies where to place the updated kernel and system map
-# images.  Uncomment if you want to place them anywhere other than root.
-#
-
-#export	INSTALL_PATH=/boot
+# images. Default is /boot, but you can set it to other values
+export	INSTALL_PATH ?= /boot
 
 #
 # INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory
@@ -525,67 +581,93 @@
 
 # Build vmlinux
 # ---------------------------------------------------------------------------
+# vmlinux is build from the objects selected by $(vmlinux-init) and
+# $(vmlinux-main). Most are built-in.o files from top-level directories
+# in the kernel tree, others are specified in arch/$(ARCH)Makefile.
+# Ordering when linking is important, and $(vmlinux-init) must be first.
+#
+# vmlinux
+#   ^
+#   |
+#   +-< $(vmlinux-init)
+#   |   +--< init/version.o + more
+#   |
+#   +--< $(vmlinux-main)
+#   |    +--< driver/built-in.o mm/built-in.o + more
+#   |
+#   +-< kallsyms.o (see description in CONFIG_KALLSYMS section)
+#
+# vmlinux version (uname -v) cannot be updated during normal
+# descending-into-subdirs phase since we do not yet know if we need to
+# update vmlinux.
+# Therefore this step is delayed until just before final link of vmlinux -
+# except in the kallsyms case where it is done just before adding the
+# symbols to the kernel.
+#
+# System.map is generated to document addresses of all kernel symbols
 
-#	This is a bit tricky: If we need to relink vmlinux, we want
-#	the version number incremented, which means recompile init/version.o
-#	and relink init/init.o. However, we cannot do this during the
-#       normal descending-into-subdirs phase, since at that time
-#       we cannot yet know if we will need to relink vmlinux.
-#	So we descend into init/ inside the rule for vmlinux again.
-vmlinux-objs := $(head-y) $(init-y) $(core-y) $(libs-y) $(drivers-y) $(net-y)
-
-quiet_cmd_vmlinux__ = LD      $@
-define cmd_vmlinux__
-	$(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) $(head-y) $(init-y) \
-	--start-group \
-	$(core-y) \
-	$(libs-y) \
-	$(drivers-y) \
-	$(net-y) \
-	--end-group \
-	$(filter .tmp_kallsyms%,$^) \
-	-o $@
-endef
+vmlinux-init := $(head-y) $(init-y)
+vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y)
+vmlinux-all  := $(vmlinux-init) $(vmlinux-main)
+vmlinux-lds  := arch/$(ARCH)/kernel/vmlinux.lds
+
+# Rule to link vmlinux - also used during CONFIG_KALLSYMS
+# May be overridden by arch/$(ARCH)/Makefile
+quiet_cmd_vmlinux__ ?= LD      $@
+      cmd_vmlinux__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) -o $@ \
+      -T $(vmlinux-lds) $(vmlinux-init)                          \
+      --start-group $(vmlinux-main) --end-group                  \
+      $(filter-out $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) FORCE ,$^)
+
+# Generate new vmlinux version
+quiet_cmd_vmlinux_version = GEN     .version
+      cmd_vmlinux_version = set -e;                     \
+	. $(srctree)/scripts/mkversion > .tmp_version;	\
+	mv -f .tmp_version .version;			\
+	$(MAKE) $(build)=init
 
-#	set -e makes the rule exit immediately on error
+# Generate System.map
+quiet_cmd_sysmap = SYSMAP 
+      cmd_sysmap = $(CONFIG_SHELL) $(srctree)/scripts/mksysmap
+
+# Link of vmlinux
+# If CONFIG_KALLSYMS is set .version is already updated
+# Generate System.map and verify that the content is consistent
 
 define rule_vmlinux__
-	+set -e;							\
-	$(if $(filter .tmp_kallsyms%,$^),,				\
-	  echo '  GEN     .version';					\
-	  . $(srctree)/scripts/mkversion > .tmp_version;		\
-	  mv -f .tmp_version .version;					\
-	  $(MAKE) $(build)=init;					\
-	)								\
-	$(if $($(quiet)cmd_vmlinux__),					\
-	  echo '  $($(quiet)cmd_vmlinux__)' &&) 			\
-	$(cmd_vmlinux__);						\
-	echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd
-endef
+	$(if $(CONFIG_KALLSYMS),,+$(call cmd,vmlinux_version))
 
-quiet_cmd_sysmap = SYSMAP 
-      cmd_sysmap = $(CONFIG_SHELL) $(srctree)/scripts/mksysmap
-		   
-LDFLAGS_vmlinux += -T arch/$(ARCH)/kernel/vmlinux.lds
+	$(call cmd,vmlinux__)
+	$(Q)echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd
+
+	$(Q)$(if $($(quiet)cmd_sysmap),                 \
+	  echo '  $($(quiet)cmd_sysmap) System.map' &&) \
+	$(cmd_sysmap) $@ System.map;                    \
+	if [ $$? -ne 0 ]; then                          \
+		rm -f $@;                               \
+		/bin/false;                             \
+	fi;
+	$(verify_kallsyms)
+endef
 
-#	Generate section listing all symbols and add it into vmlinux
-#	It's a three stage process:
-#	o .tmp_vmlinux1 has all symbols and sections, but __kallsyms is
-#	  empty
-#	  Running kallsyms on that gives us .tmp_kallsyms1.o with
-#	  the right size
-#	o .tmp_vmlinux2 now has a __kallsyms section of the right size,
-#	  but due to the added section, some addresses have shifted
-#	  From here, we generate a correct .tmp_kallsyms2.o
-#	o The correct .tmp_kallsyms2.o is linked into the final vmlinux.
-#	o Verify that the System.map from vmlinux matches the map from
-#	  .tmp_vmlinux2, just in case we did not generate kallsyms correctly.
-#	o If CONFIG_KALLSYMS_EXTRA_PASS is set, do an extra pass using
-#	  .tmp_vmlinux3 and .tmp_kallsyms3.o.  This is only meant as a
-#	  temporary bypass to allow the kernel to be built while the
-#	  maintainers work out what went wrong with kallsyms.
 
 ifdef CONFIG_KALLSYMS
+# Generate section listing all symbols and add it into vmlinux $(kallsyms.o)
+# It's a three stage process:
+# o .tmp_vmlinux1 has all symbols and sections, but __kallsyms is
+#   empty
+#   Running kallsyms on that gives us .tmp_kallsyms1.o with
+#   the right size - vmlinux version (uname -v) is updated during this step
+# o .tmp_vmlinux2 now has a __kallsyms section of the right size,
+#   but due to the added section, some addresses have shifted.
+#   From here, we generate a correct .tmp_kallsyms2.o
+# o The correct .tmp_kallsyms2.o is linked into the final vmlinux.
+# o Verify that the System.map from vmlinux matches the map from
+#   .tmp_vmlinux2, just in case we did not generate kallsyms correctly.
+# o If CONFIG_KALLSYMS_EXTRA_PASS is set, do an extra pass using
+#   .tmp_vmlinux3 and .tmp_kallsyms3.o.  This is only meant as a
+#   temporary bypass to allow the kernel to be built while the
+#   maintainers work out what went wrong with kallsyms.
 
 ifdef CONFIG_KALLSYMS_EXTRA_PASS
 last_kallsyms := 3
@@ -595,16 +677,29 @@
 
 kallsyms.o := .tmp_kallsyms$(last_kallsyms).o
 
-define rule_verify_kallsyms
+define verify_kallsyms
 	$(Q)$(if $($(quiet)cmd_sysmap),                       \
 	  echo '  $($(quiet)cmd_sysmap) .tmp_System.map' &&)  \
 	  $(cmd_sysmap) .tmp_vmlinux$(last_kallsyms) .tmp_System.map
-	$(Q)cmp -s System.map .tmp_System.map || \
-		(echo Inconsistent kallsyms data, try setting CONFIG_KALLSYMS_EXTRA_PASS ; rm .tmp_kallsyms* ; false)
+	$(Q)cmp -s System.map .tmp_System.map ||              \
+		(echo Inconsistent kallsyms data;             \
+		 echo Try setting CONFIG_KALLSYMS_EXTRA_PASS; \
+		 rm .tmp_kallsyms* ; /bin/false )
+endef
+
+# Update vmlinux version before link
+# Use + in front of this rule to silent warning about make -j1
+cmd_ksym_ld = $(cmd_vmlinux__)
+define rule_ksym_ld
+	+$(call cmd,vmlinux_version)
+	$(call cmd,vmlinux__)
+	$(Q)echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd
 endef
 
+# Generate .S file with all kernel symbols
 quiet_cmd_kallsyms = KSYM    $@
-cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) $(foreach x,$(CONFIG_KALLSYMS_ALL),--all-symbols) > $@
+      cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) \
+                     $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) > $@
 
 .tmp_kallsyms1.o .tmp_kallsyms2.o .tmp_kallsyms3.o: %.o: %.S scripts FORCE
 	$(call if_changed_dep,as_o_S)
@@ -612,43 +707,28 @@
 .tmp_kallsyms%.S: .tmp_vmlinux% $(KALLSYMS)
 	$(call cmd,kallsyms)
 
-.tmp_vmlinux1: $(vmlinux-objs) arch/$(ARCH)/kernel/vmlinux.lds FORCE
-	$(call if_changed_rule,vmlinux__)
+# .tmp_vmlinux1 must be complete except kallsyms, so update vmlinux version
+.tmp_vmlinux1: $(vmlinux-lds) $(vmlinux-all) FORCE
+	$(call if_changed_rule,ksym_ld)
 
-.tmp_vmlinux2: $(vmlinux-objs) .tmp_kallsyms1.o arch/$(ARCH)/kernel/vmlinux.lds FORCE
-	$(call if_changed_rule,vmlinux__)
+.tmp_vmlinux2: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms1.o FORCE
+	$(call if_changed,vmlinux__)
 
-.tmp_vmlinux3: $(vmlinux-objs) .tmp_kallsyms2.o arch/$(ARCH)/kernel/vmlinux.lds FORCE
-	$(call if_changed_rule,vmlinux__)
+.tmp_vmlinux3: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms2.o FORCE
+	$(call if_changed,vmlinux__)
 
 # Needs to visit scripts/ before $(KALLSYMS) can be used.
 $(KALLSYMS): scripts ;
 
-endif
-
-# Finally the vmlinux rule
-# This rule is also used to generate System.map
-# and to verify that the content of kallsyms are consistent
-
-define rule_vmlinux
-	$(rule_vmlinux__);
-	$(Q)$(if $($(quiet)cmd_sysmap),                  \
-	  echo '  $($(quiet)cmd_sysmap) System.map' &&)  \
-	$(cmd_sysmap) $@ System.map;                     \
-	if [ $$? -ne 0 ]; then                           \
-		rm -f $@;                                \
-		/bin/false;                              \
-	fi;
-	$(rule_verify_kallsyms)
-endef
+endif # ifdef CONFIG_KALLSYMS
 
-vmlinux: $(vmlinux-objs) $(kallsyms.o) arch/$(ARCH)/kernel/vmlinux.lds FORCE
-	$(call if_changed_rule,vmlinux)
-
-#	The actual objects are generated when descending, 
-#	make sure no implicit rule kicks in
+# vmlinux image - including updated kernel symbols
+vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE
+	$(call if_changed_rule,vmlinux__)
 
-$(sort $(vmlinux-objs)) arch/$(ARCH)/kernel/vmlinux.lds: $(vmlinux-dirs) ;
+# The actual objects are generated when descending, 
+# make sure no implicit rule kicks in
+$(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
 
 # Handle descending into subdirectories listed in $(vmlinux-dirs)
 # Preset locale variables to speed up the build process. Limit locale
@@ -667,22 +747,12 @@
 
 .PHONY: prepare-all prepare prepare0 prepare1 prepare2
 
-# prepare 2 generate Makefile to be placed in output directory, if
-# using a seperate output directory. This allows convinient use
-# of make in output directory
-prepare2:
-	$(Q)if [ ! $(srctree) -ef $(objtree) ]; then       \
-	$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile      \
-	    $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL) \
-	    > $(objtree)/Makefile;                         \
-	fi
-
-# prepare1 is used to check if we are building in a separate output directory,
+# prepare2 is used to check if we are building in a separate output directory,
 # and if so do:
 # 1) Check that make has not been executed in the kernel src $(srctree)
 # 2) Create the include2 directory, used for the second asm symlink
 
-prepare1: prepare2
+prepare2:
 ifneq ($(KBUILD_SRC),)
 	@echo '  Using $(srctree) as source for kernel'
 	$(Q)if [ -h $(srctree)/include/asm -o -f $(srctree)/.config ]; then \
@@ -694,6 +764,9 @@
 	$(Q)ln -fsn $(srctree)/include/asm-$(ARCH) include2/asm
 endif
 
+# prepare1 creates a makefile if using a separate output directory
+prepare1: prepare2 outputmakefile
+
 prepare0: prepare1 include/linux/version.h include/asm include/config/MARKER
 ifneq ($(KBUILD_MODULES),)
 	$(Q)rm -rf $(MODVERDIR)
@@ -745,8 +818,8 @@
 # Generate some files
 # ---------------------------------------------------------------------------
 
-#	version.h changes when $(KERNELRELEASE) etc change, as defined in
-#	this Makefile
+# KERNELRELEASE can change from a few different places, meaning version.h
+# needs to be updated, so this check is forced on all builds
 
 uts_len := 64
 
@@ -761,7 +834,7 @@
 	)
 endef
 
-include/linux/version.h: Makefile
+include/linux/version.h: $(srctree)/Makefile FORCE
 	$(call filechk,version.h)
 
 # ---------------------------------------------------------------------------
@@ -824,7 +897,7 @@
 endif
 .PHONY: _modinst_post
 _modinst_post: _modinst_
-	if [ -r System.map ]; then $(DEPMOD) -ae -F System.map $(depmod_opts) $(KERNELRELEASE); fi
+	if [ -r System.map -a -x $(DEPMOD) ]; then $(DEPMOD) -ae -F System.map $(depmod_opts) $(KERNELRELEASE); fi
 
 else # CONFIG_MODULES
 
@@ -961,7 +1034,13 @@
 	@echo  '  rpm		  - Build a kernel as an RPM package'
 	@echo  '  tags/TAGS	  - Generate tags file for editors'
 	@echo  '  cscope	  - Generate cscope index'
+	@echo  ''
+	@echo  'Static analysers'
+	@echo  '  buildcheck      - List dangling references to vmlinux discarded sections'
+	@echo  '                    and init sections from non-init sections'
 	@echo  '  checkstack      - Generate a list of stack hogs'
+	@echo  '  namespacecheck  - Name space analysis on compiled kernel'
+	@echo  ''
 	@echo  'Kernel packaging:'
 	@$(MAKE) -f $(package-dir)/Makefile help
 	@echo  ''
@@ -1016,9 +1095,17 @@
 crmodverdir:
 	$(Q)mkdir -p $(MODVERDIR)
 
+.PHONY: $(objtree)/Module.symvers
+$(objtree)/Module.symvers:
+	@test -e $(objtree)/Module.symvers || ( \
+	echo; \
+	echo "  WARNING: Symbol version dump $(objtree)/Module.symvers"; \
+	echo "           is missing; modules will have no dependencies and modversions."; \
+	echo )
+
 module-dirs := $(addprefix _module_,$(KBUILD_EXTMOD))
 .PHONY: $(module-dirs) modules
-$(module-dirs): crmodverdir
+$(module-dirs): crmodverdir $(objtree)/Module.symvers
 	$(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@)
 
 modules: $(module-dirs)
@@ -1056,20 +1143,30 @@
 # Generate tags for editors
 # ---------------------------------------------------------------------------
 
+#We want __srctree to totally vanish out when KBUILD_OUTPUT is not set
+#(which is the most common case IMHO) to avoid unneeded clutter in the big tags file.
+#Adding $(srctree) adds about 20M on i386 to the size of the output file!
+
+ifeq ($(KBUILD_OUTPUT),)
+__srctree =
+else
+__srctree = $(srctree)/
+endif
+
 define all-sources
-	( find $(srctree) $(RCS_FIND_IGNORE) \
+	( find $(__srctree) $(RCS_FIND_IGNORE) \
 	       \( -name include -o -name arch \) -prune -o \
 	       -name '*.[chS]' -print; \
-	  find $(srctree)/arch/$(ARCH) $(RCS_FIND_IGNORE) \
+	  find $(__srctree)arch/$(ARCH) $(RCS_FIND_IGNORE) \
 	       -name '*.[chS]' -print; \
-	  find $(srctree)/security/selinux/include $(RCS_FIND_IGNORE) \
+	  find $(__srctree)security/selinux/include $(RCS_FIND_IGNORE) \
 	       -name '*.[chS]' -print; \
-	  find $(srctree)/include $(RCS_FIND_IGNORE) \
+	  find $(__srctree)include $(RCS_FIND_IGNORE) \
 	       \( -name config -o -name 'asm-*' \) -prune \
 	       -o -name '*.[chS]' -print; \
-	  find $(srctree)/include/asm-$(ARCH) $(RCS_FIND_IGNORE) \
+	  find $(__srctree)include/asm-$(ARCH) $(RCS_FIND_IGNORE) \
 	       -name '*.[chS]' -print; \
-	  find $(srctree)/include/asm-generic $(RCS_FIND_IGNORE) \
+	  find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \
 	       -name '*.[chS]' -print )
 endef
 
@@ -1091,7 +1188,7 @@
 quiet_cmd_tags = MAKE   $@
 define cmd_tags
 	rm -f $@; \
-	CTAGSF=`ctags --version | grep -i exuberant >/dev/null && echo "-I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS"`; \
+	CTAGSF=`ctags --version | grep -i exuberant >/dev/null && echo "-I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_GPL --extra=+f"`; \
 	$(all-sources) | xargs ctags $$CTAGSF -a
 endef
 
@@ -1121,8 +1218,11 @@
 		| xargs $(PERL) -w scripts/checkversion.pl
 
 buildcheck:
-	$(PERL) scripts/reference_discarded.pl
-	$(PERL) scripts/reference_init.pl
+	$(PERL) $(srctree)/scripts/reference_discarded.pl
+	$(PERL) $(srctree)/scripts/reference_init.pl
+
+namespacecheck:
+	$(PERL) $(srctree)/scripts/namespace.pl
 
 endif #ifeq ($(config-targets),1)
 endif #ifeq ($(mixed-targets),1)
@@ -1132,6 +1232,9 @@
 	$(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \
 	$(PERL) $(src)/scripts/checkstack.pl $(ARCH)
 
+kernelrelease:
+	@echo $(KERNELRELEASE)
+
 # FIXME Should go into a make.lib or something 
 # ===========================================================================
 
@@ -1159,13 +1262,22 @@
   include $(cmd_files)
 endif
 
+# Execute command and generate cmd file
+if_changed = $(if $(strip $? \
+		          $(filter-out $(cmd_$(1)),$(cmd_$@))\
+			  $(filter-out $(cmd_$@),$(cmd_$(1)))),\
+	@set -e; \
+	$(if $($(quiet)cmd_$(1)),echo '  $(subst ','\'',$($(quiet)cmd_$(1)))';) \
+	$(cmd_$(1)); \
+	echo 'cmd_$@ := $(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).cmd)
+
+
 # execute the command and also postprocess generated .d dependencies
 # file
-
 if_changed_dep = $(if $(strip $? $(filter-out FORCE $(wildcard $^),$^)\
 		          $(filter-out $(cmd_$(1)),$(cmd_$@))\
 			  $(filter-out $(cmd_$@),$(cmd_$(1)))),\
-	@set -e; \
+	$(Q)set -e; \
 	$(if $($(quiet)cmd_$(1)),echo '  $(subst ','\'',$($(quiet)cmd_$(1)))';) \
 	$(cmd_$(1)); \
 	scripts/basic/fixdep $(depfile) $@ '$(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).tmp; \
@@ -1179,7 +1291,7 @@
 if_changed_rule = $(if $(strip $? \
 		               $(filter-out $(cmd_$(1)),$(cmd_$(@F)))\
 			       $(filter-out $(cmd_$(@F)),$(cmd_$(1)))),\
-	               @$(rule_$(1)))
+	               $(Q)$(rule_$(1)))
 
 # If quiet is set, only print short version of command
 
diff -urN malta/linux/REPORTING-BUGS malta/linux/REPORTING-BUGS
--- malta/linux/REPORTING-BUGS	2001/06/13 17:27:35	1.5
+++ malta/linux/REPORTING-BUGS	2005/06/21 13:20:27	1.5.1000.1
@@ -16,6 +16,10 @@
 describe how to recreate it. That is worth even more than the oops itself.
 The list of maintainers is in the MAINTAINERS file in this directory.
 
+      If it is a security bug, please copy the Security Contact listed
+in the MAINTAINERS file.  They can help coordinate bugfix and disclosure.
+See Documentation/SecurityBugs for more infomation.
+
       If you are totally stumped as to whom to send the report, send it to
 linux-kernel@vger.kernel.org. (For more information on the linux-kernel
 mailing list see http://www.tux.org/lkml/).
diff -urN malta/linux/Documentation/ManagementStyle malta/linux/Documentation/ManagementStyle
--- malta/linux/Documentation/ManagementStyle	1970/01/01 00:00:00
+++ malta/linux/Documentation/ManagementStyle	2005-06-21 14:20:30.973604000 +0100	1.1.1000.1
@@ -0,0 +1,276 @@
+
+                Linux kernel management style
+
+This is a short document describing the preferred (or made up, depending
+on who you ask) management style for the linux kernel.  It's meant to
+mirror the CodingStyle document to some degree, and mainly written to
+avoid answering (*) the same (or similar) questions over and over again. 
+
+Management style is very personal and much harder to quantify than
+simple coding style rules, so this document may or may not have anything
+to do with reality.  It started as a lark, but that doesn't mean that it
+might not actually be true. You'll have to decide for yourself.
+
+Btw, when talking about "kernel manager", it's all about the technical
+lead persons, not the people who do traditional management inside
+companies.  If you sign purchase orders or you have any clue about the
+budget of your group, you're almost certainly not a kernel manager. 
+These suggestions may or may not apply to you. 
+
+First off, I'd suggest buying "Seven Habits of Highly Successful
+People", and NOT read it.  Burn it, it's a great symbolic gesture. 
+
+(*) This document does so not so much by answering the question, but by
+making it painfully obvious to the questioner that we don't have a clue
+to what the answer is. 
+
+Anyway, here goes:
+
+
+		Chapter 1: Decisions
+
+Everybody thinks managers make decisions, and that decision-making is
+important.  The bigger and more painful the decision, the bigger the
+manager must be to make it.  That's very deep and obvious, but it's not
+actually true. 
+
+The name of the game is to _avoid_ having to make a decision.  In
+particular, if somebody tells you "choose (a) or (b), we really need you
+to decide on this", you're in trouble as a manager.  The people you
+manage had better know the details better than you, so if they come to
+you for a technical decision, you're screwed.  You're clearly not
+competent to make that decision for them. 
+
+(Corollary:if the people you manage don't know the details better than
+you, you're also screwed, although for a totally different reason. 
+Namely that you are in the wrong job, and that _they_ should be managing
+your brilliance instead). 
+
+So the name of the game is to _avoid_ decisions, at least the big and
+painful ones.  Making small and non-consequential decisions is fine, and
+makes you look like you know what you're doing, so what a kernel manager
+needs to do is to turn the big and painful ones into small things where
+nobody really cares. 
+
+It helps to realize that the key difference between a big decision and a
+small one is whether you can fix your decision afterwards.  Any decision
+can be made small by just always making sure that if you were wrong (and
+you _will_ be wrong), you can always undo the damage later by
+backtracking.  Suddenly, you get to be doubly managerial for making
+_two_ inconsequential decisions - the wrong one _and_ the right one. 
+
+And people will even see that as true leadership (*cough* bullshit
+*cough*).
+
+Thus the key to avoiding big decisions becomes to just avoiding to do
+things that can't be undone.  Don't get ushered into a corner from which
+you cannot escape.  A cornered rat may be dangerous - a cornered manager
+is just pitiful. 
+
+It turns out that since nobody would be stupid enough to ever really let
+a kernel manager have huge fiscal responsibility _anyway_, it's usually
+fairly easy to backtrack.  Since you're not going to be able to waste
+huge amounts of money that you might not be able to repay, the only
+thing you can backtrack on is a technical decision, and there
+back-tracking is very easy: just tell everybody that you were an
+incompetent nincompoop, say you're sorry, and undo all the worthless
+work you had people work on for the last year.  Suddenly the decision
+you made a year ago wasn't a big decision after all, since it could be
+easily undone. 
+
+It turns out that some people have trouble with this approach, for two
+reasons:
+ - admitting you were an idiot is harder than it looks.  We all like to
+   maintain appearances, and coming out in public to say that you were
+   wrong is sometimes very hard indeed. 
+ - having somebody tell you that what you worked on for the last year
+   wasn't worthwhile after all can be hard on the poor lowly engineers
+   too, and while the actual _work_ was easy enough to undo by just
+   deleting it, you may have irrevocably lost the trust of that
+   engineer.  And remember: "irrevocable" was what we tried to avoid in
+   the first place, and your decision ended up being a big one after
+   all. 
+
+Happily, both of these reasons can be mitigated effectively by just
+admitting up-front that you don't have a friggin' clue, and telling
+people ahead of the fact that your decision is purely preliminary, and
+might be the wrong thing.  You should always reserve the right to change
+your mind, and make people very _aware_ of that.  And it's much easier
+to admit that you are stupid when you haven't _yet_ done the really
+stupid thing.
+
+Then, when it really does turn out to be stupid, people just roll their
+eyes and say "Oops, he did it again".  
+
+This preemptive admission of incompetence might also make the people who
+actually do the work also think twice about whether it's worth doing or
+not.  After all, if _they_ aren't certain whether it's a good idea, you
+sure as hell shouldn't encourage them by promising them that what they
+work on will be included.  Make them at least think twice before they
+embark on a big endeavor. 
+
+Remember: they'd better know more about the details than you do, and
+they usually already think they have the answer to everything.  The best
+thing you can do as a manager is not to instill confidence, but rather a
+healthy dose of critical thinking on what they do. 
+
+Btw, another way to avoid a decision is to plaintively just whine "can't
+we just do both?" and look pitiful.  Trust me, it works.  If it's not
+clear which approach is better, they'll eventually figure it out.  The
+answer may end up being that both teams get so frustrated by the
+situation that they just give up. 
+
+That may sound like a failure, but it's usually a sign that there was
+something wrong with both projects, and the reason the people involved
+couldn't decide was that they were both wrong.  You end up coming up
+smelling like roses, and you avoided yet another decision that you could
+have screwed up on. 
+
+
+		Chapter 2: People
+
+Most people are idiots, and being a manager means you'll have to deal
+with it, and perhaps more importantly, that _they_ have to deal with
+_you_. 
+
+It turns out that while it's easy to undo technical mistakes, it's not
+as easy to undo personality disorders.  You just have to live with
+theirs - and yours. 
+
+However, in order to prepare yourself as a kernel manager, it's best to
+remember not to burn any bridges, bomb any innocent villagers, or
+alienate too many kernel developers. It turns out that alienating people
+is fairly easy, and un-alienating them is hard. Thus "alienating"
+immediately falls under the heading of "not reversible", and becomes a
+no-no according to Chapter 1.
+
+There's just a few simple rules here:
+ (1) don't call people d*ckheads (at least not in public)
+ (2) learn how to apologize when you forgot rule (1)
+
+The problem with #1 is that it's very easy to do, since you can say
+"you're a d*ckhead" in millions of different ways (*), sometimes without
+even realizing it, and almost always with a white-hot conviction that
+you are right. 
+
+And the more convinced you are that you are right (and let's face it,
+you can call just about _anybody_ a d*ckhead, and you often _will_ be
+right), the harder it ends up being to apologize afterwards. 
+
+To solve this problem, you really only have two options:
+ - get really good at apologies
+ - spread the "love" out so evenly that nobody really ends up feeling
+   like they get unfairly targeted.  Make it inventive enough, and they
+   might even be amused. 
+
+The option of being unfailingly polite really doesn't exist. Nobody will
+trust somebody who is so clearly hiding his true character.
+
+(*) Paul Simon sang "Fifty Ways to Lose Your Lover", because quite
+frankly, "A Million Ways to Tell a Developer He Is a D*ckhead" doesn't
+scan nearly as well.  But I'm sure he thought about it. 
+
+
+		Chapter 3: People II - the Good Kind
+
+While it turns out that most people are idiots, the corollary to that is
+sadly that you are one too, and that while we can all bask in the secure
+knowledge that we're better than the average person (let's face it,
+nobody ever believes that they're average or below-average), we should
+also admit that we're not the sharpest knife around, and there will be
+other people that are less of an idiot that you are. 
+
+Some people react badly to smart people.  Others take advantage of them. 
+
+Make sure that you, as a kernel maintainer, are in the second group. 
+Suck up to them, because they are the people who will make your job
+easier. In particular, they'll be able to make your decisions for you,
+which is what the game is all about.
+
+So when you find somebody smarter than you are, just coast along.  Your
+management responsibilities largely become ones of saying "Sounds like a
+good idea - go wild", or "That sounds good, but what about xxx?".  The
+second version in particular is a great way to either learn something
+new about "xxx" or seem _extra_ managerial by pointing out something the
+smarter person hadn't thought about.  In either case, you win.
+
+One thing to look out for is to realize that greatness in one area does
+not necessarily translate to other areas.  So you might prod people in
+specific directions, but let's face it, they might be good at what they
+do, and suck at everything else.  The good news is that people tend to
+naturally gravitate back to what they are good at, so it's not like you
+are doing something irreversible when you _do_ prod them in some
+direction, just don't push too hard.
+
+
+		Chapter 4: Placing blame
+
+Things will go wrong, and people want somebody to blame. Tag, you're it.
+
+It's not actually that hard to accept the blame, especially if people
+kind of realize that it wasn't _all_ your fault.  Which brings us to the
+best way of taking the blame: do it for another guy. You'll feel good
+for taking the fall, he'll feel good about not getting blamed, and the
+guy who lost his whole 36GB porn-collection because of your incompetence
+will grudgingly admit that you at least didn't try to weasel out of it.
+
+Then make the developer who really screwed up (if you can find him) know
+_in_private_ that he screwed up.  Not just so he can avoid it in the
+future, but so that he knows he owes you one.  And, perhaps even more
+importantly, he's also likely the person who can fix it.  Because, let's
+face it, it sure ain't you. 
+
+Taking the blame is also why you get to be manager in the first place. 
+It's part of what makes people trust you, and allow you the potential
+glory, because you're the one who gets to say "I screwed up".  And if
+you've followed the previous rules, you'll be pretty good at saying that
+by now. 
+
+
+		Chapter 5: Things to avoid
+
+There's one thing people hate even more than being called "d*ckhead",
+and that is being called a "d*ckhead" in a sanctimonious voice.  The
+first you can apologize for, the second one you won't really get the
+chance.  They likely will no longer be listening even if you otherwise
+do a good job. 
+
+We all think we're better than anybody else, which means that when
+somebody else puts on airs, it _really_ rubs us the wrong way.  You may
+be morally and intellectually superior to everybody around you, but
+don't try to make it too obvious unless you really _intend_ to irritate
+somebody (*). 
+
+Similarly, don't be too polite or subtle about things. Politeness easily
+ends up going overboard and hiding the problem, and as they say, "On the
+internet, nobody can hear you being subtle". Use a big blunt object to
+hammer the point in, because you can't really depend on people getting
+your point otherwise.
+
+Some humor can help pad both the bluntness and the moralizing.  Going
+overboard to the point of being ridiculous can drive a point home
+without making it painful to the recipient, who just thinks you're being
+silly.  It can thus help get through the personal mental block we all
+have about criticism. 
+
+(*) Hint: internet newsgroups that are not directly related to your work
+are great ways to take out your frustrations at other people. Write
+insulting posts with a sneer just to get into a good flame every once in
+a while, and you'll feel cleansed. Just don't crap too close to home.
+
+
+		Chapter 6: Why me?
+
+Since your main responsibility seems to be to take the blame for other
+peoples mistakes, and make it painfully obvious to everybody else that
+you're incompetent, the obvious question becomes one of why do it in the
+first place?
+
+First off, while you may or may not get screaming teenage girls (or
+boys, let's not be judgmental or sexist here) knocking on your dressing
+room door, you _will_ get an immense feeling of personal accomplishment
+for being "in charge".  Never mind the fact that you're really leading
+by trying to keep up with everybody else and running after them as fast
+as you can.  Everybody will still think you're the person in charge. 
+
+It's a great job if you can hack it.
diff -urN malta/linux/Documentation/PCIEBUS-HOWTO.txt malta/linux/Documentation/PCIEBUS-HOWTO.txt
--- malta/linux/Documentation/PCIEBUS-HOWTO.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/PCIEBUS-HOWTO.txt	2005-06-21 14:20:30.992983000 +0100	1.1.1000.1
@@ -0,0 +1,217 @@
+		The PCI Express Port Bus Driver Guide HOWTO
+	Tom L Nguyen tom.l.nguyen@intel.com
+			11/03/2004
+
+1. About this guide
+
+This guide describes the basics of the PCI Express Port Bus driver
+and provides information on how to enable the service drivers to
+register/unregister with the PCI Express Port Bus Driver.
+
+2. Copyright 2004 Intel Corporation
+
+3. What is the PCI Express Port Bus Driver
+
+A PCI Express Port is a logical PCI-PCI Bridge structure. There
+are two types of PCI Express Port: the Root Port and the Switch
+Port. The Root Port originates a PCI Express link from a PCI Express
+Root Complex and the Switch Port connects PCI Express links to
+internal logical PCI buses. The Switch Port, which has its secondary
+bus representing the switch's internal routing logic, is called the
+switch's Upstream Port. The switch's Downstream Port is bridging from
+switch's internal routing bus to a bus representing the downstream
+PCI Express link from the PCI Express Switch.
+
+A PCI Express Port can provide up to four distinct functions,
+referred to in this document as services, depending on its port type.
+PCI Express Port's services include native hotplug support (HP),
+power management event support (PME), advanced error reporting
+support (AER), and virtual channel support (VC). These services may
+be handled by a single complex driver or be individually distributed
+and handled by corresponding service drivers.
+
+4. Why use the PCI Express Port Bus Driver?
+
+In existing Linux kernels, the Linux Device Driver Model allows a
+physical device to be handled by only a single driver. The PCI
+Express Port is a PCI-PCI Bridge device with multiple distinct
+services. To maintain a clean and simple solution each service
+may have its own software service driver. In this case several
+service drivers will compete for a single PCI-PCI Bridge device.
+For example, if the PCI Express Root Port native hotplug service
+driver is loaded first, it claims a PCI-PCI Bridge Root Port. The
+kernel therefore does not load other service drivers for that Root
+Port. In other words, it is impossible to have multiple service
+drivers load and run on a PCI-PCI Bridge device simultaneously
+using the current driver model.
+
+To enable multiple service drivers running simultaneously requires
+having a PCI Express Port Bus driver, which manages all populated
+PCI Express Ports and distributes all provided service requests
+to the corresponding service drivers as required. Some key
+advantages of using the PCI Express Port Bus driver are listed below:
+
+	- Allow multiple service drivers to run simultaneously on
+	  a PCI-PCI Bridge Port device.
+
+	- Allow service drivers implemented in an independent
+	  staged approach.
+	
+	- Allow one service driver to run on multiple PCI-PCI Bridge
+	  Port devices. 
+
+	- Manage and distribute resources of a PCI-PCI Bridge Port
+	  device to requested service drivers.
+
+5. Configuring the PCI Express Port Bus Driver vs. Service Drivers
+
+5.1 Including the PCI Express Port Bus Driver Support into the Kernel
+
+Including the PCI Express Port Bus driver depends on whether the PCI
+Express support is included in the kernel config. The kernel will
+automatically include the PCI Express Port Bus driver as a kernel
+driver when the PCI Express support is enabled in the kernel.
+
+5.2 Enabling Service Driver Support
+
+PCI device drivers are implemented based on Linux Device Driver Model.
+All service drivers are PCI device drivers. As discussed above, it is
+impossible to load any service driver once the kernel has loaded the
+PCI Express Port Bus Driver. To meet the PCI Express Port Bus Driver
+Model requires some minimal changes on existing service drivers that
+imposes no impact on the functionality of existing service drivers.
+
+A service driver is required to use the two APIs shown below to
+register its service with the PCI Express Port Bus driver (see 
+section 5.2.1 & 5.2.2). It is important that a service driver
+initializes the pcie_port_service_driver data structure, included in
+header file /include/linux/pcieport_if.h, before calling these APIs.
+Failure to do so will result an identity mismatch, which prevents
+the PCI Express Port Bus driver from loading a service driver.
+
+5.2.1 pcie_port_service_register
+
+int pcie_port_service_register(struct pcie_port_service_driver *new)
+
+This API replaces the Linux Driver Model's pci_module_init API. A
+service driver should always calls pcie_port_service_register at
+module init. Note that after service driver being loaded, calls
+such as pci_enable_device(dev) and pci_set_master(dev) are no longer
+necessary since these calls are executed by the PCI Port Bus driver.
+
+5.2.2 pcie_port_service_unregister
+
+void pcie_port_service_unregister(struct pcie_port_service_driver *new)
+
+pcie_port_service_unregister replaces the Linux Driver Model's
+pci_unregister_driver. It's always called by service driver when a
+module exits.
+
+5.2.3 Sample Code
+
+Below is sample service driver code to initialize the port service
+driver data structure.
+
+static struct pcie_port_service_id service_id[] = { {
+	.vendor = PCI_ANY_ID,
+	.device = PCI_ANY_ID,
+	.port_type = PCIE_RC_PORT,
+	.service_type = PCIE_PORT_SERVICE_AER,
+	}, { /* end: all zeroes */ }
+};
+
+static struct pcie_port_service_driver root_aerdrv = {
+	.name		= (char *)device_name,
+	.id_table	= &service_id[0],
+
+	.probe		= aerdrv_load,
+	.remove		= aerdrv_unload,
+
+	.suspend	= aerdrv_suspend,
+	.resume		= aerdrv_resume,
+};
+
+Below is a sample code for registering/unregistering a service
+driver.
+
+static int __init aerdrv_service_init(void)
+{
+	int retval = 0;
+	
+	retval = pcie_port_service_register(&root_aerdrv);
+	if (!retval) {
+		/*
+		 * FIX ME
+		 */
+	}
+	return retval;
+}
+
+static void __exit aerdrv_service_exit(void) 
+{
+	pcie_port_service_unregister(&root_aerdrv);
+}
+
+module_init(aerdrv_service_init);
+module_exit(aerdrv_service_exit);
+
+6. Possible Resource Conflicts
+
+Since all service drivers of a PCI-PCI Bridge Port device are
+allowed to run simultaneously, below lists a few of possible resource
+conflicts with proposed solutions.
+
+6.1 MSI Vector Resource
+
+The MSI capability structure enables a device software driver to call
+pci_enable_msi to request MSI based interrupts. Once MSI interrupts
+are enabled on a device, it stays in this mode until a device driver
+calls pci_disable_msi to disable MSI interrupts and revert back to
+INTx emulation mode. Since service drivers of the same PCI-PCI Bridge
+port share the same physical device, if an individual service driver
+calls pci_enable_msi/pci_disable_msi it may result unpredictable
+behavior. For example, two service drivers run simultaneously on the
+same physical Root Port. Both service drivers call pci_enable_msi to
+request MSI based interrupts. A service driver may not know whether
+any other service drivers have run on this Root Port. If either one
+of them calls pci_disable_msi, it puts the other service driver
+in a wrong interrupt mode. 
+
+To avoid this situation all service drivers are not permitted to
+switch interrupt mode on its device. The PCI Express Port Bus driver
+is responsible for determining the interrupt mode and this should be
+transparent to service drivers. Service drivers need to know only
+the vector IRQ assigned to the field irq of struct pcie_device, which
+is passed in when the PCI Express Port Bus driver probes each service
+driver. Service drivers should use (struct pcie_device*)dev->irq to
+call request_irq/free_irq. In addition, the interrupt mode is stored
+in the field interrupt_mode of struct pcie_device.
+
+6.2 MSI-X Vector Resources
+
+Similar to the MSI a device driver for an MSI-X capable device can
+call pci_enable_msix to request MSI-X interrupts. All service drivers
+are not permitted to switch interrupt mode on its device. The PCI
+Express Port Bus driver is responsible for determining the interrupt
+mode and this should be transparent to service drivers. Any attempt
+by service driver to call pci_enable_msix/pci_disable_msix may
+result unpredictable behavior. Service drivers should use
+(struct pcie_device*)dev->irq and call request_irq/free_irq.
+
+6.3 PCI Memory/IO Mapped Regions
+
+Service drivers for PCI Express Power Management (PME), Advanced
+Error Reporting (AER), Hot-Plug (HP) and Virtual Channel (VC) access
+PCI configuration space on the PCI Express port. In all cases the
+registers accessed are independent of each other. This patch assumes
+that all service drivers will be well behaved and not overwrite
+other service driver's configuration settings.
+
+6.4 PCI Config Registers
+
+Each service driver runs its PCI config operations on its own
+capability structure except the PCI Express capability structure, in
+which Root Control register and Device Control register are shared
+between PME and AER. This patch assumes that all service drivers
+will be well behaved and not overwrite other service driver's
+configuration settings.
diff -urN malta/linux/Documentation/README.cycladesZ malta/linux/Documentation/README.cycladesZ
--- malta/linux/Documentation/README.cycladesZ	1970/01/01 00:00:00
+++ malta/linux/Documentation/README.cycladesZ	2005-06-21 14:20:31.012119000 +0100	1.1.1000.1
@@ -0,0 +1,8 @@
+
+The Cyclades-Z must have firmware loaded onto the card before it will
+operate.  This operation should be performed during system startup,
+
+The firmware, loader program and the latest device driver code are
+available from Cyclades at
+    ftp://ftp.cyclades.com/pub/cyclades/cyclades-z/linux/
+
diff -urN malta/linux/Documentation/SecurityBugs malta/linux/Documentation/SecurityBugs
--- malta/linux/Documentation/SecurityBugs	1970/01/01 00:00:00
+++ malta/linux/Documentation/SecurityBugs	2005-06-21 14:20:31.027768000 +0100	1.1.1000.1
@@ -0,0 +1,38 @@
+Linux kernel developers take security very seriously.  As such, we'd
+like to know when a security bug is found so that it can be fixed and
+disclosed as quickly as possible.  Please report security bugs to the
+Linux kernel security team.
+
+1) Contact
+
+The Linux kernel security team can be contacted by email at
+<security@kernel.org>.  This is a private list of security officers
+who will help verify the bug report and develop and release a fix.
+It is possible that the security team will bring in extra help from
+area maintainers to understand and fix the security vulnerability.
+
+As it is with any bug, the more information provided the easier it
+will be to diagnose and fix.  Please review the procedure outlined in
+REPORTING-BUGS if you are unclear about what information is helpful.
+Any exploit code is very helpful and will not be released without
+consent from the reporter unless it has already been made public.
+
+2) Disclosure
+
+The goal of the Linux kernel security team is to work with the
+bug submitter to bug resolution as well as disclosure.  We prefer
+to fully disclose the bug as soon as possible.  It is reasonable to
+delay disclosure when the bug or the fix is not yet fully understood,
+the solution is not well-tested or for vendor coordination.  However, we
+expect these delays to be short, measurable in days, not weeks or months.
+A disclosure date is negotiated by the security team working with the
+bug submitter as well as vendors.  However, the kernel security team
+holds the final say when setting a disclosure date.  The timeframe for
+disclosure is from immediate (esp. if it's already publically known)
+to a few weeks.  As a basic default policy, we expect report date to
+disclosure date to be on the order of 7 days.
+
+3) Non-disclosure agreements
+
+The Linux kernel security team is not a formal body and therefore unable
+to enter any non-disclosure agreements.
diff -urN malta/linux/Documentation/atomic_ops.txt malta/linux/Documentation/atomic_ops.txt
--- malta/linux/Documentation/atomic_ops.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/atomic_ops.txt	2005-06-21 14:20:31.038756000 +0100	1.1.1000.1
@@ -0,0 +1,456 @@
+		Semantics and Behavior of Atomic and
+		         Bitmask Operations
+
+			  David S. Miller	 
+
+	This document is intended to serve as a guide to Linux port
+maintainers on how to implement atomic counter, bitops, and spinlock
+interfaces properly.
+
+	The atomic_t type should be defined as a signed integer.
+Also, it should be made opaque such that any kind of cast to a normal
+C integer type will fail.  Something like the following should
+suffice:
+
+	typedef struct { volatile int counter; } atomic_t;
+
+	The first operations to implement for atomic_t's are the
+initializers and plain reads.
+
+	#define ATOMIC_INIT(i)		{ (i) }
+	#define atomic_set(v, i)	((v)->counter = (i))
+
+The first macro is used in definitions, such as:
+
+static atomic_t my_counter = ATOMIC_INIT(1);
+
+The second interface can be used at runtime, as in:
+
+	struct foo { atomic_t counter; };
+	...
+
+	struct foo *k;
+
+	k = kmalloc(sizeof(*k), GFP_KERNEL);
+	if (!k)
+		return -ENOMEM;
+	atomic_set(&k->counter, 0);
+
+Next, we have:
+
+	#define atomic_read(v)	((v)->counter)
+
+which simply reads the current value of the counter.
+
+Now, we move onto the actual atomic operation interfaces.
+
+	void atomic_add(int i, atomic_t *v);
+	void atomic_sub(int i, atomic_t *v);
+	void atomic_inc(atomic_t *v);
+	void atomic_dec(atomic_t *v);
+
+These four routines add and subtract integral values to/from the given
+atomic_t value.  The first two routines pass explicit integers by
+which to make the adjustment, whereas the latter two use an implicit
+adjustment value of "1".
+
+One very important aspect of these two routines is that they DO NOT
+require any explicit memory barriers.  They need only perform the
+atomic_t counter update in an SMP safe manner.
+
+Next, we have:
+
+	int atomic_inc_return(atomic_t *v);
+	int atomic_dec_return(atomic_t *v);
+
+These routines add 1 and subtract 1, respectively, from the given
+atomic_t and return the new counter value after the operation is
+performed.
+
+Unlike the above routines, it is required that explicit memory
+barriers are performed before and after the operation.  It must be
+done such that all memory operations before and after the atomic
+operation calls are strongly ordered with respect to the atomic
+operation itself.
+
+For example, it should behave as if a smp_mb() call existed both
+before and after the atomic operation.
+
+If the atomic instructions used in an implementation provide explicit
+memory barrier semantics which satisfy the above requirements, that is
+fine as well.
+
+Let's move on:
+
+	int atomic_add_return(int i, atomic_t *v);
+	int atomic_sub_return(int i, atomic_t *v);
+
+These behave just like atomic_{inc,dec}_return() except that an
+explicit counter adjustment is given instead of the implicit "1".
+This means that like atomic_{inc,dec}_return(), the memory barrier
+semantics are required.
+
+Next:
+
+	int atomic_inc_and_test(atomic_t *v);
+	int atomic_dec_and_test(atomic_t *v);
+
+These two routines increment and decrement by 1, respectively, the
+given atomic counter.  They return a boolean indicating whether the
+resulting counter value was zero or not.
+
+It requires explicit memory barrier semantics around the operation as
+above.
+
+	int atomic_sub_and_test(int i, atomic_t *v);
+
+This is identical to atomic_dec_and_test() except that an explicit
+decrement is given instead of the implicit "1".  It requires explicit
+memory barrier semantics around the operation.
+
+	int atomic_add_negative(int i, atomic_t *v);
+
+The given increment is added to the given atomic counter value.  A
+boolean is return which indicates whether the resulting counter value
+is negative.  It requires explicit memory barrier semantics around the
+operation.
+
+If a caller requires memory barrier semantics around an atomic_t
+operation which does not return a value, a set of interfaces are
+defined which accomplish this:
+
+	void smp_mb__before_atomic_dec(void);
+	void smp_mb__after_atomic_dec(void);
+	void smp_mb__before_atomic_inc(void);
+	void smp_mb__after_atomic_dec(void);
+
+For example, smp_mb__before_atomic_dec() can be used like so:
+
+	obj->dead = 1;
+	smp_mb__before_atomic_dec();
+	atomic_dec(&obj->ref_count);
+
+It makes sure that all memory operations preceeding the atomic_dec()
+call are strongly ordered with respect to the atomic counter
+operation.  In the above example, it guarentees that the assignment of
+"1" to obj->dead will be globally visible to other cpus before the
+atomic counter decrement.
+
+Without the explicitl smp_mb__before_atomic_dec() call, the
+implementation could legally allow the atomic counter update visible
+to other cpus before the "obj->dead = 1;" assignment.
+
+The other three interfaces listed are used to provide explicit
+ordering with respect to memory operations after an atomic_dec() call
+(smp_mb__after_atomic_dec()) and around atomic_inc() calls
+(smp_mb__{before,after}_atomic_inc()).
+
+A missing memory barrier in the cases where they are required by the
+atomic_t implementation above can have disasterous results.  Here is
+an example, which follows a pattern occuring frequently in the Linux
+kernel.  It is the use of atomic counters to implement reference
+counting, and it works such that once the counter falls to zero it can
+be guarenteed that no other entity can be accessing the object:
+
+static void obj_list_add(struct obj *obj)
+{
+	obj->active = 1;
+	list_add(&obj->list);
+}
+
+static void obj_list_del(struct obj *obj)
+{
+	list_del(&obj->list);
+	obj->active = 0;
+}
+
+static void obj_destroy(struct obj *obj)
+{
+	BUG_ON(obj->active);
+	kfree(obj);
+}
+
+struct obj *obj_list_peek(struct list_head *head)
+{
+	if (!list_empty(head)) {
+		struct obj *obj;
+
+		obj = list_entry(head->next, struct obj, list);
+		atomic_inc(&obj->refcnt);
+		return obj;
+	}
+	return NULL;
+}
+
+void obj_poke(void)
+{
+	struct obj *obj;
+
+	spin_lock(&global_list_lock);
+	obj = obj_list_peek(&global_list);
+	spin_unlock(&global_list_lock);
+
+	if (obj) {
+		obj->ops->poke(obj);
+		if (atomic_dec_and_test(&obj->refcnt))
+			obj_destroy(obj);
+	}
+}
+
+void obj_timeout(struct obj *obj)
+{
+	spin_lock(&global_list_lock);
+	obj_list_del(obj);
+	spin_unlock(&global_list_lock);
+
+	if (atomic_dec_and_test(&obj->refcnt))
+		obj_destroy(obj);
+}
+
+(This is a simplification of the ARP queue management in the
+ generic neighbour discover code of the networking.  Olaf Kirch
+ found a bug wrt. memory barriers in kfree_skb() that exposed
+ the atomic_t memory barrier requirements quite clearly.)
+
+Given the above scheme, it must be the case that the obj->active
+update done by the obj list deletion be visible to other processors
+before the atomic counter decrement is performed.
+
+Otherwise, the counter could fall to zero, yet obj->active would still
+be set, thus triggering the assertion in obj_destroy().  The error
+sequence looks like this:
+
+	cpu 0				cpu 1
+	obj_poke()			obj_timeout()
+	obj = obj_list_peek();
+	... gains ref to obj, refcnt=2
+					obj_list_del(obj);
+					obj->active = 0 ...
+					... visibility delayed ...
+					atomic_dec_and_test()
+					... refcnt drops to 1 ...
+	atomic_dec_and_test()
+	... refcount drops to 0 ...
+	obj_destroy()
+	BUG() triggers since obj->active
+	still seen as one
+					obj->active update visibility occurs
+
+With the memory barrier semantics required of the atomic_t operations
+which return values, the above sequence of memory visibility can never
+happen.  Specifically, in the above case the atomic_dec_and_test()
+counter decrement would not become globally visible until the
+obj->active update does.
+
+As a historical note, 32-bit Sparc used to only allow usage of
+24-bits of it's atomic_t type.  This was because it used 8 bits
+as a spinlock for SMP safety.  Sparc32 lacked a "compare and swap"
+type instruction.  However, 32-bit Sparc has since been moved over
+to a "hash table of spinlocks" scheme, that allows the full 32-bit
+counter to be realized.  Essentially, an array of spinlocks are
+indexed into based upon the address of the atomic_t being operated
+on, and that lock protects the atomic operation.  Parisc uses the
+same scheme.
+
+Another note is that the atomic_t operations returning values are
+extremely slow on an old 386.
+
+We will now cover the atomic bitmask operations.  You will find that
+their SMP and memory barrier semantics are similar in shape and scope
+to the atomic_t ops above.
+
+Native atomic bit operations are defined to operate on objects aligned
+to the size of an "unsigned long" C data type, and are least of that
+size.  The endianness of the bits within each "unsigned long" are the
+native endianness of the cpu.
+
+	void set_bit(unsigned long nr, volatils unsigned long *addr);
+	void clear_bit(unsigned long nr, volatils unsigned long *addr);
+	void change_bit(unsigned long nr, volatils unsigned long *addr);
+
+These routines set, clear, and change, respectively, the bit number
+indicated by "nr" on the bit mask pointed to by "ADDR".
+
+They must execute atomically, yet there are no implicit memory barrier
+semantics required of these interfaces.
+
+	int test_and_set_bit(unsigned long nr, volatils unsigned long *addr);
+	int test_and_clear_bit(unsigned long nr, volatils unsigned long *addr);
+	int test_and_change_bit(unsigned long nr, volatils unsigned long *addr);
+
+Like the above, except that these routines return a boolean which
+indicates whether the changed bit was set _BEFORE_ the atomic bit
+operation.
+
+WARNING! It is incredibly important that the value be a boolean,
+ie. "0" or "1".  Do not try to be fancy and save a few instructions by
+declaring the above to return "long" and just returning something like
+"old_val & mask" because that will not work.
+
+For one thing, this return value gets truncated to int in many code
+paths using these interfaces, so on 64-bit if the bit is set in the
+upper 32-bits then testers will never see that.
+
+One great example of where this problem crops up are the thread_info
+flag operations.  Routines such as test_and_set_ti_thread_flag() chop
+the return value into an int.  There are other places where things
+like this occur as well.
+
+These routines, like the atomic_t counter operations returning values,
+require explicit memory barrier semantics around their execution.  All
+memory operations before the atomic bit operation call must be made
+visible globally before the atomic bit operation is made visible.
+Likewise, the atomic bit operation must be visible globally before any
+subsequent memory operation is made visible.  For example:
+
+	obj->dead = 1;
+	if (test_and_set_bit(0, &obj->flags))
+		/* ... */;
+	obj->killed = 1;
+
+The implementation of test_and_set_bit() must guarentee that
+"obj->dead = 1;" is visible to cpus before the atomic memory operation
+done by test_and_set_bit() becomes visible.  Likewise, the atomic
+memory operation done by test_and_set_bit() must become visible before
+"obj->killed = 1;" is visible.
+
+Finally there is the basic operation:
+
+	int test_bit(unsigned long nr, __const__ volatile unsigned long *addr);
+
+Which returns a boolean indicating if bit "nr" is set in the bitmask
+pointed to by "addr".
+
+If explicit memory barriers are required around clear_bit() (which
+does not return a value, and thus does not need to provide memory
+barrier semantics), two interfaces are provided:
+
+	void smp_mb__before_clear_bit(void);
+	void smp_mb__after_clear_bit(void);
+
+They are used as follows, and are akin to their atomic_t operation
+brothers:
+
+	/* All memory operations before this call will
+	 * be globally visible before the clear_bit().
+	 */
+	smp_mb__before_clear_bit();
+	clear_bit( ... );
+
+	/* The clear_bit() will be visible before all
+	 * subsequent memory operations.
+	 */
+	 smp_mb__after_clear_bit();
+
+Finally, there are non-atomic versions of the bitmask operations
+provided.  They are used in contexts where some other higher-level SMP
+locking scheme is being used to protect the bitmask, and thus less
+expensive non-atomic operations may be used in the implementation.
+They have names similar to the above bitmask operation interfaces,
+except that two underscores are prefixed to the interface name.
+
+	void __set_bit(unsigned long nr, volatile unsigned long *addr);
+	void __clear_bit(unsigned long nr, volatile unsigned long *addr);
+	void __change_bit(unsigned long nr, volatile unsigned long *addr);
+	int __test_and_set_bit(unsigned long nr, volatile unsigned long *addr);
+	int __test_and_clear_bit(unsigned long nr, volatile unsigned long *addr);
+	int __test_and_change_bit(unsigned long nr, volatile unsigned long *addr);
+
+These non-atomic variants also do not require any special memory
+barrier semantics.
+
+The routines xchg() and cmpxchg() need the same exact memory barriers
+as the atomic and bit operations returning values.
+
+Spinlocks and rwlocks have memory barrier expectations as well.
+The rule to follow is simple:
+
+1) When acquiring a lock, the implementation must make it globally
+   visible before any subsequent memory operation.
+
+2) When releasing a lock, the implementation must make it such that
+   all previous memory operations are globally visible before the
+   lock release.
+
+Which finally brings us to _atomic_dec_and_lock().  There is an
+architecture-neutral version implemented in lib/dec_and_lock.c,
+but most platforms will wish to optimize this in assembler.
+
+	int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock);
+
+Atomically decrement the given counter, and if will drop to zero
+atomically acquire the given spinlock and perform the decrement
+of the counter to zero.  If it does not drop to zero, do nothing
+with the spinlock.
+
+It is actually pretty simple to get the memory barrier correct.
+Simply satisfy the spinlock grab requirements, which is make
+sure the spinlock operation is globally visible before any
+subsequent memory operation.
+
+We can demonstrate this operation more clearly if we define
+an abstract atomic operation:
+
+	long cas(long *mem, long old, long new);
+
+"cas" stands for "compare and swap".  It atomically:
+
+1) Compares "old" with the value currently at "mem".
+2) If they are equal, "new" is written to "mem".
+3) Regardless, the current value at "mem" is returned.
+
+As an example usage, here is what an atomic counter update
+might look like:
+
+void example_atomic_inc(long *counter)
+{
+	long old, new, ret;
+
+	while (1) {
+		old = *counter;
+		new = old + 1;
+
+		ret = cas(counter, old, new);
+		if (ret == old)
+			break;
+	}
+}
+
+Let's use cas() in order to build a pseudo-C atomic_dec_and_lock():
+
+int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock)
+{
+	long old, new, ret;
+	int went_to_zero;
+
+	went_to_zero = 0;
+	while (1) {
+		old = atomic_read(atomic);
+		new = old - 1;
+		if (new == 0) {
+			went_to_zero = 1;
+			spin_lock(lock);
+		}
+		ret = cas(atomic, old, new);
+		if (ret == old)
+			break;
+		if (went_to_zero) {
+			spin_unlock(lock);
+			went_to_zero = 0;
+		}
+	}
+
+	return went_to_zero;
+}
+
+Now, as far as memory barriers go, as long as spin_lock()
+strictly orders all subsequent memory operations (including
+the cas()) with respect to itself, things will be fine.
+
+Said another way, _atomic_dec_and_lock() must guarentee that
+a counter dropping to zero is never made visible before the
+spinlock being acquired.
+
+Note that this also means that for the case where the counter
+is not dropping to zero, there are no memory ordering
+requirements.
diff -urN malta/linux/Documentation/cpusets.txt malta/linux/Documentation/cpusets.txt
--- malta/linux/Documentation/cpusets.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/cpusets.txt	2005-06-21 14:20:31.053624000 +0100	1.3.1000.1
@@ -0,0 +1,414 @@
+				CPUSETS
+				-------
+
+Copyright (C) 2004 BULL SA.
+Written by Simon.Derr@bull.net
+
+Portions Copyright (c) 2004 Silicon Graphics, Inc.
+Modified by Paul Jackson <pj@sgi.com>
+
+CONTENTS:
+=========
+
+1. Cpusets
+  1.1 What are cpusets ?
+  1.2 Why are cpusets needed ?
+  1.3 How are cpusets implemented ?
+  1.4 How do I use cpusets ?
+2. Usage Examples and Syntax
+  2.1 Basic Usage
+  2.2 Adding/removing cpus
+  2.3 Setting flags
+  2.4 Attaching processes
+3. Questions
+4. Contact
+
+1. Cpusets
+==========
+
+1.1 What are cpusets ?
+----------------------
+
+Cpusets provide a mechanism for assigning a set of CPUs and Memory
+Nodes to a set of tasks.
+
+Cpusets constrain the CPU and Memory placement of tasks to only
+the resources within a tasks current cpuset.  They form a nested
+hierarchy visible in a virtual file system.  These are the essential
+hooks, beyond what is already present, required to manage dynamic
+job placement on large systems.
+
+Each task has a pointer to a cpuset.  Multiple tasks may reference
+the same cpuset.  Requests by a task, using the sched_setaffinity(2)
+system call to include CPUs in its CPU affinity mask, and using the
+mbind(2) and set_mempolicy(2) system calls to include Memory Nodes
+in its memory policy, are both filtered through that tasks cpuset,
+filtering out any CPUs or Memory Nodes not in that cpuset.  The
+scheduler will not schedule a task on a CPU that is not allowed in
+its cpus_allowed vector, and the kernel page allocator will not
+allocate a page on a node that is not allowed in the requesting tasks
+mems_allowed vector.
+
+If a cpuset is cpu or mem exclusive, no other cpuset, other than a direct
+ancestor or descendent, may share any of the same CPUs or Memory Nodes.
+
+User level code may create and destroy cpusets by name in the cpuset
+virtual file system, manage the attributes and permissions of these
+cpusets and which CPUs and Memory Nodes are assigned to each cpuset,
+specify and query to which cpuset a task is assigned, and list the
+task pids assigned to a cpuset.
+
+
+1.2 Why are cpusets needed ?
+----------------------------
+
+The management of large computer systems, with many processors (CPUs),
+complex memory cache hierarchies and multiple Memory Nodes having
+non-uniform access times (NUMA) presents additional challenges for
+the efficient scheduling and memory placement of processes.
+
+Frequently more modest sized systems can be operated with adequate
+efficiency just by letting the operating system automatically share
+the available CPU and Memory resources amongst the requesting tasks.
+
+But larger systems, which benefit more from careful processor and
+memory placement to reduce memory access times and contention,
+and which typically represent a larger investment for the customer,
+can benefit from explictly placing jobs on properly sized subsets of
+the system.
+
+This can be especially valuable on:
+
+    * Web Servers running multiple instances of the same web application,
+    * Servers running different applications (for instance, a web server
+      and a database), or
+    * NUMA systems running large HPC applications with demanding
+      performance characteristics.
+
+These subsets, or "soft partitions" must be able to be dynamically
+adjusted, as the job mix changes, without impacting other concurrently
+executing jobs.
+
+The kernel cpuset patch provides the minimum essential kernel
+mechanisms required to efficiently implement such subsets.  It
+leverages existing CPU and Memory Placement facilities in the Linux
+kernel to avoid any additional impact on the critical scheduler or
+memory allocator code.
+
+
+1.3 How are cpusets implemented ?
+---------------------------------
+
+Cpusets provide a Linux kernel (2.6.7 and above) mechanism to constrain
+which CPUs and Memory Nodes are used by a process or set of processes.
+
+The Linux kernel already has a pair of mechanisms to specify on which
+CPUs a task may be scheduled (sched_setaffinity) and on which Memory
+Nodes it may obtain memory (mbind, set_mempolicy).
+
+Cpusets extends these two mechanisms as follows:
+
+ - Cpusets are sets of allowed CPUs and Memory Nodes, known to the
+   kernel.
+ - Each task in the system is attached to a cpuset, via a pointer
+   in the task structure to a reference counted cpuset structure.
+ - Calls to sched_setaffinity are filtered to just those CPUs
+   allowed in that tasks cpuset.
+ - Calls to mbind and set_mempolicy are filtered to just
+   those Memory Nodes allowed in that tasks cpuset.
+ - The root cpuset contains all the systems CPUs and Memory
+   Nodes.
+ - For any cpuset, one can define child cpusets containing a subset
+   of the parents CPU and Memory Node resources.
+ - The hierarchy of cpusets can be mounted at /dev/cpuset, for
+   browsing and manipulation from user space.
+ - A cpuset may be marked exclusive, which ensures that no other
+   cpuset (except direct ancestors and descendents) may contain
+   any overlapping CPUs or Memory Nodes.
+ - You can list all the tasks (by pid) attached to any cpuset.
+
+The implementation of cpusets requires a few, simple hooks
+into the rest of the kernel, none in performance critical paths:
+
+ - in main/init.c, to initialize the root cpuset at system boot.
+ - in fork and exit, to attach and detach a task from its cpuset.
+ - in sched_setaffinity, to mask the requested CPUs by what's
+   allowed in that tasks cpuset.
+ - in sched.c migrate_all_tasks(), to keep migrating tasks within
+   the CPUs allowed by their cpuset, if possible.
+ - in the mbind and set_mempolicy system calls, to mask the requested
+   Memory Nodes by what's allowed in that tasks cpuset.
+ - in page_alloc, to restrict memory to allowed nodes.
+ - in vmscan.c, to restrict page recovery to the current cpuset.
+
+In addition a new file system, of type "cpuset" may be mounted,
+typically at /dev/cpuset, to enable browsing and modifying the cpusets
+presently known to the kernel.  No new system calls are added for
+cpusets - all support for querying and modifying cpusets is via
+this cpuset file system.
+
+Each task under /proc has an added file named 'cpuset', displaying
+the cpuset name, as the path relative to the root of the cpuset file
+system.
+
+The /proc/<pid>/status file for each task has two added lines,
+displaying the tasks cpus_allowed (on which CPUs it may be scheduled)
+and mems_allowed (on which Memory Nodes it may obtain memory),
+in the format seen in the following example:
+
+  Cpus_allowed:   ffffffff,ffffffff,ffffffff,ffffffff
+  Mems_allowed:   ffffffff,ffffffff
+
+Each cpuset is represented by a directory in the cpuset file system
+containing the following files describing that cpuset:
+
+ - cpus: list of CPUs in that cpuset
+ - mems: list of Memory Nodes in that cpuset
+ - cpu_exclusive flag: is cpu placement exclusive?
+ - mem_exclusive flag: is memory placement exclusive?
+ - tasks: list of tasks (by pid) attached to that cpuset
+
+New cpusets are created using the mkdir system call or shell
+command.  The properties of a cpuset, such as its flags, allowed
+CPUs and Memory Nodes, and attached tasks, are modified by writing
+to the appropriate file in that cpusets directory, as listed above.
+
+The named hierarchical structure of nested cpusets allows partitioning
+a large system into nested, dynamically changeable, "soft-partitions".
+
+The attachment of each task, automatically inherited at fork by any
+children of that task, to a cpuset allows organizing the work load
+on a system into related sets of tasks such that each set is constrained
+to using the CPUs and Memory Nodes of a particular cpuset.  A task
+may be re-attached to any other cpuset, if allowed by the permissions
+on the necessary cpuset file system directories.
+
+Such management of a system "in the large" integrates smoothly with
+the detailed placement done on individual tasks and memory regions
+using the sched_setaffinity, mbind and set_mempolicy system calls.
+
+The following rules apply to each cpuset:
+
+ - Its CPUs and Memory Nodes must be a subset of its parents.
+ - It can only be marked exclusive if its parent is.
+ - If its cpu or memory is exclusive, they may not overlap any sibling.
+
+These rules, and the natural hierarchy of cpusets, enable efficient
+enforcement of the exclusive guarantee, without having to scan all
+cpusets every time any of them change to ensure nothing overlaps a
+exclusive cpuset.  Also, the use of a Linux virtual file system (vfs)
+to represent the cpuset hierarchy provides for a familiar permission
+and name space for cpusets, with a minimum of additional kernel code.
+
+1.4 How do I use cpusets ?
+--------------------------
+
+In order to minimize the impact of cpusets on critical kernel
+code, such as the scheduler, and due to the fact that the kernel
+does not support one task updating the memory placement of another
+task directly, the impact on a task of changing its cpuset CPU
+or Memory Node placement, or of changing to which cpuset a task
+is attached, is subtle.
+
+If a cpuset has its Memory Nodes modified, then for each task attached
+to that cpuset, the next time that the kernel attempts to allocate
+a page of memory for that task, the kernel will notice the change
+in the tasks cpuset, and update its per-task memory placement to
+remain within the new cpusets memory placement.  If the task was using
+mempolicy MPOL_BIND, and the nodes to which it was bound overlap with
+its new cpuset, then the task will continue to use whatever subset
+of MPOL_BIND nodes are still allowed in the new cpuset.  If the task
+was using MPOL_BIND and now none of its MPOL_BIND nodes are allowed
+in the new cpuset, then the task will be essentially treated as if it
+was MPOL_BIND bound to the new cpuset (even though its numa placement,
+as queried by get_mempolicy(), doesn't change).  If a task is moved
+from one cpuset to another, then the kernel will adjust the tasks
+memory placement, as above, the next time that the kernel attempts
+to allocate a page of memory for that task.
+
+If a cpuset has its CPUs modified, then each task using that
+cpuset does _not_ change its behavior automatically.  In order to
+minimize the impact on the critical scheduling code in the kernel,
+tasks will continue to use their prior CPU placement until they
+are rebound to their cpuset, by rewriting their pid to the 'tasks'
+file of their cpuset.  If a task had been bound to some subset of its
+cpuset using the sched_setaffinity() call, and if any of that subset
+is still allowed in its new cpuset settings, then the task will be
+restricted to the intersection of the CPUs it was allowed on before,
+and its new cpuset CPU placement.  If, on the other hand, there is
+no overlap between a tasks prior placement and its new cpuset CPU
+placement, then the task will be allowed to run on any CPU allowed
+in its new cpuset.  If a task is moved from one cpuset to another,
+its CPU placement is updated in the same way as if the tasks pid is
+rewritten to the 'tasks' file of its current cpuset.
+
+In summary, the memory placement of a task whose cpuset is changed is
+updated by the kernel, on the next allocation of a page for that task,
+but the processor placement is not updated, until that tasks pid is
+rewritten to the 'tasks' file of its cpuset.  This is done to avoid
+impacting the scheduler code in the kernel with a check for changes
+in a tasks processor placement.
+
+There is an exception to the above.  If hotplug funtionality is used
+to remove all the CPUs that are currently assigned to a cpuset,
+then the kernel will automatically update the cpus_allowed of all
+tasks attached to CPUs in that cpuset to allow all CPUs.  When memory
+hotplug functionality for removing Memory Nodes is available, a
+similar exception is expected to apply there as well.  In general,
+the kernel prefers to violate cpuset placement, over starving a task
+that has had all its allowed CPUs or Memory Nodes taken offline.  User
+code should reconfigure cpusets to only refer to online CPUs and Memory
+Nodes when using hotplug to add or remove such resources.
+
+There is a second exception to the above.  GFP_ATOMIC requests are
+kernel internal allocations that must be satisfied, immediately.
+The kernel may drop some request, in rare cases even panic, if a
+GFP_ATOMIC alloc fails.  If the request cannot be satisfied within
+the current tasks cpuset, then we relax the cpuset, and look for
+memory anywhere we can find it.  It's better to violate the cpuset
+than stress the kernel.
+
+To start a new job that is to be contained within a cpuset, the steps are:
+
+ 1) mkdir /dev/cpuset
+ 2) mount -t cpuset none /dev/cpuset
+ 3) Create the new cpuset by doing mkdir's and write's (or echo's) in
+    the /dev/cpuset virtual file system.
+ 4) Start a task that will be the "founding father" of the new job.
+ 5) Attach that task to the new cpuset by writing its pid to the
+    /dev/cpuset tasks file for that cpuset.
+ 6) fork, exec or clone the job tasks from this founding father task.
+
+For example, the following sequence of commands will setup a cpuset
+named "Charlie", containing just CPUs 2 and 3, and Memory Node 1,
+and then start a subshell 'sh' in that cpuset:
+
+  mount -t cpuset none /dev/cpuset
+  cd /dev/cpuset
+  mkdir Charlie
+  cd Charlie
+  /bin/echo 2-3 > cpus
+  /bin/echo 1 > mems
+  /bin/echo $$ > tasks
+  sh
+  # The subshell 'sh' is now running in cpuset Charlie
+  # The next line should display '/Charlie'
+  cat /proc/self/cpuset
+
+In the case that a change of cpuset includes wanting to move already
+allocated memory pages, consider further the work of IWAMOTO
+Toshihiro <iwamoto@valinux.co.jp> for page remapping and memory
+hotremoval, which can be found at:
+
+  http://people.valinux.co.jp/~iwamoto/mh.html
+
+The integration of cpusets with such memory migration is not yet
+available.
+
+In the future, a C library interface to cpusets will likely be
+available.  For now, the only way to query or modify cpusets is
+via the cpuset file system, using the various cd, mkdir, echo, cat,
+rmdir commands from the shell, or their equivalent from C.
+
+The sched_setaffinity calls can also be done at the shell prompt using
+SGI's runon or Robert Love's taskset.  The mbind and set_mempolicy
+calls can be done at the shell prompt using the numactl command
+(part of Andi Kleen's numa package).
+
+2. Usage Examples and Syntax
+============================
+
+2.1 Basic Usage
+---------------
+
+Creating, modifying, using the cpusets can be done through the cpuset
+virtual filesystem.
+
+To mount it, type:
+# mount -t cpuset none /dev/cpuset
+
+Then under /dev/cpuset you can find a tree that corresponds to the
+tree of the cpusets in the system. For instance, /dev/cpuset
+is the cpuset that holds the whole system.
+
+If you want to create a new cpuset under /dev/cpuset:
+# cd /dev/cpuset
+# mkdir my_cpuset
+
+Now you want to do something with this cpuset.
+# cd my_cpuset
+
+In this directory you can find several files:
+# ls
+cpus  cpu_exclusive  mems  mem_exclusive  tasks
+
+Reading them will give you information about the state of this cpuset:
+the CPUs and Memory Nodes it can use, the processes that are using
+it, its properties.  By writing to these files you can manipulate
+the cpuset.
+
+Set some flags:
+# /bin/echo 1 > cpu_exclusive
+
+Add some cpus:
+# /bin/echo 0-7 > cpus
+
+Now attach your shell to this cpuset:
+# /bin/echo $$ > tasks
+
+You can also create cpusets inside your cpuset by using mkdir in this
+directory.
+# mkdir my_sub_cs
+
+To remove a cpuset, just use rmdir:
+# rmdir my_sub_cs
+This will fail if the cpuset is in use (has cpusets inside, or has
+processes attached).
+
+2.2 Adding/removing cpus
+------------------------
+
+This is the syntax to use when writing in the cpus or mems files
+in cpuset directories:
+
+# /bin/echo 1-4 > cpus		-> set cpus list to cpus 1,2,3,4
+# /bin/echo 1,2,3,4 > cpus	-> set cpus list to cpus 1,2,3,4
+
+2.3 Setting flags
+-----------------
+
+The syntax is very simple:
+
+# /bin/echo 1 > cpu_exclusive 	-> set flag 'cpu_exclusive'
+# /bin/echo 0 > cpu_exclusive 	-> unset flag 'cpu_exclusive'
+
+2.4 Attaching processes
+-----------------------
+
+# /bin/echo PID > tasks
+
+Note that it is PID, not PIDs. You can only attach ONE task at a time.
+If you have several tasks to attach, you have to do it one after another:
+
+# /bin/echo PID1 > tasks
+# /bin/echo PID2 > tasks
+	...
+# /bin/echo PIDn > tasks
+
+
+3. Questions
+============
+
+Q: what's up with this '/bin/echo' ?
+A: bash's builtin 'echo' command does not check calls to write() against
+   errors. If you use it in the cpuset file system, you won't be
+   able to tell whether a command succeeded or failed.
+
+Q: When I attach processes, only the first of the line gets really attached !
+A: We can only return one error code per call to write(). So you should also
+   put only ONE pid.
+
+4. Contact
+==========
+
+Web: http://www.bullopensource.org/cpuset
diff -urN malta/linux/Documentation/dontdiff malta/linux/Documentation/dontdiff
--- malta/linux/Documentation/dontdiff	1970/01/01 00:00:00
+++ malta/linux/Documentation/dontdiff	2005-06-21 14:20:31.067853000 +0100	1.2.1000.1
@@ -0,0 +1,140 @@
+*.a
+*.aux
+*.bin
+*.cpio
+*.css
+*.dvi
+*.eps
+*.gif
+*.grep
+*.grp
+*.gz
+*.html
+*.jpeg
+*.ko
+*.log
+*.lst
+*.mod.c
+*.o
+*.orig
+*.out
+*.pdf
+*.png
+*.ps
+*.rej
+*.s
+*.sgml
+*.so
+*.tex
+*.ver
+*.xml
+*_MODULES
+*_vga16.c
+*cscope*
+*~
+.*
+.cscope
+53c700_d.h
+53c8xx_d.h*
+BitKeeper
+COPYING
+CREDITS
+CVS
+ChangeSet
+Kerntypes
+MODS.txt
+Module.symvers
+PENDING
+SCCS
+System.map*
+TAGS
+aic7*reg.h*
+aic7*reg_print.c*
+aic7*seq.h*
+aicasm
+aicdb.h*
+asm
+asm_offsets.*
+autoconf.h*
+bbootsect
+bin2c
+binkernel.spec
+bootsect
+bsetup
+btfixupprep
+build
+bvmlinux
+bzImage*
+classlist.h*
+comp*.log
+compile.h*
+config
+config-*
+config_data.h*
+conmakehash
+consolemap_deftbl.c*
+crc32table.h*
+cscope.*
+defkeymap.c*
+devlist.h*
+docproc
+dummy_sym.c*
+elfconfig.h*
+filelist
+fixdep
+fore200e_mkfirm
+fore200e_pca_fw.c*
+gen-devlist
+gen-kdb_cmds.c*
+gen_crc32table
+gen_init_cpio
+genksyms
+gentbl
+ikconfig.h*
+initramfs_list
+kallsyms
+kconfig
+kconfig.tk
+keywords.c*
+ksym.c*
+ksym.h*
+lex.c*
+logo_*.c
+logo_*_clut224.c
+logo_*_mono.c
+lxdialog
+make_times_h
+map
+maui_boot.h
+mk_elfconfig
+mkdep
+mktables
+modpost
+modversions.h*
+offsets.h
+oui.c*
+parse.c*
+parse.h*
+pnmtologo
+ppc_defs.h*
+promcon_tbl.c*
+pss_boot.h
+raid6altivec*.c
+raid6int*.c
+raid6tables.c
+setup
+sim710_d.h*
+sm_tbl*
+split-include
+tags
+times.h*
+tkparse
+trix_boot.h
+version.h*
+vmlinux
+vmlinux-*
+vmlinux.lds
+vsyscall.lds
+wanxlfw.inc
+uImage
+zImage
diff -urN malta/linux/Documentation/feature-removal-schedule.txt malta/linux/Documentation/feature-removal-schedule.txt
--- malta/linux/Documentation/feature-removal-schedule.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/feature-removal-schedule.txt	2005-06-21 14:20:31.079687000 +0100	1.7.1000.1
@@ -0,0 +1,85 @@
+The following is a list of files and features that are going to be
+removed in the kernel source tree.  Every entry should contain what
+exactly is going away, why it is happening, and who is going to be doing
+the work.  When the feature is removed from the kernel, it should also
+be removed from this file.
+
+---------------------------
+
+What:	devfs
+When:	July 2005
+Files:	fs/devfs/*, include/linux/devfs_fs*.h and assorted devfs
+	function calls throughout the kernel tree
+Why:	It has been unmaintained for a number of years, has unfixable
+	races, contains a naming policy within the kernel that is
+	against the LSB, and can be replaced by using udev.
+Who:	Greg Kroah-Hartman <greg@kroah.com>
+
+---------------------------
+
+What:	ACPI S4bios support
+When:	May 2005
+Why:	Noone uses it, and it probably does not work, anyway. swsusp is
+	faster, more reliable, and people are actually using it.
+Who:	Pavel Machek <pavel@suse.cz>
+
+---------------------------
+
+What:	PCI Name Database (CONFIG_PCI_NAMES)
+When:	July 2005
+Why:	It bloats the kernel unnecessarily, and is handled by userspace better
+	(pciutils supports it.)  Will eliminate the need to try to keep the
+	pci.ids file in sync with the sf.net database all of the time.
+Who:	Greg Kroah-Hartman <gregkh@suse.de>
+
+---------------------------
+
+What:	io_remap_page_range() (macro or function)
+When:	September 2005
+Why:	Replaced by io_remap_pfn_range() which allows more memory space
+	addressabilty (by using a pfn) and supports sparc & sparc64
+	iospace as part of the pfn.
+Who:	Randy Dunlap <rddunlap@osdl.org>
+
+---------------------------
+
+What:	register_ioctl32_conversion() / unregister_ioctl32_conversion()
+When:	April 2005
+Why:	Replaced by ->compat_ioctl in file_operations and other method
+	vecors.
+Who:	Andi Kleen <ak@muc.de>, Christoph Hellwig <hch@lst.de>
+
+---------------------------
+
+What:	RCU API moves to EXPORT_SYMBOL_GPL
+When:	April 2006
+Files:	include/linux/rcupdate.h, kernel/rcupdate.c
+Why:	Outside of Linux, the only implementations of anything even
+	vaguely resembling RCU that I am aware of are in DYNIX/ptx,
+	VM/XA, Tornado, and K42.  I do not expect anyone to port binary
+	drivers or kernel modules from any of these, since the first two
+	are owned by IBM and the last two are open-source research OSes.
+	So these will move to GPL after a grace period to allow
+	people, who might be using implementations that I am not aware
+	of, to adjust to this upcoming change.
+Who:	Paul E. McKenney <paulmck@us.ibm.com>
+
+---------------------------
+
+What:	IEEE1394 Audio and Music Data Transmission Protocol driver,
+	Connection Management Procedures driver
+When:	November 2005
+Files:	drivers/ieee1394/{amdtp,cmp}*
+Why:	These are incomplete, have never worked, and are better implemented
+	in userland via raw1394 (see http://freebob.sourceforge.net/ for
+	example.)
+Who:	Jody McIntyre <scjody@steamballoon.com>
+
+---------------------------
+
+What:	raw1394: requests of type RAW1394_REQ_ISO_SEND, RAW1394_REQ_ISO_LISTEN
+When:	November 2005
+Why:	Deprecated in favour of the new ioctl-based rawiso interface, which is
+	more efficient.  You should really be using libraw1394 for raw1394
+	access anyway.
+Who:	Jody McIntyre <scjody@steamballoon.com>
diff -urN malta/linux/Documentation/ibm-acpi.txt malta/linux/Documentation/ibm-acpi.txt
--- malta/linux/Documentation/ibm-acpi.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/ibm-acpi.txt	2005-06-21 14:20:31.090846000 +0100	1.1.1000.1
@@ -0,0 +1,474 @@
+		    IBM ThinkPad ACPI Extras Driver
+
+                            Version 0.8
+                          8 November 2004
+
+               Borislav Deianov <borislav@users.sf.net>
+		      http://ibm-acpi.sf.net/
+
+
+This is a Linux ACPI driver for the IBM ThinkPad laptops. It aims to
+support various features of these laptops which are accessible through
+the ACPI framework but not otherwise supported by the generic Linux
+ACPI drivers.
+
+
+Status
+------
+
+The features currently supported are the following (see below for
+detailed description):
+
+	- Fn key combinations
+	- Bluetooth enable and disable
+	- video output switching, expansion control	
+	- ThinkLight on and off
+	- limited docking and undocking
+	- UltraBay eject
+	- Experimental: CMOS control
+	- Experimental: LED control
+	- Experimental: ACPI sounds
+
+A compatibility table by model and feature is maintained on the web
+site, http://ibm-acpi.sf.net/. I appreciate any success or failure
+reports, especially if they add to or correct the compatibility table.
+Please include the following information in your report:
+
+	- ThinkPad model name
+	- a copy of your DSDT, from /proc/acpi/dsdt
+	- which driver features work and which don't
+	- the observed behavior of non-working features
+
+Any other comments or patches are also more than welcome.
+
+
+Installation
+------------
+
+If you are compiling this driver as included in the Linux kernel
+sources, simply enable the CONFIG_ACPI_IBM option (Power Management /
+ACPI / IBM ThinkPad Laptop Extras). The rest of this section describes
+how to install this driver when downloaded from the web site.
+
+First, you need to get a kernel with ACPI support up and running.
+Please refer to http://acpi.sourceforge.net/ for help with this
+step. How successful you will be depends a lot on you ThinkPad model,
+the kernel you are using and any additional patches applied. The
+kernel provided with your distribution may not be good enough. I
+needed to compile a 2.6.7 kernel with the 20040715 ACPI patch to get
+ACPI working reliably on my ThinkPad X40. Old ThinkPad models may not
+be supported at all.
+
+Assuming you have the basic ACPI support working (e.g. you can see the
+/proc/acpi directory), follow the following steps to install this
+driver:
+
+	- unpack the archive:
+
+		tar xzvf ibm-acpi-x.y.tar.gz; cd ibm-acpi-x.y
+
+	- compile the driver:
+
+		make
+
+	- install the module in your kernel modules directory:
+
+		make install
+
+	- load the module:
+
+		modprobe ibm_acpi
+
+After loading the module, check the "dmesg" output for any error messages.
+
+
+Features
+--------
+
+The driver creates the /proc/acpi/ibm directory. There is a file under
+that directory for each feature described below. Note that while the
+driver is still in the alpha stage, the exact proc file format and
+commands supported by the various features is guaranteed to change
+frequently.
+
+Driver Version -- /proc/acpi/ibm/driver
+--------------------------------------
+
+The driver name and version. No commands can be written to this file.
+
+Hot Keys -- /proc/acpi/ibm/hotkey
+---------------------------------
+
+Without this driver, only the Fn-F4 key (sleep button) generates an
+ACPI event. With the driver loaded, the hotkey feature enabled and the
+mask set (see below), the various hot keys generate ACPI events in the
+following format:
+
+	ibm/hotkey HKEY 00000080 0000xxxx
+
+The last four digits vary depending on the key combination pressed.
+All labeled Fn-Fx key combinations generate distinct events. In
+addition, the lid microswitch and some docking station buttons may
+also generate such events.
+
+The following commands can be written to this file:
+
+	echo enable > /proc/acpi/ibm/hotkey -- enable the hot keys feature
+	echo disable > /proc/acpi/ibm/hotkey -- disable the hot keys feature
+	echo 0xffff > /proc/acpi/ibm/hotkey -- enable all possible hot keys
+	echo 0x0000 > /proc/acpi/ibm/hotkey -- disable all possible hot keys
+	... any other 4-hex-digit mask ...
+	echo reset > /proc/acpi/ibm/hotkey -- restore the original mask
+
+The bit mask allows some control over which hot keys generate ACPI
+events. Not all bits in the mask can be modified. Not all bits that
+can be modified do anything. Not all hot keys can be individually
+controlled by the mask. Most recent ThinkPad models honor the
+following bits (assuming the hot keys feature has been enabled):
+
+	key	bit	behavior when set	behavior when unset
+
+	Fn-F3			always generates ACPI event
+	Fn-F4			always generates ACPI event
+	Fn-F5	0010	generate ACPI event	enable/disable Bluetooth
+	Fn-F7	0040	generate ACPI event	switch LCD and external display
+	Fn-F8	0080	generate ACPI event	expand screen or none
+	Fn-F9	0100	generate ACPI event	none
+	Fn-F12			always generates ACPI event
+
+Some models do not support all of the above. For example, the T30 does
+not support Fn-F5 and Fn-F9. Other models do not support the mask at
+all. On those models, hot keys cannot be controlled individually.
+
+Note that enabling ACPI events for some keys prevents their default
+behavior. For example, if events for Fn-F5 are enabled, that key will
+no longer enable/disable Bluetooth by itself. This can still be done
+from an acpid handler for the ibm/hotkey event.
+
+Note also that not all Fn key combinations are supported through
+ACPI. For example, on the X40, the brightness, volume and "Access IBM"
+buttons do not generate ACPI events even with this driver. They *can*
+be used through the "ThinkPad Buttons" utility, see
+http://www.nongnu.org/tpb/
+
+Bluetooth -- /proc/acpi/ibm/bluetooth
+-------------------------------------
+
+This feature shows the presence and current state of a Bluetooth
+device. If Bluetooth is installed, the following commands can be used:
+
+	echo enable > /proc/acpi/ibm/bluetooth
+	echo disable > /proc/acpi/ibm/bluetooth
+
+Video output control -- /proc/acpi/ibm/video
+--------------------------------------------
+
+This feature allows control over the devices used for video output -
+LCD, CRT or DVI (if available). The following commands are available:
+
+	echo lcd_enable > /proc/acpi/ibm/video
+	echo lcd_disable > /proc/acpi/ibm/video
+	echo crt_enable > /proc/acpi/ibm/video
+	echo crt_disable > /proc/acpi/ibm/video
+	echo dvi_enable > /proc/acpi/ibm/video
+	echo dvi_disable > /proc/acpi/ibm/video
+	echo auto_enable > /proc/acpi/ibm/video
+	echo auto_disable > /proc/acpi/ibm/video
+	echo expand_toggle > /proc/acpi/ibm/video
+	echo video_switch > /proc/acpi/ibm/video
+
+Each video output device can be enabled or disabled individually.
+Reading /proc/acpi/ibm/video shows the status of each device.
+
+Automatic video switching can be enabled or disabled.  When automatic
+video switching is enabled, certain events (e.g. opening the lid,
+docking or undocking) cause the video output device to change
+automatically. While this can be useful, it also causes flickering
+and, on the X40, video corruption. By disabling automatic switching,
+the flickering or video corruption can be avoided.
+
+The video_switch command cycles through the available video outputs
+(it sumulates the behavior of Fn-F7).
+
+Video expansion can be toggled through this feature. This controls
+whether the display is expanded to fill the entire LCD screen when a
+mode with less than full resolution is used. Note that the current
+video expansion status cannot be determined through this feature.
+
+Note that on many models (particularly those using Radeon graphics
+chips) the X driver configures the video card in a way which prevents
+Fn-F7 from working. This also disables the video output switching
+features of this driver, as it uses the same ACPI methods as
+Fn-F7. Video switching on the console should still work.
+
+ThinkLight control -- /proc/acpi/ibm/light
+------------------------------------------
+
+The current status of the ThinkLight can be found in this file. A few
+models which do not make the status available will show it as
+"unknown". The available commands are:
+
+	echo on  > /proc/acpi/ibm/light
+	echo off > /proc/acpi/ibm/light
+
+Docking / Undocking -- /proc/acpi/ibm/dock
+------------------------------------------
+
+Docking and undocking (e.g. with the X4 UltraBase) requires some
+actions to be taken by the operating system to safely make or break
+the electrical connections with the dock.
+
+The docking feature of this driver generates the following ACPI events:
+
+	ibm/dock GDCK 00000003 00000001 -- eject request
+	ibm/dock GDCK 00000003 00000002 -- undocked
+	ibm/dock GDCK 00000000 00000003 -- docked
+
+NOTE: These events will only be generated if the laptop was docked
+when originally booted. This is due to the current lack of support for
+hot plugging of devices in the Linux ACPI framework. If the laptop was
+booted while not in the dock, the following message is shown in the
+logs: "ibm_acpi: dock device not present". No dock-related events are
+generated but the dock and undock commands described below still
+work. They can be executed manually or triggered by Fn key
+combinations (see the example acpid configuration files included in
+the driver tarball package available on the web site).
+
+When the eject request button on the dock is pressed, the first event
+above is generated. The handler for this event should issue the
+following command:
+
+	echo undock > /proc/acpi/ibm/dock
+
+After the LED on the dock goes off, it is safe to eject the laptop.
+Note: if you pressed this key by mistake, go ahead and eject the
+laptop, then dock it back in. Otherwise, the dock may not function as
+expected.
+
+When the laptop is docked, the third event above is generated. The
+handler for this event should issue the following command to fully
+enable the dock:
+
+	echo dock > /proc/acpi/ibm/dock
+
+The contents of the /proc/acpi/ibm/dock file shows the current status
+of the dock, as provided by the ACPI framework.
+
+The docking support in this driver does not take care of enabling or
+disabling any other devices you may have attached to the dock. For
+example, a CD drive plugged into the UltraBase needs to be disabled or
+enabled separately. See the provided example acpid configuration files
+for how this can be accomplished.
+
+There is no support yet for PCI devices that may be attached to a
+docking station, e.g. in the ThinkPad Dock II. The driver currently
+does not recognize, enable or disable such devices. This means that
+the only docking stations currently supported are the X-series
+UltraBase docks and "dumb" port replicators like the Mini Dock (the
+latter don't need any ACPI support, actually).
+
+UltraBay Eject -- /proc/acpi/ibm/bay
+------------------------------------
+
+Inserting or ejecting an UltraBay device requires some actions to be
+taken by the operating system to safely make or break the electrical
+connections with the device.
+
+This feature generates the following ACPI events:
+
+	ibm/bay MSTR 00000003 00000000 -- eject request
+	ibm/bay MSTR 00000001 00000000 -- eject lever inserted
+
+NOTE: These events will only be generated if the UltraBay was present
+when the laptop was originally booted (on the X series, the UltraBay
+is in the dock, so it may not be present if the laptop was undocked).
+This is due to the current lack of support for hot plugging of devices
+in the Linux ACPI framework. If the laptop was booted without the
+UltraBay, the following message is shown in the logs: "ibm_acpi: bay
+device not present". No bay-related events are generated but the eject
+command described below still works. It can be executed manually or
+triggered by a hot key combination.
+
+Sliding the eject lever generates the first event shown above. The
+handler for this event should take whatever actions are necessary to
+shut down the device in the UltraBay (e.g. call idectl), then issue
+the following command:
+
+	echo eject > /proc/acpi/ibm/bay
+
+After the LED on the UltraBay goes off, it is safe to pull out the
+device.
+
+When the eject lever is inserted, the second event above is
+generated. The handler for this event should take whatever actions are
+necessary to enable the UltraBay device (e.g. call idectl).
+
+The contents of the /proc/acpi/ibm/bay file shows the current status
+of the UltraBay, as provided by the ACPI framework.
+
+Experimental Features
+---------------------
+
+The following features are marked experimental because using them
+involves guessing the correct values of some parameters. Guessing
+incorrectly may have undesirable effects like crashing your
+ThinkPad. USE THESE WITH CAUTION! To activate them, you'll need to
+supply the experimental=1 parameter when loading the module.
+
+Experimental: CMOS control - /proc/acpi/ibm/cmos
+------------------------------------------------
+
+This feature is used internally by the ACPI firmware to control the
+ThinkLight on most newer ThinkPad models. It appears that it can also
+control LCD brightness, sounds volume and more, but only on some
+models.
+
+The commands are non-negative integer numbers:
+
+	echo 0 >/proc/acpi/ibm/cmos
+	echo 1 >/proc/acpi/ibm/cmos
+	echo 2 >/proc/acpi/ibm/cmos
+	...
+
+The range of numbers which are used internally by various models is 0
+to 21, but it's possible that numbers outside this range have
+interesting behavior. Here is the behavior on the X40 (tpb is the
+ThinkPad Buttons utility):
+
+	0 - no effect but tpb reports "Volume down"
+	1 - no effect but tpb reports "Volume up"
+	2 - no effect but tpb reports "Mute on"
+	3 - simulate pressing the "Access IBM" button
+	4 - LCD brightness up
+	5 - LCD brightness down
+	11 - toggle screen expansion
+	12 - ThinkLight on
+	13 - ThinkLight off
+	14 - no effect but tpb reports ThinkLight status change
+
+If you try this feature, please send me a report similar to the
+above. On models which allow control of LCD brightness or sound
+volume, I'd like to provide this functionality in an user-friendly
+way, but first I need a way to identify the models which this is
+possible.
+
+Experimental: LED control - /proc/acpi/ibm/LED
+----------------------------------------------
+
+Some of the LED indicators can be controlled through this feature. The
+available commands are:
+
+	echo <led number> on >/proc/acpi/ibm/led
+	echo <led number> off >/proc/acpi/ibm/led
+	echo <led number> blink >/proc/acpi/ibm/led
+
+The <led number> parameter is a non-negative integer. The range of LED
+numbers used internally by various models is 0 to 7 but it's possible
+that numbers outside this range are also valid. Here is the mapping on
+the X40:
+
+	0 - power
+	1 - battery (orange)
+	2 - battery (green)
+	3 - UltraBase
+	4 - UltraBay
+	7 - standby
+
+All of the above can be turned on and off and can be made to blink.
+
+If you try this feature, please send me a report similar to the
+above. I'd like to provide this functionality in an user-friendly way,
+but first I need to identify the which numbers correspond to which
+LEDs on various models.
+
+Experimental: ACPI sounds - /proc/acpi/ibm/beep
+-----------------------------------------------
+
+The BEEP method is used internally by the ACPI firmware to provide
+audible alerts in various situtation. This feature allows the same
+sounds to be triggered manually.
+
+The commands are non-negative integer numbers:
+
+	echo 0 >/proc/acpi/ibm/beep
+	echo 1 >/proc/acpi/ibm/beep
+	echo 2 >/proc/acpi/ibm/beep
+	...
+
+The range of numbers which are used internally by various models is 0
+to 17, but it's possible that numbers outside this range are also
+valid. Here is the behavior on the X40:
+
+	2 - two beeps, pause, third beep
+	3 - single beep
+	4 - "unable"	
+	5 - single beep
+	6 - "AC/DC"
+	7 - high-pitched beep
+	9 - three short beeps
+	10 - very long beep
+	12 - low-pitched beep
+
+(I've only been able to identify a couple of them).
+
+If you try this feature, please send me a report similar to the
+above. I'd like to provide this functionality in an user-friendly way,
+but first I need to identify the which numbers correspond to which
+sounds on various models.
+
+
+Multiple Command, Module Parameters
+-----------------------------------
+
+Multiple commands can be written to the proc files in one shot by
+separating them with commas, for example:
+
+	echo enable,0xffff > /proc/acpi/ibm/hotkey
+	echo lcd_disable,crt_enable > /proc/acpi/ibm/video
+
+Commands can also be specified when loading the ibm_acpi module, for
+example:
+
+	modprobe ibm_acpi hotkey=enable,0xffff video=auto_disable
+
+
+Example Configuration
+---------------------
+
+The ACPI support in the kernel is intended to be used in conjunction
+with a user-space daemon, acpid. The configuration files for this
+daemon control what actions are taken in response to various ACPI
+events. An example set of configuration files are included in the
+config/ directory of the tarball package available on the web
+site. Note that these are provided for illustration purposes only and
+may need to be adapted to your particular setup.
+
+The following utility scripts are used by the example action
+scripts (included with ibm-acpi for completeness):
+
+	/usr/local/sbin/idectl -- from the hdparm source distribution,
+		see http://www.ibiblio.org/pub/Linux/system/hardware
+	/usr/local/sbin/laptop_mode -- from the Linux kernel source
+		distribution, see Documentation/laptop-mode.txt
+	/sbin/service -- comes with Redhat/Fedora distributions
+
+Toan T Nguyen <ntt@control.uchicago.edu> has written a SuSE powersave
+script for the X20, included in config/usr/sbin/ibm_hotkeys_X20
+
+Henrik Brix Andersen <brix@gentoo.org> has written a Gentoo ACPI event
+handler script for the X31. You can get the latest version from
+http://dev.gentoo.org/~brix/files/x31.sh
+
+David Schweikert <dws@ee.eth.ch> has written an alternative blank.sh
+script which works on Debian systems, included in
+configs/etc/acpi/actions/blank-debian.sh
+
+
+TODO
+----
+
+I'd like to implement the following features but haven't yet found the
+time and/or I don't yet know how to implement them:
+
+- UltraBay floppy drive support
+
diff -urN malta/linux/Documentation/keys.txt malta/linux/Documentation/keys.txt
--- malta/linux/Documentation/keys.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/keys.txt	2005-06-21 14:20:31.106070000 +0100	1.2.1000.1
@@ -0,0 +1,869 @@
+			 ============================
+			 KERNEL KEY RETENTION SERVICE
+			 ============================
+
+This service allows cryptographic keys, authentication tokens, cross-domain
+user mappings, and similar to be cached in the kernel for the use of
+filesystems other kernel services.
+
+Keyrings are permitted; these are a special type of key that can hold links to
+other keys. Processes each have three standard keyring subscriptions that a
+kernel service can search for relevant keys.
+
+The key service can be configured on by enabling:
+
+	"Security options"/"Enable access key retention support" (CONFIG_KEYS)
+
+This document has the following sections:
+
+	- Key overview
+	- Key service overview
+	- Key access permissions
+	- New procfs files
+	- Userspace system call interface
+	- Kernel services
+	- Defining a key type
+	- Request-key callback service
+	- Key access filesystem
+
+
+============
+KEY OVERVIEW
+============
+
+In this context, keys represent units of cryptographic data, authentication
+tokens, keyrings, etc.. These are represented in the kernel by struct key.
+
+Each key has a number of attributes:
+
+	- A serial number.
+	- A type.
+	- A description (for matching a key in a search).
+	- Access control information.
+	- An expiry time.
+	- A payload.
+	- State.
+
+
+ (*) Each key is issued a serial number of type key_serial_t that is unique
+     for the lifetime of that key. All serial numbers are positive non-zero
+     32-bit integers.
+
+     Userspace programs can use a key's serial numbers as a way to gain access
+     to it, subject to permission checking.
+
+ (*) Each key is of a defined "type". Types must be registered inside the
+     kernel by a kernel service (such as a filesystem) before keys of that
+     type can be added or used. Userspace programs cannot define new types
+     directly.
+
+     Key types are represented in the kernel by struct key_type. This defines
+     a number of operations that can be performed on a key of that type.
+
+     Should a type be removed from the system, all the keys of that type will
+     be invalidated.
+
+ (*) Each key has a description. This should be a printable string. The key
+     type provides an operation to perform a match between the description on
+     a key and a criterion string.
+
+ (*) Each key has an owner user ID, a group ID and a permissions mask. These
+     are used to control what a process may do to a key from userspace, and
+     whether a kernel service will be able to find the key.
+
+ (*) Each key can be set to expire at a specific time by the key type's
+     instantiation function. Keys can also be immortal.
+
+ (*) Each key can have a payload. This is a quantity of data that represent
+     the actual "key". In the case of a keyring, this is a list of keys to
+     which the keyring links; in the case of a user-defined key, it's an
+     arbitrary blob of data.
+
+     Having a payload is not required; and the payload can, in fact, just be a
+     value stored in the struct key itself.
+
+     When a key is instantiated, the key type's instantiation function is
+     called with a blob of data, and that then creates the key's payload in
+     some way.
+
+     Similarly, when userspace wants to read back the contents of the key, if
+     permitted, another key type operation will be called to convert the key's
+     attached payload back into a blob of data.
+
+ (*) Each key can be in one of a number of basic states:
+
+     (*) Uninstantiated. The key exists, but does not have any data
+	 attached. Keys being requested from userspace will be in this state.
+
+     (*) Instantiated. This is the normal state. The key is fully formed, and
+	 has data attached.
+
+     (*) Negative. This is a relatively short-lived state. The key acts as a
+	 note saying that a previous call out to userspace failed, and acts as
+	 a throttle on key lookups. A negative key can be updated to a normal
+	 state.
+
+     (*) Expired. Keys can have lifetimes set. If their lifetime is exceeded,
+	 they traverse to this state. An expired key can be updated back to a
+	 normal state.
+
+     (*) Revoked. A key is put in this state by userspace action. It can't be
+	 found or operated upon (apart from by unlinking it).
+
+     (*) Dead. The key's type was unregistered, and so the key is now useless.
+
+
+====================
+KEY SERVICE OVERVIEW
+====================
+
+The key service provides a number of features besides keys:
+
+ (*) The key service defines two special key types:
+
+     (+) "keyring"
+
+	 Keyrings are special keys that contain a list of other keys. Keyring
+	 lists can be modified using various system calls. Keyrings should not
+	 be given a payload when created.
+
+     (+) "user"
+
+	 A key of this type has a description and a payload that are arbitrary
+	 blobs of data. These can be created, updated and read by userspace,
+	 and aren't intended for use by kernel services.
+
+ (*) Each process subscribes to three keyrings: a thread-specific keyring, a
+     process-specific keyring, and a session-specific keyring.
+
+     The thread-specific keyring is discarded from the child when any sort of
+     clone, fork, vfork or execve occurs. A new keyring is created only when
+     required.
+
+     The process-specific keyring is replaced with an empty one in the child
+     on clone, fork, vfork unless CLONE_THREAD is supplied, in which case it
+     is shared. execve also discards the process's process keyring and creates
+     a new one.
+
+     The session-specific keyring is persistent across clone, fork, vfork and
+     execve, even when the latter executes a set-UID or set-GID binary. A
+     process can, however, replace its current session keyring with a new one
+     by using PR_JOIN_SESSION_KEYRING. It is permitted to request an anonymous
+     new one, or to attempt to create or join one of a specific name.
+
+     The ownership of the thread keyring changes when the real UID and GID of
+     the thread changes.
+
+ (*) Each user ID resident in the system holds two special keyrings: a user
+     specific keyring and a default user session keyring. The default session
+     keyring is initialised with a link to the user-specific keyring.
+
+     When a process changes its real UID, if it used to have no session key, it
+     will be subscribed to the default session key for the new UID.
+
+     If a process attempts to access its session key when it doesn't have one,
+     it will be subscribed to the default for its current UID.
+
+ (*) Each user has two quotas against which the keys they own are tracked. One
+     limits the total number of keys and keyrings, the other limits the total
+     amount of description and payload space that can be consumed.
+
+     The user can view information on this and other statistics through procfs
+     files.
+
+     Process-specific and thread-specific keyrings are not counted towards a
+     user's quota.
+
+     If a system call that modifies a key or keyring in some way would put the
+     user over quota, the operation is refused and error EDQUOT is returned.
+
+ (*) There's a system call interface by which userspace programs can create
+     and manipulate keys and keyrings.
+
+ (*) There's a kernel interface by which services can register types and
+     search for keys.
+
+ (*) There's a way for the a search done from the kernel to call back to
+     userspace to request a key that can't be found in a process's keyrings.
+
+ (*) An optional filesystem is available through which the key database can be
+     viewed and manipulated.
+
+
+======================
+KEY ACCESS PERMISSIONS
+======================
+
+Keys have an owner user ID, a group access ID, and a permissions mask. The
+mask has up to eight bits each for user, group and other access. Only five of
+each set of eight bits are defined. These permissions granted are:
+
+ (*) View
+
+     This permits a key or keyring's attributes to be viewed - including key
+     type and description.
+
+ (*) Read
+
+     This permits a key's payload to be viewed or a keyring's list of linked
+     keys.
+
+ (*) Write
+
+     This permits a key's payload to be instantiated or updated, or it allows
+     a link to be added to or removed from a keyring.
+
+ (*) Search
+
+     This permits keyrings to be searched and keys to be found. Searches can
+     only recurse into nested keyrings that have search permission set.
+
+ (*) Link
+
+     This permits a key or keyring to be linked to. To create a link from a
+     keyring to a key, a process must have Write permission on the keyring and
+     Link permission on the key.
+
+For changing the ownership, group ID or permissions mask, being the owner of
+the key or having the sysadmin capability is sufficient.
+
+
+================
+NEW PROCFS FILES
+================
+
+Two files have been added to procfs by which an administrator can find out
+about the status of the key service:
+
+ (*) /proc/keys
+
+     This lists all the keys on the system, giving information about their
+     type, description and permissions. The payload of the key is not
+     available this way:
+
+	SERIAL   FLAGS  USAGE EXPY PERM   UID   GID   TYPE      DESCRIPTION: SUMMARY
+	00000001 I-----    39 perm 1f0000     0     0 keyring   _uid_ses.0: 1/4
+	00000002 I-----     2 perm 1f0000     0     0 keyring   _uid.0: empty
+	00000007 I-----     1 perm 1f0000     0     0 keyring   _pid.1: empty
+	0000018d I-----     1 perm 1f0000     0     0 keyring   _pid.412: empty
+	000004d2 I--Q--     1 perm 1f0000    32    -1 keyring   _uid.32: 1/4
+	000004d3 I--Q--     3 perm 1f0000    32    -1 keyring   _uid_ses.32: empty
+	00000892 I--QU-     1 perm 1f0000     0     0 user      metal:copper: 0
+	00000893 I--Q-N     1  35s 1f0000     0     0 user      metal:silver: 0
+	00000894 I--Q--     1  10h 1f0000     0     0 user      metal:gold: 0
+
+     The flags are:
+
+	I	Instantiated
+	R	Revoked
+	D	Dead
+	Q	Contributes to user's quota
+	U	Under contruction by callback to userspace
+	N	Negative key
+
+     This file must be enabled at kernel configuration time as it allows anyone
+     to list the keys database.
+
+ (*) /proc/key-users
+
+     This file lists the tracking data for each user that has at least one key
+     on the system. Such data includes quota information and statistics:
+
+	[root@andromeda root]# cat /proc/key-users
+	0:     46 45/45 1/100 13/10000
+	29:     2 2/2 2/100 40/10000
+	32:     2 2/2 2/100 40/10000
+	38:     2 2/2 2/100 40/10000
+
+     The format of each line is
+	<UID>:			User ID to which this applies
+	<usage>			Structure refcount
+	<inst>/<keys>		Total number of keys and number instantiated
+	<keys>/<max>		Key count quota
+	<bytes>/<max>		Key size quota
+
+
+===============================
+USERSPACE SYSTEM CALL INTERFACE
+===============================
+
+Userspace can manipulate keys directly through three new syscalls: add_key,
+request_key and keyctl. The latter provides a number of functions for
+manipulating keys.
+
+When referring to a key directly, userspace programs should use the key's
+serial number (a positive 32-bit integer). However, there are some special
+values available for referring to special keys and keyrings that relate to the
+process making the call:
+
+	CONSTANT			VALUE	KEY REFERENCED
+	==============================	======	===========================
+	KEY_SPEC_THREAD_KEYRING		-1	thread-specific keyring
+	KEY_SPEC_PROCESS_KEYRING	-2	process-specific keyring
+	KEY_SPEC_SESSION_KEYRING	-3	session-specific keyring
+	KEY_SPEC_USER_KEYRING		-4	UID-specific keyring
+	KEY_SPEC_USER_SESSION_KEYRING	-5	UID-session keyring
+	KEY_SPEC_GROUP_KEYRING		-6	GID-specific keyring
+
+
+The main syscalls are:
+
+ (*) Create a new key of given type, description and payload and add it to the
+     nominated keyring:
+
+	key_serial_t add_key(const char *type, const char *desc,
+			     const void *payload, size_t plen,
+			     key_serial_t keyring);
+
+     If a key of the same type and description as that proposed already exists
+     in the keyring, this will try to update it with the given payload, or it
+     will return error EEXIST if that function is not supported by the key
+     type. The process must also have permission to write to the key to be
+     able to update it. The new key will have all user permissions granted and
+     no group or third party permissions.
+
+     Otherwise, this will attempt to create a new key of the specified type
+     and description, and to instantiate it with the supplied payload and
+     attach it to the keyring. In this case, an error will be generated if the
+     process does not have permission to write to the keyring.
+
+     The payload is optional, and the pointer can be NULL if not required by
+     the type. The payload is plen in size, and plen can be zero for an empty
+     payload.
+
+     A new keyring can be generated by setting type "keyring", the keyring
+     name as the description (or NULL) and setting the payload to NULL.
+
+     User defined keys can be created by specifying type "user". It is
+     recommended that a user defined key's description by prefixed with a type
+     ID and a colon, such as "krb5tgt:" for a Kerberos 5 ticket granting
+     ticket.
+
+     Any other type must have been registered with the kernel in advance by a
+     kernel service such as a filesystem.
+
+     The ID of the new or updated key is returned if successful.
+
+
+ (*) Search the process's keyrings for a key, potentially calling out to
+     userspace to create it.
+
+	key_serial_t request_key(const char *type, const char *description,
+				 const char *callout_info,
+				 key_serial_t dest_keyring);
+
+     This function searches all the process's keyrings in the order thread,
+     process, session for a matching key. This works very much like
+     KEYCTL_SEARCH, including the optional attachment of the discovered key to
+     a keyring.
+
+     If a key cannot be found, and if callout_info is not NULL, then
+     /sbin/request-key will be invoked in an attempt to obtain a key. The
+     callout_info string will be passed as an argument to the program.
+
+
+The keyctl syscall functions are:
+
+ (*) Map a special key ID to a real key ID for this process:
+
+	key_serial_t keyctl(KEYCTL_GET_KEYRING_ID, key_serial_t id,
+			    int create);
+
+     The special key specified by "id" is looked up (with the key being
+     created if necessary) and the ID of the key or keyring thus found is
+     returned if it exists.
+
+     If the key does not yet exist, the key will be created if "create" is
+     non-zero; and the error ENOKEY will be returned if "create" is zero.
+
+
+ (*) Replace the session keyring this process subscribes to with a new one:
+
+	key_serial_t keyctl(KEYCTL_JOIN_SESSION_KEYRING, const char *name);
+
+     If name is NULL, an anonymous keyring is created attached to the process
+     as its session keyring, displacing the old session keyring.
+
+     If name is not NULL, if a keyring of that name exists, the process
+     attempts to attach it as the session keyring, returning an error if that
+     is not permitted; otherwise a new keyring of that name is created and
+     attached as the session keyring.
+
+     To attach to a named keyring, the keyring must have search permission for
+     the process's ownership.
+
+     The ID of the new session keyring is returned if successful.
+
+
+ (*) Update the specified key:
+
+	long keyctl(KEYCTL_UPDATE, key_serial_t key, const void *payload,
+		    size_t plen);
+
+     This will try to update the specified key with the given payload, or it
+     will return error EOPNOTSUPP if that function is not supported by the key
+     type. The process must also have permission to write to the key to be
+     able to update it.
+
+     The payload is of length plen, and may be absent or empty as for
+     add_key().
+
+
+ (*) Revoke a key:
+
+	long keyctl(KEYCTL_REVOKE, key_serial_t key);
+
+     This makes a key unavailable for further operations. Further attempts to
+     use the key will be met with error EKEYREVOKED, and the key will no longer
+     be findable.
+
+
+ (*) Change the ownership of a key:
+
+	long keyctl(KEYCTL_CHOWN, key_serial_t key, uid_t uid, gid_t gid);
+
+     This function permits a key's owner and group ID to be changed. Either
+     one of uid or gid can be set to -1 to suppress that change.
+
+     Only the superuser can change a key's owner to something other than the
+     key's current owner. Similarly, only the superuser can change a key's
+     group ID to something other than the calling process's group ID or one of
+     its group list members.
+
+
+ (*) Change the permissions mask on a key:
+
+	long keyctl(KEYCTL_SETPERM, key_serial_t key, key_perm_t perm);
+
+     This function permits the owner of a key or the superuser to change the
+     permissions mask on a key.
+
+     Only bits the available bits are permitted; if any other bits are set,
+     error EINVAL will be returned.
+
+
+ (*) Describe a key:
+
+	long keyctl(KEYCTL_DESCRIBE, key_serial_t key, char *buffer,
+		    size_t buflen);
+
+     This function returns a summary of the key's attributes (but not its
+     payload data) as a string in the buffer provided.
+
+     Unless there's an error, it always returns the amount of data it could
+     produce, even if that's too big for the buffer, but it won't copy more
+     than requested to userspace. If the buffer pointer is NULL then no copy
+     will take place.
+
+     A process must have view permission on the key for this function to be
+     successful.
+
+     If successful, a string is placed in the buffer in the following format:
+
+	<type>;<uid>;<gid>;<perm>;<description>
+
+     Where type and description are strings, uid and gid are decimal, and perm
+     is hexadecimal. A NUL character is included at the end of the string if
+     the buffer is sufficiently big.
+
+     This can be parsed with
+
+	sscanf(buffer, "%[^;];%d;%d;%o;%s", type, &uid, &gid, &mode, desc);
+
+
+ (*) Clear out a keyring:
+
+	long keyctl(KEYCTL_CLEAR, key_serial_t keyring);
+
+     This function clears the list of keys attached to a keyring. The calling
+     process must have write permission on the keyring, and it must be a
+     keyring (or else error ENOTDIR will result).
+
+
+ (*) Link a key into a keyring:
+
+	long keyctl(KEYCTL_LINK, key_serial_t keyring, key_serial_t key);
+
+     This function creates a link from the keyring to the key. The process
+     must have write permission on the keyring and must have link permission
+     on the key.
+
+     Should the keyring not be a keyring, error ENOTDIR will result; and if
+     the keyring is full, error ENFILE will result.
+
+     The link procedure checks the nesting of the keyrings, returning ELOOP if
+     it appears to deep or EDEADLK if the link would introduce a cycle.
+
+
+ (*) Unlink a key or keyring from another keyring:
+
+	long keyctl(KEYCTL_UNLINK, key_serial_t keyring, key_serial_t key);
+
+     This function looks through the keyring for the first link to the
+     specified key, and removes it if found. Subsequent links to that key are
+     ignored. The process must have write permission on the keyring.
+
+     If the keyring is not a keyring, error ENOTDIR will result; and if the
+     key is not present, error ENOENT will be the result.
+
+
+ (*) Search a keyring tree for a key:
+
+	key_serial_t keyctl(KEYCTL_SEARCH, key_serial_t keyring,
+			    const char *type, const char *description,
+			    key_serial_t dest_keyring);
+
+     This searches the keyring tree headed by the specified keyring until a
+     key is found that matches the type and description criteria. Each keyring
+     is checked for keys before recursion into its children occurs.
+
+     The process must have search permission on the top level keyring, or else
+     error EACCES will result. Only keyrings that the process has search
+     permission on will be recursed into, and only keys and keyrings for which
+     a process has search permission can be matched. If the specified keyring
+     is not a keyring, ENOTDIR will result.
+
+     If the search succeeds, the function will attempt to link the found key
+     into the destination keyring if one is supplied (non-zero ID). All the
+     constraints applicable to KEYCTL_LINK apply in this case too.
+
+     Error ENOKEY, EKEYREVOKED or EKEYEXPIRED will be returned if the search
+     fails. On success, the resulting key ID will be returned.
+
+
+ (*) Read the payload data from a key:
+
+	key_serial_t keyctl(KEYCTL_READ, key_serial_t keyring, char *buffer,
+			    size_t buflen);
+
+     This function attempts to read the payload data from the specified key
+     into the buffer. The process must have read permission on the key to
+     succeed.
+
+     The returned data will be processed for presentation by the key type. For
+     instance, a keyring will return an array of key_serial_t entries
+     representing the IDs of all the keys to which it is subscribed. The user
+     defined key type will return its data as is. If a key type does not
+     implement this function, error EOPNOTSUPP will result.
+
+     As much of the data as can be fitted into the buffer will be copied to
+     userspace if the buffer pointer is not NULL.
+
+     On a successful return, the function will always return the amount of
+     data available rather than the amount copied.
+
+
+ (*) Instantiate a partially constructed key.
+
+	key_serial_t keyctl(KEYCTL_INSTANTIATE, key_serial_t key,
+			    const void *payload, size_t plen,
+			    key_serial_t keyring);
+
+     If the kernel calls back to userspace to complete the instantiation of a
+     key, userspace should use this call to supply data for the key before the
+     invoked process returns, or else the key will be marked negative
+     automatically.
+
+     The process must have write access on the key to be able to instantiate
+     it, and the key must be uninstantiated.
+
+     If a keyring is specified (non-zero), the key will also be linked into
+     that keyring, however all the constraints applying in KEYCTL_LINK apply
+     in this case too.
+
+     The payload and plen arguments describe the payload data as for add_key().
+
+
+ (*) Negatively instantiate a partially constructed key.
+
+	key_serial_t keyctl(KEYCTL_NEGATE, key_serial_t key,
+			    unsigned timeout, key_serial_t keyring);
+
+     If the kernel calls back to userspace to complete the instantiation of a
+     key, userspace should use this call mark the key as negative before the
+     invoked process returns if it is unable to fulfil the request.
+
+     The process must have write access on the key to be able to instantiate
+     it, and the key must be uninstantiated.
+
+     If a keyring is specified (non-zero), the key will also be linked into
+     that keyring, however all the constraints applying in KEYCTL_LINK apply
+     in this case too.
+
+
+===============
+KERNEL SERVICES
+===============
+
+The kernel services for key managment are fairly simple to deal with. They can
+be broken down into two areas: keys and key types.
+
+Dealing with keys is fairly straightforward. Firstly, the kernel service
+registers its type, then it searches for a key of that type. It should retain
+the key as long as it has need of it, and then it should release it. For a
+filesystem or device file, a search would probably be performed during the
+open call, and the key released upon close. How to deal with conflicting keys
+due to two different users opening the same file is left to the filesystem
+author to solve.
+
+When accessing a key's payload data, key->lock should be at least read locked,
+or else the data may be changed by an update being performed from userspace
+whilst the driver or filesystem is trying to access it. If no update method is
+supplied, then the key's payload may be accessed without holding a lock as
+there is no way to change it, provided it can be guaranteed that the key's
+type definition won't go away.
+
+(*) To search for a key, call:
+
+	struct key *request_key(const struct key_type *type,
+				const char *description,
+				const char *callout_string);
+
+    This is used to request a key or keyring with a description that matches
+    the description specified according to the key type's match function. This
+    permits approximate matching to occur. If callout_string is not NULL, then
+    /sbin/request-key will be invoked in an attempt to obtain the key from
+    userspace. In that case, callout_string will be passed as an argument to
+    the program.
+
+    Should the function fail error ENOKEY, EKEYEXPIRED or EKEYREVOKED will be
+    returned.
+
+
+(*) When it is no longer required, the key should be released using:
+
+	void key_put(struct key *key);
+
+    This can be called from interrupt context. If CONFIG_KEYS is not set then
+    the argument will not be parsed.
+
+
+(*) Extra references can be made to a key by calling the following function:
+
+	struct key *key_get(struct key *key);
+
+    These need to be disposed of by calling key_put() when they've been
+    finished with. The key pointer passed in will be returned. If the pointer
+    is NULL or CONFIG_KEYS is not set then the key will not be dereferenced and
+    no increment will take place.
+
+
+(*) A key's serial number can be obtained by calling:
+
+	key_serial_t key_serial(struct key *key);
+
+    If key is NULL or if CONFIG_KEYS is not set then 0 will be returned (in the
+    latter case without parsing the argument).
+
+
+(*) If a keyring was found in the search, this can be further searched by:
+
+	struct key *keyring_search(struct key *keyring,
+				   const struct key_type *type,
+				   const char *description)
+
+    This searches the keyring tree specified for a matching key. Error ENOKEY
+    is returned upon failure. If successful, the returned key will need to be
+    released.
+
+
+(*) To check the validity of a key, this function can be called:
+
+	int validate_key(struct key *key);
+
+    This checks that the key in question hasn't expired or and hasn't been
+    revoked. Should the key be invalid, error EKEYEXPIRED or EKEYREVOKED will
+    be returned. If the key is NULL or if CONFIG_KEYS is not set then 0 will be
+    returned (in the latter case without parsing the argument).
+
+
+(*) To register a key type, the following function should be called:
+
+	int register_key_type(struct key_type *type);
+
+    This will return error EEXIST if a type of the same name is already
+    present.
+
+
+(*) To unregister a key type, call:
+
+	void unregister_key_type(struct key_type *type);
+
+
+===================
+DEFINING A KEY TYPE
+===================
+
+A kernel service may want to define its own key type. For instance, an AFS
+filesystem might want to define a Kerberos 5 ticket key type. To do this, it
+author fills in a struct key_type and registers it with the system.
+
+The structure has a number of fields, some of which are mandatory:
+
+ (*) const char *name
+
+     The name of the key type. This is used to translate a key type name
+     supplied by userspace into a pointer to the structure.
+
+
+ (*) size_t def_datalen
+
+     This is optional - it supplies the default payload data length as
+     contributed to the quota. If the key type's payload is always or almost
+     always the same size, then this is a more efficient way to do things.
+
+     The data length (and quota) on a particular key can always be changed
+     during instantiation or update by calling:
+
+	int key_payload_reserve(struct key *key, size_t datalen);
+
+     With the revised data length. Error EDQUOT will be returned if this is
+     not viable.
+
+
+ (*) int (*instantiate)(struct key *key, const void *data, size_t datalen);
+
+     This method is called to attach a payload to a key during construction.
+     The payload attached need not bear any relation to the data passed to
+     this function.
+
+     If the amount of data attached to the key differs from the size in
+     keytype->def_datalen, then key_payload_reserve() should be called.
+
+     This method does not have to lock the key in order to attach a payload.
+     The fact that KEY_FLAG_INSTANTIATED is not set in key->flags prevents
+     anything else from gaining access to the key.
+
+     This method may sleep if it wishes.
+
+
+ (*) int (*duplicate)(struct key *key, const struct key *source);
+
+     If this type of key can be duplicated, then this method should be
+     provided. It is called to copy the payload attached to the source into
+     the new key. The data length on the new key will have been updated and
+     the quota adjusted already.
+
+     This method will be called with the source key's semaphore read-locked to
+     prevent its payload from being changed. It is safe to sleep here.
+
+
+ (*) int (*update)(struct key *key, const void *data, size_t datalen);
+
+     If this type of key can be updated, then this method should be
+     provided. It is called to update a key's payload from the blob of data
+     provided.
+
+     key_payload_reserve() should be called if the data length might change
+     before any changes are actually made. Note that if this succeeds, the
+     type is committed to changing the key because it's already been altered,
+     so all memory allocation must be done first.
+
+     key_payload_reserve() should be called with the key->lock write locked,
+     and the changes to the key's attached payload should be made before the
+     key is locked.
+
+     The key will have its semaphore write-locked before this method is
+     called. Any changes to the key should be made with the key's rwlock
+     write-locked also. It is safe to sleep here.
+
+
+ (*) int (*match)(const struct key *key, const void *desc);
+
+     This method is called to match a key against a description. It should
+     return non-zero if the two match, zero if they don't.
+
+     This method should not need to lock the key in any way. The type and
+     description can be considered invariant, and the payload should not be
+     accessed (the key may not yet be instantiated).
+
+     It is not safe to sleep in this method; the caller may hold spinlocks.
+
+
+ (*) void (*destroy)(struct key *key);
+
+     This method is optional. It is called to discard the payload data on a
+     key when it is being destroyed.
+
+     This method does not need to lock the key; it can consider the key as
+     being inaccessible. Note that the key's type may have changed before this
+     function is called.
+
+     It is not safe to sleep in this method; the caller may hold spinlocks.
+
+
+ (*) void (*describe)(const struct key *key, struct seq_file *p);
+
+     This method is optional. It is called during /proc/keys reading to
+     summarise a key's description and payload in text form.
+
+     This method will be called with the key's rwlock read-locked. This will
+     prevent the key's payload and state changing; also the description should
+     not change. This also means it is not safe to sleep in this method.
+
+
+ (*) long (*read)(const struct key *key, char __user *buffer, size_t buflen);
+
+     This method is optional. It is called by KEYCTL_READ to translate the
+     key's payload into something a blob of data for userspace to deal
+     with. Ideally, the blob should be in the same format as that passed in to
+     the instantiate and update methods.
+
+     If successful, the blob size that could be produced should be returned
+     rather than the size copied.
+
+     This method will be called with the key's semaphore read-locked. This
+     will prevent the key's payload changing. It is not necessary to also
+     read-lock key->lock when accessing the key's payload. It is safe to sleep
+     in this method, such as might happen when the userspace buffer is
+     accessed.
+
+
+============================
+REQUEST-KEY CALLBACK SERVICE
+============================
+
+To create a new key, the kernel will attempt to execute the following command
+line:
+
+	/sbin/request-key create <key> <uid> <gid> \
+		<threadring> <processring> <sessionring> <callout_info>
+
+<key> is the key being constructed, and the three keyrings are the process
+keyrings from the process that caused the search to be issued. These are
+included for two reasons:
+
+  (1) There may be an authentication token in one of the keyrings that is
+      required to obtain the key, eg: a Kerberos Ticket-Granting Ticket.
+
+  (2) The new key should probably be cached in one of these rings.
+
+This program should set it UID and GID to those specified before attempting to
+access any more keys. It may then look around for a user specific process to
+hand the request off to (perhaps a path held in placed in another key by, for
+example, the KDE desktop manager).
+
+The program (or whatever it calls) should finish construction of the key by
+calling KEYCTL_INSTANTIATE, which also permits it to cache the key in one of
+the keyrings (probably the session ring) before returning. Alternatively, the
+key can be marked as negative with KEYCTL_NEGATE; this also permits the key to
+be cached in one of the keyrings.
+
+If it returns with the key remaining in the unconstructed state, the key will
+be marked as being negative, it will be added to the session keyring, and an
+error will be returned to the key requestor.
+
+Supplementary information may be provided from whoever or whatever invoked
+this service. This will be passed as the <callout_info> parameter. If no such
+information was made available, then "-" will be passed as this parameter
+instead.
+
+
+Similarly, the kernel may attempt to update an expired or a soon to expire key
+by executing:
+
+	/sbin/request-key update <key> <uid> <gid> \
+		<threadring> <processring> <sessionring>
+
+In this case, the program isn't required to actually attach the key to a ring;
+the rings are provided for reference.
diff -urN malta/linux/Documentation/kref.txt malta/linux/Documentation/kref.txt
--- malta/linux/Documentation/kref.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/kref.txt	2005-06-21 14:20:31.125758000 +0100	1.1.1000.1
@@ -0,0 +1,216 @@
+
+krefs allow you to add reference counters to your objects.  If you
+have objects that are used in multiple places and passed around, and
+you don't have refcounts, your code is almost certainly broken.  If
+you want refcounts, krefs are the way to go.
+
+To use a kref, add one to your data structures like:
+
+struct my_data
+{
+	.
+	.
+	struct kref refcount;
+	.
+	.
+};
+
+The kref can occur anywhere within the data structure.
+
+You must initialize the kref after you allocate it.  To do this, call
+kref_init as so:
+
+     struct my_data *data;
+
+     data = kmalloc(sizeof(*data), GFP_KERNEL);
+     if (!data)
+            return -ENOMEM;
+     kref_init(&data->refcount);
+
+This sets the refcount in the kref to 1.
+
+Once you have an initialized kref, you must follow the following
+rules:
+
+1) If you make a non-temporary copy of a pointer, especially if
+   it can be passed to another thread of execution, you must
+   increment the refcount with kref_get() before passing it off:
+       kref_get(&data->refcount);
+   If you already have a valid pointer to a kref-ed structure (the
+   refcount cannot go to zero) you may do this without a lock.
+
+2) When you are done with a pointer, you must call kref_put():
+       kref_put(&data->refcount, data_release);
+   If this is the last reference to the pointer, the release
+   routine will be called.  If the code never tries to get
+   a valid pointer to a kref-ed structure without already
+   holding a valid pointer, it is safe to do this without
+   a lock.
+
+3) If the code attempts to gain a reference to a kref-ed structure
+   without already holding a valid pointer, it must serialize access
+   where a kref_put() cannot occur during the kref_get(), and the
+   structure must remain valid during the kref_get().
+
+For example, if you allocate some data and then pass it to another
+thread to process:
+
+void data_release(struct kref *ref)
+{
+	struct my_data *data = container_of(ref, struct my_data, refcount);
+	kfree(data);
+}
+
+void more_data_handling(void *cb_data)
+{
+	struct my_data *data = cb_data;
+	.
+	. do stuff with data here
+	.
+	kref_put(data, data_release);
+}
+
+int my_data_handler(void)
+{
+	int rv = 0;
+	struct my_data *data;
+	struct task_struct *task;
+	data = kmalloc(sizeof(*data), GFP_KERNEL);
+	if (!data)
+		return -ENOMEM;
+	kref_init(&data->refcount);
+
+	kref_get(&data->refcount);
+	task = kthread_run(more_data_handling, data, "more_data_handling");
+	if (task == ERR_PTR(-ENOMEM)) {
+		rv = -ENOMEM;
+	        kref_put(&data->refcount, data_release);
+		goto out;
+	}
+
+	.
+	. do stuff with data here
+	.
+ out:
+	kref_put(&data->refcount, data_release);
+	return rv;
+}
+
+This way, it doesn't matter what order the two threads handle the
+data, the kref_put() handles knowing when the data is not referenced
+any more and releasing it.  The kref_get() does not require a lock,
+since we already have a valid pointer that we own a refcount for.  The
+put needs no lock because nothing tries to get the data without
+already holding a pointer.
+
+Note that the "before" in rule 1 is very important.  You should never
+do something like:
+
+	task = kthread_run(more_data_handling, data, "more_data_handling");
+	if (task == ERR_PTR(-ENOMEM)) {
+		rv = -ENOMEM;
+		goto out;
+	} else
+		/* BAD BAD BAD - get is after the handoff */
+		kref_get(&data->refcount);
+
+Don't assume you know what you are doing and use the above construct.
+First of all, you may not know what you are doing.  Second, you may
+know what you are doing (there are some situations where locking is
+involved where the above may be legal) but someone else who doesn't
+know what they are doing may change the code or copy the code.  It's
+bad style.  Don't do it.
+
+There are some situations where you can optimize the gets and puts.
+For instance, if you are done with an object and enqueuing it for
+something else or passing it off to something else, there is no reason
+to do a get then a put:
+
+	/* Silly extra get and put */
+	kref_get(&obj->ref);
+	enqueue(obj);
+	kref_put(&obj->ref, obj_cleanup);
+
+Just do the enqueue.  A comment about this is always welcome:
+
+	enqueue(obj);
+	/* We are done with obj, so we pass our refcount off
+	   to the queue.  DON'T TOUCH obj AFTER HERE! */
+
+The last rule (rule 3) is the nastiest one to handle.  Say, for
+instance, you have a list of items that are each kref-ed, and you wish
+to get the first one.  You can't just pull the first item off the list
+and kref_get() it.  That violates rule 3 because you are not already
+holding a valid pointer.  You must add locks or semaphores.  For
+instance:
+
+static DECLARE_MUTEX(sem);
+static LIST_HEAD(q);
+struct my_data
+{
+	struct kref      refcount;
+	struct list_head link;
+};
+
+static struct my_data *get_entry()
+{
+	struct my_data *entry = NULL;
+	down(&sem);
+	if (!list_empty(&q)) {
+		entry = container_of(q.next, struct my_q_entry, link);
+		kref_get(&entry->refcount);
+	}
+	up(&sem);
+	return entry;
+}
+
+static void release_entry(struct kref *ref)
+{
+	struct my_data *entry = container_of(ref, struct my_data, refcount);
+
+	list_del(&entry->link);
+	kfree(entry);
+}
+
+static void put_entry(struct my_data *entry)
+{
+	down(&sem);
+	kref_put(&entry->refcount, release_entry);
+	up(&sem);
+}
+
+The kref_put() return value is useful if you do not want to hold the
+lock during the whole release operation.  Say you didn't want to call
+kfree() with the lock held in the example above (since it is kind of
+pointless to do so).  You could use kref_put() as follows:
+
+static void release_entry(struct kref *ref)
+{
+	/* All work is done after the return from kref_put(). */
+}
+
+static void put_entry(struct my_data *entry)
+{
+	down(&sem);
+	if (kref_put(&entry->refcount, release_entry)) {
+		list_del(&entry->link);
+		up(&sem);
+		kfree(entry);
+	} else
+		up(&sem);
+}
+
+This is really more useful if you have to call other routines as part
+of the free operations that could take a long time or might claim the
+same lock.  Note that doing everything in the release routine is still
+preferred as it is a little neater.
+
+
+Corey Minyard <minyard@acm.org>
+
+A lot of this was lifted from Greg Kroah-Hartman's 2004 OLS paper and
+presentation on krefs, which can be found at:
+  http://www.kroah.com/linux/talks/ols_2004_kref_paper/Reprint-Kroah-Hartman-OLS2004.pdf
+and:
+  http://www.kroah.com/linux/talks/ols_2004_kref_talk/
+
diff -urN malta/linux/Documentation/nommu-mmap.txt malta/linux/Documentation/nommu-mmap.txt
--- malta/linux/Documentation/nommu-mmap.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/nommu-mmap.txt	2005-06-21 14:20:31.138114000 +0100	1.2.1000.1
@@ -0,0 +1,198 @@
+			 =============================
+			 NO-MMU MEMORY MAPPING SUPPORT
+			 =============================
+
+The kernel has limited support for memory mapping under no-MMU conditions, such
+as are used in uClinux environments. From the userspace point of view, memory
+mapping is made use of in conjunction with the mmap() system call, the shmat()
+call and the execve() system call. From the kernel's point of view, execve()
+mapping is actually performed by the binfmt drivers, which call back into the
+mmap() routines to do the actual work.
+
+Memory mapping behaviour also involves the way fork(), vfork(), clone() and
+ptrace() work. Under uClinux there is no fork(), and clone() must be supplied
+the CLONE_VM flag.
+
+The behaviour is similar between the MMU and no-MMU cases, but not identical;
+and it's also much more restricted in the latter case:
+
+ (*) Anonymous mapping, MAP_PRIVATE
+
+	In the MMU case: VM regions backed by arbitrary pages; copy-on-write
+	across fork.
+
+	In the no-MMU case: VM regions backed by arbitrary contiguous runs of
+	pages.
+
+ (*) Anonymous mapping, MAP_SHARED
+
+	These behave very much like private mappings, except that they're
+	shared across fork() or clone() without CLONE_VM in the MMU case. Since
+	the no-MMU case doesn't support these, behaviour is identical to
+	MAP_PRIVATE there.
+
+ (*) File, MAP_PRIVATE, PROT_READ / PROT_EXEC, !PROT_WRITE
+
+	In the MMU case: VM regions backed by pages read from file; changes to
+	the underlying file are reflected in the mapping; copied across fork.
+
+	In the no-MMU case:
+
+         - If one exists, the kernel will re-use an existing mapping to the
+           same segment of the same file if that has compatible permissions,
+           even if this was created by another process.
+
+         - If possible, the file mapping will be directly on the backing device
+           if the backing device has the BDI_CAP_MAP_DIRECT capability and
+           appropriate mapping protection capabilities. Ramfs, romfs, cramfs
+           and mtd might all permit this.
+
+	 - If the backing device device can't or won't permit direct sharing,
+           but does have the BDI_CAP_MAP_COPY capability, then a copy of the
+           appropriate bit of the file will be read into a contiguous bit of
+           memory and any extraneous space beyond the EOF will be cleared
+
+	 - Writes to the file do not affect the mapping; writes to the mapping
+	   are visible in other processes (no MMU protection), but should not
+	   happen.
+
+ (*) File, MAP_PRIVATE, PROT_READ / PROT_EXEC, PROT_WRITE
+
+	In the MMU case: like the non-PROT_WRITE case, except that the pages in
+	question get copied before the write actually happens. From that point
+	on writes to the file underneath that page no longer get reflected into
+	the mapping's backing pages. The page is then backed by swap instead.
+
+	In the no-MMU case: works much like the non-PROT_WRITE case, except
+	that a copy is always taken and never shared.
+
+ (*) Regular file / blockdev, MAP_SHARED, PROT_READ / PROT_EXEC / PROT_WRITE
+
+	In the MMU case: VM regions backed by pages read from file; changes to
+	pages written back to file; writes to file reflected into pages backing
+	mapping; shared across fork.
+
+	In the no-MMU case: not supported.
+
+ (*) Memory backed regular file, MAP_SHARED, PROT_READ / PROT_EXEC / PROT_WRITE
+
+	In the MMU case: As for ordinary regular files.
+
+	In the no-MMU case: The filesystem providing the memory-backed file
+	(such as ramfs or tmpfs) may choose to honour an open, truncate, mmap
+	sequence by providing a contiguous sequence of pages to map. In that
+	case, a shared-writable memory mapping will be possible. It will work
+	as for the MMU case. If the filesystem does not provide any such
+	support, then the mapping request will be denied.
+
+ (*) Memory backed blockdev, MAP_SHARED, PROT_READ / PROT_EXEC / PROT_WRITE
+
+	In the MMU case: As for ordinary regular files.
+
+	In the no-MMU case: As for memory backed regular files, but the
+	blockdev must be able to provide a contiguous run of pages without
+	truncate being called. The ramdisk driver could do this if it allocated
+	all its memory as a contiguous array upfront.
+
+ (*) Memory backed chardev, MAP_SHARED, PROT_READ / PROT_EXEC / PROT_WRITE
+
+	In the MMU case: As for ordinary regular files.
+
+	In the no-MMU case: The character device driver may choose to honour
+	the mmap() by providing direct access to the underlying device if it
+	provides memory or quasi-memory that can be accessed directly. Examples
+	of such are frame buffers and flash devices. If the driver does not
+	provide any such support, then the mapping request will be denied.
+
+
+============================
+FURTHER NOTES ON NO-MMU MMAP
+============================
+
+ (*) A request for a private mapping of less than a page in size may not return
+     a page-aligned buffer. This is because the kernel calls kmalloc() to
+     allocate the buffer, not get_free_page().
+
+ (*) A list of all the mappings on the system is visible through /proc/maps in
+     no-MMU mode.
+
+ (*) Supplying MAP_FIXED or a requesting a particular mapping address will
+     result in an error.
+
+ (*) Files mapped privately usually have to have a read method provided by the
+     driver or filesystem so that the contents can be read into the memory
+     allocated if mmap() chooses not to map the backing device directly. An
+     error will result if they don't. This is most likely to be encountered
+     with character device files, pipes, fifos and sockets.
+
+============================================
+PROVIDING SHAREABLE CHARACTER DEVICE SUPPORT
+============================================
+
+To provide shareable character device support, a driver must provide a
+file->f_op->get_unmapped_area() operation. The mmap() routines will call this
+to get a proposed address for the mapping. This may return an error if it
+doesn't wish to honour the mapping because it's too long, at a weird offset,
+under some unsupported combination of flags or whatever.
+
+The driver should also provide backing device information with capabilities set
+to indicate the permitted types of mapping on such devices. The default is
+assumed to be readable and writable, not executable, and only shareable
+directly (can't be copied).
+
+The file->f_op->mmap() operation will be called to actually inaugurate the
+mapping. It can be rejected at that point. Returning the ENOSYS error will
+cause the mapping to be copied instead if BDI_CAP_MAP_COPY is specified.
+
+The vm_ops->close() routine will be invoked when the last mapping on a chardev
+is removed. An existing mapping will be shared, partially or not, if possible
+without notifying the driver.
+
+It is permitted also for the file->f_op->get_unmapped_area() operation to
+return -ENOSYS. This will be taken to mean that this operation just doesn't
+want to handle it, despite the fact it's got an operation. For instance, it
+might try directing the call to a secondary driver which turns out not to
+implement it. Such is the case for the framebuffer driver which attempts to
+direct the call to the device-specific driver. Under such circumstances, the
+mapping request will be rejected if BDI_CAP_MAP_COPY is not specified, and a
+copy mapped otherwise.
+
+IMPORTANT NOTE:
+
+	Some types of device may present a different appearance to anyone
+	looking at them in certain modes. Flash chips can be like this; for
+	instance if they're in programming or erase mode, you might see the
+	status reflected in the mapping, instead of the data.
+
+	In such a case, care must be taken lest userspace see a shared or a
+	private mapping showing such information when the driver is busy
+	controlling the device. Remember especially: private executable
+	mappings may still be mapped directly off the device under some
+	circumstances!
+
+
+==============================================
+PROVIDING SHAREABLE MEMORY-BACKED FILE SUPPORT
+==============================================
+
+Provision of shared mappings on memory backed files is similar to the provision
+of support for shared mapped character devices. The main difference is that the
+filesystem providing the service will probably allocate a contiguous collection
+of pages and permit mappings to be made on that.
+
+It is recommended that a truncate operation applied to such a file that
+increases the file size, if that file is empty, be taken as a request to gather
+enough pages to honour a mapping. This is required to support POSIX shared
+memory.
+
+Memory backed devices are indicated by the mapping's backing device info having
+the memory_backed flag set.
+
+
+========================================
+PROVIDING SHAREABLE BLOCK DEVICE SUPPORT
+========================================
+
+Provision of shared mappings on block device files is exactly the same as for
+character devices. If there isn't a real device underneath, then the driver
+should allocate sufficient contiguous memory to honour any supported mapping.
diff -urN malta/linux/Documentation/prio_tree.txt malta/linux/Documentation/prio_tree.txt
--- malta/linux/Documentation/prio_tree.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/prio_tree.txt	2005-06-21 14:20:31.154050000 +0100	1.1.1000.1
@@ -0,0 +1,107 @@
+The prio_tree.c code indexes vmas using 3 different indexes:
+	* heap_index  = vm_pgoff + vm_size_in_pages : end_vm_pgoff
+	* radix_index = vm_pgoff : start_vm_pgoff
+	* size_index = vm_size_in_pages
+
+A regular radix-priority-search-tree indexes vmas using only heap_index and
+radix_index. The conditions for indexing are:
+	* ->heap_index >= ->left->heap_index &&
+		->heap_index >= ->right->heap_index
+	* if (->heap_index == ->left->heap_index)
+		then ->radix_index < ->left->radix_index;
+	* if (->heap_index == ->right->heap_index)
+		then ->radix_index < ->right->radix_index;
+	* nodes are hashed to left or right subtree using radix_index
+	  similar to a pure binary radix tree.
+
+A regular radix-priority-search-tree helps to store and query
+intervals (vmas). However, a regular radix-priority-search-tree is only
+suitable for storing vmas with different radix indices (vm_pgoff).
+
+Therefore, the prio_tree.c extends the regular radix-priority-search-tree
+to handle many vmas with the same vm_pgoff. Such vmas are handled in
+2 different ways: 1) All vmas with the same radix _and_ heap indices are
+linked using vm_set.list, 2) if there are many vmas with the same radix
+index, but different heap indices and if the regular radix-priority-search
+tree cannot index them all, we build an overflow-sub-tree that indexes such
+vmas using heap and size indices instead of heap and radix indices. For
+example, in the figure below some vmas with vm_pgoff = 0 (zero) are
+indexed by regular radix-priority-search-tree whereas others are pushed
+into an overflow-subtree. Note that all vmas in an overflow-sub-tree have
+the same vm_pgoff (radix_index) and if necessary we build different
+overflow-sub-trees to handle each possible radix_index. For example,
+in figure we have 3 overflow-sub-trees corresponding to radix indices
+0, 2, and 4.
+
+In the final tree the first few (prio_tree_root->index_bits) levels
+are indexed using heap and radix indices whereas the overflow-sub-trees below
+those levels (i.e. levels prio_tree_root->index_bits + 1 and higher) are
+indexed using heap and size indices. In overflow-sub-trees the size_index
+is used for hashing the nodes to appropriate places.
+
+Now, an example prio_tree:
+
+  vmas are represented [radix_index, size_index, heap_index]
+                 i.e., [start_vm_pgoff, vm_size_in_pages, end_vm_pgoff]
+
+level  prio_tree_root->index_bits = 3
+-----
+												_
+  0			 				[0,7,7]					 |
+  							/     \					 |
+				      ------------------       ------------			 |     Regular
+  				     /					   \			 |  radix priority
+  1		 		[1,6,7]					  [4,3,7]		 |   search tree
+  				/     \					  /     \		 |
+			 -------       -----			    ------       -----		 |  heap-and-radix
+			/		    \			   /		      \		 |      indexed
+  2		    [0,6,6]	 	   [2,5,7]		[5,2,7]		    [6,1,7]	 |
+		    /     \		   /     \		/     \		    /     \	 |
+  3		[0,5,5]	[1,5,6]		[2,4,6]	[3,4,7]	    [4,2,6] [5,1,6]	[6,0,6]	[7,0,7]	 |
+		   /			   /		       /		   		_
+                  /		          /		      /					_
+  4	      [0,4,4]		      [2,3,5]		   [4,1,5]				 |
+  		 /			 /		      /					 |
+  5	     [0,3,3]		     [2,2,4]		  [4,0,4]				 |  Overflow-sub-trees
+  		/			/							 |
+  6	    [0,2,2]		    [2,1,3]							 |    heap-and-size
+  	       /		       /							 |       indexed
+  7	   [0,1,1]		   [2,0,2]							 |
+  	      /											 |
+  8	  [0,0,0]										 |
+  												_
+
+Note that we use prio_tree_root->index_bits to optimize the height
+of the heap-and-radix indexed tree. Since prio_tree_root->index_bits is
+set according to the maximum end_vm_pgoff mapped, we are sure that all
+bits (in vm_pgoff) above prio_tree_root->index_bits are 0 (zero). Therefore,
+we only use the first prio_tree_root->index_bits as radix_index.
+Whenever index_bits is increased in prio_tree_expand, we shuffle the tree
+to make sure that the first prio_tree_root->index_bits levels of the tree
+is indexed properly using heap and radix indices.
+
+We do not optimize the height of overflow-sub-trees using index_bits.
+The reason is: there can be many such overflow-sub-trees and all of
+them have to be suffled whenever the index_bits increases. This may involve
+walking the whole prio_tree in prio_tree_insert->prio_tree_expand code
+path which is not desirable. Hence, we do not optimize the height of the
+heap-and-size indexed overflow-sub-trees using prio_tree->index_bits.
+Instead the overflow sub-trees are indexed using full BITS_PER_LONG bits
+of size_index. This may lead to skewed sub-trees because most of the
+higher significant bits of the size_index are likely to be be 0 (zero). In
+the example above, all 3 overflow-sub-trees are skewed. This may marginally
+affect the performance. However, processes rarely map many vmas with the
+same start_vm_pgoff but different end_vm_pgoffs. Therefore, we normally
+do not require overflow-sub-trees to index all vmas.
+
+From the above discussion it is clear that the maximum height of
+a prio_tree can be prio_tree_root->index_bits + BITS_PER_LONG.
+However, in most of the common cases we do not need overflow-sub-trees,
+so the tree height in the common cases will be prio_tree_root->index_bits.
+
+It is fair to mention here that the prio_tree_root->index_bits
+is increased on demand, however, the index_bits is not decreased when
+vmas are removed from the prio_tree. That's tricky to do. Hence, it's
+left as a home work problem.
+
+
diff -urN malta/linux/Documentation/sched-stats.txt malta/linux/Documentation/sched-stats.txt
--- malta/linux/Documentation/sched-stats.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/sched-stats.txt	2005-06-21 14:20:31.169806000 +0100	1.1.1000.1
@@ -0,0 +1,153 @@
+Version 10 of schedstats includes support for sched_domains, which
+hit the mainline kernel in 2.6.7.  Some counters make more sense to be
+per-runqueue; other to be per-domain.  Note that domains (and their associated
+information) will only be pertinent and available on machines utilizing
+CONFIG_SMP.
+
+In version 10 of schedstat, there is at least one level of domain
+statistics for each cpu listed, and there may well be more than one
+domain.  Domains have no particular names in this implementation, but
+the highest numbered one typically arbitrates balancing across all the
+cpus on the machine, while domain0 is the most tightly focused domain,
+sometimes balancing only between pairs of cpus.  At this time, there
+are no architectures which need more than three domain levels. The first
+field in the domain stats is a bit map indicating which cpus are affected
+by that domain.
+
+These fields are counters, and only increment.  Programs which make use
+of these will need to start with a baseline observation and then calculate
+the change in the counters at each subsequent observation.  A perl script
+which does this for many of the fields is available at
+
+    http://eaglet.rain.com/rick/linux/schedstat/
+
+Note that any such script will necessarily be version-specific, as the main
+reason to change versions is changes in the output format.  For those wishing
+to write their own scripts, the fields are described here.
+
+CPU statistics
+--------------
+cpu<N> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
+
+NOTE: In the sched_yield() statistics, the active queue is considered empty
+    if it has only one process in it, since obviously the process calling
+    sched_yield() is that process.
+
+First four fields are sched_yield() statistics:
+     1) # of times both the active and the expired queue were empty
+     2) # of times just the active queue was empty
+     3) # of times just the expired queue was empty
+     4) # of times sched_yield() was called
+
+Next four are schedule() statistics:
+     5) # of times the active queue had at least one other process on it
+     6) # of times we switched to the expired queue and reused it
+     7) # of times schedule() was called
+     8) # of times schedule() left the processor idle
+
+Next four are active_load_balance() statistics:
+     9) # of times active_load_balance() was called
+    10) # of times active_load_balance() caused this cpu to gain a task
+    11) # of times active_load_balance() caused this cpu to lose a task
+    12) # of times active_load_balance() tried to move a task and failed
+
+Next three are try_to_wake_up() statistics:
+    13) # of times try_to_wake_up() was called
+    14) # of times try_to_wake_up() successfully moved the awakening task
+    15) # of times try_to_wake_up() attempted to move the awakening task
+
+Next two are wake_up_new_task() statistics:
+    16) # of times wake_up_new_task() was called
+    17) # of times wake_up_new_task() successfully moved the new task
+
+Next one is a sched_migrate_task() statistic:
+    18) # of times sched_migrate_task() was called
+
+Next one is a sched_balance_exec() statistic:
+    19) # of times sched_balance_exec() was called
+
+Next three are statistics describing scheduling latency:
+    20) sum of all time spent running by tasks on this processor (in ms)
+    21) sum of all time spent waiting to run by tasks on this processor (in ms)
+    22) # of tasks (not necessarily unique) given to the processor
+
+The last six are statistics dealing with pull_task():
+    23) # of times pull_task() moved a task to this cpu when newly idle
+    24) # of times pull_task() stole a task from this cpu when another cpu
+	was newly idle
+    25) # of times pull_task() moved a task to this cpu when idle
+    26) # of times pull_task() stole a task from this cpu when another cpu
+	was idle
+    27) # of times pull_task() moved a task to this cpu when busy
+    28) # of times pull_task() stole a task from this cpu when another cpu
+	was busy
+
+
+Domain statistics
+-----------------
+One of these is produced per domain for each cpu described. (Note that if
+CONFIG_SMP is not defined, *no* domains are utilized and these lines
+will not appear in the output.)
+
+domain<N> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+
+The first field is a bit mask indicating what cpus this domain operates over.
+
+The next fifteen are a variety of load_balance() statistics:
+
+     1) # of times in this domain load_balance() was called when the cpu
+	was idle
+     2) # of times in this domain load_balance() was called when the cpu
+	was busy
+     3) # of times in this domain load_balance() was called when the cpu
+	was just becoming idle
+     4) # of times in this domain load_balance() tried to move one or more
+	tasks and failed, when the cpu was idle
+     5) # of times in this domain load_balance() tried to move one or more
+	tasks and failed, when the cpu was busy
+     6) # of times in this domain load_balance() tried to move one or more
+	tasks and failed, when the cpu was just becoming idle
+     7) sum of imbalances discovered (if any) with each call to
+	load_balance() in this domain when the cpu was idle
+     8) sum of imbalances discovered (if any) with each call to
+	load_balance() in this domain when the cpu was busy
+     9) sum of imbalances discovered (if any) with each call to
+	load_balance() in this domain when the cpu was just becoming idle
+    10) # of times in this domain load_balance() was called but did not find
+	a busier queue while the cpu was idle
+    11) # of times in this domain load_balance() was called but did not find
+	a busier queue while the cpu was busy
+    12) # of times in this domain load_balance() was called but did not find
+	a busier queue while the cpu was just becoming idle
+    13) # of times in this domain a busier queue was found while the cpu was
+	idle but no busier group was found
+    14) # of times in this domain a busier queue was found while the cpu was
+	busy but no busier group was found
+    15) # of times in this domain a busier queue was found while the cpu was
+	just becoming idle but no busier group was found
+
+Next two are sched_balance_exec() statistics:
+    17) # of times in this domain sched_balance_exec() successfully pushed
+	a task to a new cpu
+    18) # of times in this domain sched_balance_exec() tried but failed to
+	push a task to a new cpu
+
+Next two are try_to_wake_up() statistics:
+    19) # of times in this domain try_to_wake_up() tried to move a task based
+	on affinity and cache warmth
+    20) # of times in this domain try_to_wake_up() tried to move a task based
+	on load balancing
+
+
+/proc/<pid>/schedstat
+----------------
+schedstats also adds a new /proc/<pid/schedstat file to include some of
+the same information on a per-process level.  There are three fields in
+this file correlating to fields 20, 21, and 22 in the CPU fields, but
+they only apply for that process.
+
+A program could be easily written to make use of these extra fields to
+report on how well a particular process or set of processes is faring
+under the scheduler's policies.  A simple version of such a program is
+available at
+    http://eaglet.rain.com/rick/linux/schedstat/v10/latency.c
diff -urN malta/linux/Documentation/seclvl.txt malta/linux/Documentation/seclvl.txt
--- malta/linux/Documentation/seclvl.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/seclvl.txt	2005-06-21 14:20:31.186009000 +0100	1.1.1000.1
@@ -0,0 +1,97 @@
+BSD Secure Levels Linux Security Module
+Michael A. Halcrow <mike@halcrow.us>
+
+
+Introduction
+
+Under the BSD Secure Levels security model, sets of policies are
+associated with levels. Levels range from -1 to 2, with -1 being the
+weakest and 2 being the strongest. These security policies are
+enforced at the kernel level, so not even the superuser is able to
+disable or circumvent them. This hardens the machine against attackers
+who gain root access to the system.
+
+
+Levels and Policies
+
+Level -1 (Permanently Insecure):
+ - Cannot increase the secure level
+
+Level 0 (Insecure):
+ - Cannot ptrace the init process
+
+Level 1 (Default):
+ - /dev/mem and /dev/kmem are read-only
+ - IMMUTABLE and APPEND extended attributes, if set, may not be unset
+ - Cannot load or unload kernel modules
+ - Cannot write directly to a mounted block device
+ - Cannot perform raw I/O operations
+ - Cannot perform network administrative tasks
+ - Cannot setuid any file
+
+Level 2 (Secure):
+ - Cannot decrement the system time
+ - Cannot write to any block device, whether mounted or not
+ - Cannot unmount any mounted filesystems
+
+
+Compilation
+
+To compile the BSD Secure Levels LSM, seclvl.ko, enable the
+SECURITY_SECLVL configuration option.  This is found under Security
+options -> BSD Secure Levels in the kernel configuration menu.
+
+
+Basic Usage
+
+Once the machine is in a running state, with all the necessary modules
+loaded and all the filesystems mounted, you can load the seclvl.ko
+module:
+
+# insmod seclvl.ko
+
+The module defaults to secure level 1, except when compiled directly
+into the kernel, in which case it defaults to secure level 0. To raise
+the secure level to 2, the administrator writes ``2'' to the
+seclvl/seclvl file under the sysfs mount point (assumed to be /sys in
+these examples):
+
+# echo -n "2" > /sys/seclvl/seclvl
+
+Alternatively, you can initialize the module at secure level 2 with
+the initlvl module parameter:
+
+# insmod seclvl.ko initlvl=2
+
+At this point, it is impossible to remove the module or reduce the
+secure level.  If the administrator wishes to have the option of doing
+so, he must provide a module parameter, sha1_passwd, that specifies
+the SHA1 hash of the password that can be used to reduce the secure
+level to 0.
+
+To generate this SHA1 hash, the administrator can use OpenSSL:
+
+# echo -n "boogabooga" | openssl sha1
+abeda4e0f33defa51741217592bf595efb8d289c
+
+In order to use password-instigated secure level reduction, the SHA1
+crypto module must be loaded or compiled into the kernel:
+
+# insmod sha1.ko
+
+The administrator can then insmod the seclvl module, including the
+SHA1 hash of the password:
+
+# insmod seclvl.ko
+         sha1_passwd=abeda4e0f33defa51741217592bf595efb8d289c
+
+To reduce the secure level, write the password to seclvl/passwd under
+your sysfs mount point:
+
+# echo -n "boogabooga" > /sys/seclvl/passwd
+
+The September 2004 edition of Sys Admin Magazine has an article about
+the BSD Secure Levels LSM.  I encourage you to refer to that article
+for a more in-depth treatment of this security module:
+
+http://www.samag.com/documents/s=9304/sam0409a/0409a.htm
diff -urN malta/linux/Documentation/sparse.txt malta/linux/Documentation/sparse.txt
--- malta/linux/Documentation/sparse.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/sparse.txt	2005-06-21 14:20:31.200823000 +0100	1.1.1000.1
@@ -0,0 +1,72 @@
+Copyright 2004 Linus Torvalds
+Copyright 2004 Pavel Machek <pavel@suse.cz>
+
+Using sparse for typechecking
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+"__bitwise" is a type attribute, so you have to do something like this:
+
+        typedef int __bitwise pm_request_t;
+
+        enum pm_request {
+                PM_SUSPEND = (__force pm_request_t) 1,
+                PM_RESUME = (__force pm_request_t) 2
+        };
+
+which makes PM_SUSPEND and PM_RESUME "bitwise" integers (the "__force" is
+there because sparse will complain about casting to/from a bitwise type,
+but in this case we really _do_ want to force the conversion). And because
+the enum values are all the same type, now "enum pm_request" will be that
+type too.
+
+And with gcc, all the __bitwise/__force stuff goes away, and it all ends
+up looking just like integers to gcc.
+
+Quite frankly, you don't need the enum there. The above all really just
+boils down to one special "int __bitwise" type.
+
+So the simpler way is to just do
+
+        typedef int __bitwise pm_request_t;
+
+        #define PM_SUSPEND ((__force pm_request_t) 1)
+        #define PM_RESUME ((__force pm_request_t) 2)
+
+and you now have all the infrastructure needed for strict typechecking.
+
+One small note: the constant integer "0" is special. You can use a
+constant zero as a bitwise integer type without sparse ever complaining.
+This is because "bitwise" (as the name implies) was designed for making
+sure that bitwise types don't get mixed up (little-endian vs big-endian
+vs cpu-endian vs whatever), and there the constant "0" really _is_
+special.
+
+Modify top-level Makefile to say
+
+CHECK           = sparse -Wbitwise
+
+or you don't get any checking at all.
+
+
+Where to get sparse
+~~~~~~~~~~~~~~~~~~~
+
+With BK, you can just get it from
+
+        bk://sparse.bkbits.net/sparse
+
+and DaveJ has tar-balls at
+
+	http://www.codemonkey.org.uk/projects/bitkeeper/sparse/
+
+
+Once you have it, just do
+
+        make
+        make install
+
+as your regular user, and it will install sparse in your ~/bin directory.
+After that, doing a kernel make with "make C=1" will run sparse on all the
+C files that get recompiled, or with "make C=2" will run sparse on the
+files whether they need to be recompiled or not (ie the latter is fast way
+to check the whole tree if you have already built it).
diff -urN malta/linux/Documentation/stable_api_nonsense.txt malta/linux/Documentation/stable_api_nonsense.txt
--- malta/linux/Documentation/stable_api_nonsense.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/stable_api_nonsense.txt	2005-06-21 14:20:31.215581000 +0100	1.2.1000.1
@@ -0,0 +1,193 @@
+The Linux Kernel Driver Interface
+(all of your questions answered and then some)
+
+Greg Kroah-Hartman <greg@kroah.com>
+
+This is being written to try to explain why Linux does not have a binary
+kernel interface, nor does it have a stable kernel interface.  Please
+realize that this article describes the _in kernel_ interfaces, not the
+kernel to userspace interfaces.  The kernel to userspace interface is
+the one that application programs use, the syscall interface.  That
+interface is _very_ stable over time, and will not break.  I have old
+programs that were built on a pre 0.9something kernel that still work
+just fine on the latest 2.6 kernel release.  This interface is the one
+that users and application programmers can count on being stable.
+
+
+Executive Summary
+-----------------
+You think you want a stable kernel interface, but you really do not, and
+you don't even know it.  What you want is a stable running driver, and
+you get that only if your driver is in the main kernel tree.  You also
+get lots of other good benefits if your driver is in the main kernel
+tree, all of which has made Linux into such a strong, stable, and mature
+operating system which is the reason you are using it in the first
+place.
+
+
+Intro
+-----
+
+It's only the odd person who wants to write a kernel driver that needs
+to worry about the in-kernel interfaces changing.  For the majority of
+the world, they neither see this interface, nor do they care about it at
+all.
+
+First off, I'm not going to address _any_ legal issues about closed
+source, hidden source, binary blobs, source wrappers, or any other term
+that describes kernel drivers that do not have their source code
+released under the GPL.  Please consult a lawyer if you have any legal
+questions, I'm a programmer and hence, I'm just going to be describing
+the technical issues here (not to make light of the legal issues, they
+are real, and you do need to be aware of them at all times.)
+
+So, there are two main topics here, binary kernel interfaces and stable
+kernel source interfaces.  They both depend on each other, but we will
+discuss the binary stuff first to get it out of the way.
+
+
+Binary Kernel Interface
+-----------------------
+Assuming that we had a stable kernel source interface for the kernel, a
+binary interface would naturally happen too, right?  Wrong.  Please
+consider the following facts about the Linux kernel:
+  - Depending on the version of the C compiler you use, different kernel
+    data structures will contain different alignment of structures, and
+    possibly include different functions in different ways (putting
+    functions inline or not.)  The individual function organization
+    isn't that important, but the different data structure padding is
+    very important.
+  - Depending on what kernel build options you select, a wide range of
+    different things can be assumed by the kernel:
+      - different structures can contain different fields
+      - Some functions may not be implemented at all, (i.e. some locks
+	compile away to nothing for non-SMP builds.)
+      - Parameter passing of variables from function to function can be
+	done in different ways (the CONFIG_REGPARM option controls
+	this.)
+      - Memory within the kernel can be aligned in different ways,
+	depending on the build options.
+  - Linux runs on a wide range of different processor architectures.
+    There is no way that binary drivers from one architecture will run
+    on another architecture properly.
+
+Now a number of these issues can be addressed by simply compiling your
+module for the exact specific kernel configuration, using the same exact
+C compiler that the kernel was built with.  This is sufficient if you
+want to provide a module for a specific release version of a specific
+Linux distribution.  But multiply that single build by the number of
+different Linux distributions and the number of different supported
+releases of the Linux distribution and you quickly have a nightmare of
+different build options on different releases.  Also realize that each
+Linux distribution release contains a number of different kernels, all
+tuned to different hardware types (different processor types and
+different options), so for even a single release you will need to create
+multiple versions of your module.
+
+Trust me, you will go insane over time if you try to support this kind
+of release, I learned this the hard way a long time ago...
+
+
+Stable Kernel Source Interfaces
+-------------------------------
+
+This is a much more "volatile" topic if you talk to people who try to
+keep a Linux kernel driver that is not in the main kernel tree up to
+date over time.
+
+Linux kernel development is continuous and at a rapid pace, never
+stopping to slow down.  As such, the kernel developers find bugs in
+current interfaces, or figure out a better way to do things.  If they do
+that, they then fix the current interfaces to work better.  When they do
+so, function names may change, structures may grow or shrink, and
+function parameters may be reworked.  If this happens, all of the
+instances of where this interface is used within the kernel are fixed up
+at the same time, ensuring that everything continues to work properly.
+
+As a specific examples of this, the in-kernel USB interfaces have
+undergone at least three different reworks over the lifetime of this
+subsystem.  These reworks were done to address a number of different
+issues:
+  - A change from a synchronous model of data streams to an asynchronous
+    one.  This reduced the complexity of a number of drivers and
+    increased the throughput of all USB drivers such that we are now
+    running almost all USB devices at their maximum speed possible.
+  - A change was made in the way data packets were allocated from the
+    USB core by USB drivers so that all drivers now needed to provide
+    more information to the USB core to fix a number of documented
+    deadlocks.
+
+This is in stark contrast to a number of closed source operating systems
+which have had to maintain their older USB interfaces over time.  This
+provides the ability for new developers to accidentally use the old
+interfaces and do things in improper ways, causing the stability of the
+operating system to suffer.
+
+In both of these instances, all developers agreed that these were
+important changes that needed to be made, and they were made, with
+relatively little pain.  If Linux had to ensure that it preserve a
+stable source interface, a new interface would have been created, and
+the older, broken one would have had to be maintained over time, leading
+to extra work for the USB developers.  Since all Linux USB developers do
+their work on their own time, asking programmers to do extra work for no
+gain, for free, is not a possibility.
+
+Security issues are also a very important for Linux.  When a
+security issue is found, it is fixed in a very short amount of time.  A
+number of times this has caused internal kernel interfaces to be
+reworked to prevent the security problem from occurring.  When this
+happens, all drivers that use the interfaces were also fixed at the
+same time, ensuring that the security problem was fixed and could not
+come back at some future time accidentally.  If the internal interfaces
+were not allowed to change, fixing this kind of security problem and
+insuring that it could not happen again would not be possible.
+
+Kernel interfaces are cleaned up over time.  If there is no one using a
+current interface, it is deleted.  This ensures that the kernel remains
+as small as possible, and that all potential interfaces are tested as
+well as they can be (unused interfaces are pretty much impossible to
+test for validity.)
+
+
+What to do
+----------
+
+So, if you have a Linux kernel driver that is not in the main kernel
+tree, what are you, a developer, supposed to do?  Releasing a binary
+driver for every different kernel version for every distribution is a
+nightmare, and trying to keep up with an ever changing kernel interface
+is also a rough job.
+
+Simple, get your kernel driver into the main kernel tree (remember we
+are talking about GPL released drivers here, if your code doesn't fall
+under this category, good luck, you are on your own here, you leech
+<insert link to leech comment from Andrew and Linus here>.)  If your
+driver is in the tree, and a kernel interface changes, it will be fixed
+up by the person who did the kernel change in the first place.  This
+ensures that your driver is always buildable, and works over time, with
+very little effort on your part.
+
+The very good side effects of having your driver in the main kernel tree
+are:
+  - The quality of the driver will rise as the maintenance costs (to the
+    original developer) will decrease.
+  - Other developers will add features to your driver.
+  - Other people will find and fix bugs in your driver.
+  - Other people will find tuning opportunities in your driver.
+  - Other people will update the driver for you when external interface
+    changes require it.
+  - The driver automatically gets shipped in all Linux distributions
+    without having to ask the distros to add it.
+    
+As Linux supports a larger number of different devices "out of the box"
+than any other operating system, and it supports these devices on more
+different processor architectures than any other operating system, this
+proven type of development model must be doing something right :)
+
+
+
+------
+
+Thanks to Randy Dunlap, Andrew Morton, David Brownell, Hanna Linder,
+Robert Love, and Nishanth Aravamudan for their review and comments on
+early drafts of this paper.
diff -urN malta/linux/Documentation/time_interpolators.txt malta/linux/Documentation/time_interpolators.txt
--- malta/linux/Documentation/time_interpolators.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/time_interpolators.txt	2005-06-21 14:20:31.232632000 +0100	1.2.1000.1
@@ -0,0 +1,41 @@
+Time Interpolators
+------------------
+
+Time interpolators are a base of time calculation between timer ticks and
+allow an accurate determination of time down to the accuracy of the time
+source in nanoseconds.
+
+The architecture specific code typically provides gettimeofday and
+settimeofday under Linux. The time interpolator provides both if an arch
+defines CONFIG_TIME_INTERPOLATION. The arch still must set up timer tick
+operations and call the necessary functions to advance the clock.
+
+With the time interpolator a standardized interface exists for time
+interpolation between ticks. The provided logic is highly scalable
+and has been tested in SMP situations of up to 512 CPUs.
+
+If CONFIG_TIME_INTERPOLATION is defined then the architecture specific code
+(or the device drivers - like HPET) may register time interpolators.
+These are typically defined in the following way:
+
+static struct time_interpolator my_interpolator {
+	.frequency = MY_FREQUENCY,
+	.source = TIME_SOURCE_MMIO32,
+	.shift = 8,		/* scaling for higher accuracy */
+	.drift = -1,		/* Unknown drift */
+	.jitter = 0		/* time source is stable */
+};
+
+void time_init(void)
+{
+	....
+	/* Initialization of the timer *.
+	my_interpolator.address = &my_timer;
+	register_time_interpolator(&my_interpolator);
+	....
+}
+
+For more details see include/linux/timex.h and kernel/timer.c.
+
+Christoph Lameter <christoph@lameter.com>, October 31, 2004
+
diff -urN malta/linux/Documentation/tty.txt malta/linux/Documentation/tty.txt
--- malta/linux/Documentation/tty.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/tty.txt	2005-06-21 14:20:31.244414000 +0100	1.4.1000.1
@@ -0,0 +1,198 @@
+
+			The Lockronomicon
+
+Your guide to the ancient and twisted locking policies of the tty layer and
+the warped logic behind them. Beware all ye who read on.
+
+FIXME: still need to work out the full set of BKL assumptions and document
+them so they can eventually be killed off.
+
+
+Line Discipline
+---------------
+
+Line disciplines are registered with tty_register_ldisc() passing the
+discipline number and the ldisc structure. At the point of registration the 
+discipline must be ready to use and it is possible it will get used before
+the call returns success. If the call returns an error then it won't get
+called. Do not re-use ldisc numbers as they are part of the userspace ABI
+and writing over an existing ldisc will cause demons to eat your computer.
+After the return the ldisc data has been copied so you may free your own 
+copy of the structure. You must not re-register over the top of the line
+discipline even with the same data or your computer again will be eaten by
+demons.
+
+In order to remove a line discipline call tty_register_ldisc passing NULL.
+In ancient times this always worked. In modern times the function will
+return -EBUSY if the ldisc is currently in use. Since the ldisc referencing
+code manages the module counts this should not usually be a concern.
+
+Heed this warning: the reference count field of the registered copies of the
+tty_ldisc structure in the ldisc table counts the number of lines using this
+discipline. The reference count of the tty_ldisc structure within a tty 
+counts the number of active users of the ldisc at this instant. In effect it
+counts the number of threads of execution within an ldisc method (plus those
+about to enter and exit although this detail matters not).
+
+Line Discipline Methods
+-----------------------
+
+TTY side interfaces:
+
+close()		-	This is called on a terminal when the line
+			discipline is being unplugged. At the point of
+			execution no further users will enter the
+			ldisc code for this tty. Can sleep.
+
+open()		-	Called when the line discipline is attached to
+			the terminal. No other call into the line
+			discipline for this tty will occur until it
+			completes successfully. Can sleep.
+
+write()		-	A process is writing data through the line
+			discipline.  Multiple write calls are serialized
+			by the tty layer for the ldisc.  May sleep. 
+
+flush_buffer()	-	May be called at any point between open and close.
+
+chars_in_buffer() -	Report the number of bytes in the buffer.
+
+set_termios()	-	Called on termios structure changes. The caller
+			passes the old termios data and the current data
+			is in the tty. Called under the termios semaphore so
+			allowed to sleep. Serialized against itself only.
+
+read()		-	Move data from the line discipline to the user.
+			Multiple read calls may occur in parallel and the
+			ldisc must deal with serialization issues. May 
+			sleep.
+
+poll()		-	Check the status for the poll/select calls. Multiple
+			poll calls may occur in parallel. May sleep.
+
+ioctl()		-	Called when an ioctl is handed to the tty layer
+			that might be for the ldisc. Multiple ioctl calls
+			may occur in parallel. May sleep. 
+
+Driver Side Interfaces:
+
+receive_buf()	-	Hand buffers of bytes from the driver to the ldisc
+			for processing. Semantics currently rather
+			mysterious 8(
+
+receive_room()	-	Can be called by the driver layer at any time when
+			the ldisc is opened. The ldisc must be able to
+			handle the reported amount of data at that instant.
+			Synchronization between active receive_buf and
+			receive_room calls is down to the driver not the
+			ldisc. Must not sleep.
+
+write_wakeup()	-	May be called at any point between open and close.
+			The TTY_DO_WRITE_WAKEUP flag indicates if a call
+			is needed but always races versus calls. Thus the
+			ldisc must be careful about setting order and to
+			handle unexpected calls. Must not sleep.
+
+			The driver is forbidden from calling this directly
+			from the ->write call from the ldisc as the ldisc
+			is permitted to call the driver write method from
+			this function. In such a situation defer it.
+
+
+Locking
+
+Callers to the line discipline functions from the tty layer are required to
+take line discipline locks. The same is true of calls from the driver side
+but not yet enforced.
+
+Three calls are now provided
+
+	ldisc = tty_ldisc_ref(tty);
+
+takes a handle to the line discipline in the tty and returns it. If no ldisc
+is currently attached or the ldisc is being closed and re-opened at this
+point then NULL is returned. While this handle is held the ldisc will not
+change or go away.
+
+	tty_ldisc_deref(ldisc)
+
+Returns the ldisc reference and allows the ldisc to be closed. Returning the
+reference takes away your right to call the ldisc functions until you take
+a new reference.
+
+	ldisc = tty_ldisc_ref_wait(tty);
+
+Performs the same function as tty_ldisc_ref except that it will wait for an
+ldisc change to complete and then return a reference to the new ldisc. 
+
+While these functions are slightly slower than the old code they should have
+minimal impact as most receive logic uses the flip buffers and they only
+need to take a reference when they push bits up through the driver.
+
+A caution: The ldisc->open(), ldisc->close() and driver->set_ldisc 
+functions are called with the ldisc unavailable. Thus tty_ldisc_ref will
+fail in this situation if used within these functions. Ldisc and driver
+code calling its own functions must be careful in this case. 
+
+
+Driver Interface
+----------------
+
+open()		-	Called when a device is opened. May sleep
+
+close()		-	Called when a device is closed. At the point of
+			return from this call the driver must make no 
+			further ldisc calls of any kind. May sleep
+
+write()		-	Called to write bytes to the device. May not
+			sleep. May occur in parallel in special cases. 
+			Because this includes panic paths drivers generally
+			shouldn't try and do clever locking here.
+
+put_char()	-	Stuff a single character onto the queue. The
+			driver is guaranteed following up calls to
+			flush_chars.
+
+flush_chars()	-	Ask the kernel to write put_char queue
+
+write_room()	-	Return the number of characters tht can be stuffed
+			into the port buffers without overflow (or less).
+			The ldisc is responsible for being intelligent
+ 			about multi-threading of write_room/write calls
+
+ioctl()		-	Called when an ioctl may be for the driver
+
+set_termios()	-	Called on termios change, serialized against
+			itself by a semaphore. May sleep.
+
+set_ldisc()	-	Notifier for discipline change. At the point this 
+			is done the discipline is not yet usable. Can now
+			sleep (I think)
+
+throttle()	-	Called by the ldisc to ask the driver to do flow
+			control.  Serialization including with unthrottle
+			is the job of the ldisc layer.
+
+unthrottle()	-	Called by the ldisc to ask the driver to stop flow
+			control.
+
+stop()		-	Ldisc notifier to the driver to stop output. As with
+			throttle the serializations with start() are down
+			to the ldisc layer.
+
+start()		-	Ldisc notifier to the driver to start output.
+
+hangup()	-	Ask the tty driver to cause a hangup initiated
+			from the host side. [Can sleep ??]
+
+break_ctl()	-	Send RS232 break. Can sleep. Can get called in
+			parallel, driver must serialize (for now), and
+			with write calls.
+
+wait_until_sent() -	Wait for characters to exit the hardware queue
+			of the driver. Can sleep
+
+send_xchar()	  -	Send XON/XOFF and if possible jump the queue with
+			it in order to get fast flow control responses.
+			Cannot sleep ??
+
diff -urN malta/linux/Documentation/00-INDEX malta/linux/Documentation/00-INDEX
--- malta/linux/Documentation/00-INDEX	2004/03/11 16:46:39	1.24
+++ malta/linux/Documentation/00-INDEX	2005/06/21 13:20:27	1.24.1000.1
@@ -12,14 +12,14 @@
 
 00-INDEX
 	- this file.
-BK-usage/
-	- directory with info on BitKeeper.
 BUG-HUNTING
 	- brute force method of doing binary search of patches to find bug.
 Changes
 	- list of changes that break older software packages.
 CodingStyle
 	- how the boss likes the C code in the kernel to look.
+DMA-API.txt
+	- DMA API, pci_ API & extensions for non-consistent memory machines.
 DMA-mapping.txt
 	- info for PCI drivers using DMA portably across all platforms.
 DocBook/
@@ -30,12 +30,14 @@
 	- info on Linux Intelligent Platform Management Interface (IPMI) Driver.
 IRQ-affinity.txt
 	- how to select which CPU(s) handle which interrupt events on SMP.
+ManagementStyle
+	- how to (attempt to) manage kernel hackers.
 MSI-HOWTO.txt
 	- the Message Signaled Interrupts (MSI) Driver Guide HOWTO and FAQ.
+RCU/
+	- directory with info on RCU (read-copy update).
 README.DAC960
 	- info on Mylex DAC960/DAC1100 PCI RAID Controller Driver for Linux.
-README.moxa
-	- release notes for Moxa mutiport serial card.
 SAK.txt
 	- info on Secure Attention Keys.
 SubmittingDrivers
@@ -46,8 +48,6 @@
 	- how to change your VGA cursor from a blinking underscore.
 arm/
 	- directory with info about Linux on the ARM architecture.
-as-iosched.txt
-	- info on anticipatory IO scheduler.
 basic_profiling.txt
 	- basic instructions for those who wants to profile Linux kernel.
 binfmt_misc.txt
@@ -60,20 +60,24 @@
 	- info, major/minor #'s for Compaq's SMART Array Controllers.
 cdrom/
 	- directory with information on the CD-ROM drivers that Linux has.
+cli-sti-removal.txt
+	- cli()/sti() removal guide.
 computone.txt
 	- info on Computone Intelliport II/Plus Multiport Serial Driver.
 cpqarray.txt
 	- info on using Compaq's SMART2 Intelligent Disk Array Controllers.
-cpufreq/
+cpu-freq/
 	- info on CPU frequency and voltage scaling.
 cris/
 	- directory with info about Linux on CRIS architecture.
+crypto/
+	- directory with info on the Crypto API.
 debugging-modules.txt
 	- some notes on debugging modules after Linux 2.6.3.
+device-mapper/
+	- directory with info on Device Mapper.
 devices.txt
 	- plain ASCII listing of all the nodes in /dev/ with major minor #'s.
-digiboard.txt
-	- info on the Digiboard PC/X{i,e,eve} multiport boards.
 digiepca.txt
 	- info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards.
 dnotify.txt
@@ -92,6 +96,8 @@
 	- directory with info on the frame buffer graphics abstraction layer.
 filesystems/
 	- directory with info on the various filesystems that Linux supports.
+firmware_class/
+	- request_firmware() hotplug interface info.
 floppy.txt
 	- notes and driver options for the floppy disk driver.
 ftape.txt
@@ -100,10 +106,14 @@
 	- info on using the Hayes ESP serial driver.
 highuid.txt
 	- notes on the change from 16 bit to 32 bit user/group IDs.
+hpet.txt
+	- High Precision Event Timer Driver for Linux.
 hw_random.txt
 	- info on Linux support for random number generator in i8xx chipsets.
 i2c/
 	- directory with info about the I2C bus/protocol (2 wire, kHz speed).
+i2o/
+	- directory with info about the Linux I2O subsystem.
 i386/
 	- directory with info about Linux on Intel 32 bit architecture.
 ia64/
@@ -114,6 +124,8 @@
 	- how to use the RAM disk as an initial/temporary root filesystem.
 input/
 	- info on Linux input device support.
+io_ordering.txt
+	- info on ordering I/O writes to memory-mapped addresses.
 ioctl-number.txt
 	- how to implement and register device/driver ioctl calls.
 iostats.txt
@@ -134,6 +146,8 @@
 	- summary listing of command line / boot prompt args for the kernel.
 kobject.txt
 	- info of the kobject infrastructure of the Linux kernel.
+laptop-mode.txt
+	- How to conserve battery power using laptop-mode.
 ldm.txt
 	- a brief description of LDM (Windows Dynamic Disks).
 locks.txt
@@ -156,10 +170,8 @@
 	- info on typical Linux memory problems.
 mips/
 	- directory with info about Linux on MIPS architecture.
-mkdev.cciss
-	- script to make /dev entries for SMART controllers (see cciss.txt).
-mkdev.ida
-	- script to make /dev entries for Intelligent Disk Array Controllers.
+mono.txt
+	- how to execute Mono-based .NET binaries with the help of BINFMT_MISC.
 moxa-smartio
 	- info on installing/using Moxa multiport serial driver.
 mtrr.txt
@@ -172,6 +184,8 @@
 	- short guide on setting up a diskless box with NFS root filesystem.
 nmi_watchdog.txt
 	- info on NMI watchdog for SMP systems.
+numastat.txt
+	- info on how to read Numa policy hit/miss statistics in sysfs.
 oops-tracing.txt
 	- how to decode those nasty internal kernel error dump messages.
 paride.txt
@@ -199,17 +213,25 @@
 riscom8.txt
 	- notes on using the RISCom/8 multi-port serial driver.
 rocket.txt
-	- info on installing/using the Comtrol RocketPort multiport serial driver.
+	- info on the Comtrol RocketPort multiport serial driver.
 rpc-cache.txt
 	- introduction to the caching mechanisms in the sunrpc layer.
 rtc.txt
 	- notes on how to use the Real Time Clock (aka CMOS clock) driver.
 s390/
 	- directory with info on using Linux on the IBM S390.
+sched-coding.txt
+	- reference for various scheduler-related methods in the O(1) scheduler.
 sched-design.txt
 	- goals, design and implementation of the Linux O(1) scheduler.
+sched-domains.txt
+	- information on scheduling domains.
+sched-stats.txt
+	- information on schedstats (Linux Scheduler Statistics).
 scsi/
 	- directory with info on Linux scsi support.
+serial/
+	- directory with info on the low level serial API.
 serial-console.txt
 	- how to set up Linux with a serial line console as the default.
 sgi-visws.txt
@@ -242,14 +264,24 @@
 	- info on the magic SysRq key.
 telephony/
 	- directory with info on telephony (e.g. voice over IP) support.
+time_interpolators.txt
+	- info on time interpolators.
+tipar.txt
+	- information about Parallel link cable for Texas Instruments handhelds.
+tty.txt
+	- guide to the locking policies of the tty layer.
 unicode.txt
 	- info on the Unicode character/font mapping used in Linux.
+uml/
+	- directory with infomation about User Mode Linux.
 usb/
 	- directory with info regarding the Universal Serial Bus.
 video4linux/
 	- directory with info regarding video/TV/radio cards and linux.
 vm/
 	- directory with info on the Linux vm code.
+voyager.txt
+	- guide to running Linux on the Voyager architecture.
 watchdog/
 	- how to auto-reboot Linux if it has "fallen and can't get up". ;-)
 x86_64/
diff -urN malta/linux/Documentation/Changes malta/linux/Documentation/Changes
--- malta/linux/Documentation/Changes	2004/05/12 17:14:19	1.79.1000.1
+++ malta/linux/Documentation/Changes	2005/06/21 13:20:27	1.79.1000.2
@@ -223,6 +223,11 @@
 version v0.99.0 or higher. Running old versions may cause problems
 with programs using shared memory.
 
+udev
+----
+udev is a userspace application for populating /dev dynamically with
+only entries for devices actually present. udev replaces devfs.
+
 Networking
 ==========
 
@@ -334,7 +339,7 @@
 
 JFSutils
 --------
-o  <http://oss.software.ibm.com/jfs>
+o  <http://jfs.sourceforge.net/>
 
 Reiserfsprogs
 -------------
@@ -352,14 +357,14 @@
 ----------
 o  <http://sourceforge.net/projects/linuxquota/>
 
-Jade
-----
-o  <ftp://ftp.jclark.com/pub/jade/jade-1.2.1.tar.gz>
-
 DocBook Stylesheets
 -------------------
 o  <http://nwalsh.com/docbook/dsssl/>
 
+XMLTO XSLT Frontend
+-------------------
+o  <http://cyberelk.net/tim/xmlto/>
+
 Intel P6 microcode
 ------------------
 o  <http://www.urbanmyth.org/microcode/>
@@ -368,6 +373,10 @@
 ----------
 o  <http://powertweak.sourceforge.net/>
 
+udev
+----
+o <http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html>
+
 Networking
 **********
 
@@ -399,4 +408,3 @@
 ---------
 o  <http://nfs.sourceforge.net/>
 
-
diff -urN malta/linux/Documentation/CodingStyle malta/linux/Documentation/CodingStyle
--- malta/linux/Documentation/CodingStyle	2004/05/12 17:14:19	1.7.1000.1
+++ malta/linux/Documentation/CodingStyle	2005/06/21 13:20:27	1.7.1000.2
@@ -356,10 +356,10 @@
 
 Macros with multiple statements should be enclosed in a do - while block:
 
-#define macrofun(a,b,c) 			\
+#define macrofun(a, b, c) 			\
 	do {					\
 		if (a == 5)			\
-			do_this(b,c);		\
+			do_this(b, c);		\
 	} while (0)
 
 Things to avoid when using macros:
diff -urN malta/linux/Documentation/DMA-API.txt malta/linux/Documentation/DMA-API.txt
--- malta/linux/Documentation/DMA-API.txt	2004/09/14 16:27:37	1.4.1000.2
+++ malta/linux/Documentation/DMA-API.txt	2005/06/21 13:20:27	1.4.1000.3
@@ -160,7 +160,7 @@
 Checks to see if the mask is possible and updates the device
 parameters if it is.
 
-Returns: 1 if successful and 0 if not
+Returns: 0 if successful and a negative error if not.
 
 u64
 dma_get_required_mask(struct device *dev)
@@ -444,4 +444,83 @@
 continuing on for size.  Again, you *must* observe the cache line
 boundaries when doing this.
 
+int
+dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
+			    dma_addr_t device_addr, size_t size, int
+			    flags)
+
+
+Declare region of memory to be handed out by dma_alloc_coherent when
+it's asked for coherent memory for this device.
+
+bus_addr is the physical address to which the memory is currently
+assigned in the bus responding region (this will be used by the
+platform to perform the mapping)
+
+device_addr is the physical address the device needs to be programmed
+with actually to address this memory (this will be handed out as the
+dma_addr_t in dma_alloc_coherent())
+
+size is the size of the area (must be multiples of PAGE_SIZE).
+
+flags can be or'd together and are
+
+DMA_MEMORY_MAP - request that the memory returned from
+dma_alloc_coherent() be directly writeable.
+
+DMA_MEMORY_IO - request that the memory returned from
+dma_alloc_coherent() be addressable using read/write/memcpy_toio etc.
+
+One or both of these flags must be present
+
+DMA_MEMORY_INCLUDES_CHILDREN - make the declared memory be allocated by
+dma_alloc_coherent of any child devices of this one (for memory residing
+on a bridge).
+
+DMA_MEMORY_EXCLUSIVE - only allocate memory from the declared regions. 
+Do not allow dma_alloc_coherent() to fall back to system memory when
+it's out of memory in the declared region.
+
+The return value will be either DMA_MEMORY_MAP or DMA_MEMORY_IO and
+must correspond to a passed in flag (i.e. no returning DMA_MEMORY_IO
+if only DMA_MEMORY_MAP were passed in) for success or zero for
+failure.
+
+Note, for DMA_MEMORY_IO returns, all subsequent memory returned by
+dma_alloc_coherent() may no longer be accessed directly, but instead
+must be accessed using the correct bus functions.  If your driver
+isn't prepared to handle this contingency, it should not specify
+DMA_MEMORY_IO in the input flags.
+
+As a simplification for the platforms, only *one* such region of
+memory may be declared per device.
+
+For reasons of efficiency, most platforms choose to track the declared
+region only at the granularity of a page.  For smaller allocations,
+you should use the dma_pool() API.
+
+void
+dma_release_declared_memory(struct device *dev)
+
+Remove the memory region previously declared from the system.  This
+API performs *no* in-use checking for this region and will return
+unconditionally having removed all the required structures.  It is the
+drivers job to ensure that no parts of this memory region are
+currently in use.
+
+void *
+dma_mark_declared_memory_occupied(struct device *dev,
+				  dma_addr_t device_addr, size_t size)
+
+This is used to occupy specific regions of the declared space
+(dma_alloc_coherent() will hand out the first free region it finds).
+
+device_addr is the *device* address of the region requested
+
+size is the size (and should be a page sized multiple).
+
+The return value will be either a pointer to the processor virtual
+address of the memory, or an error (via PTR_ERR()) if any part of the
+region is occupied.
+
 
diff -urN malta/linux/Documentation/DMA-mapping.txt malta/linux/Documentation/DMA-mapping.txt
--- malta/linux/Documentation/DMA-mapping.txt	2004/09/14 16:27:37	1.21.1000.2
+++ malta/linux/Documentation/DMA-mapping.txt	2005/06/21 13:20:27	1.21.1000.3
@@ -443,15 +443,9 @@
 implicitly have a direction attribute setting of
 PCI_DMA_BIDIRECTIONAL.
 
-The SCSI subsystem provides mechanisms for you to easily obtain
-the direction to use, in the SCSI command:
-
-	scsi_to_pci_dma_dir(SCSI_DIRECTION)
-
-Where SCSI_DIRECTION is obtained from the 'sc_data_direction'
-member of the SCSI command your driver is working on.  The
-mentioned interface above returns a value suitable for passing
-into the streaming DMA mapping interfaces below.
+The SCSI subsystem tells you the direction to use in the
+'sc_data_direction' member of the SCSI command your driver is
+working on.
 
 For Networking drivers, it's a rather simple affair.  For transmit
 packets, map/unmap them with the PCI_DMA_TODEVICE direction
diff -urN malta/linux/Documentation/IO-mapping.txt malta/linux/Documentation/IO-mapping.txt
--- malta/linux/Documentation/IO-mapping.txt	2001/01/11 04:02:41	1.5
+++ malta/linux/Documentation/IO-mapping.txt	2005/06/21 13:20:27	1.5.1000.1
@@ -119,9 +119,10 @@
 So why do we care about the physical address at all? We do need the physical
 address in some cases, it's just not very often in normal code.  The physical
 address is needed if you use memory mappings, for example, because the
-"remap_page_range()" mm function wants the physical address of the memory to
-be remapped (the memory management layer doesn't know about devices outside
-the CPU, so it shouldn't need to know about "bus addresses" etc). 
+"remap_pfn_range()" mm function wants the physical address of the memory to
+be remapped as measured in units of pages, a.k.a. the pfn (the memory
+management layer doesn't know about devices outside the CPU, so it
+shouldn't need to know about "bus addresses" etc).
 
 NOTE NOTE NOTE! The above is only one part of the whole equation. The above
 only talks about "real memory", that is, CPU memory (RAM). 
diff -urN malta/linux/Documentation/IPMI.txt malta/linux/Documentation/IPMI.txt
--- malta/linux/Documentation/IPMI.txt	2004/09/14 16:27:37	1.3.1000.2
+++ malta/linux/Documentation/IPMI.txt	2005/06/21 13:20:27	1.3.1000.3
@@ -342,6 +342,7 @@
        irqs=<irq1>,<irq2>... trydefaults=[0|1]
        regspacings=<sp1>,<sp2>,... regsizes=<size1>,<size2>,...
        regshifts=<shift1>,<shift2>,...
+       slave_addrs=<addr1>,<addr2>,...
 
 Each of these except si_trydefaults is a list, the first item for the
 first interface, second item for the second interface, etc.
@@ -383,6 +384,10 @@
 be in the lower 8 bits.  The regshifts parameter give the amount to shift
 the data to get to the actual IPMI data.
 
+The slave_addrs specifies the IPMI address of the local BMC.  This is
+usually 0x20 and the driver defaults to that, but in case it's not, it
+can be specified when the driver starts up.
+
 When compiled into the kernel, the addresses can be specified on the
 kernel command line as:
 
@@ -392,6 +397,7 @@
        ipmi_si.regspacings=<sp1>,<sp2>,...
        ipmi_si.regsizes=<size1>,<size2>,...
        ipmi_si.regshifts=<shift1>,<shift2>,...
+       ipmi_si.slave_addrs=<addr1>,<addr2>,...
 
 It works the same as the module parameters of the same names.
 
diff -urN malta/linux/Documentation/SAK.txt malta/linux/Documentation/SAK.txt
--- malta/linux/Documentation/SAK.txt	2001/04/05 04:56:06	1.1
+++ malta/linux/Documentation/SAK.txt	2005/06/21 13:20:27	1.1.1000.1
@@ -1,5 +1,5 @@
 Linux 2.4.2 Secure Attention Key (SAK) handling
-18 March 2001, Andrew Morton <andrewm@uow.edu.au>
+18 March 2001, Andrew Morton <akpm@osdl.org>
 
 An operating system's Secure Attention Key is a security tool which is
 provided as protection against trojan password capturing programs.  It
@@ -44,7 +44,7 @@
    /dev/console opened.
 
    Unfortunately this includes a number of things which you don't
-   actually want killed.  This is because these appliccaitons are
+   actually want killed.  This is because these applications are
    incorrectly holding /dev/console open.  Be sure to complain to your
    Linux distributor about this!
 
diff -urN malta/linux/Documentation/SubmittingDrivers malta/linux/Documentation/SubmittingDrivers
--- malta/linux/Documentation/SubmittingDrivers	2004/09/14 16:27:37	1.10.1000.2
+++ malta/linux/Documentation/SubmittingDrivers	2005/06/21 13:20:28	1.10.1000.3
@@ -118,13 +118,18 @@
 	linux-kernel@vger.kernel.org
 	[mail majordomo@vger.kernel.org to subscribe]
 
+Linux Device Drivers, Third Edition (covers 2.6.10):
+	http://lwn.net/Kernel/LDD3/  (free version)
+
 Kernel traffic:
 	Weekly summary of kernel list activity (much easier to read)
 	http://www.kerneltraffic.org/kernel-traffic/
 
 LWN.net:
 	Weekly summary of kernel development activity - http://lwn.net/
-	2.6 driver porting information:
+	2.6 API changes:
+		http://lwn.net/Articles/2.6-kernel-api/
+	Porting drivers from prior kernels to 2.6:
 		http://lwn.net/Articles/driver-porting/
 
 KernelTrap:
diff -urN malta/linux/Documentation/cachetlb.txt malta/linux/Documentation/cachetlb.txt
--- malta/linux/Documentation/cachetlb.txt	2004/09/14 16:27:37	1.13.1000.1
+++ malta/linux/Documentation/cachetlb.txt	2005/06/21 13:20:28	1.13.1000.2
@@ -142,6 +142,11 @@
 	The ia64 sn2 platform is one example of a platform
 	that uses this interface.
 
+8) void lazy_mmu_prot_update(pte_t pte)
+	This interface is called whenever the protection on
+	any user PTEs change.  This interface provides a notification
+	to architecture specific code to take appropiate action.
+
 
 Next, we have the cache flushing interfaces.  In general, when Linux
 is changing an existing virtual-->physical mapping to a new value,
@@ -155,7 +160,7 @@
 	   change_range_of_page_tables(mm, start, end);
 	   flush_tlb_range(vma, start, end);
 
-	3) flush_cache_page(vma, addr);
+	3) flush_cache_page(vma, addr, pfn);
 	   set_pte(pte_pointer, new_pte_val);
 	   flush_tlb_page(vma, addr);
 
@@ -203,7 +208,7 @@
 	call flush_cache_page (see below) for each entry which may be
 	modified.
 
-3) void flush_cache_page(struct vm_area_struct *vma, unsigned long addr)
+3) void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn)
 
 	This time we need to remove a PAGE_SIZE sized range
 	from the cache.  The 'vma' is the backing structure used by
@@ -213,8 +218,14 @@
 	executable (and thus could be in the 'instruction cache' in
 	"Harvard" type cache layouts).
 
+	The 'pfn' indicates the physical page frame (shift this value
+	left by PAGE_SHIFT to get the physical address) that 'addr'
+	translates to.  It is this mapping which should be removed from
+	the cache.
+
 	After running, there will be no entries in the cache for
-	'vma->vm_mm' for virtual address 'addr'.
+	'vma->vm_mm' for virtual address 'addr' which translates
+	to 'pfn'.
 
 	This is used primarily during fault processing.
 
@@ -354,10 +365,6 @@
 	of arbitrary user pages (f.e. for ptrace()) it will use
 	these two routines.
 
-	The page has been kmap()'d, and flush_cache_page() has
-	just been called for the user mapping of this page (if
-	necessary).
-
 	Any necessary cache flushing or other coherency operations
 	that need to occur should happen here.  If the processor's
 	instruction cache does not snoop cpu stores, it is very
diff -urN malta/linux/Documentation/cciss.txt malta/linux/Documentation/cciss.txt
--- malta/linux/Documentation/cciss.txt	2004/05/12 17:14:19	1.8.1000.1
+++ malta/linux/Documentation/cciss.txt	2005/06/21 13:20:28	1.8.1000.2
@@ -14,28 +14,31 @@
 	* SA 6400
 	* SA 6400 U320 Expansion Module
 	* SA 6i
-	* SA 6422
-	* SA V100
+	* SA P600
+	* SA P800
+	* SA E400
 
-If nodes are not already created in the /dev/cciss directory
+If nodes are not already created in the /dev/cciss directory, run as root:
 
-# mkdev.cciss [ctlrs]
-
-Where ctlrs is the number of controllers you have (defaults to 1 if not
-specified).
+# cd /dev
+# ./MAKEDEV cciss
 
 Device Naming:
 --------------
 
-You need some entries in /dev for the cciss device.  The mkdev.cciss script
+You need some entries in /dev for the cciss device.  The MAKEDEV script
 can make device nodes for you automatically.  Currently the device setup
 is as follows:
 
 Major numbers:
 	104	cciss0	
 	105	cciss1	
-	106	cciss2 
-	etc...
+	106	cciss2
+	105	cciss3
+	108	cciss4
+	109	cciss5
+	110	cciss6
+	111	cciss7
 
 Minor numbers:
         b7 b6 b5 b4 b3 b2 b1 b0
@@ -45,7 +48,7 @@
              |
              +-------------------- Logical Volume number
 
-The suggested device naming scheme is:
+The device naming scheme is:
 /dev/cciss/c0d0			Controller 0, disk 0, whole device
 /dev/cciss/c0d0p1		Controller 0, disk 0, partition 1
 /dev/cciss/c0d0p2		Controller 0, disk 0, partition 2
@@ -117,16 +120,13 @@
 
 Note that the naming convention of the /proc filesystem entries 
 contains a number in addition to the driver name.  (E.g. "cciss0" 
-instead of just "cciss" which you might expect.)   This is because 
-of changes to the 2.4 kernel PCI interface related to PCI hot plug
-that imply the driver must register with the SCSI mid layer once per
-adapter instance rather than once per driver.
+instead of just "cciss" which you might expect.)
 
 Note: ONLY sequential access devices and medium changers are presented 
 as SCSI devices to the SCSI mid layer by the cciss driver.  Specifically, 
 physical SCSI disk drives are NOT presented to the SCSI mid layer.  The 
 physical SCSI disk drives are controlled directly by the array controller 
-hardware and it is important to prevent the OS from attempting to directly 
+hardware and it is important to prevent the kernel from attempting to directly
 access these devices too, as if the array controller were merely a SCSI 
 controller in the same way that we are allowing it to access SCSI tape drives.
 
diff -urN malta/linux/Documentation/computone.txt malta/linux/Documentation/computone.txt
--- malta/linux/Documentation/computone.txt	2004/09/14 16:27:37	1.10.1000.2
+++ malta/linux/Documentation/computone.txt	2005/06/21 13:20:28	1.10.1000.3
@@ -1,3 +1,13 @@
+NOTE: This is an unmaintained driver.  It is not guaranteed to work due to
+changes made in the tty layer in 2.6.  If you wish to take over maintenance of
+this driver, contact Michael Warfield <mhw@wittsend.com>.
+
+Changelog:
+----------
+11-01-2001:	Original Document
+
+10-29-2004:	Minor misspelling & format fix, update status of driver.
+		James Nelson <james4765@gmail.com>
 
 Computone Intelliport II/Plus Multiport Serial Driver
 -----------------------------------------------------
@@ -146,7 +156,7 @@
 ip2.c are used. If you are autoloading the driver module with kerneld or
 kmod the base addresses and interrupt number must also be set in ip2.c
 and recompile or just insert and options line in /etc/modprobe.conf or both.
-The options line is equivalent to the command line and takes precidence over 
+The options line is equivalent to the command line and takes precedence over
 what is in ip2.c. 
 
 /etc/modprobe.conf sample:
@@ -166,7 +176,8 @@
 
 
 Note:	Both io and irq should be updated to reflect YOUR system.  An "io"
-	address of 1 or 2 indicates a PCI or EISA card in the board table.		The PCI or EISA irq will be assigned automatically.
+	address of 1 or 2 indicates a PCI or EISA card in the board table.
+	The PCI or EISA irq will be assigned automatically.
 
 Specifying an invalid or in-use irq will default the driver into
 running in polled mode for that card.  If all irq entries are 0 then
diff -urN malta/linux/Documentation/cpqarray.txt malta/linux/Documentation/cpqarray.txt
--- malta/linux/Documentation/cpqarray.txt	2003/06/05 00:04:28	1.6
+++ malta/linux/Documentation/cpqarray.txt	2005/06/21 13:20:28	1.6.1000.1
@@ -26,31 +26,13 @@
 	* IDA-2
 	* IAES
 
-Installing:
------------
-
-You need to build a new kernel to use this device, even if you want to
-use a loadable module.  
-
-Apply the patch to a 2.2.x kernel:
-
-# cd linux
-# patch -p1 <smart2.patch
-
-Then build a new kernel and turn on Compaq SMART2 Disk Array support.
-Create device nodes for the diskarray device:
-
-# mkdev.ida [ctlrs]
-
-Where ctlrs is the number of controllers you have (defaults to 1 if not
-specified).
 
 EISA Controllers:
 -----------------
 
 If you want to use an EISA controller you'll have to supply some
-insmod/lilo parameters.  If the driver is compiled into the kernel, must
-give it the controller's IO port address at boot time (it is no longer
+modprobe/lilo parameters.  If the driver is compiled into the kernel, must
+give it the controller's IO port address at boot time (it is not
 necessary to specify the IRQ).  For example, if you had two SMART-2/E
 controllers, in EISA slots 1 and 2 you'd give it a boot argument like
 this:
@@ -59,29 +41,27 @@
 
 If you were loading the driver as a module, you'd give load it like this:
 
-	insmod cpqarray.o eisa=0x1000,0x2000
+	modprobe cpqarray eisa=0x1000,0x2000
 
 You can use EISA and PCI adapters at the same time.
 
-Booting:
---------
-
-You'll need to use a modified lilo if you want to boot from a disk array.
-Its simply a version of lilo with some code added to tell it how to
-understand Compaq diskarray devices.
 
 Device Naming:
 --------------
 
-You need some entries in /dev for the ida device.  The mkdev.ida script
-can make device nodes for you automatically.  Currently the device setup
-is as follows:
+You need some entries in /dev for the ida device.  MAKEDEV in the /dev
+directory can make device nodes for you automatically.  The device setup is
+as follows:
 
 Major numbers:
 	72	ida0
 	73	ida1
 	74	ida2
-	etc...
+	75	ida3
+	76	ida4
+	77	ida5
+	78	ida6
+	79	ida7
 
 Minor numbers:
         b7 b6 b5 b4 b3 b2 b1 b0
@@ -91,7 +71,7 @@
              |
              +-------------------- Logical Volume number
 
-The suggested device naming scheme is:
+The device naming scheme is:
 /dev/ida/c0d0		Controller 0, disk 0, whole device
 /dev/ida/c0d0p1		Controller 0, disk 0, partition 1
 /dev/ida/c0d0p2		Controller 0, disk 0, partition 2
@@ -101,3 +81,13 @@
 /dev/ida/c1d1p1		Controller 1, disk 1, partition 1
 /dev/ida/c1d1p2		Controller 1, disk 1, partition 2
 /dev/ida/c1d1p3		Controller 1, disk 1, partition 3
+
+
+Changelog:
+==========
+
+10-28-2004 :	General cleanup, syntax fixes for in-kernel driver version.
+		James Nelson <james4765@gmail.com>
+
+
+1999 :		Original Document
diff -urN malta/linux/Documentation/devices.txt malta/linux/Documentation/devices.txt
--- malta/linux/Documentation/devices.txt	2004/09/14 16:27:37	1.23.1000.2
+++ malta/linux/Documentation/devices.txt	2005/06/21 13:20:28	1.23.1000.3
@@ -1,9 +1,9 @@
 
-		       LINUX ALLOCATED DEVICES
+		    LINUX ALLOCATED DEVICES (2.6+ version)
 
-	     Maintained by John Cagle <device@lanana.org>
+	     Maintained by Torben Mathiasen <device@lanana.org>
 
-		      Last revised: 15 March 2004
+		      Last revised: 25 January 2005
 
 This list is the Linux Device List, the official registry of allocated
 device numbers and /dev directory nodes for the Linux operating
@@ -24,7 +24,8 @@
 the Atari platform only.
 
 The symbol {2.6} means the allocation is obsolete and scheduled for
-removal once kernel version 2.6 (or equivalent) is released.
+removal once kernel version 2.6 (or equivalent) is released. Some of these
+allocations have already been removed.
 
 This document is in the public domain.	The author requests, however,
 that semantically altered versions are not distributed without
@@ -41,13 +42,6 @@
 
 	  **** DEVICE DRIVERS AUTHORS PLEASE READ THIS ****
 
-THE DEVICE REGISTRY IS OFFICIALLY FROZEN FOR LINUS TORVALDS' KERNEL
-TREE.  At Linus' request, no more allocations will be made official
-for Linus' kernel tree; the 3 June 2001 version of this list is the
-official final version of this registry.  At Alan Cox' request,
-however, the registry will continue to be maintained for the -ac
-series of kernels, and registrations will be accepted.
-
 To have a major number allocated, or a minor number in situations
 where that applies (e.g. busmice), please contact me with the
 appropriate device information.	 Also, if you have additional
@@ -410,6 +404,7 @@
 		199 = /dev/scanners/cuecat :CueCat barcode scanner
 		200 = /dev/net/tun	TAP/TUN network device
 		201 = /dev/button/gulpb	Transmeta GULP-B buttons
+		202 = /dev/emd/ctl	Enhanced Metadisk RAID (EMD) control
 		204 = /dev/video/em8300		EM8300 DVD decoder control
 		205 = /dev/video/em8300_mv	EM8300 DVD decoder video
 		206 = /dev/video/em8300_ma	EM8300 DVD decoder audio
@@ -435,6 +430,8 @@
 		226 = /dev/systrace	Systrace device
 		227 = /dev/mcelog	X86_64 Machine Check Exception driver
 		228 = /dev/hpet		HPET driver
+		229 = /dev/fuse		Fuse (virtual filesystem in user-space)
+		230 = /dev/midishare	MidiShare driver
 		240-254			Reserved for local use
 		255			Reserved for MISC_DYNAMIC_MINOR
 
@@ -1175,7 +1172,7 @@
 
 		Requested by: andy@scramdisklinux.org
 
- 65 char	Sundance "plink" Transputer boards
+ 65 char	Sundance "plink" Transputer boards (obsolete, unused)
 		  0 = /dev/plink0	First plink device
 		  1 = /dev/plink1	Second plink device
 		  2 = /dev/plink2	Third plink device
@@ -1525,12 +1522,12 @@
 		disks (see major number 3) except that the limit on
 		partitions is 15.
 
- 83 char	Teletext/videotext interfaces {2.6}
-		  0 = /dev/vtx		Teletext decoder
-		 16 = /dev/vttuner	TV tuner on teletext interface
-
-		Devices for the driver contained in the VideoteXt package.
-		More information on http://home.pages.de/~videotext/
+ 83 char	Matrox mga_vid video driver
+ 		 0 = /dev/mga_vid0	1st video card
+		 1 = /dev/mga_vid1	2nd video card
+		 2 = /dev/mga_vid2	3rd video card
+		  ...
+	        15 = /dev/mga_vid15	16th video card
 
  83 block	I2O hard disk
 		  0 = /dev/i2o/hdaw	49th I2O hard disk, whole disk
@@ -1682,11 +1679,16 @@
 		  1 = /dev/dcxx1	Second capture card
 		    ...
 
- 94 block	Inverse NAND Flash Translation Layer
-		  0 = /dev/inftla	First INFTL layer
-		 16 = /dev/inftlb	Second INFTL layer
+ 94 block IBM S/390 DASD block storage
+    		  0 = /dev/dasda First DASD device, major
+    		  1 = /dev/dasda1 First DASD device, block 1
+	    	  2 = /dev/dasda2 First DASD device, block 2
+    		  3 = /dev/dasda3 First DASD device, block 3
+    		  4 = /dev/dasdb Second DASD device, major
+    		  5 = /dev/dasdb1 Second DASD device, block 1
+    		  6 = /dev/dasdb2 Second DASD device, block 2
+    		  7 = /dev/dasdb3 Second DASD device, block 3
 		    ...
-		240 = /dev/inftlp	16th INTFL layer
 
  95 char	IP filter
 		  0 = /dev/ipl		Filter control device/log file
@@ -1695,17 +1697,6 @@
 		  3 = /dev/ipauth	Authentication control device/log file
 		    ...		
 
- 95 block	IBM S/390 DASD block storage
-		  0 = /dev/dasd0	First DASD device, major
-		  1 = /dev/dasd0a	First DASD device, block 1
-		  2 = /dev/dasd0b	First DASD device, block 2
-		  3 = /dev/dasd0c	First DASD device, block 3
-		  4 = /dev/dasd1	Second DASD device, major
-		  5 = /dev/dasd1a	Second DASD device, block 1
-		  6 = /dev/dasd1b	Second DASD device, block 2
-		  7 = /dev/dasd1c	Second DASD device, block 3
-		    ...
-
  96 char	Parallel port ATAPI tape devices
 		  0 = /dev/pt0		First parallel port ATAPI tape
 		  1 = /dev/pt1		Second parallel port ATAPI tape
@@ -1714,10 +1705,11 @@
 		129 = /dev/npt1		Second p.p. ATAPI tape, no rewind
 		    ...
 
- 96 block	IBM S/390 VM/ESA minidisk
-		  0 = /dev/msd0		First VM/ESA minidisk
-		  1 = /dev/msd1		Second VM/ESA minidisk
+ 96 block Inverse NAND Flash Translation Layer
+		  0 = /dev/inftla First INFTL layer
+		 16 = /dev/inftlb Second INFTL layer
 		    ...
+		240 = /dev/inftlp	16th INTFL layer
 
  97 char	Parallel port generic ATAPI interface
 		  0 = /dev/pg0		First parallel port ATAPI device
@@ -1741,10 +1733,14 @@
 		See http://stm.lbl.gov/comedi or http://www.llp.fu-berlin.de/.
 
  98 block	User-mode virtual block device
-		  0 = /dev/ubd0		First user-mode block device
-		  1 = /dev/ubd1		Second user-mode block device
+		  0 = /dev/ubda		First user-mode block device
+		 16 = /dev/udbb		Second user-mode block device
 		    ...
 
+		Partitions are handled in the same way as for IDE
+		disks (see major number 3) except that the limit on
+		partitions is 15.
+
 		This device is used by the user-mode virtual kernel port.
 
  99 char	Raw parallel ports
@@ -1796,14 +1792,15 @@
 		partitions is 15.
 
 103 char	Arla network file system
-		  0 = /dev/xfs0		Arla XFS
+		  0 = /dev/nnpfs0	First NNPFS device
+		  1 = /dev/nnpfs1	Second NNPFS device
 
 		Arla is a free clone of the Andrew File System, AFS.
-		Any resemblance with the Swedish milk producer is
-		coincidental.  For more information about the project,
-		write to <arla-drinkers@stacken.kth.se> or subscribe
-		to the arla announce mailing list by sending a mail to
-		<arla-announce-request@stacken.kth.se>.
+		The NNPFS device gives user mode filesystem
+		implementations a kernel presence for caching and easy
+		mounting.  For more information about the project,
+		write to <arla-drinkers@stacken.kth.se> or see
+		http://www.stacken.kth.se/project/arla/
 
 103 block	Audit device
 		  0 = /dev/audit	Audit device
@@ -2060,12 +2057,10 @@
                 device names.  For example, /dev/hda5 would become
                 /dev/evms/hda5.
 
-118 char	Solidum ???
-		  0 = /dev/solnp0
-		  1 = /dev/solnp1
-		    ...
-		128 = /dev/solnpctl0
-		129 = /dev/solnpctl1
+118 char	IBM Cryptographic Accelerator
+		  0 = /dev/ica	Virtual interface to all IBM Crypto Accelerators
+		  1 = /dev/ica0	IBMCA Device 0
+		  2 = /dev/ica1	IBMCA Device 1
 		    ...
 
 119 char	VMware virtual network control
@@ -2109,6 +2104,7 @@
 		disks (see major number 3) except that the limit on
 		partitions is 15.
 
+130 char 	(Misc devices)
 
 130 block       SCSI disk devices (160-175)
                   0 = /dev/sdfe         161st SCSI disk whole disk
@@ -2310,6 +2306,11 @@
 		  1 = /dev/aureal1	Second Aureal Vortex
 		    ...
 
+147 block	Distributed Replicated Block Device (DRBD)
+		  0 = /dev/drbd0	First DRBD device
+		  1 = /dev/drbd1	Second DRBD device
+		    ...
+
 148 char	Technology Concepts serial card
 		  0 = /dev/ttyT0	First TCL port
 		  1 = /dev/ttyT1	Second TCL port
@@ -2346,6 +2347,22 @@
 		    ...
 		 15 = /dev/spi15	Sixteenth SPI device on the bus
 
+153 block	Enhanced Metadisk RAID (EMD) storage units
+		  0 = /dev/emd/0	First unit
+		  1 = /dev/emd/0p1	Partition 1 on First unit
+		  2 = /dev/emd/0p2	Partition 2 on First unit
+		    ...
+		 15 = /dev/emd/0p15	Partition 15 on First unit
+
+		 16 = /dev/emd/1	Second unit
+		 32 = /dev/emd/2	Third unit
+		    ...
+		240 = /dev/emd/15	Sixteenth unit
+
+		Partitions are handled in the same way as for IDE
+		disks (see major number 3) except that the limit on
+		partitions is 15.
+
 154 char	Specialix RIO serial card
 		  0 = /dev/ttySR0	First RIO port
 		    ...
@@ -2371,23 +2388,24 @@
 		  1 = /dev/gfax1	GammaLink channel 1
 		    ...
 
-159		RESERVED
+159 char	RESERVED
+159 block	RESERVED
 
 160 char	General Purpose Instrument Bus (GPIB)
 		  0 = /dev/gpib0	First GPIB bus
 		  1 = /dev/gpib1	Second GPIB bus
 		    ...
 
-160 block       Promise SX8 8-port SATA Disks on First Controller
-		  0 = /dev/sx8/0     SATA disk 0 whole disk
-		  1 = /dev/sx8/0p1   SATA disk 0 partition 1
+160 block       Carmel 8-port SATA Disks on First Controller
+		  0 = /dev/carmel/0     SATA disk 0 whole disk
+		  1 = /dev/carmel/0p1   SATA disk 0 partition 1
 		    ...
-		 31 = /dev/sx8/0p31  SATA disk 0 partition 31
+		 31 = /dev/carmel/0p31  SATA disk 0 partition 31
 
-		 32 = /dev/sx8/1     SATA disk 1 whole disk
-		 64 = /dev/sx8/2     SATA disk 2 whole disk
+		 32 = /dev/carmel/1     SATA disk 1 whole disk
+		 64 = /dev/carmel/2     SATA disk 2 whole disk
 		    ...
-		224 = /dev/sx8/7     SATA disk 7 whole disk
+		224 = /dev/carmel/7     SATA disk 7 whole disk
 
 		Partitions are handled in the same way as for IDE
 		disks (see major number 3) except that the limit on
@@ -2401,16 +2419,16 @@
 		 17 = /dev/irlpt1	Second IrLPT device
 		    ...
 
-161 block       Promise SX8 8-port SATA Disks on Second Controller
-		  0 = /dev/sx8/8     SATA disk 8 whole disk
-		  1 = /dev/sx8/8p1   SATA disk 8 partition 1
+161 block       Carmel 8-port SATA Disks on Second Controller
+		  0 = /dev/carmel/8     SATA disk 8 whole disk
+		  1 = /dev/carmel/8p1   SATA disk 8 partition 1
 		    ...
-		 31 = /dev/sx8/8p31  SATA disk 8 partition 31
+		 31 = /dev/carmel/8p31  SATA disk 8 partition 31
 
-		 32 = /dev/sx8/9     SATA disk 9 whole disk
-		 64 = /dev/sx8/10    SATA disk 10 whole disk
+		 32 = /dev/carmel/9     SATA disk 9 whole disk
+		 64 = /dev/carmel/10    SATA disk 10 whole disk
 		    ...
-		224 = /dev/sx8/15    SATA disk 15 whole disk
+		224 = /dev/carmel/15    SATA disk 15 whole disk
 
 		Partitions are handled in the same way as for IDE
 		disks (see major number 3) except that the limit on
@@ -2537,6 +2555,11 @@
 		 65 = /dev/usb/usblcd	USBLCD Interface (info@usblcd.de)
 		 66 = /dev/usb/cpad0	Synaptics cPad (mouse/LCD)
 
+180 block	USB block devices
+		0 = /dev/uba		First USB block device
+		8 = /dev/ubb		Second USB block device
+		16 = /dev/ubc		Thrid USB block device
+		...
 
 181 char	Conrad Electronic parallel port radio clocks
 		  0 = /dev/pcfclock0	First Conrad radio clock
@@ -2720,6 +2743,19 @@
 		    ...
 		 39 = /dev/ttyDB7		DataBooster serial port 7
 		 40 = /dev/ttySG0		SGI Altix console port
+		 41 = /dev/ttySMX0		Motorola i.MX - port 0
+		 42 = /dev/ttySMX1		Motorola i.MX - port 1
+		 43 = /dev/ttySMX2		Motorola i.MX - port 2
+		 44 = /dev/ttyMM0		Marvell MPSC - port 0
+		 45 = /dev/ttyMM1		Marvell MPSC - port 1
+		 46 = /dev/ttyCPM0		PPC CPM (SCC or SMC) - port 0
+		    ...
+		 47 = /dev/ttyCPM5		PPC CPM (SCC or SMC) - port 5
+		 50 = /dev/ttyIOC40		Altix serial card
+		    ...
+		 81 = /dev/ttyIOC431		Altix serial card
+		 82 = /dev/ttyVR0               NEC VR4100 series SIU
+		 83 = /dev/ttyVR1               NEC VR4100 series DSIU
 
 205 char	Low-density serial ports (alternate device)
 		  0 = /dev/culu0		Callout device for ttyLU0
@@ -2745,6 +2781,18 @@
 		    ...
 		 39 = /dev/cudb7		Callout device for ttyDB7
 		 40 = /dev/cusg0		Callout device for ttySG0
+		 41 = /dev/ttycusmx0		Callout device for ttySMX0
+		 42 = /dev/ttycusmx1		Callout device for ttySMX1
+		 43 = /dev/ttycusmx2		Callout device for ttySMX2
+		 46 = /dev/cucpm0		Callout device for ttyCPM0
+		    ...
+		 49 = /dev/cucpm5		Callout device for ttyCPM5
+		 50 = /dev/cuioc40		Callout device for ttyIOC40
+		    ...
+		 81 = /dev/cuioc431		Callout device for ttyIOC431
+		 82 = /dev/cuvr0                Callout device for ttyVR0
+		 83 = /dev/cuvr1                Callout device for ttyVR1
+
 
 206 char	OnStream SC-x0 tape devices
 		  0 = /dev/osst0		First OnStream SCSI tape, mode 0
@@ -2958,7 +3006,12 @@
 		ioctl()'s can be used to rewind the tape regardless of
 		the device used to access it.
 
-231-239		UNASSIGNED
+231 char	InfiniBand MAD
+		0 = /dev/infiniband/umad0
+		1 = /dev/infiniband/umad1
+		 ...
+
+232-239		UNASSIGNED
 
 240-254 char	LOCAL/EXPERIMENTAL USE
 240-254 block	LOCAL/EXPERIMENTAL USE
diff -urN malta/linux/Documentation/digiepca.txt malta/linux/Documentation/digiepca.txt
--- malta/linux/Documentation/digiepca.txt	2004/09/14 16:27:37	1.4.1000.1
+++ malta/linux/Documentation/digiepca.txt	2005/06/21 13:20:28	1.4.1000.2
@@ -1,3 +1,11 @@
+NOTE:  This driver is obsolete.  Digi provides a 2.6 driver (dgdm) at
+http://www.digi.com for PCI cards.  They no longer maintain this driver,
+and have no 2.6 driver for ISA cards.
+
+This driver requires a number of user-space tools.  They can be aquired from
+http://www.digi.com, but only works with 2.4 kernels.
+
+
 The Digi Intl. epca driver. 
 ----------------------------
 The Digi Intl. epca driver for Linux supports the following boards:
@@ -64,9 +72,6 @@
 this driver REQUIRES that digiDload be executed prior to it being used. 
 Failure to do this will result in an ENODEV error.
 
-The latest version of the tool package is available at:
-ftp://ftp.dgii.com/drivers/linux/released/async/
-
 Documentation:
 --------------
 Complete documentation for this product may be found in the tool package. 
@@ -74,14 +79,8 @@
 Sources of information and support:
 -----------------------------------
 Digi Intl. support site for this product:
--> digilnux@dgii.com 
 
-Related information and information concerning other drivers supporting 
-Digi Intl. products:
-
--> FTP: ftp://dgii.com
--> Webpage: http://www.dgii.com
--> Webpage: http://lameter.com/digi
+->  http://www.digi.com
 
 Acknowledgments:
 ----------------
@@ -90,3 +89,10 @@
 1994,1995 Troy De Jongh.  Many thanks to Christoph Lameter 
 (christoph@lameter.com) and Mike McLagan (mike.mclagan@linux.org) who authored 
 and contributed to the original document. 
+
+Changelog:
+----------
+10-29-04:	Update status of driver, remove dead links in document
+		James Nelson <james4765@gmail.com>
+
+2000 (?)	Original Document
diff -urN malta/linux/Documentation/dnotify.txt malta/linux/Documentation/dnotify.txt
--- malta/linux/Documentation/dnotify.txt	2003/08/26 00:28:49	1.4
+++ malta/linux/Documentation/dnotify.txt	2005/06/21 13:20:28	1.4.1000.1
@@ -54,6 +54,12 @@
 Also, files that are unlinked, will still cause notifications in the
 last directory that they were linked to.
 
+Configuration
+-------------
+
+Dnotify is controlled via the CONFIG_DNOTIFY configuration option.  When
+disabled, fcntl(fd, F_NOTIFY, ...) will return -EINVAL.
+
 Example
 -------
 
diff -urN malta/linux/Documentation/floppy.txt malta/linux/Documentation/floppy.txt
--- malta/linux/Documentation/floppy.txt	2000/08/08 12:37:17	1.3
+++ malta/linux/Documentation/floppy.txt	2005/06/21 13:20:28	1.3.1000.1
@@ -13,15 +13,20 @@
  The floppy driver is configured using the 'floppy=' option in
 lilo. This option can be typed at the boot prompt, or entered in the
 lilo configuration file.
- Example: If your kernel is called linux-2.2.13, type the following line
+
+ Example: If your kernel is called linux-2.6.9, type the following line
 at the lilo boot prompt (if you have a thinkpad):
- linux-2.2.13 floppy=thinkpad
+
+ linux-2.6.9 floppy=thinkpad
+
 You may also enter the following line in /etc/lilo.conf, in the description
-of linux-2.2.13:
+of linux-2.6.9:
+
  append = "floppy=thinkpad"
 
  Several floppy related options may be given, example:
- linux-2.2.13 floppy=daring floppy=two_fdc
+
+ linux-2.6.9 floppy=daring floppy=two_fdc
  append = "floppy=daring floppy=two_fdc"
 
  If you give options both in the lilo config file and on the boot
@@ -29,17 +34,25 @@
 prompt options coming last. That's why there are also options to
 restore the default behavior.
 
+
+Module configuration options
+============================
+
  If you use the floppy driver as a module, use the following syntax:
- insmod floppy <options>
+modprobe floppy <options>
 
 Example:
- insmod floppy daring two_fdc
+ modprobe floppy omnibook messages
+
+ If you need certain options enabled every time you load the floppy driver,
+you can put:
+
+ options floppy omnibook messages
 
- Some versions of insmod are buggy in one way or another. If you have
-any problems (options not being passed correctly, segfaults during
-insmod), first check whether there is a more recent version.
+in /etc/modprobe.conf.
 
- The floppy related options include:
+
+ The floppy driver related options are:
 
  floppy=asus_pci
 	Sets the bit mask to allow only units 0 and 1. (default)
@@ -99,7 +112,7 @@
 	master arbitration error" messages from your Ethernet card (or
 	from other devices) while accessing the floppy.
 
- floppy=fifo
+ floppy=usefifo
 	Enables the FIFO. (default)
 
  floppy=<threshold>,fifo_depth
@@ -110,6 +123,7 @@
 	lower, the interrupt latency should be lower too (faster
 	processor). The benefit of a lower threshold is less
 	interrupts.
+
 	To tune the fifo threshold, switch on over/underrun messages
 	using 'floppycontrol --messages'. Then access a floppy
 	disk. If you get a huge amount of "Over/Underrun - retrying"
@@ -120,6 +134,7 @@
 	fifo values without rebooting the machine for each test. Note
 	that you need to do 'floppycontrol --messages' every time you
 	re-insert the module.
+
 	Usually, tuning the fifo threshold should not be needed, as
 	the default (0xa) is reasonable.
 
@@ -128,6 +143,7 @@
 	you have more than two floppy drives (only two can be
 	described in the physical CMOS), or if your BIOS uses
 	non-standard CMOS types. The CMOS types are:
+
 		0 - Use the value of the physical CMOS
 		1 - 5 1/4 DD
 		2 - 5 1/4 HD
@@ -136,6 +152,7 @@
 		5 - 3 1/2 ED
 		6 - 3 1/2 ED
 	       16 - unknown or not installed
+
 	(Note: there are two valid types for ED drives. This is because 5 was
 	initially chosen to represent floppy *tapes*, and 6 for ED drives.
 	AMI ignored this, and used 5 for ED drives. That's why the floppy
@@ -188,7 +205,6 @@
 	   in some more extreme cases."
 
 
-
 Supporting utilities and additional documentation:
 ==================================================
 
@@ -219,3 +235,11 @@
  Be sure to read the FAQ before mailing/posting any bug reports!
 
  Alain
+
+Changelog
+=========
+
+10-30-2004 :	Cleanup, updating, add reference to module configuration.
+		James Nelson <james4765@gmail.com>
+
+6-3-2000 :	Original Document
diff -urN malta/linux/Documentation/ftape.txt malta/linux/Documentation/ftape.txt
--- malta/linux/Documentation/ftape.txt	2004/03/11 16:46:39	1.7
+++ malta/linux/Documentation/ftape.txt	2005/06/21 13:20:28	1.7.1000.1
@@ -2,26 +2,21 @@
 =====
 
 This file describes some issues involved when using the "ftape"
-floppy tape device driver that comes with the Linux kernel. This
-document deals with ftape-3.04 and later. Please read the section
-"Changes" for the most striking differences between version 3.04 and
-2.08; the latter was the version of ftape delivered with the kernel
-until kernel version 2.0.30 and 2.1.57. ftape-3.x developed as the
-re-unification of ftape-2.x and zftape. zftape was developed in
-parallel with the stock ftape-2.x driver sharing the same hardware
-support but providing an enhanced file system interface. zftape also
-provided user transparent block-wise on-the-fly compression (regard it
-as a feature or bug of zftape).
+floppy tape device driver that comes with the Linux kernel.
 
 ftape has a home page at
 
-http://www-math.math.rwth-aachen.de/~LBFM/claus/ftape
+http://ftape.dot-heine.de/
 
 which contains further information about ftape. Please cross check
 this WWW address against the address given (if any) in the MAINTAINERS
 file located in the top level directory of the Linux kernel source
 tree.
 
+NOTE: This is an unmaintained set of drivers, and it is not guaranteed to work.
+If you are interested in taking over maintenance, contact Claus-Justus Heine
+<ch@dot-heine.de>, the former maintainer.
+
 Contents
 ========
 
@@ -31,9 +26,8 @@
    1. Goal
    2. I/O Block Size
    3. Write Access when not at EOD (End Of Data) or BOT (Begin Of Tape)
-   4. MTBSF - backspace over file mark and position at its EOT side
-   5. Formatting
-   6. Interchanging cartridges with other operating systems
+   4. Formatting
+   5. Interchanging cartridges with other operating systems
 
 B. Debugging Output
    1. Introduction
@@ -58,7 +52,7 @@
 versions of ftape and useful links to related topics can be found at
 the ftape home page at
 
-http://www-math.math.rwth-aachen.de/~LBFM/claus/ftape
+http://ftape.dot-heine.de/
 
 *******************************************************************************
 
@@ -70,7 +64,7 @@
    The goal of all that incompatibilities was to give ftape an interface
    that resembles the interface provided by SCSI tape drives as close
    as possible. Thus any Unix backup program that is known to work
-   with SCSI tape drives should also work with ftape-3.04 and above.
+   with SCSI tape drives should also work.
 
    The concept of a fixed block size for read/write transfers is
    rather unrelated to this SCSI tape compatibility at the file system
@@ -81,14 +75,8 @@
 
 2. I/O Block Size
    ~~~~~~~~~~~~~~
-   The probably most striking difference between ftape-2.x and
-   ftape-3.x with the zftape file system interface is the concept of a
-   fixed block size: data must be written to or read from the tape in
-   multiples of a fixed block size. The block size defaults to 10k
-   which is the default block size of GNU tar. While this is quite
-   usual for SCSI tapes (block size of 32k?) and the QIC-150 driver
-   `./drivers/char/tpqic02.c' ftape-2.x allowed data to be written in
-   arbitrary portions to the tape.
+   The block size defaults to 10k which is the default block size of
+   GNU tar.
 
    The block size can be tuned either during kernel configuration or
    at runtime with the MTIOCTOP ioctl using the MTSETBLK operation
@@ -109,53 +97,41 @@
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    zftape (the file system interface of ftape-3.x) denies write access
    to the tape cartridge when it isn't positioned either at BOT or
-   EOD. This inconvenience has been introduced as it was reported that
-   the former behavior of ftape-2.x which allowed write access at
-   arbitrary locations already has caused data loss with some backup
-   programs.
-
-4. MTBSF - backspace over file mark and position at its EOT side
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-   ftape-2.x didn't handle the MTBSF tape operation correctly. A MTBSF
-   call (i.e. "mt -f /dev/nqft0 bsf #COUNT") should space over #COUNT
-   file marks and then position at the EOT tape side of the file
-   mark. This has to be taken literally, i.e. "mt -f /dev/nqft0 bsf 1"
-   should simply position at the start of the current volume.
+   EOD.
 
-5. Formatting
+4. Formatting
    ~~~~~~~~~~
-   ftape-3.x DOES support formatting of floppy tape cartridges. You
-   need the `ftformat' program that is shipped with the modules version
-   of ftape-3.x. Please get the latest version of ftape from
+   ftape DOES support formatting of floppy tape cartridges. You need the
+   `ftformat' program that is shipped with the modules version of ftape.
+   Please get the latest version of ftape from
 
    ftp://sunsite.unc.edu/pub/Linux/kernel/tapes
 
    or from the ftape home page at
 
-   http://www-math.math.rwth-aachen.de/~LBFM/claus/ftape
+   http://ftape.dot-heine.de/
 
    `ftformat' is contained in the `./contrib/' subdirectory of that
    separate ftape package.
 
-6. Interchanging cartridges with other operating systems
+5. Interchanging cartridges with other operating systems
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
    The internal emulation of Unix tape device file marks has changed
-   completely. ftape-3.x now uses the volume table segment as specified
+   completely. ftape now uses the volume table segment as specified
    by the QIC-40/80/3010/3020/113 standards to emulate file marks. As
    a consequence there is limited support to interchange cartridges
    with other operating systems.
 
    To be more precise: ftape will detect volumes written by other OS's
    programs and other OS's programs will detect volumes written by
-   ftape-3.x.
+   ftape.
 
    However, it isn't possible to extract the data dumped to the tape
-   by some MSDOG program with ftape-3.x. This exceeds the scope of a
+   by some MSDOS program with ftape. This exceeds the scope of a
    kernel device driver. If you need such functionality, then go ahead
-   and write a user space utility that is able to do
-   that. ftape-3.x/zftape already provides all kernel level support
-   necessary to do that.
+   and write a user space utility that is able to do that. ftape already
+   provides all kernel level support necessary to do that.
 
 *******************************************************************************
 
@@ -200,7 +176,7 @@
 
    ii) trim the debugging output at module load time with
 
-       insmod ftape.o ft_tracing=#DBGLVL
+       modprobe ftape ft_tracing=#DBGLVL
 
        Of course, this applies only if you have configured ftape to be
        compiled as a module.
@@ -240,7 +216,7 @@
 2. Module load time parameters
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Module parameters can be specified either directly when invoking
-   the program 'insmod' at the shell prompt:
+   the program 'modprobe' at the shell prompt:
 
    modprobe ftape ft_tracing=4
 
@@ -277,6 +253,12 @@
 	line documentation provided during that kernel configuration
 	process.
 
+	ft_probe_fc10 is set to a non-zero value if you wish for ftape to
+	probe for a Colorado FC-10 or FC-20 controller.
+
+	ft_mach2 is set to a non-zero value if you wish for ftape to probe
+	for a Mountain MACH-2 controller.
+
         module                 |  kernel command line
         -----------------------|----------------------
         ft_fdc_base=BASE       |  ftape=BASE,ioport
@@ -316,10 +298,10 @@
    page to query for the most recent documentation, related work and
    development versions of ftape.
 
+   Changelog:
+   ==========
+
+~1996:		Original Document
 
- LocalWords:  ftape Linux zftape http www rwth aachen LBFM claus EOD config
- LocalWords:  datarate LocalWords BOT MTBSF EOT HOWTO QIC tpqic menuconfig
- LocalWords:  MTIOCTOP MTSETBLK mt dev qft setblk BLKSZ bsf zftape's xconfig
- LocalWords:  nqft ftformat ftp sunsite unc edu contrib ft MSDOG fdc
- LocalWords:  dma setdensity DBGLVL insmod lilo LI nux ader conf txt
- LocalWords:  modprobe IRQ BOOL ioport irq fc mach THR
+10-24-2004:	General cleanup and updating, noting additional module options.
+		James Nelson <james4765@gmail.com>
diff -urN malta/linux/Documentation/hw_random.txt malta/linux/Documentation/hw_random.txt
--- malta/linux/Documentation/hw_random.txt	2003/08/26 00:28:49	1.2
+++ malta/linux/Documentation/hw_random.txt	2005/06/21 13:20:29	1.2.1000.1
@@ -67,72 +67,3 @@
 
 	Special thanks to Matt Sottek.  I did the "guts", he
 	did the "brains" and all the testing.
-
-Change history:
-
-	Version 1.0.0:
-	* Merge Intel, AMD, VIA RNG drivers into one.
-	  Further changelog in BitKeeper.
-
-	Version 0.9.8:
-	* Support other i8xx chipsets by adding 82801E detection
-	* 82801DB detection is the same as for 82801CA.
-
-	Version 0.9.7:
-	* Support other i8xx chipsets too (by adding 82801BA(M) and
-	  82801CA(M) detection)
-
-	Version 0.9.6:
-	* Internal driver cleanups, prep for 1.0.0 release.
-
-	Version 0.9.5:
-	* Rip out entropy injection via timer.  It never ever worked,
-	  and a better solution (rngd) is now available.
-
-	Version 0.9.4:
-	* Fix: Remove request_mem_region
-	* Fix: Horrible bugs in FIPS calculation and test execution
-
-	Version 0.9.3:
-	* Clean up rng_read a bit.
-	* Update i810_rng driver Web site URL.
-	* Increase default timer interval to 4 samples per second.
-	* Abort if mem region is not available.
-	* BSS zero-initialization cleanup.
-	* Call misc_register() from rng_init_one.
-	* Fix O_NONBLOCK to occur before we schedule.
-
-	Version 0.9.2:
-	* Simplify open blocking logic
-
-	Version 0.9.1:
-	* Support i815 chipsets too (Matt Sottek)
-	* Fix reference counting when statically compiled (prumpf)
-	* Rewrite rng_dev_read (prumpf)
-	* Make module races less likely (prumpf)
-	* Small miscellaneous bug fixes (prumpf)
-	* Use pci table for PCI id list
-
-	Version 0.9.0:
-	* Don't register a pci_driver, because we are really
-	  using PCI bridge vendor/device ids, and someone
-	  may want to register a driver for the bridge. (bug fix)
-	* Don't let the usage count go negative (bug fix)
-	* Clean up spinlocks (bug fix)
-	* Enable PCI device, if necessary (bug fix)
-	* iounmap on module unload (bug fix)
-	* If RNG chrdev is already in use when open(2) is called,
-	  sleep until it is available.
-	* Remove redundant globals rng_allocated, rng_use_count
-	* Convert numeric globals to unsigned
-	* Module unload cleanup
-
-	Version 0.6.2:
-	* Clean up spinlocks.  Since we don't have any interrupts
-	  to worry about, but we do have a timer to worry about,
-	  we use spin_lock_bh everywhere except the timer function
-	  itself.
-	* Fix module load/unload.
-	* Fix timer function and h/w enable/disable logic
-	* New timer interval sysctl
-	* Clean up sysctl names
diff -urN malta/linux/Documentation/ide.txt malta/linux/Documentation/ide.txt
--- malta/linux/Documentation/ide.txt	2004/09/14 16:27:37	1.19.1000.2
+++ malta/linux/Documentation/ide.txt	2005/06/21 13:20:29	1.19.1000.3
@@ -248,13 +248,6 @@
  			  allowing ide-floppy, ide-tape, and ide-cdrom|writers
  			  to use ide-scsi emulation on a device specific option.
 
- "hdx=stroke"		: Should you have a system w/ an AWARD Bios and your
-			  drives are larger than 32GB and it will not boot,
-			  one is required to perform a few OEM operations first.
-			  The option is called "stroke" because it allows one
-			  to "soft clip" the drive to work around a barrier
-			  limit.
-
  "idebus=xx"		: inform IDE driver of VESA/PCI bus speed in MHz,
 			  where "xx" is between 20 and 66 inclusive,
 			  used when tuning chipset PIO modes.
@@ -304,7 +297,9 @@
 
  "ide=reverse"		: formerly called to pci sub-system, but now local.
 
-The following are valid ONLY on ide0 (except dc4030), which usually corresponds
+ "ide=nodma"		: disable DMA globally for the IDE subsystem.
+
+The following are valid ONLY on ide0, which usually corresponds
 to the first ATA interface found on the particular host, and the defaults for
 the base,ctl ports must not be altered.
 
@@ -315,7 +310,7 @@
  "ide0=qd65xx"		: probe/support qd65xx interface
  "ide0=ali14xx"		: probe/support ali14xx chipsets (ALI M1439/M1443/M1445)
  "ide0=umc8672"		: probe/support umc8672 chipsets
- "idex=dc4030"		: probe/support Promise DC4030VL interface
+
  "ide=doubler"		: probe/support IDE doublers on Amiga
 
 There may be more options than shown -- use the source, Luke!
diff -urN malta/linux/Documentation/ioctl-number.txt malta/linux/Documentation/ioctl-number.txt
--- malta/linux/Documentation/ioctl-number.txt	2004/09/14 16:27:37	1.28.1000.1
+++ malta/linux/Documentation/ioctl-number.txt	2005/06/21 13:20:29	1.28.1000.2
@@ -72,6 +72,7 @@
 0x09	all	linux/md.h
 0x12	all	linux/fs.h
 		linux/blkpg.h
+0x1b	all	InfiniBand Subsystem	<http://www.openib.org/>
 0x20	all	drivers/cdrom/cm206.h
 0x22	all	scsi/sg.h
 '#'	00-3F	IEEE 1394 Subsystem	Block for the entire subsystem
@@ -117,6 +118,7 @@
 					<mailto:natalia@nikhefk.nikhef.nl>
 'c'	00-7F	linux/comstats.h	conflict!
 'c'	00-7F	linux/coda.h		conflict!
+'d'	00-FF	linux/char/drm/drm/h	conflict!
 'd'	00-1F	linux/devfs_fs.h	conflict!
 'd'	00-DF	linux/video_decoder.h	conflict!
 'd'	F0-FF	linux/digi1.h
@@ -144,7 +146,7 @@
 'p'	40-7F	linux/nvram.h
 'p'	80-9F				user-space parport
 					<mailto:tim@cyberelk.net>
-'q'	00-1F	linux/videotext.h	conflict!
+'q'	00-1F	linux/serio.h
 'q'	80-FF				Internet PhoneJACK, Internet LineJACK
 					<http://www.quicknet.net>
 'r'	00-1F	linux/msdos_fs.h
@@ -162,6 +164,7 @@
 'z'	40-7F				CAN bus card
 					<mailto:oe@port.de>
 0x80	00-1F	linux/fb.h
+0x81	00-1F	linux/videotext.h
 0x89	00-06	asm-i386/sockios.h
 0x89	0B-DF	linux/sockios.h
 0x89	E0-EF	linux/sockios.h		SIOCPROTOPRIVATE range
diff -urN malta/linux/Documentation/kernel-docs.txt malta/linux/Documentation/kernel-docs.txt
--- malta/linux/Documentation/kernel-docs.txt	2004/05/12 17:14:19	1.10.1000.1
+++ malta/linux/Documentation/kernel-docs.txt	2005/06/21 13:20:29	1.10.1000.2
@@ -39,6 +39,13 @@
    
      ON-LINE DOCS:
        
+     * Title: "Linux Device Drivers, Third Edition"
+       Author: Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
+       URL: http://lwn.net/Kernel/LDD3/
+       Description: A 600-page book covering the (2.6.10) driver
+       programming API and kernel hacking in general.  Available under the
+       Creative Commons Attribution-ShareAlike 2.0 license.
+
      * Title: "The Linux Kernel"
        Author: David A. Rusling.
        URL: http://www.tldp.org/LDP/tlk/tlk.html
diff -urN malta/linux/Documentation/kernel-parameters.txt malta/linux/Documentation/kernel-parameters.txt
--- malta/linux/Documentation/kernel-parameters.txt	2004/09/14 16:27:37	1.39.1000.2
+++ malta/linux/Documentation/kernel-parameters.txt	2005/06/21 13:20:29	1.39.1000.3
@@ -29,6 +29,7 @@
 	CD	Appropriate CD support is enabled.
 	DEVFS	devfs support is enabled. 
 	DRM	Direct Rendering Management support is enabled. 
+	EDD	BIOS Enhanced Disk Drive Services (EDD) is enabled
 	EFI	EFI Partitioning (GPT) is enabled
 	EIDE	EIDE/ATAPI support is enabled.
 	FB	The frame buffer device is enabled.
@@ -50,9 +51,11 @@
 	MOUSE	Appropriate mouse support is enabled.
 	MTD	MTD support is enabled.
 	NET	Appropriate network support is enabled.
+	NUMA	NUMA support is enabled.
 	NFS	Appropriate NFS support is enabled.
 	OSS	OSS sound support is enabled.
 	PARIDE	The ParIDE subsystem is enabled.
+	PARISC	The PA-RISC architecture is enabled.
 	PCI	PCI bus support is enabled.
 	PCMCIA	The PCMCIA subsystem is enabled.
 	PNP	Plug & Play support is enabled.
@@ -64,17 +67,22 @@
 	SCSI	Appropriate SCSI support is enabled.
 			A lot of drivers has their options described inside of
 			Documentation/scsi/.
+	SELINUX SELinux support is enabled.
 	SERIAL	Serial support is enabled.
 	SMP	The kernel is an SMP kernel.
 	SPARC	Sparc architecture is enabled.
 	SWSUSP	Software suspension is enabled.
 	TS	Appropriate touchscreen support is enabled.
 	USB	USB support is enabled.
+	USBHID	USB Human Interface Device support is enabled.
 	V4L	Video For Linux support is enabled.
 	VGA	The VGA console has been enabled.
 	VT	Virtual terminal support is enabled.
 	WDT	Watchdog support is enabled.
 	XT	IBM PC/XT MFM hard disk support is enabled.
+	X86-64	X86-64 architecture is enabled.
+			More X86-64 boot options can be found in
+			Documentation/x86_64/boot-options.txt .
 
 In addition, the following text indicates that the option:
 
@@ -97,9 +105,6 @@
 			See header of drivers/scsi/53c7xx.c.
 			See also Documentation/scsi/ncr53c7xx.txt.
 
-	98busmouse.irq=	[HW,MOUSE] PC-9801 Bus Mouse Driver
-			Format: <irq>, default is 13
-
 	acpi=		[HW,ACPI] Advanced Configuration and Power Interface 
 			Format: { force | off | ht | strict }
 			force -- enable ACPI if default was off
@@ -138,6 +143,22 @@
 			Recognize and ignore IRQ0/pin2 Interrupt Override.
 			For broken nForce2 BIOS resulting in XT-PIC timer.
 
+	acpi_dbg_layer=	[HW,ACPI]
+			Format: <int>
+			Each bit of the <int> indicates an acpi debug layer,
+			1: enable, 0: disable. It is useful for boot time
+			debugging. After system has booted up, it can be set
+			via /proc/acpi/debug_layer.
+
+	acpi_dbg_level=	[HW,ACPI]
+			Format: <int>
+			Each bit of the <int> indicates an acpi debug level,
+			1: enable, 0: disable. It is useful for boot time
+			debugging. After system has booted up, it can be set
+			via /proc/acpi/debug_level.
+
+	acpi_fake_ecdt	[HW,ACPI] Workaround failure due to BIOS lacking ECDT
+
 	ad1816=		[HW,OSS]
 			Format: <io>,<irq>,<dma>,<dma2>
 			See also Documentation/sound/oss/AD1816.
@@ -210,15 +231,19 @@
 
 	atascsi=	[HW,SCSI] Atari SCSI
 
-	atkbd.extra=	[HW] Enable extra LEDs and keys on IBM RapidAccess, EzKey
-			and similar keyboards
+	atkbd.extra=	[HW] Enable extra LEDs and keys on IBM RapidAccess,
+			EzKey and similar keyboards
 
 	atkbd.reset=	[HW] Reset keyboard during initialization
 
 	atkbd.set=	[HW] Select keyboard code set 
 			Format: <int> (2 = AT (default) 3 = PS/2)
 
-	atkbd.scroll=	[HW] Enable scroll wheel on MS Office and similar keyboards
+	atkbd.scroll=	[HW] Enable scroll wheel on MS Office and similar
+			keyboards
+
+	atkbd.softraw=	[HW] Choose between synthetic and real raw mode
+			Format: <bool> (0 = real, 1 = synthetic (default))
 	
 	atkbd.softrepeat=
 			[HW] Use software keyboard repeat
@@ -275,6 +300,14 @@
 			See header of drivers/cdrom/cdu31a.c.
 
 	chandev=	[HW,NET] Generic channel device initialisation
+
+	checkreqprot	[SELINUX] Set initial checkreqprot flag value.
+			Format: { "0" | "1" }
+			See security/selinux/Kconfig help text.
+			0 -- check protection applied by kernel (includes any implied execute protection).
+			1 -- check protection requested by application.
+			Default value is set via a kernel config option.
+			Value can be changed at runtime via /selinux/checkreqprot.
  
  	clock=		[BUGS=IA-32, HW] gettimeofday timesource override. 
 			Forces specified timesource (if avaliable) to be used
@@ -300,8 +333,24 @@
 	condev=		[HW,S390] console device
 	conmode=
  
-	console=	[KNL] Output console
-			Console device and comm spec (speed, control, parity).
+	console=	[KNL] Output console device and options.
+
+		tty<n>	Use the virtual console device <n>.
+
+		ttyS<n>[,options]
+			Use the specified serial port.  The options are of
+			the form "bbbbpn", where "bbbb" is the baud rate,
+			"p" is parity ("n", "o", or "e"), and "n" is bits.
+			Default is "9600n8".
+
+			See also Documentation/serial-console.txt.
+
+		uart,io,<addr>[,options]
+		uart,mmio,<addr>[,options]
+			Start an early, polled-mode console on the 8250/16550
+			UART at the specified I/O port or MMIO address,
+			switching to the matching ttyS device later.  The
+			options are the same as for ttyS, above.
 
 	cpcihp_generic=	[HW,PCI] Generic port I/O CompactPCI driver
 			Format: <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>]
@@ -357,7 +406,7 @@
 
 	dtc3181e=	[HW,SCSI]
 
-	earlyprintk=	[x86, x86_64]
+	earlyprintk=	[IA-32, X86-64]
 			earlyprintk=vga
 			earlyprintk=serial[,ttySn[,baudrate]]
 
@@ -380,10 +429,14 @@
 
 	edb=		[HW,PS2]
 
+	edd=		[EDD]
+			Format: {"of[f]" | "sk[ipmbr]"}
+			See comment in arch/i386/boot/edd.S
+
 	eicon=		[HW,ISDN] 
 			Format: <id>,<membase>,<irq>
 
-	eisa_irq_edge=	[PARISC]
+	eisa_irq_edge=	[PARISC,HW]
 			See header of drivers/parisc/eisa.c.
 
 	elanfreq=	[IA-32]
@@ -392,7 +445,16 @@
 
 	elevator=	[IOSCHED]
 			Format: {"as"|"cfq"|"deadline"|"noop"}
-			See Documentation/as-iosched.txt for details
+			See Documentation/block/as-iosched.txt
+			and Documentation/block/deadline-iosched.txt for details.
+
+	enforcing	[SELINUX] Set initial enforcing status.
+			Format: {"0" | "1"}
+			See security/selinux/Kconfig help text.
+			0 -- permissive (log only, no denials).
+			1 -- enforcing (deny and log).
+			Default value is 0.
+			Value can be changed at runtime via /selinux/enforce.
 
 	es1370=		[HW,OSS]
 			Format: <lineout>[,<micbias>]
@@ -445,6 +507,10 @@
  
 	gvp11=		[HW,SCSI]
 
+	hashdist=	[KNL,NUMA] Large hashes allocated during boot
+			are distributed across NUMA nodes.  Defaults on
+			for IA-64, off otherwise.
+
 	hcl=		[IA-64] SGI's Hardware Graph compatibility layer
 
 	hd=		[EIDE] (E)IDE hard drive subsystem geometry
@@ -453,6 +519,11 @@
 	hd?=		[HW] (E)IDE subsystem
 	hd?lun=		See Documentation/ide.txt.
 
+	highmem=nn[KMG]	[KNL,BOOT] forces the highmem zone to have an exact
+			size of <nn>. This works even on boxes that have no
+			highmem otherwise. This also works to reduce highmem
+			size on bigger boxes.
+
 	hisax=		[HW,ISDN]
 			See Documentation/isdn/README.HiSax.
 
@@ -467,21 +538,36 @@
 	i8042.noaux	[HW] Don't check for auxiliary (== mouse) port
 	i8042.nomux	[HW] Don't check presence of an active multiplexing
 			     controller
+	i8042.nopnp	[HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX
+			     controllers
+	i8042.panicblink=
+			[HW] Frequency with which keyboard LEDs should blink
+			     when kernel panics (default is 0.5 sec)
 	i8042.reset	[HW] Reset the controller during init and cleanup
 	i8042.unlock	[HW] Unlock (ignore) the keylock
 
 	i810=		[HW,DRM]
 
+	i8k.force	[HW] Activate i8k driver even if SMM BIOS signature
+			does not match list of supported models.
+	i8k.power_status
+			[HW] Report power status in /proc/i8k
+			(disabled by default)
+	i8k.restricted	[HW] Allow controlling fans only if SYS_ADMIN
+			capability is set.
+
 	ibmmcascsi=	[HW,MCA,SCSI] IBM MicroChannel SCSI adapter
 			See Documentation/mca.txt.
 
 	icn=		[HW,ISDN]
 			Format: <io>[,<membase>[,<icn_id>[,<icn_id2>]]]
 
+	ide=		[HW] (E)IDE subsystem
+			Format: ide=nodma or ide=doubler or ide=reverse
+			See Documentation/ide.txt.
+
 	ide?=		[HW] (E)IDE subsystem
-			Config (iomem/irq), tuning or debugging
-			(serialize,reset,no{dma,tune,probe}) or chipset
-			specific parameters.
+			Format: ide?=noprobe or chipset specific parameters.
 			See Documentation/ide.txt.
 	
 	idebus=		[HW] (E)IDE subsystem - VLB/PCI bus speed
@@ -528,6 +614,20 @@
 	isapnp=		[ISAPNP]
 			Format: <RDP>, <reset>, <pci_scan>, <verbosity>
 
+	isolcpus=	[KNL,SMP] Isolate CPUs from the general scheduler.
+			Format: <cpu number>,...,<cpu number>
+			This option can be used to specify one or more CPUs
+			to isolate from the general SMP balancing and scheduling
+			algorithms. The only way to move a process onto or off
+			an "isolated" CPU is via the CPU affinity syscalls.
+			<cpu number> begins at 0 and the maximum value is
+			"number of CPUs in system - 1".
+
+			This option is the preferred way to isolate CPUs. The
+			alternative - manually setting the CPU mask of all tasks
+			in the system can cause problems and suboptimal load
+			balancer performance.
+
 	isp16=		[HW,CD]
 			Format: <io>,<irq>,<dma>,<setup>
 
@@ -538,6 +638,9 @@
 
 	keepinitrd	[HW,ARM]
 
+	kstack=N	[IA-32, X86-64] Print N words from the kernel stack
+			in oops dumps.
+
 	l2cr=		[PPC]
 
 	lapic		[IA-32,APIC] Enable the local APIC even if BIOS disabled it.
@@ -558,6 +661,20 @@
 	logibm.irq=	[HW,MOUSE] Logitech Bus Mouse Driver
 			Format: <irq>
 
+	loglevel=	All Kernel Messages with a loglevel smaller than the
+			console loglevel will be printed to the console. It can
+			also be changed with klogd or other programs. The
+			loglevels are defined as follows:
+
+			0 (KERN_EMERG)		system is unusable
+			1 (KERN_ALERT)		action must be taken immediately
+			2 (KERN_CRIT)		critical conditions
+			3 (KERN_ERR)		error conditions
+			4 (KERN_WARNING)	warning conditions
+			5 (KERN_NOTICE)		normal but significant condition
+			6 (KERN_INFO)		informational
+			7 (KERN_DEBUG)		debug-level messages
+
 	log_buf_len=n	Sets the size of the printk ring buffer, in bytes.
 			Format is n, nk, nM.  n must be a power of two.  The
 			default is set in kernel config.
@@ -579,6 +696,20 @@
 				so, the driver will manage that printer.
 				See also header of drivers/char/lp.c.
 
+	lpj=n		[KNL]
+			Sets loops_per_jiffy to given constant, thus avoiding
+			time-consuming boot-time autodetection (up to 250 ms per
+			CPU). 0 enables autodetection (default). To determine
+			the correct value for your kernel, boot with normal
+			autodetection and see what value is printed. Note that
+			on SMP systems the preset will be applied to all CPUs,
+			which is likely to cause problems if your CPUs need
+			significantly divergent settings. An incorrect value
+			will cause delays in the kernel to be wrong, leading to
+			unpredictable I/O errors and other breakage. Although
+			unlikely, in the extreme case this might damage your
+			hardware.
+
 	ltpc=		[NET]
 			Format: <io>,<irq>,<dma>
 
@@ -587,7 +718,11 @@
 
 	mac53c9x=	[HW,SCSI]
 			Format: <num_esps>,<disconnect>,<nosync>,<can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags>
-	
+
+	machvec=	[IA64]
+			Force the use of a particular machine-vector (machvec) in a generic
+			kernel.  Example: machvec=hpzx1_swiotlb
+
 	mad16=		[HW,OSS]
 			Format: <io>,<irq>,<dma>,<dma16>,<mpu_io>,<mpu_irq>,<joystick>
 
@@ -601,9 +736,10 @@
 	maxcpus=	[SMP] Maximum number of processors that	an SMP kernel
 			should make use of
 
-	max_scsi_luns=	[SCSI]
+	max_luns=	[SCSI] Maximum number of LUNs to probe
+			Should be between 1 and 2^32-1.
 
-	max_scsi_report_luns=
+	max_report_luns=
 			[SCSI] Maximum number of LUNs received
 			Should be between 1 and 16384.
 
@@ -628,6 +764,9 @@
 	mem=nn[KMG]	[KNL,BOOT] Force usage of a specific amount of memory
 			Amount of memory to be used when the kernel is not able
 			to see the whole system memory or for test.
+			[IA-32] Use together with memmap= to avoid physical
+			address space collisions. Without memmap= PCI devices
+			could be placed at addresses belonging to unused RAM.
 
 	mem=nopentium	[BUGS=IA-32] Disable usage of 4MB pages for kernel
 			memory.
@@ -650,11 +789,17 @@
 			[KNL,ACPI] Mark specific memory as reserved.
 			Region of memory to be used, from ss to ss+nn.
 
-	meye=		[HW] Set MotionEye Camera parameters
+	meye.*=		[HW] Set MotionEye Camera parameters
 			See Documentation/video4linux/meye.txt.
 
 	mga=		[HW,DRM]
 
+	mousedev.tap_time=
+			[MOUSE] Maximum time between finger touching and
+			leaving touchpad surface for touch to be considered
+			a tap and be reported as a left button click (for
+			touchpads working in absolute mode only).
+			Format: <msecs>
 	mousedev.xres=	[MOUSE] Horizontal screen resolution, used for devices
 			reporting absolute coordinates, such as tablets
 	mousedev.yres=	[MOUSE] Vertical screen resolution, used for devices
@@ -672,6 +817,10 @@
 	mtdparts=	[MTD]
 			See drivers/mtd/cmdline.c.
 
+	mtouchusb.raw_coordinates=
+			[HW] Make the MicroTouch USB driver use raw coordinates ('y', default)
+			or cooked coordinates ('n')
+
 	n2=		[NET] SDL Inc. RISCom/N2 synchronous serial card
 
 	NCR_D700=	[HW,SCSI]
@@ -706,8 +855,8 @@
 
 	noalign		[KNL,ARM] 
  
-	noapic		[SMP,APIC] Tells the kernel not to make use of any
-			APIC that may be present on the system.
+	noapic		[SMP,APIC] Tells the kernel to not make use of any
+			IOAPICs that may be present in the system.
 
 	noasync		[HW,M68K] Disables async and sync negotiation for
 			all devices.
@@ -721,20 +870,25 @@
 
 	noexec		[IA-64]
 
-	noexec		[i386]
+	noexec		[IA-32, X86-64]
 			noexec=on: enable non-executable mappings (default)
 			noexec=off: disable nn-executable mappings
 
 	nofxsr		[BUGS=IA-32]
 
-	nohighio	[BUGS=IA-32] Disable highmem block I/O.
-
 	nohlt		[BUGS=ARM]
  
 	no-hlt		[BUGS=IA-32] Tells the kernel that the hlt
 			instruction doesn't work correctly and not to
 			use it.
 
+	nohalt		[IA-64] Tells the kernel not to use the power saving
+			function PAL_HALT_LIGHT when idle. This increases
+			power-consumption. On the positive side, it reduces
+			interrupt wake-up latency, which may improve performance
+			in certain environments such as networked servers or
+			real-time systems.
+
 	noirqdebug	[IA-32] Disables the code which attempts to detect and
 			disable unhandled interrupt sources.
 
@@ -752,6 +906,8 @@
 
 	nomce		[IA-32] Machine Check Exception
 
+	noresidual	[PPC] Don't use residual data on PReP machines.
+
 	noresume	[SWSUSP] Disables resume and restore original swap space.
  
 	no-scroll	[VGA] Disables scrollback.
@@ -792,6 +948,13 @@
 	panic=		[KNL] Kernel behaviour on panic
 			Format: <timeout>
 
+	parkbd.port=	[HW] Parallel port number the keyboard adapter is
+			connected to, default is 0.
+			Format: <parport#>
+	parkbd.mode=	[HW] Parallel port keyboard adapter mode of operation,
+			0 for XT, 1 for AT (default is AT).
+			Format: <mode> 
+
 	parport=0	[HW,PPT]	Specify parallel ports. 0 disables.
 	parport=auto			Use 'auto' to force the driver to use
 	parport=0xBBB[,IRQ[,DMA]]	any IRQ/DMA settings detected (the
@@ -807,6 +970,16 @@
 					order they are specified on the command
 					line, starting with parport0.
 
+	parport_init_mode=
+			[HW,PPT]	Configure VIA parallel port to
+					operate in specific mode. This is
+					necessary on Pegasos computer where
+					firmware has no options for setting up
+					parallel port mode and sets it to
+					spp. Currently this function knows
+					686a and 8231 chips.
+			Format: [spp|ps2|epp|ecp|ecpepp]
+
 	pas2=		[HW,OSS]
 			Format: <io>,<irq>,<dma>,<dma16>,<sb_io>,<sb_irq>,<sb_dma>,<sb_dma16>
  
@@ -862,12 +1035,28 @@
 					enabled.
 		noacpi			[IA-32] Do not use ACPI for IRQ routing
 					or for PCI scanning.
+		routeirq		Do IRQ routing for all PCI devices.
+					This is normally done in pci_enable_device(),
+					so this option is a temporary workaround
+					for broken drivers that don't call it.
+
+		firmware		[ARM] Do not re-enumerate the bus but
+					instead just use the configuration
+					from the bootloader. This is currently
+					used on IXP2000 systems where the
+					bus has to be configured a certain way
+					for adjunct CPUs.
 
 	pcmv=		[HW,PCMCIA] BadgePAD 4
 
 	pd.		[PARIDE]
 			See Documentation/paride.txt.
 
+	pdcchassis=	[PARISC,HW] Disable/Enable PDC Chassis Status codes at
+			boot time.
+			Format: { 0 | 1 }
+			See arch/parisc/kernel/pdc_chassis.c
+
 	pf.		[PARIDE]
 			See Documentation/paride.txt.
 
@@ -881,6 +1070,9 @@
 			Format: { parport<nr> | timid | 0 }
 			See also Documentation/parport.txt.
 
+	pnpacpi=	[ACPI]
+			{ off }
+
 	pnpbios=	[ISAPNP]
 			{ on | off | curr | res | no-curr | no-res }
 
@@ -898,7 +1090,14 @@
 			Ranges are in pairs (memory base and size).
 
 	profile=	[KNL] Enable kernel profiling via /proc/profile
-			(param: profile step/bucket size as a power of 2)
+			{ schedule | <number> }
+			(param: schedule - profile schedule points}
+			(param: profile step/bucket size as a power of 2 for
+				statistical time based profiling)
+
+	processor.max_cstate=   [HW, ACPI]
+			Limit processor to maximum C-state
+			max_cstate=9 overrides any DMI blacklist limit.
 
 	prompt_ramdisk=	[RAM] List of RAM disks to prompt for floppy disk
 			before loading.
@@ -941,10 +1140,6 @@
 			New name for the ramdisk parameter.
 			See Documentation/ramdisk.txt.
 
-	ramdisk_start=	[RAM] Starting block of RAM disk image (so you can
-			place it after the kernel image on a boot floppy).
-			See Documentation/ramdisk.txt.
-
 	reboot=		[BUGS=IA-32,BUGS=ARM,BUGS=IA-64] Rebooting mode
 			Format: <reboot_mode>[,<reboot_mode2>[,...]]
 			See arch/*/kernel/reboot.c.
@@ -963,6 +1158,9 @@
 
 	root=		[KNL] Root filesystem
 
+	rootdelay=	[KNL] Delay (in seconds) to pause before attempting to
+			mount the root filesystem
+
 	rootflags=	[KNL] Set root filesystem mount option string
 
 	rootfstype=	[KNL] Set root filesystem type
@@ -1000,13 +1198,17 @@
 
 	scsi_logging=	[SCSI]
 
-	scsihosts=	[SCSI]
+	selinux		[SELINUX] Disable or enable SELinux at boot time.
+			Format: { "0" | "1" }
+			See security/selinux/Kconfig help text.
+			0 -- disable.
+			1 -- enable.
+			Default value is set via kernel config option.
+			If enabled at boot time, /selinux/disable can be used
+			later to disable prior to initial policy load.
 
 	serialnumber	[BUGS=IA-32]
 
-	sf16fm=		[HW] SF16FMI radio driver for Linux
-			Format: <io>
-
 	sg_def_reserved_size=
 			[SCSI]
  
@@ -1159,17 +1361,12 @@
 	sonycd535=	[HW,CD]
 			Format: <io>[,<irq>]
 
-	sonypi=		[HW] Sony Programmable I/O Control Device driver
-			Format: <minor>,<verbose>,<fnkeyinit>,<camera>,<compat>,<nojogdial>
+	sonypi.*=	[HW] Sony Programmable I/O Control Device driver
+			See Documentation/sonypi.txt
 
 	specialix=	[HW,SERIAL] Specialix multi-serial port adapter
 			See Documentation/specialix.txt.
 
-	speedstep_coppermine=
-			[HW,IA-32] Take CPU in your notebook as SpeedStep-capable
-			See comment before function speedstep_setup() in
-			arch/i386/kernel/cpu/cpufreq/speedstep.c.
-
 	spia_io_base=	[HW,MTD]
 	spia_fio_base=
 	spia_pedr=
@@ -1184,7 +1381,7 @@
 	st0x=		[HW,SCSI]
 			See header of drivers/scsi/seagate.c.
 
-	sti=		[HW]
+	sti=		[PARISC,HW]
 			Format: <num>
 			Set the STI (builtin display/keyboard on the HP-PARISC
 			machines) console (graphic card) which should be used
@@ -1206,9 +1403,6 @@
 	sym53c416=	[HW,SCSI]
 			See header of drivers/scsi/sym53c416.c.
 
-	sym53c8xx=	[HW,SCSI]
-			See Documentation/scsi/ncr53c8xx.txt.
-
 	t128=		[HW,SCSI]
 			See header of drivers/scsi/t128.c.
 
@@ -1217,12 +1411,15 @@
 	thash_entries=	[KNL,NET]
 			Set number of hash buckets for TCP connection
 
-	tipar=		[HW]
-			See header of drivers/char/tipar.c.
+	time		Show timing data prefixed to each printk message line
+
+	tipar.timeout=	[HW,PPT]
+			Set communications timeout in tenths of a second
+			(default 15).
+
+	tipar.delay=	[HW,PPT]
+			Set inter-bit delay in microseconds (default 10).
 
-	tiusb=		[HW,USB] Texas Instruments' USB GraphLink (aka SilverLink)
-			Format: <timeout>
- 
 	tmc8xx=		[HW,SCSI]
 			See header of drivers/scsi/seagate.c.
 
@@ -1251,6 +1448,11 @@
 
 	uart6850=	[HW,OSS]
 			Format: <io>,<irq>
+
+	usb-handoff	[HW] Enable early USB BIOS -> OS handoff
+
+	usbhid.mousepoll=
+			[USBHID] The interval which mice are to be polled at.
  
 	video=		[FB] Frame buffer configuration
 			See Documentation/fb/modedb.txt.
@@ -1261,6 +1463,12 @@
 			This is actually a boot loader parameter; the value is
 			passed to the kernel using a special protocol.
 
+	vmalloc=nn[KMG]	[KNL,BOOT] forces the vmalloc area to have an exact
+			size of <nn>. This can be used to increase the
+			minimum size (128MB on x86). It can also be used to
+			decrease the size and leave more room for directly
+			mapped kernel RAM.
+
 	vmhalt=		[KNL,S390]
 
 	vmpoff=		[KNL,S390] 
diff -urN malta/linux/Documentation/laptop-mode.txt malta/linux/Documentation/laptop-mode.txt
--- malta/linux/Documentation/laptop-mode.txt	2004/09/14 16:27:37	1.1.1000.2
+++ malta/linux/Documentation/laptop-mode.txt	2005/06/21 13:20:29	1.1.1000.3
@@ -249,7 +249,7 @@
 # playing.
 #READAHEAD=4096
 
-# Shall we remount journaled fs. with appropiate commit interval? (1=yes)
+# Shall we remount journaled fs. with appropriate commit interval? (1=yes)
 #DO_REMOUNTS=1
 
 # And shall we add the "noatime" option to that as well? (1=yes)
diff -urN malta/linux/Documentation/md.txt malta/linux/Documentation/md.txt
--- malta/linux/Documentation/md.txt	2004/09/14 16:27:37	1.5.1000.1
+++ malta/linux/Documentation/md.txt	2005/06/21 13:20:29	1.5.1000.2
@@ -45,7 +45,8 @@
 When md is compiled into the kernel (not as module), partitions of
 type 0xfd are scanned and automatically assembled into RAID arrays.
 This autodetection may be suppressed with the kernel parameter
-"raid=noautodetect".
+"raid=noautodetect".  As of kernel 2.6.9, only drives with a type 0
+superblock can be autodetected and run at boot time.
 
 The kernel parameter "raid=partitionable" (or "raid=part") means
 that all auto-detected arrays are assembled as partitionable.
@@ -55,13 +56,13 @@
 ------------------
 
 The md driver can support a variety of different superblock formats.
-(It doesn't yet, but it can)
+Currently, it supports superblock formats "0.90.0" and the "md-1" format
+introduced in the 2.5 development series.
 
-The kernel does *NOT* autodetect which format superblock is being
-used. It must be told.
+The kernel will autodetect which format superblock is being used.
 
 Superblock format '0' is treated differently to others for legacy
-reasons.
+reasons - it is the original superblock format.
 
 
 General Rules - apply for all superblock formats
@@ -69,6 +70,7 @@
 
 An array is 'created' by writing appropriate superblocks to all
 devices.
+
 It is 'assembled' by associating each of these devices with an
 particular md virtual device.  Once it is completely assembled, it can
 be accessed.
@@ -76,10 +78,10 @@
 An array should be created by a user-space tool.  This will write
 superblocks to all devices.  It will usually mark the array as
 'unclean', or with some devices missing so that the kernel md driver
-can create approrpriate redundancy (copying in raid1, parity
+can create appropriate redundancy (copying in raid1, parity
 calculation in raid4/5).
 
-When an array is assembled, it is first initialised with the
+When an array is assembled, it is first initialized with the
 SET_ARRAY_INFO ioctl.  This contains, in particular, a major and minor
 version number.  The major version number selects which superblock
 format is to be used.  The minor number might be used to tune handling
@@ -101,15 +103,16 @@
 
 
 Specific Rules that apply to format-0 super block arrays, and
-       arrays with no superblock (non-persistant).
+       arrays with no superblock (non-persistent).
 -------------------------------------------------------------
 
 An array can be 'created' by describing the array (level, chunksize
 etc) in a SET_ARRAY_INFO ioctl.  This must has major_version==0 and
 raid_disks != 0.
-Then uninitialised devices can be added with ADD_NEW_DISK.  The
+
+Then uninitialized devices can be added with ADD_NEW_DISK.  The
 structure passed to ADD_NEW_DISK must specify the state of the device
 and it's role in the array.
 
-One started with RUN_ARRAY, uninitialised spares can be added with
+Once started with RUN_ARRAY, uninitialized spares can be added with
 HOT_ADD_DISK.
diff -urN malta/linux/Documentation/memory.txt malta/linux/Documentation/memory.txt
--- malta/linux/Documentation/memory.txt	2001/12/02 11:34:34	1.3
+++ malta/linux/Documentation/memory.txt	2005/06/21 13:20:29	1.3.1000.1
@@ -21,6 +21,8 @@
 All of these problems can be addressed with the "mem=XXXM" boot option
 (where XXX is the size of RAM to use in megabytes).  
 It can also tell Linux to use less memory than is actually installed.
+If you use "mem=" on a machine with PCI, consider using "memmap=" to avoid
+physical address space collisions.
 
 See the documentation of your boot loader (LILO, loadlin, etc.) about
 how to pass options to the kernel.
@@ -44,7 +46,9 @@
 	* Disabling the cache from the BIOS.
 
 	* Try passing the "mem=4M" option to the kernel to limit
-	  Linux to using a very small amount of memory.
+	  Linux to using a very small amount of memory. Use "memmap="-option
+	  together with "mem=" on systems with PCI to avoid physical address
+	  space collisions.
 
 
 Other tricks:
diff -urN malta/linux/Documentation/nmi_watchdog.txt malta/linux/Documentation/nmi_watchdog.txt
--- malta/linux/Documentation/nmi_watchdog.txt	2004/09/14 16:27:37	1.7.1000.1
+++ malta/linux/Documentation/nmi_watchdog.txt	2005/06/21 13:20:29	1.7.1000.2
@@ -54,6 +54,20 @@
 cannot even accept NMI interrupts, or the crash has made the kernel
 unable to print messages.
 
+Be aware that when using local APIC, the frequency of NMI interrupts
+it generates, depends on the system load. The local APIC NMI watchdog,
+lacking a better source, uses the "cycles unhalted" event. As you may
+guess it doesn't tick when the CPU is in the halted state (which happens
+when the system is idle), but if your system locks up on anything but the
+"hlt" processor instruction, the watchdog will trigger very soon as the
+"cycles unhalted" event will happen every clock tick. If it locks up on
+"hlt", then you are out of luck -- the event will not happen at all and the
+watchdog won't trigger. This is a shortcoming of the local APIC watchdog
+-- unfortunately there is no "clock ticks" event that would work all the
+time. The I/O APIC watchdog is driven externally and has no such shortcoming.  
+But its NMI frequency is much higher, resulting in a more significant hit
+to the overall system performance.
+
 NOTE: starting with 2.4.2-ac18 the NMI-oopser is disabled by default,
 you have to enable it with a boot time parameter.  Prior to 2.4.2-ac18
 the NMI-oopser is enabled unconditionally on x86 SMP boxes.
diff -urN malta/linux/Documentation/oops-tracing.txt malta/linux/Documentation/oops-tracing.txt
--- malta/linux/Documentation/oops-tracing.txt	2003/07/11 02:13:09	1.13
+++ malta/linux/Documentation/oops-tracing.txt	2005/06/21 13:20:29	1.13.1000.1
@@ -1,23 +1,22 @@
+NOTE: ksymoops is useless on 2.6.  Please use the Oops in its original format
+(from dmesg, etc).  Ignore any references in this or other docs to "decoding
+the Oops" or "running it through ksymoops".  If you post an Oops fron 2.6 that
+has been run through ksymoops, people will just tell you to repost it.
+
 Quick Summary
 -------------
 
-Install ksymoops from
-ftp://ftp.<country>.kernel.org/pub/linux/utils/kernel/ksymoops
-Read the ksymoops man page.
-ksymoops < the_oops.txt
-
-and send the output the maintainer of the kernel area that seems to be
-involved with the problem, not to the ksymoops maintainer. Don't worry
-too much about getting the wrong person. If you are unsure send it to
-the person responsible for the code relevant to what you were doing.
-If it occurs repeatably try and describe how to recreate it. Thats
-worth even more than the oops
+Find the Oops and send it to the maintainer of the kernel area that seems to be
+involved with the problem.  Don't worry too much about getting the wrong person.
+If you are unsure send it to the person responsible for the code relevant to
+what you were doing.  If it occurs repeatably try and describe how to recreate
+it.  That's worth even more than the oops.
 
 If you are totally stumped as to whom to send the report, send it to 
 linux-kernel@vger.kernel.org. Thanks for your help in making Linux as
 stable as humanly possible.
 
-Where is the_oops.txt?
+Where is the Oops?
 ----------------------
 
 Normally the Oops text is read from the kernel buffers by klogd and
@@ -43,15 +42,14 @@
     them yourself.  Search kernel archives for kmsgdump, lkcd and
     oops+smram.
 
-No matter how you capture the log output, feed the resulting file to
-ksymoops along with /proc/ksyms and /proc/modules that applied at the
-time of the crash.  /var/log/ksymoops can be useful to capture the
-latter, man ksymoops for details.
-
 
 Full Information
 ----------------
 
+NOTE: the message from Linus below applies to 2.4 kernel.  I have preserved it
+for historical reasons, and because some of the information in it still
+applies.  Especially, please ignore any references to ksymoops. 
+
 From: Linus Torvalds <torvalds@osdl.org>
 
 How to track down an Oops.. [originally a mail to linux-kernel]
diff -urN malta/linux/Documentation/parport.txt malta/linux/Documentation/parport.txt
--- malta/linux/Documentation/parport.txt	2004/03/11 16:46:39	1.19
+++ malta/linux/Documentation/parport.txt	2005/06/21 13:20:30	1.19.1000.1
@@ -264,5 +264,5 @@
     io=0x378 irq=7 dma=none (for PIO)
     io=0x378 irq=7 dma=3 (for DMA)
 --
-Philip.Blundell@pobox.com
+philb@gnu.org
 tim@cyberelk.net
diff -urN malta/linux/Documentation/pci.txt malta/linux/Documentation/pci.txt
--- malta/linux/Documentation/pci.txt	2004/09/14 16:27:37	1.21.1000.1
+++ malta/linux/Documentation/pci.txt	2005/06/21 13:20:30	1.21.1000.2
@@ -99,10 +99,10 @@
 Users need pass only as many fields as necessary; vendor, device,
 subvendor, and subdevice fields default to PCI_ANY_ID (FFFFFFFF),
 class and classmask fields default to 0, and driver_data defaults to
-0UL.  Device drivers must call
-   pci_dynids_set_use_driver_data(pci_driver *, 1)
-in order for the driver_data field to get passed to the driver.
-Otherwise, only a 0 is passed in that field.
+0UL.  Device drivers must initialize use_driver_data in the dynids struct
+in their pci_driver struct prior to calling pci_register_driver in order
+for the driver_data field to get passed to the driver. Otherwise, only a
+0 is passed in that field.
 
 When the driver exits, it just calls pci_unregister_driver() and the PCI layer
 automatically calls the remove hook for all devices handled by the driver.
@@ -141,26 +141,24 @@
 Searching by vendor and device ID:
 
 	struct pci_dev *dev = NULL;
-	while (dev = pci_find_device(VENDOR_ID, DEVICE_ID, dev))
+	while (dev = pci_get_device(VENDOR_ID, DEVICE_ID, dev))
 		configure_device(dev);
 
 Searching by class ID (iterate in a similar way):
 
-	pci_find_class(CLASS_ID, dev)
+	pci_get_class(CLASS_ID, dev)
 
 Searching by both vendor/device and subsystem vendor/device ID:
 
-	pci_find_subsys(VENDOR_ID, DEVICE_ID, SUBSYS_VENDOR_ID, SUBSYS_DEVICE_ID, dev).
+	pci_get_subsys(VENDOR_ID, DEVICE_ID, SUBSYS_VENDOR_ID, SUBSYS_DEVICE_ID, dev).
 
    You can use the constant PCI_ANY_ID as a wildcard replacement for
 VENDOR_ID or DEVICE_ID.  This allows searching for any device from a
 specific vendor, for example.
 
-Note that these functions are not hotplug-safe.  Their hotplug-safe
-replacements are pci_get_device(), pci_get_class() and pci_get_subsys().
-They increment the reference count on the pci_dev that they return.
-You must eventually (possibly at module unload) decrement the reference
-count on these devices by calling pci_dev_put().
+   These functions are hotplug-safe. They increment the reference count on
+the pci_dev that they return. You must eventually (possibly at module unload)
+decrement the reference count on these devices by calling pci_dev_put().
 
 
 3. Enabling and disabling devices
@@ -275,11 +273,13 @@
 				devices just return NULL.
 pcibios_(read|write)_*		Superseded by their pci_(read|write)_*
 				counterparts.
-pcibios_find_*			Superseded by their pci_find_* counterparts.
-pci_for_each_dev()		Superseded by pci_find_device()
+pcibios_find_*			Superseded by their pci_get_* counterparts.
+pci_for_each_dev()		Superseded by pci_get_device()
 pci_for_each_dev_reverse()	Superseded by pci_find_device_reverse()
 pci_for_each_bus()		Superseded by pci_find_next_bus()
 pci_find_device()		Superseded by pci_get_device()
 pci_find_subsys()		Superseded by pci_get_subsys()
-pcibios_find_class()		Superseded by pci_find_class()
+pci_find_slot()			Superseded by pci_get_slot()
+pcibios_find_class()		Superseded by pci_get_class()
+pci_find_class()		Superseded by pci_get_class()
 pci_(read|write)_*_nodev()	Superseded by pci_bus_(read|write)_*()
diff -urN malta/linux/Documentation/pm.txt malta/linux/Documentation/pm.txt
--- malta/linux/Documentation/pm.txt	2001/12/19 00:02:53	1.5
+++ malta/linux/Documentation/pm.txt	2005/06/21 13:20:30	1.5.1000.1
@@ -36,8 +36,8 @@
   apmd:   http://worldvisions.ca/~apenwarr/apmd/
   acpid:  http://acpid.sf.net/
 
-Driver Interface
-----------------
+Driver Interface -- OBSOLETE, DO NOT USE!
+----------------*************************
 If you are writing a new driver or maintaining an old driver, it
 should include power management support.  Without power management
 support, a single driver may prevent a system with power management
@@ -91,54 +91,6 @@
 void pm_unregister_all(pm_callback cback);
 
 /*
- * Device idle/use detection
- *
- * In general, drivers for all devices should call "pm_access"
- * before accessing the hardware (ie. before reading or modifying
- * a hardware register).  Request or packet-driven drivers should
- * additionally call "pm_dev_idle" when a device is not being used.
- *
- * Examples:
- * 1) A keyboard driver would call pm_access whenever a key is pressed
- * 2) A network driver would call pm_access before submitting
- *    a packet for transmit or receive and pm_dev_idle when its
- *    transfer and receive queues are empty.
- * 3) A VGA driver would call pm_access before it accesses any
- *    of the video controller registers
- *
- * Ultimately, the PM policy manager uses the access and idle
- * information to decide when to suspend individual devices
- * or when to suspend the entire system
- */
-
-/*
- * Description: Update device access time and wake up device, if necessary
- *
- * Parameters:
- *   dev - PM device previously returned from pm_register
- *
- * Details: If called from an interrupt handler pm_access updates
- *          access time but should never need to wake up the device
- *          (if device is generating interrupts, it should be awake
- *          already)  This is important as we can not wake up
- *          devices from an interrupt handler.
- */
-void pm_access(struct pm_dev *dev);
-
-/*
- * Description: Identify device as currently being idle
- *
- * Parameters:
- *   dev - PM device previously returned from pm_register
- *
- * Details: A call to pm_dev_idle might signal to the policy manager
- *          to put a device to sleep.  If a new device request arrives
- *          between the call to pm_dev_idle and the pm_callback
- *          callback, the driver should fail the pm_callback request.
- */
-void pm_dev_idle(struct pm_dev *dev);
-
-/*
  * Power management request callback
  *
  * Parameters:
@@ -262,31 +214,14 @@
 
 ACPI Development mailing list: acpi-devel@lists.sourceforge.net
 
-System Interface
-----------------
+System Interface -- OBSOLETE, DO NOT USE!
+----------------*************************
 If you are providing new power management support to Linux (ie.
 adding support for something like APM or ACPI), you should
 communicate with drivers through the existing generic power
 management interface.
 
 /*
- * Send a request to a single device
- *
- * Parameters:
- *   dev - PM device previously returned from pm_register or pm_find
- *   rqst - request type
- *   data - data, if any, associated with the request
- *
- * Returns: 0 if the request is successful
- *          See "pm_callback" return for errors
- *
- * Details: Forward request to device callback and, if a suspend
- *          or resume request, update the pm_dev "state" field
- *          appropriately
- */
-int pm_send(struct pm_dev *dev, pm_request_t rqst, void *data);
-
-/*
  * Send a request to all devices
  *
  * Parameters:
diff -urN malta/linux/Documentation/ramdisk.txt malta/linux/Documentation/ramdisk.txt
--- malta/linux/Documentation/ramdisk.txt	1998/08/25 09:12:49	1.3
+++ malta/linux/Documentation/ramdisk.txt	2005/06/21 13:20:30	1.3.1000.1
@@ -5,115 +5,66 @@
 
 	1) Overview
 	2) Kernel Command Line Parameters
-	3) Using "rdev -r" With New Kernels
+	3) Using "rdev -r"
 	4) An Example of Creating a Compressed RAM Disk 
 
 
 1) Overview
 -----------
 
-As of kernel v1.3.48, the RAM disk driver was substantially changed.
-
-The older versions would grab a chunk of memory off the top before
-handing the remainder to the kernel at boot time. Thus a size parameter
-had to be specified via "ramdisk=1440" or "rdev -r /dev/fd0 1440" so
-that the driver knew how much memory to grab.
-
-Now the RAM disk dynamically grows as more space is required. It does
-this by using RAM from the buffer cache. The driver marks the buffers
-it is using with a new "BH_Protected" flag so that the kernel does 
-not try to reuse them later. This means that the old size parameter
-is no longer used, new command line parameters exist, and the behavior
-of the "rdev -r" or "ramsize" (usually a symbolic link to "rdev")
-command has changed.
-
-Also, the new RAM disk supports up to 16 RAM disks out of the box, and can
-be reconfigured in rd.c to support up to 255 RAM disks.  To use multiple
-RAM disk support with your system, run 'mknod /dev/ramX b 1 X' and chmod
-(to change its permissions) it to your liking.  The default /dev/ram(disk)
-uses minor #1, so start with ram2 and go from there.
-
-The old "ramdisk=<ram_size>" has been changed to "ramdisk_size=<ram_size>"
-to make it clearer.  The original "ramdisk=<ram_size>" has been kept around
-for compatibility reasons, but it will probably be removed in 2.1.x.
+The RAM disk driver is a way to use main system memory as a block device.  It
+is required for initrd, an initial filesystem used if you need to load modules
+in order to access the root filesystem (see Documentation/initrd.txt).  It can
+also be used for a temporary filesystem for crypto work, since the contents
+are erased on reboot.
+
+The RAM disk dynamically grows as more space is required. It does this by using
+RAM from the buffer cache. The driver marks the buffers it is using as dirty
+so that the VM subsystem does not try to reclaim them later.
+
+Also, the RAM disk supports up to 16 RAM disks out of the box, and can
+be reconfigured to support up to 255 RAM disks - change "#define NUM_RAMDISKS"
+in drivers/block/rd.c.  To use RAM disk support with your system, run
+'./MAKEDEV ram' from the /dev directory.  RAM disks are all major number 1, and
+start with minor number 0 for /dev/ram0, etc.  If used, modern kernels use
+/dev/ram0 for an initrd.
+
+The old "ramdisk=<ram_size>" has been changed to "ramdisk_size=<ram_size>" to
+make it clearer.  The original "ramdisk=<ram_size>" has been kept around for
+compatibility reasons, but it may be removed in the future.
 
 The new RAM disk also has the ability to load compressed RAM disk images,
 allowing one to squeeze more programs onto an average installation or 
 rescue floppy disk.
 
-Notes: You may have "/dev/ram" or "/dev/ramdisk" or both. They are
-equivalent from the standpoint of this document. Also, the new RAM disk
-is a config option. When running "make config", make sure you enable
-RAM disk support for the kernel with which you intend to use the RAM disk.
-
 
 2) Kernel Command Line Parameters
 ---------------------------------
 
-	ramdisk_start=NNN
-	=================
-
-To allow a kernel image to reside on a floppy disk along with a compressed
-RAM disk image, the "ramdisk_start=<offset>" command was added. The kernel
-can't be included into the compressed RAM disk filesystem image, because
-it needs to be stored starting at block zero so that the BIOS can load the 
-boot sector and then the kernel can bootstrap itself to get going.
-
-Note: If you are using an uncompressed RAM disk image, then the kernel can
-be a part of the filesystem image that is being loaded into the RAM disk,
-and the floppy can be booted with LILO, or the two can be separate as
-is done for the compressed images.
-
-If you are using a two-disk boot/root setup (kernel on #1, RAM disk image
-on #2) then the RAM disk would start at block zero, and an offset of
-zero would be used. Since this is the default value, you would not need
-to actually use the command at all.
-
-If instead, you have a "zImage" of about 350 kB, and a "fs_image.gz" of
-say about 1 MB, and you want them both on the same disk, then you
-would use an offset. If you stored the "fs_image.gz" onto the floppy
-starting at an offset of 400 kB, you would use "ramdisk_start=400".
-
-
-	load_ramdisk=N
-	==============
-
-This parameter tells the kernel whether it is to try to load a
-RAM disk image or not. Specifying "load_ramdisk=1" will tell the
-kernel to load a floppy into the RAM disk. The default value is
-zero, meaning that the kernel should not try to load a RAM disk.
-
-
-	prompt_ramdisk=N
-	================
-
-This parameter tells the kernel whether or not to give you a prompt
-asking you to insert the floppy containing the RAM disk image. In
-a single floppy configuration the RAM disk image is on the same floppy
-as the kernel that just finished loading/booting and so a prompt
-is not needed. In this case one can use "prompt_ramdisk=0". In a
-two floppy configuration, you will need the chance to switch disks,
-and thus "prompt_ramdisk=1" can be used. Since this is the default 
-value, it doesn't really need to be specified.
-
 	ramdisk_size=N
 	==============
 
 This parameter tells the RAM disk driver to set up RAM disks of N k size.  The
-default is 4096 (4 MB). 
+default is 4096 (4 MB) (8192 (8 MB) on S390).
+
+	ramdisk_blocksize=N
+	===================
 
-3) Using "rdev -r" With New Kernels
------------------------------------
+This parameter tells the RAM disk driver how many bytes to use per block.  The
+default is 512.
 
-The usage of the word (two bytes) that "rdev -r" sets in the kernel image
-has changed. The low 11 bits (0 -> 10) specify an offset (in 1 k blocks) 
-of up to 2 MB (2^11) of where to find the RAM disk (this used to be the 
-size). Bit 14 indicates that a RAM disk is to be loaded, and bit 15
-indicates whether a prompt/wait sequence is to be given before trying
-to read the RAM disk. Since the RAM disk dynamically grows as data is
-being written into it, a size field is no longer required. Bits 11
-to 13 are not currently used and may as well be zero. These numbers
-are no magical secrets, as seen below:
+
+3) Using "rdev -r"
+------------------
+
+The usage of the word (two bytes) that "rdev -r" sets in the kernel image is
+as follows. The low 11 bits (0 -> 10) specify an offset (in 1 k blocks) of up
+to 2 MB (2^11) of where to find the RAM disk (this used to be the size). Bit
+14 indicates that a RAM disk is to be loaded, and bit 15 indicates whether a
+prompt/wait sequence is to be given before trying to read the RAM disk. Since
+the RAM disk dynamically grows as data is being written into it, a size field
+is not required. Bits 11 to 13 are not currently used and may as well be zero.
+These numbers are no magical secrets, as seen below:
 
 ./arch/i386/kernel/setup.c:#define RAMDISK_IMAGE_START_MASK     0x07FF
 ./arch/i386/kernel/setup.c:#define RAMDISK_PROMPT_FLAG          0x8000
@@ -152,10 +103,10 @@
 To create a RAM disk image, you will need a spare block device to
 construct it on. This can be the RAM disk device itself, or an
 unused disk partition (such as an unmounted swap partition). For this 
-example, we will use the RAM disk device, "/dev/ram".
+example, we will use the RAM disk device, "/dev/ram0".
 
 Note: This technique should not be done on a machine with less than 8 MB
-of RAM. If using a spare disk partition instead of /dev/ram, then this
+of RAM. If using a spare disk partition instead of /dev/ram0, then this
 restriction does not apply.
 
 a) Decide on the RAM disk size that you want. Say 2 MB for this example.
@@ -164,11 +115,11 @@
    area (esp. for disks) so that maximal compression is achieved for
    the unused blocks of the image that you are about to create.
 
-	dd if=/dev/zero of=/dev/ram bs=1k count=2048
+	dd if=/dev/zero of=/dev/ram0 bs=1k count=2048
 
 b) Make a filesystem on it. Say ext2fs for this example.
 
-	mke2fs -vm0 /dev/ram 2048
+	mke2fs -vm0 /dev/ram0 2048
 
 c) Mount it, copy the files you want to it (eg: /etc/* /dev/* ...)
    and unmount it again.
@@ -177,7 +128,7 @@
    will be approximately 50% of the space used by the files. Unused
    space on the RAM disk will compress to almost nothing.
 
-	dd if=/dev/ram bs=1k count=2048 | gzip -v9 > /tmp/ram_image.gz
+	dd if=/dev/ram0 bs=1k count=2048 | gzip -v9 > /tmp/ram_image.gz
 
 e) Put the kernel onto the floppy
 
@@ -203,4 +154,14 @@
 users may wish to combine steps (d) and (f) by using a pipe.
 
 --------------------------------------------------------------------------
-						Paul Gortmaker 12/95	
+						Paul Gortmaker 12/95
+
+Changelog:
+----------
+
+10-22-04 :	Updated to reflect changes in command line options, remove
+		obsolete references, general cleanup.
+		James Nelson (james4765@gmail.com)
+
+
+12-95 :		Original Document
diff -urN malta/linux/Documentation/riscom8.txt malta/linux/Documentation/riscom8.txt
--- malta/linux/Documentation/riscom8.txt	1998/05/07 02:55:54	1.3
+++ malta/linux/Documentation/riscom8.txt	2005/06/21 13:20:30	1.3.1000.1
@@ -1,5 +1,12 @@
+* NOTE - this is an unmaintained driver.  The original author cannot be located.
+
+SDL Communications is now SBS Technologies, and does not have any
+information on these ancient ISA cards on their website.
+
+James Nelson <james4765@gmail.com> - 12-12-2004
+
 	This is the README for RISCom/8 multi-port serial driver
-	(C) 1994-1996 D.Gorodchanin (pgmdsg@ibi.com)
+	(C) 1994-1996 D.Gorodchanin
 	See file LICENSE for terms and conditions.
 
 NOTE: English is not my native language. 
@@ -10,47 +17,20 @@
 1) This driver can support up to 4 boards at time.
    Use string "riscom8=0xXXX,0xXXX,0xXXX,0xXXX" at LILO prompt, for
    setting I/O base addresses for boards. If you compile driver
-   as module use insmod options "iobase=0xXXX iobase1=0xXXX iobase2=..."
+   as module use modprobe options "iobase=0xXXX iobase1=0xXXX iobase2=..."
 
 2) The driver partially supports famous 'setserial' program, you can use almost
    any of its options, excluding port & irq settings.
 
 3) There are some misc. defines at the beginning of riscom8.c, please read the 
    comments and try to change some of them in case of problems.
-	
+
 4) I consider the current state of the driver as BETA.
-   If you REALLY think you found a bug, send me e-mail, I hope I'll
-   fix it. For any other problems please ask support@sdlcomm.com.
 
 5) SDL Communications WWW page is http://www.sdlcomm.com.
 
-6) You can use the script at the end of this file to create RISCom/8 devices.
+6) You can use the MAKEDEV program to create RISCom/8 /dev/ttyL* entries.
 
 7) Minor numbers for first board are 0-7, for second 8-15, etc.
 
 22 Apr 1996.
-
--------------------------------cut here-------------------------------------
-#!/bin/bash
-NORMAL_DEVICE=/dev/ttyL
-CALLOUT_DEVICE=/dev/cuL
-NORMAL_MAJOR=48
-CALLOUT_MAJOR=49
-
-echo "Creating devices... "
-for i in 0 1 2 3; do
-	echo "Board No $[$i+1]"
-	for j in 0 1 2 3 4 5 6 7; do
-		k=$[ 8 * $i + $j]
-		rm -f $NORMAL_DEVICE$k 
-		mknod $NORMAL_DEVICE$k c $NORMAL_MAJOR $k
-		chmod a+rw $NORMAL_DEVICE$k
-		echo -n $NORMAL_DEVICE$k" "
-		rm -f $CALLOUT_DEVICE$k 
-		mknod $CALLOUT_DEVICE$k c $CALLOUT_MAJOR $k
-		chmod a+rw $CALLOUT_DEVICE$k
-		echo $CALLOUT_DEVICE$k
-	done
-done
-echo "done."
--------------------------------cut here-------------------------------------
diff -urN malta/linux/Documentation/rocket.txt malta/linux/Documentation/rocket.txt
--- malta/linux/Documentation/rocket.txt	2004/03/11 16:46:39	1.2
+++ malta/linux/Documentation/rocket.txt	2005/06/21 13:20:30	1.2.1000.1
@@ -20,8 +20,27 @@
 into them.  Installations instructions for the external module
 are in the included README and HW_INSTALL files.
 
-RocketPort ISA and RocketModem II PCI boards are also supported by this
-driver, but must use the external module driver for configuration reasons.  
+RocketPort ISA and RocketModem II PCI boards currently are only supported by
+this driver in module form.
+
+The RocketPort ISA board requires I/O ports to be configured by the DIP
+switches on the board.  See the section "ISA Rocketport Boards" below for
+information on how to set the DIP switches.
+
+You pass the I/O port to the driver using the following module parameters:
+
+board1 :	I/O port for the first ISA board
+board2 :	I/O port for the second ISA board
+board3 :	I/O port for the third ISA board
+board4 :	I/O port for the fourth ISA board
+
+There is a set of utilities and scripts provided with the external driver
+( downloadable from http://www.comtrol.com ) that ease the configuration and
+setup of the ISA cards.
+
+The RocketModem II PCI boards require firmware to be loaded into the card
+before it will function.  The driver has only been tested as a module for this
+board.
 
 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
@@ -55,12 +74,95 @@
 >mknod /dev/ttyR1 c 46 1
 >mknod /dev/ttyR2 c 46 2  
 
-The Linux script MAKEDEV will create the first 16 ttyRx device names (nodes) for you:
+The Linux script MAKEDEV will create the first 16 ttyRx device names (nodes)
+for you:
 
 >/dev/MAKEDEV ttyR
 
 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
+ISA Rocketport Boards
+---------------------
+
+You must assign and configure the I/O addresses used by the ISA Rocketport
+card before installing and using it.  This is done by setting a set of DIP
+switches on the Rocketport board.
+
+
+SETTING THE I/O ADDRESS
+-----------------------
+
+Before installing RocketPort(R) or RocketPort RA boards, you must find
+a range of I/O addresses for it to use. The first RocketPort card
+requires a 68-byte contiguous block of I/O addresses, starting at one
+of the following: 0x100h, 0x140h, 0x180h, 0x200h, 0x240h, 0x280h,
+0x300h, 0x340h, 0x380h.  This I/O address must be reflected in the DIP
+switiches of *all* of the Rocketport cards.
+
+The second, third, and fourth RocketPort cards require a 64-byte
+contiguous block of I/O addresses, starting at one of the following
+I/O addresses: 0x100h, 0x140h, 0x180h, 0x1C0h, 0x200h, 0x240h, 0x280h,
+0x2C0h, 0x300h, 0x340h, 0x380h, 0x3C0h.  The I/O address used by the
+second, third, and fourth Rocketport cards (if present) are set via
+software control.  The DIP switch settings for the I/O address must be
+set to the value of the first Rocketport cards.
+
+In order to destinguish each of the card from the others, each card
+must have a unique board ID set on the dip switches.  The first
+Rocketport board must be set with the DIP switches corresponding to
+the first board, the second board must be set with the DIP switches
+corresponding to the second board, etc.  IMPORTANT: The board ID is
+the only place where the DIP switch settings should differ between the
+various Rocketport boards in a system.
+
+The I/O address range used by any of the RocketPort cards must not
+conflict with any other cards in the system, including other
+RocketPort cards.  Below, you will find a list of commonly used I/O
+address ranges which may be in use by other devices in your system.
+On a Linux system, "cat /proc/ioports" will also be helpful in
+identifying what I/O addresses are being used by devics on your
+system.
+
+Remember, the FIRST RocketPort uses 68 I/O addresses.  So, if you set it
+for 0x100, it will occupy 0x100 to 0x143.  This would mean that you
+CAN NOT set the second, third or fourth board for address 0x140 since
+the first 4 bytes of that range are used by the first board.  You would
+need to set the second, third, or fourth board to one of the next available
+blocks such as 0x180.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+RocketPort and RocketPort RA SW1 Settings:
+
+          +-------------------------------+
+          | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
+          +-------+-------+---------------+
+          | Unused| Card  | I/O Port Block|
+          +-------------------------------+
+
+DIP Switches                             DIP Switches
+7    8                                   6    5
+===================                      ===================
+On   On   UNUSED, MUST BE ON.            On   On   First Card    <==== Default
+                                         On   Off  Second Card
+                                         Off  On   Third Card
+                                         Off  Off  Fourth Card
+
+DIP Switches         I/O Address Range
+4    3    2    1     Used by the First Card
+=====================================
+On   Off  On   Off   100-143
+On   Off  Off  On    140-183
+On   Off  Off  Off   180-1C3       <==== Default
+Off  On   On   Off   200-243
+Off  On   Off  On    240-283
+Off  On   Off  Off   280-2C3
+Off  Off  On   Off   300-343
+Off  Off  Off  On    340-383
+Off  Off  Off  Off   380-3C3
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
 REPORTING BUGS
 --------------
 
diff -urN malta/linux/Documentation/sched-domains.txt malta/linux/Documentation/sched-domains.txt
--- malta/linux/Documentation/sched-domains.txt	2004/09/14 16:27:37	1.1.1000.1
+++ malta/linux/Documentation/sched-domains.txt	2005/06/21 13:20:30	1.1.1000.2
@@ -5,12 +5,13 @@
 are locklessly updated.
 
 Each scheduling domain spans a number of CPUs (stored in the ->span field).
-A domain's span MUST be a superset of it child's span, and a base domain
-for CPU i MUST span at least i. The top domain for each CPU will generally
-span all CPUs in the system although strictly it doesn't have to, but this
-could lead to a case where some CPUs will never be given tasks to run unless
-the CPUs allowed mask is explicitly set. A sched domain's span means "balance
-process load among these CPUs".
+A domain's span MUST be a superset of it child's span (this restriction could
+be relaxed if the need arises), and a base domain for CPU i MUST span at least
+i. The top domain for each CPU will generally span all CPUs in the system
+although strictly it doesn't have to, but this could lead to a case where some
+CPUs will never be given tasks to run unless the CPUs allowed mask is
+explicitly set. A sched domain's span means "balance process load among these
+CPUs".
 
 Each scheduling domain must have one or more CPU groups (struct sched_group)
 which are organised as a circular one way linked list from the ->groups
@@ -46,6 +47,20 @@
 struct sched_domain fields, SD_FLAG_*, SD_*_INIT to get an idea of
 the specifics and what to tune.
 
+For SMT, the architecture must define CONFIG_SCHED_SMT and provide a
+cpumask_t cpu_sibling_map[NR_CPUS], where cpu_sibling_map[i] is the mask of
+all "i"'s siblings as well as "i" itself.
+
+Architectures may retain the regular override the default SD_*_INIT flags
+while using the generic domain builder in kernel/sched.c if they wish to
+retain the traditional SMT->SMP->NUMA topology (or some subset of that). This
+can be done by #define'ing ARCH_HASH_SCHED_TUNE.
+
+Alternatively, the architecture may completely override the generic domain
+builder by #define'ing ARCH_HASH_SCHED_DOMAIN, and exporting your
+arch_init_sched_domains function. This function will attach domains to all
+CPUs using cpu_attach_domain.
+
 Implementors should change the line
 #undef SCHED_DOMAIN_DEBUG
 to
diff -urN malta/linux/Documentation/sonypi.txt malta/linux/Documentation/sonypi.txt
--- malta/linux/Documentation/sonypi.txt	2004/03/11 16:46:39	1.13
+++ malta/linux/Documentation/sonypi.txt	2005/06/21 13:20:30	1.13.1000.1
@@ -1,6 +1,6 @@
 Sony Programmable I/O Control Device Driver Readme
 --------------------------------------------------
-	Copyright (C) 2001-2003 Stelian Pop <stelian@popies.net>
+	Copyright (C) 2001-2004 Stelian Pop <stelian@popies.net>
 	Copyright (C) 2001-2002 Alcôve <www.alcove.com>
 	Copyright (C) 2001 Michael Ashley <m.ashley@unsw.edu.au>
 	Copyright (C) 2001 Junichi Morita <jun1m@mars.dti.ne.jp>
@@ -23,16 +23,18 @@
 
 Those events (see linux/sonypi.h) can be polled using the character device node
 /dev/sonypi (major 10, minor auto allocated or specified as a option).
-
 A simple daemon which translates the jogdial movements into mouse wheel events
 can be downloaded at: <http://popies.net/sonypi/>
 
+Another option to intercept the events is to get them directly through the
+input layer.
+
 This driver supports also some ioctl commands for setting the LCD screen
-brightness and querying the batteries charge information (some more 
+brightness and querying the batteries charge information (some more
 commands may be added in the future).
 
 This driver can also be used to set the camera controls on Picturebook series
-(brightness, contrast etc), and is used by the video4linux driver for the 
+(brightness, contrast etc), and is used by the video4linux driver for the
 Motion Eye camera.
 
 Please note that this driver was created by reverse engineering the Windows
@@ -42,15 +44,12 @@
 Driver options:
 ---------------
 
-Several options can be passed to the sonypi driver, either by adding them
-to /etc/modprobe.conf file, when the driver is compiled as a module or by
-adding the following to the kernel command line (in your bootloader):
-
-	sonypi=minor[,verbose[,fnkeyinit[,camera[,compat[,mask[,useinput]]]]]]
+Several options can be passed to the sonypi driver using the standard
+module argument syntax (<param>=<value> when passing the option to the
+module or sonypi.<param>=<value> on the kernel boot line when sonypi is
+statically linked into the kernel). Those options are:
 
-where:
-
-	minor: 		minor number of the misc device /dev/sonypi, 
+	minor: 		minor number of the misc device /dev/sonypi,
 			default is -1 (automatic allocation, see /proc/misc
 			or kernel logs)
 
@@ -62,14 +61,14 @@
 			get enabled unless you set this parameter to 1.
 			Do not use this option unless it's actually necessary,
 			some Vaio models don't deal well with this option.
-			This option is available only if the kernel is 
+			This option is available only if the kernel is
 			compiled without ACPI support (since it conflicts
-			with it and it shouldn't be required anyway if 
+			with it and it shouldn't be required anyway if
 			ACPI is already enabled).
 
-	verbose:	set to 1 to print unknown events received from the 
+	verbose:	set to 1 to print unknown events received from the
 			sonypi device.
-			set to 2 to print all events received from the 
+			set to 2 to print all events received from the
 			sonypi device.
 
 	compat:		uses some compatibility code for enabling the sonypi
@@ -78,14 +77,15 @@
 			add this option and report to the author.
 
 	mask:		event mask telling the driver what events will be
-			reported to the user. This parameter is required for some 
-			Vaio models where the hardware reuses values used in 
-			other Vaio models (like the FX series who does not
-			have a jogdial but reuses the jogdial events for
+			reported to the user. This parameter is required for
+			some Vaio models where the hardware reuses values
+			used in other Vaio models (like the FX series who does
+			not have a jogdial but reuses the jogdial events for
 			programmable keys events). The default event mask is
-			set to 0xffffffff, meaning that all possible events will be
-			tried. You can use the following bits to construct
-			your own event mask (from drivers/char/sonypi.h):
+			set to 0xffffffff, meaning that all possible events
+			will be tried. You can use the following bits to
+			construct your own event mask (from
+			drivers/char/sonypi.h):
 				SONYPI_JOGGER_MASK 		0x0001
 				SONYPI_CAPTURE_MASK 		0x0002
 				SONYPI_FNKEY_MASK 		0x0004
@@ -100,10 +100,10 @@
 				SONYPI_MEMORYSTICK_MASK		0x0800
 				SONYPI_BATTERY_MASK		0x1000
 
-	useinput:	if set (which is the default) jogdial events are
-			forwarded to the input subsystem as mouse wheel
-			events.
-			
+	useinput:	if set (which is the default) two input devices are
+			created, one which interprets the jogdial events as
+			mouse events, the other one which acts like a
+			keyboard reporting the pressing of the special keys.
 
 Module use:
 -----------
@@ -126,17 +126,17 @@
 	  external monitor on/off. There is no workaround yet, since this
 	  driver disables all APM management for those keys, by enabling the
 	  ACPI management (and the ACPI core stuff is not complete yet). If
-	  you have one of those laptops with working Fn keys and want to 
+	  you have one of those laptops with working Fn keys and want to
 	  continue to use them, don't use this driver.
 
 	- some users reported that the laptop speed is lower (dhrystone
 	  tested) when using the driver with the fnkeyinit parameter. I cannot
 	  reproduce it on my laptop and not all users have this problem.
-	  This happens because the fnkeyinit parameter enables the ACPI 
-	  mode (but without additional ACPI control, like processor 
+	  This happens because the fnkeyinit parameter enables the ACPI
+	  mode (but without additional ACPI control, like processor
 	  speed handling etc). Use ACPI instead of APM if it works on your
 	  laptop.
-	
+
 	- since all development was done by reverse engineering, there is
 	  _absolutely no guarantee_ that this driver will not crash your
 	  laptop. Permanently.
diff -urN malta/linux/Documentation/spinlocks.txt malta/linux/Documentation/spinlocks.txt
--- malta/linux/Documentation/spinlocks.txt	1998/08/25 09:12:50	1.3
+++ malta/linux/Documentation/spinlocks.txt	2005/06/21 13:20:30	1.3.1000.1
@@ -1,3 +1,29 @@
+UPDATE March 21 2005 Amit Gud <gud@eth.net>
+
+Macros SPIN_LOCK_UNLOCKED and RW_LOCK_UNLOCKED are deprecated and will be
+removed soon. So for any new code dynamic initialization should be used:
+
+   spinlock_t xxx_lock;
+   rwlock_t xxx_rw_lock;
+
+   static int __init xxx_init(void)
+   {
+   	spin_lock_init(&xxx_lock);
+	rw_lock_init(&xxx_rw_lock);
+	...
+   }
+
+   module_init(xxx_init);
+
+Reasons for deprecation
+  - it hurts automatic lock validators
+  - it becomes intrusive for the realtime preemption patches
+
+Following discussion is still valid, however, with the dynamic initialization
+of spinlocks instead of static.
+
+-----------------------
+
 On Fri, 2 Jan 1998, Doug Ledford wrote:
 > 
 > I'm working on making the aic7xxx driver more SMP friendly (as well as
diff -urN malta/linux/Documentation/stallion.txt malta/linux/Documentation/stallion.txt
--- malta/linux/Documentation/stallion.txt	2000/08/08 12:37:17	1.9
+++ malta/linux/Documentation/stallion.txt	2005/06/21 13:20:30	1.9.1000.1
@@ -1,8 +1,13 @@
+* NOTE - This is an unmaintained driver.  Lantronix, which bought Stallion
+technologies, is not active in driver maintenance, and they have no information
+on when or if they will have a 2.6 driver.
+
+James Nelson <james4765@gmail.com> - 12-12-2004
 
 Stallion Multiport Serial Driver Readme
 ---------------------------------------
 
-Copyright (C) 1994-1999,  Stallion Technologies (support@stallion.com).
+Copyright (C) 1994-1999,  Stallion Technologies.
 
 Version:   5.5.1
 Date:      28MAR99
@@ -19,29 +24,20 @@
 
 If you are using any of the Stallion intelligent multiport boards (Brumby,
 ONboard, EasyConnection 8/64 (ISA, EISA, MCA), EasyConnection/RA-PCI) with
-Linux you will need to get the driver utility package. This package is
-available at most of the Linux archive sites (and on CD-ROMs that contain
-these archives). The file will be called stallion-X.X.X.tar.gz where X.X.X
-will be the version number. In particular this package contains the board
-embedded executable images that are required for these boards. It also
-contains the downloader program. These boards cannot be used without this.
+Linux you will need to get the driver utility package.  This contains a
+firmware loader and the firmware images necessary to make the devices operate.
 
 The Stallion Technologies ftp site, ftp.stallion.com, will always have
-the latest version of the driver utility package. Other sites that usually
-have the latest version are tsx-11.mit.edu, sunsite.unc.edu and their
-mirrors.
-
-ftp.stallion.com:/drivers/ata5/Linux/v550.tar.gz
-tsx-11.mit.edu:/pub/linux/packages/stallion/stallion-5.5.0.tar.gz
-sunsite.unc.edu:/pub/Linux/kernel/patches/serial/stallion-5.5.0.tar.gz
+the latest version of the driver utility package.
+
+ftp://ftp.stallion.com/drivers/ata5/Linux/ata-linux-550.tar.gz
 
 As of the printing of this document the latest version of the driver
 utility package is 5.5.0. If a later version is now available then you
 should use the latest version.
 
 If you are using the EasyIO, EasyConnection 8/32 or EasyConnection 8/64-PCI
-boards then you don't need this package. Although it does have a handy
-script to create the /dev device nodes for these boards, and a serial stats
+boards then you don't need this package, although it does have a serial stats
 display program.
 
 If you require DIP switch settings, EISA or MCA configuration files, or any
@@ -85,7 +81,7 @@
 
 Typically to load up the smart board driver use:
 
-    insmod stallion.o
+    modprobe stallion
 
 This will load the EasyIO and EasyConnection 8/32 driver. It will output a
 message to say that it loaded and print the driver version number. It will
@@ -96,12 +92,12 @@
 
 To load the intelligent board driver use:
 
-    insmod istallion.o
+    modprobe istallion
 
 It will output similar messages to the smart board driver.
 
 If not using an auto-detectable board type (that is a PCI board) then you
-will also need to supply command line arguments to the "insmod" command
+will also need to supply command line arguments to the modprobe command
 when loading the driver. The general form of the configuration argument is
 
     board?=<name>[,<ioaddr>[,<addr>][,<irq>]]
@@ -111,7 +107,7 @@
     board?  -- specifies the arbitrary board number of this board,
                can be in the range 0 to 3.
 
-    name    -- textual name of this board. The board name is the comman
+    name    -- textual name of this board. The board name is the common
                board name, or any "shortened" version of that. The board
                type number may also be used here.
 
@@ -127,24 +123,24 @@
 Up to 4 board configuration arguments can be specified on the load line.
 Here is some examples:
 
-    insmod stallion.o board0=easyio,0x2a0,5
+    modprobe stallion board0=easyio,0x2a0,5
 
 This configures an EasyIO board as board 0 at I/O address 0x2a0 and IRQ 5.
 
-    insmod istallion.o board3=ec8/64,0x2c0,0xcc000
+    modprobe istallion board3=ec8/64,0x2c0,0xcc000
 
 This configures an EasyConnection 8/64 ISA as board 3 at I/O address 0x2c0 at
 memory address 0xcc000.
 
-    insmod stallion.o board1=ec8/32-at,0x2a0,0x280,10
+    modprobe stallion board1=ec8/32-at,0x2a0,0x280,10
 
 This configures an EasyConnection 8/32 ISA board at primary I/O address 0x2a0,
 secondary address 0x280 and IRQ 10.
 
 You will probably want to enter this module load and configuration information
 into your system startup scripts so that the drivers are loaded and configured
-on each system boot. Typically the start up script would be something line
-/etc/rc.d/rc.modules.
+on each system boot. Typically the start up script would be something like
+/etc/modprobe.conf.
 
 
 2.2 STATIC DRIVER CONFIGURATION:
@@ -161,8 +157,8 @@
 To set up the driver(s) for the boards that you want to use you need to
 edit the appropriate driver file and add configuration entries.
 
-If using EasyIO or EasyConnection 8/32 ISA or MCA boards, do:
-   vi /usr/src/linux/drivers/char/stallion.c
+If using EasyIO or EasyConnection 8/32 ISA or MCA boards,
+   In drivers/char/stallion.c:
       - find the definition of the stl_brdconf array (of structures)
         near the top of the file
       - modify this to match the boards you are going to install
@@ -170,8 +166,8 @@
       - save and exit
 
 If using ONboard, Brumby, Stallion or EasyConnection 8/64 (ISA or EISA)
-boards then do:
-   vi /usr/src/linux/drivers/char/istallion.c
+boards,
+   In drivers/char/istallion.c:
       - find the definition of the stli_brdconf array (of structures)
         near the top of the file
       - modify this to match the boards you are going to install
@@ -291,20 +287,20 @@
 of course the ports will not be operational!
 
 If you are using the modularized version of the driver you might want to put
-the insmod calls in the startup script as well (before the download lines
+the modprobe calls in the startup script as well (before the download lines
 obviously).
 
 
 3.2 USING THE SERIAL PORTS
 
 Once the driver is installed you will need to setup some device nodes to
-access the serial ports. The simplest method is to use the stallion utility
-"mkdevnods" script. It will automatically create device entries for Stallion
-boards. This will create the normal serial port devices as /dev/ttyE# where
-# is the port number starting from 0. A bank of 64 minor device numbers is
-allocated to each board, so the first port on the second board is port 64,
-etc. A set of callout type devices is also created. They are created as the
-devices /dev/cue# where # is the same as for the ttyE devices.
+access the serial ports. The simplest method is to use the /dev/MAKEDEV program.
+It will automatically create device entries for Stallion boards. This will
+create the normal serial port devices as /dev/ttyE# where# is the port number
+starting from 0. A bank of 64 minor device numbers is allocated to each board,
+so the first port on the second board is port 64,etc. A set of callout type
+devices may also be created. They are created as the devices /dev/cue# where #
+is the same as for the ttyE devices.
 
 For the most part the Stallion driver tries to emulate the standard PC system
 COM ports and the standard Linux serial driver. The idea is that you should
diff -urN malta/linux/Documentation/sysrq.txt malta/linux/Documentation/sysrq.txt
--- malta/linux/Documentation/sysrq.txt	2003/10/09 13:09:26	1.16
+++ malta/linux/Documentation/sysrq.txt	2005/06/21 13:20:30	1.16.1000.1
@@ -10,13 +10,32 @@
 *  How do I enable the magic SysRq key?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 You need to say "yes" to 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' when
-configuring the kernel. When running on a kernel with SysRq compiled in, it
-may be DISABLED at run-time using following command:
-
-        echo "0" > /proc/sys/kernel/sysrq
-
-Note that previous versions disabled sysrq by default, and you were required
-to specifically enable it at run-time. That is not the case any longer.
+configuring the kernel. When running a kernel with SysRq compiled in,
+/proc/sys/kernel/sysrq controls the functions allowed to be invoked via
+the SysRq key. By default the file contains 1 which means that every
+possible SysRq request is allowed (in older versions SysRq was disabled
+by default, and you were required to specifically enable it at run-time
+but this is not the case any more). Here is the list of possible values
+in /proc/sys/kernel/sysrq:
+   0 - disable sysrq completely
+   1 - enable all functions of sysrq
+  >1 - bitmask of allowed sysrq functions (see below for detailed function
+       description):
+          2 - enable control of console logging level
+          4 - enable control of keyboard (SAK, unraw)
+          8 - enable debugging dumps of processes etc.
+         16 - enable sync command
+         32 - enable remount read-only
+         64 - enable signalling of processes (term, kill, oom-kill)
+        128 - allow reboot/poweroff
+        256 - allow nicing of all RT tasks
+
+You can set the value in the file by the following command:
+    echo "number" >/proc/sys/kernel/sysrq
+
+Note that the value of /proc/sys/kernel/sysrq influences only the invocation
+via a keyboard. Invocation of any operation via /proc/sysrq-trigger is always
+allowed.
 
 *  How do I use the magic SysRq key?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -73,6 +92,8 @@
           it so that only emergency messages like PANICs or OOPSes would
           make it to your console.)
 
+'f'	- Will call oom_kill to kill a memory hog process
+
 'e'     - Send a SIGTERM to all processes, except for init.
 
 'i'     - Send a SIGKILL to all processes, except for init.
diff -urN malta/linux/Documentation/tipar.txt malta/linux/Documentation/tipar.txt
--- malta/linux/Documentation/tipar.txt	2003/06/04 14:05:37	1.2
+++ malta/linux/Documentation/tipar.txt	2005/06/21 13:20:30	1.2.1000.1
@@ -4,7 +4,7 @@
 
 
 Author: Romain Lievin
-Homepage: http://lpg.ticalc.org/prj_dev
+Homepage: http://lpg.ticalc.org/prj_tidev/index.html
 
 
 INTRODUCTION:
@@ -12,31 +12,30 @@
 This is a driver for the very common home-made parallel link cable, a cable 
 designed for connecting TI8x/9x graphing calculators (handhelds) to a computer
 or workstation (Alpha, Sparc). Given that driver is built on parport, the 
-parallel port abstraction layer, this driver is independent of the platform.
+parallel port abstraction layer, this driver is architecture-independent.
 
 It can also be used with another device plugged on the same port (such as a
-ZIP drive). I have a 100MB ZIP and both of them work fine !
+ZIP drive). I have a 100MB ZIP and both of them work fine!
 
 If you need more information, please visit the 'TI drivers' homepage at the URL
 above.
 
 WHAT YOU NEED:
 
-A TI calculator of course and a program capable to communicate with your 
-calculator.
-TiLP will work for sure (since I am his developer !). yal92 may be able to use
+A TI calculator and a program capable of communicating with your calculator.
+
+TiLP will work for sure (since I am its developer!). yal92 may be able to use
 it by changing tidev for tipar (may require some hacking...).
 
 HOW TO USE IT:
 
 You must have first compiled parport support (CONFIG_PARPORT_DEV): either 
 compiled in your kernel, either as a module. 
-This driver supports the new device hierarchy (devfs).
 
-Next, (as root) from your appropriate modules directory (lib/modules/2.5.XX):
+Next, (as root):
 
        modprobe parport
-       insmod tipar.o
+       modprobe tipar
 
 If it is not already there (it usually is), create the device:
 
@@ -47,14 +46,14 @@
 You will have to set permissions on this device to allow you to read/write
 from it:
 
-       chmod 666 /dev/tipar?
+       chmod 666 /dev/tipar[0..2]
        
 Now you are ready to run a linking program such as TiLP. Be sure to configure 
 it properly (RTFM).
        
 MODULE PARAMETERS:
 
-  You can set these with:  insmod tipar NAME=VALUE
+  You can set these with:  modprobe tipar NAME=VALUE
   There is currently no way to set these on a per-cable basis.
 
   NAME: timeout
@@ -66,11 +65,12 @@
   NAME: delay
   TYPE: integer
   DEFAULT: 10
-  DESC: Inter-bit delay in micro-seconds. An lower value gives an higher data 
+  DESC: Inter-bit delay in micro-seconds. A lower value gives an higher data
 	rate but makes transmission less reliable.
 
 These parameters can be changed at run time by any program via ioctl(2) calls 
-as listed in ./include/linux/ticable.h
+as listed in ./include/linux/ticable.h.
+
 Rather than write 50 pages describing the ioctl() and so on, it is
 perhaps more useful you look at ticables library (dev_link.c) that demonstrates
 how to use them, and demonstrates the features of the driver. This is
diff -urN malta/linux/Documentation/unicode.txt malta/linux/Documentation/unicode.txt
--- malta/linux/Documentation/unicode.txt	1998/05/07 02:55:58	1.2
+++ malta/linux/Documentation/unicode.txt	2005/06/21 13:20:30	1.2.1000.1
@@ -1,3 +1,13 @@
+		 Last update: 2005-01-17, version 1.4
+
+This file is maintained by H. Peter Anvin <unicode@lanana.org> as part
+of the Linux Assigned Names And Numbers Authority (LANANA) project.
+The current version can be found at:
+
+	    http://www.lanana.org/docs/unicode/unicode.txt
+
+		       ------------------------
+
 The Linux kernel code has been rewritten to use Unicode to map
 characters to fonts.  By downloading a single Unicode-to-font table,
 both the eight-bit character sets and UTF-8 mode are changed to use
@@ -18,6 +28,10 @@
 permits for example the use of block graphics even with a Latin-1 font
 loaded.
 
+Note that although these codes are similar to ISO 2022, neither the
+codes nor their uses match ISO 2022; Linux has two 8-bit codes (G0 and
+G1), whereas ISO 2022 has four 7-bit codes (G0-G3).
+
 In accordance with the Unicode standard/ISO 10646 the range U+F000 to
 U+F8FF has been reserved for OS-wide allocation (the Unicode Standard
 refers to this as a "Corporate Zone", since this is inaccurate for
@@ -26,18 +40,20 @@
 two (in case 1024- or 2048-character fonts ever become necessary).
 This leaves U+E000 to U+EFFF as End User Zone.
 
-The Unicodes in the range U+F000 to U+F1FF have been hard-coded to map
-directly to the loaded font, bypassing the translation table.  The
-user-defined map now defaults to U+F000 to U+F1FF, emulating the
-previous behaviour.  This range may expand in the future should it be
-warranted.
+[v1.2]: The Unicodes range from U+F000 and up to U+F7FF have been
+hard-coded to map directly to the loaded font, bypassing the
+translation table.  The user-defined map now defaults to U+F000 to
+U+F0FF, emulating the previous behaviour.  In practice, this range
+might be shorter; for example, vgacon can only handle 256-character
+(U+F000..U+F0FF) or 512-character (U+F000..U+F1FF) fonts.
+
 
 Actual characters assigned in the Linux Zone
 --------------------------------------------
 
-In addition, the following characters not present in Unicode 1.1.4 (at
-least, I have not found them!) have been defined; these are used by
-the DEC VT graphics map:
+In addition, the following characters not present in Unicode 1.1.4
+have been defined; these are used by the DEC VT graphics map.  [v1.2]
+THIS USE IS OBSOLETE AND SHOULD NO LONGER BE USED; PLEASE SEE BELOW.
 
 U+F800 DEC VT GRAPHICS HORIZONTAL LINE SCAN 1
 U+F801 DEC VT GRAPHICS HORIZONTAL LINE SCAN 3
@@ -48,31 +64,30 @@
 a smooth progression in the DEC VT graphics character set.  I have
 omitted the scan 5 line, since it is also used as a block-graphics
 character, and hence has been coded as U+2500 FORMS LIGHT HORIZONTAL.
-However, I left U+F802 blank should the need arise.  
+
+[v1.3]: These characters have been officially added to Unicode 3.2.0;
+they are added at U+23BA, U+23BB, U+23BC, U+23BD.  Linux now uses the
+new values.
+
+[v1.2]: The following characters have been added to represent common
+keyboard symbols that are unlikely to ever be added to Unicode proper
+since they are horribly vendor-specific.  This, of course, is an
+excellent example of horrible design.
+
+U+F810 KEYBOARD SYMBOL FLYING FLAG
+U+F811 KEYBOARD SYMBOL PULLDOWN MENU
+U+F812 KEYBOARD SYMBOL OPEN APPLE
+U+F813 KEYBOARD SYMBOL SOLID APPLE
 
 Klingon language support
 ------------------------
 
-Unfortunately, Unicode/ISO 10646 does not allocate code points for the
-language Klingon, probably fearing the potential code point explosion
-if many fictional languages were submitted for inclusion.  There are
-also political reasons (the Japanese, for example, are not too happy
-about the whole 16-bit concept to begin with.)  However, with Linux
-being a hacker-driven OS it seems this is a brilliant linguistic hack
-worth supporting.  Hence I have chosen to add it to the list in the
-Linux Zone.
-
-Several glyph forms for the Klingon alphabet have been proposed.
-However, since the set of symbols appear to be consistent throughout,
-with only the actual shapes being different, in keeping with standard
-Unicode practice these differences are considered font variants.
-
-Klingon has an alphabet of 26 characters, a positional numeric writing
-system with 10 digits, and is written left-to-right, top-to-bottom.
-Punctuation appears to be only used in Latin transliteration; it
-appears customary to write each sentence on its own line, and
-centered.  Space has been reserved for punctuation should it prove
-necessary.
+In 1996, Linux was the first operating system in the world to add
+support for the artificial language Klingon, created by Marc Okrand
+for the "Star Trek" television series.	This encoding was later
+adopted by the ConScript Unicode Registry and proposed (but ultimately
+rejected) for inclusion in Unicode Plane 1.  Thus, it remains as a
+Linux/CSUR private assignment in the Linux Zone.
 
 This encoding has been endorsed by the Klingon Language Institute.
 For more information, contact them at:
@@ -84,6 +99,19 @@
 located it at the end, on a 16-cell boundary in keeping with standard
 Unicode practice.
 
+NOTE: This range is now officially managed by the ConScript Unicode
+Registry.  The normative reference is at:
+
+	http://www.evertype.com/standards/csur/klingon.html
+
+Klingon has an alphabet of 26 characters, a positional numeric writing
+system with 10 digits, and is written left-to-right, top-to-bottom.
+
+Several glyph forms for the Klingon alphabet have been proposed.
+However, since the set of symbols appear to be consistent throughout,
+with only the actual shapes being different, in keeping with standard
+Unicode practice these differences are considered font variants.
+
 U+F8D0	KLINGON LETTER A
 U+F8D1	KLINGON LETTER B
 U+F8D2	KLINGON LETTER CH
@@ -124,16 +152,24 @@
 U+F8F8	KLINGON DIGIT EIGHT
 U+F8F9	KLINGON DIGIT NINE
 
+U+F8FD	KLINGON COMMA
+U+F8FE	KLINGON FULL STOP
+U+F8FF	KLINGON SYMBOL FOR EMPIRE
+
 Other Fictional and Artificial Scripts
 --------------------------------------
 
 Since the assignment of the Klingon Linux Unicode block, a registry of
-fictional and artificial scripts has been established by John Cowan,
-<cowan@ccil.org>.  The ConScript Unicode Registry is accessible at
-http://locke.ccil.org/~cowan/csur/; the ranges used fall at the bottom
-of the End User Zone and can hence not be normatively assigned, but it
-is recommended that people who wish to encode fictional scripts use
-these codes, in the interest of interoperability.  For Klingon, CSUR
-has adopted the Linux encoding.
-
-	H. Peter Anvin <hpa@zytor.com>
+fictional and artificial scripts has been established by John Cowan
+<jcowan@reutershealth.com> and Michael Everson <everson@evertype.com>.
+The ConScript Unicode Registry is accessible at:
+
+	  http://www.evertype.com/standards/csur/
+
+The ranges used fall at the low end of the End User Zone and can hence
+not be normatively assigned, but it is recommended that people who
+wish to encode fictional scripts use these codes, in the interest of
+interoperability.  For Klingon, CSUR has adopted the Linux encoding.
+The CSUR people are driving adding Tengwar and Cirth into Unicode
+Plane 1; the addition of Klingon to Unicode Plane 1 has been rejected
+and so the above encoding remains official.
diff -urN malta/linux/Documentation/README.moxa malta/linux/Documentation/README.moxa
--- malta/linux/Documentation/Attic/README.moxa	2005-06-21 14:20:32.177509000 +0100	1.1
+++ malta/linux/Documentation/Attic/README.moxa	1970/01/01 00:00:00+0100
@@ -1,18 +0,0 @@
- ===================================================================	
- Release Note of Linux Driver for Moxa's C104/C168/CI-104J
- ===================================================================	
-
- -------------------------------------------------------------------
- Ver. 1.1  				               Sep.  1, 1999
- -------------------------------------------------------------------
- 1. Improved:
-   a. Static driver (kernel) and dynamic driver (loadable module) 
-      modes are supported.
-   b. Multiple Smartio PCI series boards sharing the same IRQ 
-      supported.
-
- -------------------------------------------------------------------
- Ver. 1.0  				               Feb  17, 1997
- -------------------------------------------------------------------
- 1. Newly release.
-
diff -urN malta/linux/Documentation/digiboard.txt malta/linux/Documentation/digiboard.txt
--- malta/linux/Documentation/Attic/digiboard.txt	2005-06-21 14:20:32.192642000 +0100	1.9
+++ malta/linux/Documentation/Attic/digiboard.txt	1970/01/01 00:00:00+0100
@@ -1,272 +0,0 @@
-The Linux Digiboard Driver
---------------------------
-
-The Digiboard Driver for Linux supports the following boards:
-
- DigiBoard PC/Xi, PC/Xe, PC/Xeve(which is the newer, smaller Xe with
- a 8K window which is also known as PC/Xe(8K) and has no memory/irq
- switches) You can use up to 4 cards with this driver and it should work
- on other architectures than intel also.
-
-A version of this driver has been taken by Digiboard to make a driver
-software package which supports also PC/Xem cards and newer PCI cards
-but it doesn't support the old PC/Xi cards and it isn't yet ported to
-linux-2.1.x and may not be usable on other architectures than intel now.
-It is available from ftp.digi.com/ftp.digiboard.com. You can write me if
-you need an patch for this driver.
-
-Bernhard Kaindl (bkaindl@netway.at)  6. April 1997.
-
-Configuring the Driver
-----------------------
-
-The driver can be built direct into the kernel or as a module.
-The pcxx driver can be configured using the command line feature while
-loading the kernel with LILO or LOADLIN or, if built as a module,
-with arguments to insmod and modprobe or with parameters in
-/etc/modprobe.conf for modprobe and kerneld.
-
-After configuring the driver you need to create the device special files
-as described in "Device file creation:" below and set the appropriate
-permissions for your application.
-
-As Module
----------
-
-modprobe pcxx io=<io> \
-  membase=<membase> \
-  memsize=<memsize> \
-  numports=<numports>  \
-  altpin=<altpin> \
-  verbose=<verbose>
-
-or, if several cards are installed
-
-modprobe pcxx io=<io-1>,<io-2>,... \
-  membase=<membase-1>,<membase-2>,... \
-  memsize=<memsize-1>,<memsize-2>,... \
-  numports=<numports-1>,<numports-2>,... \
-  altpin=<altpin-1>,<altpin-2>,... \
-  verbose=<verbose>
-
-where <io-N> is the io address of the Nth card and <membase-N> is the
-memory base address of the Nth card, etc.
-
-The parameters can be specified in any order. For example, the numports
-parameter can precede the membase parameter, or vice versa. If several
-cards are installed the ordering within the comma separated parameter
-lists must be consistent, of course.
-
-io       - I/O port address of that card.
-membase  - Memory start address of that card.
-memsize  - Memory size of that card, in kilobytes. If given, this value
-           is compared against the card to verify configuration and
-           hinder the driver from using a misconfigured card. If the parameter
-           does not match the board it is disabled with a memory size error.
-numports - Number of ports on this card. This is the number of devices to
-           assign to this card or reserve if disabled.
-altpin   - 1: swap DCD and DSR for 8-pin RJ-45 with modems.
-	   0: don't swap DCD and DSR.
-           other values count as 1.
-verbose  - 1: give nice verbose output during initialisation of the driver,
-              possibly helpful during board configuration.
-           0: normal terse output.
-
-Only the parameters which differ from the defaults need to be specified.
-If the io= parameter is not given, the default config is used. This is
-
-  io=0x200 membase=0xD0000 numports=16 altpin=0
-
-Only applicable parameters need be specified. For example to configure
-2 boards, first one at 0x200 with 8 ports, rest defaults, second one at
-0x120, memory at 0xD80000, altpin enabled, rest defaults, you can do this
-by using these parameters:
-
-  modprobe pcxx io=0x200,0x120 numports=8,8 membase=,0xD80000 altpin=,1
-
-To disable a temporary unusable board without changing the mapping of the
-devices following that board, you can empty the io-value for that board:
-
-  modprobe pcxx io=,0x120 numports=8,8 membase=,0xD80000 altpin=,1
-
-The remaining board still uses ttyD8-ttyD15 and cud8-cud15.
-
-Example line for /etc/modprobe.conf for use with kerneld and as default
-parameters for modprobe:
-
-options pcxx           io=0x200 numports=8
-
-For kmod to work you will likely need to add these two lines to your
-/etc/modprobe.conf:
-
-alias char-major-22    pcxx
-alias char-major-23    pcxx
-
-
-Boot-time configuration when linked into the kernel
----------------------------------------------------
-
-Per board to be configured, pass a digi= command-line parameter to the
-kernel using lilo or loadlin. It consists of a string of comma separated
-identifiers or integers.  The 6 values in order are:
-
-Card status:      Enable      - use that board
-		  Disable     - don't actually use that board.
-
-Card type:        PC/Xi       - the old ones with 64/128/256/512K RAM.
-		  PC/Xe       - PC/Xe(old ones with 64k mem range).
-		  PC/Xeve     - PC/Xe(new ones with 8k mem range).
-
-Note: This is for documentation only, the type is detected from the board.
-
-Altpin setting:   Enable      - swap DCD and DSR for 8-pin RJ-45 with modems.
-		  Disable     - don't swap DCD and DSR.
-
-Number of ports:  1 ... 16    - Number of ports on this card. This is the
-				number of devices to assign to this card.
-
-I/O port address: eg. 200     - I/O Port address where the card is configured.
-
-Memory base addr: eg. 80000   - Memory address where the board's memory starts.
-
-This is an example for a line which you can insert into you lilo.conf:
-
-   append="digi=Enable,PC/Xi,Disable,4,120,D0000"
-
-there is an alternate form, in which you must use decimal values only:
-
-   append="digi=1,0,0,16,512,851968"
-
-If you don't give a digi= command line, the compiled-in defaults of
-board 1: io=0x200, membase=0xd0000, altpin=off and numports=16 are used.
-
-If you have the resources (io&mem) free for use, configure your board to
-these settings and you should be set up fine even if yours has not got 16 
-ports.
-
-
-Sources of Information
-----------------------
-
-Please contact digi directly digilnux@dgii.com. Forward any information of
-general interest to me so that I can include it on the webpage.
-
-Web page: http://lameter.com/digi
-
-Christoph Lameter (christoph@lameter.com) Aug 14, 2000.
-
-Device file creation
---------------------
-
-Currently the Linux MAKEDEV command does not support generating the Digiboard
-Devices. 
-
-The /dev/cud devices behave like the /dev/cua devices
-and the ttyD devices are like the /dev/ttyS devices.
-
-Use the following script to generate the devices:
-
------------------- mkdigidev begin
-#!/bin/sh
-#
-# Script to create Digiboard Devices
-# Christoph Lameter, April 16, 1996
-#
-# Usage:
-# mkdigidev [<number of devices>]
-# 
-
-DIGI_MAJOR=23
-DIGICU_MAJOR=22
-
-BOARDS=$1
-
-if [ "$BOARDS" = "" ]; then
-BOARDS=1
-fi
-
-boardnum=0
-while [ $boardnum -lt $BOARDS ];
-do
-  for c in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15;
-  do
-	name=`expr $boardnum \* 16 + $c`
-	mknod /dev/cud$name c $DIGICU_MAJOR $name
-	mknod /dev/ttyD$name c $DIGI_MAJOR $name
-  done
-  boardnum=`expr $boardnum + 1`
-done
------------------- mkdigidev end
-
-or apply the following patch to /dev/MAKEDEV and do a 
-sh /dev/MAKEDEV digi
-
------ MAKEDEV Patch
---- /dev/MAKEDEV	Sun Aug 13 15:48:23 1995
-+++ MAKEDEV	Tue Apr 16 17:53:27 1996
-@@ -120,7 +120,7 @@
- 	while [ $# -ne 0 ]
- 	do
- 		case "$1" in
--			mem|tty|ttyp|cua|cub)	;;
-+			mem|tty|ttyp|cua|cub|cud)	;;
- 			hd)	echo hda hdb hdc hdd ;;
- 			xd)	echo xda xdb ;;
- 			fd)	echo fd0 fd1 ;;
-@@ -140,6 +140,7 @@
- 			dcf)		echo dcf ;;
- 			pcmcia)	;; # taken care of by its own driver
- 			ttyC)	echo cyclades ;;
-+			ttyD)	echo digi ;;
- 			*)	echo "$0: don't know what \"$1\" is" >&2 ;;
- 		esac
- 		shift
-@@ -208,6 +209,15 @@
- 		do
- 			makedev ttyC$i c $major1 `expr 32 + $i` $tty
- 			makedev cub$i c $major2 `expr 32 + $i` $dialout
-+		done
-+		;;
-+	digi)
-+		major1=`Major ttyD` || continue
-+		major2=`Major cud` || continue
-+		for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-+		do
-+			makedev ttyD$i c $major1 `expr 32 + $i` $tty
-+			makedev cud$i c $major2 `expr 32 + $i` $dialout
- 		done
- 		;;
- 	par[0-2])
------ End Makedev patch
-
------------------------------------------------------------------------------
-
-Changes v1.5.5:
-
-The ability to use the kernel's command line to pass in the configuration for 
-boards.  Using LILO's APPEND command, a string of comma separated identifiers 
-or integers can be used.  The 6 values in order are:
-
-   Enable/Disable this card,
-   Type of card: PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)
-   Enable/Disable alternate pin arrangement,
-   Number of ports on this card,
-   I/O Port where card is configured (in HEX if using string identifiers),
-   Base of memory window (in HEX if using string identifiers), 
-
-Samples:
-   append="digi=E,PC/Xi,D,16,200,D0000"
-   append="digi=1,0,0,16,512,(whatever D0000 is in base 10 :)
-
-Drivers' minor device numbers are conserved. This means that instead of
-each board getting a block of 16 minors pre-assigned, it gets however
-many it should, with the next card following directly behind it.  A
-system with 4 2-port PC/Xi boards will use minor numbers 0-7.
-This conserves some memory, and removes a few hard coded constants.
-
-NOTE!! NOTE!! NOTE!!
-The definition of PC/Xem as a valid board type is the BEGINNING of support
-for this device.  The driver does not currently recognise the board, nor
-does it want to initialize it.  At least not the EISA version.
-
-Mike McLagan <mike.mclagan@linux.org> 5, April 1996.
diff -urN malta/linux/Documentation/mkdev.cciss malta/linux/Documentation/mkdev.cciss
--- malta/linux/Documentation/Attic/mkdev.cciss	2005-06-21 14:20:32.210950000 +0100	1.1
+++ malta/linux/Documentation/Attic/mkdev.cciss	1970/01/01 00:00:00+0100
@@ -1,40 +0,0 @@
-#!/bin/sh
-# Script to create device nodes for SMART array controllers
-# Usage:
-#	mkdev.cciss [num controllers] [num log volumes] [num partitions]
-#
-# With no arguments, the script assumes 1 controller, 16 logical volumes,
-# and 16 partitions/volume, which is adequate for most configurations.
-#
-# If you had 5 controllers and were planning on no more than 4 logical volumes
-# each, using a maximum of 8 partitions per volume, you could say:
-#
-# mkdev.cciss 5 4 8
-#
-# Of course, this has no real benefit over "mkdev.cciss 5" except that it
-# doesn't create so many device nodes in /dev/cciss.
-
-NR_CTLR=${1-1}
-NR_VOL=${2-16}
-NR_PART=${3-16}
-
-if [ ! -d /dev/cciss ]; then
-	mkdir -p /dev/cciss
-fi
-
-C=0; while [ $C -lt $NR_CTLR ]; do
-	MAJ=`expr $C + 104`
-	D=0; while [ $D -lt $NR_VOL ]; do
-		P=0; while [ $P -lt $NR_PART ]; do
-			MIN=`expr $D \* 16 + $P`
-			if [ $P -eq 0 ]; then
-				mknod /dev/cciss/c${C}d${D} b $MAJ $MIN
-			else
-				mknod /dev/cciss/c${C}d${D}p${P} b $MAJ $MIN
-			fi
-			P=`expr $P + 1`
-		done
-		D=`expr $D + 1`
-	done
-	C=`expr $C + 1`
-done
diff -urN malta/linux/Documentation/mkdev.ida malta/linux/Documentation/mkdev.ida
--- malta/linux/Documentation/Attic/mkdev.ida	2005-06-21 14:20:32.226755000 +0100	1.2
+++ malta/linux/Documentation/Attic/mkdev.ida	1970/01/01 00:00:00+0100
@@ -1,40 +0,0 @@
-#!/bin/sh
-# Script to create device nodes for SMART array controllers
-# Usage:
-#	mkdev.ida [num controllers] [num log volumes] [num partitions]
-#
-# With no arguments, the script assumes 1 controller, 16 logical volumes,
-# and 16 partitions/volume, which is adequate for most configurations.
-#
-# If you had 5 controllers and were planning on no more than 4 logical volumes
-# each, using a maximum of 8 partitions per volume, you could say:
-#
-# mkdev.ida 5 4 8
-#
-# Of course, this has no real benefit over "mkdev.ida 5" except that it
-# doesn't create so many device nodes in /dev/ida.
-
-NR_CTLR=${1-1}
-NR_VOL=${2-16}
-NR_PART=${3-16}
-
-if [ ! -d /dev/ida ]; then
-	mkdir -p /dev/ida
-fi
-
-C=0; while [ $C -lt $NR_CTLR ]; do
-	MAJ=`expr $C + 72`
-	D=0; while [ $D -lt $NR_VOL ]; do
-		P=0; while [ $P -lt $NR_PART ]; do
-			MIN=`expr $D \* 16 + $P`
-			if [ $P -eq 0 ]; then
-				mknod /dev/ida/c${C}d${D} b $MAJ $MIN
-			else
-				mknod /dev/ida/c${C}d${D}p${P} b $MAJ $MIN
-			fi
-			P=`expr $P + 1`
-		done
-		D=`expr $D + 1`
-	done
-	C=`expr $C + 1`
-done
diff -urN malta/linux/Documentation/BK-usage/00-INDEX malta/linux/Documentation/BK-usage/00-INDEX
--- malta/linux/Documentation/BK-usage/Attic/00-INDEX	2005-06-21 14:20:32.455386000 +0100	1.2
+++ malta/linux/Documentation/BK-usage/Attic/00-INDEX	1970/01/01 00:00:00+0100
@@ -1,51 +0,0 @@
-bk-kernel-howto.txt: Description of kernel workflow under BitKeeper
-
-bk-make-sum: Create summary of changesets in one repository and not
-another, typically in preparation to be sent to an upstream maintainer.
-Typical usage:
-	cd my-updated-repo
-	bk-make-sum ~/repo/original-repo
-	mv /tmp/linus.txt ../original-repo.txt
-
-bksend: Create readable text output containing summary of changes, GNU
-patch of the changes, and BK metadata of changes (as needed for proper
-importing into BitKeeper by an upstream maintainer).  This output is
-suitable for emailing BitKeeper changes.  The recipient of this output
-may pipe it directly to 'bk receive'.
-
-bz64wrap: helper script. Uncompressed input is piped to this script,
-which compresses its input, and then outputs the uu-/base64-encoded
-version of the compressed input.
-
-cpcset: Copy changeset between unrelated repositories.
-Attempts to preserve changeset user, user address, description, in
-addition to the changeset (the patch) itself.
-Typical usage:
-	cd my-updated-repo
-	bk changes	# looking for a changeset...
-	cpcset 1.1511 . ../another-repo
-
-csets-to-patches: Produces a delta of two BK repositories, in the form
-of individual files, each containing a single cset as a GNU patch.
-Output is several files, each with the filename "/tmp/rev-$REV.patch"
-Typical usage:
-	cd my-updated-repo
-	bk changes -L ~/repo/original-repo 2>&1 | \
-		perl csets-to-patches
-
-cset-to-linus: Produces a delta of two BK repositories, in the form of
-changeset descriptions, with 'diffstat' output created for each
-individual changset.
-Typical usage:
-	cd my-updated-repo
-	bk changes -L ~/repo/original-repo 2>&1 | \
-		perl cset-to-linus > summary.txt
-
-gcapatch:  Generates patch containing changes in local repository.
-Typical usage:
-	cd my-updated-repo
-	gcapatch > foo.patch
-
-unbz64wrap: Reverse an encoded, compressed data stream created by
-bz64wrap into an uncompressed, typically text/plain output.
-
diff -urN malta/linux/Documentation/BK-usage/bk-kernel-howto.txt malta/linux/Documentation/BK-usage/bk-kernel-howto.txt
--- malta/linux/Documentation/BK-usage/Attic/bk-kernel-howto.txt	2005-06-21 14:20:32.471259000 +0100	1.6
+++ malta/linux/Documentation/BK-usage/Attic/bk-kernel-howto.txt	1970/01/01 00:00:00+0100
@@ -1,283 +0,0 @@
-
-		   Doing the BK Thing, Penguin-Style
-
-
-
-
-This set of notes is intended mainly for kernel developers, occasional
-or full-time, but sysadmins and power users may find parts of it useful
-as well.  It assumes at least a basic familiarity with CVS, both at a
-user level (use on the cmd line) and at a higher level (client-server model).
-Due to the author's background, an operation may be described in terms
-of CVS, or in terms of how that operation differs from CVS.
-
-This is -not- intended to be BitKeeper documentation.  Always run
-"bk help <command>" or in X "bk helptool <command>" for reference
-documentation.
-
-
-BitKeeper Concepts
-------------------
-
-In the true nature of the Internet itself, BitKeeper is a distributed
-system.  When applied to revision control, this means doing away with
-client-server, and changing to a parent-child model... essentially
-peer-to-peer.  On the developer's end, this also represents a
-fundamental disruption in the standard workflow of changes, commits,
-and merges.  You will need to take a few minutes to think about
-how to best work under BitKeeper, and re-optimize things a bit.
-In some sense it is a bit radical, because it might described as
-tossing changes out into a maelstrom and having them magically
-land at the right destination... but I'm getting ahead of myself.
-
-Let's start with this progression:
-Each BitKeeper source tree on disk is a repository unto itself.
-Each repository has a parent (except the root/original, of course).
-Each repository contains a set of a changesets ("csets").
-Each cset is one or more changed files, bundled together.
-
-Each tree is a repository, so all changes are checked into the local
-tree.  When a change is checked in, all modified files are grouped
-into a logical unit, the changeset.  Internally, BK links these
-changesets in a tree, representing various converging and diverging
-lines of development.  These changesets are the bread and butter of
-the BK system.
-
-After the concept of changesets, the next thing you need to get used
-to is having multiple copies of source trees lying around.  This -really-
-takes some getting used to, for some people.  Separate source trees
-are the means in BitKeeper by which you delineate parallel lines
-of development, both minor and major.  What would be branches in
-CVS become separate source trees, or "clones" in BitKeeper [heh,
-or Star Wars] terminology.
-
-Clones and changesets are the tools from which most of the power of
-BitKeeper is derived.  As mentioned earlier, each clone has a parent,
-the tree used as the source when the new clone was created.  In a
-CVS-like setup, the parent would be a remote server on the Internet,
-and the child is your local clone of that tree.
-
-Once you have established a common baseline between two source trees --
-a common parent -- then you can merge changesets between those two
-trees with ease.  Merging changes into a tree is called a "pull", and
-is analagous to 'cvs update'.  A pull downloads all the changesets in
-the remote tree you do not have, and merges them.  Sending changes in
-one tree to another tree is called a "push".  Push sends all changes
-in the local tree the remote does not yet have, and merges them.
-
-From these concepts come some initial command examples:
-
-1) bk clone -q http://linux.bkbits.net/linux-2.5 linus-2.5
-Download a 2.5 stock kernel tree, naming it "linus-2.5" in the local dir.
-The "-q" disables listing every single file as it is downloaded.
-
-2) bk clone -ql linus-2.5 alpha-2.5
-Create a separate source tree for the Alpha AXP architecture.
-The "-l" uses hard links instead of copying data, since both trees are
-on the local disk.  You can also replace the above with "bk lclone -q ..."
-
-You only clone a tree -once-.  After cloning the tree lives a long time
-on disk, being updating by pushes and pulls.
-
-3) cd alpha-2.5 ; bk pull http://gkernel.bkbits.net/alpha-2.5
-Download changes in "alpha-2.5" repository which are not present
-in the local repository, and merge them into the source tree.
-
-4) bk -r co -q
-Because every tree is a repository, files must be checked out before
-they will be in their standard places in the source tree.
-
-5)	bk vi fs/inode.c				# example change...
-	bk citool					# checkin, using X tool
-	bk push bk://gkernel@bkbits.net/alpha-2.5	# upload change
-Typical example of a BK sequence that would replace the analagous CVS
-situation,
-	vi fs/inode.c
-	cvs commit
-
-As this is just supposed to be a quick BK intro, for more in-depth
-tutorials, live working demos, and docs, see http://www.bitkeeper.com/
-
-
-
-BK and Kernel Development Workflow
-----------------------------------
-Currently the latest 2.5 tree is available via "bk clone $URL"
-and "bk pull $URL" at http://linux.bkbits.net/linux-2.5
-This should change in a few weeks to a kernel.org URL.
-
-
-A big part of using BitKeeper is organizing the various trees you have
-on your local disk, and organizing the flow of changes among those
-trees, and remote trees.  If one were to graph the relationships between
-a desired BK setup, you are likely to see a few-many-few graph, like
-this:
-
-		    linux-2.5
-		        |
-	       merge-to-linus-2.5
-		 /    |      |
-	        /     |      |
-	vm-hacks  bugfixes  filesys   personal-hacks
-	      \	      |	     |		/
-	       \      |      |         /
-		\     |      |        /
-	         testing-and-validation
-
-Since a "bk push" sends all changes not in the target tree, and
-since a "bk pull" receives all changes not in the source tree, you want
-to make sure you are only pushing specific changes to the desired tree,
-not all changes from "peer parent" trees.  For example, pushing a change
-from the testing-and-validation tree would probably be a bad idea,
-because it will push all changes from vm-hacks, bugfixes, filesys, and
-personal-hacks trees into the target tree.
-
-One would typically work on only one "theme" at a time, either
-vm-hacks or bugfixes or filesys, keeping those changes isolated in
-their own tree during development, and only merge the isolated with
-other changes when going upstream (to Linus or other maintainers) or
-downstream (to your "union" trees, like testing-and-validation above).
-
-It should be noted that some of this separation is not just recommended
-practice, it's actually [for now] -enforced- by BitKeeper.  BitKeeper
-requires that changesets maintain a certain order, which is the reason
-that "bk push" sends all local changesets the remote doesn't have.  This
-separation may look like a lot of wasted disk space at first, but it
-helps when two unrelated changes may "pollute" the same area of code, or
-don't follow the same pace of development, or any other of the standard
-reasons why one creates a development branch.
-
-Small development branches (clones) will appear and disappear:
-
-	-------- A --------- B --------- C --------- D -------
-	          \                                 /
-		   -----short-term devel branch-----
-
-While long-term branches will parallel a tree (or trees), with period
-merge points.  In this first example, we pull from a tree (pulls,
-"\") periodically, such as what occurs when tracking changes in a
-vendor tree, never pushing changes back up the line:
-
-	-------- A --------- B --------- C --------- D -------
-	          \                       \           \
-	           ----long-term devel branch-----------------
-
-And then a more common case in Linux kernel development, a long term
-branch with periodic merges back into the tree (pushes, "/"):
-
-	-------- A --------- B --------- C --------- D -------
-	          \                       \         / \
-	           ----long-term devel branch-----------------
-
-
-
-
-
-Submitting Changes to Linus
----------------------------
-There's a bit of an art, or style, of submitting changes to Linus.
-Since Linus's tree is now (you might say) fully integrated into the
-distributed BitKeeper system, there are several prerequisites to
-properly submitting a BitKeeper change.  All these prereq's are just
-general cleanliness of BK usage, so as people become experts at BK, feel
-free to optimize this process further (assuming Linus agrees, of
-course).
-
-
-
-0) Make sure your tree was originally cloned from the linux-2.5 tree
-created by Linus.  If your tree does not have this as its ancestor, it
-is impossible to reliably exchange changesets.
-
-
-
-1) Pay attention to your commit text.  The commit message that
-accompanies each changeset you submit will live on forever in history,
-and is used by Linus to accurately summarize the changes in each
-pre-patch.  Remember that there is no context, so
-	"fix for new scheduler changes"
-would be too vague, but
-	"fix mips64 arch for new scheduler switch_to(), TIF_xxx semantics"
-would be much better.
-
-You can and should use the command "bk comment -C<rev>" to update the
-commit text, and improve it after the fact.  This is very useful for
-development: poor, quick descriptions during development, which get
-cleaned up using "bk comment" before issuing the "bk push" to submit the
-changes.
-
-
-
-2) Include an Internet-available URL for Linus to pull from, such as
-
-	Pull from:  http://gkernel.bkbits.net/net-drivers-2.5
-
-
-
-3) Include a summary and "diffstat -p1" of each changeset that will be
-downloaded, when Linus issues a "bk pull".  The author auto-generates
-these summaries using "bk changes -L <parent>", to obtain a listing
-of all the pending-to-send changesets, and their commit messages.
-
-It is important to show Linus what he will be downloading when he issues
-a "bk pull", to reduce the time required to sift the changes once they
-are downloaded to Linus's local machine.
-
-IMPORTANT NOTE:  One of the features of BK is that your repository does
-not have to be up to date, in order for Linus to receive your changes.
-It is considered a courtesy to keep your repository fairly recent, to
-lessen any potential merge work Linus may need to do.
-
-
-4) Split up your changes.  Each maintainer<->Linus situation is likely
-to be slightly different here, so take this just as general advice.  The
-author splits up changes according to "themes" when merging with Linus.
-Simultaneous pushes from local development go to special trees which
-exist solely to house changes "queued" for Linus.  Example of the trees:
-
-	net-drivers-2.5 -- on-going net driver maintenance
-	vm-2.5 -- VM-related changes
-	fs-2.5 -- filesystem-related changes
-
-Linus then has much more freedom for pulling changes.  He could (for
-example) issue a "bk pull" on vm-2.5 and fs-2.5 trees, to merge their
-changes, but hold off net-drivers-2.5 because of a change that needs
-more discussion.
-
-Other maintainers may find that a single linus-pull-from tree is
-adequate for passing BK changesets to him.
-
-
-
-Frequently Answered Questions
------------------------------
-1) How do I change the e-mail address shown in the changelog?
-A. When you run "bk citool" or "bk commit", set environment
-   variables BK_USER and BK_HOST to the desired username
-   and host/domain name.
-
-
-2) How do I use tags / get a diff between two kernel versions?
-A. Pass the tags Linus uses to 'bk export'.
-
-ChangeSets are in a forward-progressing order, so it's pretty easy
-to get a snapshot starting and ending at any two points in time.
-Linus puts tags on each release and pre-release, so you could use
-these two examples:
-
-    bk export -tpatch -hdu -rv2.5.4,v2.5.5 | less
-        # creates patch-2.5.5 essentially
-    bk export -tpatch -du -rv2.5.5-pre1,v2.5.5 | less
-        # changes from pre1 to final
-
-A tag is just an alias for a specific changeset... and since changesets
-are ordered, a tag is thus a marker for a specific point in time (or
-specific state of the tree).
-
-
-3) Is there an easy way to generate One Big Patch versus mainline,
-   for my long-lived kernel branch?
-A. Yes.  This requires BK 3.x, though.
-
-	bk export -tpatch -r`bk repogca bk://linux.bkbits.net/linux-2.5`,+
-
diff -urN malta/linux/Documentation/BK-usage/bk-make-sum malta/linux/Documentation/BK-usage/bk-make-sum
--- malta/linux/Documentation/BK-usage/Attic/bk-make-sum	2005-06-21 14:20:32.488785000 +0100	1.2
+++ malta/linux/Documentation/BK-usage/Attic/bk-make-sum	1970/01/01 00:00:00+0100
@@ -1,34 +0,0 @@
-#!/bin/sh -e
-# DIR=$HOME/BK/axp-2.5
-# cd $DIR
-
-LINUS_REPO=$1
-DIRBASE=`basename $PWD`
-
-{
-cat <<EOT
-Please do a
-
-	bk pull bk://gkernel.bkbits.net/$DIRBASE
-
-This will update the following files:
-
-EOT
-
-bk export -tpatch -hdu -r`bk repogca $LINUS_REPO`,+ | diffstat -p1 2>/dev/null
-
-cat <<EOT
-
-through these ChangeSets:
-
-EOT
-
-bk changes -L -d'$unless(:MERGE:){ChangeSet|:CSETREV:\n}' $LINUS_REPO |
-bk -R prs -h -d'$unless(:MERGE:){<:P:@:HOST:> (:D: :I:)\n$each(:C:){   (:C:)\n}\n}' -
-
-} > /tmp/linus.txt
-
-cat <<EOT
-Mail text in /tmp/linus.txt; please check and send using your favourite
-mailer.
-EOT
diff -urN malta/linux/Documentation/BK-usage/bksend malta/linux/Documentation/BK-usage/bksend
--- malta/linux/Documentation/BK-usage/Attic/bksend	2005-06-21 14:20:32.503227000 +0100	1.1
+++ malta/linux/Documentation/BK-usage/Attic/bksend	1970/01/01 00:00:00+0100
@@ -1,36 +0,0 @@
-#!/bin/sh
-# A script to format BK changeset output in a manner that is easy to read.
-# Andreas Dilger <adilger@turbolabs.com>  13/02/2002
-#
-# Add diffstat output after Changelog <adilger@turbolabs.com>   21/02/2002
-
-PROG=bksend
-
-usage() {
-	echo "usage: $PROG -r<rev>"
-	echo -e "\twhere <rev> is of the form '1.23', '1.23..', '1.23..1.27',"
-	echo -e "\tor '+' to indicate the most recent revision"
-
-	exit 1
-}
-
-case $1 in
--r) REV=$2; shift ;;
--r*) REV=`echo $1 | sed 's/^-r//'` ;;
-*) echo "$PROG: no revision given, you probably don't want that";;
-esac
-
-[ -z "$REV" ] && usage
-
-echo "You can import this changeset into BK by piping this whole message to:"
-echo "'| bk receive [path to repository]' or apply the patch as usual."
-
-SEP="\n===================================================================\n\n"
-echo -e $SEP
-bk changes -r$REV
-echo
-bk export -tpatch -du -h -r$REV | diffstat
-echo; echo
-bk export -tpatch -du -h -r$REV
-echo -e $SEP
-bk send -wgzip_uu -r$REV -
diff -urN malta/linux/Documentation/BK-usage/bz64wrap malta/linux/Documentation/BK-usage/bz64wrap
--- malta/linux/Documentation/BK-usage/Attic/bz64wrap	2005-06-21 14:20:32.517917000 +0100	1.1
+++ malta/linux/Documentation/BK-usage/Attic/bz64wrap	1970/01/01 00:00:00+0100
@@ -1,41 +0,0 @@
-#!/bin/sh
-
-# bz64wrap - the sending side of a bzip2 | base64 stream
-# Andreas Dilger <adilger@clusterfs.com>   Jan 2002
-
-
-PATH=$PATH:/usr/bin:/usr/local/bin:/usr/freeware/bin
-
-# A program to generate base64 encoding on stdout
-BASE64_ENCODE="uuencode -m /dev/stdout"
-BASE64_BEGIN=
-BASE64_END=
-
-BZIP=NO
-BASE64=NO
-
-# Test if we have the bzip program installed
-bzip2 -c /dev/null > /dev/null 2>&1 && BZIP=YES
-
-# Test if uuencode can handle the -m (MIME) encoding option
-$BASE64_ENCODE < /dev/null > /dev/null 2>&1 && BASE64=YES
-
-if [ $BASE64 = NO ]; then
-	BASE64_ENCODE=mimencode
-	BASE64_BEGIN="begin-base64 644 -"
-	BASE64_END="===="
-
-	$BASE64_ENCODE < /dev/null > /dev/null 2>&1 && BASE64=YES
-fi
-
-if [ $BZIP = NO -o $BASE64 = NO ]; then
-	echo "$0: can't use bz64 encoding: bzip2=$BZIP, $BASE64_ENCODE=$BASE64"
-	exit 1
-fi
-
-# Sadly, mimencode does not appear to have good "begin" and "end" markers
-# like uuencode does, and it is picky about getting the right start/end of
-# the base64 stream, so we handle this internally.
-echo "$BASE64_BEGIN"
-bzip2 -9 | $BASE64_ENCODE
-echo "$BASE64_END"
diff -urN malta/linux/Documentation/BK-usage/cpcset malta/linux/Documentation/BK-usage/cpcset
--- malta/linux/Documentation/BK-usage/Attic/cpcset	2005-06-21 14:20:32.532170000 +0100	1.1
+++ malta/linux/Documentation/BK-usage/Attic/cpcset	1970/01/01 00:00:00+0100
@@ -1,36 +0,0 @@
-#!/bin/sh
-#
-# Purpose: Copy changeset patch and description from one
-#	   repository to another, unrelated one.
-#
-# usage:  cpcset [revision] [from-repository] [to-repository]
-#
-
-REV=$1
-FROM=$2
-TO=$3
-TMPF=/tmp/cpcset.$$
-
-rm -f $TMPF*
-
-CWD_SAVE=`pwd`
-cd $FROM
-bk changes -r$REV			|	\
-	grep -v '^ChangeSet'		|	\
-	sed -e 's/^  //g' > $TMPF.log
-
-USERHOST=`bk changes -r$REV | grep '^ChangeSet' | awk '{print $4}'`
-export BK_USER=`echo $USERHOST | awk '-F@' '{print $1}'`
-export BK_HOST=`echo $USERHOST | awk '-F@' '{print $2}'`
-
-bk export -tpatch -hdu -r$REV > $TMPF.patch && \
-cd $CWD_SAVE && \
-cd $TO && \
-bk import -tpatch -CFR -y"`cat $TMPF.log`" $TMPF.patch . && \
-bk commit -y"`cat $TMPF.log`"
-
-rm -f $TMPF*
-
-echo changeset $REV copied.
-echo ""
-
diff -urN malta/linux/Documentation/BK-usage/cset-to-linus malta/linux/Documentation/BK-usage/cset-to-linus
--- malta/linux/Documentation/BK-usage/Attic/cset-to-linus	2005-06-21 14:20:32.546637000 +0100	1.2
+++ malta/linux/Documentation/BK-usage/Attic/cset-to-linus	1970/01/01 00:00:00+0100
@@ -1,49 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-
-my ($lhs, $rev, $tmp, $rhs, $s);
-my @cset_text = ();
-my @pipe_text = ();
-my $have_cset = 0;
-
-while (<>) {
-	next if /^---/;
-
-	if (($lhs, $tmp, $rhs) = (/^(ChangeSet\@)([^,]+)(, .*)$/)) {
-		&cset_rev if ($have_cset);
-
-		$rev = $tmp;
-		$have_cset = 1;
-
-		push(@cset_text, $_);
-	}
-
-	elsif ($have_cset) {
-		push(@cset_text, $_);
-	}
-}
-&cset_rev if ($have_cset);
-exit(0);
-
-
-sub cset_rev {
-	my $empty_cset = 0;
-
-	open PIPE, "bk export -tpatch -hdu -r $rev | diffstat -p1 2>/dev/null |" or die;
-	while ($s = <PIPE>) {
-		$empty_cset = 1 if ($s =~ /0 files changed/);
-		push(@pipe_text, $s);
-	}
-	close(PIPE);
-
-	if (! $empty_cset) {
-		print @cset_text;
-		print @pipe_text;
-		print "\n\n";
-	}
-
-	@pipe_text = ();
-	@cset_text = ();
-}
-
diff -urN malta/linux/Documentation/BK-usage/csets-to-patches malta/linux/Documentation/BK-usage/csets-to-patches
--- malta/linux/Documentation/BK-usage/Attic/csets-to-patches	2005-06-21 14:20:32.562002000 +0100	1.2
+++ malta/linux/Documentation/BK-usage/Attic/csets-to-patches	1970/01/01 00:00:00+0100
@@ -1,44 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-
-my ($lhs, $rev, $tmp, $rhs, $s);
-my @cset_text = ();
-my @pipe_text = ();
-my $have_cset = 0;
-
-while (<>) {
-	next if /^---/;
-
-	if (($lhs, $tmp, $rhs) = (/^(ChangeSet\@)([^,]+)(, .*)$/)) {
-		&cset_rev if ($have_cset);
-
-		$rev = $tmp;
-		$have_cset = 1;
-
-		push(@cset_text, $_);
-	}
-
-	elsif ($have_cset) {
-		push(@cset_text, $_);
-	}
-}
-&cset_rev if ($have_cset);
-exit(0);
-
-
-sub cset_rev {
-	my $empty_cset = 0;
-
-	system("bk export -tpatch -du -r $rev > /tmp/rev-$rev.patch");
-
-	if (! $empty_cset) {
-		print @cset_text;
-		print @pipe_text;
-		print "\n\n";
-	}
-
-	@pipe_text = ();
-	@cset_text = ();
-}
-
diff -urN malta/linux/Documentation/BK-usage/gcapatch malta/linux/Documentation/BK-usage/gcapatch
--- malta/linux/Documentation/BK-usage/Attic/gcapatch	2005-06-21 14:20:32.576498000 +0100	1.1
+++ malta/linux/Documentation/BK-usage/Attic/gcapatch	1970/01/01 00:00:00+0100
@@ -1,8 +0,0 @@
-#!/bin/sh
-#
-# Purpose: Generate GNU diff of local changes versus canonical top-of-tree
-#
-# Usage: gcapatch > foo.patch
-#
-
-bk export -tpatch -hdu -r`bk repogca bk://linux.bkbits.net/linux-2.5`,+
diff -urN malta/linux/Documentation/BK-usage/unbz64wrap malta/linux/Documentation/BK-usage/unbz64wrap
--- malta/linux/Documentation/BK-usage/Attic/unbz64wrap	2005-06-21 14:20:32.590750000 +0100	1.2
+++ malta/linux/Documentation/BK-usage/Attic/unbz64wrap	1970/01/01 00:00:00+0100
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-# unbz64wrap - the receiving side of a bzip2 | base64 stream
-# Andreas Dilger <adilger@clusterfs.com>   Jan 2002
-
-# Sadly, mimencode does not appear to have good "begin" and "end" markers
-# like uuencode does, and it is picky about getting the right start/end of
-# the base64 stream, so we handle this explicitly here.
-
-PATH=$PATH:/usr/bin:/usr/local/bin:/usr/freeware/bin
-
-if mimencode -u < /dev/null > /dev/null 2>&1 ; then
-	SHOW=
-	while read LINE; do
-		case $LINE in
-		begin-base64*) SHOW=YES ;;
-		====) SHOW= ;;
-		*) [ "$SHOW" ] && echo "$LINE" ;;
-		esac
-	done | mimencode -u | bunzip2
-	exit $?
-else
-	cat - | uudecode -o /dev/stdout | bunzip2
-	exit $?
-fi
diff -urN malta/linux/Documentation/DocBook/.cvsignore malta/linux/Documentation/DocBook/.cvsignore
--- malta/linux/Documentation/DocBook/.cvsignore	1970/01/01 00:00:00
+++ malta/linux/Documentation/DocBook/.cvsignore	2005-06-21 14:20:33.232520000 +0100	1.1.1000.1
@@ -0,0 +1,2 @@
+.*.cmd
+*.sgml
diff -urN malta/linux/Documentation/DocBook/librs.tmpl malta/linux/Documentation/DocBook/librs.tmpl
--- malta/linux/Documentation/DocBook/librs.tmpl	1970/01/01 00:00:00
+++ malta/linux/Documentation/DocBook/librs.tmpl	2005-06-21 14:20:33.243327000 +0100	1.3.1000.1
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
+
+<book id="Reed-Solomon-Library-Guide">
+ <bookinfo>
+  <title>Reed-Solomon Library Programming Interface</title>
+  
+  <authorgroup>
+   <author>
+    <firstname>Thomas</firstname>
+    <surname>Gleixner</surname>
+    <affiliation>
+     <address>
+      <email>tglx@linutronix.de</email>
+     </address>
+    </affiliation>
+   </author>
+  </authorgroup>
+
+  <copyright>
+   <year>2004</year>
+   <holder>Thomas Gleixner</holder>
+  </copyright>
+
+  <legalnotice>
+   <para>
+     This documentation is free software; you can redistribute
+     it and/or modify it under the terms of the GNU General Public
+     License version 2 as published by the Free Software Foundation.
+   </para>
+      
+   <para>
+     This program is distributed in the hope that it will be
+     useful, but WITHOUT ANY WARRANTY; without even the implied
+     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+     See the GNU General Public License for more details.
+   </para>
+      
+   <para>
+     You should have received a copy of the GNU General Public
+     License along with this program; if not, write to the Free
+     Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+     MA 02111-1307 USA
+   </para>
+      
+   <para>
+     For more details see the file COPYING in the source
+     distribution of Linux.
+   </para>
+  </legalnotice>
+ </bookinfo>
+
+<toc></toc>
+
+  <chapter id="intro">
+      <title>Introduction</title>
+  <para>
+  	The generic Reed-Solomon Library provides encoding, decoding
+	and error correction functions.
+  </para>
+  <para>
+  	Reed-Solomon codes are used in communication and storage
+	applications to ensure data integrity. 
+  </para>
+  <para>
+  	This documentation is provided for developers who want to utilize
+	the functions provided by the library.
+  </para>
+  </chapter>
+  
+  <chapter id="bugs">
+     <title>Known Bugs And Assumptions</title>
+  <para>
+	None.	
+  </para>
+  </chapter>
+
+  <chapter id="usage">
+     	<title>Usage</title>
+	<para>
+		This chapter provides examples how to use the library.
+	</para>
+	<sect1>
+		<title>Initializing</title>
+		<para>
+			The init function init_rs returns a pointer to a
+			rs decoder structure, which holds the necessary
+			information for encoding, decoding and error correction
+			with the given polynomial. It either uses an existing
+			matching decoder or creates a new one. On creation all
+			the lookup tables for fast en/decoding are created.
+			The function may take a while, so make sure not to 
+			call it in critical code paths.
+		</para>
+		<programlisting>
+/* the Reed Solomon control structure */
+static struct rs_control *rs_decoder;
+
+/* Symbolsize is 10 (bits)
+ * Primitve polynomial is x^10+x^3+1
+ * first consecutive root is 0
+ * primitve element to generate roots = 1
+ * generator polinomial degree (number of roots) = 6
+ */
+rs_decoder = init_rs (10, 0x409, 0, 1, 6);
+		</programlisting>
+	</sect1>
+	<sect1>
+		<title>Encoding</title>
+		<para>
+			The encoder calculates the Reed-Solomon code over
+			the given data length and stores the result in 
+			the parity buffer. Note that the parity buffer must
+			be initialized before calling the encoder.
+		</para>
+		<para>
+			The expanded data can be inverted on the fly by
+			providing a non zero inversion mask. The expanded data is
+			XOR'ed with the mask. This is used e.g. for FLASH
+			ECC, where the all 0xFF is inverted to an all 0x00.
+			The Reed-Solomon code for all 0x00 is all 0x00. The
+			code is inverted before storing to FLASH so it is 0xFF
+			too. This prevent's that reading from an erased FLASH
+			results in ECC errors.
+		</para>
+		<para>
+			The databytes are expanded to the given symbol size
+			on the fly. There is no support for encoding continuous
+			bitstreams with a symbol size != 8 at the moment. If
+			it is necessary it should be not a big deal to implement
+			such functionality.
+		</para>
+		<programlisting>
+/* Parity buffer. Size = number of roots */
+uint16_t par[6];
+/* Initialize the parity buffer */
+memset(par, 0, sizeof(par));
+/* Encode 512 byte in data8. Store parity in buffer par */
+encode_rs8 (rs_decoder, data8, 512, par, 0);
+		</programlisting>
+	</sect1>
+	<sect1>
+		<title>Decoding</title>
+		<para>
+			The decoder calculates the syndrome over
+			the given data length and the received parity symbols
+			and corrects errors in the data.
+		</para>
+		<para>
+			If a syndrome is available from a hardware decoder
+			then the syndrome calculation is skipped.
+		</para>
+		<para>
+			The correction of the data buffer can be suppressed
+			by providing a correction pattern buffer and an error
+			location buffer to the decoder. The decoder stores the
+			calculated error location and the correction bitmask
+			in the given buffers. This is useful for hardware
+			decoders which use a weird bit ordering scheme.
+		</para>
+		<para>
+			The databytes are expanded to the given symbol size
+			on the fly. There is no support for decoding continuous
+			bitstreams with a symbolsize != 8 at the moment. If
+			it is necessary it should be not a big deal to implement
+			such functionality.
+		</para>
+		
+		<sect2>
+		<title>
+			Decoding with syndrome calculation, direct data correction
+		</title>
+		<programlisting>
+/* Parity buffer. Size = number of roots */
+uint16_t par[6];
+uint8_t  data[512];
+int numerr;
+/* Receive data */
+.....
+/* Receive parity */
+.....
+/* Decode 512 byte in data8.*/
+numerr = decode_rs8 (rs_decoder, data8, par, 512, NULL, 0, NULL, 0, NULL);
+		</programlisting>
+		</sect2>
+
+		<sect2>
+		<title>
+			Decoding with syndrome given by hardware decoder, direct data correction
+		</title>
+		<programlisting>
+/* Parity buffer. Size = number of roots */
+uint16_t par[6], syn[6];
+uint8_t  data[512];
+int numerr;
+/* Receive data */
+.....
+/* Receive parity */
+.....
+/* Get syndrome from hardware decoder */
+.....
+/* Decode 512 byte in data8.*/
+numerr = decode_rs8 (rs_decoder, data8, par, 512, syn, 0, NULL, 0, NULL);
+		</programlisting>
+		</sect2>
+
+		<sect2>
+		<title>
+			Decoding with syndrome given by hardware decoder, no direct data correction.
+		</title>
+		<para>
+			Note: It's not necessary to give data and received parity to the decoder.
+		</para>
+		<programlisting>
+/* Parity buffer. Size = number of roots */
+uint16_t par[6], syn[6], corr[8];
+uint8_t  data[512];
+int numerr, errpos[8];
+/* Receive data */
+.....
+/* Receive parity */
+.....
+/* Get syndrome from hardware decoder */
+.....
+/* Decode 512 byte in data8.*/
+numerr = decode_rs8 (rs_decoder, NULL, NULL, 512, syn, 0, errpos, 0, corr);
+for (i = 0; i &lt; numerr; i++) {
+	do_error_correction_in_your_buffer(errpos[i], corr[i]);
+}
+		</programlisting>
+		</sect2>
+	</sect1>
+	<sect1>
+		<title>Cleanup</title>
+		<para>
+			The function free_rs frees the allocated resources,
+			if the caller is the last user of the decoder.
+		</para>
+		<programlisting>
+/* Release resources */
+free_rs(rs_decoder);
+		</programlisting>
+	</sect1>
+
+  </chapter>
+	
+  <chapter id="structs">
+     <title>Structures</title>
+     <para>
+     This chapter contains the autogenerated documentation of the structures which are
+     used in the Reed-Solomon Library and are relevant for a developer.
+     </para>
+!Iinclude/linux/rslib.h
+  </chapter>
+
+  <chapter id="pubfunctions">
+     <title>Public Functions Provided</title>
+     <para>
+     This chapter contains the autogenerated documentation of the Reed-Solomon functions
+     which are exported.
+     </para>
+!Elib/reed_solomon/reed_solomon.c
+  </chapter>
+  
+  <chapter id="credits">
+     <title>Credits</title>
+	<para>
+		The library code for encoding and decoding was written by Phil Karn.
+	</para>
+	<programlisting>
+		Copyright 2002, Phil Karn, KA9Q
+ 		May be used under the terms of the GNU General Public License (GPL)
+	</programlisting>
+	<para>
+		The wrapper functions and interfaces are written by Thomas Gleixner
+	</para>
+	<para>
+		Many users have provided bugfixes, improvements and helping hands for testing.
+		Thanks a lot.
+	</para>
+	<para>
+		The following people have contributed to this document:
+	</para>
+	<para>
+		Thomas Gleixner<email>tglx@linutronix.de</email>
+	</para>
+  </chapter>
+</book>
diff -urN malta/linux/Documentation/DocBook/mtdnand.tmpl malta/linux/Documentation/DocBook/mtdnand.tmpl
--- malta/linux/Documentation/DocBook/mtdnand.tmpl	1970/01/01 00:00:00
+++ malta/linux/Documentation/DocBook/mtdnand.tmpl	2005-06-21 14:20:33.257128000 +0100	1.2.1000.1
@@ -0,0 +1,1320 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
+
+<book id="MTD-NAND-Guide">
+ <bookinfo>
+  <title>MTD NAND Driver Programming Interface</title>
+  
+  <authorgroup>
+   <author>
+    <firstname>Thomas</firstname>
+    <surname>Gleixner</surname>
+    <affiliation>
+     <address>
+      <email>tglx@linutronix.de</email>
+     </address>
+    </affiliation>
+   </author>
+  </authorgroup>
+
+  <copyright>
+   <year>2004</year>
+   <holder>Thomas Gleixner</holder>
+  </copyright>
+
+  <legalnotice>
+   <para>
+     This documentation is free software; you can redistribute
+     it and/or modify it under the terms of the GNU General Public
+     License version 2 as published by the Free Software Foundation.
+   </para>
+      
+   <para>
+     This program is distributed in the hope that it will be
+     useful, but WITHOUT ANY WARRANTY; without even the implied
+     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+     See the GNU General Public License for more details.
+   </para>
+      
+   <para>
+     You should have received a copy of the GNU General Public
+     License along with this program; if not, write to the Free
+     Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+     MA 02111-1307 USA
+   </para>
+      
+   <para>
+     For more details see the file COPYING in the source
+     distribution of Linux.
+   </para>
+  </legalnotice>
+ </bookinfo>
+
+<toc></toc>
+
+  <chapter id="intro">
+      <title>Introduction</title>
+  <para>
+  	The generic NAND driver supports almost all NAND and AG-AND based
+	chips and connects them to the Memory Technology Devices (MTD)
+	subsystem of the Linux Kernel.
+  </para>
+  <para>
+  	This documentation is provided for developers who want to implement
+	board drivers or filesystem drivers suitable for NAND devices.
+  </para>
+  </chapter>
+  
+  <chapter id="bugs">
+     <title>Known Bugs And Assumptions</title>
+  <para>
+	None.	
+  </para>
+  </chapter>
+
+  <chapter id="dochints">
+     <title>Documentation hints</title>
+     <para>
+     The function and structure docs are autogenerated. Each function and 
+     struct member has a short description which is marked with an [XXX] identifier.
+     The following chapters explain the meaning of those identifiers.
+     </para>
+     <sect1>   
+	<title>Function identifiers [XXX]</title>
+     	<para>
+	The functions are marked with [XXX] identifiers in the short
+	comment. The identifiers explain the usage and scope of the
+	functions. Following identifiers are used:
+     	</para>
+	<itemizedlist>
+		<listitem><para>
+	  	[MTD Interface]</para><para>
+		These functions provide the interface to the MTD kernel API. 
+		They are not replacable and provide functionality
+		which is complete hardware independent.
+		</para></listitem>
+		<listitem><para>
+	  	[NAND Interface]</para><para>
+		These functions are exported and provide the interface to the NAND kernel API. 
+		</para></listitem>
+		<listitem><para>
+	  	[GENERIC]</para><para>
+		Generic functions are not replacable and provide functionality
+		which is complete hardware independent.
+		</para></listitem>
+		<listitem><para>
+	  	[DEFAULT]</para><para>
+		Default functions provide hardware related functionality which is suitable
+		for most of the implementations. These functions can be replaced by the
+		board driver if neccecary. Those functions are called via pointers in the
+		NAND chip description structure. The board driver can set the functions which
+		should be replaced by board dependend functions before calling nand_scan().
+		If the function pointer is NULL on entry to nand_scan() then the pointer
+		is set to the default function which is suitable for the detected chip type.
+		</para></listitem>
+	</itemizedlist>
+     </sect1>
+     <sect1>   
+	<title>Struct member identifiers [XXX]</title>
+     	<para>
+	The struct members are marked with [XXX] identifiers in the 
+	comment. The identifiers explain the usage and scope of the
+	members. Following identifiers are used:
+     	</para>
+	<itemizedlist>
+		<listitem><para>
+	  	[INTERN]</para><para>
+		These members are for NAND driver internal use only and must not be
+		modified. Most of these values are calculated from the chip geometry
+		information which is evaluated during nand_scan().
+		</para></listitem>
+		<listitem><para>
+	  	[REPLACEABLE]</para><para>
+		Replaceable members hold hardware related functions which can be 
+		provided by the board driver. The board driver can set the functions which
+		should be replaced by board dependend functions before calling nand_scan().
+		If the function pointer is NULL on entry to nand_scan() then the pointer
+		is set to the default function which is suitable for the detected chip type.
+		</para></listitem>
+		<listitem><para>
+	  	[BOARDSPECIFIC]</para><para>
+		Board specific members hold hardware related information which must
+		be provided by the board driver. The board driver must set the function
+		pointers and datafields before calling nand_scan().
+		</para></listitem>
+		<listitem><para>
+	  	[OPTIONAL]</para><para>
+		Optional members can hold information relevant for the board driver. The
+		generic NAND driver code does not use this information.
+		</para></listitem>
+	</itemizedlist>
+     </sect1>
+  </chapter>   
+
+  <chapter id="basicboarddriver">
+     	<title>Basic board driver</title>
+	<para>
+		For most boards it will be sufficient to provide just the
+		basic functions and fill out some really board dependend
+		members in the nand chip description structure.
+		See drivers/mtd/nand/skeleton for reference.
+	</para>
+	<sect1>
+		<title>Basic defines</title>
+		<para>
+			At least you have to provide a mtd structure and
+			a storage for the ioremap'ed chip address.
+			You can allocate the mtd structure using kmalloc
+			or you can allocate it statically.
+			In case of static allocation you have to allocate
+			a nand_chip structure too.
+		</para>
+		<para>
+			Kmalloc based example
+		</para>
+		<programlisting>
+static struct mtd_info *board_mtd;
+static unsigned long baseaddr;
+		</programlisting>
+		<para>
+			Static example
+		</para>
+		<programlisting>
+static struct mtd_info board_mtd;
+static struct nand_chip board_chip;
+static unsigned long baseaddr;
+		</programlisting>
+	</sect1>
+	<sect1>
+		<title>Partition defines</title>
+		<para>
+			If you want to divide your device into parititions, then
+			enable the configuration switch CONFIG_MTD_PARITIONS and define
+			a paritioning scheme suitable to your board.
+		</para>
+		<programlisting>
+#define NUM_PARTITIONS 2
+static struct mtd_partition partition_info[] = {
+	{ .name = "Flash partition 1",
+	  .offset =  0,
+	  .size =    8 * 1024 * 1024 },
+	{ .name = "Flash partition 2",
+	  .offset =  MTDPART_OFS_NEXT,
+	  .size =    MTDPART_SIZ_FULL },
+};
+		</programlisting>
+	</sect1>
+	<sect1>
+		<title>Hardware control function</title>
+		<para>
+			The hardware control function provides access to the 
+			control pins of the NAND chip(s). 
+			The access can be done by GPIO pins or by address lines.
+			If you use address lines, make sure that the timing
+			requirements are met.
+		</para>
+		<para>
+			<emphasis>GPIO based example</emphasis>
+		</para>
+		<programlisting>
+static void board_hwcontrol(struct mtd_info *mtd, int cmd)
+{
+	switch(cmd){
+		case NAND_CTL_SETCLE: /* Set CLE pin high */ break;
+		case NAND_CTL_CLRCLE: /* Set CLE pin low */ break;
+		case NAND_CTL_SETALE: /* Set ALE pin high */ break;
+		case NAND_CTL_CLRALE: /* Set ALE pin low */ break;
+		case NAND_CTL_SETNCE: /* Set nCE pin low */ break;
+		case NAND_CTL_CLRNCE: /* Set nCE pin high */ break;
+	}
+}
+		</programlisting>
+		<para>
+			<emphasis>Address lines based example.</emphasis> It's assumed that the
+			nCE pin is driven by a chip select decoder.
+		</para>
+		<programlisting>
+static void board_hwcontrol(struct mtd_info *mtd, int cmd)
+{
+	struct nand_chip *this = (struct nand_chip *) mtd->priv;
+	switch(cmd){
+		case NAND_CTL_SETCLE: this->IO_ADDR_W |= CLE_ADRR_BIT;  break;
+		case NAND_CTL_CLRCLE: this->IO_ADDR_W &amp;= ~CLE_ADRR_BIT; break;
+		case NAND_CTL_SETALE: this->IO_ADDR_W |= ALE_ADRR_BIT;  break;
+		case NAND_CTL_CLRALE: this->IO_ADDR_W &amp;= ~ALE_ADRR_BIT; break;
+	}
+}
+		</programlisting>
+	</sect1>
+	<sect1>
+		<title>Device ready function</title>
+		<para>
+			If the hardware interface has the ready busy pin of the NAND chip connected to a
+			GPIO or other accesible I/O pin, this function is used to read back the state of the
+			pin. The function has no arguments and should return 0, if the device is busy (R/B pin 
+			is low) and 1, if the device is ready (R/B pin is high).
+			If the hardware interface does not give access to the ready busy pin, then
+			the function must not be defined and the function pointer this->dev_ready is set to NULL.		
+		</para>
+	</sect1>
+	<sect1>
+		<title>Init function</title>
+		<para>
+			The init function allocates memory and sets up all the board
+			specific parameters and function pointers. When everything
+			is set up nand_scan() is called. This function tries to
+			detect and identify then chip. If a chip is found all the
+			internal data fields are initialized accordingly.
+			The structure(s) have to be zeroed out first and then filled with the neccecary 
+			information about the device.
+		</para>
+		<programlisting>
+int __init board_init (void)
+{
+	struct nand_chip *this;
+	int err = 0;
+
+	/* Allocate memory for MTD device structure and private data */
+	board_mtd = kmalloc (sizeof(struct mtd_info) + sizeof (struct nand_chip), GFP_KERNEL);
+	if (!board_mtd) {
+		printk ("Unable to allocate NAND MTD device structure.\n");
+		err = -ENOMEM;
+		goto out;
+	}
+
+	/* Initialize structures */
+	memset ((char *) board_mtd, 0, sizeof(struct mtd_info) + sizeof(struct nand_chip));
+
+	/* map physical adress */
+	baseaddr = (unsigned long)ioremap(CHIP_PHYSICAL_ADDRESS, 1024);
+	if(!baseaddr){
+		printk("Ioremap to access NAND chip failed\n");
+		err = -EIO;
+		goto out_mtd;
+	}
+
+	/* Get pointer to private data */
+	this = (struct nand_chip *) ();
+	/* Link the private data with the MTD structure */
+	board_mtd->priv = this;
+
+	/* Set address of NAND IO lines */
+	this->IO_ADDR_R = baseaddr;
+	this->IO_ADDR_W = baseaddr;
+	/* Reference hardware control function */
+	this->hwcontrol = board_hwcontrol;
+	/* Set command delay time, see datasheet for correct value */
+	this->chip_delay = CHIP_DEPENDEND_COMMAND_DELAY;
+	/* Assign the device ready function, if available */
+	this->dev_ready = board_dev_ready;
+	this->eccmode = NAND_ECC_SOFT;
+
+	/* Scan to find existance of the device */
+	if (nand_scan (board_mtd, 1)) {
+		err = -ENXIO;
+		goto out_ior;
+	}
+	
+	add_mtd_partitions(board_mtd, partition_info, NUM_PARTITIONS);
+	goto out;
+
+out_ior:
+	iounmap((void *)baseaddr);
+out_mtd:
+	kfree (board_mtd);
+out:
+	return err;
+}
+module_init(board_init);
+		</programlisting>
+	</sect1>
+	<sect1>
+		<title>Exit function</title>
+		<para>
+			The exit function is only neccecary if the driver is
+			compiled as a module. It releases all resources which
+			are held by the chip driver and unregisters the partitions
+			in the MTD layer.
+		</para>
+		<programlisting>
+#ifdef MODULE
+static void __exit board_cleanup (void)
+{
+	/* Release resources, unregister device */
+	nand_release (board_mtd);
+
+	/* unmap physical adress */
+	iounmap((void *)baseaddr);
+	
+	/* Free the MTD device structure */
+	kfree (board_mtd);
+}
+module_exit(board_cleanup);
+#endif
+		</programlisting>
+	</sect1>
+  </chapter>
+
+  <chapter id="boarddriversadvanced">
+     	<title>Advanced board driver functions</title>
+	<para>
+		This chapter describes the advanced functionality of the NAND
+		driver. For a list of functions which can be overridden by the board
+		driver see the documentation of the nand_chip structure.
+	</para>
+	<sect1>
+		<title>Multiple chip control</title>
+		<para>
+			The nand driver can control chip arrays. Therefor the
+			board driver must provide an own select_chip function. This
+			function must (de)select the requested chip.
+			The function pointer in the nand_chip structure must
+			be set before calling nand_scan(). The maxchip parameter
+			of nand_scan() defines the maximum number of chips to
+			scan for. Make sure that the select_chip function can
+			handle the requested number of chips.
+		</para>
+		<para>
+			The nand driver concatenates the chips to one virtual
+			chip and provides this virtual chip to the MTD layer.
+		</para>
+		<para>
+			<emphasis>Note: The driver can only handle linear chip arrays
+			of equally sized chips. There is no support for
+			parallel arrays which extend the buswidth.</emphasis>
+		</para>
+		<para>
+			<emphasis>GPIO based example</emphasis>
+		</para>
+		<programlisting>
+static void board_select_chip (struct mtd_info *mtd, int chip)
+{
+	/* Deselect all chips, set all nCE pins high */
+	GPIO(BOARD_NAND_NCE) |= 0xff;	
+	if (chip >= 0)
+		GPIO(BOARD_NAND_NCE) &amp;= ~ (1 &lt;&lt; chip);
+}
+		</programlisting>
+		<para>
+			<emphasis>Address lines based example.</emphasis>
+			Its assumed that the nCE pins are connected to an
+			address decoder.
+		</para>
+		<programlisting>
+static void board_select_chip (struct mtd_info *mtd, int chip)
+{
+	struct nand_chip *this = (struct nand_chip *) mtd->priv;
+	
+	/* Deselect all chips */
+	this->IO_ADDR_R &amp;= ~BOARD_NAND_ADDR_MASK;
+	this->IO_ADDR_W &amp;= ~BOARD_NAND_ADDR_MASK;
+	switch (chip) {
+	case 0:
+		this->IO_ADDR_R |= BOARD_NAND_ADDR_CHIP0;
+		this->IO_ADDR_W |= BOARD_NAND_ADDR_CHIP0;
+		break;
+	....	
+	case n:
+		this->IO_ADDR_R |= BOARD_NAND_ADDR_CHIPn;
+		this->IO_ADDR_W |= BOARD_NAND_ADDR_CHIPn;
+		break;
+	}	
+}
+		</programlisting>
+	</sect1>
+	<sect1>
+		<title>Hardware ECC support</title>
+		<sect2>
+			<title>Functions and constants</title>
+			<para>
+				The nand driver supports three different types of
+				hardware ECC.
+				<itemizedlist>
+				<listitem><para>NAND_ECC_HW3_256</para><para>
+				Hardware ECC generator providing 3 bytes ECC per
+				256 byte.
+				</para>	</listitem>
+				<listitem><para>NAND_ECC_HW3_512</para><para>
+				Hardware ECC generator providing 3 bytes ECC per
+				512 byte.
+				</para>	</listitem>
+				<listitem><para>NAND_ECC_HW6_512</para><para>
+				Hardware ECC generator providing 6 bytes ECC per
+				512 byte.
+				</para>	</listitem>
+				<listitem><para>NAND_ECC_HW8_512</para><para>
+				Hardware ECC generator providing 6 bytes ECC per
+				512 byte.
+				</para>	</listitem>
+				</itemizedlist>
+				If your hardware generator has a different functionality
+				add it at the appropriate place in nand_base.c
+			</para>
+			<para>
+				The board driver must provide following functions:
+				<itemizedlist>
+				<listitem><para>enable_hwecc</para><para>
+				This function is called before reading / writing to
+				the chip. Reset or initialize the hardware generator
+				in this function. The function is called with an
+				argument which let you distinguish between read 
+				and write operations.
+				</para>	</listitem>
+				<listitem><para>calculate_ecc</para><para>
+				This function is called after read / write from / to
+				the chip. Transfer the ECC from the hardware to
+				the buffer. If the option NAND_HWECC_SYNDROME is set
+				then the function is only called on write. See below.
+				</para>	</listitem>
+				<listitem><para>correct_data</para><para>
+				In case of an ECC error this function is called for
+				error detection and correction. Return 1 respectively 2
+				in case the error can be corrected. If the error is
+				not correctable return -1. If your hardware generator
+				matches the default algorithm of the nand_ecc software
+				generator then use the correction function provided
+				by nand_ecc instead of implementing duplicated code.
+				</para>	</listitem>
+				</itemizedlist>
+			</para>
+		</sect2>
+		<sect2>
+		<title>Hardware ECC with syndrome calculation</title>
+			<para>
+				Many hardware ECC implementations provide Reed-Solomon
+				codes and calculate an error syndrome on read. The syndrome
+				must be converted to a standard Reed-Solomon syndrome
+				before calling the error correction code in the generic
+				Reed-Solomon library.
+			</para>
+			<para>
+				The ECC bytes must be placed immidiately after the data
+				bytes in order to make the syndrome generator work. This
+				is contrary to the usual layout used by software ECC. The
+				seperation of data and out of band area is not longer
+				possible. The nand driver code handles this layout and
+				the remaining free bytes in the oob area are managed by 
+				the autoplacement code. Provide a matching oob-layout
+				in this case. See rts_from4.c and diskonchip.c for 
+				implementation reference. In those cases we must also
+				use bad block tables on FLASH, because the ECC layout is
+				interferring with the bad block marker positions.
+				See bad block table support for details.
+			</para>
+		</sect2>
+	</sect1>
+	<sect1>
+		<title>Bad block table support</title>
+		<para>
+			Most NAND chips mark the bad blocks at a defined
+			position in the spare area. Those blocks must 
+			not be erased under any circumstances as the bad 
+			block information would be lost.
+			It is possible to check the bad block mark each
+			time when the blocks are accessed by reading the
+			spare area of the first page in the block. This
+			is time consuming so a bad block table is used.
+		</para>
+		<para>
+			The nand driver supports various types of bad block
+			tables.
+			<itemizedlist>
+			<listitem><para>Per device</para><para>
+			The bad block table contains all bad block information
+			of the device which can consist of multiple chips.
+			</para>	</listitem>
+			<listitem><para>Per chip</para><para>
+			A bad block table is used per chip and contains the
+			bad block information for this particular chip.
+			</para>	</listitem>
+			<listitem><para>Fixed offset</para><para>
+			The bad block table is located at a fixed offset
+			in the chip (device). This applies to various
+			DiskOnChip devices.
+			</para>	</listitem>
+			<listitem><para>Automatic placed</para><para>
+			The bad block table is automatically placed and
+			detected either at the end or at the beginning
+			of a chip (device)
+			</para>	</listitem>
+			<listitem><para>Mirrored tables</para><para>
+			The bad block table is mirrored on the chip (device) to
+			allow updates of the bad block table without data loss.
+			</para>	</listitem>
+			</itemizedlist>
+		</para>
+		<para>	
+			nand_scan() calls the function nand_default_bbt(). 
+			nand_default_bbt() selects appropriate default
+			bad block table desriptors depending on the chip information
+			which was retrieved by nand_scan().
+		</para>
+		<para>
+			The standard policy is scanning the device for bad 
+			blocks and build a ram based bad block table which
+			allows faster access than always checking the
+			bad block information on the flash chip itself.
+		</para>
+		<sect2>
+			<title>Flash based tables</title>
+			<para>
+				It may be desired or neccecary to keep a bad block table in FLASH. 
+				For AG-AND chips this is mandatory, as they have no factory marked
+				bad blocks. They have factory marked good blocks. The marker pattern
+				is erased when the block is erased to be reused. So in case of
+				powerloss before writing the pattern back to the chip this block 
+				would be lost and added to the bad blocks. Therefor we scan the 
+				chip(s) when we detect them the first time for good blocks and 
+				store this information in a bad block table before erasing any 
+				of the blocks.
+			</para>
+			<para>
+				The blocks in which the tables are stored are procteted against
+				accidental access by marking them bad in the memory bad block
+				table. The bad block table managment functions are allowed
+				to circumvernt this protection.
+			</para>
+			<para>
+				The simplest way to activate the FLASH based bad block table support 
+				is to set the option NAND_USE_FLASH_BBT in the option field of
+				the nand chip structure before calling nand_scan(). For AG-AND
+				chips is this done by default.
+				This activates the default FLASH based bad block table functionality 
+				of the NAND driver. The default bad block table options are
+				<itemizedlist>
+				<listitem><para>Store bad block table per chip</para></listitem>
+				<listitem><para>Use 2 bits per block</para></listitem>
+				<listitem><para>Automatic placement at the end of the chip</para></listitem>
+				<listitem><para>Use mirrored tables with version numbers</para></listitem>
+				<listitem><para>Reserve 4 blocks at the end of the chip</para></listitem>
+				</itemizedlist>
+			</para>
+		</sect2>
+		<sect2>
+			<title>User defined tables</title>
+			<para>
+				User defined tables are created by filling out a 
+				nand_bbt_descr structure and storing the pointer in the
+				nand_chip structure member bbt_td before calling nand_scan(). 
+				If a mirror table is neccecary a second structure must be
+				created and a pointer to this structure must be stored
+				in bbt_md inside the nand_chip structure. If the bbt_md 
+				member is set to NULL then only the main table is used
+				and no scan for the mirrored table is performed.
+			</para>
+			<para>
+				The most important field in the nand_bbt_descr structure
+				is the options field. The options define most of the 
+				table properties. Use the predefined constants from
+				nand.h to define the options.
+				<itemizedlist>
+				<listitem><para>Number of bits per block</para>
+				<para>The supported number of bits is 1, 2, 4, 8.</para></listitem>
+				<listitem><para>Table per chip</para>
+				<para>Setting the constant NAND_BBT_PERCHIP selects that
+				a bad block table is managed for each chip in a chip array.
+				If this option is not set then a per device bad block table
+				is used.</para></listitem>
+				<listitem><para>Table location is absolute</para>
+				<para>Use the option constant NAND_BBT_ABSPAGE and
+				define the absolute page number where the bad block
+				table starts in the field pages. If you have selected bad block
+				tables per chip and you have a multi chip array then the start page
+				must be given for each chip in the chip array. Note: there is no scan
+				for a table ident pattern performed, so the fields 
+				pattern, veroffs, offs, len can be left uninitialized</para></listitem>
+				<listitem><para>Table location is automatically detected</para>
+				<para>The table can either be located in the first or the last good
+				blocks of the chip (device). Set NAND_BBT_LASTBLOCK to place
+				the bad block table at the end of the chip (device). The
+				bad block tables are marked and identified by a pattern which
+				is stored in the spare area of the first page in the block which
+				holds the bad block table. Store a pointer to the pattern  
+				in the pattern field. Further the length of the pattern has to be 
+				stored in len and the offset in the spare area must be given
+				in the offs member of the nand_bbt_descr stucture. For mirrored
+				bad block tables different patterns are mandatory.</para></listitem>
+				<listitem><para>Table creation</para>
+				<para>Set the option NAND_BBT_CREATE to enable the table creation
+				if no table can be found during the scan. Usually this is done only 
+				once if a new chip is found. </para></listitem>
+				<listitem><para>Table write support</para>
+				<para>Set the option NAND_BBT_WRITE to enable the table write support.
+				This allows the update of the bad block table(s) in case a block has
+				to be marked bad due to wear. The MTD interface function block_markbad
+				is calling the update function of the bad block table. If the write
+				support is enabled then the table is updated on FLASH.</para>
+				<para>
+				Note: Write support should only be enabled for mirrored tables with
+				version control.
+				</para></listitem>
+				<listitem><para>Table version control</para>
+				<para>Set the option NAND_BBT_VERSION to enable the table version control.
+				It's highly recommended to enable this for mirrored tables with write
+				support. It makes sure that the risk of loosing the bad block
+				table information is reduced to the loss of the information about the
+				one worn out block which should be marked bad. The version is stored in
+				4 consecutive bytes in the spare area of the device. The position of
+				the version number is defined by the member veroffs in the bad block table
+				descriptor.</para></listitem>
+				<listitem><para>Save block contents on write</para>
+				<para>
+				In case that the block which holds the bad block table does contain
+				other useful information, set the option NAND_BBT_SAVECONTENT. When
+				the bad block table is written then the whole block is read the bad
+				block table is updated and the block is erased and everything is 
+				written back. If this option is not set only the bad block table
+				is written and everything else in the block is ignored and erased.
+				</para></listitem>
+				<listitem><para>Number of reserved blocks</para>
+				<para>
+				For automatic placement some blocks must be reserved for
+				bad block table storage. The number of reserved blocks is defined 
+				in the maxblocks member of the babd block table description structure.
+				Reserving 4 blocks for mirrored tables should be a reasonable number. 
+				This also limits the number of blocks which are scanned for the bad
+				block table ident pattern.
+				</para></listitem>
+				</itemizedlist>
+			</para>
+		</sect2>
+	</sect1>
+	<sect1>
+		<title>Spare area (auto)placement</title>
+		<para>
+			The nand driver implements different possibilities for
+			placement of filesystem data in the spare area, 
+			<itemizedlist>
+			<listitem><para>Placement defined by fs driver</para></listitem>
+			<listitem><para>Automatic placement</para></listitem>
+			</itemizedlist>
+			The default placement function is automatic placement. The
+			nand driver has built in default placement schemes for the
+			various chiptypes. If due to hardware ECC functionality the
+			default placement does not fit then the board driver can
+			provide a own placement scheme.
+		</para>
+		<para>
+			File system drivers can provide a own placement scheme which
+			is used instead of the default placement scheme.
+		</para>
+		<para>
+			Placement schemes are defined by a nand_oobinfo structure
+	     		<programlisting>
+struct nand_oobinfo {
+	int	useecc;
+	int	eccbytes;
+	int	eccpos[24];
+	int	oobfree[8][2];
+};
+	     		</programlisting>
+			<itemizedlist>
+			<listitem><para>useecc</para><para>
+				The useecc member controls the ecc and placement function. The header
+				file include/mtd/mtd-abi.h contains constants to select ecc and
+				placement. MTD_NANDECC_OFF switches off the ecc complete. This is
+				not recommended and available for testing and diagnosis only.
+				MTD_NANDECC_PLACE selects caller defined placement, MTD_NANDECC_AUTOPLACE
+				selects automatic placement.
+			</para></listitem>
+			<listitem><para>eccbytes</para><para>
+				The eccbytes member defines the number of ecc bytes per page.
+			</para></listitem>
+			<listitem><para>eccpos</para><para>
+				The eccpos array holds the byte offsets in the spare area where
+				the ecc codes are placed.
+			</para></listitem>
+			<listitem><para>oobfree</para><para>
+				The oobfree array defines the areas in the spare area which can be
+				used for automatic placement. The information is given in the format
+				{offset, size}. offset defines the start of the usable area, size the
+				length in bytes. More than one area can be defined. The list is terminated
+				by an {0, 0} entry.
+			</para></listitem>
+			</itemizedlist>
+		</para>
+		<sect2>
+			<title>Placement defined by fs driver</title>
+			<para>
+				The calling function provides a pointer to a nand_oobinfo
+				structure which defines the ecc placement. For writes the
+				caller must provide a spare area buffer along with the
+				data buffer. The spare area buffer size is (number of pages) *
+				(size of spare area). For reads the buffer size is
+				(number of pages) * ((size of spare area) + (number of ecc
+				steps per page) * sizeof (int)). The driver stores the
+				result of the ecc check for each tuple in the spare buffer.
+				The storage sequence is 
+			</para>
+			<para>
+				&lt;spare data page 0&gt;&lt;ecc result 0&gt;...&lt;ecc result n&gt;
+			</para>
+			<para>
+				...
+			</para>
+			<para>
+				&lt;spare data page n&gt;&lt;ecc result 0&gt;...&lt;ecc result n&gt;
+			</para>
+			<para>
+				This is a legacy mode used by YAFFS1.
+			</para>
+			<para>
+				If the spare area buffer is NULL then only the ECC placement is
+				done according to the given scheme in the nand_oobinfo structure.
+			</para>
+		</sect2>
+		<sect2>
+			<title>Automatic placement</title>
+			<para>
+				Automatic placement uses the built in defaults to place the
+				ecc bytes in the spare area. If filesystem data have to be stored /
+				read into the spare area then the calling function must provide a
+				buffer. The buffer size per page is determined by the oobfree array in
+				the nand_oobinfo structure.
+			</para>
+			<para>
+				If the spare area buffer is NULL then only the ECC placement is
+				done according to the default builtin scheme.
+			</para>
+		</sect2>
+		<sect2>
+			<title>User space placement selection</title>
+		<para>
+			All non ecc functions like mtd->read and mtd->write use an internal 
+			structure, which can be set by an ioctl. This structure is preset 
+			to the autoplacement default.
+	     		<programlisting>
+	ioctl (fd, MEMSETOOBSEL, oobsel);
+	     		</programlisting>
+			oobsel is a pointer to a user supplied structure of type
+			nand_oobconfig. The contents of this structure must match the 
+			criteria of the filesystem, which will be used. See an example in utils/nandwrite.c.
+		</para>
+		</sect2>
+	</sect1>	
+	<sect1>
+		<title>Spare area autoplacement default schemes</title>
+		<sect2>
+			<title>256 byte pagesize</title>
+<informaltable><tgroup cols="3"><tbody>
+<row>
+<entry>Offset</entry>
+<entry>Content</entry>
+<entry>Comment</entry>
+</row>
+<row>
+<entry>0x00</entry>
+<entry>ECC byte 0</entry>
+<entry>Error correction code byte 0</entry>
+</row>
+<row>
+<entry>0x01</entry>
+<entry>ECC byte 1</entry>
+<entry>Error correction code byte 1</entry>
+</row>
+<row>
+<entry>0x02</entry>
+<entry>ECC byte 2</entry>
+<entry>Error correction code byte 2</entry>
+</row>
+<row>
+<entry>0x03</entry>
+<entry>Autoplace 0</entry>
+<entry></entry>
+</row>
+<row>
+<entry>0x04</entry>
+<entry>Autoplace 1</entry>
+<entry></entry>
+</row>
+<row>
+<entry>0x05</entry>
+<entry>Bad block marker</entry>
+<entry>If any bit in this byte is zero, then this block is bad.
+This applies only to the first page in a block. In the remaining
+pages this byte is reserved</entry>
+</row>
+<row>
+<entry>0x06</entry>
+<entry>Autoplace 2</entry>
+<entry></entry>
+</row>
+<row>
+<entry>0x07</entry>
+<entry>Autoplace 3</entry>
+<entry></entry>
+</row>
+</tbody></tgroup></informaltable>
+		</sect2>
+		<sect2>
+			<title>512 byte pagesize</title>
+<informaltable><tgroup cols="3"><tbody>
+<row>
+<entry>Offset</entry>
+<entry>Content</entry>
+<entry>Comment</entry>
+</row>
+<row>
+<entry>0x00</entry>
+<entry>ECC byte 0</entry>
+<entry>Error correction code byte 0 of the lower 256 Byte data in
+this page</entry>
+</row>
+<row>
+<entry>0x01</entry>
+<entry>ECC byte 1</entry>
+<entry>Error correction code byte 1 of the lower 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x02</entry>
+<entry>ECC byte 2</entry>
+<entry>Error correction code byte 2 of the lower 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x03</entry>
+<entry>ECC byte 3</entry>
+<entry>Error correction code byte 0 of the upper 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x04</entry>
+<entry>reserved</entry>
+<entry>reserved</entry>
+</row>
+<row>
+<entry>0x05</entry>
+<entry>Bad block marker</entry>
+<entry>If any bit in this byte is zero, then this block is bad.
+This applies only to the first page in a block. In the remaining
+pages this byte is reserved</entry>
+</row>
+<row>
+<entry>0x06</entry>
+<entry>ECC byte 4</entry>
+<entry>Error correction code byte 1 of the upper 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x07</entry>
+<entry>ECC byte 5</entry>
+<entry>Error correction code byte 2 of the upper 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x08 - 0x0F</entry>
+<entry>Autoplace 0 - 7</entry>
+<entry></entry>
+</row>
+</tbody></tgroup></informaltable>
+		</sect2>
+		<sect2>
+			<title>2048 byte pagesize</title>
+<informaltable><tgroup cols="3"><tbody>
+<row>
+<entry>Offset</entry>
+<entry>Content</entry>
+<entry>Comment</entry>
+</row>
+<row>
+<entry>0x00</entry>
+<entry>Bad block marker</entry>
+<entry>If any bit in this byte is zero, then this block is bad.
+This applies only to the first page in a block. In the remaining
+pages this byte is reserved</entry>
+</row>
+<row>
+<entry>0x01</entry>
+<entry>Reserved</entry>
+<entry>Reserved</entry>
+</row>
+<row>
+<entry>0x02-0x27</entry>
+<entry>Autoplace 0 - 37</entry>
+<entry></entry>
+</row>
+<row>
+<entry>0x28</entry>
+<entry>ECC byte 0</entry>
+<entry>Error correction code byte 0 of the first 256 Byte data in
+this page</entry>
+</row>
+<row>
+<entry>0x29</entry>
+<entry>ECC byte 1</entry>
+<entry>Error correction code byte 1 of the first 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x2A</entry>
+<entry>ECC byte 2</entry>
+<entry>Error correction code byte 2 of the first 256 Bytes data in
+this page</entry>
+</row>
+<row>
+<entry>0x2B</entry>
+<entry>ECC byte 3</entry>
+<entry>Error correction code byte 0 of the second 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x2C</entry>
+<entry>ECC byte 4</entry>
+<entry>Error correction code byte 1 of the second 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x2D</entry>
+<entry>ECC byte 5</entry>
+<entry>Error correction code byte 2 of the second 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x2E</entry>
+<entry>ECC byte 6</entry>
+<entry>Error correction code byte 0 of the third 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x2F</entry>
+<entry>ECC byte 7</entry>
+<entry>Error correction code byte 1 of the third 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x30</entry>
+<entry>ECC byte 8</entry>
+<entry>Error correction code byte 2 of the third 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x31</entry>
+<entry>ECC byte 9</entry>
+<entry>Error correction code byte 0 of the fourth 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x32</entry>
+<entry>ECC byte 10</entry>
+<entry>Error correction code byte 1 of the fourth 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x33</entry>
+<entry>ECC byte 11</entry>
+<entry>Error correction code byte 2 of the fourth 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x34</entry>
+<entry>ECC byte 12</entry>
+<entry>Error correction code byte 0 of the fifth 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x35</entry>
+<entry>ECC byte 13</entry>
+<entry>Error correction code byte 1 of the fifth 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x36</entry>
+<entry>ECC byte 14</entry>
+<entry>Error correction code byte 2 of the fifth 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x37</entry>
+<entry>ECC byte 15</entry>
+<entry>Error correction code byte 0 of the sixt 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x38</entry>
+<entry>ECC byte 16</entry>
+<entry>Error correction code byte 1 of the sixt 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x39</entry>
+<entry>ECC byte 17</entry>
+<entry>Error correction code byte 2 of the sixt 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x3A</entry>
+<entry>ECC byte 18</entry>
+<entry>Error correction code byte 0 of the seventh 256 Bytes of
+data in this page</entry>
+</row>
+<row>
+<entry>0x3B</entry>
+<entry>ECC byte 19</entry>
+<entry>Error correction code byte 1 of the seventh 256 Bytes of
+data in this page</entry>
+</row>
+<row>
+<entry>0x3C</entry>
+<entry>ECC byte 20</entry>
+<entry>Error correction code byte 2 of the seventh 256 Bytes of
+data in this page</entry>
+</row>
+<row>
+<entry>0x3D</entry>
+<entry>ECC byte 21</entry>
+<entry>Error correction code byte 0 of the eigth 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x3E</entry>
+<entry>ECC byte 22</entry>
+<entry>Error correction code byte 1 of the eigth 256 Bytes of data
+in this page</entry>
+</row>
+<row>
+<entry>0x3F</entry>
+<entry>ECC byte 23</entry>
+<entry>Error correction code byte 2 of the eigth 256 Bytes of data
+in this page</entry>
+</row>
+</tbody></tgroup></informaltable>
+		</sect2>
+     	</sect1>
+  </chapter>
+
+  <chapter id="filesystems">
+     	<title>Filesystem support</title>
+	<para>
+		The NAND driver provides all neccecary functions for a
+		filesystem via the MTD interface.
+	</para>
+	<para>
+		Filesystems must be aware of the NAND pecularities and
+		restrictions. One major restrictions of NAND Flash is, that you cannot 
+		write as often as you want to a page. The consecutive writes to a page, 
+		before erasing it again, are restricted to 1-3 writes, depending on the 
+		manufacturers specifications. This applies similar to the spare area. 
+	</para>
+	<para>
+		Therefor NAND aware filesystems must either write in page size chunks
+		or hold a writebuffer to collect smaller writes until they sum up to 
+		pagesize. Available NAND aware filesystems: JFFS2, YAFFS. 		
+	</para>
+	<para>
+		The spare area usage to store filesystem data is controlled by
+		the spare area placement functionality which is described in one
+		of the earlier chapters.
+	</para>
+  </chapter>	
+  <chapter id="tools">
+     	<title>Tools</title>
+	<para>
+		The MTD project provides a couple of helpful tools to handle NAND Flash.
+		<itemizedlist>
+		<listitem><para>flasherase, flasheraseall: Erase and format FLASH partitions</para></listitem>
+		<listitem><para>nandwrite: write filesystem images to NAND FLASH</para></listitem>
+		<listitem><para>nanddump: dump the contents of a NAND FLASH partitions</para></listitem>
+		</itemizedlist>
+	</para>
+	<para>
+		These tools are aware of the NAND restrictions. Please use those tools
+		instead of complaining about errors which are caused by non NAND aware
+		access methods.
+	</para>
+  </chapter>	
+
+  <chapter id="defines">
+     <title>Constants</title>
+     <para>
+     This chapter describes the constants which might be relevant for a driver developer.
+     </para>
+     <sect1>   
+	<title>Chip option constants</title>
+     	<sect2>   
+		<title>Constants for chip id table</title>
+     		<para>
+		These constants are defined in nand.h. They are ored together to describe
+		the chip functionality.
+     		<programlisting>
+/* Chip can not auto increment pages */
+#define NAND_NO_AUTOINCR	0x00000001
+/* Buswitdh is 16 bit */
+#define NAND_BUSWIDTH_16	0x00000002
+/* Device supports partial programming without padding */
+#define NAND_NO_PADDING		0x00000004
+/* Chip has cache program function */
+#define NAND_CACHEPRG		0x00000008
+/* Chip has copy back function */
+#define NAND_COPYBACK		0x00000010
+/* AND Chip which has 4 banks and a confusing page / block 
+ * assignment. See Renesas datasheet for further information */
+#define NAND_IS_AND		0x00000020
+/* Chip has a array of 4 pages which can be read without
+ * additional ready /busy waits */
+#define NAND_4PAGE_ARRAY	0x00000040 
+		</programlisting>
+     		</para>
+     	</sect2>
+     	<sect2>   
+		<title>Constants for runtime options</title>
+     		<para>
+		These constants are defined in nand.h. They are ored together to describe
+		the functionality.
+     		<programlisting>
+/* Use a flash based bad block table. This option is parsed by the
+ * default bad block table function (nand_default_bbt). */
+#define NAND_USE_FLASH_BBT	0x00010000
+/* The hw ecc generator provides a syndrome instead a ecc value on read 
+ * This can only work if we have the ecc bytes directly behind the 
+ * data bytes. Applies for DOC and AG-AND Renesas HW Reed Solomon generators */
+#define NAND_HWECC_SYNDROME	0x00020000
+		</programlisting>
+     		</para>
+     	</sect2>
+     </sect1>	
+
+     <sect1>   
+	<title>ECC selection constants</title>
+	<para>
+	Use these constants to select the ECC algorithm.
+  	<programlisting>
+/* No ECC. Usage is not recommended ! */
+#define NAND_ECC_NONE		0
+/* Software ECC 3 byte ECC per 256 Byte data */
+#define NAND_ECC_SOFT		1
+/* Hardware ECC 3 byte ECC per 256 Byte data */
+#define NAND_ECC_HW3_256	2
+/* Hardware ECC 3 byte ECC per 512 Byte data */
+#define NAND_ECC_HW3_512	3
+/* Hardware ECC 6 byte ECC per 512 Byte data */
+#define NAND_ECC_HW6_512	4
+/* Hardware ECC 6 byte ECC per 512 Byte data */
+#define NAND_ECC_HW8_512	6
+	</programlisting>
+	</para>
+     </sect1>	
+
+     <sect1>   
+	<title>Hardware control related constants</title>
+	<para>
+	These constants describe the requested hardware access function when
+	the boardspecific hardware control function is called
+  	<programlisting>
+/* Select the chip by setting nCE to low */
+#define NAND_CTL_SETNCE 	1
+/* Deselect the chip by setting nCE to high */
+#define NAND_CTL_CLRNCE		2
+/* Select the command latch by setting CLE to high */
+#define NAND_CTL_SETCLE		3
+/* Deselect the command latch by setting CLE to low */
+#define NAND_CTL_CLRCLE		4
+/* Select the address latch by setting ALE to high */
+#define NAND_CTL_SETALE		5
+/* Deselect the address latch by setting ALE to low */
+#define NAND_CTL_CLRALE		6
+/* Set write protection by setting WP to high. Not used! */
+#define NAND_CTL_SETWP		7
+/* Clear write protection by setting WP to low. Not used! */
+#define NAND_CTL_CLRWP		8
+	</programlisting>
+	</para>
+     </sect1>	
+
+     <sect1>   
+	<title>Bad block table related constants</title>
+	<para>
+	These constants describe the options used for bad block
+	table descriptors.
+  	<programlisting>
+/* Options for the bad block table descriptors */
+
+/* The number of bits used per block in the bbt on the device */
+#define NAND_BBT_NRBITS_MSK	0x0000000F
+#define NAND_BBT_1BIT		0x00000001
+#define NAND_BBT_2BIT		0x00000002
+#define NAND_BBT_4BIT		0x00000004
+#define NAND_BBT_8BIT		0x00000008
+/* The bad block table is in the last good block of the device */
+#define	NAND_BBT_LASTBLOCK	0x00000010
+/* The bbt is at the given page, else we must scan for the bbt */
+#define NAND_BBT_ABSPAGE	0x00000020
+/* The bbt is at the given page, else we must scan for the bbt */
+#define NAND_BBT_SEARCH		0x00000040
+/* bbt is stored per chip on multichip devices */
+#define NAND_BBT_PERCHIP	0x00000080
+/* bbt has a version counter at offset veroffs */
+#define NAND_BBT_VERSION	0x00000100
+/* Create a bbt if none axists */
+#define NAND_BBT_CREATE		0x00000200
+/* Search good / bad pattern through all pages of a block */
+#define NAND_BBT_SCANALLPAGES	0x00000400
+/* Scan block empty during good / bad block scan */
+#define NAND_BBT_SCANEMPTY	0x00000800
+/* Write bbt if neccecary */
+#define NAND_BBT_WRITE		0x00001000
+/* Read and write back block contents when writing bbt */
+#define NAND_BBT_SAVECONTENT	0x00002000
+	</programlisting>
+	</para>
+     </sect1>	
+
+  </chapter>
+  	
+  <chapter id="structs">
+     <title>Structures</title>
+     <para>
+     This chapter contains the autogenerated documentation of the structures which are
+     used in the NAND driver and might be relevant for a driver developer. Each  
+     struct member has a short description which is marked with an [XXX] identifier.
+     See the chapter "Documentation hints" for an explanation.
+     </para>
+!Iinclude/linux/mtd/nand.h
+  </chapter>
+
+  <chapter id="pubfunctions">
+     <title>Public Functions Provided</title>
+     <para>
+     This chapter contains the autogenerated documentation of the NAND kernel API functions
+      which are exported. Each function has a short description which is marked with an [XXX] identifier.
+     See the chapter "Documentation hints" for an explanation.
+     </para>
+!Edrivers/mtd/nand/nand_base.c
+!Edrivers/mtd/nand/nand_bbt.c
+!Edrivers/mtd/nand/nand_ecc.c
+  </chapter>
+  
+  <chapter id="intfunctions">
+     <title>Internal Functions Provided</title>
+     <para>
+     This chapter contains the autogenerated documentation of the NAND driver internal functions.
+     Each function has a short description which is marked with an [XXX] identifier.
+     See the chapter "Documentation hints" for an explanation.
+     The functions marked with [DEFAULT] might be relevant for a board driver developer.
+     </para>
+!Idrivers/mtd/nand/nand_base.c
+!Idrivers/mtd/nand/nand_bbt.c
+!Idrivers/mtd/nand/nand_ecc.c
+  </chapter>
+
+  <chapter id="credits">
+     <title>Credits</title>
+	<para>
+		The following people have contributed to the NAND driver:
+		<orderedlist>
+			<listitem><para>Steven J. Hill<email>sjhill@realitydiluted.com</email></para></listitem>
+			<listitem><para>David Woodhouse<email>dwmw2@infradead.org</email></para></listitem>
+			<listitem><para>Thomas Gleixner<email>tglx@linutronix.de</email></para></listitem>
+		</orderedlist>
+		A lot of users have provided bugfixes, improvements and helping hands for testing.
+		Thanks a lot.
+	</para>
+	<para>
+		The following people have contributed to this document:
+		<orderedlist>
+			<listitem><para>Thomas Gleixner<email>tglx@linutronix.de</email></para></listitem>
+		</orderedlist>
+	</para>
+  </chapter>
+</book>
diff -urN malta/linux/Documentation/DocBook/stylesheet.xsl malta/linux/Documentation/DocBook/stylesheet.xsl
--- malta/linux/Documentation/DocBook/stylesheet.xsl	1970/01/01 00:00:00
+++ malta/linux/Documentation/DocBook/stylesheet.xsl	2005-06-21 14:20:33.286765000 +0100	1.1.1000.1
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<param name="chunk.quietly">1</param>
+<param name="funcsynopsis.style">ansi</param>
+</stylesheet>
diff -urN malta/linux/Documentation/DocBook/Makefile malta/linux/Documentation/DocBook/Makefile
--- malta/linux/Documentation/DocBook/Makefile	2004/09/14 16:27:37	1.42.1000.2
+++ malta/linux/Documentation/DocBook/Makefile	2005/06/21 13:20:32	1.42.1000.3
@@ -6,70 +6,72 @@
 # To add a new book the only step required is to add the book to the
 # list of DOCBOOKS.
 
-DOCBOOKS := wanbook.sgml z8530book.sgml mcabook.sgml videobook.sgml \
-	    kernel-hacking.sgml kernel-locking.sgml via-audio.sgml \
-	    mousedrivers.sgml deviceiobook.sgml procfs-guide.sgml \
-	    tulip-user.sgml writing_usb_driver.sgml scsidrivers.sgml \
-	    sis900.sgml kernel-api.sgml journal-api.sgml lsm.sgml usb.sgml \
-	    gadget.sgml libata.sgml
+DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
+	    kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
+	    procfs-guide.xml writing_usb_driver.xml scsidrivers.xml \
+	    sis900.xml kernel-api.xml journal-api.xml lsm.xml usb.xml \
+	    gadget.xml libata.xml mtdnand.xml librs.xml
 
 ###
 # The build process is as follows (targets):
-#              (sgmldocs)
-# file.tmpl --> file.sgml +--> file.ps  (psdocs)
-#                         +--> file.pdf  (pdfdocs)
-#                         +--> DIR=file  (htmldocs)
-#                         +--> man/      (mandocs)
+#              (xmldocs)
+# file.tmpl --> file.xml +--> file.ps   (psdocs)
+#                        +--> file.pdf  (pdfdocs)
+#                        +--> DIR=file  (htmldocs)
+#                        +--> man/      (mandocs)
 
 ###
 # The targets that may be used.
-.PHONY:	sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs
+.PHONY:	xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs
 
 BOOKS := $(addprefix $(obj)/,$(DOCBOOKS))
-sgmldocs: $(BOOKS)
+xmldocs: $(BOOKS)
+sgmldocs: xmldocs
 
-PS := $(patsubst %.sgml, %.ps, $(BOOKS))
+PS := $(patsubst %.xml, %.ps, $(BOOKS))
 psdocs: $(PS)
 
-PDF := $(patsubst %.sgml, %.pdf, $(BOOKS))
+PDF := $(patsubst %.xml, %.pdf, $(BOOKS))
 pdfdocs: $(PDF)
 
-HTML := $(patsubst %.sgml, %.html, $(BOOKS))
+HTML := $(patsubst %.xml, %.html, $(BOOKS))
 htmldocs: $(HTML)
 
-MAN := $(patsubst %.sgml, %.9, $(BOOKS))
+MAN := $(patsubst %.xml, %.9, $(BOOKS))
 mandocs: $(MAN)
 
 installmandocs: mandocs
-	$(MAKEMAN) install Documentation/DocBook/man
+	mkdir -p /usr/local/man/man9/
+	install Documentation/DocBook/man/*.9.gz /usr/local/man/man9/
 
 ###
 #External programs used
 KERNELDOC = scripts/kernel-doc
 DOCPROC   = scripts/basic/docproc
-SPLITMAN  = $(PERL) $(srctree)/scripts/split-man
-MAKEMAN   = $(PERL) $(srctree)/scripts/makeman
+
+XMLTOFLAGS = -m Documentation/DocBook/stylesheet.xsl
+#XMLTOFLAGS += --skip-validation
 
 ###
 # DOCPROC is used for two purposes:
 # 1) To generate a dependency list for a .tmpl file
 # 2) To preprocess a .tmpl file and call kernel-doc with
 #     appropriate parameters.
-# The following rules are used to generate the .sgml documentation
+# The following rules are used to generate the .xml documentation
 # required to generate the final targets. (ps, pdf, html).
 quiet_cmd_docproc = DOCPROC $@
-      cmd_docproc = $(DOCPROC) doc $< >$@
+      cmd_docproc = SRCTREE=$(srctree)/ $(DOCPROC) doc $< >$@
 define rule_docproc
 	set -e;								\
         $(if $($(quiet)cmd_$(1)),echo '  $($(quiet)cmd_$(1))';) 	\
         $(cmd_$(1)); 							\
         ( 								\
           echo 'cmd_$@ := $(cmd_$(1))'; 				\
-          echo $@: `$(DOCPROC) depend $<`; 				\
+          echo $@: `SRCTREE=$(srctree) $(DOCPROC) depend $<`; 		\
         ) > $(dir $@).$(notdir $@).cmd
 endef
 
-%.sgml: %.tmpl FORCE
+%.xml: %.tmpl FORCE
 	$(call if_changed_rule,docproc)
 
 ###
@@ -87,50 +89,52 @@
 ###
 # procfs guide uses a .c file as example code.
 # This requires an explicit dependency
-C-procfs-example = procfs_example.sgml
+C-procfs-example = procfs_example.xml
 C-procfs-example2 = $(addprefix $(obj)/,$(C-procfs-example))
-$(obj)/procfs-guide.sgml: $(C-procfs-example2)
+$(obj)/procfs-guide.xml: $(C-procfs-example2)
 
 ###
 # Rules to generate postscript, PDF and HTML
 # db2html creates a directory. Generate a html file used for timestamp
 
-quiet_cmd_db2ps = DB2PS   $@
-      cmd_db2ps = db2ps -o $(dir $@) $<
-%.ps : %.sgml
-	@(which db2ps > /dev/null 2>&1) || \
-	 (echo "*** You need to install DocBook stylesheets ***"; \
+quiet_cmd_db2ps = XMLTO    $@
+      cmd_db2ps = xmlto ps $(XMLTOFLAGS) -o $(dir $@) $<
+%.ps : %.xml
+	@(which xmlto > /dev/null 2>&1) || \
+	 (echo "*** You need to install xmlto ***"; \
 	  exit 1)
 	$(call cmd,db2ps)
 
-quiet_cmd_db2pdf = DB2PDF  $@
-      cmd_db2pdf = db2pdf -o $(dir $@) $<
-%.pdf : %.sgml
-	@(which db2pdf > /dev/null 2>&1) || \
-	 (echo "*** You need to install DocBook stylesheets ***"; \
+quiet_cmd_db2pdf = XMLTO   $@
+      cmd_db2pdf = xmlto pdf $(XMLTOFLAGS) -o $(dir $@) $<
+%.pdf : %.xml
+	@(which xmlto > /dev/null 2>&1) || \
+	 (echo "*** You need to install xmlto ***"; \
 	  exit 1)
 	$(call cmd,db2pdf)
 
-quiet_cmd_db2html = DB2HTML $@
-      cmd_db2html = db2html -o $(patsubst %.html,%,$@) $< &&		      \
-		echo '<a HREF="$(patsubst %.html,%,$(notdir $@))/book1.html"> \
+quiet_cmd_db2html = XMLTO  $@
+      cmd_db2html = xmlto xhtml $(XMLTOFLAGS) -o $(patsubst %.html,%,$@) $< && \
+		echo '<a HREF="$(patsubst %.html,%,$(notdir $@))/index.html"> \
          Goto $(patsubst %.html,%,$(notdir $@))</a><p>' > $@
 
-%.html:	%.sgml
-	@(which db2html > /dev/null 2>&1) || \
-	 (echo "*** You need to install DocBook stylesheets ***"; \
+%.html:	%.xml
+	@(which xmlto > /dev/null 2>&1) || \
+	 (echo "*** You need to install xmlto ***"; \
 	  exit 1)
 	@rm -rf $@ $(patsubst %.html,%,$@)
 	$(call cmd,db2html)
 	@if [ ! -z "$(PNG-$(basename $(notdir $@)))" ]; then \
             cp $(PNG-$(basename $(notdir $@))) $(patsubst %.html,%,$@); fi
 
-###
-# Rule to generate man files - output is placed in the man subdirectory
-
-%.9:	%.sgml
-	$(SPLITMAN) $< $(objtree)/Documentation/DocBook/man "$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)"
-	$(MAKEMAN) convert $(objtree)/Documentation/DocBook/man $<
+quiet_cmd_db2man = XMLTO   $@
+      cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man $< ; gzip -f $(obj)/man/*.9; fi
+%.9 : %.xml
+	@(which xmlto > /dev/null 2>&1) || \
+	 (echo "*** You need to install xmlto ***"; \
+	  exit 1)
+	$(call cmd,db2man)
+	@touch $@
 
 ###
 # Rules to generate postscripts and PNG imgages from .fig format files
@@ -153,8 +157,8 @@
 	$(call cmd,fig2png)
 
 ###
-# Rule to convert a .c file to inline SGML documentation
-%.sgml: %.c
+# Rule to convert a .c file to inline XML documentation
+%.xml: %.c
 	@echo '  GEN     $@'
 	@(                            \
 	   echo "<programlisting>";   \
@@ -168,24 +172,24 @@
 # Help targets as used by the top-level makefile
 dochelp:
 	@echo  '  Linux kernel internal documentation in different formats:'
-	@echo  '  sgmldocs (SGML), psdocs (Postscript), pdfdocs (PDF)'
+	@echo  '  xmldocs (XML DocBook), psdocs (Postscript), pdfdocs (PDF)'
 	@echo  '  htmldocs (HTML), mandocs (man pages, use installmandocs to install)'
 
 ###
 # Temporary files left by various tools
 clean-files := $(DOCBOOKS) \
-	$(patsubst %.sgml, %.dvi,  $(DOCBOOKS)) \
-	$(patsubst %.sgml, %.aux,  $(DOCBOOKS)) \
-	$(patsubst %.sgml, %.tex,  $(DOCBOOKS)) \
-	$(patsubst %.sgml, %.log,  $(DOCBOOKS)) \
-	$(patsubst %.sgml, %.out,  $(DOCBOOKS)) \
-	$(patsubst %.sgml, %.ps,   $(DOCBOOKS)) \
-	$(patsubst %.sgml, %.pdf,  $(DOCBOOKS)) \
-	$(patsubst %.sgml, %.html, $(DOCBOOKS)) \
-	$(patsubst %.sgml, %.9,    $(DOCBOOKS)) \
+	$(patsubst %.xml, %.dvi,  $(DOCBOOKS)) \
+	$(patsubst %.xml, %.aux,  $(DOCBOOKS)) \
+	$(patsubst %.xml, %.tex,  $(DOCBOOKS)) \
+	$(patsubst %.xml, %.log,  $(DOCBOOKS)) \
+	$(patsubst %.xml, %.out,  $(DOCBOOKS)) \
+	$(patsubst %.xml, %.ps,   $(DOCBOOKS)) \
+	$(patsubst %.xml, %.pdf,  $(DOCBOOKS)) \
+	$(patsubst %.xml, %.html, $(DOCBOOKS)) \
+	$(patsubst %.xml, %.9,    $(DOCBOOKS)) \
 	$(C-procfs-example)
 
-clean-dirs := $(patsubst %.sgml,%,$(DOCBOOKS))
+clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS))
 
 #man put files in man subdir - traverse down
 subdir- := man/
diff -urN malta/linux/Documentation/DocBook/deviceiobook.tmpl malta/linux/Documentation/DocBook/deviceiobook.tmpl
--- malta/linux/Documentation/DocBook/deviceiobook.tmpl	2004/02/19 03:06:21	1.4
+++ malta/linux/Documentation/DocBook/deviceiobook.tmpl	2005/06/21 13:20:32	1.4.1000.1
@@ -1,4 +1,6 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
 
 <book id="DoingIO">
  <bookinfo>
@@ -147,8 +149,7 @@
 	compiler is not permitted to reorder the I/O sequence. When the 
 	ordering can be compiler optimised, you can use <function>
 	__readb</function> and friends to indicate the relaxed ordering. Use 
-	this with care. The <function>rmb</function> provides a read memory 
-	barrier. The <function>wmb</function> provides a write memory barrier.
+	this with care.
       </para>
 
       <para>
@@ -159,19 +160,113 @@
 	asynchronously. A driver author must issue a read from the same
 	device to ensure that writes have occurred in the specific cases the
 	author cares. This kind of property cannot be hidden from driver
-	writers in the API.
+	writers in the API.  In some cases, the read used to flush the device
+	may be expected to fail (if the card is resetting, for example).  In
+	that case, the read should be done from config space, which is
+	guaranteed to soft-fail if the card doesn't respond.
+      </para>
+
+      <para>
+	The following is an example of flushing a write to a device when
+	the driver would like to ensure the write's effects are visible prior
+	to continuing execution.
+      </para>
+
+<programlisting>
+static inline void
+qla1280_disable_intrs(struct scsi_qla_host *ha)
+{
+	struct device_reg *reg;
+
+	reg = ha->iobase;
+	/* disable risc and host interrupts */
+	WRT_REG_WORD(&amp;reg->ictrl, 0);
+	/*
+	 * The following read will ensure that the above write
+	 * has been received by the device before we return from this
+	 * function.
+	 */
+	RD_REG_WORD(&amp;reg->ictrl);
+	ha->flags.ints_enabled = 0;
+}
+</programlisting>
+
+      <para>
+	In addition to write posting, on some large multiprocessing systems
+	(e.g. SGI Challenge, Origin and Altix machines) posted writes won't
+	be strongly ordered coming from different CPUs.  Thus it's important
+	to properly protect parts of your driver that do memory-mapped writes
+	with locks and use the <function>mmiowb</function> to make sure they
+	arrive in the order intended.  Issuing a regular <function>readX
+	</function> will also ensure write ordering, but should only be used
+	when the driver has to be sure that the write has actually arrived
+	at the device (not that it's simply ordered with respect to other
+	writes), since a full <function>readX</function> is a relatively
+	expensive operation.
+      </para>
+
+      <para>
+	Generally, one should use <function>mmiowb</function> prior to
+	releasing a spinlock that protects regions using <function>writeb
+	</function> or similar functions that aren't surrounded by <function>
+	readb</function> calls, which will ensure ordering and flushing.  The
+	following pseudocode illustrates what might occur if write ordering
+	isn't guaranteed via <function>mmiowb</function> or one of the
+	<function>readX</function> functions.
+      </para>
+
+<programlisting>
+CPU A:  spin_lock_irqsave(&amp;dev_lock, flags)
+CPU A:  ...
+CPU A:  writel(newval, ring_ptr);
+CPU A:  spin_unlock_irqrestore(&amp;dev_lock, flags)
+        ...
+CPU B:  spin_lock_irqsave(&amp;dev_lock, flags)
+CPU B:  writel(newval2, ring_ptr);
+CPU B:  ...
+CPU B:  spin_unlock_irqrestore(&amp;dev_lock, flags)
+</programlisting>
+
+      <para>
+	In the case above, newval2 could be written to ring_ptr before
+	newval.  Fixing it is easy though:
+      </para>
+
+<programlisting>
+CPU A:  spin_lock_irqsave(&amp;dev_lock, flags)
+CPU A:  ...
+CPU A:  writel(newval, ring_ptr);
+CPU A:  mmiowb(); /* ensure no other writes beat us to the device */
+CPU A:  spin_unlock_irqrestore(&amp;dev_lock, flags)
+        ...
+CPU B:  spin_lock_irqsave(&amp;dev_lock, flags)
+CPU B:  writel(newval2, ring_ptr);
+CPU B:  ...
+CPU B:  mmiowb();
+CPU B:  spin_unlock_irqrestore(&amp;dev_lock, flags)
+</programlisting>
+
+      <para>
+	See tg3.c for a real world example of how to use <function>mmiowb
+	</function>
       </para>
 
       <para>
 	PCI ordering rules also guarantee that PIO read responses arrive
-	after any outstanding DMA writes on that bus, since for some devices
+	after any outstanding DMA writes from that bus, since for some devices
 	the result of a <function>readb</function> call may signal to the
 	driver that a DMA transaction is complete.  In many cases, however,
 	the driver may want to indicate that the next
 	<function>readb</function> call has no relation to any previous DMA
 	writes performed by the device.  The driver can use
 	<function>readb_relaxed</function> for these cases, although only
-	some platforms will honor the relaxed semantics.
+	some platforms will honor the relaxed semantics.  Using the relaxed
+	read functions will provide significant performance benefits on
+	platforms that support it.  The qla2xxx driver provides examples
+	of how to use <function>readX_relaxed</function>.  In many cases,
+	a majority of the driver's <function>readX</function> calls can
+	safely be converted to <function>readX_relaxed</function> calls, since
+	only a few will indicate or depend on DMA completion.
       </para>
     </sect1>
 
diff -urN malta/linux/Documentation/DocBook/gadget.tmpl malta/linux/Documentation/DocBook/gadget.tmpl
--- malta/linux/Documentation/DocBook/gadget.tmpl	2004/05/12 17:14:19	1.3.1000.1
+++ malta/linux/Documentation/DocBook/gadget.tmpl	2005/06/21 13:20:32	1.3.1000.2
@@ -1,9 +1,12 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
+
 <book id="USB-Gadget-API">
   <bookinfo>
     <title>USB Gadget API for Linux</title>
-    <date>02 June 2003</date>
-    <edition>02 June 2003</edition>
+    <date>20 August 2004</date>
+    <edition>20 August 2004</edition>
   
     <legalnotice>
        <para>
@@ -34,7 +37,7 @@
        </para>
     </legalnotice>
     <copyright>
-      <year>2003</year>
+      <year>2003-2004</year>
       <holder>David Brownell</holder>
     </copyright>
 
@@ -73,9 +76,13 @@
 	composite devices,
 	and alternate interface settings.
 	</para></listitem>
+    <listitem><para>USB "On-The-Go" (OTG) support, in conjunction
+	with updates to the Linux-USB host side.
+	</para></listitem>
     <listitem><para>Sharing data structures and API models with the
-	Linux-USB host side API.  This looks forward to USB "On-The-Go"
-	(OTG) and similar more-symmetric frameworks.
+	Linux-USB host side API.  This helps the OTG support, and
+	looks forward to more-symmetric frameworks (where the same
+	I/O model is used by both host and device side drivers).
 	</para></listitem>
     <listitem><para>Minimalist, so it's easier to support new device
 	controller hardware.  I/O processing doesn't imply large
@@ -153,6 +160,7 @@
 	the SA-11x0 or PXA-25x UDC (found within many PDAs),
 	and a variety of other products.
 	</para>
+
 	</listitem></varlistentry>
 
     <varlistentry>
@@ -162,10 +170,14 @@
 	<para>The lower boundary of this driver implements hardware-neutral
 	USB functions, using calls to the controller driver.
 	Because such hardware varies widely in capabilities and restrictions,
-	the gadget driver is normally configured at compile time
+	and is used in embedded environments where space is at a premium,
+	the gadget driver is often configured at compile time
 	to work with endpoints supported by one particular controller.
 	Gadget drivers may be portable to several different controllers,
 	using conditional compilation.
+	(Recent kernels substantially simplify the work involved in
+	supporting new hardware, by <emphasis>autoconfiguring</emphasis>
+	endpoints automatically for many bulk-oriented drivers.)
 	Gadget driver responsibilities include:
 	</para>
 	<itemizedlist>
@@ -178,8 +190,9 @@
 		altsettings, including enabling and configuring endpoints
 		</para></listitem>
 	    <listitem><para>handling life cycle events, such as managing
-		bindings
-	        to hardware, and disconnection from the USB host.
+		bindings to hardware,
+		USB suspend/resume, remote wakeup,
+		and disconnection from the USB host.
 		</para></listitem>
 	    <listitem><para>managing IN and OUT transfers on all currently
 		enabled endpoints
@@ -244,15 +257,38 @@
 
 </variablelist>
 
-<para>Over time, reusable utilities should evolve to help make some
-gadget driver tasks simpler.  An example of particular interest
+<para>OTG-capable systems will also need to include a standard Linux-USB
+host side stack,
+with <emphasis>usbcore</emphasis>,
+one or more <emphasis>Host Controller Drivers</emphasis> (HCDs),
+<emphasis>USB Device Drivers</emphasis> to support
+the OTG "Targeted Peripheral List",
+and so forth.
+There will also be an <emphasis>OTG Controller Driver</emphasis>,
+which is visible to gadget and device driver developers only indirectly.
+That helps the host and device side USB controllers implement the
+two new OTG protocols (HNP and SRP).
+Roles switch (host to peripheral, or vice versa) using HNP
+during USB suspend processing, and SRP can be viewed as a
+more battery-friendly kind of device wakeup protocol.
+</para>
+
+<para>Over time, reusable utilities are evolving to help make some
+gadget driver tasks simpler.
+For example, building configuration descriptors from vectors of
+descriptors for the configurations interfaces and endpoints is
+now automated, and many drivers now use autoconfiguration to
+choose hardware endpoints and initialize their descriptors.
+
+A potential example of particular interest
 is code implementing standard USB-IF protocols for
 HID, networking, storage, or audio classes.
 Some developers are interested in KDB or KGDB hooks, to let
 target hardware be remotely debugged.
 Most such USB protocol code doesn't need to be hardware-specific,
 any more than network protocols like X11, HTTP, or NFS are.
-Such interface drivers might be combined, to support composite devices.
+Such gadget-side interface drivers should eventually be combined,
+to implement composite devices.
 </para>
 
 </chapter>
@@ -284,7 +320,7 @@
 <para>However, docproc does not understand all the C constructs
 that are used, so some relevant information is likely omitted from
 what you are reading.  
-One example of such information is several per-request flags.
+One example of such information is endpoint autoconfiguration.
 You'll have to read the header file, and use example source
 code (such as that for "Gadget Zero"), to fully understand the API.
 </para>
@@ -292,7 +328,7 @@
 <para>The part of the API implementing some basic
 driver capabilities is specific to the version of the
 Linux kernel that's in use.
-The 2.5 kernel includes a <emphasis>driver model</emphasis>
+The 2.6 kernel includes a <emphasis>driver model</emphasis>
 framework that has no analogue on earlier kernels;
 so those parts of the gadget API are not fully portable.
 (They are implemented on 2.4 kernels, but in a different way.)
@@ -308,17 +344,21 @@
 that would be added using hardware-specific APIs.
 </para>
 
-<para>This API expects drivers to use conditional compilation to handle
-endpoint capabilities of different hardware.
-Those tend to have arbitrary restrictions, relating to
+<para>This API allows drivers to use conditional compilation to handle
+endpoint capabilities of different hardware, but doesn't require that.
+Hardware tends to have arbitrary restrictions, relating to
 transfer types, addressing, packet sizes, buffering, and availability.
 As a rule, such differences only matter for "endpoint zero" logic
 that handles device configuration and management.
-The API only supports limited run-time
+The API supports limited run-time
 detection of capabilities, through naming conventions for endpoints.
-Although a gadget driver could scan the endpoints available to it and
-choose to map those capabilities onto driver functionality in some way,
-few drivers will want to reconfigure themselves at run-time.
+Many drivers will be able to at least partially autoconfigure
+themselves.
+In particular, driver init sections will often have endpoint
+autoconfiguration logic that scans the hardware's list of endpoints
+to find ones matching the driver requirements
+(relying on those conventions), to eliminate some of the most
+common reasons for conditional compilation.
 </para>
 
 <para>Like the Linux-USB host side API, this API exposes
@@ -355,10 +395,14 @@
 At this point the device is logically in the USB ch9 initial state
 ("attached"), drawing no power and not usable
 (since it does not yet support enumeration).
+Any host should not see the device, since it's not
+activated the data line pullup used by the host to
+detect a device, even if VBUS power is available.
 </para></listitem>
 
 <listitem><para>Register a gadget driver that implements some higher level
-device function.  That will then bind() to a usb_gadget.
+device function.  That will then bind() to a usb_gadget, which
+activates the data line pullup sometime after detecting VBUS.
 </para></listitem>
 
 <listitem><para>The hardware driver can now start enumerating.
@@ -373,6 +417,8 @@
 functionality being implemented.
 That can involve alternate settings or configurations,
 unless the hardware prevents such operation.
+For OTG devices, each configuration descriptor includes
+an OTG descriptor.
 </para></listitem>
 
 <listitem><para>The gadget driver handles the last step of enumeration,
@@ -381,13 +427,18 @@
 with all interfaces in their default settings.
 That involves using a list of the hardware's endpoints, enabling each
 endpoint according to its descriptor.
+It may also involve using <function>usb_gadget_vbus_draw</function>
+to let more power be drawn from VBUS, as allowed by that configuration.
+For OTG devices, setting a configuration may also involve reporting
+HNP capabilities through a user interface.
 </para></listitem>
 
 <listitem><para>Do real work and perform data transfers, possibly involving
 changes to interface settings or switching to new configurations, until the
 device is disconnect()ed from the host.
 Queue any number of transfer requests to each endpoint.
-The drivers then go back to step 3 (above).
+It may be suspended and resumed several times before being disconnected.
+On disconnect, the drivers go back to step 3 (above).
 </para></listitem>
 
 <listitem><para>When the gadget driver module is being unloaded,
@@ -399,7 +450,9 @@
 
 <para>Drivers will normally be arranged so that just loading the
 gadget driver module (or statically linking it into a Linux kernel)
-allows the peripheral device to be enumerated.
+allows the peripheral device to be enumerated, but some drivers
+will defer enumeration until some higher level component (like
+a user mode daemon) enables it.
 Note that at this lowest level there are no policies about how
 ep0 configuration logic is implemented,
 except that it should obey USB specifications.
@@ -410,6 +463,18 @@
 be built by integrating reusable components.
 </para>
 
+<para>Note that the lifecycle above can be slightly different
+for OTG devices.
+Other than providing an additional OTG descriptor in each
+configuration, only the HNP-related differences are particularly
+visible to driver code.
+They involve reporting requirements during the SET_CONFIGURATION
+request, and the option to invoke HNP during some suspend callbacks.
+Also, SRP changes the semantics of
+<function>usb_gadget_wakeup</function>
+slightly.
+</para>
+
 </sect1>
 
 <sect1 id="ch9"><title>USB 2.0 Chapter 9 Types and Constants</title>
@@ -418,9 +483,9 @@
 rely on common USB structures and constants
 defined in the
 <filename>&lt;linux/usb_ch9.h&gt;</filename>
-header file, which is standard in Linux 2.5 kernels.
+header file, which is standard in Linux 2.6 kernels.
 These are the same types and constants used by host
-side drivers.
+side drivers (and usbcore).
 </para>
 
 !Iinclude/linux/usb_ch9.h
@@ -451,26 +516,38 @@
 
 <para>The core API is sufficient for writing a USB Gadget Driver,
 but some optional utilities are provided to simplify common tasks.
+These utilities include endpoint autoconfiguration.
 </para>
 
 !Edrivers/usb/gadget/usbstring.c
 !Edrivers/usb/gadget/config.c
+<!-- !Edrivers/usb/gadget/epautoconf.c -->
 </sect1>
 
 </chapter>
 
 <chapter id="controllers"><title>Peripheral Controller Drivers</title>
 
-<para>The first hardware supporting this API is the NetChip 2280
+<para>The first hardware supporting this API was the NetChip 2280
 controller, which supports USB 2.0 high speed and is based on PCI.
 This is the <filename>net2280</filename> driver module.
-The driver supports Linux kernel versions 2.4 and 2.5;
+The driver supports Linux kernel versions 2.4 and 2.6;
 contact NetChip Technologies for development boards and product
 information.
 </para> 
 
-<para>For users of Intel's PXA 2xx series processors,
-a <filename>pxa2xx_udc</filename> driver is available.
+<para>Other hardware working in the "gadget" framework includes:
+Intel's PXA 25x and IXP42x series processors
+(<filename>pxa2xx_udc</filename>),
+Toshiba TC86c001 "Goku-S" (<filename>goku_udc</filename>),
+Renesas SH7705/7727 (<filename>sh_udc</filename>),
+MediaQ 11xx (<filename>mq11xx_udc</filename>),
+Hynix HMS30C7202 (<filename>h7202_udc</filename>),
+National 9303/4 (<filename>n9604_udc</filename>),
+Texas Instruments OMAP (<filename>omap_udc</filename>),
+Sharp LH7A40x (<filename>lh7a40x_udc</filename>),
+and more.
+Most of those are full speed controllers.
 </para>
 
 <para>At this writing, there are people at work on drivers in
@@ -526,6 +603,15 @@
 to avoid creating problems.)
 </para>
 
+<para>Support for Microsoft's <emphasis>RNDIS</emphasis>
+protocol has been contributed by Pengutronix and Auerswald GmbH.
+This is like CDC Ethernet, but it runs on more slightly USB hardware
+(but less than the CDC subset).
+However, its main claim to fame is being able to connect directly to
+recent versions of Windows, using drivers that Microsoft bundles
+and supports, making it much simpler to network with Windows.
+</para>
+
 <para>There is also support for user mode gadget drivers,
 using <emphasis>gadgetfs</emphasis>.
 This provides a <emphasis>User Mode API</emphasis> that presents
@@ -535,6 +621,10 @@
 develop and debug user mode drivers, so that once a robust
 controller driver is available many applications for it
 won't require new kernel mode software.
+Linux 2.6 <emphasis>Async I/O (AIO)</emphasis>
+support is available, so that user mode software
+can stream data with only slightly more overhead
+than a kernel driver.
 </para>
 
 <para>There's a USB Mass Storage class driver, which provides
@@ -548,6 +638,16 @@
 to access the data from the backing store.
 </para>
 
+<para>There's a "serial line" driver, useful for TTY style
+operation over USB.
+The latest version of that driver supports CDC ACM style
+operation, like a USB modem, and so on most hardware it can
+interoperate easily with MS-Windows.
+One interesting use of that driver is in boot firmware (like a BIOS),
+which can sometimes use that model with very small systems without
+real serial lines.
+</para>
+
 <para>Support for other kinds of gadget is expected to
 be developed and contributed
 over time, as this driver framework evolves.
@@ -555,6 +655,96 @@
 
 </chapter>
 
+<chapter id="otg"><title>USB On-The-GO (OTG)</title>
+
+<para>USB OTG support on Linux 2.6 was initially developed
+by Texas Instruments for
+<ulink url="http://www.omap.com">OMAP</ulink> 16xx and 17xx
+series processors.
+Other OTG systems should work in similar ways, but the
+hardware level details could be very different.
+</para> 
+
+<para>Systems need specialized hardware support to implement OTG,
+notably including a special <emphasis>Mini-AB</emphasis> jack
+and associated transciever to support <emphasis>Dual-Role</emphasis>
+operation:
+they can act either as a host, using the standard
+Linux-USB host side driver stack,
+or as a peripheral, using this "gadget" framework.
+To do that, the system software relies on small additions
+to those programming interfaces,
+and on a new internal component (here called an "OTG Controller")
+affecting which driver stack connects to the OTG port.
+In each role, the system can re-use the existing pool of
+hardware-neutral drivers, layered on top of the controller
+driver interfaces (<emphasis>usb_bus</emphasis> or
+<emphasis>usb_gadget</emphasis>).
+Such drivers need at most minor changes, and most of the calls
+added to support OTG can also benefit non-OTG products.
+</para>
+
+<itemizedlist>
+    <listitem><para>Gadget drivers test the <emphasis>is_otg</emphasis>
+	flag, and use it to determine whether or not to include
+	an OTG descriptor in each of their configurations.
+	</para></listitem>
+    <listitem><para>Gadget drivers may need changes to support the
+	two new OTG protocols, exposed in new gadget attributes
+	such as <emphasis>b_hnp_enable</emphasis> flag.
+	HNP support should be reported through a user interface
+	(two LEDs could suffice), and is triggered in some cases
+	when the host suspends the peripheral.
+	SRP support can be user-initiated just like remote wakeup,
+	probably by pressing the same button.
+	</para></listitem>
+    <listitem><para>On the host side, USB device drivers need
+	to be taught to trigger HNP at appropriate moments, using
+	<function>usb_suspend_device()</function>.
+	That also conserves battery power, which is useful even
+	for non-OTG configurations.
+	</para></listitem>
+    <listitem><para>Also on the host side, a driver must support the
+	OTG "Targeted Peripheral List".  That's just a whitelist,
+	used to reject peripherals not supported with a given
+	Linux OTG host.
+	<emphasis>This whitelist is product-specific;
+	each product must modify <filename>otg_whitelist.h</filename>
+	to match its interoperability specification.
+	</emphasis>
+	</para>
+	<para>Non-OTG Linux hosts, like PCs and workstations,
+	normally have some solution for adding drivers, so that
+	peripherals that aren't recognized can eventually be supported.
+	That approach is unreasonable for consumer products that may
+	never have their firmware upgraded, and where it's usually
+	unrealistic to expect traditional PC/workstation/server kinds
+	of support model to work.
+	For example, it's often impractical to change device firmware
+	once the product has been distributed, so driver bugs can't
+	normally be fixed if they're found after shipment.
+	</para></listitem>
+</itemizedlist>
+
+<para>
+Additional changes are needed below those hardware-neutral
+<emphasis>usb_bus</emphasis> and <emphasis>usb_gadget</emphasis>
+driver interfaces; those aren't discussed here in any detail.
+Those affect the hardware-specific code for each USB Host or Peripheral
+controller, and how the HCD initializes (since OTG can be active only
+on a single port).
+They also involve what may be called an <emphasis>OTG Controller
+Driver</emphasis>, managing the OTG transceiver and the OTG state
+machine logic as well as much of the root hub behavior for the
+OTG port.
+The OTG controller driver needs to activate and deactivate USB
+controllers depending on the relevant device role.
+Some related changes were needed inside usbcore, so that it
+can identify OTG-capable devices and respond appropriately
+to HNP or SRP protocols.
+</para> 
+
+</chapter>
 
 </book>
 <!--
diff -urN malta/linux/Documentation/DocBook/journal-api.tmpl malta/linux/Documentation/DocBook/journal-api.tmpl
--- malta/linux/Documentation/DocBook/journal-api.tmpl	2003/06/05 00:04:28	1.7
+++ malta/linux/Documentation/DocBook/journal-api.tmpl	2005/06/21 13:20:32	1.7.1000.1
@@ -1,4 +1,7 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
+
 <book id="LinuxJBDAPI">
  <bookinfo>
   <title>The Linux Journalling API</title>
diff -urN malta/linux/Documentation/DocBook/kernel-api.tmpl malta/linux/Documentation/DocBook/kernel-api.tmpl
--- malta/linux/Documentation/DocBook/kernel-api.tmpl	2003/10/09 13:09:26	1.34
+++ malta/linux/Documentation/DocBook/kernel-api.tmpl	2005/06/21 13:20:32	1.34.1000.1
@@ -1,4 +1,7 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
+
 <book id="LinuxKernelAPI">
  <bookinfo>
   <title>The Linux Kernel API</title>
@@ -46,13 +49,33 @@
 !Iinclude/asm-i386/unaligned.h
      </sect1>
 
-<!-- FIXME:
-  kernel/sched.c has no docs, which stuffs up the sgml.  Comment
-  out until somebody adds docs.  KAO
      <sect1><title>Delaying, scheduling, and timer routines</title>
-X!Ekernel/sched.c
+!Iinclude/linux/sched.h
+!Ekernel/sched.c
+!Ekernel/timer.c
+     </sect1>
+     <sect1><title>Internal Functions</title>
+!Ikernel/exit.c
+!Ikernel/signal.c
      </sect1>
-KAO -->
+
+     <sect1><title>Kernel objects manipulation</title>
+<!--
+X!Iinclude/linux/kobject.h
+-->
+!Elib/kobject.c
+     </sect1>
+
+     <sect1><title>Kernel utility functions</title>
+!Iinclude/linux/kernel.h
+<!-- This needs to clean up to make kernel-doc happy
+X!Ekernel/printk.c
+ -->
+!Ekernel/panic.c
+!Ekernel/sys.c
+!Ekernel/rcupdate.c
+     </sect1>
+
   </chapter>
 
   <chapter id="adt">
@@ -78,7 +101,9 @@
 !Elib/vsprintf.c
      </sect1>
      <sect1><title>String Manipulation</title>
-!Ilib/string.c
+<!-- All functions are exported at now
+X!Ilib/string.c
+ -->
 !Elib/string.c
      </sect1>
      <sect1><title>Bit Operations</title>
@@ -95,6 +120,33 @@
 !Iinclude/asm-i386/uaccess.h
 !Iarch/i386/lib/usercopy.c
      </sect1>
+     <sect1><title>More Memory Management Functions</title>
+!Iinclude/linux/rmap.h
+!Emm/readahead.c
+!Emm/filemap.c
+!Emm/memory.c
+!Emm/vmalloc.c
+!Emm/mempool.c
+!Emm/page-writeback.c
+!Emm/truncate.c
+     </sect1>
+  </chapter>
+
+
+  <chapter id="ipc">
+     <title>Kernel IPC facilities</title>
+
+     <sect1><title>IPC utilities</title>
+!Iipc/util.c
+     </sect1>
+  </chapter>
+
+  <chapter id="kfifo">
+     <title>FIFO Buffer</title>
+     <sect1><title>kfifo interface</title>
+!Iinclude/linux/kfifo.h
+!Ekernel/kfifo.c
+     </sect1>
   </chapter>
 
   <chapter id="proc">
@@ -103,10 +155,27 @@
      <sect1><title>sysctl interface</title>
 !Ekernel/sysctl.c
      </sect1>
+
+     <sect1><title>proc filesystem interface</title>
+!Ifs/proc/base.c
+     </sect1>
+  </chapter>
+
+  <chapter id="debugfs">
+     <title>The debugfs filesystem</title>
+ 
+     <sect1><title>debugfs interface</title>
+!Efs/debugfs/inode.c
+!Efs/debugfs/file.c
+     </sect1>
   </chapter>
 
   <chapter id="vfs">
      <title>The Linux VFS</title>
+     <sect1><title>The Filesystem types</title>
+!Iinclude/linux/fs.h
+!Einclude/linux/fs.h
+     </sect1>
      <sect1><title>The Directory Cache</title>
 !Efs/dcache.c
 !Iinclude/linux/dcache.h
@@ -122,23 +191,53 @@
 !Efs/locks.c
 !Ifs/locks.c
      </sect1>
+     <sect1><title>Other Functions</title>
+!Efs/mpage.c
+!Efs/namei.c
+!Efs/buffer.c
+!Efs/bio.c
+!Efs/seq_file.c
+!Efs/filesystems.c
+!Efs/fs-writeback.c
+!Efs/block_dev.c
+     </sect1>
   </chapter>
 
   <chapter id="netcore">
      <title>Linux Networking</title>
+     <sect1><title>Networking Base Types</title>
+!Iinclude/linux/net.h
+     </sect1>
      <sect1><title>Socket Buffer Functions</title>
 !Iinclude/linux/skbuff.h
+!Iinclude/net/sock.h
+!Enet/socket.c
 !Enet/core/skbuff.c
+!Enet/core/sock.c
+!Enet/core/datagram.c
+!Enet/core/stream.c
      </sect1>
      <sect1><title>Socket Filter</title>
 !Enet/core/filter.c
      </sect1>
+     <sect1><title>Generic Network Statistics</title>
+!Iinclude/linux/gen_stats.h
+!Enet/core/gen_stats.c
+!Enet/core/gen_estimator.c
+     </sect1>
+     <sect1><title>SUN RPC subsystem</title>
+<!-- The !D functionality is not perfect, garbage has to be protected by comments
+!Dnet/sunrpc/sunrpc_syms.c
+-->
+!Enet/sunrpc/xdr.c
+!Enet/sunrpc/svcsock.c
+!Enet/sunrpc/sched.c
+     </sect1>
   </chapter>
 
   <chapter id="netdev">
      <title>Network device support</title>
      <sect1><title>Driver Support</title>
-!Edrivers/net/net_init.c
 !Enet/core/dev.c
      </sect1>
      <sect1><title>8390 Based Network Cards</title>
@@ -170,11 +269,26 @@
 !Iarch/i386/kernel/irq.c
      </sect1>
 
+     <sect1><title>Resources Management</title>
+!Ekernel/resource.c
+     </sect1>
+
      <sect1><title>MTRR Handling</title>
 !Earch/i386/kernel/cpu/mtrr/main.c
      </sect1>
      <sect1><title>PCI Support Library</title>
 !Edrivers/pci/pci.c
+!Edrivers/pci/pci-driver.c
+!Edrivers/pci/remove.c
+!Edrivers/pci/pci-acpi.c
+<!-- kerneldoc does not understand to __devinit
+X!Edrivers/pci/search.c
+ -->
+!Edrivers/pci/msi.c
+!Edrivers/pci/bus.c
+!Edrivers/pci/hotplug.c
+!Edrivers/pci/probe.c
+!Edrivers/pci/rom.c
      </sect1>
      <sect1><title>PCI Hotplug Support Library</title>
 !Edrivers/pci/hotplug/pci_hotplug_core.c
@@ -199,6 +313,14 @@
 !Efs/devfs/base.c
   </chapter>
 
+  <chapter id="sysfs">
+     <title>The Filesystem for Exporting Kernel Objects</title>
+!Efs/sysfs/file.c
+!Efs/sysfs/dir.c
+!Efs/sysfs/symlink.c
+!Efs/sysfs/bin.c
+  </chapter>
+
   <chapter id="security">
      <title>Security Framework</title>
 !Esecurity/security.c
@@ -209,6 +331,61 @@
 !Ekernel/power/pm.c
   </chapter>
 
+  <chapter id="devdrivers">
+     <title>Device drivers infrastructure</title>
+     <sect1><title>Device Drivers Base</title>
+<!--
+X!Iinclude/linux/device.h
+-->
+!Edrivers/base/driver.c
+!Edrivers/base/class_simple.c
+!Edrivers/base/core.c
+!Edrivers/base/firmware_class.c
+!Edrivers/base/transport_class.c
+!Edrivers/base/dmapool.c
+<!-- Cannot be included, because
+     attribute_container_add_class_device_adapter
+ and attribute_container_classdev_to_container
+     exceed allowed 44 characters maximum
+X!Edrivers/base/attribute_container.c
+-->
+!Edrivers/base/sys.c
+<!--
+X!Edrivers/base/interface.c
+-->
+!Edrivers/base/platform.c
+!Edrivers/base/bus.c
+     </sect1>
+     <sect1><title>Device Drivers Power Management</title>
+!Edrivers/base/power/main.c
+!Edrivers/base/power/resume.c
+!Edrivers/base/power/suspend.c
+     </sect1>
+     <sect1><title>Device Drivers ACPI Support</title>
+<!-- Internal functions only
+X!Edrivers/acpi/sleep/main.c
+X!Edrivers/acpi/sleep/wakeup.c
+X!Edrivers/acpi/motherboard.c
+X!Edrivers/acpi/bus.c
+-->
+!Edrivers/acpi/scan.c
+<!-- No correct structured comments
+X!Edrivers/acpi/pci_bind.c
+-->
+     </sect1>
+     <sect1><title>Device drivers PnP support</title>
+!Edrivers/pnp/core.c
+<!-- No correct structured comments
+X!Edrivers/pnp/system.c
+ -->
+!Edrivers/pnp/card.c
+!Edrivers/pnp/driver.c
+!Edrivers/pnp/manager.c
+!Edrivers/pnp/support.c
+     </sect1>
+  </chapter>
+
+
   <chapter id="blkdev">
      <title>Block Devices</title>
 !Edrivers/block/ll_rw_blk.c
@@ -226,7 +403,23 @@
 
   <chapter id="snddev">
      <title>Sound Devices</title>
+!Iinclude/sound/core.h
 !Esound/sound_core.c
+!Iinclude/sound/pcm.h
+!Esound/core/pcm.c
+!Esound/core/device.c
+!Esound/core/info.c
+!Esound/core/rawmidi.c
+!Esound/core/sound.c
+!Esound/core/memory.c
+!Esound/core/pcm_memory.c
+!Esound/core/init.c
+!Esound/core/isadma.c
+!Esound/core/control.c
+!Esound/core/pcm_lib.c
+!Esound/core/hwdep.c
+!Esound/core/pcm_native.c
+!Esound/core/memalloc.c
 <!-- FIXME: Removed for now since no structured comments in source
 X!Isound/sound_firmware.c
 -->
@@ -234,6 +427,7 @@
 
   <chapter id="uart16x50">
      <title>16x50 UART Driver</title>
+!Iinclude/linux/serial_core.h
 !Edrivers/serial/serial_core.c
 !Edrivers/serial/8250.c
   </chapter>
@@ -286,9 +480,11 @@
      <sect1><title>Frame Buffer Memory</title>
 !Edrivers/video/fbmem.c
      </sect1>
+<!--
      <sect1><title>Frame Buffer Console</title>
-!Edrivers/video/console/fbcon.c
+X!Edrivers/video/console/fbcon.c
      </sect1>
+-->
      <sect1><title>Frame Buffer Colormap</title>
 !Edrivers/video/fbcmap.c
      </sect1>
diff -urN malta/linux/Documentation/DocBook/kernel-hacking.tmpl malta/linux/Documentation/DocBook/kernel-hacking.tmpl
--- malta/linux/Documentation/DocBook/kernel-hacking.tmpl	2004/09/14 16:27:37	1.15.1000.2
+++ malta/linux/Documentation/DocBook/kernel-hacking.tmpl	2005/06/21 13:20:32	1.15.1000.3
@@ -1,4 +1,6 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
 
 <book id="lk-hacking-guide">
  <bookinfo>
@@ -145,7 +147,7 @@
     In user context, the <varname>current</varname> pointer (indicating 
     the task we are currently executing) is valid, and
     <function>in_interrupt()</function>
-    (<filename>include/asm/hardirq.h</filename>) is <returnvalue>false
+    (<filename>include/linux/interrupt.h</filename>) is <returnvalue>false
     </returnvalue>.  
    </para>
 
@@ -241,7 +243,7 @@
    <para>
     You can tell you are in a softirq (or bottom half, or tasklet)
     using the <function>in_softirq()</function> macro 
-    (<filename class="headerfile">include/asm/hardirq.h</filename>).
+    (<filename class="headerfile">include/linux/interrupt.h</filename>).
    </para>
    <caution>
     <para>
@@ -888,7 +890,7 @@
    The second class of atomic operations is atomic bit operations on a
    <type>long</type>, defined in
 
-   <filename class="headerfile">include/asm/bitops.h</filename>.  These
+   <filename class="headerfile">include/linux/bitops.h</filename>.  These
    operations generally take a pointer to the bit pattern, and a bit
    number: 0 is the least significant bit.
    <function>set_bit()</function>, <function>clear_bit()</function>
diff -urN malta/linux/Documentation/DocBook/kernel-locking.tmpl malta/linux/Documentation/DocBook/kernel-locking.tmpl
--- malta/linux/Documentation/DocBook/kernel-locking.tmpl	2004/05/12 17:14:19	1.14.1000.1
+++ malta/linux/Documentation/DocBook/kernel-locking.tmpl	2005/06/21 13:20:32	1.14.1000.2
@@ -1,4 +1,6 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
 
 <book id="LKLockingGuide">
  <bookinfo>
@@ -236,12 +238,12 @@
      your task will put itself on the queue, and be woken up when the
      semaphore is released.  This means the CPU will do something
      else while you are waiting, but there are many cases when you
-     simply can't sleep (see <xref linkend="sleeping-things">), and so
+     simply can't sleep (see <xref linkend="sleeping-things"/>), and so
      have to use a spinlock instead.
    </para>
    <para>
      Neither type of lock is recursive: see
-     <xref linkend="deadlock">.
+     <xref linkend="deadlock"/>.
    </para>
    </sect1>
  
@@ -326,7 +328,7 @@
     <para>
       Note that you can also use <function>spin_lock_irq()</function>
       or <function>spin_lock_irqsave()</function> here, which stop
-      hardware interrupts as well: see <xref linkend="hardirq-context">.
+      hardware interrupts as well: see <xref linkend="hardirq-context"/>.
     </para>
 
     <para>
@@ -403,7 +405,7 @@
 
      <para>
        The same softirq can run on the other CPUs: you can use a
-       per-CPU array (see <xref linkend="per-cpu">) for better
+       per-CPU array (see <xref linkend="per-cpu"/>) for better
        performance.  If you're going so far as to use a softirq,
        you probably care about scalable performance enough
        to justify the extra complexity.
@@ -545,120 +547,120 @@
    </para>
    <table>
 <title>Table of Locking Requirements</title>
-<TGROUP COLS="11">
-<TBODY>
-<ROW>
-<ENTRY></ENTRY>
-<ENTRY>IRQ Handler A</ENTRY>
-<ENTRY>IRQ Handler B</ENTRY>
-<ENTRY>Softirq A</ENTRY>
-<ENTRY>Softirq B</ENTRY>
-<ENTRY>Tasklet A</ENTRY>
-<ENTRY>Tasklet B</ENTRY>
-<ENTRY>Timer A</ENTRY>
-<ENTRY>Timer B</ENTRY>
-<ENTRY>User Context A</ENTRY>
-<ENTRY>User Context B</ENTRY>
-</ROW>
-
-<ROW>
-<ENTRY>IRQ Handler A</ENTRY>
-<ENTRY>None</ENTRY>
-</ROW>
-
-<ROW>
-<ENTRY>IRQ Handler B</ENTRY>
-<ENTRY>spin_lock_irqsave</ENTRY>
-<ENTRY>None</ENTRY>
-</ROW>
-
-<ROW>
-<ENTRY>Softirq A</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-</ROW>
-
-<ROW>
-<ENTRY>Softirq B</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-</ROW>
-
-<ROW>
-<ENTRY>Tasklet A</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>None</ENTRY>
-</ROW>
-
-<ROW>
-<ENTRY>Tasklet B</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>None</ENTRY>
-</ROW>
-
-<ROW>
-<ENTRY>Timer A</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>None</ENTRY>
-</ROW>
-
-<ROW>
-<ENTRY>Timer B</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>spin_lock</ENTRY>
-<ENTRY>None</ENTRY>
-</ROW>
-
-<ROW>
-<ENTRY>User Context A</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock_bh</ENTRY>
-<ENTRY>spin_lock_bh</ENTRY>
-<ENTRY>spin_lock_bh</ENTRY>
-<ENTRY>spin_lock_bh</ENTRY>
-<ENTRY>spin_lock_bh</ENTRY>
-<ENTRY>spin_lock_bh</ENTRY>
-<ENTRY>None</ENTRY>
-</ROW>
-
-<ROW>
-<ENTRY>User Context B</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock_irq</ENTRY>
-<ENTRY>spin_lock_bh</ENTRY>
-<ENTRY>spin_lock_bh</ENTRY>
-<ENTRY>spin_lock_bh</ENTRY>
-<ENTRY>spin_lock_bh</ENTRY>
-<ENTRY>spin_lock_bh</ENTRY>
-<ENTRY>spin_lock_bh</ENTRY>
-<ENTRY>down_interruptible</ENTRY>
-<ENTRY>None</ENTRY>
-</ROW>
-
-</TBODY>
-</TGROUP>
-</TABLE>
+<tgroup cols="11">
+<tbody>
+<row>
+<entry></entry>
+<entry>IRQ Handler A</entry>
+<entry>IRQ Handler B</entry>
+<entry>Softirq A</entry>
+<entry>Softirq B</entry>
+<entry>Tasklet A</entry>
+<entry>Tasklet B</entry>
+<entry>Timer A</entry>
+<entry>Timer B</entry>
+<entry>User Context A</entry>
+<entry>User Context B</entry>
+</row>
+
+<row>
+<entry>IRQ Handler A</entry>
+<entry>None</entry>
+</row>
+
+<row>
+<entry>IRQ Handler B</entry>
+<entry>spin_lock_irqsave</entry>
+<entry>None</entry>
+</row>
+
+<row>
+<entry>Softirq A</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock</entry>
+</row>
+
+<row>
+<entry>Softirq B</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock</entry>
+<entry>spin_lock</entry>
+</row>
+
+<row>
+<entry>Tasklet A</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock</entry>
+<entry>spin_lock</entry>
+<entry>None</entry>
+</row>
+
+<row>
+<entry>Tasklet B</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock</entry>
+<entry>spin_lock</entry>
+<entry>spin_lock</entry>
+<entry>None</entry>
+</row>
+
+<row>
+<entry>Timer A</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock</entry>
+<entry>spin_lock</entry>
+<entry>spin_lock</entry>
+<entry>spin_lock</entry>
+<entry>None</entry>
+</row>
+
+<row>
+<entry>Timer B</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock</entry>
+<entry>spin_lock</entry>
+<entry>spin_lock</entry>
+<entry>spin_lock</entry>
+<entry>spin_lock</entry>
+<entry>None</entry>
+</row>
+
+<row>
+<entry>User Context A</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock_bh</entry>
+<entry>spin_lock_bh</entry>
+<entry>spin_lock_bh</entry>
+<entry>spin_lock_bh</entry>
+<entry>spin_lock_bh</entry>
+<entry>spin_lock_bh</entry>
+<entry>None</entry>
+</row>
+
+<row>
+<entry>User Context B</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock_irq</entry>
+<entry>spin_lock_bh</entry>
+<entry>spin_lock_bh</entry>
+<entry>spin_lock_bh</entry>
+<entry>spin_lock_bh</entry>
+<entry>spin_lock_bh</entry>
+<entry>spin_lock_bh</entry>
+<entry>down_interruptible</entry>
+<entry>None</entry>
+</row>
+
+</tbody>
+</tgroup>
+</table>
 </sect1>
 </chapter>
 
diff -urN malta/linux/Documentation/DocBook/libata.tmpl malta/linux/Documentation/DocBook/libata.tmpl
--- malta/linux/Documentation/DocBook/libata.tmpl	2004/09/14 16:27:37	1.1.1000.1
+++ malta/linux/Documentation/DocBook/libata.tmpl	2005/06/21 13:20:32	1.1.1000.2
@@ -1,4 +1,6 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
 
 <book id="libataDevGuide">
  <bookinfo>
@@ -12,7 +14,7 @@
   </authorgroup>
 
   <copyright>
-   <year>2003</year>
+   <year>2003-2005</year>
    <holder>Jeff Garzik</holder>
   </copyright>
 
@@ -42,25 +44,287 @@
 
 <toc></toc>
 
-  <chapter id="libataThanks">
-     <title>Thanks</title>
+  <chapter id="libataIntroduction">
+     <title>Introduction</title>
   <para>
-  The bulk of the ATA knowledge comes thanks to long conversations with
-  Andre Hedrick (www.linux-ide.org).
+  libATA is a library used inside the Linux kernel to support ATA host
+  controllers and devices.  libATA provides an ATA driver API, class
+  transports for ATA and ATAPI devices, and SCSI&lt;-&gt;ATA translation
+  for ATA devices according to the T10 SAT specification.
   </para>
   <para>
-  Thanks to Alan Cox for pointing out similarities 
-  between SATA and SCSI, and in general for motivation to hack on
-  libata.
-  </para>
-  <para>
-  libata's device detection
-  method, ata_pio_devchk, and in general all the early probing was
-  based on extensive study of Hale Landis's probe/reset code in his
-  ATADRVR driver (www.ata-atapi.com).
+  This Guide documents the libATA driver API, library functions, library
+  internals, and a couple sample ATA low-level drivers.
   </para>
   </chapter>
 
+  <chapter id="libataDriverApi">
+     <title>libata Driver API</title>
+     <para>
+     struct ata_port_operations is defined for every low-level libata
+     hardware driver, and it controls how the low-level driver
+     interfaces with the ATA and SCSI layers.
+     </para>
+     <para>
+     FIS-based drivers will hook into the system with ->qc_prep() and
+     ->qc_issue() high-level hooks.  Hardware which behaves in a manner
+     similar to PCI IDE hardware may utilize several generic helpers,
+     defining at a bare minimum the bus I/O addresses of the ATA shadow
+     register blocks.
+     </para>
+     <sect1>
+        <title>struct ata_port_operations</title>
+
+	<sect2><title>Disable ATA port</title>
+	<programlisting>
+void (*port_disable) (struct ata_port *);
+	</programlisting>
+
+	<para>
+	Called from ata_bus_probe() and ata_bus_reset() error paths,
+	as well as when unregistering from the SCSI module (rmmod, hot
+	unplug).
+	</para>
+
+	</sect2>
+
+	<sect2><title>Post-IDENTIFY device configuration</title>
+	<programlisting>
+void (*dev_config) (struct ata_port *, struct ata_device *);
+	</programlisting>
+
+	<para>
+	Called after IDENTIFY [PACKET] DEVICE is issued to each device
+	found.  Typically used to apply device-specific fixups prior to
+	issue of SET FEATURES - XFER MODE, and prior to operation.
+	</para>
+
+	</sect2>
+
+	<sect2><title>Set PIO/DMA mode</title>
+	<programlisting>
+void (*set_piomode) (struct ata_port *, struct ata_device *);
+void (*set_dmamode) (struct ata_port *, struct ata_device *);
+void (*post_set_mode) (struct ata_port *ap);
+	</programlisting>
+
+	<para>
+	Hooks called prior to the issue of SET FEATURES - XFER MODE
+	command.  dev->pio_mode is guaranteed to be valid when
+	->set_piomode() is called, and dev->dma_mode is guaranteed to be
+	valid when ->set_dmamode() is called.  ->post_set_mode() is
+	called unconditionally, after the SET FEATURES - XFER MODE
+	command completes successfully.
+	</para>
+
+	<para>
+	->set_piomode() is always called (if present), but
+	->set_dma_mode() is only called if DMA is possible.
+	</para>
+
+	</sect2>
+
+	<sect2><title>Taskfile read/write</title>
+	<programlisting>
+void (*tf_load) (struct ata_port *ap, struct ata_taskfile *tf);
+void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf);
+	</programlisting>
+
+	<para>
+	->tf_load() is called to load the given taskfile into hardware
+	registers / DMA buffers.  ->tf_read() is called to read the
+	hardware registers / DMA buffers, to obtain the current set of
+	taskfile register values.
+	</para>
+
+	</sect2>
+
+	<sect2><title>ATA command execute</title>
+	<programlisting>
+void (*exec_command)(struct ata_port *ap, struct ata_taskfile *tf);
+	</programlisting>
+
+	<para>
+	causes an ATA command, previously loaded with
+	->tf_load(), to be initiated in hardware.
+	</para>
+
+	</sect2>
+
+	<sect2><title>Per-cmd ATAPI DMA capabilities filter</title>
+	<programlisting>
+int (*check_atapi_dma) (struct ata_queued_cmd *qc);
+	</programlisting>
+
+	<para>
+Allow low-level driver to filter ATA PACKET commands, returning a status
+indicating whether or not it is OK to use DMA for the supplied PACKET
+command.
+	</para>
+
+	</sect2>
+
+	<sect2><title>Read specific ATA shadow registers</title>
+	<programlisting>
+u8   (*check_status)(struct ata_port *ap);
+u8   (*check_altstatus)(struct ata_port *ap);
+u8   (*check_err)(struct ata_port *ap);
+	</programlisting>
+
+	<para>
+	Reads the Status/AltStatus/Error ATA shadow register from
+	hardware.  On some hardware, reading the Status register has
+	the side effect of clearing the interrupt condition.
+	</para>
+
+	</sect2>
+
+	<sect2><title>Select ATA device on bus</title>
+	<programlisting>
+void (*dev_select)(struct ata_port *ap, unsigned int device);
+	</programlisting>
+
+	<para>
+	Issues the low-level hardware command(s) that causes one of N
+	hardware devices to be considered 'selected' (active and
+	available for use) on the ATA bus.  This generally has no
+meaning on FIS-based devices.
+	</para>
+
+	</sect2>
+
+	<sect2><title>Reset ATA bus</title>
+	<programlisting>
+void (*phy_reset) (struct ata_port *ap);
+	</programlisting>
+
+	<para>
+	The very first step in the probe phase.  Actions vary depending
+	on the bus type, typically.  After waking up the device and probing
+	for device presence (PATA and SATA), typically a soft reset
+	(SRST) will be performed.  Drivers typically use the helper
+	functions ata_bus_reset() or sata_phy_reset() for this hook.
+	</para>
+
+	</sect2>
+
+	<sect2><title>Control PCI IDE BMDMA engine</title>
+	<programlisting>
+void (*bmdma_setup) (struct ata_queued_cmd *qc);
+void (*bmdma_start) (struct ata_queued_cmd *qc);
+void (*bmdma_stop) (struct ata_port *ap);
+u8   (*bmdma_status) (struct ata_port *ap);
+	</programlisting>
+
+	<para>
+When setting up an IDE BMDMA transaction, these hooks arm
+(->bmdma_setup), fire (->bmdma_start), and halt (->bmdma_stop)
+the hardware's DMA engine.  ->bmdma_status is used to read the standard
+PCI IDE DMA Status register.
+	</para>
+
+	<para>
+These hooks are typically either no-ops, or simply not implemented, in
+FIS-based drivers.
+	</para>
+
+	</sect2>
+
+	<sect2><title>High-level taskfile hooks</title>
+	<programlisting>
+void (*qc_prep) (struct ata_queued_cmd *qc);
+int (*qc_issue) (struct ata_queued_cmd *qc);
+	</programlisting>
+
+	<para>
+	Higher-level hooks, these two hooks can potentially supercede
+	several of the above taskfile/DMA engine hooks.  ->qc_prep is
+	called after the buffers have been DMA-mapped, and is typically
+	used to populate the hardware's DMA scatter-gather table.
+	Most drivers use the standard ata_qc_prep() helper function, but
+	more advanced drivers roll their own.
+	</para>
+	<para>
+	->qc_issue is used to make a command active, once the hardware
+	and S/G tables have been prepared.  IDE BMDMA drivers use the
+	helper function ata_qc_issue_prot() for taskfile protocol-based
+	dispatch.  More advanced drivers implement their own ->qc_issue.
+	</para>
+
+	</sect2>
+
+	<sect2><title>Timeout (error) handling</title>
+	<programlisting>
+void (*eng_timeout) (struct ata_port *ap);
+	</programlisting>
+
+	<para>
+This is a high level error handling function, called from the
+error handling thread, when a command times out.  Most newer
+hardware will implement its own error handling code here.  IDE BMDMA
+drivers may use the helper function ata_eng_timeout().
+	</para>
+
+	</sect2>
+
+	<sect2><title>Hardware interrupt handling</title>
+	<programlisting>
+irqreturn_t (*irq_handler)(int, void *, struct pt_regs *);
+void (*irq_clear) (struct ata_port *);
+	</programlisting>
+
+	<para>
+	->irq_handler is the interrupt handling routine registered with
+	the system, by libata.  ->irq_clear is called during probe just
+	before the interrupt handler is registered, to be sure hardware
+	is quiet.
+	</para>
+
+	</sect2>
+
+	<sect2><title>SATA phy read/write</title>
+	<programlisting>
+u32 (*scr_read) (struct ata_port *ap, unsigned int sc_reg);
+void (*scr_write) (struct ata_port *ap, unsigned int sc_reg,
+                   u32 val);
+	</programlisting>
+
+	<para>
+	Read and write standard SATA phy registers.  Currently only used
+	if ->phy_reset hook called the sata_phy_reset() helper function.
+	</para>
+
+	</sect2>
+
+	<sect2><title>Init and shutdown</title>
+	<programlisting>
+int (*port_start) (struct ata_port *ap);
+void (*port_stop) (struct ata_port *ap);
+void (*host_stop) (struct ata_host_set *host_set);
+	</programlisting>
+
+	<para>
+	->port_start() is called just after the data structures for each
+	port are initialized.  Typically this is used to alloc per-port
+	DMA buffers / tables / rings, enable DMA engines, and similar
+	tasks.  
+	</para>
+	<para>
+	->port_stop() is called after ->host_stop().  It's sole function
+	is to release DMA/memory resources, now that they are no longer
+	actively being used.
+	</para>
+	<para>
+	->host_stop() is called after all ->port_stop() calls
+have completed.  The hook must finalize hardware shutdown, release DMA
+and other resources, etc.
+	</para>
+
+	</sect2>
+
+     </sect1>
+  </chapter>
+
   <chapter id="libataExt">
      <title>libata Library</title>
 !Edrivers/scsi/libata-core.c
@@ -83,8 +347,28 @@
   </chapter>
 
   <chapter id="SILInt">
-     <title>ata_sil Internals</title>
+     <title>sata_sil Internals</title>
 !Idrivers/scsi/sata_sil.c
   </chapter>
 
+  <chapter id="libataThanks">
+     <title>Thanks</title>
+  <para>
+  The bulk of the ATA knowledge comes thanks to long conversations with
+  Andre Hedrick (www.linux-ide.org), and long hours pondering the ATA
+  and SCSI specifications.
+  </para>
+  <para>
+  Thanks to Alan Cox for pointing out similarities 
+  between SATA and SCSI, and in general for motivation to hack on
+  libata.
+  </para>
+  <para>
+  libata's device detection
+  method, ata_pio_devchk, and in general all the early probing was
+  based on extensive study of Hale Landis's probe/reset code in his
+  ATADRVR driver (www.ata-atapi.com).
+  </para>
+  </chapter>
+
 </book>
diff -urN malta/linux/Documentation/DocBook/lsm.tmpl malta/linux/Documentation/DocBook/lsm.tmpl
--- malta/linux/Documentation/DocBook/lsm.tmpl	2004/05/12 17:14:19	1.2.1000.1
+++ malta/linux/Documentation/DocBook/lsm.tmpl	2005/06/21 13:20:32	1.2.1000.2
@@ -1,6 +1,9 @@
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
+
 <article class="whitepaper" id="LinuxSecurityModule" lang="en">
- <artheader>
+ <articleinfo>
  <title>Linux Security Modules:  General Security Hooks for Linux</title>
  <authorgroup>
  <author>
@@ -28,7 +31,7 @@
  </affiliation>
  </author>
  </authorgroup>
- </artheader>
+ </articleinfo>
 
 <sect1><title>Introduction</title>
 
@@ -84,7 +87,7 @@
 modules.  The LSM kernel patch also moves most of the capabilities
 logic into an optional security module, with the system defaulting
 to the traditional superuser logic.  This capabilities module
-is discussed further in <XRef LinkEnd="cap">.
+is discussed further in <xref linkend="cap"/>.
 </para>
 
 <para>
diff -urN malta/linux/Documentation/DocBook/mcabook.tmpl malta/linux/Documentation/DocBook/mcabook.tmpl
--- malta/linux/Documentation/DocBook/mcabook.tmpl	2000/03/19 01:28:42	1.1
+++ malta/linux/Documentation/DocBook/mcabook.tmpl	2005/06/21 13:20:32	1.1.1000.1
@@ -1,4 +1,6 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
 
 <book id="MCAGuide">
  <bookinfo>
diff -urN malta/linux/Documentation/DocBook/procfs-guide.tmpl malta/linux/Documentation/DocBook/procfs-guide.tmpl
--- malta/linux/Documentation/DocBook/procfs-guide.tmpl	2003/07/14 12:23:54	1.4
+++ malta/linux/Documentation/DocBook/procfs-guide.tmpl	2005/06/21 13:20:32	1.4.1000.1
@@ -1,6 +1,7 @@
-<!-- -*- sgml -*- -->
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[
-<!ENTITY procfsexample SYSTEM "procfs_example.sgml">
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY procfsexample SYSTEM "procfs_example.xml">
 ]>
 
 <book id="LKProcfsGuide">
@@ -100,8 +101,8 @@
     <para>
       I'd like to thank Jeff Garzik
       <email>jgarzik@pobox.com</email> and Alexander Viro
-      <email>viro@math.psu.edu</email> for their input, Tim Waugh
-      <email>twaugh@redhat.com</email> for his <ulink
+      <email>viro@parcelfarce.linux.theplanet.co.uk</email> for their input,
+      Tim Waugh <email>twaugh@redhat.com</email> for his <ulink
       url="http://people.redhat.com/twaugh/docbook/selfdocbook/">Selfdocbook</ulink>,
       and Marc Joosen <email>marcj@historia.et.tudelft.nl</email> for
       proofreading.
@@ -205,7 +206,7 @@
         function will return a pointer to the freshly created
         <structname>struct proc_dir_entry</structname>; otherwise it
         will return <constant>NULL</constant>. <xref
-        linkend="userland"> describes how to do something useful with
+        linkend="userland"/> describes how to do something useful with
         regular files.
       </para>
 
@@ -221,7 +222,7 @@
     <para>
       If you only want to be able to read the file, the function
       <function>create_proc_read_entry</function> described in <xref
-      linkend="convenience"> may be used to create and initialise
+      linkend="convenience"/> may be used to create and initialise
       the procfs entry in one single call.
     </para>
     </sect1>
@@ -298,7 +299,7 @@
         the <structname>struct proc_dir_entry</structname> before
         <function>remove_proc_entry</function> is called (that is: if
         there was some <structfield>data</structfield> allocated, of
-        course). See <xref linkend="usingdata"> for more information
+        course). See <xref linkend="usingdata"/> for more information
         on using the <structfield>data</structfield> entry.
       </para>
     </sect1>
@@ -333,7 +334,7 @@
       If you only want to use a the
       <structfield>read_proc</structfield>, the function
       <function>create_proc_read_entry</function> described in <xref
-      linkend="convenience"> may be used to create and initialise the
+      linkend="convenience"/> may be used to create and initialise the
       procfs entry in one single call.
     </para>
 
@@ -386,7 +387,7 @@
         The parameter <parameter>start</parameter> doesn't seem to be
         used anywhere in the kernel. The <parameter>data</parameter>
         parameter can be used to create a single call back function for
-        several files, see <xref linkend="usingdata">.
+        several files, see <xref linkend="usingdata"/>.
       </para>
 
       <para>
@@ -395,7 +396,7 @@
       </para>
 
       <para>
-        <xref linkend="example"> shows how to use a read call back
+        <xref linkend="example"/> shows how to use a read call back
         function.
       </para>
     </sect1>
@@ -429,12 +430,12 @@
         kernel's memory space, so it should first be copied to kernel
         space with <function>copy_from_user</function>. The
         <parameter>file</parameter> parameter is usually
-        ignored. <xref linkend="usingdata"> shows how to use the
+        ignored. <xref linkend="usingdata"/> shows how to use the
         <parameter>data</parameter> parameter.
       </para>
 
       <para>
-        Again, <xref linkend="example"> shows how to use this call back
+        Again, <xref linkend="example"/> shows how to use this call back
         function.
       </para>
     </sect1>
@@ -525,10 +526,10 @@
       <para>
         This function creates a regular file in exactly the same way
         as <function>create_proc_entry</function> from <xref
-        linkend="regularfile"> does, but also allows to set the read
+        linkend="regularfile"/> does, but also allows to set the read
         function <parameter>read_proc</parameter> in one call. This
         function can set the <parameter>data</parameter> as well, like
-        explained in <xref linkend="usingdata">.
+        explained in <xref linkend="usingdata"/>.
       </para>
     </sect1>
 
diff -urN malta/linux/Documentation/DocBook/scsidrivers.tmpl malta/linux/Documentation/DocBook/scsidrivers.tmpl
--- malta/linux/Documentation/DocBook/scsidrivers.tmpl	2003/09/09 16:40:54	1.4
+++ malta/linux/Documentation/DocBook/scsidrivers.tmpl	2005/06/21 13:20:32	1.4.1000.1
@@ -1,5 +1,6 @@
-<!-- -*- sgml -*- -->
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
 
 <book id="scsidrivers">
  <bookinfo>
diff -urN malta/linux/Documentation/DocBook/sis900.tmpl malta/linux/Documentation/DocBook/sis900.tmpl
--- malta/linux/Documentation/DocBook/sis900.tmpl	2004/05/12 17:14:19	1.4.1000.1
+++ malta/linux/Documentation/DocBook/sis900.tmpl	2005/06/21 13:20:32	1.4.1000.2
@@ -1,25 +1,27 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
 
 <book id="SiS900Guide">
 
 <bookinfo>
 
-<title>SiS 900/7016 Fast Ethernet Device Driver</Title>
+<title>SiS 900/7016 Fast Ethernet Device Driver</title>
 
 <authorgroup>
 <author>
-<FirstName>Ollie</FirstName>
+<firstname>Ollie</firstname>
 <surname>Lho</surname>
 </author>
 
 <author>
-<FirstName>Lei Chun</FirstName>
+<firstname>Lei Chun</firstname>
 <surname>Chang</surname>
 </author>
 </authorgroup>
 
-<edition>Document Revision: 0.3 for SiS900 driver v1.06 & v1.07</edition>
-<PubDate>November 16, 2000</PubDate>
+<edition>Document Revision: 0.3 for SiS900 driver v1.06 &amp; v1.07</edition>
+<pubdate>November 16, 2000</pubdate>
 
 <copyright>
  <year>1999</year>
@@ -48,21 +50,21 @@
  </para>
 </legalnotice>
 
-<Abstract>
-<Para>
+<abstract>
+<para>
 This document gives some information on installation and usage of SiS 900/7016
 device driver under Linux.
-</Para>
-</Abstract>
+</para>
+</abstract>
 
 </bookinfo>
 
 <toc></toc>
 
 <chapter id="intro">
- <Title>Introduction</Title>
+ <title>Introduction</title>
 
-<Para>
+<para>
 This document describes the revision 1.06 and 1.07 of SiS 900/7016 Fast Ethernet 
 device driver under Linux. The driver is developed by Silicon Integrated
 System Corp. and distributed freely under the GNU General Public License (GPL).
@@ -70,265 +72,265 @@
 version 2.2.x. (rev. 1.06)
 With minimal changes, the driver can also be used under 2.3.x and 2.4.x kernel 
 (rev. 1.07), please see 
-<XRef LinkEnd="install">. If you are intended to 
+<xref linkend="install"/>. If you are intended to
 use the driver for earlier kernels, you are on your own.
-</Para>
+</para>
 
-<Para>
+<para>
 The driver is tested with usual TCP/IP applications including
 FTP, Telnet, Netscape etc. and is used constantly by the developers.
-</Para>
+</para>
 
-<Para>
+<para>
 Please send all comments/fixes/questions to
-<ULink URL="mailto:lcchang@sis.com.tw">Lei-Chun Chang</ULink>.
-</Para>
+<ulink url="mailto:lcchang@sis.com.tw">Lei-Chun Chang</ulink>.
+</para>
 </chapter>
 
 <chapter id="changes">
- <Title>Changes</Title>
+ <title>Changes</title>
 
-<Para>
+<para>
 Changes made in Revision 1.07
 
-<OrderedList>
-<ListItem>
-<Para>
+<orderedlist>
+<listitem>
+<para>
 Separation of sis900.c and sis900.h in order to move most 
 constant definition to sis900.h (many of those constants were
 corrected)
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 Clean up PCI detection, the pci-scan from Donald Becker were not used,
 just simple pci&lowbar;find&lowbar;*.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 MII detection is modified to support multiple mii transceiver.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 Bugs in read&lowbar;eeprom, mdio&lowbar;* were removed.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 Lot of sis900 irrelevant comments were removed/changed and
 more comments were added to reflect the real situation.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 Clean up of physical/virtual address space mess in buffer 
 descriptors.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 Better transmit/receive error handling.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 The driver now uses zero-copy single buffer management
 scheme to improve performance.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 Names of variables were changed to be more consistent.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 Clean up of auo-negotiation and timer code.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 Automatic detection and change of PHY on the fly.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 Bug in mac probing fixed.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 Fix 630E equalier problem by modifying the equalizer workaround rule.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 Support for ICS1893 10/100 Interated PHYceiver.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 Support for media select by ifconfig.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 Added kernel-doc extratable documentation.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-</OrderedList>
-</Para>
+</orderedlist>
+</para>
 </chapter>
 
 <chapter id="tested">
- <Title>Tested Environment</Title>
+ <title>Tested Environment</title>
 
-<Para>
+<para>
 This driver is developed on the following hardware
 
-<ItemizedList>
-<ListItem>
+<itemizedlist>
+<listitem>
 
-<Para>
+<para>
 Intel Celeron 500 with SiS 630 (rev 02) chipset
-</Para>
-</ListItem>
-<ListItem>
+</para>
+</listitem>
+<listitem>
 
-<Para>
+<para>
 SiS 900 (rev 01) and SiS 7016/7014 Fast Ethernet Card
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-</ItemizedList>
+</itemizedlist>
 
 and tested with these software environments
 
-<ItemizedList>
-<ListItem>
+<itemizedlist>
+<listitem>
 
-<Para>
+<para>
 Red Hat Linux version 6.2
-</Para>
-</ListItem>
-<ListItem>
+</para>
+</listitem>
+<listitem>
 
-<Para>
+<para>
 Linux kernel version 2.4.0
-</Para>
-</ListItem>
-<ListItem>
+</para>
+</listitem>
+<listitem>
 
-<Para>
+<para>
 Netscape version 4.6
-</Para>
-</ListItem>
-<ListItem>
+</para>
+</listitem>
+<listitem>
 
-<Para>
+<para>
 NcFTP 3.0.0 beta 18
-</Para>
-</ListItem>
-<ListItem>
+</para>
+</listitem>
+<listitem>
 
-<Para>
+<para>
 Samba version 2.0.3
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-</ItemizedList>
+</itemizedlist>
 
-</Para>
+</para>
 
 </chapter>
 
 <chapter id="files">
-<Title>Files in This Package</Title>
+<title>Files in This Package</title>
 
-<Para>
+<para>
 In the package you can find these files:
-</Para>
+</para>
 
-<Para>
-<VariableList>
+<para>
+<variablelist>
 
-<VarListEntry>
-<Term>sis900.c</Term>
-<ListItem>
-<Para>
+<varlistentry>
+<term>sis900.c</term>
+<listitem>
+<para>
 Driver source file in C 
-</Para>
-</ListItem>
-</VarListEntry>
-
-<VarListEntry>
-<Term>sis900.h</Term>
-<ListItem>
-<Para>
+</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term>sis900.h</term>
+<listitem>
+<para>
 Header file for sis900.c
-</Para>
-</ListItem>
-</VarListEntry>
-
-<VarListEntry>
-<Term>sis900.sgml</Term>
-<ListItem>
-<Para>
+</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term>sis900.sgml</term>
+<listitem>
+<para>
 DocBook SGML source of the document
-</Para>
-</ListItem>
-</VarListEntry>
-
-<VarListEntry>
-<Term>sis900.txt</Term>
-<ListItem>
-<Para>
+</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term>sis900.txt</term>
+<listitem>
+<para>
 Driver document in plain text
-</Para>
-</ListItem>
-</VarListEntry>
+</para>
+</listitem>
+</varlistentry>
 
-</VariableList>
-</Para>
+</variablelist>
+</para>
 </chapter>
 
 <chapter id="install">
- <Title>Installation</Title>
+ <title>Installation</title>
 
-<Para>
+<para>
 Silicon Integrated System Corp. is cooperating closely with core Linux Kernel
 developers. The revisions of SiS 900 driver are distributed by the usuall channels
 for kernel tar files and patches. Those kernel tar files for official kernel and
 patches for kernel pre-release can be download at 
-<ULink URL="http://ftp.kernel.org/pub/linux/kernel/">official kernel ftp site</ULink> 
+<ulink url="http://ftp.kernel.org/pub/linux/kernel/">official kernel ftp site</ulink>
 and its mirrors.
 The 1.06 revision can be found in kernel version later than 2.3.15 and pre-2.2.14, 
 and 1.07 revision can be found in kernel version 2.4.0.
 If you have no prior experience in networking under Linux, please read
-<ULink URL="http://www.tldp.org/">Ethernet HOWTO</ULink> and
-<ULink URL="http://www.tldp.org/">Networking HOWTO</ULink> available from
+<ulink url="http://www.tldp.org/">Ethernet HOWTO</ulink> and
+<ulink url="http://www.tldp.org/">Networking HOWTO</ulink> available from
 Linux Documentation Project (LDP).
-</Para>
+</para>
 
-<Para>
+<para>
 The driver is bundled in release later than 2.2.11 and 2.3.15 so this 
 is the most easy case. 
 Be sure you have the appropriate packages for compiling kernel source.
@@ -338,63 +340,63 @@
 <filename>sis900.c</filename> and <filename>sis900.h</filename> 
 copied into <filename class="directory">/usr/src/linux/drivers/net/</filename> first.
 There are two alternative ways to install the driver
-</Para>
+</para>
 
-<Sect1>
-<Title>Building the driver as loadable module</Title>
+<sect1>
+<title>Building the driver as loadable module</title>
 
-<Para>
+<para>
 To build the driver as a loadable kernel module you have to reconfigure
 the kernel to activate network support by
-</Para>
+</para>
 
-<Para><screen>
+<para><screen>
 make menuconfig
-</screen></Para>
+</screen></para>
 
-<Para>
+<para>
 Choose <quote>Loadable module support  ---></quote>, 
 then select <quote>Enable loadable module support</quote>.
-</Para>
+</para>
 
-<Para>
+<para>
 Choose <quote>Network Device Support  ---></quote>, select 
 <quote>Ethernet (10 or 100Mbit)</quote>.
 Then select <quote>EISA, VLB, PCI and on board controllers</quote>, 
 and choose <quote>SiS 900/7016 PCI Fast Ethernet Adapter support</quote> 
 to <quote>M</quote>.
-</Para>
+</para>
 
-<Para>
+<para>
 After reconfiguring the kernel, you can make the driver module by
-</Para>
+</para>
 
-<Para><screen>
+<para><screen>
 make modules
-</screen></Para>
+</screen></para>
 
-<Para>
+<para>
 The driver should be compiled with no errors. After compiling the driver,
 the driver can be installed to proper place by
-</Para>
+</para>
 
-<Para><screen>
+<para><screen>
 make modules_install
-</screen></Para>
+</screen></para>
 
-<Para>
+<para>
 Load the driver into kernel by
-</Para>
+</para>
 
-<Para><screen>
+<para><screen>
 insmod sis900
-</screen></Para>
+</screen></para>
 
-<Para>
+<para>
 When loading the driver into memory, some information message can be view by
-</Para>
+</para>
 
-<Para>
+<para>
 <screen>
 dmesg
 </screen>
@@ -404,103 +406,103 @@
 <screen>
 cat /var/log/message
 </screen>
-</Para>
+</para>
 
-<Para>
+<para>
 If the driver is loaded properly you will have messages similar to this:
-</Para>
+</para>
 
-<Para><screen>
+<para><screen>
 sis900.c: v1.07.06  11/07/2000
 eth0: SiS 900 PCI Fast Ethernet at 0xd000, IRQ 10, 00:00:e8:83:7f:a4.
 eth0: SiS 900 Internal MII PHY transceiver found at address 1.
 eth0: Using SiS 900 Internal MII PHY as default
-</screen></Para>
+</screen></para>
 
-<Para>
+<para>
 showing the version of the driver and the results of probing routine.
-</Para>
+</para>
 
-<Para>
+<para>
 Once the driver is loaded, network can be brought up by
-</Para>
+</para>
 
-<Para><screen>
+<para><screen>
 /sbin/ifconfig eth0 IPADDR broadcast BROADCAST netmask NETMASK media TYPE
-</screen></Para>
+</screen></para>
 
-<Para>
+<para>
 where IPADDR, BROADCAST, NETMASK are your IP address, broadcast address and
 netmask respectively. TYPE is used to set medium type used by the device. 
 Typical values are "10baseT"(twisted-pair 10Mbps Ethernet) or "100baseT"
 (twisted-pair 100Mbps Ethernet). For more information on how to configure 
 network interface, please refer to  
-<ULink URL="http://www.tldp.org/">Networking HOWTO</ULink>.
-</Para>
+<ulink url="http://www.tldp.org/">Networking HOWTO</ulink>.
+</para>
 
-<Para>
+<para>
 The link status is also shown by kernel messages. For example, after the
 network interface is activated, you may have the message:
-</Para>
+</para>
 
-<Para><screen>
+<para><screen>
 eth0: Media Link On 100mbps full-duplex
-</screen></Para>
+</screen></para>
 
-<Para>
+<para>
 If you try to unplug the twist pair (TP) cable you will get
-</Para>
+</para>
 
-<Para><screen>
+<para><screen>
 eth0: Media Link Off
-</screen></Para>
+</screen></para>
 
-<Para>
+<para>
 indicating that the link is failed.
-</Para>
-</Sect1>
+</para>
+</sect1>
 
-<Sect1>
-<Title>Building the driver into kernel</Title>
+<sect1>
+<title>Building the driver into kernel</title>
 
-<Para>
+<para>
 If you want to make the driver into kernel, choose <quote>Y</quote> 
 rather than <quote>M</quote> on 
 <quote>SiS 900/7016 PCI Fast Ethernet Adapter support</quote> 
 when configuring the kernel. Build the kernel image in the usual way
-</Para>
+</para>
 
-<Para><screen>
+<para><screen>
 make clean
 
 make bzlilo
-</screen></Para>
+</screen></para>
 
-<Para>
+<para>
 Next time the system reboot, you have the driver in memory.
-</Para>
+</para>
 
-</Sect1>
+</sect1>
 </chapter>
 
 <chapter id="problems">
- <Title>Known Problems and Bugs</Title>
+ <title>Known Problems and Bugs</title>
 
-<Para>
+<para>
 There are some known problems and bugs. If you find any other bugs please 
-mail to <ULink URL="mailto:lcchang@sis.com.tw">lcchang@sis.com.tw</ULink>
+mail to <ulink url="mailto:lcchang@sis.com.tw">lcchang@sis.com.tw</ulink>
 
-<OrderedList>
+<orderedlist>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 AM79C901 HomePNA PHY is not thoroughly tested, there may be some 
 bugs in the <quote>on the fly</quote> change of transceiver. 
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 A bug is hidden somewhere in the receive buffer management code, 
 the bug causes NULL pointer reference in the kernel. This fault is 
 caught before bad things happen and reported with the message:
@@ -509,70 +511,70 @@
 eth0: NULL pointer encountered in Rx ring, skipping 
 </computeroutput>
 
-which can be viewed with <Literal remap="tt">dmesg</Literal> or 
-<Literal remap="tt">cat /var/log/message</Literal>.
-</Para>
-</ListItem>
+which can be viewed with <literal remap="tt">dmesg</literal> or
+<literal remap="tt">cat /var/log/message</literal>.
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 The media type change from 10Mbps to 100Mbps twisted-pair ethernet 
 by ifconfig causes the media link down.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-</OrderedList>
-</Para>
+</orderedlist>
+</para>
 </chapter>
 
 <chapter id="RHistory">
- <Title>Revision History</Title>
+ <title>Revision History</title>
 
-<Para>
-<ItemizedList>
+<para>
+<itemizedlist>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 November 13, 2000, Revision 1.07, seventh release, 630E problem fixed 
 and further clean up.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 November 4, 1999, Revision 1.06, Second release, lots of clean up
 and optimization.
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-<ListItem>
-<Para>
+<listitem>
+<para>
 August 8, 1999, Revision 1.05, Initial Public Release
-</Para>
-</ListItem>
+</para>
+</listitem>
 
-</ItemizedList>
-</Para>
+</itemizedlist>
+</para>
 </chapter>
 
 <chapter id="acknowledgements">
- <Title>Acknowledgements</Title>
+ <title>Acknowledgements</title>
 
-<Para>
+<para>
 This driver was originally derived form 
-<ULink URL="mailto:becker@cesdis1.gsfc.nasa.gov">Donald Becker</ULink>'s
-<ULink URL="ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/kern-2.3/pci-skeleton.c"
->pci-skeleton</ULink> and
-<ULink URL="ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/kern-2.3/rtl8139.c"
->rtl8139</ULink> drivers. Donald also provided various suggestion
+<ulink url="mailto:becker@cesdis1.gsfc.nasa.gov">Donald Becker</ulink>'s
+<ulink url="ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/kern-2.3/pci-skeleton.c"
+>pci-skeleton</ulink> and
+<ulink url="ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/kern-2.3/rtl8139.c"
+>rtl8139</ulink> drivers. Donald also provided various suggestion
 regarded with improvements made in revision 1.06.
-</Para>
+</para>
 
-<Para>
+<para>
 The 1.05 revision was created by 
-<ULink URL="mailto:cmhuang@sis.com.tw">Jim Huang</ULink>, AMD 79c901 
-support was added by <ULink URL="mailto:lcs@sis.com.tw">Chin-Shan Li</ULink>.
-</Para>
+<ulink url="mailto:cmhuang@sis.com.tw">Jim Huang</ulink>, AMD 79c901
+support was added by <ulink url="mailto:lcs@sis.com.tw">Chin-Shan Li</ulink>.
+</para>
 </chapter>
 
 <chapter id="functions">
diff -urN malta/linux/Documentation/DocBook/usb.tmpl malta/linux/Documentation/DocBook/usb.tmpl
--- malta/linux/Documentation/DocBook/usb.tmpl	2004/09/14 16:27:37	1.2.1000.1
+++ malta/linux/Documentation/DocBook/usb.tmpl	2005/06/21 13:20:33	1.2.1000.2
@@ -1,4 +1,7 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
+
 <book id="Linux-USB-API">
  <bookinfo>
   <title>The Linux-USB Host Side API</title>
diff -urN malta/linux/Documentation/DocBook/videobook.tmpl malta/linux/Documentation/DocBook/videobook.tmpl
--- malta/linux/Documentation/DocBook/videobook.tmpl	2004/09/14 16:27:37	1.8.1000.2
+++ malta/linux/Documentation/DocBook/videobook.tmpl	2005/06/21 13:20:33	1.8.1000.3
@@ -1,4 +1,6 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
 
 <book id="V4LGuide">
  <bookinfo>
@@ -180,23 +182,23 @@
    <tgroup cols="3" align="left">
    <tbody>
    <row>
-        <entry>VFL_TYPE_RADIO</><entry>/dev/radio{n}</><entry>
+        <entry>VFL_TYPE_RADIO</entry><entry>/dev/radio{n}</entry><entry>
 
         Radio devices are assigned in this block. As with all of these
         selections the actual number assignment is done by the video layer
         accordijng to what is free.</entry>
 	</row><row>
-        <entry>VFL_TYPE_GRABBER</><entry>/dev/video{n}</><entry>
+        <entry>VFL_TYPE_GRABBER</entry><entry>/dev/video{n}</entry><entry>
         Video capture devices and also -- counter-intuitively for the name --
         hardware video playback devices such as MPEG2 cards.</entry>
 	</row><row>
-        <entry>VFL_TYPE_VBI</><entry>/dev/vbi{n}</><entry>
+        <entry>VFL_TYPE_VBI</entry><entry>/dev/vbi{n}</entry><entry>
         The VBI devices capture the hidden lines on a television picture
         that carry further information like closed caption data, teletext
         (primarily in Europe) and now Intercast and the ATVEC internet
         television encodings.</entry>
 	</row><row>
-        <entry>VFL_TYPE_VTX</><entry>/dev/vtx[n}</><entry>
+        <entry>VFL_TYPE_VTX</entry><entry>/dev/vtx[n}</entry><entry>
         VTX is 'Videotext' also known as 'Teletext'. This is a system for
         sending numbered, 40x25, mostly textual page images over the hidden
         lines. Unlike the /dev/vbi interfaces, this is for 'smart' decoder 
@@ -301,25 +303,25 @@
    <tgroup cols="2" align="left">
    <tbody>
    <row>
-        <entry>name</><entry>The device text name. This is intended for the user.</>
+        <entry>name</entry><entry>The device text name. This is intended for the user.</entry>
 	</row><row>
-        <entry>channels</><entry>The number of different channels you can tune on
+        <entry>channels</entry><entry>The number of different channels you can tune on
                         this card. It could even by zero for a card that has
                         no tuning capability. For our simple FM radio it is 1. 
                         An AM/FM radio would report 2.</entry>
 	</row><row>
-        <entry>audios</><entry>The number of audio inputs on this device. For our
+        <entry>audios</entry><entry>The number of audio inputs on this device. For our
                         radio there is only one audio input.</entry>
 	</row><row>
-        <entry>minwidth,minheight</><entry>The smallest size the card is capable of capturing
+        <entry>minwidth,minheight</entry><entry>The smallest size the card is capable of capturing
 		        images in. We set these to zero. Radios do not
                         capture pictures</entry>
 	</row><row>
-        <entry>maxwidth,maxheight</><entry>The largest image size the card is capable of
+        <entry>maxwidth,maxheight</entry><entry>The largest image size the card is capable of
                                       capturing. For our radio we report 0.
 				</entry>
 	</row><row>
-        <entry>type</><entry>This reports the capabilities of the device, and
+        <entry>type</entry><entry>This reports the capabilities of the device, and
                         matches the field we filled in in the struct
                         video_device when registering.</entry>
     </row>
@@ -375,26 +377,26 @@
    <tgroup cols="2" align="left">
    <tbody>
    <row>
-        <entry>int tuner</><entry>The number of the tuner in question</entry>
+        <entry>int tuner</entry><entry>The number of the tuner in question</entry>
    </row><row>
-        <entry>char name[32]</><entry>A text description of this tuner. "FM" will do fine.
+        <entry>char name[32]</entry><entry>A text description of this tuner. "FM" will do fine.
                         This is intended for the application.</entry>
    </row><row>
-        <entry>u32 flags</>
+        <entry>u32 flags</entry>
         <entry>Tuner capability flags</entry>
    </row>
    <row>
-        <entry>u16 mode</><entry>The current reception mode</entry>
+        <entry>u16 mode</entry><entry>The current reception mode</entry>
 
    </row><row>
-        <entry>u16 signal</><entry>The signal strength scaled between 0 and 65535. If
+        <entry>u16 signal</entry><entry>The signal strength scaled between 0 and 65535. If
                         a device cannot tell the signal strength it should
                         report 65535. Many simple cards contain only a 
                         signal/no signal bit. Such cards will report either
                         0 or 65535.</entry>
 
    </row><row>
-        <entry>u32 rangelow, rangehigh</><entry>
+        <entry>u32 rangelow, rangehigh</entry><entry>
                         The range of frequencies supported by the radio
                         or TV. It is scaled according to the VIDEO_TUNER_LOW
                         flag.</entry>
@@ -408,20 +410,20 @@
    <tgroup cols="2" align="left">
    <tbody>
    <row>
-	<entry>VIDEO_TUNER_PAL</><entry>A PAL TV tuner</entry>
+	<entry>VIDEO_TUNER_PAL</entry><entry>A PAL TV tuner</entry>
 	</row><row>
-        <entry>VIDEO_TUNER_NTSC</><entry>An NTSC (US) TV tuner</entry>
+        <entry>VIDEO_TUNER_NTSC</entry><entry>An NTSC (US) TV tuner</entry>
 	</row><row>
-        <entry>VIDEO_TUNER_SECAM</><entry>A SECAM (French) TV tuner</entry>
+        <entry>VIDEO_TUNER_SECAM</entry><entry>A SECAM (French) TV tuner</entry>
 	</row><row>
-        <entry>VIDEO_TUNER_LOW</><entry>
+        <entry>VIDEO_TUNER_LOW</entry><entry>
              The tuner frequency is scaled in 1/16th of a KHz
              steps. If not it is in 1/16th of a MHz steps
 	</entry>
 	</row><row>
-        <entry>VIDEO_TUNER_NORM</><entry>The tuner can set its format</entry>
+        <entry>VIDEO_TUNER_NORM</entry><entry>The tuner can set its format</entry>
 	</row><row>
-        <entry>VIDEO_TUNER_STEREO_ON</><entry>The tuner is currently receiving a stereo signal</entry>
+        <entry>VIDEO_TUNER_STEREO_ON</entry><entry>The tuner is currently receiving a stereo signal</entry>
         </row>
     </tbody>
     </tgroup>
@@ -431,13 +433,13 @@
    <tgroup cols="2" align="left">
    <tbody>
    <row>
-                <entry>VIDEO_MODE_PAL</><entry>PAL Format</entry>
+                <entry>VIDEO_MODE_PAL</entry><entry>PAL Format</entry>
    </row><row>
-                <entry>VIDEO_MODE_NTSC</><entry>NTSC Format (USA)</entry>
+                <entry>VIDEO_MODE_NTSC</entry><entry>NTSC Format (USA)</entry>
    </row><row>
-                <entry>VIDEO_MODE_SECAM</><entry>French Format</entry>
+                <entry>VIDEO_MODE_SECAM</entry><entry>French Format</entry>
    </row><row>
-                <entry>VIDEO_MODE_AUTO</><entry>A device that does not need to do
+                <entry>VIDEO_MODE_AUTO</entry><entry>A device that does not need to do
                                         TV format switching</entry>
    </row>
     </tbody>
@@ -521,7 +523,7 @@
                         if(copy_from_user(arg, &amp;freq, 
                                 sizeof(unsigned long))!=0)
                                 return -EFAULT;
-                        if(hardware_set_freq(freq)<0)
+                        if(hardware_set_freq(freq)&lt;0)
                                 return -EINVAL;
                         current_freq = freq;
                         return 0;
@@ -582,32 +584,32 @@
    <tgroup cols="2" align="left">
    <tbody>
    <row>
-   <entry>audio</><entry>The input the user wishes to query</>
+   <entry>audio</entry><entry>The input the user wishes to query</entry>
    </row><row>
-   <entry>volume</><entry>The volume setting on a scale of 0-65535</>
+   <entry>volume</entry><entry>The volume setting on a scale of 0-65535</entry>
    </row><row>
-   <entry>base</><entry>The base level on a scale of 0-65535</>
+   <entry>base</entry><entry>The base level on a scale of 0-65535</entry>
    </row><row>
-   <entry>treble</><entry>The treble level on a scale of 0-65535</>
+   <entry>treble</entry><entry>The treble level on a scale of 0-65535</entry>
    </row><row>
-   <entry>flags</><entry>The features this audio device supports
+   <entry>flags</entry><entry>The features this audio device supports
    </entry>
    </row><row>
-   <entry>name</><entry>A text name to display to the user. We picked 
-                        "Radio" as it explains things quite nicely.</>
+   <entry>name</entry><entry>A text name to display to the user. We picked
+                        "Radio" as it explains things quite nicely.</entry>
    </row><row>
-   <entry>mode</><entry>The current reception mode for the audio
+   <entry>mode</entry><entry>The current reception mode for the audio
 
                 We report MONO because our card is too stupid to know if it is in
                 mono or stereo. 
    </entry>
    </row><row>
-   <entry>balance</><entry>The stereo balance on a scale of 0-65535, 32768 is
-                        middle.</>
+   <entry>balance</entry><entry>The stereo balance on a scale of 0-65535, 32768 is
+                        middle.</entry>
    </row><row>
-   <entry>step</><entry>The step by which the volume control jumps. This is
+   <entry>step</entry><entry>The step by which the volume control jumps. This is
                         used to help make it easy for applications to set 
-                        slider behaviour.</>   
+                        slider behaviour.</entry>
    </row>
    </tbody>
    </tgroup>
@@ -617,15 +619,15 @@
    <tgroup cols="2" align="left">
    <tbody>
    <row>
-                <entry>VIDEO_AUDIO_MUTE</><entry>The audio is currently muted. We
+                <entry>VIDEO_AUDIO_MUTE</entry><entry>The audio is currently muted. We
                                         could fake this in our driver but we
                                         choose not to bother.</entry>
    </row><row>
-                <entry>VIDEO_AUDIO_MUTABLE</><entry>The input has a mute option</entry>
+                <entry>VIDEO_AUDIO_MUTABLE</entry><entry>The input has a mute option</entry>
    </row><row>
-                <entry>VIDEO_AUDIO_TREBLE</><entry>The  input has a treble control</entry>
+                <entry>VIDEO_AUDIO_TREBLE</entry><entry>The  input has a treble control</entry>
    </row><row>
-                <entry>VIDEO_AUDIO_BASS</><entry>The input has a base control</entry>
+                <entry>VIDEO_AUDIO_BASS</entry><entry>The input has a base control</entry>
    </row>
    </tbody>
    </tgroup>
@@ -635,13 +637,13 @@
    <tgroup cols="2" align="left">
    <tbody>
    <row>
-                <entry>VIDEO_SOUND_MONO</><entry>Mono sound</entry>
+                <entry>VIDEO_SOUND_MONO</entry><entry>Mono sound</entry>
    </row><row>
-                <entry>VIDEO_SOUND_STEREO</><entry>Stereo sound</entry>
+                <entry>VIDEO_SOUND_STEREO</entry><entry>Stereo sound</entry>
    </row><row>
-                <entry>VIDEO_SOUND_LANG1</><entry>Alternative language 1 (TV specific)</entry>
+                <entry>VIDEO_SOUND_LANG1</entry><entry>Alternative language 1 (TV specific)</entry>
    </row><row>
-                <entry>VIDEO_SOUND_LANG2</><entry>Alternative language 2 (TV specific)</entry>
+                <entry>VIDEO_SOUND_LANG2</entry><entry>Alternative language 2 (TV specific)</entry>
    </row>
    </tbody>
    </tgroup>
@@ -731,13 +733,14 @@
 
 static int io = -1;
 
+#endif
 
 MODULE_AUTHOR("Alan Cox");
 MODULE_DESCRIPTION("A driver for an imaginary radio card.");
-MODULE_PARM(io, "i");
+module_param(io, int, 0444);
 MODULE_PARM_DESC(io, "I/O address of the card.");
 
-int init_module(void)
+static int __init init(void)
 {
         if(io==-1)
         {
@@ -748,25 +751,26 @@
         return myradio_init(NULL);
 }
 
-void cleanup_module(void)
+static void __exit cleanup(void)
 {
         video_unregister_device(&amp;my_radio);
         release_region(io, MY_IO_SIZE);
 }
 
-#endif
+module_init(init);
+module_exit(cleanup);
 
   </programlisting>
   <para>
         In this example we set the IO base by default if the driver is compiled into
-        the kernel where you cannot pass a parameter. For the module we require the
+        the kernel: you can still set it using "my_radio.irq" if this file is called <filename>my_radio.c</filename>. For the module we require the
         user sets the parameter. We set io to a nonsense port (-1) so that we can
         tell if the user supplied an io parameter or not.
   </para>
   <para>
         We use MODULE_ defines to give an author for the card driver and a
         description. We also use them to declare that io is an integer and it is the
-        address of the card.
+        address of the card, and can be read by anyone from sysfs.
   </para>
   <para>
         The clean-up routine unregisters the video_device we registered, and frees
@@ -864,37 +868,37 @@
    <tgroup cols="2" align="left">
    <tbody>
    <row>
-<entry>VID_TYPE_CAPTURE</><entry>We support image capture</>
+<entry>VID_TYPE_CAPTURE</entry><entry>We support image capture</entry>
 </row><row>
-<entry>VID_TYPE_TELETEXT</><entry>A teletext capture device (vbi{n])</>
+<entry>VID_TYPE_TELETEXT</entry><entry>A teletext capture device (vbi{n])</entry>
 </row><row>
-<entry>VID_TYPE_OVERLAY</><entry>The image can be directly overlaid onto the
-                                frame buffer</>
+<entry>VID_TYPE_OVERLAY</entry><entry>The image can be directly overlaid onto the
+                                frame buffer</entry>
 </row><row>
-<entry>VID_TYPE_CHROMAKEY</><entry>Chromakey can be used to select which parts
-                                of the image to display</>
+<entry>VID_TYPE_CHROMAKEY</entry><entry>Chromakey can be used to select which parts
+                                of the image to display</entry>
 </row><row>
-<entry>VID_TYPE_CLIPPING</><entry>It is possible to give the board a list of
-                                rectangles to draw around. </>
+<entry>VID_TYPE_CLIPPING</entry><entry>It is possible to give the board a list of
+                                rectangles to draw around. </entry>
 </row><row>
-<entry>VID_TYPE_FRAMERAM</><entry>The video capture goes into the video memory
+<entry>VID_TYPE_FRAMERAM</entry><entry>The video capture goes into the video memory
                                 and actually changes it. Applications need
                                 to know this so they can clean up after the
-                                card</>
+                                card</entry>
 </row><row>
-<entry>VID_TYPE_SCALES</><entry>The image can be scaled to various sizes,
-                                rather than being a single fixed size.</>
+<entry>VID_TYPE_SCALES</entry><entry>The image can be scaled to various sizes,
+                                rather than being a single fixed size.</entry>
 </row><row>
-<entry>VID_TYPE_MONOCHROME</><entry>The capture will be monochrome. This isn't a 
+<entry>VID_TYPE_MONOCHROME</entry><entry>The capture will be monochrome. This isn't a
                                 complete answer to the question since a mono
                                 camera on a colour capture card will still
-                                produce mono output.</>
+                                produce mono output.</entry>
 </row><row>
-<entry>VID_TYPE_SUBCAPTURE</><entry>The card allows only part of its field of
+<entry>VID_TYPE_SUBCAPTURE</entry><entry>The card allows only part of its field of
                                 view to be captured. This enables
                                 applications to avoid copying all of a large
                                 image into memory when only some section is
-                                relevant.</>
+                                relevant.</entry>
     </row>
     </tbody>
     </tgroup>
@@ -1205,18 +1209,18 @@
    <tbody>
    <row>
 
-   <entry>channel</><entry>The channel number we are selecting</entry>
+   <entry>channel</entry><entry>The channel number we are selecting</entry>
    </row><row>
-   <entry>name</><entry>The name for this channel. This is intended
+   <entry>name</entry><entry>The name for this channel. This is intended
                    to describe the port to the user.
                    Appropriate names are therefore things like
                    "Camera" "SCART input"</entry>
    </row><row>
-   <entry>flags</><entry>Channel properties</entry>
+   <entry>flags</entry><entry>Channel properties</entry>
    </row><row>
-   <entry>type</><entry>Input type</entry>
+   <entry>type</entry><entry>Input type</entry>
    </row><row>
-   <entry>norm</><entry>The current television encoding being used
+   <entry>norm</entry><entry>The current television encoding being used
                    if relevant for this channel.
     </entry>
     </row>
@@ -1227,9 +1231,9 @@
     <tgroup cols="2" align="left">
     <tbody>
     <row>
-        <entry>VIDEO_VC_TUNER</><entry>Channel has a tuner.</entry>
+        <entry>VIDEO_VC_TUNER</entry><entry>Channel has a tuner.</entry>
    </row><row>
-        <entry>VIDEO_VC_AUDIO</><entry>Channel has audio.</entry>
+        <entry>VIDEO_VC_AUDIO</entry><entry>Channel has audio.</entry>
     </row>
     </tbody>
     </tgroup>
@@ -1238,11 +1242,11 @@
     <tgroup cols="2" align="left">
     <tbody>
     <row>
-        <entry>VIDEO_TYPE_TV</><entry>Television input.</entry>
+        <entry>VIDEO_TYPE_TV</entry><entry>Television input.</entry>
    </row><row>
-        <entry>VIDEO_TYPE_CAMERA</><entry>Fixed camera input.</entry>
+        <entry>VIDEO_TYPE_CAMERA</entry><entry>Fixed camera input.</entry>
    </row><row>
-	<entry>0</><entry>Type is unknown.</entry>
+	<entry>0</entry><entry>Type is unknown.</entry>
     </row>
     </tbody>
     </tgroup>
@@ -1251,13 +1255,13 @@
     <tgroup cols="2" align="left">
     <tbody>
     <row>
-        <entry>VIDEO_MODE_PAL</><entry>PAL encoded Television</entry>
+        <entry>VIDEO_MODE_PAL</entry><entry>PAL encoded Television</entry>
    </row><row>
-        <entry>VIDEO_MODE_NTSC</><entry>NTSC (US) encoded Television</entry>
+        <entry>VIDEO_MODE_NTSC</entry><entry>NTSC (US) encoded Television</entry>
    </row><row>
-        <entry>VIDEO_MODE_SECAM</><entry>SECAM (French) Television </entry>
+        <entry>VIDEO_MODE_SECAM</entry><entry>SECAM (French) Television </entry>
    </row><row>
-        <entry>VIDEO_MODE_AUTO</><entry>Automatic switching, or format does not
+        <entry>VIDEO_MODE_AUTO</entry><entry>Automatic switching, or format does not
                                 matter</entry>
     </row>
     </tbody>
@@ -1337,14 +1341,14 @@
    <tgroup cols="2" align="left">
    <tbody>
    <row>
-   <entry>GREY</><entry>Linear greyscale. This is for simple cameras and the
-                        like</>
+   <entry>GREY</entry><entry>Linear greyscale. This is for simple cameras and the
+                        like</entry>
    </row><row>
-   <entry>RGB565</><entry>The top 5 bits hold 32 red levels, the next six bits 
-                        hold green and the low 5 bits hold blue. </>
+   <entry>RGB565</entry><entry>The top 5 bits hold 32 red levels, the next six bits
+                        hold green and the low 5 bits hold blue. </entry>
    </row><row>
-   <entry>RGB555</><entry>The top bit is clear. The red green and blue levels
-                        each occupy five bits.</>
+   <entry>RGB555</entry><entry>The top bit is clear. The red green and blue levels
+                        each occupy five bits.</entry>
     </row>
     </tbody>
     </tgroup>
@@ -1475,32 +1479,32 @@
    <tgroup cols="2" align="left">
    <tbody>
    <row>
-        <entry>width</><entry>The width in pixels of the desired image. The card
-                        may use a smaller size if this size is not available</>
+        <entry>width</entry><entry>The width in pixels of the desired image. The card
+                        may use a smaller size if this size is not available</entry>
 	</row><row>
-        <entry>height</><entry>The height of the image. The card may use a smaller
-                        size if this size is not available.</>
+        <entry>height</entry><entry>The height of the image. The card may use a smaller
+                        size if this size is not available.</entry>
 	</row><row>
-        <entry>x</><entry>   The X position of the top left of the window. This
+        <entry>x</entry><entry>   The X position of the top left of the window. This
                         is in pixels relative to the left hand edge of the
                         picture. Not all cards can display images aligned on
                         any pixel boundary. If the position is unsuitable
                         the card adjusts the image right and reduces the
-                        width.</>
+                        width.</entry>
 	</row><row>
-        <entry>y</><entry>   The Y position of the top left of the window. This
+        <entry>y</entry><entry>   The Y position of the top left of the window. This
                         is counted in pixels relative to the top edge of the
                         picture. As with the width if the card cannot
                         display  starting on this line it will adjust the
-                        values.</>
+                        values.</entry>
 	</row><row>
-        <entry>chromakey</><entry>The colour (expressed in RGB32 format) for the
-                        chromakey colour if chroma keying is being used. </>
+        <entry>chromakey</entry><entry>The colour (expressed in RGB32 format) for the
+                        chromakey colour if chroma keying is being used. </entry>
 	</row><row>
-        <entry>clips</><entry>An array of rectangles that must not be drawn
-			over.</>
+        <entry>clips</entry><entry>An array of rectangles that must not be drawn
+			over.</entry>
 	</row><row>
-        <entry>clipcount</><entry>The number of clips in this array.</>
+        <entry>clipcount</entry><entry>The number of clips in this array.</entry>
     </row>
     </tbody>
     </tgroup>
@@ -1512,11 +1516,11 @@
    <tgroup cols="2" align="left">
    <tbody>
    <row>
-        <entry>x, y</><entry>Co-ordinates relative to the display</>
+        <entry>x, y</entry><entry>Co-ordinates relative to the display</entry>
 	</row><row>
-        <entry>width, height</><entry>Width and height in pixels</>
+        <entry>width, height</entry><entry>Width and height in pixels</entry>
 	</row><row>
-        <entry>next</><entry>A spare field for the application to use</>
+        <entry>next</entry><entry>A spare field for the application to use</entry>
     </row>
     </tbody>
     </tgroup>
@@ -1548,9 +1552,9 @@
                         struct video_window v;
                         if(copy_from_user(&amp;v, arg, sizeof(v)))
                                 return -EFAULT;
-                        if(v.width > 640 || v.height > 480)
+                        if(v.width &gt; 640 || v.height &gt; 480)
                                 return -EINVAL;
-                        if(v.width < 16 || v.height < 16)
+                        if(v.width &lt; 16 || v.height &lt; 16)
                                 return -EINVAL;
                         hardware_set_key(v.chromakey);
                         hardware_set_window(v);
diff -urN malta/linux/Documentation/DocBook/wanbook.tmpl malta/linux/Documentation/DocBook/wanbook.tmpl
--- malta/linux/Documentation/DocBook/wanbook.tmpl	2000/03/19 01:28:42	1.1
+++ malta/linux/Documentation/DocBook/wanbook.tmpl	2005/06/21 13:20:33	1.1.1000.1
@@ -1,4 +1,6 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
 
 <book id="WANGuide">
  <bookinfo>
diff -urN malta/linux/Documentation/DocBook/writing_usb_driver.tmpl malta/linux/Documentation/DocBook/writing_usb_driver.tmpl
--- malta/linux/Documentation/DocBook/writing_usb_driver.tmpl	2003/09/30 14:27:15	1.4
+++ malta/linux/Documentation/DocBook/writing_usb_driver.tmpl	2005/06/21 13:20:33	1.4.1000.1
@@ -1,4 +1,6 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
 
 <book id="USBDeviceDriver">
  <bookinfo>
diff -urN malta/linux/Documentation/DocBook/z8530book.tmpl malta/linux/Documentation/DocBook/z8530book.tmpl
--- malta/linux/Documentation/DocBook/z8530book.tmpl	2001/01/11 04:02:41	1.2
+++ malta/linux/Documentation/DocBook/z8530book.tmpl	2005/06/21 13:20:33	1.2.1000.1
@@ -1,4 +1,6 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
 
 <book id="Z85230Guide">
  <bookinfo>
diff -urN malta/linux/Documentation/DocBook/mousedrivers.tmpl malta/linux/Documentation/DocBook/mousedrivers.tmpl
--- malta/linux/Documentation/DocBook/Attic/mousedrivers.tmpl	2005-06-21 14:20:33.746525000 +0100	1.4.1000.1
+++ malta/linux/Documentation/DocBook/Attic/mousedrivers.tmpl	1970/01/01 00:00:00+0100
@@ -1,1023 +0,0 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
-
-<book id="MouseGuide">
- <bookinfo>
-  <title>Mouse Drivers</title>
-  
-  <authorgroup>
-   <author>
-    <firstname>Alan</firstname>
-    <surname>Cox</surname>
-    <affiliation>
-     <address>
-      <email>alan@redhat.com</email>
-     </address>
-    </affiliation>
-   </author>
-  </authorgroup>
-
-  <copyright>
-   <year>2000</year>
-   <holder>Alan Cox</holder>
-  </copyright>
-
-  <legalnotice>
-   <para>
-     This documentation is free software; you can redistribute
-     it and/or modify it under the terms of the GNU General Public
-     License as published by the Free Software Foundation; either
-     version 2 of the License, or (at your option) any later
-     version.
-   </para>
-      
-   <para>
-     This program is distributed in the hope that it will be
-     useful, but WITHOUT ANY WARRANTY; without even the implied
-     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-     See the GNU General Public License for more details.
-   </para>
-      
-   <para>
-     You should have received a copy of the GNU General Public
-     License along with this program; if not, write to the Free
-     Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-     MA 02111-1307 USA
-   </para>
-      
-   <para>
-     For more details see the file COPYING in the source
-     distribution of Linux.
-   </para>
-  </legalnotice>
- </bookinfo>
-
- <toc></toc>
-
- <chapter id="intro">
-  <title>Introduction</title>
-  <note>
-   <title>Earlier publication</title>
-    <para>
-      Parts of this document first appeared in Linux Magazine under a
-      ninety day exclusivity.
-   </para>
-  </note> 
-
-  <para>
-    Mice are conceptually one of the simplest device interfaces in the 
-    Linux operating system. Not all mice are handled by the kernel. 
-    Instead there is a two layer abstraction.
-  </para>
-
-  <para>
-    The kernel mouse drivers and userspace drivers for the serial mice are
-    all managed by a system daemon called <application>gpm</application> 
-    - the general purpose mouse driver. <application>gpm</application> 
-    handles cutting and pasting on the text consoles. It provides a 
-    general library for mouse-aware applications and it handles the 
-    sharing of mouse services with the 
-    <application>X Window System</application> user interface.
-  </para>
-  <para>
-    Sometimes a mouse speaks a sufficiently convoluted protocol that the
-    protocol is handled by <application>Gpm</application> itself. Most 
-    of the mouse drivers follow a common interface called the bus mouse 
-    protocol.
-  </para>
-  <para>
-    Each read from a bus mouse interface device returns a block of data. 
-    The first three bytes of each read are defined as follows: 
-
-   <table frame="all">
-    <title>Mouse Data Encoding</title>
-    <tgroup cols="2" align="left">
-     <tbody>
-      <row>
-       <entry>Byte 0</entry>
-       <entry>0x80 + the buttons currently down.</entry>
-      </row>
-      <row>
-       <entry>Byte 1</entry>
-       <entry>A signed value for the shift in X position</entry>
-      </row>
-      <row>
-       <entry>Byte 2</entry>
-       <entry>A signed value for the shift in Y position</entry>
-      </row>
-     </tbody>
-    </tgroup>
-   </table>
-
-    An application can choose to read more than 3 bytes. The rest of the 
-    bytes will be zero, or may optionally return some additional 
-    device-specific information.
-  </para>
-  <para>
-    The position values are truncated if they exceed the 8bit range (that
-    is -127 &lt;= delta &lt;= 127). While the value -128 does fit into a 
-    byte is not allowed.
-  </para>
-  <para>
-    The <mousebutton>buttons</mousebutton> are numbered left to right as 
-    0, 1, 2, 3.. and each button sets the relevant bit. So a user pressing 
-    the left and right button of a three button mouse will set bits 0 and 2.
-  </para>
-  <para>
-    All mice are required to support the <function>poll</function> 
-    operation. Indeed pretty much every user of a mouse device uses 
-    <function>poll</function> to wait for mouse events to occur.
-  </para>
-  <para>
-    Finally the mice support asynchronous I/O. This is a topic we have not 
-    yet covered but which I will explain after looking at a simple mouse 
-    driver.
-  </para>
- </chapter>
-
- <chapter id="driver">
-  <title>A simple mouse driver</title>
-  <para>
-    First we will need the set up functions for our mouse device. To keep 
-    this simple our imaginary mouse device has three I/O ports fixed at I/O 
-    address 0x300 and always lives on interrupt 5.  The ports will be the X 
-    position, the Y position and the buttons in that order.
-  </para>
-
-  <programlisting>
-#define OURMOUSE_BASE        0x300
-
-static struct miscdevice our_mouse = {
-        OURMOUSE_MINOR, "ourmouse", &amp;our_mouse_fops
-};
-
-__init ourmouse_init(void)
-{
-
-        if (request_region(OURMOUSE_BASE, 3, "ourmouse") < 0) {
-		printk(KERN_ERR "ourmouse: request_region failed.\n");
-                return -ENODEV;
-	}
-
-        if (misc_register(&amp;our_mouse) < 0) {
-		printk(KERN_ERR "ourmouse: cannot register misc device.\n");
-		release_region(OURMOUSE_BASE, 3);
-		return -EBUSY;
-	}
-
-        return 0;
-}
-  </programlisting>
-
-  <para>
-    The <structname>miscdevice</structname> is new here. Linux normally 
-    parcels devices out by major number, and each device has 256 units. 
-    For things like mice this is extremely wasteful so a device exists 
-    which is used to accumulate all the odd individual devices that 
-    computers tend to have.
-  </para>
-  <para>
-    Minor numbers in this space are allocated by a central source, although 
-    you can look in the kernel <filename>Documentation/devices.txt</filename>
-    file and pick a free one for development use. This kernel file also 
-    carries instructions for registering a device. This may change over time 
-    so it is a good idea to obtain a current copy of this file first.
-  </para>
-  <para>
-    Our code then is fairly simple. We reserve our I/O address space with
-    request_region, checking to make sure that it succeeded (i.e. the
-    space wasn't reserved by anyone else). 
-  </para>
-  <para>
-    Then we ask the misc driver to allocate our minor device number. We also
-    hand it our name (which is used in 
-    <filename class="directory">/proc/misc</filename>) and a set of file 
-    operations that are to be used. The file operations work exactly like the 
-    file operations you would register for a normal character device. The misc 
-    device itself is simply acting as a redirector for requests.
-    Since misc_register can fail, it is important to check for failure
-    and act accordingly (which in the case of a mouse driver is to abort,
-    since you can't use the mouse without a working device node).
-  </para>
-  <para>
-    Next, in order to be able to use and test our code we need to add some 
-    module code to support it. This too is fairly simple:
-  </para>
-  <programlisting>
-#ifdef MODULE
-
-int init_module(void)
-{
-        if(ourmouse_init()&lt;0)
-                return -ENODEV:
-        return 0;
-}
-
-void cleanup_module(void)
-{
-        misc_deregister(&amp;our_mouse);
-        free_region(OURMOUSE_BASE, 3);
-}
-
-
-#endif
-  </programlisting>
-
-  <para>
-    The module code provides the normal two functions. The 
-    <function>init_module</function> function is called when the module is 
-    loaded. In our case it simply calls the initialising function we wrote 
-    and returns an error if this fails. This ensures the module will only 
-    be loaded if it was successfully set up.
-  </para>
-  <para>
-    The <function>cleanup_module</function> function is called when the 
-    module is unloaded. We give the miscellaneous device entry back, and 
-    then free our I/O resources. If we didn't free the I/O resources then 
-    the next time the module loaded it would think someone else had its I/O 
-    space.
-  </para>
-  <para>
-    Once the <function>misc_deregister</function> has been called any 
-    attempts to open the mouse device will fail with the error  
-    <errorcode>ENODEV</errorcode> (<errorname>No such device</errorname>).
-  </para>
-  <para>
-    Next we need to fill in our file operations. A mouse doesn't need many 
-    of these. We need to provide open, release, read and poll. That makes 
-    for a nice simple structure:
-  </para>
-
-  <programlisting>
-struct file_operations our_mouse_fops = {
-        owner: THIS_MODULE,            /* Automatic usage management */
-        read:  read_mouse,             /* You can read a mouse */
-        write: write_mouse,            /* This won't do a lot */
-        poll:  poll_mouse,             /* Poll */
-        open:  open_mouse,             /* Called on open */
-        release: close_mouse,          /* Called on close */
-};
-  </programlisting>
-
-  <para>
-    There is nothing particularly special needed here. We provide functions 
-    for all the relevant or required operations and little else. There is 
-    nothing stopping us providing an ioctl function for this mouse. Indeed 
-    if you have a configurable mouse it may be very appropriate to provide 
-    configuration interfaces via ioctl calls.
-  </para>
-  <para>
-    The syntax we use is not standard C as such. GCC provides the ability
-    to initialise fields by name, and this generally makes the method table
-    much easier to read than counting through NULL pointers and remembering
-    the order by hand.
-  </para>
-  <para>
-    The owner field is used to manage the locking of module load an
-    unloading. It is obviously important that a module is not unloaded while
-    in use. When your device is opened the module specified by "owner" is 
-    locked. When it is finally released the module is unlocked.
-  </para>
-  <para>
-    The open and close routines need to manage enabling and disabling the 
-    interrupts for the mouse as well as stopping the mouse being unloaded
-    when it is no longer required. 
-  </para>
-
-  <programlisting>
-static int mouse_users = 0;                /* User count */
-static int mouse_dx = 0;                   /* Position changes */
-static int mouse_dy = 0;
-static int mouse_event = 0;                /* Mouse has moved */
-
-static int open_mouse(struct inode *inode, struct file *file)
-{
-        if(mouse_users++)
-                return 0;
-
-        if(request_irq(mouse_intr, OURMOUSE_IRQ, 0, "ourmouse", NULL))
-        {
-                mouse_users--;
-                return -EBUSY;
-        }
-        mouse_dx = 0;
-        mouse_dy = 0;
-        mouse_event = 0;
-        mouse_buttons = 0;
-	return 0;
-}
-  </programlisting>
-  <para>
-    The open function has to do a small amount of housework. We keep a count 
-    of the number of times the mouse is open. This is because we do not want 
-    to request the interrupt multiple times. If the mouse has at least one 
-    user then it is set up and we simply add to the user count and return
-    <returnvalue>0</returnvalue> for success.
-  </para>
-  <para>
-    We grab the interrupt and thus start mouse interrupts. If the interrupt 
-    has been borrowed by some other driver then <function>request_irq</function>
-    will fail and we will return an error. If we were capable of sharing an 
-    interrupt line we would specify <constant>SA_SHIRQ</constant> instead of 
-    <constant>zero</constant>. Provided that everyone claiming an interrupt 
-    sets this flag, they get to share the line. <hardware>PCI</hardware> can 
-    share interrupts, <hardware>ISA</hardware> normally however cannot. 
-  </para>
-  <para>
-    We do the housekeeping. We make the current mouse position the starting
-    point for accumulated changes and declare that nothing has happened
-    since the mouse driver was opened.
-  </para>
-  <para>
-    The release function needs to unwind all these:
-  </para>
-  <programlisting>
-static int close_mouse(struct inode *inode, struct file *file)
-{
-        if(--mouse_users)
-                return 0;
-        free_irq(OURMOUSE_IRQ, NULL);
-        return 0;
-}
-  </programlisting>
-  <para>
-    We count off a user and provided that there are still other users need 
-    take no further action. The last person closing the mouse causes us to 
-    free up the interrupt. This stops interrupts from the mouse from using 
-    our CPU time, and ensures that the mouse can now be unloaded.
-  </para>
-  <para>
-    We can fill in the write handler at this point as the write function for 
-    our mouse simply declines to allow writes:
-  </para>
-
-  <programlisting>
-static ssize_t write_mouse(struct file *file, const char *buffer, size_t
-                                count, loff_t *ppos)
-{
-        return -EINVAL;
-}
-  </programlisting>
-
-  <para>
-    This is pretty much self-explanatory. Whenever you write you get told 
-    it was an invalid function.
-  </para>
-  <para>
-    To make the poll and read functions work we have to consider how we 
-    handle the mouse interrupt. 
-  </para>
-
-  <programlisting>
-static struct wait_queue *mouse_wait;
-static spinlock_t mouse_lock = SPIN_LOCK_UNLOCKED;
-
-static void ourmouse_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-{
-        char delta_x;
-        char delta_y;
-        unsigned char new_buttons;
-
-        delta_x = inb(OURMOUSE_BASE);
-        delta_y = inb(OURMOUSE_BASE+1);
-        new_buttons = inb(OURMOUSE_BASE+2);
-
-        if(delta_x || delta_y || new_buttons != mouse_buttons)
-        {
-                /* Something happened */
-
-                spin_lock(&amp;mouse_lock);
-                mouse_event = 1;
-                mouse_dx += delta_x;
-                mouse_dy += delta_y;
-                mouse_buttons = new_buttons;
-                spin_unlock(&amp;mouse_lock);
-                
-                wake_up_interruptible(&amp;mouse_wait);
-        }
-}
-  </programlisting>
-
-  <para>
-    The interrupt handler reads the mouse status. The next thing we do is 
-    to check whether something has changed. If the mouse was smart it would
-    only interrupt us if something had changed, but let's assume our mouse 
-    is stupid as most mice actually tend to be. 
-  </para>
-  <para>
-    If the mouse has changed we need to update the status variables. What we
-    don't want is the mouse functions reading these variables to read them
-    during a change. We add a spinlock that protects these variables while we
-    play with them.
-  </para>
-  <para>
-    If a change has occurred we also need to wake sleeping processes, so we 
-    add a wakeup call and a <structname>wait_queue</structname> to use when 
-    we wish to await a mouse event.
-  </para>
-  <para>
-    Now we have the wait queue we can implement the poll function for the 
-    mouse relatively easily:
-  </para>
-
-  <programlisting>
-static unsigned int mouse_poll(struct file *file, poll_table *wait)
-{
-        poll_wait(file, &amp;mouse_wait, wait);
-        if(mouse_event)
-                return POLLIN | POLLRDNORM;
-        return 0;
-}
-  </programlisting>
-
-  <para>
-    This is fairly standard poll code. First we add the wait queue to the 
-    list of queues we want to monitor for an event. Secondly we check if an 
-    event has occurred. We only have one kind of event - the 
-    <varname>mouse_event</varname> flag tells us that something happened. 
-    We know that this something can only be mouse data. We return the flags 
-    indicating input and normal reading will succeed.
-  </para>
-  <para>
-    You may be wondering what happens if the function returns saying 'no 
-    event yet'. In this case the wake up from the wait queue we added to 
-    the poll table will cause the function to be called again. Eventually 
-    we will be woken up and have an event ready. At this point the 
-    <function>poll</function> call will exit back to the user.
-  </para>
-  <para>
-    After the poll completes the user will want to read the data. We now 
-    need to think about how our <function>mouse_read</function> function 
-    will work:
-  </para>
-  <programlisting>
-static ssize_t mouse_read(struct file *file, char *buffer, 
-                size_t count, loff_t *pos)
-{
-        int dx, dy;
-        unsigned char button;
-        unsigned long flags;
-        int n;
-
-        if(count&lt;3)
-                return -EINVAL;
-
-        /*
-          *        Wait for an event
-         */
-
-        while(!mouse_event)
-        {
-                if(file-&gt;f_flags&amp;O_NDELAY)
-                        return -EAGAIN;
-                interruptible_sleep_on(&amp;mouse_wait);
-                if(signal_pending(current))
-                        return -ERESTARTSYS;
-        }
-  </programlisting>
-
-  <para>
-    We start by validating that the user is reading enough data. We could 
-    handle partial reads if we wanted but it isn't terribly useful and the 
-    mouse drivers don't bother to try.
-  </para>
-  <para>
-    Next we wait for an event to occur. The loop is fairly standard event
-    waiting in Linux. Having checked that the event has not yet occurred, we
-    then check if an event is pending and if not we need to sleep. 
-  </para>
-  <para>
-    A user process can set the <constant>O_NDELAY</constant> flag on a file 
-    to indicate that it wishes to be told immediately if no event is 
-    pending. We check this and give the appropriate error if so. 
-  </para>
-  <para>
-    Next we sleep until the mouse or a signal awakens us. A signal will 
-    awaken us as we have used <function>wakeup_interruptible</function>. 
-    This is important as it means a user can kill processes waiting for 
-    the mouse - clearly a desirable property. If we are interrupted we 
-    exit the call and the kernel will then process signals and maybe 
-    restart the call again - from the beginning.
-  </para>
-  <para>
-    This code contains a classic Linux bug. All will be revealed later in this
-    article as well as explanations for how to avoid it.
-  </para>
-  <programlisting>
-        /* Grab the event */
-
-        spinlock_irqsave(&amp;mouse_lock, flags);
-
-        dx = mouse_dx;
-        dy = mouse_dy;
-        button = mouse_buttons;
-
-        if(dx&lt;=-127)
-                dx=-127;
-        if(dx&gt;=127)
-                dx=127;
-        if(dy&lt;=-127)
-                dy=-127;
-        if(dy&gt;=127)
-                dy=127;
-
-        mouse_dx -= dx;
-        mouse_dy -= dy;
-        
-        if(mouse_dx == 0 &amp;&amp; mouse_dy == 0)
-                mouse_event = 0;
-
-        spin_unlock_irqrestore(&amp;mouse_lock, flags);
-  </programlisting>
-  <para>
-    This is the next stage. Having established that there is an event 
-    going, we capture it. To be sure that the event is not being updated 
-    as we capture it we also take the spinlock and thus prevent parallel 
-    updates. Note here we use <function>spinlock_irqsave</function>. We 
-    need to disable interrupts on the local processor otherwise bad things 
-    will happen.
-  </para>
-  <para>
-    What will occur is that we take the spinlock. While we hold the lock 
-    an interrupt will occur. At this point our interrupt handler will try 
-    and take the spinlock. It will sit in a loop waiting for the read 
-    routine to release the lock. However because we are sitting in a loop 
-    in the interrupt handler we will never release the lock. The machine 
-    hangs and the user gets upset.
-  </para>
-  <para>
-    By blocking the interrupt on this processor we ensure that the lock 
-    holder will always give the lock back without deadlocking.
-  </para>
-  <para>
-    There is a little cleverness in the reporting mechanism too. We can 
-    only report a move of 127 per read. We don't however want to lose 
-    information by throwing away further movement. Instead we keep 
-    returning as much information as possible. Each time we return a 
-    report we remove the amount from the pending movement in 
-    <varname>mouse_dx</varname> and <varname>mouse_dy</varname>. Eventually 
-    when these counts hit zero we clear the <varname>mouse_event</varname>
-    flag as there is nothing else left to report.
-  </para>
-
-  <programlisting>
-        if(put_user(button|0x80, buffer))
-                return -EFAULT;
-        if(put_user((char)dx, buffer+1))
-                return -EFAULT;
-        if(put_user((char)dy, buffer+2))
-                return -EFAULT;
-
-        for(n=3; n < count; n++)
-                if(put_user(0x00, buffer+n))
-                        return -EFAULT;
-
-        return count;
-}
-  </programlisting>
-
-  <para>
-    Finally we must put the results in the user supplied buffer. We cannot 
-    do this while holding the lock as a write to user memory may sleep. 
-    For example the user memory may be residing on disk at this instant. 
-    Thus we did our computation beforehand and now copy the data. Each 
-    <function>put_user call</function> is filling in one byte of the buffer. 
-    If it returns an error we inform the program that it passed us an 
-    invalid buffer and abort.
-  </para>
-  <para>
-    Having written the data we blank the rest of the buffer that was read 
-    and report the read as being successful.
-  </para>
- </chapter>
-
- <chapter id="debugging">
-  <title>Debugging the mouse driver</title>
-
-  <para>
-    We now have an almost perfectly usable mouse driver. If you were to 
-    actually try and use it however you would eventually find a couple of 
-    problems with it. A few programs will also not work with as it does not 
-    yet support asynchronous I/O.
-  </para>
-  <para>
-    First let us look at the bugs. The most obvious one isn't really a driver
-    bug but a failure to consider the consequences. Imagine you bumped the 
-    mouse hard by accident and sent it skittering across the desk. The mouse 
-    interrupt routine will add up all that movement and report it in steps of 
-    127 until it has reported all of it. Clearly there is a point beyond 
-    which mouse movement isn't worth reporting. We need to add this as a 
-    limit to the interrupt handler:
-  </para>
-
-  <programlisting>
-static void ourmouse_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-{
-        char delta_x;
-        char delta_y;
-        unsigned char new_buttons;
-
-        delta_x = inb(OURMOUSE_BASE);
-        delta_y = inb(OURMOUSE_BASE+1);
-        new_buttons = inb(OURMOUSE_BASE+2);
-
-        if(delta_x || delta_y || new_buttons != mouse_buttons)
-        {
-                /* Something happened */
-
-                spin_lock(&amp;mouse_lock);
-                mouse_event = 1;
-                mouse_dx += delta_x;
-                mouse_dy += delta_y;
-
-                if(mouse_dx &lt; -4096)
-                        mouse_dx = -4096;
-                if(mouse_dx &gt; 4096)
-                        mouse_dx = 4096;
-
-                if(mouse_dy &lt; -4096)
-                        mouse_dy = -4096;
-                if(mouse_dy &gt; 4096)
-                        mouse_dy = 4096;
-
-                mouse_buttons = new_buttons;
-                spin_unlock(&amp;mouse_lock);
-                
-                wake_up_interruptible(&amp;mouse_wait);
-        }
-}
-  </programlisting>
-
-  <para>
-    By adding these checks we limit the range of accumulated movement to
-    something sensible. 
-  </para>
-  <para>
-    The second bug is a bit more subtle, and that is perhaps why this is 
-    such a common mistake. Remember, I said the waiting loop for the read 
-    handler had a bug in it. Think about what happens when we execute:
-  </para>
-
-  <programlisting>
-        while(!mouse_event)
-        {
-  </programlisting>
-
-  <para>
-    and an interrupt occurs at this point here. This causes a mouse movement
-    and wakes up the queue. 
-  </para>
-
-  <programlisting>
-                interruptible_sleep_on(&amp;mouse_wait);
-  </programlisting>
-
-  <para>
-    Now we sleep on the queue. We missed the wake up and the application 
-    will not see an event until the next mouse event occurs. This will 
-    lead to just the odd instance when a mouse button gets delayed. The 
-    consequences to the user will probably be almost undetectable with a 
-    mouse driver. With other drivers this bug could be a lot more severe.
-  </para>
-  <para>
-    There are two ways to solve this. The first is to disable interrupts 
-    during the testing and the sleep. This works because when a task sleeps 
-    it ceases to disable interrupts, and when it resumes it disables them 
-    again. Our code thus becomes:
-  </para>
-
-  <programlisting>
-        save_flags(flags);
-        cli();
-
-        while(!mouse_event)
-        {
-                if(file-&gt;f_flags&amp;O_NDELAY)
-                {
-                        restore_flags(flags);
-                        return -EAGAIN;
-                }
-                interruptible_sleep_on(&amp;mouse_wait);
-                if(signal_pending(current))
-                {
-                        restore_flags(flags);
-                        return -ERESTARTSYS;
-                }
-        }
-        restore_flags(flags);
-  </programlisting>
-
-  <para>
-    This is the sledgehammer approach. It works but it means we spend a 
-    lot more time turning interrupts on and off. It also affects 
-    interrupts globally and has bad properties on multiprocessor machines 
-    where turning interrupts off globally is not a simple operation, but 
-    instead involves kicking each processor, waiting for them to disable 
-    interrupts and reply.
-  </para>
-  <para>
-    The real problem is the race between the event testing and the sleeping. 
-    We can avoid that by using the scheduling functions more directly. 
-    Indeed this is the way they generally should be used for an interrupt.
-  </para>
-
-  <programlisting>
-        struct wait_queue wait = { current, NULL };
-
-        add_wait_queue(&amp;mouse_wait, &amp;wait);
-        set_current_state(TASK_INTERRUPTIBLE);
-        
-        while(!mouse_event)
-        {
-                if(file-&gt;f_flags&amp;O_NDELAY)
-                {
-                        remove_wait_queue(&amp;mouse_wait, &amp;wait);
-                        set_current_state(TASK_RUNNING);
-                        return -EWOULDBLOCK;
-                }
-                if(signal_pending(current))
-                {
-                        remove_wait_queue(&amp;mouse_wait, &amp;wait);
-                        current-&gt;state = TASK_RUNNING;
-                        return -ERESTARTSYS;
-                }
-                schedule();
-                set_current_state(TASK_INTERRUPTIBLE);
-        }
-        
-        remove_wait_wait(&amp;mouse_wait, &amp;wait);
-        set_current_state(TASK_RUNNING);
-  </programlisting>
-
-  <para>
-    At first sight this probably looks like deep magic. To understand how 
-    this works you need to understand how scheduling and events work on 
-    Linux. Having a good grasp of this is one of the keys to writing clean 
-    efficient device drivers.
-  </para>
-  <para>
-    <function>add_wait_queue</function> does what its name suggests. It adds 
-    an entry to the <varname>mouse_wait</varname> list. The entry in this 
-    case is the entry for our current process (<varname>current</varname>
-    is the current task pointer). 
-  </para>
-  <para>
-    So we start by adding an entry for ourself onto the 
-    <varname>mouse_wait</varname> list. This does not put us to sleep 
-    however. We are merely tagged onto the list. 
-  </para>
-  <para>
-    Next we set our status to <constant>TASK_INTERRUPTIBLE</constant>. Again 
-    this does not mean we are now asleep. This flag says what should happen 
-    next time the process sleeps. <constant>TASK_INTERRUPTIBLE</constant> says 
-    that the process should not be rescheduled. It will run from now until it 
-    sleeps and then will need to be woken up.
-  </para>
-  <para>
-    The <function>wakeup_interruptible</function> call in the interrupt 
-    handler can now be explained in more detail. This function is also very 
-    simple. It goes along the list of processes on the queue it is given and 
-    any that are marked as <constant>TASK_INTERRUPTIBLE</constant> it changes 
-    to <constant>TASK_RUNNING</constant> and tells the kernel that new 
-    processes are runnable.
-  </para>
-  <para>
-    Behind all the wrappers in the original code what is happening is this
-  </para>
-
-  <procedure>
-   <step>
-    <para>
-      We add ourself to the mouse wait queue
-    </para>
-   </step>
-   <step>
-    <para>
-      We mark ourself as sleeping
-    </para>
-   </step>
-   <step>
-    <para>
-      We ask the kernel to schedule tasks again
-    </para>
-   </step>
-   <step>
-    <para>
-      The kernel sees we are asleep and schedules someone else.
-    </para>
-   </step>
-   <step>
-    <para>
-      The mouse interrupt sets our state to <constant>TASK_RUNNING</constant> 
-      and makes a note that the kernel should reschedule tasks
-    </para>
-   </step>
-   <step>
-    <para>
-      The kernel sees we are running again and continues our execution
-    </para>
-   </step>
-  </procedure>
-  <para>
-    This is why the apparent magic works. Because we mark ourself as
-    <constant>TASK_INTERRUPTIBLE</constant> and as we add ourselves 
-    to the queue before we check if there are events pending, the race 
-    condition is removed.
-  </para>
-  <para>
-    Now if an interrupt occurs after we check the queue status and before 
-    we call the <function>schedule</function> function in order to sleep, 
-    things work out. Instead of missing an event, we are set back to 
-    <constant>TASK_RUNNING</constant> by the mouse interrupt. We still call 
-    <function>schedule</function> but it will continue running our task. 
-    We go back around the loop and this time there may be an event.
-  </para>
-  <para>
-    There will not always be an event. Thus we set ourselves back to
-    <constant>TASK_INTERRUPTIBLE</constant> before resuming the loop. 
-    Another process doing a read may already have cleared the event flag, 
-    and if so we will need to go back to sleep again. Eventually we will 
-    get our event and escape.
-  </para>
-  <para>
-    Finally when we exit the loop we remove ourselves from the 
-    <varname>mouse_wait</varname> queue as we are no longer interested
-    in mouse events, and we set ourself back to 
-    <constant>TASK_RUNNABLE</constant> as we do not wish to go to sleep 
-    again just yet.
-  </para>
-  <note>
-   <title>Note</title> 
-   <para>
-     This isn't an easy topic. Don't be afraid to reread the description a 
-     few times and also look at other device drivers to see how it works. 
-     Finally if you can't grasp it just yet, you can use the code as 
-     boilerplate to write other drivers and trust me instead.
-   </para>
-  </note>
- </chapter>
-
- <chapter id="asyncio">
-  <title>Asynchronous I/O</title>
-  <para>
-    This leaves the missing feature - Asynchronous I/O. Normally UNIX 
-    programs use the <function>poll</function> call (or its variant form 
-    <function>select</function>) to wait for an event to occur on one of 
-    multiple input or output devices. This model works well for most tasks 
-    but because <function>poll</function> and <function>select</function> 
-    wait for an event isn't suitable for tasks that are also continually 
-    doing computation work. Such programs really want the kernel to kick 
-    them when something happens rather than watch for events.
-  </para>
-  <para>
-    Poll is akin to having a row of lights in front of you. You can see at a
-    glance which ones if any are lit. You cannot however get anything useful
-    done while watching them. Asynchronous I/O uses signals which work more 
-    like a door bell. Instead of you watching, it tells you that something 
-    is up.
-  </para>
-  <para>
-    Asynchronous I/O sends the signal SIGIO to a user process when the I/O 
-    events occur. In this case that means when people move the mouse. The 
-    SIGIO signal causes the user process to jump to its signal handler and 
-    execute code in that handler before returning to whatever was going on 
-    previously. It is the application equivalent of an interrupt handler.
-  </para>
-  <para>
-    Most of the code needed for this operation is common to all its users. 
-    The kernel provides a simple set of functions for managing asynchronous 
-    I/O.
-  </para>
-  <para>
-    Our first job is to allow users to set asynchronous I/O on file handles. 
-    To do that we need to add a new function to the file operations table for 
-    our mouse:
-  </para>
-
-  <programlisting>
-struct file_operations our_mouse_fops = {
-        owner: THIS_MODULE
-        read:  read_mouse,      /* You can read a mouse */
-        write: write_mouse,     /* This won't do a lot */
-        poll:  poll_mouse,      /* Poll */
-        open:  open_mouse,      /* Called on open */
-        release: close_mouse,   /* Called on close */
-        fasync: fasync_mouse,   /* Asynchronous I/O */
-};
-  </programlisting>
-
-  <para>
-    Once we have installed this entry the kernel knows we support 
-    asynchronous I/O and will allow all the relevant operations on the 
-    device. Whenever a user adds or removes asynchronous I/O notification 
-    on a file handle it calls our <function>fasync_mouse</function> routine 
-    we just added. This routine uses the helper functions to keep the queue 
-    of handles up to date:
-  </para>
-
-  <programlisting>
-static struct fasync_struct *mouse_fasync = NULL;
-
-static int fasync_mouse(int fd, struct file *filp, int on)
-{
-         int retval = fasync_helper(fd, filp, on, &amp;mouse_fasync);
-
-         if (retval &lt; 0)
-                 return retval;
-        return 0;
-}
-  </programlisting>
-
-  <para>
-    The fasync helper adds and deletes entries by managing the supplied 
-    list. We also need to remove entries from this list when the file is 
-    closed. This requires we add one line to our close function:
-  </para>
-
-  <programlisting>
-static int close_mouse(struct inode *inode, struct file *file)
-{
-        fasync_mouse(-1, file, 0)
-        if(--mouse_users)
-                return 0;
-        free_irq(OURMOUSE_IRQ, NULL);
-        MOD_DEC_USE_COUNT;
-        return 0;
-}
-  </programlisting>
-
-  <para>
-    When we close the file we now call our own fasync handler as if the 
-    user had requested that this file cease to be used for asynchronous 
-    I/O. This rather neatly cleans up any loose ends. We certainly don't 
-    wait to deliver a signal for a file that no longer exists.
-  </para>
-  <para>
-    At this point the mouse driver supports all the asynchronous I/O 
-    operations, and applications using them will not error. They won't 
-    however work yet. We need to actually send the signals. Again the 
-    kernel provides a function for handling this.
-  </para>
-  <para>
-    We update our interrupt handler a little:
-  </para>
-
-  <programlisting>
-static void ourmouse_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-{
-        char delta_x;
-        char delta_y;
-        unsigned char new_buttons;
-
-        delta_x = inb(OURMOUSE_BASE);
-        delta_y = inb(OURMOUSE_BASE+1);
-        new_buttons = inb(OURMOUSE_BASE+2);
-
-        if(delta_x || delta_y || new_buttons != mouse_buttons)
-        {
-                /* Something happened */
-
-                spin_lock(&amp;mouse_lock);
-                mouse_event = 1;
-                mouse_dx += delta_x;
-                mouse_dy += delta_y;
-
-                if(mouse_dx &lt; -4096)
-                        mouse_dx = -4096;
-                if(mouse_dx &gt; 4096)
-                        mouse_dx = 4096;
-
-                if(mouse_dy &lt; -4096)
-                        mouse_dy = -4096;
-                if(mouse_dy &gt; 4096)
-                        mouse_dy = 4096;
-
-                mouse_buttons = new_buttons;
-                spin_unlock(&amp;mouse_lock);
-
-                /* Now we do asynchronous I/O */
-                kill_fasync(&amp;mouse_fasync, SIGIO); 
-                
-                wake_up_interruptible(&amp;mouse_wait);
-        }
-}
-  </programlisting>
-
-  <para>
-    The new code simply calls the <function>kill_fasync</function> routine
-    provided by the kernel if the queue is non-empty. This sends the 
-    required signal (SIGIO in this case) to the process each file handle 
-    says should be informed about the exciting new mouse movement that 
-    just happened.
-  </para>
-  <para>
-    With this in place and the bugs in the original version fixed, you now 
-    have a fully functional mouse driver using the bus mouse protocol. It 
-    will work with the <application>X window system</application>, will work 
-    with <application>GPM</application> and should work with every other 
-    application you need. <application>Doom</application> is of course the 
-    ideal way to test your new mouse driver is functioning properly. Be sure 
-    to test it thoroughly.
-  </para>
- </chapter>
-</book>
-
diff -urN malta/linux/Documentation/DocBook/tulip-user.tmpl malta/linux/Documentation/DocBook/tulip-user.tmpl
--- malta/linux/Documentation/DocBook/Attic/tulip-user.tmpl	2005-06-21 14:20:33.773583000 +0100	1.3
+++ malta/linux/Documentation/DocBook/Attic/tulip-user.tmpl	1970/01/01 00:00:00+0100
@@ -1,325 +0,0 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
-
-<book id="TulipUserGuide">
- <bookinfo>
-  <title>Tulip Driver User's Guide</title>
-  
-  <authorgroup>
-   <author>
-    <firstname>Jeff</firstname>
-    <surname>Garzik</surname>
-    <affiliation>
-     <address>
-      <email>jgarzik@pobox.com</email>
-     </address>
-    </affiliation>
-   </author>
-  </authorgroup>
-
-  <copyright>
-   <year>2001</year>
-   <holder>Jeff Garzik</holder>
-  </copyright>
-
-  <legalnotice>
-   <para>
-     This documentation is free software; you can redistribute
-     it and/or modify it under the terms of the GNU General Public
-     License as published by the Free Software Foundation; either
-     version 2 of the License, or (at your option) any later
-     version.
-   </para>
-      
-   <para>
-     This program is distributed in the hope that it will be
-     useful, but WITHOUT ANY WARRANTY; without even the implied
-     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-     See the GNU General Public License for more details.
-   </para>
-      
-   <para>
-     You should have received a copy of the GNU General Public
-     License along with this program; if not, write to the Free
-     Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-     MA 02111-1307 USA
-   </para>
-      
-   <para>
-     For more details see the file COPYING in the source
-     distribution of Linux.
-   </para>
-  </legalnotice>
- </bookinfo>
-
- <toc></toc>
-
-  <chapter id="intro">
-    <title>Introduction</title>
-<para>
-The Tulip Ethernet Card Driver
-is maintained by Jeff Garzik (<email>jgarzik@pobox.com</email>).
-</para>
-
-<para>
-The Tulip driver was developed by Donald Becker and changed by
-Jeff Garzik, Takashi Manabe and a cast of thousands.
-</para>
-
-<para>
-For 2.4.x and later kernels, the Linux Tulip driver is available at
-<ULink URL="http://sourceforge.net/projects/tulip/">http://sourceforge.net/projects/tulip/</ULink>
-</para>
-
-<para>
-	This driver is for the Digital "Tulip" Ethernet adapter interface.
-	It should work with most DEC 21*4*-based chips/ethercards, as well as
-	with work-alike chips from Lite-On (PNIC) and Macronix (MXIC) and ASIX.
-</para>
-
-<para>
-        The original author may be reached as becker@scyld.com, or C/O
-        Scyld Computing Corporation,
-        410 Severn Ave., Suite 210,
-        Annapolis MD 21403
-</para>
-
-<para>
-	Additional information on Donald Becker's tulip.c
-	is available at <ULink URL="http://www.scyld.com/network/tulip.html">http://www.scyld.com/network/tulip.html</ULink>
-</para>
-
-  </chapter>
-
-  <chapter id="drvr-compat">
-    <title>Driver Compatibility</title>
-
-<para>
-This device driver is designed for the DECchip "Tulip", Digital's
-single-chip ethernet controllers for PCI (now owned by Intel).
-Supported members of the family
-are the 21040, 21041, 21140, 21140A, 21142, and 21143.  Similar work-alike
-chips from Lite-On, Macronics, ASIX, Compex and other listed below are also
-supported.
-</para>
-
-<para>
-These chips are used on at least 140 unique PCI board designs.  The great
-number of chips and board designs supported is the reason for the
-driver size and complexity.  Almost of the increasing complexity is in the
-board configuration and media selection code.  There is very little
-increasing in the operational critical path length.
-</para>
-  </chapter>
-
-  <chapter id="board-settings">
-    <title>Board-specific Settings</title>
-
-<para>
-PCI bus devices are configured by the system at boot time, so no jumpers
-need to be set on the board.  The system BIOS preferably should assign the
-PCI INTA signal to an otherwise unused system IRQ line.
-</para>
-
-<para>
-Some boards have EEPROMs tables with default media entry.  The factory default
-is usually "autoselect".  This should only be overridden when using
-transceiver connections without link beat e.g. 10base2 or AUI, or (rarely!)
-for forcing full-duplex when used with old link partners that do not do
-autonegotiation.
-</para>
-  </chapter>
-
-  <chapter id="driver-operation">
-    <title>Driver Operation</title>
-
-<sect1><title>Ring buffers</title>
-
-<para>
-The Tulip can use either ring buffers or lists of Tx and Rx descriptors.
-This driver uses statically allocated rings of Rx and Tx descriptors, set at
-compile time by RX/TX_RING_SIZE.  This version of the driver allocates skbuffs
-for the Rx ring buffers at open() time and passes the skb->data field to the
-Tulip as receive data buffers.  When an incoming frame is less than
-RX_COPYBREAK bytes long, a fresh skbuff is allocated and the frame is
-copied to the new skbuff.  When the incoming frame is larger, the skbuff is
-passed directly up the protocol stack and replaced by a newly allocated
-skbuff.
-</para>
-
-<para>
-The RX_COPYBREAK value is chosen to trade-off the memory wasted by
-using a full-sized skbuff for small frames vs. the copying costs of larger
-frames.  For small frames the copying cost is negligible (esp. considering
-that we are pre-loading the cache with immediately useful header
-information).  For large frames the copying cost is non-trivial, and the
-larger copy might flush the cache of useful data.  A subtle aspect of this
-choice is that the Tulip only receives into longword aligned buffers, thus
-the IP header at offset 14 isn't longword aligned for further processing.
-Copied frames are put into the new skbuff at an offset of "+2", thus copying
-has the beneficial effect of aligning the IP header and preloading the
-cache.
-</para>
-
-</sect1>
-
-<sect1><title>Synchronization</title>
-<para>
-The driver runs as two independent, single-threaded flows of control.  One
-is the send-packet routine, which enforces single-threaded use by the
-dev->tbusy flag.  The other thread is the interrupt handler, which is single
-threaded by the hardware and other software.
-</para>
-
-<para>
-The send packet thread has partial control over the Tx ring and 'dev->tbusy'
-flag.  It sets the tbusy flag whenever it's queuing a Tx packet. If the next
-queue slot is empty, it clears the tbusy flag when finished otherwise it sets
-the 'tp->tx_full' flag.
-</para>
-
-<para>
-The interrupt handler has exclusive control over the Rx ring and records stats
-from the Tx ring.  (The Tx-done interrupt can't be selectively turned off, so
-we can't avoid the interrupt overhead by having the Tx routine reap the Tx
-stats.)	 After reaping the stats, it marks the queue entry as empty by setting
-the 'base' to zero.	 Iff the 'tp->tx_full' flag is set, it clears both the
-tx_full and tbusy flags.
-</para>
-
-</sect1>
-
-  </chapter>
-
-  <chapter id="errata">
-    <title>Errata</title>
-
-<para>
-The old DEC databooks were light on details.
-The 21040 databook claims that CSR13, CSR14, and CSR15 should each be the last
-register of the set CSR12-15 written.  Hmmm, now how is that possible?
-</para>
-
-<para>
-The DEC SROM format is very badly designed not precisely defined, leading to
-part of the media selection junkheap below.  Some boards do not have EEPROM
-media tables and need to be patched up.  Worse, other boards use the DEC
-design kit media table when it isn't correct for their board.
-</para>
-
-<para>
-We cannot use MII interrupts because there is no defined GPIO pin to attach
-them.  The MII transceiver status is polled using an kernel timer.
-</para>
-  </chapter>
-
-  <chapter id="changelog">
-    <title>Driver Change History</title>
-
-    <sect1><title>Version 0.9.14 (February 20, 2001)</title>
-    <itemizedlist>
-    <listitem><para>Fix PNIC problems (Manfred Spraul)</para></listitem>
-    <listitem><para>Add new PCI id for Accton comet</para></listitem>
-    <listitem><para>Support Davicom tulips</para></listitem>
-    <listitem><para>Fix oops in eeprom parsing</para></listitem>
-    <listitem><para>Enable workarounds for early PCI chipsets</para></listitem>
-    <listitem><para>IA64, hppa csr0 support</para></listitem>
-    <listitem><para>Support media types 5, 6</para></listitem>
-    <listitem><para>Interpret a bit more of the 21142 SROM extended media type 3</para></listitem>
-    <listitem><para>Add missing delay in eeprom reading</para></listitem>
-    </itemizedlist>
-    </sect1>
-
-    <sect1><title>Version 0.9.11 (November 3, 2000)</title>
-    <itemizedlist>
-    <listitem><para>Eliminate extra bus accesses when sharing interrupts (prumpf)</para></listitem>
-    <listitem><para>Barrier following ownership descriptor bit flip (prumpf)</para></listitem>
-    <listitem><para>Endianness fixes for >14 addresses in setup frames (prumpf)</para></listitem>
-    <listitem><para>Report link beat to kernel/userspace via netif_carrier_*. (kuznet)</para></listitem>
-    <listitem><para>Better spinlocking in set_rx_mode.</para></listitem>
-    <listitem><para>Fix I/O resource request failure error messages (DaveM catch)</para></listitem>
-    <listitem><para>Handle DMA allocation failure.</para></listitem>
-    </itemizedlist>
-    </sect1>
-
-    <sect1><title>Version 0.9.10 (September 6, 2000)</title>
-    <itemizedlist>
-    <listitem><para>Simple interrupt mitigation (via jamal)</para></listitem>
-    <listitem><para>More PCI ids</para></listitem>
-    </itemizedlist>
-    </sect1>
-
-    <sect1><title>Version 0.9.9 (August 11, 2000)</title>
-    <itemizedlist>
-    <listitem><para>More PCI ids</para></listitem>
-    </itemizedlist>
-    </sect1>
-
-    <sect1><title>Version 0.9.8 (July 13, 2000)</title>
-    <itemizedlist>
-    <listitem><para>Correct signed/unsigned comparison for dummy frame index</para></listitem>
-    <listitem><para>Remove outdated references to struct enet_statistics</para></listitem>
-    </itemizedlist>
-    </sect1>
-
-    <sect1><title>Version 0.9.7 (June 17, 2000)</title>
-    <itemizedlist>
-    <listitem><para>Timer cleanups (Andrew Morton)</para></listitem>
-    <listitem><para>Alpha compile fix (somebody?)</para></listitem>
-    </itemizedlist>
-    </sect1>
-
-    <sect1><title>Version 0.9.6 (May 31, 2000)</title>
-    <itemizedlist>
-    <listitem><para>Revert 21143-related support flag patch</para></listitem>
-    <listitem><para>Add HPPA/media-table debugging printk</para></listitem>
-    </itemizedlist>
-    </sect1>
-
-    <sect1><title>Version 0.9.5 (May 30, 2000)</title>
-    <itemizedlist>
-    <listitem><para>HPPA support (willy@puffingroup)</para></listitem>
-    <listitem><para>CSR6 bits and tulip.h cleanup (Chris Smith)</para></listitem>
-    <listitem><para>Improve debugging messages a bit</para></listitem>
-    <listitem><para>Add delay after CSR13 write in t21142_start_nway</para></listitem>
-    <listitem><para>Remove unused ETHER_STATS code</para></listitem>
-    <listitem><para>Convert 'extern inline' to 'static inline' in tulip.h (Chris Smith)</para></listitem>
-    <listitem><para>Update DS21143 support flags in tulip_chip_info[]</para></listitem>
-    <listitem><para>Use spin_lock_irq, not _irqsave/restore, in tulip_start_xmit()</para></listitem>
-    <listitem><para>Add locking to set_rx_mode()</para></listitem>
-    <listitem><para>Fix race with chip setting DescOwned bit (Hal Murray)</para></listitem>
-    <listitem><para>Request 100% of PIO and MMIO resource space assigned to card</para></listitem>
-    <listitem><para>Remove error message from pci_enable_device failure</para></listitem>
-    </itemizedlist>
-    </sect1>
-
-    <sect1><title>Version 0.9.4.3 (April 14, 2000)</title>
-    <itemizedlist>
-    <listitem><para>mod_timer fix (Hal Murray)</para></listitem>
-    <listitem><para>PNIC2 resuscitation (Chris Smith)</para></listitem>
-    </itemizedlist>
-    </sect1>
-
-    <sect1><title>Version 0.9.4.2 (March 21, 2000)</title>
-    <itemizedlist>
-    <listitem><para>Fix 21041 CSR7, CSR13/14/15 handling</para></listitem>
-    <listitem><para>Merge some PCI ids from tulip 0.91x</para></listitem>
-    <listitem><para>Merge some HAS_xxx flags and flag settings from tulip 0.91x</para></listitem>
-    <listitem><para>asm/io.h fix (submitted by many) and cleanup</para></listitem>
-    <listitem><para>s/HAS_NWAY143/HAS_NWAY/</para></listitem>
-    <listitem><para>Cleanup 21041 mode reporting</para></listitem>
-    <listitem><para>Small code cleanups</para></listitem>
-    </itemizedlist>
-    </sect1>
-
-    <sect1><title>Version 0.9.4.1 (March 18, 2000)</title>
-    <itemizedlist>
-    <listitem><para>Finish PCI DMA conversion (davem)</para></listitem>
-    <listitem><para>Do not netif_start_queue() at end of tulip_tx_timeout() (kuznet)</para></listitem>
-    <listitem><para>PCI DMA fix (kuznet)</para></listitem>
-    <listitem><para>eeprom.c code cleanup</para></listitem>
-    <listitem><para>Remove Xircom Tulip crud</para></listitem>
-    </itemizedlist>
-    </sect1>
-  </chapter>
-
-</book>
diff -urN malta/linux/Documentation/DocBook/via-audio.tmpl malta/linux/Documentation/DocBook/via-audio.tmpl
--- malta/linux/Documentation/DocBook/Attic/via-audio.tmpl	2005-06-21 14:20:33.792946000 +0100	1.6.1000.1
+++ malta/linux/Documentation/DocBook/Attic/via-audio.tmpl	1970/01/01 00:00:00+0100
@@ -1,595 +0,0 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
-
-<book id="ViaAudioGuide">
- <bookinfo>
-  <title>Via 686 Audio Driver for Linux</title>
-  
-  <authorgroup>
-   <author>
-    <firstname>Jeff</firstname>
-    <surname>Garzik</surname>
-   </author>
-  </authorgroup>
-
-  <copyright>
-   <year>1999-2001</year>
-   <holder>Jeff Garzik</holder>
-  </copyright>
-
-  <legalnotice>
-   <para>
-     This documentation is free software; you can redistribute
-     it and/or modify it under the terms of the GNU General Public
-     License as published by the Free Software Foundation; either
-     version 2 of the License, or (at your option) any later
-     version.
-   </para>
-      
-   <para>
-     This program is distributed in the hope that it will be
-     useful, but WITHOUT ANY WARRANTY; without even the implied
-     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-     See the GNU General Public License for more details.
-   </para>
-      
-   <para>
-     You should have received a copy of the GNU General Public
-     License along with this program; if not, write to the Free
-     Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-     MA 02111-1307 USA
-   </para>
-      
-   <para>
-     For more details see the file COPYING in the source
-     distribution of Linux.
-   </para>
-  </legalnotice>
- </bookinfo>
-
-<toc></toc>
-
-  <chapter id="intro">
-      <title>Introduction</title>
-  <para>
-  	The Via VT82C686A "super southbridge" chips contain
-	AC97-compatible audio logic which features dual 16-bit stereo
-	PCM sound channels (full duplex), plus a third PCM channel intended for use
-	in hardware-assisted FM synthesis.
-  </para>
-  <para>
-  	The current Linux kernel audio driver for this family of chips
-	supports audio playback and recording, but hardware-assisted
-	FM features, and hardware buffer direct-access (mmap)
-	support are not yet available.
-  </para>
-  <para>
-  	This driver supports any Linux kernel version after 2.4.10.
-  </para>
-  <para>
-	Please send bug reports to the mailing list <email>linux-via@gtf.org</email>.
-	To subscribe, e-mail <email>majordomo@gtf.org</email> with
-  </para>
-  <programlisting>
-	subscribe linux-via
-  </programlisting>
-  <para>
-	in the body of the message.
-  </para>
-  </chapter>
-  
-  <chapter id="install">
-      <title>Driver Installation</title>
-  <para>
-  	To use this audio driver, select the
-	CONFIG_SOUND_VIA82CXXX option in the section Sound during kernel configuration.
-	Follow the usual kernel procedures for rebuilding the kernel,
-	or building and installing driver modules.
-  </para>
-  <para>
-  	To make this driver the default audio driver, you can add the
-	following to your /etc/conf.modules file:
-  </para>
-  <programlisting>
-	alias sound via82cxxx_audio
-  </programlisting>
-  <para>
-  	Note that soundcore and ac97_codec support modules
-	are also required for working audio, in addition to
-	the via82cxxx_audio module itself.
-  </para>
-  </chapter>
-  
-  <chapter id="reportbug">
-      <title>Submitting a bug report</title>
-  <sect1 id="bugrepdesc"><title>Description of problem</title>
-  <para>
-	Describe the application you were using to play/record sound, and how
-	to reproduce the problem.
-  </para>
-  </sect1>
-  <sect1 id="bugrepdiag"><title>Diagnostic output</title>
-  <para>
-	Obtain the via-audio-diag diagnostics program from
-	http://sf.net/projects/gkernel/ and provide a dump of the
-	audio chip's registers while the problem is occurring.  Sample command line:
-  </para>
-  <programlisting>
-	./via-audio-diag -aps > diag-output.txt
-  </programlisting>
-  </sect1>
-  <sect1 id="bugrepdebug"><title>Driver debug output</title>
-  <para>
-	Define <constant>VIA_DEBUG</constant> at the beginning of the driver, then capture and email
-	the kernel log output.  This can be viewed in the system kernel log (if
-	enabled), or via the dmesg program.  Sample command line:
-  </para>
-  <programlisting>
-	dmesg > /tmp/dmesg-output.txt
-  </programlisting>
-  </sect1>
-  <sect1 id="bugrepprintk"><title>Bigger kernel message buffer</title>
-  <para>
-	If you wish to increase the size of the buffer displayed by dmesg, then
-	change the <constant>LOG_BUF_LEN</constant> macro at the top of linux/kernel/printk.c, recompile
-	your kernel, and pass the <constant>LOG_BUF_LEN</constant> value to dmesg.  Sample command line with
-	<constant>LOG_BUF_LEN</constant> == 32768:
-  </para>
-  <programlisting>
-	dmesg -s 32768 > /tmp/dmesg-output.txt
-  </programlisting>
-  </sect1>
-  </chapter>
-  
-  <chapter id="bugs">
-     <title>Known Bugs And Assumptions</title>
-  <para>
-  <variablelist>
-    <varlistentry><term>Low volume</term>
-    <listitem>
-    <para>
-	Volume too low on many systems.  Workaround:  use mixer program
-	such as xmixer to increase volume.
-    </para>
-    </listitem></varlistentry>
-
-  </variablelist>
-	
-  </para>
-  </chapter>
-
-  <chapter id="thanks">
-      <title>Thanks</title>
-  <para>
-	Via for providing e-mail support, specs, and NDA'd source code.
-  </para>
-  <para>
-	MandrakeSoft for providing hacking time.
-  </para>
-  <para>
-	AC97 mixer interface fixes and debugging by Ron Cemer <email>roncemer@gte.net</email>.
-  </para>
-  <para>
-	Rui Sousa <email>rui.sousa@conexant.com</email>, for bugfixing
-	MMAP support, and several other notable fixes that resulted from
-	his hard work and testing.
-  </para>
-  <para>
-	Adrian Cox <email>adrian@humboldt.co.uk</email>, for bugfixing
-	MMAP support, and several other notable fixes that resulted from
-	his hard work and testing.
-  </para>
-  <para>
-  	Thomas Sailer for further bugfixes.
-  </para>
-  </chapter>
-  
-  <chapter id="notes">
-     <title>Random Notes</title>
-  <para>
-	Two /proc pseudo-files provide diagnostic information.  This is generally
-	not useful to most users.  Power users can disable CONFIG_SOUND_VIA82CXXX_PROCFS,
-	and remove the /proc support code.  Once
-	version 2.0.0 is released, the /proc support code will be disabled by
-	default.  Available /proc pseudo-files:
-  </para>
-  <programlisting>
-	/proc/driver/via/0/info
-	/proc/driver/via/0/ac97
-  </programlisting>
-  <para>
-	This driver by default supports all PCI audio devices which report
-	a vendor id of 0x1106, and a device id of 0x3058.  Subsystem vendor
-	and device ids are not examined.
-  </para>
-  <para>
-	GNU indent formatting options:
-  <programlisting>
--kr -i8 -ts8 -br -ce -bap -sob -l80 -pcs -cs -ss -bs -di1 -nbc -lp -psl
-  </programlisting>
-  </para>
-  <para>
-	Via has graciously donated e-mail support and source code to help further
-	the development of this driver.  Their assistance has been invaluable
-	in the design and coding of the next major version of this driver.
-  </para>
-  <para>
-	The Via audio chip apparently provides a second PCM scatter-gather
-	DMA channel just for FM data, but does not have a full hardware MIDI
-	processor.  I haven't put much thought towards a solution here, but it
-	might involve using SoftOSS midi wave table, or simply disabling MIDI
-	support altogether and using the FM PCM channel as a second (input? output?)
-  </para>
-  </chapter>
-
-  <chapter id="changelog">
-      <title>Driver ChangeLog</title>
-
-<sect1 id="version191"><title>
-Version 1.9.1
-</title>
-  <itemizedlist spacing="compact">
-   <listitem>
-    <para>
-    DSP read/write bugfixes from Thomas Sailer.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Add new PCI id for single-channel use of Via 8233.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Other bug fixes, tweaks, new ioctls.
-    </para>
-   </listitem>
-
-  </itemizedlist>
-</sect1>
-
-<sect1 id="version1115"><title>
-Version 1.1.15
-</title>
-  <itemizedlist spacing="compact">
-   <listitem>
-    <para>
-    Support for variable fragment size and variable fragment number (Rui
-    Sousa)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Fixes for the SPEED, STEREO, CHANNELS, FMT ioctls when in read &
-    write mode (Rui Sousa)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Mmaped sound is now fully functional. (Rui Sousa)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Make sure to enable PCI device before reading any of its PCI
-    config information. (fixes potential hotplug problems)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Clean up code a bit and add more internal function documentation.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    AC97 codec access fixes (Adrian Cox)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Big endian fixes (Adrian Cox)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    MIDI support (Adrian Cox)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Detect and report locked-rate AC97 codecs.  If your hardware only
-    supports 48Khz (locked rate), then your recording/playback software
-    must upsample or downsample accordingly.  The hardware cannot do it.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Use new pci_request_regions and pci_disable_device functions in
-    kernel 2.4.6.
-    </para>
-   </listitem>
-
-  </itemizedlist>
-</sect1>
-
-<sect1 id="version1114"><title>
-Version 1.1.14
-</title>
-  <itemizedlist spacing="compact">
-   <listitem>
-    <para>
-    Use VM_RESERVE when available, to eliminate unnecessary page faults.
-    </para>
-   </listitem>
-  </itemizedlist>
-</sect1>
-
-<sect1 id="version1112"><title>
-Version 1.1.12
-</title>
-  <itemizedlist spacing="compact">
-   <listitem>
-    <para>
-    mmap bug fixes from Linus.
-    </para>
-   </listitem>
-  </itemizedlist>
-</sect1>
-
-<sect1 id="version1111"><title>
-Version 1.1.11
-</title>
-  <itemizedlist spacing="compact">
-   <listitem>
-    <para>
-    Many more bug fixes.  mmap enabled by default, but may still be buggy.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Uses new and spiffy method of mmap'ing the DMA buffer, based
-    on a suggestion from Linus.
-    </para>
-   </listitem>
-  </itemizedlist>
-</sect1>
-
-<sect1 id="version1110"><title>
-Version 1.1.10
-</title>
-  <itemizedlist spacing="compact">
-   <listitem>
-    <para>
-    Many bug fixes.  mmap enabled by default, but may still be buggy.
-    </para>
-   </listitem>
-  </itemizedlist>
-</sect1>
-
-<sect1 id="version119"><title>
-Version 1.1.9
-</title>
-  <itemizedlist spacing="compact">
-   <listitem>
-    <para>
-    Redesign and rewrite audio playback implementation.  (faster and smaller, hopefully)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Implement recording and full duplex (DSP_CAP_DUPLEX) support.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Make procfs support optional.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Quick interrupt status check, to lessen overhead in interrupt
-    sharing situations.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Add mmap(2) support.  Disabled for now, it is still buggy and experimental.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Surround all syscalls with a semaphore for cheap and easy SMP protection.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Fix bug in channel shutdown (hardware channel reset) code.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Remove unnecessary spinlocks (better performance).
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Eliminate "unknown AFMT" message by using a different method
-    of selecting the best AFMT_xxx sound sample format for use.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Support for realtime hardware pointer position reporting
-    (DSP_CAP_REALTIME, SNDCTL_DSP_GETxPTR ioctls)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Support for capture/playback triggering
-    (DSP_CAP_TRIGGER, SNDCTL_DSP_SETTRIGGER ioctls)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    SNDCTL_DSP_SETDUPLEX and SNDCTL_DSP_POST ioctls now handled.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Rewrite open(2) and close(2) logic to allow only one user at
-    a time.  All other open(2) attempts will sleep until they succeed.
-    FIXME: open(O_RDONLY) and open(O_WRONLY) should be allowed to succeed.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-    Reviewed code to ensure that SMP and multiple audio devices
-    are fully supported.
-    </para>
-   </listitem>
-
-  </itemizedlist>
-</sect1>
-
-<sect1 id="version118"><title>
-Version 1.1.8
-</title>
-  <itemizedlist spacing="compact">
-   <listitem>
-    <para>
-    	Clean up interrupt handler output.  Fixes the following kernel error message:
-    </para>
-  	<programlisting>
-	unhandled interrupt ...
-  	</programlisting>
-   </listitem>
-
-   <listitem>
-    <para>
-    	Convert documentation to DocBook, so that PDF, HTML and PostScript (.ps) output is readily
-	available.
-    </para>
-   </listitem>
-
-  </itemizedlist>
-</sect1>
-
-<sect1 id="version117"><title>
-Version 1.1.7
-</title>
-  <itemizedlist spacing="compact">
-   <listitem>
-    <para>
- Fix module unload bug where mixer device left registered
-  after driver exit
-    </para>
-   </listitem>
-  </itemizedlist>
-</sect1>
-
-<sect1 id="version116"><title>
-Version 1.1.6
-</title>
-  <itemizedlist spacing="compact">
-   <listitem>
-    <para>
- Rewrite via_set_rate to mimic ALSA basic AC97 rate setting
-    </para>
-   </listitem>
-   <listitem>
-    <para>
- Remove much dead code
-    </para>
-   </listitem>
-   <listitem>
-    <para>
- Complete spin_lock_irqsave -> spin_lock_irq conversion in via_dsp_ioctl
-    </para>
-   </listitem>
-   <listitem>
-    <para>
- Fix build problem in via_dsp_ioctl
-    </para>
-   </listitem>
-   <listitem>
-    <para>
- Optimize included headers to eliminate headers found in linux/sound
-	</para>
-   </listitem>
-  </itemizedlist>
-</sect1>
-
-<sect1 id="version115"><title>
-Version 1.1.5
-</title>
-  <itemizedlist spacing="compact">
-   <listitem>
-    <para>
- Disable some overly-verbose debugging code
-    </para>
-   </listitem>
-   <listitem>
-    <para>
- Remove unnecessary sound locks
-   </para>
-   </listitem>
-   <listitem>
-    <para>
- Fix some ioctls for better time resolution
-    </para>
-   </listitem>
-   <listitem>
-    <para>
- Begin spin_lock_irqsave -> spin_lock_irq conversion in via_dsp_ioctl
-    </para>
-   </listitem>
-  </itemizedlist>
-</sect1>
-
-<sect1 id="version114"><title>
-Version 1.1.4
-</title>
-  <itemizedlist spacing="compact">
-   <listitem>
-    <para>
- Completed rewrite of driver.  Eliminated SoundBlaster compatibility
-  completely, and now uses the much-faster scatter-gather DMA engine.
-    </para>
-   </listitem>
-  </itemizedlist>
-</sect1>
-
-  </chapter>
-  
-  <chapter id="intfunctions">
-     <title>Internal Functions</title>
-!Isound/oss/via82cxxx_audio.c
-  </chapter>
-
-</book>
-
-
diff -urN malta/linux/Documentation/RCU/RTFP.txt malta/linux/Documentation/RCU/RTFP.txt
--- malta/linux/Documentation/RCU/RTFP.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/RCU/RTFP.txt	2005-06-21 14:20:34.078850000 +0100	1.3.1000.1
@@ -0,0 +1,412 @@
+Read the F-ing Papers!
+
+
+This document describes RCU-related publications, and is followed by
+the corresponding bibtex entries.
+
+The first thing resembling RCU was published in 1980, when Kung and Lehman
+[Kung80] recommended use of a garbage collector to defer destruction
+of nodes in a parallel binary search tree in order to simplify its
+implementation.  This works well in environments that have garbage
+collectors, but current production garbage collectors incur significant
+read-side overhead.
+
+In 1982, Manber and Ladner [Manber82,Manber84] recommended deferring
+destruction until all threads running at that time have terminated, again
+for a parallel binary search tree.  This approach works well in systems
+with short-lived threads, such as the K42 research operating system.
+However, Linux has long-lived tasks, so more is needed.
+
+In 1986, Hennessy, Osisek, and Seigh [Hennessy89] introduced passive
+serialization, which is an RCU-like mechanism that relies on the presence
+of "quiescent states" in the VM/XA hypervisor that are guaranteed not
+to be referencing the data structure.  However, this mechanism was not
+optimized for modern computer systems, which is not surprising given
+that these overheads were not so expensive in the mid-80s.  Nonetheless,
+passive serialization appears to be the first deferred-destruction
+mechanism to be used in production.  Furthermore, the relevant patent has
+lapsed, so this approach may be used in non-GPL software, if desired.
+(In contrast, use of RCU is permitted only in software licensed under
+GPL.  Sorry!!!)
+
+In 1990, Pugh [Pugh90] noted that explicitly tracking which threads
+were reading a given data structure permitted deferred free to operate
+in the presence of non-terminating threads.  However, this explicit
+tracking imposes significant read-side overhead, which is undesirable
+in read-mostly situations.  This algorithm does take pains to avoid
+write-side contention and parallelize the other write-side overheads by
+providing a fine-grained locking design, however, it would be interesting
+to see how much of the performance advantage reported in 1990 remains
+in 2004.
+
+At about this same time, Adams [Adams91] described ``chaotic relaxation'',
+where the normal barriers between successive iterations of convergent
+numerical algorithms are relaxed, so that iteration $n$ might use
+data from iteration $n-1$ or even $n-2$.  This introduces error,
+which typically slows convergence and thus increases the number of
+iterations required.  However, this increase is sometimes more than made
+up for by a reduction in the number of expensive barrier operations,
+which are otherwise required to synchronize the threads at the end
+of each iteration.  Unfortunately, chaotic relaxation requires highly
+structured data, such as the matrices used in scientific programs, and
+is thus inapplicable to most data structures in operating-system kernels.
+
+In 1993, Jacobson [Jacobson93] verbally described what is perhaps the
+simplest deferred-free technique: simply waiting a fixed amount of time
+before freeing blocks awaiting deferred free.  Jacobson did not describe
+any write-side changes he might have made in this work using SGI's Irix
+kernel.  Aju John published a similar technique in 1995 [AjuJohn95].
+This works well if there is a well-defined upper bound on the length of
+time that reading threads can hold references, as there might well be in
+hard real-time systems.  However, if this time is exceeded, perhaps due
+to preemption, excessive interrupts, or larger-than-anticipated load,
+memory corruption can ensue, with no reasonable means of diagnosis.
+Jacobson's technique is therefore inappropriate for use in production
+operating-system kernels, except when such kernels can provide hard
+real-time response guarantees for all operations.
+
+Also in 1995, Pu et al. [Pu95a] applied a technique similar to that of Pugh's
+read-side-tracking to permit replugging of algorithms within a commercial
+Unix operating system.  However, this replugging permitted only a single
+reader at a time.  The following year, this same group of researchers
+extended their technique to allow for multiple readers [Cowan96a].
+Their approach requires memory barriers (and thus pipeline stalls),
+but reduces memory latency, contention, and locking overheads.
+
+1995 also saw the first publication of DYNIX/ptx's RCU mechanism
+[Slingwine95], which was optimized for modern CPU architectures,
+and was successfully applied to a number of situations within the
+DYNIX/ptx kernel.  The corresponding conference paper appeared in 1998
+[McKenney98].
+
+In 1999, the Tornado and K42 groups described their "generations"
+mechanism, which quite similar to RCU [Gamsa99].  These operating systems
+made pervasive use of RCU in place of "existence locks", which greatly
+simplifies locking hierarchies.
+
+2001 saw the first RCU presentation involving Linux [McKenney01a]
+at OLS.  The resulting abundance of RCU patches was presented the
+following year [McKenney02a], and use of RCU in dcache was first
+described that same year [Linder02a].
+
+Also in 2002, Michael [Michael02b,Michael02a] presented techniques
+that defer the destruction of data structures to simplify non-blocking
+synchronization (wait-free synchronization, lock-free synchronization,
+and obstruction-free synchronization are all examples of non-blocking
+synchronization).  In particular, this technique eliminates locking,
+reduces contention, reduces memory latency for readers, and parallelizes
+pipeline stalls and memory latency for writers.  However, these
+techniques still impose significant read-side overhead in the form of
+memory barriers.  Researchers at Sun worked along similar lines in the
+same timeframe [HerlihyLM02,HerlihyLMS03].
+
+In 2003, the K42 group described how RCU could be used to create
+hot-pluggable implementations of operating-system functions.  Later that
+year saw a paper describing an RCU implementation of System V IPC
+[Arcangeli03], and an introduction to RCU in Linux Journal [McKenney03a].
+
+2004 has seen a Linux-Journal article on use of RCU in dcache
+[McKenney04a], a performance comparison of locking to RCU on several
+different CPUs [McKenney04b], a dissertation describing use of RCU in a
+number of operating-system kernels [PaulEdwardMcKenneyPhD], a paper
+describing how to make RCU safe for soft-realtime applications [Sarma04c],
+and a paper describing SELinux performance with RCU [JamesMorris04b].
+
+
+Bibtex Entries
+
+@article{Kung80
+,author="H. T. Kung and Q. Lehman"
+,title="Concurrent Maintenance of Binary Search Trees"
+,Year="1980"
+,Month="September"
+,journal="ACM Transactions on Database Systems"
+,volume="5"
+,number="3"
+,pages="354-382"
+}
+
+@techreport{Manber82
+,author="Udi Manber and Richard E. Ladner"
+,title="Concurrency Control in a Dynamic Search Structure"
+,institution="Department of Computer Science, University of Washington"
+,address="Seattle, Washington"
+,year="1982"
+,number="82-01-01"
+,month="January"
+,pages="28"
+}
+
+@article{Manber84
+,author="Udi Manber and Richard E. Ladner"
+,title="Concurrency Control in a Dynamic Search Structure"
+,Year="1984"
+,Month="September"
+,journal="ACM Transactions on Database Systems"
+,volume="9"
+,number="3"
+,pages="439-455"
+}
+
+@techreport{Hennessy89
+,author="James P. Hennessy and Damian L. Osisek and Joseph W. {Seigh II}"
+,title="Passive Serialization in a Multitasking Environment"
+,institution="US Patent and Trademark Office"
+,address="Washington, DC"
+,year="1989"
+,number="US Patent 4,809,168 (lapsed)"
+,month="February"
+,pages="11"
+}
+
+@techreport{Pugh90
+,author="William Pugh"
+,title="Concurrent Maintenance of Skip Lists"
+,institution="Institute of Advanced Computer Science Studies, Department of Computer Science, University of Maryland"
+,address="College Park, Maryland"
+,year="1990"
+,number="CS-TR-2222.1"
+,month="June"
+}
+
+@Book{Adams91
+,Author="Gregory R. Adams"
+,title="Concurrent Programming, Principles, and Practices"
+,Publisher="Benjamin Cummins"
+,Year="1991"
+}
+
+@unpublished{Jacobson93
+,author="Van Jacobson"
+,title="Avoid Read-Side Locking Via Delayed Free"
+,year="1993"
+,month="September"
+,note="Verbal discussion"
+}
+
+@Conference{AjuJohn95
+,Author="Aju John"
+,Title="Dynamic vnodes -- Design and Implementation"
+,Booktitle="{USENIX Winter 1995}"
+,Publisher="USENIX Association"
+,Month="January"
+,Year="1995"
+,pages="11-23"
+,Address="New Orleans, LA"
+}
+
+@techreport{Slingwine95
+,author="John D. Slingwine and Paul E. McKenney"
+,title="Apparatus and Method for Achieving Reduced Overhead Mutual
+Exclusion and Maintaining Coherency in a Multiprocessor System
+Utilizing Execution History and Thread Monitoring"
+,institution="US Patent and Trademark Office"
+,address="Washington, DC"
+,year="1995"
+,number="US Patent 5,442,758 (contributed under GPL)"
+,month="August"
+}
+
+@techreport{Slingwine97
+,author="John D. Slingwine and Paul E. McKenney"
+,title="Method for maintaining data coherency using thread
+activity summaries in a multicomputer system"
+,institution="US Patent and Trademark Office"
+,address="Washington, DC"
+,year="1997"
+,number="US Patent 5,608,893 (contributed under GPL)"
+,month="March"
+}
+
+@techreport{Slingwine98
+,author="John D. Slingwine and Paul E. McKenney"
+,title="Apparatus and method for achieving reduced overhead
+mutual exclusion and maintaining coherency in a multiprocessor
+system utilizing execution history and thread monitoring"
+,institution="US Patent and Trademark Office"
+,address="Washington, DC"
+,year="1998"
+,number="US Patent 5,727,209 (contributed under GPL)"
+,month="March"
+}
+
+@Conference{McKenney98
+,Author="Paul E. McKenney and John D. Slingwine"
+,Title="Read-Copy Update: Using Execution History to Solve Concurrency
+Problems"
+,Booktitle="{Parallel and Distributed Computing and Systems}"
+,Month="October"
+,Year="1998"
+,pages="509-518"
+,Address="Las Vegas, NV"
+}
+
+@Conference{Gamsa99
+,Author="Ben Gamsa and Orran Krieger and Jonathan Appavoo and Michael Stumm"
+,Title="Tornado: Maximizing Locality and Concurrency in a Shared Memory
+Multiprocessor Operating System"
+,Booktitle="{Proceedings of the 3\textsuperscript{rd} Symposium on
+Operating System Design and Implementation}"
+,Month="February"
+,Year="1999"
+,pages="87-100"
+,Address="New Orleans, LA"
+}
+
+@techreport{Slingwine01
+,author="John D. Slingwine and Paul E. McKenney"
+,title="Apparatus and method for achieving reduced overhead
+mutual exclusion and maintaining coherency in a multiprocessor
+system utilizing execution history and thread monitoring"
+,institution="US Patent and Trademark Office"
+,address="Washington, DC"
+,year="2001"
+,number="US Patent 5,219,690 (contributed under GPL)"
+,month="April"
+}
+
+@Conference{McKenney01a
+,Author="Paul E. McKenney and Jonathan Appavoo and Andi Kleen and
+Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni"
+,Title="Read-Copy Update"
+,Booktitle="{Ottawa Linux Symposium}"
+,Month="July"
+,Year="2001"
+,note="Available:
+\url{http://www.linuxsymposium.org/2001/abstracts/readcopy.php}
+\url{http://www.rdrop.com/users/paulmck/rclock/rclock_OLS.2001.05.01c.pdf}
+[Viewed June 23, 2004]"
+annotation="
+Described RCU, and presented some patches implementing and using it in
+the Linux kernel.
+"
+}
+
+@Conference{Linder02a
+,Author="Hanna Linder and Dipankar Sarma and Maneesh Soni"
+,Title="Scalability of the Directory Entry Cache"
+,Booktitle="{Ottawa Linux Symposium}"
+,Month="June"
+,Year="2002"
+,pages="289-300"
+}
+
+@Conference{McKenney02a
+,Author="Paul E. McKenney and Dipankar Sarma and
+Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell"
+,Title="Read-Copy Update"
+,Booktitle="{Ottawa Linux Symposium}"
+,Month="June"
+,Year="2002"
+,pages="338-367"
+,note="Available:
+\url{http://www.linux.org.uk/~ajh/ols2002_proceedings.pdf.gz}
+[Viewed June 23, 2004]"
+}
+
+@article{Appavoo03a
+,author="J. Appavoo and K. Hui and C. A. N. Soules and R. W. Wisniewski and
+D. M. {Da Silva} and O. Krieger and M. A. Auslander and D. J. Edelsohn and
+B. Gamsa and G. R. Ganger and P. McKenney and M. Ostrowski and
+B. Rosenburg and M. Stumm and J. Xenidis"
+,title="Enabling Autonomic Behavior in Systems Software With Hot Swapping"
+,Year="2003"
+,Month="January"
+,journal="IBM Systems Journal"
+,volume="42"
+,number="1"
+,pages="60-76"
+}
+
+@Conference{Arcangeli03
+,Author="Andrea Arcangeli and Mingming Cao and Paul E. McKenney and
+Dipankar Sarma"
+,Title="Using Read-Copy Update Techniques for {System V IPC} in the
+{Linux} 2.5 Kernel"
+,Booktitle="Proceedings of the 2003 USENIX Annual Technical Conference
+(FREENIX Track)"
+,Publisher="USENIX Association"
+,year="2003"
+,month="June"
+,pages="297-310"
+}
+
+@article{McKenney03a
+,author="Paul E. McKenney"
+,title="Using {RCU} in the {Linux} 2.5 Kernel"
+,Year="2003"
+,Month="October"
+,journal="Linux Journal"
+,volume="1"
+,number="114"
+,pages="18-26"
+}
+
+@techreport{Friedberg03a
+,author="Stuart A. Friedberg"
+,title="Lock-Free Wild Card Search Data Structure and Method"
+,institution="US Patent and Trademark Office"
+,address="Washington, DC"
+,year="2003"
+,number="US Patent 6,662,184 (contributed under GPL)"
+,month="December"
+,pages="112"
+}
+
+@article{McKenney04a
+,author="Paul E. McKenney and Dipankar Sarma and Maneesh Soni"
+,title="Scaling dcache with {RCU}"
+,Year="2004"
+,Month="January"
+,journal="Linux Journal"
+,volume="1"
+,number="118"
+,pages="38-46"
+}
+
+@Conference{McKenney04b
+,Author="Paul E. McKenney"
+,Title="{RCU} vs. Locking Performance on Different {CPUs}"
+,Booktitle="{linux.conf.au}"
+,Month="January"
+,Year="2004"
+,Address="Adelaide, Australia"
+,note="Available:
+\url{http://www.linux.org.au/conf/2004/abstracts.html#90}
+\url{http://www.rdrop.com/users/paulmck/rclock/lockperf.2004.01.17a.pdf}
+[Viewed June 23, 2004]"
+}
+
+@phdthesis{PaulEdwardMcKenneyPhD
+,author="Paul E. McKenney"
+,title="Exploiting Deferred Destruction:
+An Analysis of Read-Copy-Update Techniques
+in Operating System Kernels"
+,school="OGI School of Science and Engineering at
+Oregon Health and Sciences University"
+,year="2004"
+,note="Available:
+\url{http://www.rdrop.com/users/paulmck/RCU/RCUdissertation.2004.07.14e1.pdf}
+[Viewed October 15, 2004]"
+}
+
+@Conference{Sarma04c
+,Author="Dipankar Sarma and Paul E. McKenney"
+,Title="Making RCU Safe for Deep Sub-Millisecond Response Realtime Applications"
+,Booktitle="Proceedings of the 2004 USENIX Annual Technical Conference
+(FREENIX Track)"
+,Publisher="USENIX Association"
+,year="2004"
+,month="June"
+,pages="182-191"
+}
+
+@unpublished{JamesMorris04b
+,Author="James Morris"
+,Title="Recent Developments in {SELinux} Kernel Performance"
+,month="December"
+,year="2004"
+,note="Available:
+\url{http://www.livejournal.com/users/james_morris/2153.html}
+[Viewed December 10, 2004]"
+}
diff -urN malta/linux/Documentation/RCU/UP.txt malta/linux/Documentation/RCU/UP.txt
--- malta/linux/Documentation/RCU/UP.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/RCU/UP.txt	2005-06-21 14:20:34.098255000 +0100	1.3.1000.1
@@ -0,0 +1,64 @@
+RCU on Uniprocessor Systems
+
+
+A common misconception is that, on UP systems, the call_rcu() primitive
+may immediately invoke its function, and that the synchronize_rcu()
+primitive may return immediately.  The basis of this misconception
+is that since there is only one CPU, it should not be necessary to
+wait for anything else to get done, since there are no other CPUs for
+anything else to be happening on.  Although this approach will -sort- -of-
+work a surprising amount of the time, it is a very bad idea in general.
+This document presents two examples that demonstrate exactly how bad an
+idea this is.
+
+
+Example 1: softirq Suicide
+
+Suppose that an RCU-based algorithm scans a linked list containing
+elements A, B, and C in process context, and can delete elements from
+this same list in softirq context.  Suppose that the process-context scan
+is referencing element B when it is interrupted by softirq processing,
+which deletes element B, and then invokes call_rcu() to free element B
+after a grace period.
+
+Now, if call_rcu() were to directly invoke its arguments, then upon return
+from softirq, the list scan would find itself referencing a newly freed
+element B.  This situation can greatly decrease the life expectancy of
+your kernel.
+
+
+Example 2: Function-Call Fatality
+
+Of course, one could avert the suicide described in the preceding example
+by having call_rcu() directly invoke its arguments only if it was called
+from process context.  However, this can fail in a similar manner.
+
+Suppose that an RCU-based algorithm again scans a linked list containing
+elements A, B, and C in process contexts, but that it invokes a function
+on each element as it is scanned.  Suppose further that this function
+deletes element B from the list, then passes it to call_rcu() for deferred
+freeing.  This may be a bit unconventional, but it is perfectly legal
+RCU usage, since call_rcu() must wait for a grace period to elapse.
+Therefore, in this case, allowing call_rcu() to immediately invoke
+its arguments would cause it to fail to make the fundamental guarantee
+underlying RCU, namely that call_rcu() defers invoking its arguments until
+all RCU read-side critical sections currently executing have completed.
+
+Quick Quiz: why is it -not- legal to invoke synchronize_rcu() in
+this case?
+
+
+Summary
+
+Permitting call_rcu() to immediately invoke its arguments or permitting
+synchronize_rcu() to immediately return breaks RCU, even on a UP system.
+So do not do it!  Even on a UP system, the RCU infrastructure -must-
+respect grace periods.
+
+
+Answer to Quick Quiz
+
+The calling function is scanning an RCU-protected linked list, and
+is therefore within an RCU read-side critical section.  Therefore,
+the called function has been invoked within an RCU read-side critical
+section, and is not permitted to block.
diff -urN malta/linux/Documentation/RCU/arrayRCU.txt malta/linux/Documentation/RCU/arrayRCU.txt
--- malta/linux/Documentation/RCU/arrayRCU.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/RCU/arrayRCU.txt	2005-06-21 14:20:34.355730000 +0100	1.1.1000.1
@@ -0,0 +1,141 @@
+Using RCU to Protect Read-Mostly Arrays
+
+
+Although RCU is more commonly used to protect linked lists, it can
+also be used to protect arrays.  Three situations are as follows:
+
+1.  Hash Tables
+
+2.  Static Arrays
+
+3.  Resizeable Arrays
+
+Each of these situations are discussed below.
+
+
+Situation 1: Hash Tables
+
+Hash tables are often implemented as an array, where each array entry
+has a linked-list hash chain.  Each hash chain can be protected by RCU
+as described in the listRCU.txt document.  This approach also applies
+to other array-of-list situations, such as radix trees.
+
+
+Situation 2: Static Arrays
+
+Static arrays, where the data (rather than a pointer to the data) is
+located in each array element, and where the array is never resized,
+have not been used with RCU.  Rik van Riel recommends using seqlock in
+this situation, which would also have minimal read-side overhead as long
+as updates are rare.
+
+Quick Quiz:  Why is it so important that updates be rare when
+	     using seqlock?
+
+
+Situation 3: Resizeable Arrays
+
+Use of RCU for resizeable arrays is demonstrated by the grow_ary()
+function used by the System V IPC code.  The array is used to map from
+semaphore, message-queue, and shared-memory IDs to the data structure
+that represents the corresponding IPC construct.  The grow_ary()
+function does not acquire any locks; instead its caller must hold the
+ids->sem semaphore.
+
+The grow_ary() function, shown below, does some limit checks, allocates a
+new ipc_id_ary, copies the old to the new portion of the new, initializes
+the remainder of the new, updates the ids->entries pointer to point to
+the new array, and invokes ipc_rcu_putref() to free up the old array.
+Note that rcu_assign_pointer() is used to update the ids->entries pointer,
+which includes any memory barriers required on whatever architecture
+you are running on.
+
+	static int grow_ary(struct ipc_ids* ids, int newsize)
+	{
+		struct ipc_id_ary* new;
+		struct ipc_id_ary* old;
+		int i;
+		int size = ids->entries->size;
+
+		if(newsize > IPCMNI)
+			newsize = IPCMNI;
+		if(newsize <= size)
+			return newsize;
+
+		new = ipc_rcu_alloc(sizeof(struct kern_ipc_perm *)*newsize +
+				    sizeof(struct ipc_id_ary));
+		if(new == NULL)
+			return size;
+		new->size = newsize;
+		memcpy(new->p, ids->entries->p,
+		       sizeof(struct kern_ipc_perm *)*size +
+		       sizeof(struct ipc_id_ary));
+		for(i=size;i<newsize;i++) {
+			new->p[i] = NULL;
+		}
+		old = ids->entries;
+
+		/*
+		 * Use rcu_assign_pointer() to make sure the memcpyed
+		 * contents of the new array are visible before the new
+		 * array becomes visible.
+		 */
+		rcu_assign_pointer(ids->entries, new);
+
+		ipc_rcu_putref(old);
+		return newsize;
+	}
+
+The ipc_rcu_putref() function decrements the array's reference count
+and then, if the reference count has dropped to zero, uses call_rcu()
+to free the array after a grace period has elapsed.
+
+The array is traversed by the ipc_lock() function.  This function
+indexes into the array under the protection of rcu_read_lock(),
+using rcu_dereference() to pick up the pointer to the array so
+that it may later safely be dereferenced -- memory barriers are
+required on the Alpha CPU.  Since the size of the array is stored
+with the array itself, there can be no array-size mismatches, so
+a simple check suffices.  The pointer to the structure corresponding
+to the desired IPC object is placed in "out", with NULL indicating
+a non-existent entry.  After acquiring "out->lock", the "out->deleted"
+flag indicates whether the IPC object is in the process of being
+deleted, and, if not, the pointer is returned.
+
+	struct kern_ipc_perm* ipc_lock(struct ipc_ids* ids, int id)
+	{
+		struct kern_ipc_perm* out;
+		int lid = id % SEQ_MULTIPLIER;
+		struct ipc_id_ary* entries;
+
+		rcu_read_lock();
+		entries = rcu_dereference(ids->entries);
+		if(lid >= entries->size) {
+			rcu_read_unlock();
+			return NULL;
+		}
+		out = entries->p[lid];
+		if(out == NULL) {
+			rcu_read_unlock();
+			return NULL;
+		}
+		spin_lock(&out->lock);
+
+		/* ipc_rmid() may have already freed the ID while ipc_lock
+		 * was spinning: here verify that the structure is still valid
+		 */
+		if (out->deleted) {
+			spin_unlock(&out->lock);
+			rcu_read_unlock();
+			return NULL;
+		}
+		return out;
+	}
+
+
+Answer to Quick Quiz:
+
+	The reason that it is important that updates be rare when
+	using seqlock is that frequent updates can livelock readers.
+	One way to avoid this problem is to assign a seqlock for
+	each array entry rather than to the entire array.
diff -urN malta/linux/Documentation/RCU/checklist.txt malta/linux/Documentation/RCU/checklist.txt
--- malta/linux/Documentation/RCU/checklist.txt	1970/01/01 00:00:00
+++ malta/linux/Documentation/RCU/checklist.txt	2005-06-21 14:20:34.372713000 +0100	1.2.1000.1
@@ -0,0 +1,178 @@
+Review Checklist for RCU Patches
+
+
+This document contains a checklist for producing and reviewing patches
+that make use of RCU.  Violating any of the rules listed below will
+result in the same sorts of problems that leaving out a locking primitive
+would cause.  This list is based on experiences reviewing such patches
+over a rather long period of time, but improvements are always welcome!
+
+0.	Is RCU being applied to a read-mostly situation?  If the data
+	structure is updated more than about 10% of the time, then
+	you should strongly consider some other approach, unless
+	detailed performance measurements show that RCU is nonetheless
+	the right tool for the job.
+
+	The other exception would be where performance is not an issue,
+	and RCU provides a simpler implementation.  An example of this
+	situation is the dynamic NMI code in the Linux 2.6 kernel,
+	at least on architectures where NMIs are rare.
+
+1.	Does the update code have proper mutual exclusion?
+
+	RCU does allow -readers- to run (almost) naked, but -writers- must
+	still use some sort of mutual exclusion, such as:
+
+	a.	locking,
+	b.	atomic operations, or
+	c.	restricting updates to a single task.
+
+	If you choose #b, be prepared to describe how you have handled
+	memory barriers on weakly ordered machines (pretty much all of
+	them -- even x86 allows reads to be reordered), and be prepared
+	to explain why this added complexity is worthwhile.  If you
+	choose #c, be prepared to explain how this single task does not
+	become a major bottleneck on big multiprocessor machines (for
+	example, if the task is updating information relating to itself
+	that other tasks can read, there by definition can be no
+	bottleneck).
+
+2.	Do the RCU read-side critical sections make proper use of
+	rcu_read_lock() and friends?  These primitives are needed
+	to suppress preemption (or bottom halves, in the case of
+	rcu_read_lock_bh()) in the read-side critical sections,
+	and are also an excellent aid to readability.
+
+3.	Does the update code tolerate concurrent accesses?
+
+	The whole point of RCU is to permit readers to run without
+	any locks or atomic operations.  This means that readers will
+	be running while updates are in progress.  There are a number
+	of ways to handle this concurrency, depending on the situation:
+
+	a.	Make updates appear atomic to readers.  For example,
+		pointer updates to properly aligned fields will appear
+		atomic, as will individual atomic primitives.  Operations
+		performed under a lock and sequences of multiple atomic
+		primitives will -not- appear to be atomic.
+
+		This is almost always the best approach.
+
+	b.	Carefully order the updates and the reads so that
+		readers see valid data at all phases of the update.
+		This is often more difficult than it sounds, especially
+		given modern CPUs' tendency to reorder memory references.
+		One must usually liberally sprinkle memory barriers
+		(smp_wmb(), smp_rmb(), smp_mb()) through the code,
+		making it difficult to understand and to test.
+
+		It is usually better to group the changing data into
+		a separate structure, so that the change may be made
+		to appear atomic by updating a pointer to reference
+		a new structure containing updated values.
+
+4.	Weakly ordered CPUs pose special challenges.  Almost all CPUs
+	are weakly ordered -- even i386 CPUs allow reads to be reordered.
+	RCU code must take all of the following measures to prevent
+	memory-corruption problems:
+
+	a.	Readers must maintain proper ordering of their memory
+		accesses.  The rcu_dereference() primitive ensures that
+		the CPU picks up the pointer before it picks up the data
+		that the pointer points to.  This really is necessary
+		on Alpha CPUs.	If you don't believe me, see:
+
+			http://www.openvms.compaq.com/wizard/wiz_2637.html
+
+		The rcu_dereference() primitive is also an excellent
+		documentation aid, letting the person reading the code
+		know exactly which pointers are protected by RCU.
+
+		The rcu_dereference() primitive is used by the various
+		"_rcu()" list-traversal primitives, such as the
+		list_for_each_entry_rcu().
+
+	b.	If the list macros are being used, the list_add_tail_rcu()
+		and list_add_rcu() primitives must be used in order
+		to prevent weakly ordered machines from misordering
+		structure initialization and pointer planting.
+		Similarly, if the hlist macros are being used, the
+		hlist_add_head_rcu() primitive is required.
+
+	c.	If the list macros are being used, the list_del_rcu()
+		primitive must be used to keep list_del()'s pointer
+		poisoning from inflicting toxic effects on concurrent
+		readers.  Similarly, if the hlist macros are being used,
+		the hlist_del_rcu() primitive is required.
+
+		The list_replace_rcu() primitive may be used to
+		replace an old structure with a new one in an
+		RCU-protected list.
+
+	d.	Updates must ensure that initialization of a given
+		structure happens before pointers to that structure are
+		publicized.  Use the rcu_assign_pointer() primitive
+		when publicizing a pointer to a structure that can
+		be traversed by an RCU read-side critical section.
+
+5.	If call_rcu(), or a related primitive such as call_rcu_bh(),
+	is used, the callback function must be written to be called
+	from softirq context.  In particular, it cannot block.
+
+6.	Since synchronize_rcu() can block, it cannot be called from
+	any sort of irq context.
+
+7.	If the updater uses call_rcu(), then the corresponding readers
+	must use rcu_read_lock() and rcu_read_unlock().  If the updater
+	uses call_rcu_bh(), then the corresponding readers must use
+	rcu_read_lock_bh() and rcu_read_unlock_bh().  Mixing things up
+	will result in confusion and broken kernels.
+
+	One exception to this rule: rcu_read_lock() and rcu_read_unlock()
+	may be substituted for rcu_read_lock_bh() and rcu_rea