## Automatically generated incremental diff
## From:   linux-2.4.14-pre7
## To:     linux-2.4.14-pre8
## Robot:  $Id: make-incremental-diff,v 1.8 2001/12/04 06:05:04 hpa Exp $

diff -urN linux-2.4.14-pre7/Documentation/Configure.help linux/Documentation/Configure.help
--- linux-2.4.14-pre7/Documentation/Configure.help	Mon Dec  3 23:25:52 2001
+++ linux/Documentation/Configure.help	Mon Dec  3 23:26:02 2001
@@ -11234,7 +11234,7 @@
   mice, joysticks, graphic tablets, or any other HID based devices
   to your computer via USB. You can't use this driver and the
   HIDBP (Boot Protocol) keyboard and mouse drivers at the same time.
-  More information is available: Documentation/usb/input.txt.
+  More information is available: Documentation/input/input.txt.
 
   If unsure, say Y.
 
@@ -15040,6 +15040,25 @@
   http://www.buzzard.org.uk/toshiba/
 
   Say Y if you intend to run this kernel on a Toshiba portable.
+  Say N otherwise.
+
+Dell Inspiron 8000 support
+CONFIG_I8K
+  This adds a driver to safely access the System Management Mode
+  of the CPU on the Dell Inspiron 8000. The System Management Mode
+  is used to read cpu temperature and cooling fan status and to
+  control the fans on the I8K portables.
+
+  This driver has been tested only on the Inspiron 8000 but it may
+  also work with other Dell laptops. You can force loading on other
+  models by passing the parameter `force=1' to the module. Use at
+  your own risk.
+
+  For information on utilities to make use of this driver see the
+  I8K Linux utilities web site at:
+  http://www.debian.org/~dz/i8k/
+
+  Say Y if you intend to run this kernel on a Dell Inspiron 8000.
   Say N otherwise.
 
 /dev/cpu/microcode - Intel IA32 CPU microcode support
diff -urN linux-2.4.14-pre7/Documentation/DocBook/Makefile linux/Documentation/DocBook/Makefile
--- linux-2.4.14-pre7/Documentation/DocBook/Makefile	Mon Dec  3 23:25:52 2001
+++ linux/Documentation/DocBook/Makefile	Mon Dec  3 23:26:02 2001
@@ -144,7 +144,7 @@
 	rm -f core *~
 	rm -f $(BOOKS)
 	rm -f $(DVI) $(AUX) $(TEX) $(LOG) $(OUT)
-	rm -f $(JPG-parportbook) $(EPS-parportbook)
+	rm -f $(PNG-parportbook) $(EPS-parportbook)
 	rm -f $(C-procfs-example)
 
 mrproper: clean
@@ -172,7 +172,7 @@
 	  exit 1)
 	rm -rf $@
 	db2html $<
-	if [ ! -z "$(JPG-$@)" ]; then cp $(JPG-$@) $@; fi
+	if [ ! -z "$(PNG-$@)" ]; then cp $(PNG-$@) $@; fi
 
 #
 # we could have our own dependency generator
diff -urN linux-2.4.14-pre7/Documentation/computone.txt linux/Documentation/computone.txt
--- linux-2.4.14-pre7/Documentation/computone.txt	Mon Dec  3 23:25:52 2001
+++ linux/Documentation/computone.txt	Mon Dec  3 23:26:02 2001
@@ -6,11 +6,10 @@
 These notes are for the drivers which have already been integrated into the
 kernel and have been tested on Linux kernels 2.0, 2.2, 2.3, and 2.4.
 
-Version: 1.2.12
-Date: 10/24/2001
+Version: 1.2.14
+Date: 11/01/2001
 Historical Author: Andrew Manison <amanison@america.net>
-Primary Author: Doug McNash <dougm@computone.com>
-Testing: larryg@computone.com
+Primary Author: Doug McNash
 Support: support@computone.com
 Fixes and Updates: Mike Warfield <mhw@wittsend.com>
 
@@ -27,7 +26,7 @@
 products previous to the Intelliport II.
 
 This driver was developed on the v2.0.x Linux tree and has been tested up
-to v2.2.14; it will probably not work with earlier v1.X kernels,.
+to v2.4.14; it will probably not work with earlier v1.X kernels,.
 
 
 2. QUICK INSTALLATION
@@ -193,18 +192,26 @@
 cuf0 - cuf255 for callout devices.
 
 If you are using devfs, existing devices are automatically created within
-the devfs name space.  Normal devices will be ttf/0 - ttf/255 and callout
-devices will be cuf/0 - cuf/255.  With devfs installed, ip2mkdev will
+the devfs name space.  Normal devices will be tts/F0 - tts/F255 and callout
+devices will be cua/F0 - cua/F255.  With devfs installed, ip2mkdev will
 create symbolic links in /dev from the old conventional names to the newer
 devfs names as follows:
 
 	/dev/ip2ipl[n]	-> /dev/ip2/ipl[n]	n = 0 - 3
 	/dev/ip2stat[n]	-> /dev/ip2/stat[n]	n = 0 - 3
-	/dev/ttyF[n]	-> /dev/ttf/[n]		n = 0 - 255
-	/dev/cuf[n]	-> /dev/cuf/[n]		n = 0 - 255
+	/dev/ttyF[n]	-> /dev/tts/F[n]	n = 0 - 255
+	/dev/cuf[n]	-> /dev/cua/F[n]	n = 0 - 255
 
 Only devices for existing ports and boards will be created.
 
+IMPORTANT NOTE:  The naming convention used for devfs by this driver
+was changed from 1.2.12 to 1.2.13.  The old naming convention was to
+use ttf/%d for the tty device and cuf/%d for the cua device.  That
+has been changed to conform to an agreed-upon standard of placing
+all the tty devices under tts.  The device names are now tts/F%d for
+the tty device and cua/F%d for the cua devices.  If you were using
+the older devfs names, you must update for the newer convention.
+
 You do not need to run ip2mkdev if you are using devfs and only want to
 use the devfs native device names.
 
@@ -260,18 +267,26 @@
 documentation files, .../linux/Documentation/filesystems/devfs/REAME.
 
 If you are using devfs, existing devices are automatically created within
-the devfs name space.  Normal devices will be ttf/0 - ttf/255 and callout
-devices will be cuf/0 - cuf/255.  With devfs installed, ip2mkdev will
+the devfs name space.  Normal devices will be tts/F0 - tts/F255 and callout
+devices will be cua/F0 - cua/F255.  With devfs installed, ip2mkdev will
 create symbolic links in /dev from the old conventional names to the newer
 devfs names as follows:
 
 	/dev/ip2ipl[n]	-> /dev/ip2/ipl[n]	n = 0 - 3
 	/dev/ip2stat[n]	-> /dev/ip2/stat[n]	n = 0 - 3
-	/dev/ttyF[n]	-> /dev/ttf/[n]		n = 0 - 255
-	/dev/cuf[n]	-> /dev/cuf/[n]		n = 0 - 255
+	/dev/ttyF[n]	-> /dev/tts/F[n]	n = 0 - 255
+	/dev/cuf[n]	-> /dev/cua/F[n]	n = 0 - 255
 
 Only devices for existing ports and boards will be created.
 
+IMPORTANT NOTE:  The naming convention used for devfs by this driver
+was changed from 1.2.12 to 1.2.13.  The old naming convention was to
+use ttf/%d for the tty device and cuf/%d for the cua device.  That
+has been changed to conform to an agreed-upon standard of placing
+all the tty devices under tts.  The device names are now tts/F%d for
+the tty device and cua/F%d for the cua devices.  If you were using
+the older devfs names, you must update for the newer convention.
+
 You do not need to run ip2mkdev if you are using devfs and only want to
 use the devfs native device names.
  
@@ -300,19 +315,19 @@
 
 
 #!/bin/sh
-# This is a shell archive (produced by GNU sharutils 4.2).
+# This is a shell archive (produced by GNU sharutils 4.2.1).
 # To extract the files from this archive, save it to some FILE, remove
 # everything before the `!/bin/sh' line above, then type `sh FILE'.
 #
-# Made on 2000-03-10 11:55 EST by <root@wittsend.wittsend.com>.
-# Source directory was `/mnt1/src/linux-2.3.50c/Documentation'.
+# Made on 2001-10-29 10:32 EST by <mhw@alcove.wittsend.com>.
+# Source directory was `/home2/src/tmp'.
 #
 # Existing files will *not* be overwritten unless `-c' is specified.
 #
 # This shar contains:
 # length mode       name
 # ------ ---------- ------------------------------------------
-#   4061 -rwxr-xr-x ip2mkdev
+#   4251 -rwxr-xr-x ip2mkdev
 #
 save_IFS="${IFS}"
 IFS="${IFS}:"
@@ -347,9 +362,12 @@
   export TEXTDOMAIN
   echo="$gettext_dir/gettext -s"
 fi
-touch -am 1231235999 $$.touch >/dev/null 2>&1
-if test ! -f 1231235999 && test -f $$.touch; then
-  shar_touch=touch
+if touch -am -t 200112312359.59 $$.touch >/dev/null 2>&1 && test ! -f 200112312359.59 -a -f $$.touch; then
+  shar_touch='touch -am -t $1$2$3$4$5$6.$7 "$8"'
+elif touch -am 123123592001.59 $$.touch >/dev/null 2>&1 && test ! -f 123123592001.59 -a ! -f 123123592001.5 -a -f $$.touch; then
+  shar_touch='touch -am $3$4$5$6$1$2.$7 "$8"'
+elif touch -am 1231235901 $$.touch >/dev/null 2>&1 && test ! -f 1231235901 -a -f $$.touch; then
+  shar_touch='touch -am $3$4$5$6$2 "$8"'
 else
   shar_touch=:
   echo
@@ -357,9 +375,9 @@
   $echo "installing GNU \`touch', distributed in GNU File Utilities..."
   echo
 fi
-rm -f 1231235999 $$.touch
+rm -f 200112312359.59 123123592001.59 123123592001.5 1231235901 $$.touch
 #
-if mkdir _sh17088; then
+if mkdir _sh17581; then
   $echo 'x -' 'creating lock directory'
 else
   $echo 'failed to create lock directory'
@@ -387,11 +405,14 @@
 #	before running this script.  Running this script will then recreate
 #	all the valid devices.
 #
-#	=mhw=
 #	Michael H. Warfield
+#	/\/\|=mhw=|\/\/
 #	mhw@wittsend.com
 #
-#	Updated 03/09/2000 for devfs support in ip2 drivers. =mhw=
+#	Updated 10/29/2000 for version 1.2.13 naming convention
+#		under devfs.	/\/\|=mhw=|\/\/
+#
+#	Updated 03/09/2000 for devfs support in ip2 drivers. /\/\|=mhw=|\/\/
 #
 X
 if test -d /dev/ip2 ; then
@@ -406,18 +427,19 @@
 X			ln -s ip2/$i ip2$i
 X		fi
 X	done
-X	for i in `ls ttf` ; do
-X		if test ! -L ttyF$i ; then
+X	for i in `( cd tts ; ls F* )` ; do
+X		if test ! -L tty$i ; then
 X			# Remove it incase it wasn't a symlink (old device)
-X			rm -f ttyF$i
-X			ln -s ttyf/$i ttyF$i
+X			rm -f tty$i
+X			ln -s tts/$i tty$i
 X		fi
 X	done
-X	for i in `ls cuf` ; do
-X		if test ! -L cuf$i ; then
+X	for i in `( cd cua ; ls F* )` ; do
+X		DEVNUMBER=`expr $i : 'F\(.*\)'`
+X		if test ! -L cuf$DEVNUMBER ; then
 X			# Remove it incase it wasn't a symlink (old device)
-X			rm -f cuf$i
-X			ln -s cuf/$i cuf$i
+X			rm -f cuf$DEVNUMBER
+X			ln -s cua/$i cuf$DEVNUMBER
 X		fi
 X	done
 X	exit 0
@@ -539,20 +561,20 @@
 X
 Xexit 0
 SHAR_EOF
-  $shar_touch -am 03101153100 'ip2mkdev' &&
+  (set 20 01 10 29 10 32 01 'ip2mkdev'; eval "$shar_touch") &&
   chmod 0755 'ip2mkdev' ||
   $echo 'restore of' 'ip2mkdev' 'failed'
   if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
   && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
     md5sum -c << SHAR_EOF >/dev/null 2>&1 \
     || $echo 'ip2mkdev:' 'MD5 check failed'
-b0671abeba07b0a9266b70aaf24509b3  ip2mkdev
+cb5717134509f38bad9fde6b1f79b4a4  ip2mkdev
 SHAR_EOF
   else
     shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'ip2mkdev'`"
-    test 4061 -eq "$shar_count" ||
-    $echo 'ip2mkdev:' 'original size' '4061,' 'current size' "$shar_count!"
+    test 4251 -eq "$shar_count" ||
+    $echo 'ip2mkdev:' 'original size' '4251,' 'current size' "$shar_count!"
   fi
 fi
-rm -fr _sh17088
+rm -fr _sh17581
 exit 0
diff -urN linux-2.4.14-pre7/Documentation/filesystems/devfs/ChangeLog linux/Documentation/filesystems/devfs/ChangeLog
--- linux-2.4.14-pre7/Documentation/filesystems/devfs/ChangeLog	Wed Oct 10 23:23:24 2001
+++ linux/Documentation/filesystems/devfs/ChangeLog	Mon Dec  3 23:26:02 2001
@@ -1771,3 +1771,10 @@
 - Fixed buffer underrun in <try_modload>
 
 - Moved down_read() from <search_for_entry_in_dir> to <find_entry>
+===============================================================================
+Changes for patch v196
+
+- Fixed race in <devfsd_ioctl> when setting event mask
+  Thanks to Kari Hurtta <hurtta@leija.mh.fmi.fi>
+
+- Avoid deadlock in <devfs_follow_link> by using temporary buffer
diff -urN linux-2.4.14-pre7/Makefile linux/Makefile
--- linux-2.4.14-pre7/Makefile	Mon Dec  3 23:25:52 2001
+++ linux/Makefile	Mon Dec  3 23:26:02 2001
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 14
-EXTRAVERSION =-pre7
+EXTRAVERSION =-pre8
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
diff -urN linux-2.4.14-pre7/arch/alpha/kernel/osf_sys.c linux/arch/alpha/kernel/osf_sys.c
--- linux-2.4.14-pre7/arch/alpha/kernel/osf_sys.c	Mon Dec  3 23:25:52 2001
+++ linux/arch/alpha/kernel/osf_sys.c	Mon Dec  3 23:26:02 2001
@@ -1357,14 +1357,19 @@
 	if (len > limit)
 		return -ENOMEM;
 
-	/* First, see if the given suggestion fits.  */
-	if (addr) {
-		struct vm_area_struct *vma;
+	/* First, see if the given suggestion fits.
+
+	   The OSF/1 loader (/sbin/loader) relies on us returning an
+	   address larger than the requested if one exists, which is
+	   a terribly broken way to program.
 
-		addr = PAGE_ALIGN(addr);
-		vma = find_vma(current->mm, addr);
-		if (limit - len >= addr &&
-		    (!vma || addr + len <= vma->vm_start))
+	   That said, I can see the use in being able to suggest not
+	   merely specific addresses, but regions of memory -- perhaps
+	   this feature should be incorporated into all ports?  */
+
+	if (addr) {
+		addr = arch_get_unmapped_area_1 (PAGE_ALIGN(addr), len, limit);
+		if (addr != -ENOMEM)
 			return addr;
 	}
 
diff -urN linux-2.4.14-pre7/arch/alpha/kernel/pci.c linux/arch/alpha/kernel/pci.c
--- linux-2.4.14-pre7/arch/alpha/kernel/pci.c	Sun Oct 21 10:30:58 2001
+++ linux/arch/alpha/kernel/pci.c	Mon Dec  3 23:26:02 2001
@@ -93,16 +93,18 @@
 
 	/* The Cypress bridge responds on the PCI bus in the address range
 	   0xffff0000-0xffffffff (conventional x86 BIOS ROM).  There is no
-	   way to turn this off, so if we use a large direct-map window, or
-	   a large SG window, we must avoid this region.  */
+	   way to turn this off.  The bridge also supports several extended
+	   BIOS ranges (disabled after power-up), and some consoles do turn
+	   them on.  So if we use a large direct-map window, or a large SG
+	   window, we must avoid entire 0xfff00000-0xffffffff region.  */
 	else if (dev->class >> 8 == PCI_CLASS_BRIDGE_ISA) {
-		if (__direct_map_base + __direct_map_size >= 0xffff0000)
-			__direct_map_size = 0xffff0000 - __direct_map_base;
+		if (__direct_map_base + __direct_map_size >= 0xfff00000)
+			__direct_map_size = 0xfff00000 - __direct_map_base;
 		else {
 			struct pci_controller *hose = dev->sysdata;
 			struct pci_iommu_arena *pci = hose->sg_pci;
-			if (pci && pci->dma_base + pci->size >= 0xffff0000)
-				pci->size = 0xffff0000 - pci->dma_base;
+			if (pci && pci->dma_base + pci->size >= 0xfff00000)
+				pci->size = 0xfff00000 - pci->dma_base;
 		}
 	}
 }
diff -urN linux-2.4.14-pre7/arch/alpha/kernel/setup.c linux/arch/alpha/kernel/setup.c
--- linux-2.4.14-pre7/arch/alpha/kernel/setup.c	Thu Oct  4 18:47:08 2001
+++ linux/arch/alpha/kernel/setup.c	Mon Dec  3 23:26:02 2001
@@ -1054,7 +1054,8 @@
 
 	static char cpu_names[][8] = {
 		"EV3", "EV4", "Simulate", "LCA4", "EV5", "EV45", "EV56",
-		"EV6", "PCA56", "PCA57", "EV67", "EV68CB", "EV68AL"
+		"EV6", "PCA56", "PCA57", "EV67", "EV68CB", "EV68AL",
+		"EV68CX", "EV7", "EV79", "EV69"
 	};
 
 	struct percpu_struct *cpu;
diff -urN linux-2.4.14-pre7/arch/alpha/kernel/time.c linux/arch/alpha/kernel/time.c
--- linux-2.4.14-pre7/arch/alpha/kernel/time.c	Thu Oct  4 18:47:08 2001
+++ linux/arch/alpha/kernel/time.c	Mon Dec  3 23:26:02 2001
@@ -169,6 +169,63 @@
 	init_rtc_irq();
 }
 
+
+/* Validate a computed cycle counter result against the known bounds for
+   the given processor core.  There's too much brokenness in the way of
+   timing hardware for any one method to work everywhere.  :-(
+
+   Return 0 if the result cannot be trusted, otherwise return the argument.  */
+
+static unsigned long __init
+validate_cc_value(unsigned long cc)
+{
+	static struct bounds {
+		unsigned int min, max;
+	} cpu_hz[] __initdata = {
+		[EV3_CPU]    = {   50000000,  200000000 },	/* guess */
+		[EV4_CPU]    = {  150000000,  300000000 },
+		[LCA4_CPU]   = {  150000000,  300000000 },	/* guess */
+		[EV45_CPU]   = {  200000000,  300000000 },
+		[EV5_CPU]    = {  266000000,  333333333 },
+		[EV56_CPU]   = {  366000000,  667000000 },
+		[PCA56_CPU]  = {  400000000,  600000000 },	/* guess */
+		[PCA57_CPU]  = {  500000000,  600000000 },	/* guess */
+		[EV6_CPU]    = {  466000000,  600000000 },
+		[EV67_CPU]   = {  600000000,  750000000 },
+		[EV68AL_CPU] = {  750000000,  940000000 },
+		[EV68CB_CPU] = { 1000000000, 1333333333 },
+		/* None of the following are shipping as of 2001-11-01.  */
+		[EV68CX_CPU] = { 1000000000, 1700000000 },	/* guess */
+		[EV69_CPU]   = { 1000000000, 1700000000 },	/* guess */
+		[EV7_CPU]    = {  800000000, 1400000000 },	/* guess */
+		[EV79_CPU]   = { 1000000000, 2000000000 },	/* guess */
+	};
+
+	/* Allow for some drift in the crystal.  10MHz is more than enough.  */
+	const unsigned int deviation = 10000000;
+
+	struct percpu_struct *cpu;
+	unsigned int index;
+
+	cpu = (struct percpu_struct *)((char*)hwrpb + hwrpb->processor_offset);
+	index = cpu->type & 0xffffffff;
+
+	/* If index out of bounds, no way to validate.  */
+	if (index >= sizeof(cpu_hz)/sizeof(cpu_hz[0]))
+		return cc;
+
+	/* If index contains no data, no way to validate.  */
+	if (cpu_hz[index].max == 0)
+		return cc;
+
+	if (cc < cpu_hz[index].min - deviation
+	    || cc > cpu_hz[index].max + deviation)
+		return 0;
+
+	return cc;
+}
+
+
 /*
  * Calibrate CPU clock using legacy 8254 timer/counter. Stolen from
  * arch/i386/time.c.
@@ -180,8 +237,7 @@
 static unsigned long __init
 calibrate_cc_with_pic(void)
 {
-	int cc;
-	unsigned long count = 0;
+	int cc, count = 0;
 
 	/* Set the Gate high, disable speaker */
 	outb((inb(0x61) & ~0x02) | 0x01, 0x61);
@@ -200,30 +256,18 @@
 	cc = rpcc();
 	do {
 		count++;
-	} while ((inb(0x61) & 0x20) == 0);
+	} while ((inb(0x61) & 0x20) == 0 && count > 0);
 	cc = rpcc() - cc;
 
-	/* Error: ECTCNEVERSET */
+	/* Error: ECTCNEVERSET or ECPUTOOFAST.  */
 	if (count <= 1)
-		goto bad_ctc;
+		return 0;
 
-	/* Error: ECPUTOOFAST */
-	if (count >> 32)
-		goto bad_ctc;
-
-	/* Error: ECPUTOOSLOW */
+	/* Error: ECPUTOOSLOW.  */
 	if (cc <= CALIBRATE_TIME)
-		goto bad_ctc;
-
-	return ((long)cc * 1000000) / CALIBRATE_TIME;
+		return 0;
 
-	/*
-	 * The CTC wasn't reliable: we got a hit on the very first read,
-	 * or the CPU was so fast/slow that the quotient wouldn't fit in
-	 * 32 bits..
-	 */
- bad_ctc:
-	return 0;
+	return (cc * 1000000UL) / CALIBRATE_TIME;
 }
 
 /* The Linux interpretation of the CMOS clock register contents:
@@ -249,31 +293,35 @@
 
 	/* Calibrate CPU clock -- attempt #1.  */
 	if (!est_cycle_freq)
-		est_cycle_freq = calibrate_cc_with_pic();
+		est_cycle_freq = validate_cc_value(calibrate_cc_with_pic());
 
 	cc1 = rpcc_after_update_in_progress();
 
 	/* Calibrate CPU clock -- attempt #2.  */
 	if (!est_cycle_freq) {
 		cc2 = rpcc_after_update_in_progress();
-		est_cycle_freq = cc2 - cc1;
+		est_cycle_freq = validate_cc_value(cc2 - cc1);
 		cc1 = cc2;
 	}
 
-	/* If the given value is within 1% of what we calculated, 
-	   accept it.  Otherwise, use what we found.  */
 	cycle_freq = hwrpb->cycle_freq;
-	one_percent = cycle_freq / 100;
-	diff = cycle_freq - est_cycle_freq;
-	if (diff < 0)
-		diff = -diff;
-	if (diff > one_percent) {
-		cycle_freq = est_cycle_freq;
-		printk("HWRPB cycle frequency bogus.  Estimated %lu Hz\n",
-		       cycle_freq);
-	}
-	else {
-		est_cycle_freq = 0;
+	if (est_cycle_freq) {
+		/* If the given value is within 1% of what we calculated, 
+		   accept it.  Otherwise, use what we found.  */
+		one_percent = cycle_freq / 100;
+		diff = cycle_freq - est_cycle_freq;
+		if (diff < 0)
+			diff = -diff;
+		if (diff > one_percent) {
+			cycle_freq = est_cycle_freq;
+			printk("HWRPB cycle frequency bogus.  "
+			       "Estimated %lu Hz\n", cycle_freq);
+		} else {
+			est_cycle_freq = 0;
+		}
+	} else if (! validate_cc_value (cycle_freq)) {
+		printk("HWRPB cycle frequency bogus, "
+		       "and unable to estimate a proper value!\n");
 	}
 
 	/* From John Bowman <bowman@math.ualberta.ca>: allow the values
diff -urN linux-2.4.14-pre7/arch/i386/config.in linux/arch/i386/config.in
--- linux-2.4.14-pre7/arch/i386/config.in	Sat Oct 20 19:17:19 2001
+++ linux/arch/i386/config.in	Mon Dec  3 23:26:02 2001
@@ -149,6 +149,7 @@
    define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
 fi
 tristate 'Toshiba Laptop support' CONFIG_TOSHIBA
+tristate 'Dell Inspiron 8000 support' CONFIG_I8K
 
 tristate '/dev/cpu/microcode - Intel IA32 CPU microcode support' CONFIG_MICROCODE
 tristate '/dev/cpu/*/msr - Model-specific register support' CONFIG_X86_MSR
diff -urN linux-2.4.14-pre7/arch/i386/defconfig linux/arch/i386/defconfig
--- linux-2.4.14-pre7/arch/i386/defconfig	Mon Dec  3 23:25:52 2001
+++ linux/arch/i386/defconfig	Mon Dec  3 23:26:02 2001
@@ -50,6 +50,7 @@
 CONFIG_X86_PGE=y
 CONFIG_X86_USE_PPRO_CHECKSUM=y
 # CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
 # CONFIG_MICROCODE is not set
 # CONFIG_X86_MSR is not set
 # CONFIG_X86_CPUID is not set
@@ -707,7 +708,6 @@
 # CONFIG_USB_DEVICEFS is not set
 # CONFIG_USB_BANDWIDTH is not set
 # CONFIG_USB_LONG_TIMEOUT is not set
-# CONFIG_USB_LARGE_CONFIG is not set
 
 #
 # USB Controllers
diff -urN linux-2.4.14-pre7/arch/i386/kernel/entry.S linux/arch/i386/kernel/entry.S
--- linux-2.4.14-pre7/arch/i386/kernel/entry.S	Wed Oct 17 10:02:39 2001
+++ linux/arch/i386/kernel/entry.S	Mon Dec  3 23:26:02 2001
@@ -195,10 +195,10 @@
 	pushl %eax			# save orig_eax
 	SAVE_ALL
 	GET_CURRENT(%ebx)
-	cmpl $(NR_syscalls),%eax
-	jae badsys
 	testb $0x02,tsk_ptrace(%ebx)	# PT_TRACESYS
 	jne tracesys
+	cmpl $(NR_syscalls),%eax
+	jae badsys
 	call *SYMBOL_NAME(sys_call_table)(,%eax,4)
 	movl %eax,EAX(%esp)		# save the return value
 ENTRY(ret_from_sys_call)
diff -urN linux-2.4.14-pre7/arch/i386/kernel/io_apic.c linux/arch/i386/kernel/io_apic.c
--- linux-2.4.14-pre7/arch/i386/kernel/io_apic.c	Mon Dec  3 23:25:52 2001
+++ linux/arch/i386/kernel/io_apic.c	Mon Dec  3 23:26:02 2001
@@ -753,10 +753,11 @@
 	printk(KERN_DEBUG ".......     : PRQ implemented: %X\n", reg_01.PRQ);
 	printk(KERN_DEBUG ".......     : IO APIC version: %04X\n", reg_01.version);
 	if (	(reg_01.version != 0x01) && /* 82489DX IO-APICs */
+		(reg_01.version != 0x02) && /* 82801BA IO-APICs (ICH2) */
 		(reg_01.version != 0x10) && /* oldest IO-APICs */
 		(reg_01.version != 0x11) && /* Pentium/Pro IO-APICs */
 		(reg_01.version != 0x13) && /* Xeon IO-APICs */
-		(reg_01.entries != 0x20)    /* Intel P64H (82806 AA) */
+		(reg_01.version != 0x20)    /* Intel P64H (82806 AA) */
 	)
 		UNEXPECTED_IO_APIC();
 	if (reg_01.__reserved_1 || reg_01.__reserved_2)
diff -urN linux-2.4.14-pre7/arch/ppc/8260_io/commproc.c linux/arch/ppc/8260_io/commproc.c
--- linux-2.4.14-pre7/arch/ppc/8260_io/commproc.c	Mon May 21 17:04:46 2001
+++ linux/arch/ppc/8260_io/commproc.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.commproc.c 1.5 05/17/01 18:14:19 cort
+ * BK Id: SCCS/s.commproc.c 1.10 10/16/01 16:21:52 trini
  */
 
 /*
@@ -137,7 +137,7 @@
  * Baud rate clocks are zero-based in the driver code (as that maps
  * to port numbers).  Documentation uses 1-based numbering.
  */
-#define BRG_INT_CLK	(((bd_t *)__res)->bi_brgfreq * 1000000)
+#define BRG_INT_CLK	(((bd_t *)__res)->bi_brgfreq)
 #define BRG_UART_CLK	(BRG_INT_CLK/16)
 
 /* This function is used by UARTS, or anything else that uses a 16x
@@ -169,8 +169,6 @@
 {
 	volatile uint	*bp;
 
-	/* This is good enough to get SMCs running.....
-	*/
 	if (brg < 4) {
 		bp = (uint *)&immr->im_brgc1;
 	}
diff -urN linux-2.4.14-pre7/arch/ppc/8xx_io/commproc.c linux/arch/ppc/8xx_io/commproc.c
--- linux-2.4.14-pre7/arch/ppc/8xx_io/commproc.c	Mon Oct  8 11:40:13 2001
+++ linux/arch/ppc/8xx_io/commproc.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.commproc.c 1.13 09/14/01 18:01:16 trini
+ * BK Id: SCCS/s.commproc.c 1.15 10/16/01 16:21:52 trini
  */
 
 /*
@@ -38,6 +38,8 @@
 #include <asm/8xx_immap.h>
 #include <asm/commproc.h>
 
+extern int get_pteptr(struct mm_struct *mm, unsigned long addr, pte_t **ptep);
+
 static	uint	dp_alloc_base;	/* Starting offset in DP ram */
 static	uint	dp_alloc_top;	/* Max offset + 1 */
 static	uint	host_buffer;	/* One page of host buffer */
@@ -64,6 +66,18 @@
 	imp = (immap_t *)IMAP_ADDR;
 	commproc = (cpm8xx_t *)&imp->im_cpm;
 
+#ifdef CONFIG_UCODE_PATCH
+	/* Perform a reset.
+	*/
+	commproc->cp_cpcr = (CPM_CR_RST | CPM_CR_FLG);
+
+	/* Wait for it.
+	*/
+	while (commproc->cp_cpcr & CPM_CR_FLG);
+
+	cpm_load_patch(imp);
+#endif
+
 	/* Set SDMA Bus Request priority 5.
 	 * On 860T, this also enables FEC priority 6.  I am not sure
 	 * this is what we realy want for some applications, but the
@@ -81,9 +95,17 @@
 	*/
 	host_buffer = host_page_addr;	/* Host virtual page address */
 	host_end = host_page_addr + PAGE_SIZE;
-	pte = va_to_pte(host_page_addr);
-	pte_val(*pte) |= _PAGE_NO_CACHE;
-	flush_tlb_page(init_mm.mmap, host_buffer);
+
+	/* We need to get this page early, so I have to do it the
+	 * hard way.
+	 */
+	if (get_pteptr(&init_mm, host_page_addr, &pte)) {
+		pte_val(*pte) |= _PAGE_NO_CACHE;
+		flush_tlb_page(init_mm.mmap, host_buffer);
+	}
+	else {
+		panic("Huh?  No CPM host page?");
+	}
 
 	/* Tell everyone where the comm processor resides.
 	*/
diff -urN linux-2.4.14-pre7/arch/ppc/8xx_io/uart.c linux/arch/ppc/8xx_io/uart.c
--- linux-2.4.14-pre7/arch/ppc/8xx_io/uart.c	Mon Oct  8 11:40:13 2001
+++ linux/arch/ppc/8xx_io/uart.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.uart.c 1.16 09/14/01 18:01:17 trini
+ * BK Id: SCCS/s.uart.c 1.19 10/26/01 09:59:32 trini
  */
 /*
  *  UART driver for MPC860 CPM SCC or SMC
@@ -94,10 +94,10 @@
 static int serial_refcount;
 static int serial_console_setup(struct console *co, char *options);
 
-static int serial_console_wait_key(struct console *co);
 static void serial_console_write(struct console *c, const char *s,
 				unsigned count);
 static kdev_t serial_console_device(struct console *c);
+static int serial_console_wait_key(struct console *co);
 
 #if defined(CONFIG_SERIAL_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
 static unsigned long break_pressed; /* break, really ... */
@@ -481,7 +481,9 @@
 			tty->flip.count++;
 		}
 
+#if defined(CONFIG_SERIAL_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
 	ignore_char:	
+#endif
 		/* This BD is ready to be used again.  Clear status.
 		 * Get next BD.
 		 */
@@ -876,7 +878,7 @@
 static void change_speed(ser_info_t *info)
 {
 	int	baud_rate;
-	unsigned cflag, cval, scval, prev_mode;
+	unsigned cflag, cval, scval, prev_mode, new_mode;
 	int	i, bits, sbits, idx;
 	unsigned long	flags;
 	struct serial_state *state;
@@ -917,10 +919,10 @@
 		cval |= SMCMR_PEN;
 		scval |= SCU_PMSR_PEN;
 		bits++;
-	}
-	if (!(cflag & PARODD)) {
-		cval |= SMCMR_PM_EVEN;
-		scval |= (SCU_PMSR_REVP | SCU_PMSR_TEVP);
+		if (!(cflag & PARODD)) {
+			cval |= SMCMR_PM_EVEN;
+			scval |= (SCU_PMSR_REVP | SCU_PMSR_TEVP);
+		}
 	}
 
 	/* Determine divisor based on baud rate */
@@ -993,7 +995,13 @@
 	idx = PORT_NUM(state->smc_scc_num);
 	if (state->smc_scc_num & NUM_IS_SCC) {
 		sccp = &cpmp->cp_scc[idx];
-		sccp->scc_pmsr = (sbits << 12) | scval;
+		new_mode = (sbits << 12) | scval;
+		prev_mode = sccp->scc_pmsr;
+		if (!(prev_mode & SCU_PMSR_PEN)) 
+			/* If parity is disabled, mask out even/odd */
+			prev_mode &= ~(SCU_PMSR_TPM|SCU_PMSR_RPM);
+		if (prev_mode != new_mode)
+			sccp->scc_pmsr = new_mode;
 	}
 	else {
 		smcp = &cpmp->cp_smc[idx];
@@ -1003,8 +1011,13 @@
 		 * present.
 		 */
 		prev_mode = smcp->smc_smcmr;
-		smcp->smc_smcmr = smcr_mk_clen(bits) | cval |  SMCMR_SM_UART;
-		smcp->smc_smcmr |= (prev_mode & (SMCMR_REN | SMCMR_TEN));
+		new_mode = smcr_mk_clen(bits) | cval |  SMCMR_SM_UART;
+		new_mode |= (prev_mode & (SMCMR_REN | SMCMR_TEN));
+		if (!(prev_mode & SMCMR_PEN))
+			/* If parity is disabled, mask out even/odd */
+			prev_mode &= ~SMCMR_PM_EVEN;
+		if (prev_mode != new_mode)
+			smcp->smc_smcmr = new_mode;
 	}
 
 	m8xx_cpm_setbrg((state - rs_table), baud_rate);
diff -urN linux-2.4.14-pre7/arch/ppc/config.in linux/arch/ppc/config.in
--- linux-2.4.14-pre7/arch/ppc/config.in	Tue Aug 28 07:11:33 2001
+++ linux/arch/ppc/config.in	Mon Dec  3 23:26:02 2001
@@ -1,4 +1,4 @@
-# BK Id: SCCS/s.config.in 1.40 08/24/01 20:31:47 paulus
+# BK Id: SCCS/s.config.in 1.43 10/16/01 15:18:50 trini
 #
 # For a description of the syntax of this configuration file,
 # see Documentation/kbuild/config-language.txt.
@@ -46,6 +46,8 @@
 if [ "$CONFIG_6xx" = "y" -o "$CONFIG_POWER3" = "y" -o \
      "$CONFIG_POWER4" = "y" ]; then
   define_bool CONFIG_PPC_STD_MMU y
+else
+  define_bool CONFIG_PPC_STD_MMU n
 fi
 
 if [ "$CONFIG_8260" = "y" ]; then
@@ -66,6 +68,7 @@
 	"RPX-Lite	CONFIG_RPXLITE		\
 	 RPX-Classic	CONFIG_RPXCLASSIC	\
 	 BSE-IP		CONFIG_BSEIP		\
+	 FADS		CONFIG_FADS		\
  	 TQM823L	CONFIG_TQM823L		\
  	 TQM850L	CONFIG_TQM850L		\
  	 TQM855L	CONFIG_TQM855L		\
@@ -74,6 +77,7 @@
   	 TQM860		CONFIG_TQM860		\
  	 SPD823TS	CONFIG_SPD823TS		\
  	 IVMS8		CONFIG_IVMS8		\
+	 IVML24		CONFIG_IVML24		\
  	 SM850		CONFIG_SM850		\
 	 MBX		CONFIG_MBX		\
 	 WinCept	CONFIG_WINCEPT"		RPX-Lite
@@ -95,12 +99,7 @@
 	 Synergy-Gemini        	CONFIG_GEMINI"		CHRP/PowerMac/PReP
 fi
 
-if [ "$CONFIG_PPC64BRIDGE" != "y" ]; then
-  bool 'Workarounds for PPC601 bugs' CONFIG_PPC601_SYNC_FIX
-fi
-
-if [ "$CONFIG_POWER3" = "n" -a "$CONFIG_POWER4" = "n" -a \
-	"$CONFIG_6xx" = "n" ]; then
+if [ "$CONFIG_PPC_STD_MMU" != "y" ]; then
   define_bool CONFIG_ALL_PPC n
 fi
 
@@ -183,6 +182,10 @@
   else
     bool 'Generic /dev/rtc emulation' CONFIG_GEN_RTC
   fi
+fi
+
+if [ "$CONFIG_ALL_PPC" = "y" -a "$CONFIG_POWER3" = "n" ] ; then
+  bool 'Workarounds for PPC601 bugs' CONFIG_PPC601_SYNC_FIX
 fi
 
 if [ "$CONFIG_ALL_PPC" = "y" ]; then
diff -urN linux-2.4.14-pre7/arch/ppc/configs/IVMS8_defconfig linux/arch/ppc/configs/IVMS8_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/IVMS8_defconfig	Mon Oct  8 11:40:13 2001
+++ linux/arch/ppc/configs/IVMS8_defconfig	Mon Dec  3 23:26:02 2001
@@ -27,10 +27,12 @@
 # CONFIG_POWER3 is not set
 # CONFIG_POWER4 is not set
 CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
 CONFIG_SERIAL_CONSOLE=y
 # CONFIG_RPXLITE is not set
 # CONFIG_RPXCLASSIC is not set
 # CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
 # CONFIG_TQM823L is not set
 # CONFIG_TQM850L is not set
 # CONFIG_TQM855L is not set
@@ -39,10 +41,10 @@
 # CONFIG_TQM860 is not set
 # CONFIG_SPD823TS is not set
 CONFIG_IVMS8=y
+# CONFIG_IVML24 is not set
 # CONFIG_SM850 is not set
 # CONFIG_MBX is not set
 # CONFIG_WINCEPT is not set
-# CONFIG_PPC601_SYNC_FIX is not set
 # CONFIG_ALL_PPC is not set
 # CONFIG_SMP is not set
 CONFIG_MATH_EMULATION=y
@@ -85,7 +87,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -138,6 +139,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -237,7 +239,6 @@
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_SUNBMAC is not set
 # CONFIG_SUNQE is not set
@@ -372,7 +373,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -491,12 +491,108 @@
 CONFIG_8xx_COPYBACK=y
 # CONFIG_8xx_CPU6 is not set
 # CONFIG_UCODE_PATCH is not set
-CONFIG_BLK_DEV_MPC8xx_IDE=y
 
 #
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/SM850_defconfig linux/arch/ppc/configs/SM850_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/SM850_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/SM850_defconfig	Mon Dec  3 23:26:02 2001
@@ -27,10 +27,12 @@
 # CONFIG_POWER3 is not set
 # CONFIG_POWER4 is not set
 CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
 CONFIG_SERIAL_CONSOLE=y
 # CONFIG_RPXLITE is not set
 # CONFIG_RPXCLASSIC is not set
 # CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
 # CONFIG_TQM823L is not set
 # CONFIG_TQM850L is not set
 # CONFIG_TQM855L is not set
@@ -39,11 +41,11 @@
 # CONFIG_TQM860 is not set
 # CONFIG_SPD823TS is not set
 # CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
 CONFIG_SM850=y
 # CONFIG_MBX is not set
 # CONFIG_WINCEPT is not set
 CONFIG_TQM8xxL=y
-# CONFIG_PPC601_SYNC_FIX is not set
 # CONFIG_ALL_PPC is not set
 # CONFIG_SMP is not set
 CONFIG_MATH_EMULATION=y
@@ -86,7 +88,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -111,6 +112,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -138,6 +140,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -191,12 +194,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_SUNBMAC is not set
 # CONFIG_SUNQE is not set
@@ -214,9 +214,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -277,6 +277,10 @@
 # Input core support
 #
 # CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
 
 #
 # Macintosh device drivers
@@ -306,7 +310,11 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
 
 #
 # Input core support is needed for joysticks
@@ -323,7 +331,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -356,6 +363,7 @@
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -444,11 +452,109 @@
 #
 CONFIG_8xx_COPYBACK=y
 CONFIG_8xx_CPU6=y
+# CONFIG_UCODE_PATCH is not set
 
 #
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/SPD823TS_defconfig linux/arch/ppc/configs/SPD823TS_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/SPD823TS_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/SPD823TS_defconfig	Mon Dec  3 23:26:02 2001
@@ -27,10 +27,12 @@
 # CONFIG_POWER3 is not set
 # CONFIG_POWER4 is not set
 CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
 CONFIG_SERIAL_CONSOLE=y
 # CONFIG_RPXLITE is not set
 # CONFIG_RPXCLASSIC is not set
 # CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
 # CONFIG_TQM823L is not set
 # CONFIG_TQM850L is not set
 # CONFIG_TQM855L is not set
@@ -39,10 +41,10 @@
 # CONFIG_TQM860 is not set
 CONFIG_SPD823TS=y
 # CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
 # CONFIG_SM850 is not set
 # CONFIG_MBX is not set
 # CONFIG_WINCEPT is not set
-# CONFIG_PPC601_SYNC_FIX is not set
 # CONFIG_ALL_PPC is not set
 # CONFIG_SMP is not set
 CONFIG_MATH_EMULATION=y
@@ -85,7 +87,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -110,6 +111,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -137,6 +139,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -190,12 +193,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_SUNBMAC is not set
 # CONFIG_SUNQE is not set
@@ -213,9 +213,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -276,6 +276,10 @@
 # Input core support
 #
 # CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
 
 #
 # Macintosh device drivers
@@ -305,7 +309,11 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
 
 #
 # Input core support is needed for joysticks
@@ -322,7 +330,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -355,6 +362,7 @@
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -443,11 +451,109 @@
 #
 CONFIG_8xx_COPYBACK=y
 # CONFIG_8xx_CPU6 is not set
+# CONFIG_UCODE_PATCH is not set
 
 #
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/TQM823L_defconfig linux/arch/ppc/configs/TQM823L_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/TQM823L_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/TQM823L_defconfig	Mon Dec  3 23:26:02 2001
@@ -27,10 +27,12 @@
 # CONFIG_POWER3 is not set
 # CONFIG_POWER4 is not set
 CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
 CONFIG_SERIAL_CONSOLE=y
 # CONFIG_RPXLITE is not set
 # CONFIG_RPXCLASSIC is not set
 # CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
 CONFIG_TQM823L=y
 # CONFIG_TQM850L is not set
 # CONFIG_TQM855L is not set
@@ -39,11 +41,11 @@
 # CONFIG_TQM860 is not set
 # CONFIG_SPD823TS is not set
 # CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
 # CONFIG_SM850 is not set
 # CONFIG_MBX is not set
 # CONFIG_WINCEPT is not set
 CONFIG_TQM8xxL=y
-# CONFIG_PPC601_SYNC_FIX is not set
 # CONFIG_ALL_PPC is not set
 # CONFIG_SMP is not set
 CONFIG_MATH_EMULATION=y
@@ -86,7 +88,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -111,6 +112,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -138,6 +140,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -191,12 +194,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_SUNBMAC is not set
 # CONFIG_SUNQE is not set
@@ -214,9 +214,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -277,6 +277,10 @@
 # Input core support
 #
 # CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
 
 #
 # Macintosh device drivers
@@ -306,7 +310,11 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
 
 #
 # Input core support is needed for joysticks
@@ -323,7 +331,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -356,6 +363,7 @@
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -444,11 +452,109 @@
 #
 CONFIG_8xx_COPYBACK=y
 # CONFIG_8xx_CPU6 is not set
+# CONFIG_UCODE_PATCH is not set
 
 #
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/TQM850L_defconfig linux/arch/ppc/configs/TQM850L_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/TQM850L_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/TQM850L_defconfig	Mon Dec  3 23:26:02 2001
@@ -27,10 +27,12 @@
 # CONFIG_POWER3 is not set
 # CONFIG_POWER4 is not set
 CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
 CONFIG_SERIAL_CONSOLE=y
 # CONFIG_RPXLITE is not set
 # CONFIG_RPXCLASSIC is not set
 # CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
 # CONFIG_TQM823L is not set
 CONFIG_TQM850L=y
 # CONFIG_TQM855L is not set
@@ -39,11 +41,11 @@
 # CONFIG_TQM860 is not set
 # CONFIG_SPD823TS is not set
 # CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
 # CONFIG_SM850 is not set
 # CONFIG_MBX is not set
 # CONFIG_WINCEPT is not set
 CONFIG_TQM8xxL=y
-# CONFIG_PPC601_SYNC_FIX is not set
 # CONFIG_ALL_PPC is not set
 # CONFIG_SMP is not set
 CONFIG_MATH_EMULATION=y
@@ -86,7 +88,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -111,6 +112,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -138,6 +140,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -191,12 +194,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_SUNBMAC is not set
 # CONFIG_SUNQE is not set
@@ -214,9 +214,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -277,6 +277,10 @@
 # Input core support
 #
 # CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
 
 #
 # Macintosh device drivers
@@ -306,7 +310,11 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
 
 #
 # Input core support is needed for joysticks
@@ -323,7 +331,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -356,6 +363,7 @@
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -444,11 +452,109 @@
 #
 CONFIG_8xx_COPYBACK=y
 CONFIG_8xx_CPU6=y
+# CONFIG_UCODE_PATCH is not set
 
 #
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/TQM860L_defconfig linux/arch/ppc/configs/TQM860L_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/TQM860L_defconfig	Mon Oct  8 11:40:13 2001
+++ linux/arch/ppc/configs/TQM860L_defconfig	Mon Dec  3 23:26:02 2001
@@ -27,10 +27,12 @@
 # CONFIG_POWER3 is not set
 # CONFIG_POWER4 is not set
 CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
 CONFIG_SERIAL_CONSOLE=y
 # CONFIG_RPXLITE is not set
 # CONFIG_RPXCLASSIC is not set
 # CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
 # CONFIG_TQM823L is not set
 # CONFIG_TQM850L is not set
 # CONFIG_TQM855L is not set
@@ -39,11 +41,11 @@
 # CONFIG_TQM860 is not set
 # CONFIG_SPD823TS is not set
 # CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
 # CONFIG_SM850 is not set
 # CONFIG_MBX is not set
 # CONFIG_WINCEPT is not set
 CONFIG_TQM8xxL=y
-# CONFIG_PPC601_SYNC_FIX is not set
 # CONFIG_ALL_PPC is not set
 # CONFIG_SMP is not set
 CONFIG_MATH_EMULATION=y
@@ -86,7 +88,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -139,6 +140,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -238,7 +240,6 @@
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_SUNBMAC is not set
 # CONFIG_SUNQE is not set
@@ -373,7 +374,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -500,12 +500,108 @@
 CONFIG_8xx_COPYBACK=y
 # CONFIG_8xx_CPU6 is not set
 # CONFIG_UCODE_PATCH is not set
-CONFIG_BLK_DEV_MPC8xx_IDE=y
 
 #
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/apus_defconfig linux/arch/ppc/configs/apus_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/apus_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/apus_defconfig	Mon Dec  3 23:26:02 2001
@@ -32,7 +32,6 @@
 # CONFIG_ALL_PPC is not set
 CONFIG_APUS=y
 # CONFIG_GEMINI is not set
-# CONFIG_PPC601_SYNC_FIX is not set
 # CONFIG_SMP is not set
 # CONFIG_ALTIVEC is not set
 # CONFIG_TAU is not set
@@ -105,7 +104,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -133,6 +131,7 @@
 CONFIG_MD_RAID0=m
 CONFIG_MD_RAID1=m
 CONFIG_MD_RAID5=m
+# CONFIG_MD_MULTIPATH is not set
 CONFIG_BLK_DEV_LVM=m
 
 #
@@ -161,6 +160,7 @@
 #
 CONFIG_IP_NF_CONNTRACK=m
 CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
 CONFIG_IP_NF_QUEUE=m
 CONFIG_IP_NF_IPTABLES=m
 CONFIG_IP_NF_MATCH_LIMIT=m
@@ -168,6 +168,8 @@
 CONFIG_IP_NF_MATCH_MARK=m
 CONFIG_IP_NF_MATCH_MULTIPORT=m
 CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_LENGTH=m
+CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_MATCH_TCPMSS=m
 CONFIG_IP_NF_MATCH_STATE=m
 CONFIG_IP_NF_MATCH_UNCLEAN=m
@@ -179,6 +181,8 @@
 CONFIG_IP_NF_NAT_NEEDED=y
 CONFIG_IP_NF_TARGET_MASQUERADE=m
 CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
 CONFIG_IP_NF_NAT_FTP=m
 CONFIG_IP_NF_MANGLE=m
 CONFIG_IP_NF_TARGET_TOS=m
@@ -191,6 +195,7 @@
 # CONFIG_IPV6 is not set
 CONFIG_KHTTPD=m
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -261,6 +266,9 @@
 # CONFIG_IDEDMA_AUTO is not set
 # CONFIG_DMA_NONPCI is not set
 # CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
 
 #
 # SCSI support
@@ -298,6 +306,7 @@
 # CONFIG_SCSI_AHA1740 is not set
 # CONFIG_SCSI_AIC7XXX is not set
 # CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_DPT_I2O is not set
 # CONFIG_SCSI_ADVANSYS is not set
 # CONFIG_SCSI_IN2000 is not set
 # CONFIG_SCSI_AM53C974 is not set
@@ -334,8 +343,6 @@
 # CONFIG_SCSI_T128 is not set
 # CONFIG_SCSI_U14_34F is not set
 # CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_MESH is not set
-# CONFIG_SCSI_MAC53C94 is not set
 CONFIG_A3000_SCSI=y
 CONFIG_A4000T_SCSI=y
 CONFIG_A2091_SCSI=y
@@ -374,12 +381,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 CONFIG_ARIADNE=y
 CONFIG_NE2K_ZORRO=y
 CONFIG_A2065=y
@@ -403,9 +407,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -496,14 +500,13 @@
 # CONFIG_FB_IMSTT is not set
 # CONFIG_FB_S3TRIO is not set
 # CONFIG_FB_VGA16 is not set
-# CONFIG_FB_PVR2 is not set
-# CONFIG_FB_PVR2_DEBUG is not set
-# CONFIG_FB_E1355 is not set
 # CONFIG_FB_MATROX is not set
 # CONFIG_FB_ATY is not set
+# CONFIG_FB_RADEON is not set
 # CONFIG_FB_ATY128 is not set
-# CONFIG_FB_3DFX is not set
 # CONFIG_FB_SIS is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
 # CONFIG_FB_VIRTUAL is not set
 CONFIG_FBCON_ADVANCED=y
 # CONFIG_FBCON_MFB is not set
@@ -582,11 +585,38 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_NS558 is not set
+# CONFIG_INPUT_LIGHTNING is not set
+# CONFIG_INPUT_PCIGAME is not set
+# CONFIG_INPUT_CS461X is not set
+# CONFIG_INPUT_EMU10K1 is not set
+# CONFIG_INPUT_SERIO is not set
+# CONFIG_INPUT_SERPORT is not set
 
 #
-# Input core support is needed for joysticks
+# Joysticks
 #
+# CONFIG_INPUT_ANALOG is not set
+# CONFIG_INPUT_A3D is not set
+# CONFIG_INPUT_ADI is not set
+# CONFIG_INPUT_COBRA is not set
+# CONFIG_INPUT_GF2K is not set
+# CONFIG_INPUT_GRIP is not set
+# CONFIG_INPUT_INTERACT is not set
+# CONFIG_INPUT_TMDC is not set
+# CONFIG_INPUT_SIDEWINDER is not set
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_IFORCE_232 is not set
+# CONFIG_INPUT_WARRIOR is not set
+# CONFIG_INPUT_MAGELLAN is not set
+# CONFIG_INPUT_SPACEORB is not set
+# CONFIG_INPUT_SPACEBALL is not set
+# CONFIG_INPUT_STINGER is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
+# CONFIG_INPUT_AMIJOY is not set
 # CONFIG_QIC02_TAPE is not set
 
 #
@@ -599,7 +629,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -632,6 +661,7 @@
 CONFIG_VFAT_FS=y
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 CONFIG_CRAMFS=y
 CONFIG_TMPFS=y
 CONFIG_RAMFS=m
@@ -804,6 +834,104 @@
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+# CONFIG_USB_HID is not set
+# CONFIG_USB_HIDDEV is not set
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_WACOM is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/bseip_defconfig linux/arch/ppc/configs/bseip_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/bseip_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/bseip_defconfig	Mon Dec  3 23:26:02 2001
@@ -25,10 +25,12 @@
 # CONFIG_POWER3 is not set
 # CONFIG_POWER4 is not set
 CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
 CONFIG_SERIAL_CONSOLE=y
 # CONFIG_RPXLITE is not set
 # CONFIG_RPXCLASSIC is not set
 CONFIG_BSEIP=y
+# CONFIG_FADS is not set
 # CONFIG_TQM823L is not set
 # CONFIG_TQM850L is not set
 # CONFIG_TQM855L is not set
@@ -37,10 +39,10 @@
 # CONFIG_TQM860 is not set
 # CONFIG_SPD823TS is not set
 # CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
 # CONFIG_SM850 is not set
 # CONFIG_MBX is not set
 # CONFIG_WINCEPT is not set
-CONFIG_PPC601_SYNC_FIX=y
 # CONFIG_ALL_PPC is not set
 # CONFIG_SMP is not set
 CONFIG_MATH_EMULATION=y
@@ -83,7 +85,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -109,6 +110,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -137,6 +139,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -190,12 +193,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_SUNBMAC is not set
 # CONFIG_SUNQE is not set
@@ -213,9 +213,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -276,6 +276,10 @@
 # Input core support
 #
 # CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
 
 #
 # Macintosh device drivers
@@ -305,7 +309,11 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
 
 #
 # Input core support is needed for joysticks
@@ -322,7 +330,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -355,6 +362,7 @@
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -443,11 +451,109 @@
 #
 CONFIG_8xx_COPYBACK=y
 # CONFIG_8xx_CPU6 is not set
+# CONFIG_UCODE_PATCH is not set
 
 #
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/common_defconfig linux/arch/ppc/configs/common_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/common_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/common_defconfig	Mon Dec  3 23:26:02 2001
@@ -32,7 +32,6 @@
 CONFIG_ALL_PPC=y
 # CONFIG_APUS is not set
 # CONFIG_GEMINI is not set
-CONFIG_PPC601_SYNC_FIX=y
 # CONFIG_SMP is not set
 CONFIG_ALTIVEC=y
 CONFIG_TAU=y
@@ -69,6 +68,7 @@
 #
 # CONFIG_PARPORT is not set
 CONFIG_PPC_RTC=y
+CONFIG_PPC601_SYNC_FIX=y
 CONFIG_PROC_DEVICETREE=y
 CONFIG_PPC_RTAS=y
 CONFIG_BOOTX_TEXT=y
@@ -86,7 +86,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -112,6 +111,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -141,6 +141,7 @@
 #
 CONFIG_IP_NF_CONNTRACK=m
 CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
 # CONFIG_IP_NF_QUEUE is not set
 CONFIG_IP_NF_IPTABLES=m
 CONFIG_IP_NF_MATCH_LIMIT=m
@@ -148,6 +149,8 @@
 CONFIG_IP_NF_MATCH_MARK=m
 CONFIG_IP_NF_MATCH_MULTIPORT=m
 CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_LENGTH=m
+CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_MATCH_TCPMSS=m
 CONFIG_IP_NF_MATCH_STATE=m
 CONFIG_IP_NF_MATCH_UNCLEAN=m
@@ -159,6 +162,8 @@
 CONFIG_IP_NF_NAT_NEEDED=y
 CONFIG_IP_NF_TARGET_MASQUERADE=m
 CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
 CONFIG_IP_NF_NAT_FTP=m
 # CONFIG_IP_NF_MANGLE is not set
 # CONFIG_IP_NF_TARGET_LOG is not set
@@ -169,6 +174,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -272,6 +278,9 @@
 # CONFIG_IDEDMA_IVB is not set
 # CONFIG_DMA_NONPCI is not set
 CONFIG_BLK_DEV_IDE_MODES=y
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
 
 #
 # SCSI support
@@ -315,7 +324,8 @@
 # CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT is not set
 CONFIG_AIC7XXX_OLD_CMDS_PER_DEVICE=8
 CONFIG_AIC7XXX_OLD_PROC_STATS=y
-CONFIG_SCSI_ADVANSYS=y
+# CONFIG_SCSI_DPT_I2O is not set
+CONFIG_SCSI_ADVANSYS=m
 # CONFIG_SCSI_IN2000 is not set
 # CONFIG_SCSI_AM53C974 is not set
 # CONFIG_SCSI_MEGARAID is not set
@@ -389,13 +399,10 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 CONFIG_MACE=y
 # CONFIG_MACE_AAUI_PORT is not set
 CONFIG_BMAC=y
 CONFIG_GMAC=y
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_HAPPYMEAL is not set
 # CONFIG_SUNBMAC is not set
@@ -426,6 +433,7 @@
 # CONFIG_NE2K_PCI is not set
 # CONFIG_NE3210 is not set
 # CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
 # CONFIG_8139TOO is not set
 # CONFIG_8139TOO_PIO is not set
 # CONFIG_8139TOO_TUNE_TWISTER is not set
@@ -442,9 +450,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -464,7 +472,18 @@
 #
 # Wireless LAN (non-hamradio)
 #
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+# CONFIG_STRIP is not set
+# CONFIG_WAVELAN is not set
+# CONFIG_ARLAN is not set
+# CONFIG_AIRONET4500 is not set
+# CONFIG_AIRONET4500_NONCS is not set
+# CONFIG_AIRONET4500_PROC is not set
+# CONFIG_AIRO is not set
+CONFIG_HERMES=m
+CONFIG_APPLE_AIRPORT=m
+# CONFIG_PLX_HERMES is not set
+CONFIG_NET_WIRELESS=y
 
 #
 # Token Ring devices
@@ -521,9 +540,6 @@
 CONFIG_FB_IMSTT=y
 # CONFIG_FB_S3TRIO is not set
 # CONFIG_FB_VGA16 is not set
-# CONFIG_FB_PVR2 is not set
-# CONFIG_FB_PVR2_DEBUG is not set
-# CONFIG_FB_E1355 is not set
 CONFIG_FB_MATROX=y
 CONFIG_FB_MATROX_MILLENIUM=y
 CONFIG_FB_MATROX_MYSTIQUE=y
@@ -533,9 +549,11 @@
 CONFIG_FB_ATY=y
 CONFIG_FB_ATY_GX=y
 CONFIG_FB_ATY_CT=y
+CONFIG_FB_RADEON=y
 CONFIG_FB_ATY128=y
-CONFIG_FB_3DFX=y
 # CONFIG_FB_SIS is not set
+CONFIG_FB_3DFX=y
+# CONFIG_FB_VOODOO1 is not set
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FBCON_ADVANCED is not set
 CONFIG_FBCON_CFB8=y
@@ -611,11 +629,37 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_NS558 is not set
+# CONFIG_INPUT_LIGHTNING is not set
+# CONFIG_INPUT_PCIGAME is not set
+# CONFIG_INPUT_CS461X is not set
+# CONFIG_INPUT_EMU10K1 is not set
+# CONFIG_INPUT_SERIO is not set
+# CONFIG_INPUT_SERPORT is not set
 
 #
-# Input core support is needed for joysticks
+# Joysticks
 #
+# CONFIG_INPUT_ANALOG is not set
+# CONFIG_INPUT_A3D is not set
+# CONFIG_INPUT_ADI is not set
+# CONFIG_INPUT_COBRA is not set
+# CONFIG_INPUT_GF2K is not set
+# CONFIG_INPUT_GRIP is not set
+# CONFIG_INPUT_INTERACT is not set
+# CONFIG_INPUT_TMDC is not set
+# CONFIG_INPUT_SIDEWINDER is not set
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_IFORCE_232 is not set
+# CONFIG_INPUT_WARRIOR is not set
+# CONFIG_INPUT_MAGELLAN is not set
+# CONFIG_INPUT_SPACEORB is not set
+# CONFIG_INPUT_SPACEBALL is not set
+# CONFIG_INPUT_STINGER is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
 # CONFIG_QIC02_TAPE is not set
 
 #
@@ -628,7 +672,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -661,6 +704,7 @@
 CONFIG_VFAT_FS=m
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -809,6 +853,8 @@
 #
 CONFIG_USB_DEVICEFS=y
 # CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_LONG_TIMEOUT is not set
+# CONFIG_USB_LARGE_CONFIG is not set
 
 #
 # USB Controllers
@@ -823,13 +869,22 @@
 # CONFIG_USB_AUDIO is not set
 # CONFIG_USB_BLUETOOTH is not set
 # CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
 CONFIG_USB_ACM=m
-# CONFIG_USB_PRINTER is not set
+CONFIG_USB_PRINTER=m
 
 #
 # USB Human Interface Devices (HID)
 #
 CONFIG_USB_HID=y
+# CONFIG_USB_HIDDEV is not set
 # CONFIG_USB_WACOM is not set
 
 #
@@ -837,26 +892,26 @@
 #
 # CONFIG_USB_DC2XX is not set
 # CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
+CONFIG_USB_SCANNER=m
 # CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
 
 #
 # USB Multimedia devices
 #
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DABUSB is not set
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
 
 #
 # USB Network adaptors
 #
-# CONFIG_USB_PLUSB is not set
 # CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
 # CONFIG_USB_CATC is not set
-# CONFIG_USB_NET1080 is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
 
 #
 # USB port drivers
@@ -874,16 +929,26 @@
 # CONFIG_USB_SERIAL_EMPEG is not set
 # CONFIG_USB_SERIAL_FTDI_SIO is not set
 CONFIG_USB_SERIAL_VISOR=m
+# CONFIG_USB_SERIAL_IR is not set
 # CONFIG_USB_SERIAL_EDGEPORT is not set
 # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
 # CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
 # CONFIG_USB_SERIAL_MCT_U232 is not set
 # CONFIG_USB_SERIAL_PL2303 is not set
 # CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
 # CONFIG_USB_SERIAL_OMNINET is not set
 
 #
-# USB misc drivers
+# USB Miscellaneous drivers
 #
 # CONFIG_USB_RIO500 is not set
 
diff -urN linux-2.4.14-pre7/arch/ppc/configs/est8260_defconfig linux/arch/ppc/configs/est8260_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/est8260_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/est8260_defconfig	Mon Dec  3 23:26:02 2001
@@ -29,7 +29,6 @@
 CONFIG_PPC_STD_MMU=y
 CONFIG_SERIAL_CONSOLE=y
 CONFIG_EST8260=y
-CONFIG_PPC601_SYNC_FIX=y
 # CONFIG_SMP is not set
 
 #
@@ -69,7 +68,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -95,6 +93,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -123,6 +122,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -176,12 +176,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_SUNBMAC is not set
 # CONFIG_SUNQE is not set
@@ -199,9 +196,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -263,6 +260,10 @@
 # Input core support
 #
 # CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
 
 #
 # Macintosh device drivers
@@ -292,7 +293,11 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
 
 #
 # Input core support is needed for joysticks
@@ -309,7 +314,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -342,6 +346,7 @@
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -422,6 +427,103 @@
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/gemini_defconfig linux/arch/ppc/configs/gemini_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/gemini_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/gemini_defconfig	Mon Dec  3 23:26:02 2001
@@ -32,7 +32,6 @@
 # CONFIG_ALL_PPC is not set
 # CONFIG_APUS is not set
 CONFIG_GEMINI=y
-# CONFIG_PPC601_SYNC_FIX is not set
 # CONFIG_SMP is not set
 CONFIG_ALTIVEC=y
 CONFIG_TAU=y
@@ -77,7 +76,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -103,6 +101,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -137,6 +136,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -202,6 +202,7 @@
 # CONFIG_SCSI_AHA1740 is not set
 # CONFIG_SCSI_AIC7XXX is not set
 # CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_DPT_I2O is not set
 # CONFIG_SCSI_ADVANSYS is not set
 # CONFIG_SCSI_IN2000 is not set
 # CONFIG_SCSI_AM53C974 is not set
@@ -243,8 +244,6 @@
 # CONFIG_SCSI_T128 is not set
 # CONFIG_SCSI_U14_34F is not set
 # CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_MESH is not set
-# CONFIG_SCSI_MAC53C94 is not set
 
 #
 # IEEE 1394 (FireWire) support (EXPERIMENTAL)
@@ -270,12 +269,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-CONFIG_NCR885E=y
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_HAPPYMEAL is not set
 # CONFIG_SUNBMAC is not set
@@ -295,9 +291,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -359,6 +355,10 @@
 # Input core support
 #
 # CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
 
 #
 # Macintosh device drivers
@@ -390,7 +390,11 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
 
 #
 # Input core support is needed for joysticks
@@ -407,7 +411,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -440,6 +443,7 @@
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -517,6 +521,103 @@
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/ibmchrp_defconfig linux/arch/ppc/configs/ibmchrp_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/ibmchrp_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/ibmchrp_defconfig	Mon Dec  3 23:26:02 2001
@@ -32,7 +32,6 @@
 CONFIG_ALL_PPC=y
 # CONFIG_APUS is not set
 # CONFIG_GEMINI is not set
-# CONFIG_PPC601_SYNC_FIX is not set
 # CONFIG_SMP is not set
 # CONFIG_ALTIVEC is not set
 # CONFIG_TAU is not set
@@ -63,6 +62,7 @@
 #
 # CONFIG_PARPORT is not set
 CONFIG_PPC_RTC=y
+# CONFIG_PPC601_SYNC_FIX is not set
 CONFIG_PROC_DEVICETREE=y
 CONFIG_PPC_RTAS=y
 # CONFIG_BOOTX_TEXT is not set
@@ -79,7 +79,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -105,6 +104,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -134,6 +134,7 @@
 #
 CONFIG_IP_NF_CONNTRACK=m
 CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
 # CONFIG_IP_NF_QUEUE is not set
 CONFIG_IP_NF_IPTABLES=m
 CONFIG_IP_NF_MATCH_LIMIT=m
@@ -141,6 +142,8 @@
 CONFIG_IP_NF_MATCH_MARK=m
 CONFIG_IP_NF_MATCH_MULTIPORT=m
 CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_LENGTH=m
+CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_MATCH_TCPMSS=m
 CONFIG_IP_NF_MATCH_STATE=m
 CONFIG_IP_NF_MATCH_UNCLEAN=m
@@ -152,6 +155,8 @@
 CONFIG_IP_NF_NAT_NEEDED=y
 CONFIG_IP_NF_TARGET_MASQUERADE=m
 CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
 CONFIG_IP_NF_NAT_FTP=m
 # CONFIG_IP_NF_MANGLE is not set
 # CONFIG_IP_NF_TARGET_LOG is not set
@@ -162,6 +167,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -227,6 +233,7 @@
 # CONFIG_SCSI_AHA1740 is not set
 # CONFIG_SCSI_AIC7XXX is not set
 # CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_DPT_I2O is not set
 # CONFIG_SCSI_ADVANSYS is not set
 # CONFIG_SCSI_IN2000 is not set
 # CONFIG_SCSI_AM53C974 is not set
@@ -295,12 +302,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_HAPPYMEAL is not set
 # CONFIG_SUNBMAC is not set
@@ -319,8 +323,6 @@
 # CONFIG_APRICOT is not set
 # CONFIG_CS89x0 is not set
 # CONFIG_TULIP is not set
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
 CONFIG_DE4X5=y
 # CONFIG_DGRS is not set
 # CONFIG_DM9102 is not set
@@ -331,6 +333,7 @@
 # CONFIG_NE2K_PCI is not set
 # CONFIG_NE3210 is not set
 # CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
 # CONFIG_8139TOO is not set
 # CONFIG_8139TOO_PIO is not set
 # CONFIG_8139TOO_TUNE_TWISTER is not set
@@ -347,9 +350,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -422,9 +425,6 @@
 # CONFIG_FB_IMSTT is not set
 # CONFIG_FB_S3TRIO is not set
 # CONFIG_FB_VGA16 is not set
-# CONFIG_FB_PVR2 is not set
-# CONFIG_FB_PVR2_DEBUG is not set
-# CONFIG_FB_E1355 is not set
 CONFIG_FB_MATROX=y
 CONFIG_FB_MATROX_MILLENIUM=y
 CONFIG_FB_MATROX_MYSTIQUE=y
@@ -432,9 +432,11 @@
 # CONFIG_FB_MATROX_G450 is not set
 # CONFIG_FB_MATROX_MULTIHEAD is not set
 # CONFIG_FB_ATY is not set
+# CONFIG_FB_RADEON is not set
 # CONFIG_FB_ATY128 is not set
-CONFIG_FB_3DFX=y
 # CONFIG_FB_SIS is not set
+CONFIG_FB_3DFX=y
+# CONFIG_FB_VOODOO1 is not set
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FBCON_ADVANCED is not set
 CONFIG_FBCON_CFB8=y
@@ -505,11 +507,37 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_NS558 is not set
+# CONFIG_INPUT_LIGHTNING is not set
+# CONFIG_INPUT_PCIGAME is not set
+# CONFIG_INPUT_CS461X is not set
+# CONFIG_INPUT_EMU10K1 is not set
+# CONFIG_INPUT_SERIO is not set
+# CONFIG_INPUT_SERPORT is not set
 
 #
-# Input core support is needed for joysticks
+# Joysticks
 #
+# CONFIG_INPUT_ANALOG is not set
+# CONFIG_INPUT_A3D is not set
+# CONFIG_INPUT_ADI is not set
+# CONFIG_INPUT_COBRA is not set
+# CONFIG_INPUT_GF2K is not set
+# CONFIG_INPUT_GRIP is not set
+# CONFIG_INPUT_INTERACT is not set
+# CONFIG_INPUT_TMDC is not set
+# CONFIG_INPUT_SIDEWINDER is not set
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_IFORCE_232 is not set
+# CONFIG_INPUT_WARRIOR is not set
+# CONFIG_INPUT_MAGELLAN is not set
+# CONFIG_INPUT_SPACEORB is not set
+# CONFIG_INPUT_SPACEBALL is not set
+# CONFIG_INPUT_STINGER is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
 # CONFIG_QIC02_TAPE is not set
 
 #
@@ -522,7 +550,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -555,6 +582,7 @@
 CONFIG_VFAT_FS=m
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -673,6 +701,104 @@
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+# CONFIG_USB_HID is not set
+# CONFIG_USB_HIDDEV is not set
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_WACOM is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/mbx_defconfig linux/arch/ppc/configs/mbx_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/mbx_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/mbx_defconfig	Mon Dec  3 23:26:02 2001
@@ -25,10 +25,12 @@
 # CONFIG_POWER3 is not set
 # CONFIG_POWER4 is not set
 CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
 CONFIG_SERIAL_CONSOLE=y
 # CONFIG_RPXLITE is not set
 # CONFIG_RPXCLASSIC is not set
 # CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
 # CONFIG_TQM823L is not set
 # CONFIG_TQM850L is not set
 # CONFIG_TQM855L is not set
@@ -37,10 +39,10 @@
 # CONFIG_TQM860 is not set
 # CONFIG_SPD823TS is not set
 # CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
 # CONFIG_SM850 is not set
 CONFIG_MBX=y
 # CONFIG_WINCEPT is not set
-CONFIG_PPC601_SYNC_FIX=y
 # CONFIG_ALL_PPC is not set
 # CONFIG_SMP is not set
 CONFIG_MATH_EMULATION=y
@@ -83,7 +85,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -108,6 +109,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -132,6 +134,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -184,12 +187,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_SUNBMAC is not set
 # CONFIG_SUNQE is not set
@@ -207,9 +207,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -270,6 +270,10 @@
 # Input core support
 #
 # CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
 
 #
 # Macintosh device drivers
@@ -298,7 +302,11 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
 
 #
 # Input core support is needed for joysticks
@@ -315,7 +323,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -348,6 +355,7 @@
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -436,11 +444,109 @@
 #
 CONFIG_8xx_COPYBACK=y
 CONFIG_8xx_CPU6=y
+# CONFIG_UCODE_PATCH is not set
 
 #
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/oak_defconfig linux/arch/ppc/configs/oak_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/oak_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/oak_defconfig	Mon Dec  3 23:26:02 2001
@@ -27,9 +27,9 @@
 # CONFIG_POWER3 is not set
 # CONFIG_POWER4 is not set
 # CONFIG_8xx is not set
+# CONFIG_PPC_STD_MMU is not set
 CONFIG_OAK=y
 # CONFIG_WALNUT is not set
-CONFIG_PPC601_SYNC_FIX=y
 # CONFIG_ALL_PPC is not set
 # CONFIG_SMP is not set
 # CONFIG_MATH_EMULATION is not set
@@ -70,7 +70,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -96,6 +95,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -121,6 +121,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -173,12 +174,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-CONFIG_OAKNET=y
 # CONFIG_SUNLANCE is not set
 # CONFIG_SUNBMAC is not set
 # CONFIG_SUNQE is not set
@@ -196,9 +194,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -259,6 +257,10 @@
 # Input core support
 #
 # CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
 
 #
 # Macintosh device drivers
@@ -288,7 +290,11 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
 
 #
 # Input core support is needed for joysticks
@@ -305,7 +311,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -338,6 +343,7 @@
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -402,6 +408,103 @@
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/power3_defconfig linux/arch/ppc/configs/power3_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/power3_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/power3_defconfig	Mon Dec  3 23:26:02 2001
@@ -86,7 +86,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -112,6 +111,7 @@
 CONFIG_MD_RAID0=y
 CONFIG_MD_RAID1=y
 CONFIG_MD_RAID5=y
+# CONFIG_MD_MULTIPATH is not set
 CONFIG_BLK_DEV_LVM=y
 
 #
@@ -137,6 +137,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -202,6 +203,7 @@
 # CONFIG_SCSI_AHA1740 is not set
 # CONFIG_SCSI_AIC7XXX is not set
 # CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_DPT_I2O is not set
 # CONFIG_SCSI_ADVANSYS is not set
 # CONFIG_SCSI_IN2000 is not set
 # CONFIG_SCSI_AM53C974 is not set
@@ -272,12 +274,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_HAPPYMEAL is not set
 # CONFIG_SUNBMAC is not set
@@ -296,8 +295,6 @@
 # CONFIG_APRICOT is not set
 # CONFIG_CS89x0 is not set
 # CONFIG_TULIP is not set
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
 # CONFIG_DE4X5 is not set
 # CONFIG_DGRS is not set
 # CONFIG_DM9102 is not set
@@ -308,6 +305,7 @@
 # CONFIG_NE2K_PCI is not set
 # CONFIG_NE3210 is not set
 # CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
 # CONFIG_8139TOO is not set
 # CONFIG_8139TOO_PIO is not set
 # CONFIG_8139TOO_TUNE_TWISTER is not set
@@ -324,9 +322,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -399,9 +397,6 @@
 # CONFIG_FB_IMSTT is not set
 # CONFIG_FB_S3TRIO is not set
 # CONFIG_FB_VGA16 is not set
-# CONFIG_FB_PVR2 is not set
-# CONFIG_FB_PVR2_DEBUG is not set
-# CONFIG_FB_E1355 is not set
 CONFIG_FB_MATROX=y
 CONFIG_FB_MATROX_MILLENIUM=y
 CONFIG_FB_MATROX_MYSTIQUE=y
@@ -411,9 +406,11 @@
 # CONFIG_FB_MATROX_G450 is not set
 CONFIG_FB_MATROX_MULTIHEAD=y
 # CONFIG_FB_ATY is not set
+# CONFIG_FB_RADEON is not set
 # CONFIG_FB_ATY128 is not set
-# CONFIG_FB_3DFX is not set
 # CONFIG_FB_SIS is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FBCON_ADVANCED is not set
 CONFIG_FBCON_CFB8=y
@@ -478,6 +475,7 @@
 CONFIG_I2C_ALGOPCF=y
 # CONFIG_I2C_ELEKTOR is not set
 CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_PROC is not set
 
 #
 # Mice
@@ -491,11 +489,37 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_NS558 is not set
+# CONFIG_INPUT_LIGHTNING is not set
+# CONFIG_INPUT_PCIGAME is not set
+# CONFIG_INPUT_CS461X is not set
+# CONFIG_INPUT_EMU10K1 is not set
+# CONFIG_INPUT_SERIO is not set
+# CONFIG_INPUT_SERPORT is not set
 
 #
-# Input core support is needed for joysticks
+# Joysticks
 #
+# CONFIG_INPUT_ANALOG is not set
+# CONFIG_INPUT_A3D is not set
+# CONFIG_INPUT_ADI is not set
+# CONFIG_INPUT_COBRA is not set
+# CONFIG_INPUT_GF2K is not set
+# CONFIG_INPUT_GRIP is not set
+# CONFIG_INPUT_INTERACT is not set
+# CONFIG_INPUT_TMDC is not set
+# CONFIG_INPUT_SIDEWINDER is not set
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_IFORCE_232 is not set
+# CONFIG_INPUT_WARRIOR is not set
+# CONFIG_INPUT_MAGELLAN is not set
+# CONFIG_INPUT_SPACEORB is not set
+# CONFIG_INPUT_SPACEBALL is not set
+# CONFIG_INPUT_STINGER is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
 # CONFIG_QIC02_TAPE is not set
 
 #
@@ -508,7 +532,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -541,6 +564,7 @@
 CONFIG_VFAT_FS=y
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -697,6 +721,104 @@
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+# CONFIG_USB_HID is not set
+# CONFIG_USB_HIDDEV is not set
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_WACOM is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/rpxcllf_defconfig linux/arch/ppc/configs/rpxcllf_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/rpxcllf_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/rpxcllf_defconfig	Mon Dec  3 23:26:02 2001
@@ -25,10 +25,12 @@
 # CONFIG_POWER3 is not set
 # CONFIG_POWER4 is not set
 CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
 CONFIG_SERIAL_CONSOLE=y
 # CONFIG_RPXLITE is not set
 CONFIG_RPXCLASSIC=y
 # CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
 # CONFIG_TQM823L is not set
 # CONFIG_TQM850L is not set
 # CONFIG_TQM855L is not set
@@ -37,10 +39,10 @@
 # CONFIG_TQM860 is not set
 # CONFIG_SPD823TS is not set
 # CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
 # CONFIG_SM850 is not set
 # CONFIG_MBX is not set
 # CONFIG_WINCEPT is not set
-CONFIG_PPC601_SYNC_FIX=y
 # CONFIG_ALL_PPC is not set
 # CONFIG_SMP is not set
 CONFIG_MATH_EMULATION=y
@@ -83,7 +85,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -109,6 +110,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -137,6 +139,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -190,12 +193,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_SUNBMAC is not set
 # CONFIG_SUNQE is not set
@@ -213,9 +213,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -276,6 +276,10 @@
 # Input core support
 #
 # CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
 
 #
 # Macintosh device drivers
@@ -305,7 +309,11 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
 
 #
 # Input core support is needed for joysticks
@@ -322,7 +330,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -355,6 +362,7 @@
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -444,11 +452,109 @@
 #
 CONFIG_8xx_COPYBACK=y
 # CONFIG_8xx_CPU6 is not set
+# CONFIG_UCODE_PATCH is not set
 
 #
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/rpxlite_defconfig linux/arch/ppc/configs/rpxlite_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/rpxlite_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/rpxlite_defconfig	Mon Dec  3 23:26:02 2001
@@ -25,10 +25,12 @@
 # CONFIG_POWER3 is not set
 # CONFIG_POWER4 is not set
 CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
 CONFIG_SERIAL_CONSOLE=y
 CONFIG_RPXLITE=y
 # CONFIG_RPXCLASSIC is not set
 # CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
 # CONFIG_TQM823L is not set
 # CONFIG_TQM850L is not set
 # CONFIG_TQM855L is not set
@@ -37,10 +39,10 @@
 # CONFIG_TQM860 is not set
 # CONFIG_SPD823TS is not set
 # CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
 # CONFIG_SM850 is not set
 # CONFIG_MBX is not set
 # CONFIG_WINCEPT is not set
-CONFIG_PPC601_SYNC_FIX=y
 # CONFIG_ALL_PPC is not set
 # CONFIG_SMP is not set
 CONFIG_MATH_EMULATION=y
@@ -83,7 +85,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -109,6 +110,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -137,6 +139,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -190,12 +193,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_SUNBMAC is not set
 # CONFIG_SUNQE is not set
@@ -213,9 +213,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -276,6 +276,10 @@
 # Input core support
 #
 # CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
 
 #
 # Macintosh device drivers
@@ -305,7 +309,11 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
 
 #
 # Input core support is needed for joysticks
@@ -322,7 +330,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -355,6 +362,7 @@
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -441,11 +449,109 @@
 #
 CONFIG_8xx_COPYBACK=y
 # CONFIG_8xx_CPU6 is not set
+# CONFIG_UCODE_PATCH is not set
 
 #
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/configs/walnut_defconfig linux/arch/ppc/configs/walnut_defconfig
--- linux-2.4.14-pre7/arch/ppc/configs/walnut_defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/configs/walnut_defconfig	Mon Dec  3 23:26:02 2001
@@ -27,9 +27,9 @@
 # CONFIG_POWER3 is not set
 # CONFIG_POWER4 is not set
 # CONFIG_8xx is not set
+# CONFIG_PPC_STD_MMU is not set
 # CONFIG_OAK is not set
 CONFIG_WALNUT=y
-CONFIG_PPC601_SYNC_FIX=y
 # CONFIG_ALL_PPC is not set
 # CONFIG_SMP is not set
 # CONFIG_MATH_EMULATION is not set
@@ -70,7 +70,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -96,6 +95,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -121,6 +121,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -173,12 +174,9 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_MACE is not set
 # CONFIG_BMAC is not set
 # CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_SUNBMAC is not set
 # CONFIG_SUNQE is not set
@@ -196,9 +194,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -259,6 +257,10 @@
 # Input core support
 #
 # CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
 
 #
 # Macintosh device drivers
@@ -281,6 +283,7 @@
 # CONFIG_I2C_ALGOBIT is not set
 # CONFIG_I2C_ALGOPCF is not set
 # CONFIG_I2C_CHARDEV is not set
+# CONFIG_I2C_PROC is not set
 
 #
 # Mice
@@ -291,7 +294,11 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
 
 #
 # Input core support is needed for joysticks
@@ -308,7 +315,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -341,6 +347,7 @@
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -405,6 +412,103 @@
 # USB support
 #
 # CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+#   Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
 
 #
 # Bluetooth support
diff -urN linux-2.4.14-pre7/arch/ppc/defconfig linux/arch/ppc/defconfig
--- linux-2.4.14-pre7/arch/ppc/defconfig	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/defconfig	Mon Dec  3 23:26:02 2001
@@ -32,7 +32,6 @@
 CONFIG_ALL_PPC=y
 # CONFIG_APUS is not set
 # CONFIG_GEMINI is not set
-CONFIG_PPC601_SYNC_FIX=y
 # CONFIG_SMP is not set
 CONFIG_ALTIVEC=y
 CONFIG_TAU=y
@@ -69,6 +68,7 @@
 #
 # CONFIG_PARPORT is not set
 CONFIG_PPC_RTC=y
+CONFIG_PPC601_SYNC_FIX=y
 CONFIG_PROC_DEVICETREE=y
 CONFIG_PPC_RTAS=y
 CONFIG_BOOTX_TEXT=y
@@ -86,7 +86,6 @@
 #
 # CONFIG_PNP is not set
 # CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
 
 #
 # Block devices
@@ -112,6 +111,7 @@
 # CONFIG_MD_RAID0 is not set
 # CONFIG_MD_RAID1 is not set
 # CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_BLK_DEV_LVM is not set
 
 #
@@ -141,6 +141,7 @@
 #
 CONFIG_IP_NF_CONNTRACK=m
 CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
 # CONFIG_IP_NF_QUEUE is not set
 CONFIG_IP_NF_IPTABLES=m
 CONFIG_IP_NF_MATCH_LIMIT=m
@@ -148,6 +149,8 @@
 CONFIG_IP_NF_MATCH_MARK=m
 CONFIG_IP_NF_MATCH_MULTIPORT=m
 CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_LENGTH=m
+CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_MATCH_TCPMSS=m
 CONFIG_IP_NF_MATCH_STATE=m
 CONFIG_IP_NF_MATCH_UNCLEAN=m
@@ -159,6 +162,8 @@
 CONFIG_IP_NF_NAT_NEEDED=y
 CONFIG_IP_NF_TARGET_MASQUERADE=m
 CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
 CONFIG_IP_NF_NAT_FTP=m
 # CONFIG_IP_NF_MANGLE is not set
 # CONFIG_IP_NF_TARGET_LOG is not set
@@ -169,6 +174,7 @@
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
@@ -272,6 +278,9 @@
 # CONFIG_IDEDMA_IVB is not set
 # CONFIG_DMA_NONPCI is not set
 CONFIG_BLK_DEV_IDE_MODES=y
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
 
 #
 # SCSI support
@@ -315,7 +324,8 @@
 # CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT is not set
 CONFIG_AIC7XXX_OLD_CMDS_PER_DEVICE=8
 CONFIG_AIC7XXX_OLD_PROC_STATS=y
-# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_DPT_I2O is not set
+CONFIG_SCSI_ADVANSYS=m
 # CONFIG_SCSI_IN2000 is not set
 # CONFIG_SCSI_AM53C974 is not set
 # CONFIG_SCSI_MEGARAID is not set
@@ -333,7 +343,7 @@
 # CONFIG_SCSI_INIA100 is not set
 # CONFIG_SCSI_NCR53C406A is not set
 # CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_NCR53C8XX is not set
+CONFIG_SCSI_NCR53C8XX=y
 CONFIG_SCSI_SYM53C8XX=y
 CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
 CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
@@ -389,13 +399,10 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 CONFIG_MACE=y
 # CONFIG_MACE_AAUI_PORT is not set
 CONFIG_BMAC=y
 CONFIG_GMAC=y
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
 # CONFIG_SUNLANCE is not set
 # CONFIG_HAPPYMEAL is not set
 # CONFIG_SUNBMAC is not set
@@ -426,6 +433,7 @@
 # CONFIG_NE2K_PCI is not set
 # CONFIG_NE3210 is not set
 # CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
 # CONFIG_8139TOO is not set
 # CONFIG_8139TOO_PIO is not set
 # CONFIG_8139TOO_TUNE_TWISTER is not set
@@ -442,9 +450,9 @@
 # Ethernet (1000 Mbit)
 #
 # CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
 # CONFIG_DL2K is not set
 # CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
@@ -464,7 +472,18 @@
 #
 # Wireless LAN (non-hamradio)
 #
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+# CONFIG_STRIP is not set
+# CONFIG_WAVELAN is not set
+# CONFIG_ARLAN is not set
+# CONFIG_AIRONET4500 is not set
+# CONFIG_AIRONET4500_NONCS is not set
+# CONFIG_AIRONET4500_PROC is not set
+# CONFIG_AIRO is not set
+CONFIG_HERMES=m
+CONFIG_APPLE_AIRPORT=m
+# CONFIG_PLX_HERMES is not set
+CONFIG_NET_WIRELESS=y
 
 #
 # Token Ring devices
@@ -521,9 +540,6 @@
 CONFIG_FB_IMSTT=y
 # CONFIG_FB_S3TRIO is not set
 # CONFIG_FB_VGA16 is not set
-# CONFIG_FB_PVR2 is not set
-# CONFIG_FB_PVR2_DEBUG is not set
-# CONFIG_FB_E1355 is not set
 CONFIG_FB_MATROX=y
 CONFIG_FB_MATROX_MILLENIUM=y
 CONFIG_FB_MATROX_MYSTIQUE=y
@@ -533,9 +549,11 @@
 CONFIG_FB_ATY=y
 CONFIG_FB_ATY_GX=y
 CONFIG_FB_ATY_CT=y
+CONFIG_FB_RADEON=y
 CONFIG_FB_ATY128=y
-CONFIG_FB_3DFX=y
 # CONFIG_FB_SIS is not set
+CONFIG_FB_3DFX=y
+# CONFIG_FB_VOODOO1 is not set
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FBCON_ADVANCED is not set
 CONFIG_FBCON_CFB8=y
@@ -611,11 +629,37 @@
 #
 # Joysticks
 #
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_NS558 is not set
+# CONFIG_INPUT_LIGHTNING is not set
+# CONFIG_INPUT_PCIGAME is not set
+# CONFIG_INPUT_CS461X is not set
+# CONFIG_INPUT_EMU10K1 is not set
+# CONFIG_INPUT_SERIO is not set
+# CONFIG_INPUT_SERPORT is not set
 
 #
-# Input core support is needed for joysticks
+# Joysticks
 #
+# CONFIG_INPUT_ANALOG is not set
+# CONFIG_INPUT_A3D is not set
+# CONFIG_INPUT_ADI is not set
+# CONFIG_INPUT_COBRA is not set
+# CONFIG_INPUT_GF2K is not set
+# CONFIG_INPUT_GRIP is not set
+# CONFIG_INPUT_INTERACT is not set
+# CONFIG_INPUT_TMDC is not set
+# CONFIG_INPUT_SIDEWINDER is not set
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_IFORCE_232 is not set
+# CONFIG_INPUT_WARRIOR is not set
+# CONFIG_INPUT_MAGELLAN is not set
+# CONFIG_INPUT_SPACEORB is not set
+# CONFIG_INPUT_SPACEBALL is not set
+# CONFIG_INPUT_STINGER is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
 # CONFIG_QIC02_TAPE is not set
 
 #
@@ -628,7 +672,6 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 
 #
 # Ftape, the floppy tape device driver
@@ -661,6 +704,7 @@
 CONFIG_VFAT_FS=m
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_TMPFS=y
 # CONFIG_RAMFS is not set
@@ -809,6 +853,8 @@
 #
 CONFIG_USB_DEVICEFS=y
 # CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_LONG_TIMEOUT is not set
+# CONFIG_USB_LARGE_CONFIG is not set
 
 #
 # USB Controllers
@@ -823,13 +869,22 @@
 # CONFIG_USB_AUDIO is not set
 # CONFIG_USB_BLUETOOTH is not set
 # CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
 CONFIG_USB_ACM=m
-# CONFIG_USB_PRINTER is not set
+CONFIG_USB_PRINTER=m
 
 #
 # USB Human Interface Devices (HID)
 #
 CONFIG_USB_HID=y
+# CONFIG_USB_HIDDEV is not set
 # CONFIG_USB_WACOM is not set
 
 #
@@ -837,26 +892,26 @@
 #
 # CONFIG_USB_DC2XX is not set
 # CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
+CONFIG_USB_SCANNER=m
 # CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
 
 #
 # USB Multimedia devices
 #
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DABUSB is not set
+
+#
+#   Video4Linux support is needed for USB Multimedia device support
+#
 
 #
 # USB Network adaptors
 #
-# CONFIG_USB_PLUSB is not set
 # CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
 # CONFIG_USB_CATC is not set
-# CONFIG_USB_NET1080 is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
 
 #
 # USB port drivers
@@ -874,16 +929,26 @@
 # CONFIG_USB_SERIAL_EMPEG is not set
 # CONFIG_USB_SERIAL_FTDI_SIO is not set
 CONFIG_USB_SERIAL_VISOR=m
+# CONFIG_USB_SERIAL_IR is not set
 # CONFIG_USB_SERIAL_EDGEPORT is not set
 # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
 # CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
 # CONFIG_USB_SERIAL_MCT_U232 is not set
 # CONFIG_USB_SERIAL_PL2303 is not set
 # CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
 # CONFIG_USB_SERIAL_OMNINET is not set
 
 #
-# USB misc drivers
+# USB Miscellaneous drivers
 #
 # CONFIG_USB_RIO500 is not set
 
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/Makefile linux/arch/ppc/kernel/Makefile
--- linux-2.4.14-pre7/arch/ppc/kernel/Makefile	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/kernel/Makefile	Mon Dec  3 23:26:02 2001
@@ -1,4 +1,4 @@
-# BK Id: SCCS/s.Makefile 1.32 08/24/01 20:07:37 paulus
+# BK Id: SCCS/s.Makefile 1.34 10/16/01 15:58:42 trini
 #
 #
 # Makefile for the linux kernel.
@@ -15,26 +15,21 @@
 EXTRA_AFLAGS		:= -Wa,-mppc64bridge
 endif
 
-ifeq ($(CONFIG_4xx),y)
-  KHEAD := head_4xx.o
-else
-  ifeq ($(CONFIG_8xx),y)
-    KHEAD := head_8xx.o
-  else
-    KHEAD := head.o
-  endif
-endif
+# Start off with 'head.o', change as needed.
+HEAD-y				:= head.o
+HEAD-$(CONFIG_4xx)		:= head_4xx.o
+HEAD-$(CONFIG_8xx)		:= head_8xx.o
 
-all: $(KHEAD) kernel.o
+all: $(HEAD-y) kernel.o
 
 O_TARGET := kernel.o
 
 export-objs			:= ppc_ksyms.o prep_setup.o time.o
 
 obj-y				:= entry.o traps.o irq.o idle.o time.o misc.o \
-					process.o signal.o ptrace.o \
-					ppc_htab.o semaphore.o syscalls.o  \
-					align.o setup.o cputable.o
+					process.o signal.o ptrace.o align.o \
+					semaphore.o syscalls.o setup.o \
+					cputable.o ppc_htab.o
 obj-$(CONFIG_6xx)		+= l2cr.o
 obj-$(CONFIG_MODULES)		+= ppc_ksyms.o
 obj-$(CONFIG_POWER4)		+= xics.o
@@ -68,8 +63,8 @@
 obj-$(CONFIG_NVRAM)		+= pmac_nvram.o
 obj-$(CONFIG_PMAC_BACKLIGHT)	+= pmac_backlight.o
 obj-$(CONFIG_PMAC_PBOOK)	+= sleep.o
-obj-$(CONFIG_PPC_RTAS)		+= error_log.o proc_rtas.o
 obj-$(CONFIG_PREP_RESIDUAL)	+= residual.o
+obj-$(CONFIG_PPC_RTAS)		+= error_log.o proc_rtas.o
 obj-$(CONFIG_GEMINI)		+= gemini_prom.o gemini_pci.o gemini_setup.o \
 					open_pic.o
 obj-$(CONFIG_8260)		+= m8260_setup.o ppc8260_pic.o
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/apus_setup.c linux/arch/ppc/kernel/apus_setup.c
--- linux-2.4.14-pre7/arch/ppc/kernel/apus_setup.c	Sat Sep  8 12:38:41 2001
+++ linux/arch/ppc/kernel/apus_setup.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.apus_setup.c 1.20 09/08/01 15:47:42 paulus
+ * BK Id: SCCS/s.apus_setup.c 1.22 10/18/01 11:16:27 trini
  */
 /*
  *  linux/arch/ppc/kernel/apus_setup.c
@@ -1111,9 +1111,6 @@
 	ppc_md.kbd_unexpected_up = apus_kbd_unexpected_up;
 	ppc_md.kbd_leds          = apus_kbd_leds;
 	ppc_md.kbd_init_hw       = apus_kbd_init_hw;
-#ifdef CONFIG_MAGIC_SYSRQ
-	ppc_md.kbd_sysrq_xlate	 = NULL;
-#endif
 
 #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
         ppc_ide_md.ide_init_hwif = apus_ide_init_hwif_ports;
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/gemini_pci.c linux/arch/ppc/kernel/gemini_pci.c
--- linux-2.4.14-pre7/arch/ppc/kernel/gemini_pci.c	Mon May 21 17:04:47 2001
+++ linux/arch/ppc/kernel/gemini_pci.c	Mon Dec  3 23:26:02 2001
@@ -1,10 +1,10 @@
 /*
- * BK Id: SCCS/s.gemini_pci.c 1.5 05/17/01 18:14:21 cort
+ * BK Id: SCCS/s.gemini_pci.c 1.6 10/11/01 08:51:46 trini
  */
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/pci.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
 
 #include <asm/machdep.h>
 #include <asm/gemini.h>
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/gemini_setup.c linux/arch/ppc/kernel/gemini_setup.c
--- linux-2.4.14-pre7/arch/ppc/kernel/gemini_setup.c	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/kernel/gemini_setup.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.gemini_setup.c 1.11 08/20/01 14:34:41 paulus
+ * BK Id: SCCS/s.gemini_setup.c 1.14 10/18/01 11:16:28 trini
  */
 /*
  *  linux/arch/ppc/kernel/setup.c
@@ -150,6 +150,9 @@
 void
 gemini_heartbeat(void)
 {
+	/* We only want to do this on 1 CPU */
+	if ( smp_processor_id() )
+		return;
 	static unsigned long led = GEMINI_LEDBASE+(4*8);
 	static char direction = 8;
 	*(char *)led = 0;
@@ -506,8 +509,8 @@
 static void
 smp_gemini_kick_cpu(int nr)
 {
-	openpic_init_processor( 1<<nr );
-	openpic_init_processor( 0 );
+	openpic_reset_processor_phys(1 << nr);
+	openpic_reset_processor_phys(0);
 }
 
 static void
@@ -574,9 +577,7 @@
 	ppc_md.kbd_unexpected_up = NULL;
 	ppc_md.kbd_leds = NULL;
 	ppc_md.kbd_init_hw = NULL;
-#ifdef CONFIG_MAGIC_SYSRQ
 	ppc_md.ppc_kbd_sysrq_xlate = NULL;
-#endif
 	ppc_md.pcibios_fixup_bus = gemini_pcibios_fixup;
 
 #ifdef CONFIG_SMP
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/head.S linux/arch/ppc/kernel/head.S
--- linux-2.4.14-pre7/arch/ppc/kernel/head.S	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/kernel/head.S	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.head.S 1.29 08/19/01 22:43:23 paulus
+ * BK Id: SCCS/s.head.S 1.31 10/18/01 15:02:09 trini
  */
 /*
  *  PowerPC version 
@@ -32,6 +32,7 @@
 #include <asm/mmu.h>
 #include <asm/pgtable.h>
 #include <asm/cputable.h>
+#include <asm/cache.h>
 
 #ifdef CONFIG_APUS
 #include <asm/amigappc.h>
@@ -1083,7 +1084,7 @@
 copy_and_flush:
 	addi	r5,r5,-4
 	addi	r6,r6,-4
-4:	li	r0,CACHE_LINE_SIZE/4
+4:	li	r0,L1_CACHE_LINE_SIZE/4
 	mtctr	r0
 3:	addi	r6,r6,4			/* copy a cache line */
 	lwzx	r0,r6,r4
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/head_8xx.S linux/arch/ppc/kernel/head_8xx.S
--- linux-2.4.14-pre7/arch/ppc/kernel/head_8xx.S	Wed Aug 29 20:49:36 2001
+++ linux/arch/ppc/kernel/head_8xx.S	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.head_8xx.S 1.21 08/28/01 16:27:27 trini
+ * BK Id: SCCS/s.head_8xx.S 1.23 09/16/01 19:32:54 trini
  */
 /*
  *  arch/ppc/kernel/except_8xx.S
@@ -352,16 +352,21 @@
 	mtspr	MD_TWC, r21	/* Load pte table base address */
 	mfspr	r21, MD_TWC	/* ....and get the pte address */
 	lwz	r20, 0(r21)	/* Get the pte */
-#if 0
+
 	ori	r20, r20, _PAGE_ACCESSED
 	stw	r20, 0(r21)
-#endif
 
-	/* Set four subpage valid bits (24, 25, 26, and 27).
-	 * Clear bit 28 (which should be in the PTE, but we do this anyway).
+	/* The Linux PTE won't go exactly into the MMU TLB.
+	 * Software indicator bits 21, 22 and 28 must be clear.
+	 * Software indicator bits 24, 25, 26, and 27 must be
+	 * set.  All other Linux PTE bits control the behavior
+	 * of the MMU.
 	 */
+	li	r21, 0x0600
+	andc	r20, r20, r21		/* Clear 21, 22 */
 	li	r21, 0x00f0
-	rlwimi	r20, r21, 0, 24, 28
+	rlwimi	r20, r21, 0, 24, 28	/* Set 24-27, clear 28 */
+
 #ifdef CONFIG_8xx_CPU6
 	li	r3, 0x2d80
 	stw	r3, 12(r0)
@@ -441,21 +446,21 @@
 #endif
 	mtspr	MD_TWC, r21
 
-	/* Set PP0 to PP1 (== _PAGE_USER) & ~_PAGE_RW */
-	rlwimi	r20, r20, 32-1, 21, 21
-	rlwinm	r21, r20, 4, 21, 21
-	andc	r20, r20, r21
+	mfspr	r21, MD_TWC	/* get the pte address again */
+	ori	r20, r20, _PAGE_ACCESSED
+	stw	r20, 0(r21)
 
-	/* Set four subpage valid bits (24, 25, 26, and 27).
-	 * Clear bit 28 (which should be in the PTE, but we do this anyway).
+	/* The Linux PTE won't go exactly into the MMU TLB.
+	 * Software indicator bits 21, 22 and 28 must be clear.
+	 * Software indicator bits 24, 25, 26, and 27 must be
+	 * set.  All other Linux PTE bits control the behavior
+	 * of the MMU.
 	 */
-#if 0
-	ori	r20, r20, 0x00f0
-#else
+	li	r21, 0x0600
+	andc	r20, r20, r21		/* Clear 21, 22 */
 	li	r21, 0x00f0
-	rlwimi	r20, r21, 0, 24, 28
+	rlwimi	r20, r21, 0, 24, 28	/* Set 24-27, clear 28 */
 
-#endif
 #ifdef CONFIG_8xx_CPU6
 	li	r3, 0x3d80
 	stw	r3, 12(r0)
@@ -549,15 +554,21 @@
 
 	/* Update 'changed', among others.
 	*/
-	ori	r20, r20, _PAGE_DIRTY|_PAGE_ACCESSED
+	ori	r20, r20, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE
 	mfspr	r21, MD_TWC		/* Get pte address again */
 	stw	r20, 0(r21)		/* and update pte in table */
 
-	/* Set four subpage valid bits (24, 25, 26, and 27).
-	 * Clear bit 28 (which should be in the PTE, but we do this anyway).
+	/* The Linux PTE won't go exactly into the MMU TLB.
+	 * Software indicator bits 21, 22 and 28 must be clear.
+	 * Software indicator bits 24, 25, 26, and 27 must be
+	 * set.  All other Linux PTE bits control the behavior
+	 * of the MMU.
 	 */
+	li	r21, 0x0600
+	andc	r20, r20, r21		/* Clear 21, 22 */
 	li	r21, 0x00f0
-	rlwimi	r20, r21, 0, 24, 28
+	rlwimi	r20, r21, 0, 24, 28	/* Set 24-27, clear 28 */
+
 #ifdef CONFIG_8xx_CPU6
 	li	r3, 0x3d80
 	stw	r3, 12(r0)
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/idle.c linux/arch/ppc/kernel/idle.c
--- linux-2.4.14-pre7/arch/ppc/kernel/idle.c	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/kernel/idle.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.idle.c 1.14 08/15/01 22:43:06 paulus
+ * BK Id: SCCS/s.idle.c 1.16 10/16/01 15:58:42 trini
  */
 /*
  * Idle daemon for PowerPC.  Idle daemon will handle any action
@@ -58,14 +58,13 @@
 	init_idle();
 	for (;;) {
 #ifdef CONFIG_SMP
-		int oldval;
 
 		if (!do_power_save) {
 			/*
 			 * Deal with another CPU just having chosen a thread to
 			 * run here:
 			 */
-			oldval = xchg(&current->need_resched, -1);
+			int oldval = xchg(&current->need_resched, -1);
 
 			if (!oldval) {
 				while(current->need_resched == -1)
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/m8260_setup.c linux/arch/ppc/kernel/m8260_setup.c
--- linux-2.4.14-pre7/arch/ppc/kernel/m8260_setup.c	Mon Oct  8 11:40:13 2001
+++ linux/arch/ppc/kernel/m8260_setup.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.m8260_setup.c 1.26 09/22/01 11:33:22 trini
+ * BK Id: SCCS/s.m8260_setup.c 1.28 10/18/01 11:16:28 trini
  */
 /*
  *  linux/arch/ppc/kernel/setup.c
@@ -49,19 +49,14 @@
 #include "ppc8260_pic.h"
 
 static int m8260_set_rtc_time(unsigned long time);
-unsigned long m8260_get_rtc_time(void);
-void m8260_calibrate_decr(void);
-
-extern unsigned long loops_per_jiffy;
+static unsigned long m8260_get_rtc_time(void);
+static void m8260_calibrate_decr(void);
 
 unsigned char __res[sizeof(bd_t)];
 
-extern char saved_command_line[256];
-
-extern unsigned long find_available_memory(void);
 extern void m8260_cpm_reset(void);
 
-void __init
+static void __init
 m8260_setup_arch(void)
 {
 	/* Reset the Communication Processor Module.
@@ -69,7 +64,7 @@
 	m8260_cpm_reset();
 }
 
-void
+static void
 abort(void)
 {
 #ifdef CONFIG_XMON
@@ -82,7 +77,8 @@
 /* The decrementer counts at the system (internal) clock frequency
  * divided by four.
  */
-void __init m8260_calibrate_decr(void)
+static void __init
+m8260_calibrate_decr(void)
 {
 	bd_t	*binfo = (bd_t *)__res;
 	int freq, divisor;
@@ -98,14 +94,14 @@
  */
 static uint rtc_time;
 
-static int
+static static int
 m8260_set_rtc_time(unsigned long time)
 {
 	rtc_time = time;
 	return(0);
 }
 
-unsigned long
+static unsigned long
 m8260_get_rtc_time(void)
 {
 
@@ -114,7 +110,7 @@
 	return((unsigned long)rtc_time);
 }
 
-void
+static void
 m8260_restart(char *cmd)
 {
 	extern void m8260_gorom(bd_t *bi, uint addr);
@@ -134,20 +130,21 @@
 	m8260_gorom((unsigned int)__pa(__res), startaddr);
 }
 
-void
+static void
 m8260_power_off(void)
 {
    m8260_restart(NULL);
 }
 
-void
+static void
 m8260_halt(void)
 {
    m8260_restart(NULL);
 }
 
 
-int m8260_setup_residual(char *buffer)
+static int
+m8260_setup_residual(char *buffer)
 {
         int     len = 0;
 	bd_t	*bp;
@@ -170,7 +167,7 @@
  * External interrupts can be either edge or level triggered, and
  * need to be initialized by the appropriate driver.
  */
-void __init
+static void __init
 m8260_init_IRQ(void)
 {
 	int i;
@@ -195,7 +192,8 @@
 /*
  * Same hack as 8xx
  */
-unsigned long __init m8260_find_end_of_memory(void)
+static unsigned long __init
+m8260_find_end_of_memory(void)
 {
 	bd_t	*binfo;
 	extern unsigned char __res[];
@@ -241,35 +239,33 @@
 		strcpy(cmd_line, (char *)(r6+KERNELBASE));
 	}
 
-	ppc_md.setup_arch     = m8260_setup_arch;
-	ppc_md.setup_residual = m8260_setup_residual;
-	ppc_md.get_cpuinfo    = NULL;
-	ppc_md.irq_cannonicalize = NULL;
-	ppc_md.init_IRQ       = m8260_init_IRQ;
-	ppc_md.get_irq	      = m8260_get_irq;
-	ppc_md.init           = NULL;
-
-	ppc_md.restart        = m8260_restart;
-	ppc_md.power_off      = m8260_power_off;
-	ppc_md.halt           = m8260_halt;
-
-	ppc_md.time_init      = NULL;
-	ppc_md.set_rtc_time   = m8260_set_rtc_time;
-	ppc_md.get_rtc_time   = m8260_get_rtc_time;
-	ppc_md.calibrate_decr = m8260_calibrate_decr;
-
-	ppc_md.find_end_of_memory = m8260_find_end_of_memory;
-	ppc_md.setup_io_mappings = m8260_map_io;
-
-	ppc_md.kbd_setkeycode    = NULL;
-	ppc_md.kbd_getkeycode    = NULL;
-	ppc_md.kbd_translate     = NULL;
-	ppc_md.kbd_unexpected_up = NULL;
-	ppc_md.kbd_leds          = NULL;
-	ppc_md.kbd_init_hw       = NULL;
-#ifdef CONFIG_MAGIC_SYSRQ
-	ppc_md.kbd_sysrq_xlate	 = NULL;
-#endif
+	ppc_md.setup_arch		= m8260_setup_arch;
+	ppc_md.setup_residual		= m8260_setup_residual;
+	ppc_md.get_cpuinfo		= NULL;
+	ppc_md.irq_cannonicalize	= NULL;
+	ppc_md.init_IRQ			= m8260_init_IRQ;
+	ppc_md.get_irq			= m8260_get_irq;
+	ppc_md.init			= NULL;
+
+	ppc_md.restart			= m8260_restart;
+	ppc_md.power_off		= m8260_power_off;
+	ppc_md.halt			= m8260_halt;
+
+	ppc_md.time_init		= NULL;
+	ppc_md.set_rtc_time		= m8260_set_rtc_time;
+	ppc_md.get_rtc_time		= m8260_get_rtc_time;
+	ppc_md.calibrate_decr		= m8260_calibrate_decr;
+
+	ppc_md.find_end_of_memory	= m8260_find_end_of_memory;
+	ppc_md.setup_io_mappings	= m8260_map_io;
+
+	ppc_md.kbd_setkeycode		= NULL;
+	ppc_md.kbd_getkeycode		= NULL;
+	ppc_md.kbd_translate		= NULL;
+	ppc_md.kbd_unexpected_up	= NULL;
+	ppc_md.kbd_leds			= NULL;
+	ppc_md.kbd_init_hw		= NULL;
+	ppc_md.ppc_kbd_sysrq_xlate	= NULL;
 }
 
 /* Mainly for ksyms.
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/m8xx_setup.c linux/arch/ppc/kernel/m8xx_setup.c
--- linux-2.4.14-pre7/arch/ppc/kernel/m8xx_setup.c	Wed Oct 17 14:37:01 2001
+++ linux/arch/ppc/kernel/m8xx_setup.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.m8xx_setup.c 1.35 10/11/01 11:55:47 trini
+ * BK Id: SCCS/s.m8xx_setup.c 1.38 10/18/01 11:16:28 trini
  *
  *  linux/arch/ppc/kernel/setup.c
  *
@@ -60,8 +60,6 @@
 extern int rd_image_start;	/* starting block # of image */
 #endif
 
-extern char saved_command_line[256];
-
 extern unsigned long find_available_memory(void);
 extern void m8xx_cpm_reset(uint);
 
@@ -373,35 +371,33 @@
 		strcpy(cmd_line, (char *)(r6+KERNELBASE));
 	}
 
-	ppc_md.setup_arch     = m8xx_setup_arch;
-	ppc_md.setup_residual = m8xx_setup_residual;
-	ppc_md.get_cpuinfo    = NULL;
-	ppc_md.irq_cannonicalize = NULL;
-	ppc_md.init_IRQ       = m8xx_init_IRQ;
-	ppc_md.get_irq	      = m8xx_get_irq;
-	ppc_md.init           = NULL;
-
-	ppc_md.restart        = m8xx_restart;
-	ppc_md.power_off      = m8xx_power_off;
-	ppc_md.halt           = m8xx_halt;
-
-	ppc_md.time_init      = NULL;
-	ppc_md.set_rtc_time   = m8xx_set_rtc_time;
-	ppc_md.get_rtc_time   = m8xx_get_rtc_time;
-	ppc_md.calibrate_decr = m8xx_calibrate_decr;
-
-	ppc_md.find_end_of_memory = m8xx_find_end_of_memory;
-	ppc_md.setup_io_mappings = m8xx_map_io;
-
-	ppc_md.kbd_setkeycode    = NULL;
-	ppc_md.kbd_getkeycode    = NULL;
-	ppc_md.kbd_translate     = NULL;
-	ppc_md.kbd_unexpected_up = NULL;
-	ppc_md.kbd_leds          = NULL;
-	ppc_md.kbd_init_hw       = NULL;
-#ifdef CONFIG_MAGIC_SYSRQ
-	ppc_md.ppc_kbd_sysrq_xlate	 = NULL;
-#endif
+	ppc_md.setup_arch		= m8xx_setup_arch;
+	ppc_md.setup_residual		= m8xx_setup_residual;
+	ppc_md.get_cpuinfo		= NULL;
+	ppc_md.irq_cannonicalize	= NULL;
+	ppc_md.init_IRQ			= m8xx_init_IRQ;
+	ppc_md.get_irq			= m8xx_get_irq;
+	ppc_md.init			= NULL;
+
+	ppc_md.restart			= m8xx_restart;
+	ppc_md.power_off		= m8xx_power_off;
+	ppc_md.halt			= m8xx_halt;
+
+	ppc_md.time_init		= NULL;
+	ppc_md.set_rtc_time		= m8xx_set_rtc_time;
+	ppc_md.get_rtc_time		= m8xx_get_rtc_time;
+	ppc_md.calibrate_decr		= m8xx_calibrate_decr;
+
+	ppc_md.find_end_of_memory	= m8xx_find_end_of_memory;
+	ppc_md.setup_io_mappings	= m8xx_map_io;
+
+	ppc_md.kbd_setkeycode		= NULL;
+	ppc_md.kbd_getkeycode		= NULL;
+	ppc_md.kbd_translate		= NULL;
+	ppc_md.kbd_unexpected_up	= NULL;
+	ppc_md.kbd_leds			= NULL;
+	ppc_md.kbd_init_hw		= NULL;
+	ppc_md.ppc_kbd_sysrq_xlate	= NULL;
 
 #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
 	m8xx_ide_init();
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/misc.S linux/arch/ppc/kernel/misc.S
--- linux-2.4.14-pre7/arch/ppc/kernel/misc.S	Mon Oct  8 10:39:18 2001
+++ linux/arch/ppc/kernel/misc.S	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.misc.S 1.28 08/24/01 20:07:37 paulus
+ * BK Id: SCCS/s.misc.S 1.32 10/18/01 17:29:53 trini
  */
 /*
  * This file contains miscellaneous low-level functions.
@@ -385,21 +385,21 @@
 	rlwinm	r5,r5,16,16,31
 	cmpi	0,r5,1
 	beqlr				/* for 601, do nothing */
-	li	r5,CACHE_LINE_SIZE-1
+	li	r5,L1_CACHE_LINE_SIZE-1
 	andc	r3,r3,r5
 	subf	r4,r3,r4
 	add	r4,r4,r5
-	srwi.	r4,r4,LG_CACHE_LINE_SIZE
+	srwi.	r4,r4,LG_L1_CACHE_LINE_SIZE
 	beqlr
 	mtctr	r4
 	mr	r6,r3
 1:	dcbst	0,r3
-	addi	r3,r3,CACHE_LINE_SIZE
+	addi	r3,r3,L1_CACHE_LINE_SIZE
 	bdnz	1b
 	sync				/* wait for dcbst's to get to ram */
 	mtctr	r4
 2:	icbi	0,r6
-	addi	r6,r6,CACHE_LINE_SIZE
+	addi	r6,r6,L1_CACHE_LINE_SIZE
 	bdnz	2b
 	sync				/* additional sync needed on g4 */
 	isync
@@ -412,37 +412,37 @@
  * clean_dcache_range(unsigned long start, unsigned long stop)
  */
 _GLOBAL(clean_dcache_range)
-	li	r5,CACHE_LINE_SIZE-1
+	li	r5,L1_CACHE_LINE_SIZE-1
 	andc	r3,r3,r5
 	subf	r4,r3,r4
 	add	r4,r4,r5
-	srwi.	r4,r4,LG_CACHE_LINE_SIZE
+	srwi.	r4,r4,LG_L1_CACHE_LINE_SIZE
 	beqlr
 	mtctr	r4
 
 1:	dcbst	0,r3
-	addi	r3,r3,CACHE_LINE_SIZE
+	addi	r3,r3,L1_CACHE_LINE_SIZE
 	bdnz	1b
 	sync				/* wait for dcbst's to get to ram */
 	blr
 
 /*
- * Write any modified data cache blocks out to memory
- * and invalidate the corresponding instruction cache blocks.
+ * Write any modified data cache blocks out to memory and invalidate them.
+ * Does not invalidate the corresponding instruction cache blocks.
  *
  * flush_dcache_range(unsigned long start, unsigned long stop)
  */
 _GLOBAL(flush_dcache_range)
-	li	r5,CACHE_LINE_SIZE-1
+	li	r5,L1_CACHE_LINE_SIZE-1
 	andc	r3,r3,r5
 	subf	r4,r3,r4
 	add	r4,r4,r5
-	srwi.	r4,r4,LG_CACHE_LINE_SIZE
+	srwi.	r4,r4,LG_L1_CACHE_LINE_SIZE
 	beqlr
 	mtctr	r4
 
 1:	dcbf	0,r3
-	addi	r3,r3,CACHE_LINE_SIZE
+	addi	r3,r3,L1_CACHE_LINE_SIZE
 	bdnz	1b
 	sync				/* wait for dcbst's to get to ram */
 	blr
@@ -455,16 +455,16 @@
  * invalidate_dcache_range(unsigned long start, unsigned long stop)
  */
 _GLOBAL(invalidate_dcache_range)
-	li	r5,CACHE_LINE_SIZE-1
+	li	r5,L1_CACHE_LINE_SIZE-1
 	andc	r3,r3,r5
 	subf	r4,r3,r4
 	add	r4,r4,r5
-	srwi.	r4,r4,LG_CACHE_LINE_SIZE
+	srwi.	r4,r4,LG_L1_CACHE_LINE_SIZE
 	beqlr
 	mtctr	r4
 
 1:	dcbi	0,r3
-	addi	r3,r3,CACHE_LINE_SIZE
+	addi	r3,r3,L1_CACHE_LINE_SIZE
 	bdnz	1b
 	sync				/* wait for dcbi's to get to ram */
 	blr
@@ -481,18 +481,18 @@
 	mfspr	r5,PVR
 	rlwinm	r5,r5,16,16,31
 	cmpi	0,r5,1
-	beqlr				/* for 601, do nothing */
-	rlwinm	r3,r3,0,0,19		/* Get page base address */
-	li	r4,4096/CACHE_LINE_SIZE	/* Number of lines in a page */
+	beqlr					/* for 601, do nothing */
+	rlwinm	r3,r3,0,0,19			/* Get page base address */
+	li	r4,4096/L1_CACHE_LINE_SIZE	/* Number of lines in a page */
 	mtctr	r4
 	mr	r6,r3
-0:	dcbst	0,r3			/* Write line to ram */
-	addi	r3,r3,CACHE_LINE_SIZE
+0:	dcbst	0,r3				/* Write line to ram */
+	addi	r3,r3,L1_CACHE_LINE_SIZE
 	bdnz	0b
 	sync
 	mtctr	r4
 1:	icbi	0,r6
-	addi	r6,r6,CACHE_LINE_SIZE
+	addi	r6,r6,L1_CACHE_LINE_SIZE
 	bdnz	1b
 	sync
 	isync
@@ -510,11 +510,11 @@
 	mfspr	r5,PVR
 	rlwinm	r5,r5,16,16,31
 	cmpi	0,r5,1
-	beqlr				/* for 601, do nothing */
-	li	r4,4096/CACHE_LINE_SIZE	/* Number of lines in a page */
+	beqlr					/* for 601, do nothing */
+	li	r4,4096/L1_CACHE_LINE_SIZE	/* Number of lines in a page */
 	mtctr	r4
 1:	icbi	0,r3
-	addi	r3,r3,CACHE_LINE_SIZE
+	addi	r3,r3,L1_CACHE_LINE_SIZE
 	bdnz	1b
 	sync
 	isync
@@ -526,7 +526,7 @@
  * displaced).  This only works on cacheable memory.
  */
 _GLOBAL(clear_page)
-	li	r0,4096/CACHE_LINE_SIZE
+	li	r0,4096/L1_CACHE_LINE_SIZE
 	mtctr	r0
 #ifdef CONFIG_8xx
 	li	r4, 0
@@ -537,7 +537,7 @@
 #else
 1:	dcbz	0,r3
 #endif
-	addi	r3,r3,CACHE_LINE_SIZE
+	addi	r3,r3,L1_CACHE_LINE_SIZE
 	bdnz	1b
 	blr
 
@@ -563,20 +563,20 @@
 	li	r5,4
 
 #ifndef CONFIG_8xx
-#if MAX_COPY_PREFETCH > 1
-	li	r0,MAX_COPY_PREFETCH
+#if MAX_L1_COPY_PREFETCH > 1
+	li	r0,MAX_L1_COPY_PREFETCH
 	li	r11,4
 	mtctr	r0
 11:	dcbt	r11,r4
-	addi	r11,r11,CACHE_LINE_SIZE
+	addi	r11,r11,L1_CACHE_LINE_SIZE
 	bdnz	11b
-#else /* MAX_COPY_PREFETCH == 1 */
+#else /* MAX_L1_COPY_PREFETCH == 1 */
 	dcbt	r5,r4
-	li	r11,CACHE_LINE_SIZE+4
-#endif /* MAX_COPY_PREFETCH */
+	li	r11,L1_CACHE_LINE_SIZE+4
+#endif /* MAX_L1_COPY_PREFETCH */
 #endif /* CONFIG_8xx */
 
-	li	r0,4096/CACHE_LINE_SIZE
+	li	r0,4096/L1_CACHE_LINE_SIZE
 	mtctr	r0
 1:
 #ifndef CONFIG_8xx
@@ -584,12 +584,12 @@
 	dcbz	r5,r3
 #endif
 	COPY_16_BYTES
-#if CACHE_LINE_SIZE >= 32
+#if L1_CACHE_LINE_SIZE >= 32
 	COPY_16_BYTES
-#if CACHE_LINE_SIZE >= 64
+#if L1_CACHE_LINE_SIZE >= 64
 	COPY_16_BYTES
 	COPY_16_BYTES
-#if CACHE_LINE_SIZE >= 128
+#if L1_CACHE_LINE_SIZE >= 128
 	COPY_16_BYTES
 	COPY_16_BYTES
 	COPY_16_BYTES
@@ -1104,22 +1104,23 @@
 	.long sys_ni_syscall		/* streams2 */
 	.long sys_vfork
 	.long sys_getrlimit	/* 190 */
-	.long sys_ni_syscall		/* 191 */	/* Unused */
-	.long sys_mmap2			/* 192 */
-	.long sys_truncate64		/* 193 */
-	.long sys_ftruncate64		/* 194 */
-	.long sys_stat64		/* 195 */
-	.long sys_lstat64		/* 196 */
-	.long sys_fstat64		/* 197 */
-	.long sys_pciconfig_read	/* 198 */
-	.long sys_pciconfig_write 	/* 199 */
+	.long sys_readahead
+	.long sys_mmap2	
+	.long sys_truncate64
+	.long sys_ftruncate64
+	.long sys_stat64	/* 195 */
+	.long sys_lstat64
+	.long sys_fstat64
+	.long sys_pciconfig_read
+	.long sys_pciconfig_write 
 	.long sys_pciconfig_iobase 	/* 200 */
 	.long sys_ni_syscall		/* 201 - reserved - MacOnLinux - new */
-	.long sys_getdents64		/* 202 */
-	.long sys_pivot_root		/* 203 */
-	.long sys_fcntl64		/* 204 */
-	.long sys_madvise		/* 205 */
-	.long sys_mincore		/* 206 */
+	.long sys_getdents64
+	.long sys_pivot_root
+	.long sys_fcntl64
+	.long sys_madvise	/* 205 */
+	.long sys_mincore
+	.long sys_gettid
 	.rept NR_syscalls-(.-sys_call_table)/4
 		.long sys_ni_syscall
 	.endr
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/oak_setup.c linux/arch/ppc/kernel/oak_setup.c
--- linux-2.4.14-pre7/arch/ppc/kernel/oak_setup.c	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/kernel/oak_setup.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.oak_setup.c 1.8 08/15/01 21:48:38 paulus
+ * BK Id: SCCS/s.oak_setup.c 1.10 10/18/01 11:16:28 trini
  */
 /*
  *
@@ -128,12 +128,7 @@
 	ppc_md.kbd_unexpected_up 	= NULL;
 	ppc_md.kbd_leds          	= NULL;
 	ppc_md.kbd_init_hw       	= NULL;
-
-#if defined(CONFIG_MAGIC_SYSRQ)
 	ppc_md.ppc_kbd_sysrq_xlate	= NULL;
-#endif
-
-	return;
 }
 
 /*
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/open_pic.c linux/arch/ppc/kernel/open_pic.c
--- linux-2.4.14-pre7/arch/ppc/kernel/open_pic.c	Sat Sep  8 12:38:41 2001
+++ linux/arch/ppc/kernel/open_pic.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.open_pic.c 1.28 09/08/01 15:47:42 paulus
+ * BK Id: SCCS/s.open_pic.c 1.31 10/11/01 12:09:11 trini
  */
 /*
  *  arch/ppc/kernel/open_pic.c -- OpenPIC Interrupt Handling
@@ -515,10 +515,9 @@
 #define physmask(cpumask)	(cpumask)
 #endif
 
-void openpic_init_processor(u_int cpumask)
+void openpic_reset_processor_phys(u_int mask)
 {
-	openpic_write(&OpenPIC->Global.Processor_Initialization,
-		      physmask(cpumask));
+	openpic_write(&OpenPIC->Global.Processor_Initialization, mask);
 }
 
 static spinlock_t openpic_setup_lock = SPIN_LOCK_UNLOCKED;
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/open_pic.h linux/arch/ppc/kernel/open_pic.h
--- linux-2.4.14-pre7/arch/ppc/kernel/open_pic.h	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/kernel/open_pic.h	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.open_pic.h 1.12 08/20/01 22:33:28 paulus
+ * BK Id: SCCS/s.open_pic.h 1.14 10/11/01 12:09:12 trini
  */
 /*
  *  arch/ppc/kernel/open_pic.h -- OpenPIC Interrupt Handling
@@ -46,7 +46,7 @@
 extern void openpic_request_IPIs(void);
 extern void do_openpic_setup_cpu(void);
 extern int openpic_get_irq(struct pt_regs *regs);
-extern void openpic_init_processor(u_int cpumask);
+extern void openpic_reset_processor_phys(u_int cpumask);
 extern void openpic_setup_ISU(int isu_num, unsigned long addr);
 extern void openpic_cause_IPI(u_int ipi, u_int cpumask);
 extern void smp_openpic_message_pass(int target, int msg, unsigned long data,
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/pci.c linux/arch/ppc/kernel/pci.c
--- linux-2.4.14-pre7/arch/ppc/kernel/pci.c	Sun Aug 12 12:43:26 2001
+++ linux/arch/ppc/kernel/pci.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.pci.c 1.28 08/08/01 16:35:43 paulus
+ * BK Id: SCCS/s.pci.c 1.31 11/01/01 12:24:55 trini
  */
 /*
  * Common pmac/prep/chrp pci routines. -- Cort
@@ -39,6 +39,8 @@
 unsigned long isa_io_base     = 0;
 unsigned long isa_mem_base    = 0;
 unsigned long pci_dram_offset = 0;
+
+void pcibios_make_OF_bus_map(void);
 
 static void pcibios_fixup_resources(struct pci_dev* dev);
 static void fixup_broken_pcnet32(struct pci_dev* dev);
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/pmac_setup.c linux/arch/ppc/kernel/pmac_setup.c
--- linux-2.4.14-pre7/arch/ppc/kernel/pmac_setup.c	Sat Sep  8 12:38:42 2001
+++ linux/arch/ppc/kernel/pmac_setup.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.pmac_setup.c 1.39 09/08/01 15:47:42 paulus
+ * BK Id: SCCS/s.pmac_setup.c 1.41 10/18/01 11:16:28 trini
  */
 /*
  *  linux/arch/ppc/kernel/setup.c
@@ -94,11 +94,9 @@
 				 char raw_mode);
 extern char mac_hid_kbd_unexpected_up(unsigned char keycode);
 extern void mac_hid_init_hw(void);
-#ifdef CONFIG_MAGIC_SYSRQ
-extern unsigned char mac_hid_kbd_sysrq_xlate[128];
-extern unsigned char pckbd_sysrq_xlate[128];
-extern unsigned char mackbd_sysrq_xlate[128];
-#endif /* CONFIG_MAGIC_SYSRQ */
+extern unsigned char mac_hid_kbd_sysrq_xlate[];
+extern unsigned char pckbd_sysrq_xlate[];
+extern unsigned char mackbd_sysrq_xlate[];
 extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode);
 extern int pckbd_getkeycode(unsigned int scancode);
 extern int pckbd_translate(unsigned char scancode, unsigned char *keycode,
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/ppc_asm.h linux/arch/ppc/kernel/ppc_asm.h
--- linux-2.4.14-pre7/arch/ppc/kernel/ppc_asm.h	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/kernel/ppc_asm.h	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.ppc_asm.h 1.16 08/15/01 22:43:06 paulus
+ * BK Id: SCCS/s.ppc_asm.h 1.18 10/18/01 15:02:09 trini
  */
 /*
  * arch/ppc/kernel/ppc_asm.h
@@ -156,22 +156,3 @@
 #define MTMSRD(r)	mtmsr	r
 #define CLR_TOP32(r)
 #endif /* CONFIG_PPC64BRIDGE */
-
-/*
- * Defines for cache-line size etc.
- */
-#if defined(CONFIG_4xx) || defined(CONFIG_8xx)
-#define CACHE_LINE_SIZE		16
-#define LG_CACHE_LINE_SIZE	4
-#define MAX_COPY_PREFETCH	1
-
-#elif !defined(CONFIG_PPC64BRIDGE)
-#define CACHE_LINE_SIZE		32
-#define LG_CACHE_LINE_SIZE	5
-#define MAX_COPY_PREFETCH	4
-
-#else
-#define CACHE_LINE_SIZE		128
-#define LG_CACHE_LINE_SIZE	7
-#define MAX_COPY_PREFETCH	1
-#endif /* CONFIG_4xx || CONFIG_8xx */
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/ppc_htab.c linux/arch/ppc/kernel/ppc_htab.c
--- linux-2.4.14-pre7/arch/ppc/kernel/ppc_htab.c	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/kernel/ppc_htab.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.ppc_htab.c 1.17 08/20/01 22:59:41 paulus
+ * BK Id: SCCS/s.ppc_htab.c 1.19 10/16/01 15:58:42 trini
  */
 /*
  * PowerPC hash table management proc entry.  Will show information
@@ -115,10 +115,13 @@
 			     size_t count, loff_t *ppos)
 {
 	unsigned long mmcr0 = 0, pmc1 = 0, pmc2 = 0;
-	int n = 0, valid;
+	int n = 0;
+#ifdef CONFIG_PPC_STD_MMU
+	int valid;
 	unsigned int kptes = 0, uptes = 0, zombie_ptes = 0;
 	PTE *ptr;
 	struct task_struct *p;
+#endif /* CONFIG_PPC_STD_MMU */
 	char buffer[512];
 
 	if (count < 0)
@@ -206,9 +209,9 @@
 		      "Evicts\t\t: %lu\n",
 		      htab_reloads, htab_preloads, htab_hash_searches,
 		      primary_pteg_full, htab_evicts);
+return_string:
 #endif /* CONFIG_PPC_STD_MMU */
 	
-return_string:
 	n += sprintf( buffer + n,
 		      "Non-error misses: %lu\n"
 		      "Error misses\t: %lu\n",
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/ppc_ksyms.c linux/arch/ppc/kernel/ppc_ksyms.c
--- linux-2.4.14-pre7/arch/ppc/kernel/ppc_ksyms.c	Mon Oct  8 11:40:13 2001
+++ linux/arch/ppc/kernel/ppc_ksyms.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.ppc_ksyms.c 1.55 10/02/01 12:33:42 trini
+ * BK Id: SCCS/s.ppc_ksyms.c 1.57 10/16/01 15:58:42 trini
  */
 #include <linux/config.h>
 #include <linux/module.h>
@@ -351,7 +351,7 @@
 EXPORT_SYMBOL(set_context);
 EXPORT_SYMBOL(handle_mm_fault); /* For MOL */
 EXPORT_SYMBOL_NOVERS(disarm_decr);
-#if !defined(CONFIG_8xx) && !defined(CONFIG_4xx)
+#ifdef CONFIG_PPC_STD_MMU
 EXPORT_SYMBOL(flush_hash_page); /* For MOL */
 extern long *intercept_table;
 EXPORT_SYMBOL(intercept_table);
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/prep_setup.c linux/arch/ppc/kernel/prep_setup.c
--- linux-2.4.14-pre7/arch/ppc/kernel/prep_setup.c	Mon Oct 15 13:35:26 2001
+++ linux/arch/ppc/kernel/prep_setup.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.prep_setup.c 1.38 09/15/01 09:13:52 trini
+ * BK Id: SCCS/s.prep_setup.c 1.41 10/18/01 11:16:28 trini
  */
 /*
  *  linux/arch/ppc/kernel/setup.c
@@ -86,14 +86,14 @@
 extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode);
 extern int pckbd_getkeycode(unsigned int scancode);
 extern int pckbd_translate(unsigned char scancode, unsigned char *keycode,
-			   char raw_mode);
+		char raw_mode);
 extern char pckbd_unexpected_up(unsigned char keycode);
 extern void pckbd_leds(unsigned char leds);
 extern void pckbd_init_hw(void);
-extern unsigned char pckbd_sysrq_xlate[128];
+extern unsigned char pckbd_sysrq_xlate[];
 
 extern void prep_find_bridges(void);
-extern char saved_command_line[256];
+extern char saved_command_line[];
 
 int _prep_type;
 
@@ -121,7 +121,7 @@
 EXPORT_SYMBOL(ppc_cs4232_dma2);
 #endif
 
-int __prep
+static int __prep
 prep_get_cpuinfo(char *buffer)
 {
 	extern char *Motherboard_map_name;
@@ -131,11 +131,11 @@
 #endif
 
 #ifdef CONFIG_SMP
-#define CD(X)		(cpu_data[n].X)  
+#define CD(X)		(cpu_data[n].X)
 #else
 #define CD(X) (X)
 #endif
-  
+
 	len = sprintf(buffer,"machine\t\t: PReP %s\n",Motherboard_map_name);
 
 	
@@ -151,9 +151,10 @@
 			goto no_l2;
 		}
 		len += sprintf(buffer+len,"%sKb,",
-			       (((*(unsigned char *)0x8000080d)>>2)&1)?"512":"256");
+				(((*(unsigned char *)0x8000080d)>>2)&1)
+					? "512" : "256");
 		len += sprintf(buffer+len,"%ssync\n",
-			       ((*(unsigned char *)0x8000080d)>>7) ? "":"a");
+				((*(unsigned char *)0x8000080d)>>7) ? "" : "a");
 		break;
 	case _PREP_Motorola:
 		len += sprintf(buffer+len,"L2\t\t: ");
@@ -174,26 +175,26 @@
 			break;
 		default:
 			len += sprintf(buffer+len, "%x\n",
-				       *((unsigned char *)CACHECRBA));
+					*((unsigned char *)CACHECRBA));
 		}
 		
 		len += sprintf(buffer+len,",parity %s",
-			       (*((unsigned char *)CACHECRBA) & L2CACHE_PARITY) ?
-			       "enabled" : "disabled");
-		
+				(*((unsigned char *)CACHECRBA) & L2CACHE_PARITY)
+				? "enabled" : "disabled");
+
 		len += sprintf(buffer+len, " SRAM:");
 		
 		switch ( ((*((unsigned char *)CACHECRBA) & 0xf0) >> 4) & ~(0x3) )
 		{
 		case 1: len += sprintf(buffer+len,
-				       "synchronous,parity,flow-through\n");
+					"synchronous,parity,flow-through\n");
 			break;
 		case 2: len += sprintf(buffer+len,"asynchronous,no parity\n");
 			break;
 		case 3: len += sprintf(buffer+len,"asynchronous,parity\n");
 			break;
 		default:len += sprintf(buffer+len,
-				       "synchronous,pipelined,no parity\n");
+					"synchronous,pipelined,no parity\n");
 			break;
 		}
 		break;
@@ -214,17 +215,17 @@
 	for ( i = 0 ; (res->ActualNumMemories) && (i < MAX_MEMS) ; i++ )
 	{
 		if ( res->Memories[i].SIMMSize != 0 )
-			len += sprintf(buffer+len,"%d:%ldM ",i,
-				       (res->Memories[i].SIMMSize > 1024) ?
-				       res->Memories[i].SIMMSize>>20 :
-				       res->Memories[i].SIMMSize);
+			len += sprintf(buffer+len,"%d:%ldM ", i,
+					(res->Memories[i].SIMMSize > 1024) ? 
+					res->Memories[i].SIMMSize>>20 : 
+					res->Memories[i].SIMMSize);
 	}
 	len += sprintf(buffer+len,"\n");
 	return len;
 #endif
 }
 
-void __init
+static void __init
 prep_setup_arch(void)
 {
 	unsigned char reg;
@@ -277,20 +278,19 @@
 		break;
 	}
 
-      /* Read in NVRAM data */ 
-      init_prep_nvram();
-       
-      /* if no bootargs, look in NVRAM */
-      if ( cmd_line[0] == '\0' ) {
-              char *bootargs;
-              bootargs = prep_nvram_get_var("bootargs");
-              if (bootargs != NULL) {
-                      strcpy(cmd_line, bootargs);
-
-                      /* again.. */
-                      strcpy(saved_command_line, cmd_line);
-              }
-      }
+	/* Read in NVRAM data */ 
+	init_prep_nvram();
+
+	/* if no bootargs, look in NVRAM */
+	if ( cmd_line[0] == '\0' ) {
+		char *bootargs;
+		 bootargs = prep_nvram_get_var("bootargs");
+		 if (bootargs != NULL) {
+			 strcpy(cmd_line, bootargs);
+			 /* again.. */
+			 strcpy(saved_command_line, cmd_line);
+		}
+	}
 
 #ifdef CONFIG_SOUND_CS4232
 	/*
@@ -303,11 +303,11 @@
 	if ( _machine == _MACH_prep )
 	{
 		extern struct card_info snd_installed_cards[];
-		struct card_info  *snd_ptr;
+		struct card_info *snd_ptr;
 
 		for ( snd_ptr = snd_installed_cards; 
-		      snd_ptr < &snd_installed_cards[num_sound_cards];
-		      snd_ptr++ )
+			snd_ptr < &snd_installed_cards[num_sound_cards];
+			snd_ptr++ )
 		{
 			if ( snd_ptr->card_type == SNDCARD_CS4232 )
 			{
@@ -321,7 +321,7 @@
 				if ( _prep_type == _PREP_IBM )
 				{
 					snd_ptr->config.io_base = 0x530;
-					snd_ptr->config.irq =  5;
+					snd_ptr->config.irq = 5;
 					snd_ptr->config.dma = ppc_cs4232_dma = 1;
 					/* this is wrong - but leave it for now */
 					snd_ptr->config.dma2 = ppc_cs4232_dma2 = 7;
@@ -357,17 +357,23 @@
  * This allows for a faster boot as we do not need to calibrate the
  * decrementer against another clock. This is important for embedded systems.
  */
-void __init prep_res_calibrate_decr(void)
+static int __init
+prep_res_calibrate_decr(void)
 {
-#ifdef CONFIG_PREP_RESIDUAL	
-	unsigned long freq, divisor=4;
+#ifdef CONFIG_PREP_RESIDUAL
+	unsigned long freq, divisor = 4;
 
-	freq = res->VitalProductData.ProcessorBusHz;
-	printk("time_init: decrementer frequency = %lu.%.6lu MHz\n",
-	       (freq/divisor)/1000000, (freq/divisor)%1000000);
-	tb_ticks_per_jiffy = freq / HZ / divisor;
-	tb_to_us = mulhwu_scale_factor(freq/divisor, 1000000);
+	if ( res->VitalProductData.ProcessorBusHz ) {
+		freq = res->VitalProductData.ProcessorBusHz;
+		printk("time_init: decrementer frequency = %lu.%.6lu MHz\n",
+				(freq/divisor)/1000000,
+				(freq/divisor)%1000000);
+		tb_to_us = mulhwu_scale_factor(freq/divisor, 1000000);
+		tb_ticks_per_jiffy = freq / HZ / divisor;
+		return 0;
+	} else
 #endif	
+		return 1;
 }
 
 /*
@@ -383,10 +389,8 @@
 static volatile int calibrate_steps __initdata = 3;
 static unsigned tbstamp __initdata = 0;
 
-void __init
-prep_calibrate_decr_handler(int            irq,
-			    void           *dev,
-			    struct pt_regs *regs)
+static void __init
+prep_calibrate_decr_handler(int irq, void *dev, struct pt_regs *regs)
 {
 	unsigned long t, freq;
 	int step=--calibrate_steps;
@@ -397,44 +401,54 @@
 	} else {
 		freq = (t - tbstamp)*HZ;
 		printk("time_init: decrementer frequency = %lu.%.6lu MHz\n",
-		       freq/1000000, freq%1000000);
+			 freq/1000000, freq%1000000);
 		tb_ticks_per_jiffy = freq / HZ;
 		tb_to_us = mulhwu_scale_factor(freq, 1000000);
 	}
 }
 
-void __init prep_calibrate_decr(void)
+static void __init
+prep_calibrate_decr(void)
 {
-	unsigned long flags;
+	int res;
+
+	/* Try and get this from the residual data. */
+	res = prep_res_calibrate_decr();
 
+	/* If we didn't get it from the residual data, try this. */
+	if ( res ) {
+		unsigned long flags;
 
-	save_flags(flags);
+		save_flags(flags);
 
 #define TIMER0_COUNT 0x40
 #define TIMER_CONTROL 0x43
-	/* set timer to periodic mode */
-	outb_p(0x34,TIMER_CONTROL);/* binary, mode 2, LSB/MSB, ch 0 */
-	/* set the clock to ~100 Hz */
-	outb_p(LATCH & 0xff , TIMER0_COUNT);	/* LSB */
-	outb(LATCH >> 8 , TIMER0_COUNT);	/* MSB */
-	
-	if (request_irq(0, prep_calibrate_decr_handler, 0, "timer", NULL) != 0)
-		panic("Could not allocate timer IRQ!");
-	__sti();
-	while ( calibrate_steps ) /* nothing */; /* wait for calibrate */
-        restore_flags(flags);
-	free_irq( 0, NULL);
+		/* set timer to periodic mode */
+		outb_p(0x34,TIMER_CONTROL);/* binary, mode 2, LSB/MSB, ch 0 */
+		/* set the clock to ~100 Hz */
+		outb_p(LATCH & 0xff , TIMER0_COUNT);	/* LSB */
+		outb(LATCH >> 8 , TIMER0_COUNT);	/* MSB */
+
+		if (request_irq(0, prep_calibrate_decr_handler, 0, "timer", NULL) != 0)
+			panic("Could not allocate timer IRQ!");
+		__sti();
+		/* wait for calibrate */
+		while ( calibrate_steps )
+			;
+		restore_flags(flags);
+		free_irq( 0, NULL);
+	}
 }
 
-
-static long __init mk48t59_init(void) {
+static long __init
+mk48t59_init(void) {
 	unsigned char tmp;
 
 	tmp = ppc_md.nvram_read_val(MK48T59_RTC_CONTROLB);
 	if (tmp & MK48T59_RTC_CB_STOP) {
 		printk("Warning: RTC was stopped, date will be wrong.\n");
 		ppc_md.nvram_write_val(MK48T59_RTC_CONTROLB, 
-				       tmp & ~MK48T59_RTC_CB_STOP);
+					 tmp & ~MK48T59_RTC_CB_STOP);
 		/* Low frequency crystal oscillators may take a very long
 		 * time to startup and stabilize. For now just ignore the
 		 * the issue, but attempting to calibrate the decrementer
@@ -454,12 +468,13 @@
  * the RTC registers have just been set up in the right state by the
  * preceding routine.
  */
-void __init mk48t59_calibrate_decr(void)
+static void __init
+mk48t59_calibrate_decr(void)
 {
 	unsigned long freq;
 	unsigned long t1;
-        unsigned char save_control;
-        long i;
+	unsigned char save_control;
+	long i;
 	unsigned char sec;
  
 		
@@ -467,7 +482,7 @@
 	save_control = ppc_md.nvram_read_val(MK48T59_RTC_CONTROLB);
 	
 	ppc_md.nvram_write_val(MK48T59_RTC_CONTROLA,
-			     (save_control & (~MK48T59_RTC_CB_STOP)));
+			(save_control & (~MK48T59_RTC_CB_STOP)));
 
 	/* Now make sure the read bit is off so the value will change. */
 	save_control = ppc_md.nvram_read_val(MK48T59_RTC_CONTROLA);
@@ -484,27 +499,26 @@
 	 * stamp with a loop count as parameter would be the  solution.
 	 */
 	for (i = 0 ; i < 1000000 ; i++)	{ /* may take up to 1 second... */
-	   t1 = get_tbl();
-	   if (ppc_md.nvram_read_val(MK48T59_RTC_SECONDS) != sec) {
-	      break;
-	   }
+		t1 = get_tbl();
+		if (ppc_md.nvram_read_val(MK48T59_RTC_SECONDS) != sec) {
+			break;
+		}
 	}
 
 	sec = ppc_md.nvram_read_val(MK48T59_RTC_SECONDS);
 	for (i = 0 ; i < 1000000 ; i++)	{ /* Should take up 1 second... */
-	   freq = get_tbl()-t1;
-	   if (ppc_md.nvram_read_val(MK48T59_RTC_SECONDS) != sec) {
-	      break;
-	   }
+		freq = get_tbl()-t1;
+		if (ppc_md.nvram_read_val(MK48T59_RTC_SECONDS) != sec)
+			break;
 	}
 
 	printk("time_init: decrementer frequency = %lu.%.6lu MHz\n",
-	       freq/1000000, freq%1000000);
+		 freq/1000000, freq%1000000);
 	tb_ticks_per_jiffy = freq / HZ;
 	tb_to_us = mulhwu_scale_factor(freq, 1000000);
 }
 
-void __prep
+static void __prep
 prep_restart(char *cmd)
 {
 	unsigned long i = 10000;
@@ -523,33 +537,7 @@
 	panic("restart failed\n");
 }
 
-/*
- * This function will restart a board regardless of port 92 functionality
- */
-void __prep
-prep_direct_restart(char *cmd)
-{
-	u32 jumpaddr=0xfff00100;
-	u32 defaultmsr=MSR_IP;
-
-	/*
-	 * This will ALWAYS work regardless of port 92
-	 * functionality
-	 */
-	__cli();
-
-	__asm__ __volatile__("\n\
-	mtspr   26, %1  /* SRR0 */	\n\
-	mtspr   27, %0  /* SRR1 */	\n\
-	rfi"
-	:
-	: "r" (defaultmsr), "r" (jumpaddr));
-	/*
-	 * Not reached
-	 */
-}
-
-void __prep
+static void __prep
 prep_halt(void)
 {
 	unsigned long flags;
@@ -615,7 +603,7 @@
 	udelay(100);				/* important: let controller recover */
 }
 
-void __prep
+static void __prep
 prep_power_off(void)
 {
 	if ( _prep_type == _PREP_IBM) {
@@ -640,19 +628,19 @@
 	}
 }
 
-int __prep
+static int __prep
 prep_setup_residual(char *buffer)
 {
-        int len = 0;
+	int len = 0;
 
 	/* PREP's without residual data will give incorrect values here */
 	len += sprintf(len+buffer, "clock\t\t: ");
 #ifdef CONFIG_PREP_RESIDUAL	
 	if ( res->ResidualLength )
 		len += sprintf(len+buffer, "%ldMHz\n",
-		       (res->VitalProductData.ProcessorHz > 1024) ?
-		       res->VitalProductData.ProcessorHz>>20 :
-		       res->VitalProductData.ProcessorHz);
+			 (res->VitalProductData.ProcessorHz > 1024) ?
+			 res->VitalProductData.ProcessorHz>>20 :
+			res->VitalProductData.ProcessorHz);
 	else
 #endif /* CONFIG_PREP_RESIDUAL */
 		len += sprintf(len+buffer, "???\n");
@@ -660,7 +648,7 @@
 	return len;
 }
 
-u_int __prep
+static unsigned int __prep
 prep_irq_cannonicalize(u_int irq)
 {
 	if (irq == 2)
@@ -673,29 +661,29 @@
 	}
 }
 
-int __prep
+static int __prep
 prep_get_irq(struct pt_regs *regs)
 {
 	return i8259_irq(smp_processor_id());
 }		
 
-void __init
+static void __init
 prep_init_IRQ(void)
 {
 	int i;
 
 	if (OpenPIC_Addr != NULL)
 		openpic_init(1, NUM_8259_INTERRUPTS, 0, -1);
-        for ( i = 0 ; i < NUM_8259_INTERRUPTS  ; i++ )
-                irq_desc[i].handler = &i8259_pic;
-        i8259_init();	
+	for ( i = 0 ; i < NUM_8259_INTERRUPTS ; i++ )
+		irq_desc[i].handler = &i8259_pic;
+	i8259_init();	
 }
 
 #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
 /*
  * IDE stuff.
  */
-int __prep
+static int __prep
 prep_ide_default_irq(ide_ioreg_t base)
 {
 	switch (base) {
@@ -709,7 +697,7 @@
 	}
 }
 
-ide_ioreg_t __prep
+static ide_ioreg_t __prep
 prep_ide_default_io_base(int index)
 {
 	switch (index) {
@@ -718,17 +706,17 @@
 		case 2: return 0x1e8;
 		case 3: return 0x168;
 		default:
-                        return 0;
+			return 0;
 	}
 }
 
-int __prep
+static int __prep
 prep_ide_check_region(ide_ioreg_t from, unsigned int extent)
 {
-        return check_region(from, extent);
+	return check_region(from, extent);
 }
 
-void __prep
+static void __prep
 prep_ide_request_region(ide_ioreg_t from,
 			unsigned int extent,
 			const char *name)
@@ -736,14 +724,14 @@
 	request_region(from, extent, name);
 }
 
-void __prep
+static void __prep
 prep_ide_release_region(ide_ioreg_t from,
 			unsigned int extent)
 {
 	release_region(from, extent);
 }
 
-void __init
+static void __init
 prep_ide_init_hwif_ports (hw_regs_t *hw, ide_ioreg_t data_port, ide_ioreg_t ctrl_port, int *irq)
 {
 	ide_ioreg_t reg = data_port;
@@ -756,7 +744,7 @@
 	if (ctrl_port) {
 		hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
 	} else {
-		hw->io_ports[IDE_CONTROL_OFFSET] =  hw->io_ports[IDE_DATA_OFFSET] + 0x206;
+		hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
 	}
 	if (irq != NULL)
 		*irq = 0;
@@ -765,7 +753,7 @@
 
 #ifdef CONFIG_SMP
 /* PReP (MTX) support */
-static int
+static int __init
 smp_prep_probe(void)
 {
 	extern int mot_multi;
@@ -779,7 +767,7 @@
 	return 1;
 }
 
-static void
+static void __init
 smp_prep_kick_cpu(int nr)
 {
 	*(unsigned long *)KERNELBASE = nr;
@@ -787,14 +775,14 @@
 	printk("CPU1 reset, waiting\n");
 }
 
-static void
+static void __init
 smp_prep_setup_cpu(int cpu_nr)
 {
 	if (OpenPIC_Addr)
 		do_openpic_setup_cpu();
 }
 
-static struct smp_ops_t prep_smp_ops = {
+static struct smp_ops_t prep_smp_ops __prepdata = {
 	smp_openpic_message_pass,
 	smp_prep_probe,
 	smp_prep_kick_cpu,
@@ -808,7 +796,8 @@
  * this will likely stay separate from the pmac.
  * -- Cort
  */
-unsigned long __init prep_find_end_of_memory(void)
+static unsigned long __init
+prep_find_end_of_memory(void)
 {
 	unsigned long total = 0;
 	extern unsigned int boot_mem_size;
@@ -819,15 +808,14 @@
 
 	if (total == 0 && boot_mem_size != 0)
 		total = boot_mem_size;
-
-	if (total == 0) {
+	else if (total == 0) {
 		/*
 		 * I need a way to probe the amount of memory if the residual
 		 * data doesn't contain it. -- Cort
 		 */
 		total = 0x02000000;
 		printk(KERN_INFO "Ramsize from residual data was 0"
-		       " -- defaulting to %ldM\n", total>>20);
+			 " -- defaulting to %ldM\n", total>>20);
 	}
 
 	return (total);
@@ -838,16 +826,17 @@
  * the io areas.  RAM was mapped by mapin_ram().
  * -- Cort
  */
-void __init prep_map_io(void)
+static void __init
+prep_map_io(void)
 {
 	io_block_mapping(0x80000000, PREP_ISA_IO_BASE, 0x10000000, _PAGE_IO);
 	io_block_mapping(0xf0000000, PREP_ISA_MEM_BASE, 0x08000000, _PAGE_IO);
 }
 
-void __init
+static void __init
 prep_init2(void)
 {
-#ifdef CONFIG_NVRAM  
+#ifdef CONFIG_NVRAM
 	request_region(PREP_NVRAM_AS0, 0x8, "nvram");
 #endif
 	request_region(0x20,0x20,"pic1");
@@ -860,7 +849,7 @@
 
 void __init
 prep_init(unsigned long r3, unsigned long r4, unsigned long r5,
-	  unsigned long r6, unsigned long r7)
+		unsigned long r6, unsigned long r7)
 {
 #ifdef CONFIG_PREP_RESIDUAL	
 	RESIDUAL *old_res = (RESIDUAL *)(r3 + KERNELBASE);
@@ -869,7 +858,7 @@
 	if ( r3 )
 	{
 		memcpy((void *)res,(void *)(r3+KERNELBASE),
-		       sizeof(RESIDUAL));
+			 sizeof(RESIDUAL));
 	}
 #endif
 
@@ -882,7 +871,7 @@
 #endif /* CONFIG_BLK_DEV_INITRD */
 
 	/* Copy cmd_line parameters */
-	if ( r6)
+	if ( r6 )
 	{
 		*(char *)(r7 + KERNELBASE) = 0;
 		strcpy(cmd_line, (char *)(r6 + KERNELBASE));
@@ -905,7 +894,7 @@
 			_prep_type = _PREP_Motorola;
 	}
 	else /* assume motorola if no residual (netboot?) */
-#endif	  
+#endif
 	{
 		_prep_type = _PREP_Motorola;
 	}
@@ -928,8 +917,7 @@
 		ppc_md.set_rtc_time   = mc146818_set_rtc_time;
 		ppc_md.get_rtc_time   = mc146818_get_rtc_time;
 		ppc_md.calibrate_decr = prep_calibrate_decr;
-	}
-	else {
+	} else {
 		ppc_md.set_rtc_time   = mk48t59_set_rtc_time;
 		ppc_md.get_rtc_time   = mk48t59_get_rtc_time;
 		ppc_md.calibrate_decr = mk48t59_calibrate_decr;
@@ -940,12 +928,12 @@
 	ppc_md.setup_io_mappings = prep_map_io;
 
 #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
-        ppc_ide_md.default_irq = prep_ide_default_irq;
-        ppc_ide_md.default_io_base = prep_ide_default_io_base;
-        ppc_ide_md.ide_check_region = prep_ide_check_region;
-        ppc_ide_md.ide_request_region = prep_ide_request_region;
-        ppc_ide_md.ide_release_region = prep_ide_release_region;
-        ppc_ide_md.ide_init_hwif = prep_ide_init_hwif_ports;
+	ppc_ide_md.default_irq = prep_ide_default_irq;
+	ppc_ide_md.default_io_base = prep_ide_default_io_base;
+	ppc_ide_md.ide_check_region = prep_ide_check_region;
+	ppc_ide_md.ide_request_region = prep_ide_request_region;
+	ppc_ide_md.ide_release_region = prep_ide_release_region;
+	ppc_ide_md.ide_init_hwif = prep_ide_init_hwif_ports;
 #endif
 
 #ifdef CONFIG_VT
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/setup.c linux/arch/ppc/kernel/setup.c
--- linux-2.4.14-pre7/arch/ppc/kernel/setup.c	Sat Sep  8 12:38:42 2001
+++ linux/arch/ppc/kernel/setup.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.setup.c 1.57 09/08/01 15:47:42 paulus
+ * BK Id: SCCS/s.setup.c 1.61 10/12/01 16:35:34 trini
  */
 /*
  * Common prep/pmac/chrp boot and setup code.
@@ -496,7 +496,7 @@
 #ifdef CONFIG_BLK_DEV_INITRD
 		case BI_INITRD:
 			initrd_start = data[0];
-			initrd_end = data[0] + rec->size;
+			initrd_end = data[0] + data[1];
 			break;
 #endif /* CONFIG_BLK_DEV_INITRD */
 #ifdef CONFIG_ALL_PPC
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/smp.c linux/arch/ppc/kernel/smp.c
--- linux-2.4.14-pre7/arch/ppc/kernel/smp.c	Sat Sep  8 12:38:42 2001
+++ linux/arch/ppc/kernel/smp.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.smp.c 1.31 09/08/01 15:47:42 paulus
+ * BK Id: SCCS/s.smp.c 1.34 10/11/01 12:06:01 trini
  */
 /*
  * Smp support for ppc.
@@ -35,7 +35,6 @@
 #include <asm/prom.h>
 #include <asm/smp.h>
 #include <asm/residual.h>
-#include <asm/feature.h>
 #include <asm/time.h>
 
 #include "open_pic.h"
@@ -283,6 +282,7 @@
 	printk("Entering SMP Mode...\n");
 	smp_num_cpus = 1;
         smp_store_cpu_info(0);
+	cpu_online_map = 1UL;
 
 	/*
 	 * assume for now that the first cpu booted is
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/syscalls.c linux/arch/ppc/kernel/syscalls.c
--- linux-2.4.14-pre7/arch/ppc/kernel/syscalls.c	Mon May 21 17:04:47 2001
+++ linux/arch/ppc/kernel/syscalls.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.syscalls.c 1.8 05/17/01 18:14:22 cort
+ * BK Id: SCCS/s.syscalls.c 1.11 10/16/01 15:58:42 trini
  */
 /*
  * linux/arch/ppc/kernel/sys_ppc.c
@@ -306,7 +306,7 @@
  * Those are normally defined in arch/ppc/kernel/pci.c. But when CONFIG_PCI is
  * not defined, this file is not linked at all, so here are the "empty" versions
  */
-asmlinkage int sys_pciconfig_read() { return -ENOSYS; }
-asmlinkage int sys_pciconfig_write() { return -ENOSYS; }
-asmlinkage long sys_pciconfig_iobase() { return -ENOSYS; }
+int sys_pciconfig_read(void) { return -ENOSYS; }
+int sys_pciconfig_write(void) { return -ENOSYS; }
+long sys_pciconfig_iobase(void) { return -ENOSYS; }
 #endif
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/traps.c linux/arch/ppc/kernel/traps.c
--- linux-2.4.14-pre7/arch/ppc/kernel/traps.c	Sun Sep 30 12:26:08 2001
+++ linux/arch/ppc/kernel/traps.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.traps.c 1.19 08/24/01 20:07:37 paulus
+ * BK Id: SCCS/s.traps.c 1.22 10/11/01 10:33:09 paulus
  */
 /*
  *  linux/arch/ppc/kernel/traps.c
@@ -108,6 +108,7 @@
 #ifdef CONFIG_ALL_PPC
 	unsigned long fixup;
 #endif /* CONFIG_ALL_PPC */
+	unsigned long msr = regs->msr;
 
 	if (user_mode(regs)) {
 		_exception(SIGSEGV, regs);	
@@ -132,31 +133,47 @@
 	 * Check if the NIP corresponds to the address of a sync
 	 * instruction for which there is an entry in the exception
 	 * table.
+	 * Note that the 601 only takes a machine check on TEA
+	 * (transfer error ack) signal assertion, and does not
+	 * set of the top 16 bits of SRR1.
+	 *  -- paulus.
 	 */
-	if (regs->msr & (0x80000 | 0x40000)
+	if (((msr & 0xffff0000) == 0 || (msr & (0x80000 | 0x40000)))
 	    && (fixup = search_exception_table(regs->nip)) != 0) {
 		/*
-		 * Check that it's a sync instruction.
+		 * Check that it's a sync instruction, or somewhere
+		 * in the twi; isync; nop sequence that inb/inw/inl uses.
 		 * As the address is in the exception table
 		 * we should be able to read the instr there.
+		 * For the debug message, we look at the preceding
+		 * load or store.
 		 */
-		if (*(unsigned int *)regs->nip == 0x7c0004ac) {
-			unsigned int lsi = ((unsigned int *)regs->nip)[-1];
-			int rb = (lsi >> 11) & 0x1f;
-			printk(KERN_DEBUG "%s bad port %lx at %lx\n",
-			       (lsi & 0x100)? "OUT to": "IN from",
-			       regs->gpr[rb] - _IO_BASE, regs->nip);
+		unsigned int *nip = (unsigned int *)regs->nip;
+		if (*nip == 0x60000000)		/* nop */
+			nip -= 2;
+		else if (*nip == 0x4c00012c)	/* isync */
+			--nip;
+		if (*nip == 0x7c0004ac || (*nip >> 26) == 3) {
+			/* sync or twi */
+			unsigned int rb;
+
+			--nip;
+			rb = (*nip >> 11) & 0x1f;
+			printk(KERN_DEBUG "%s bad port %lx at %p\n",
+			       (*nip & 0x100)? "OUT to": "IN from",
+			       regs->gpr[rb] - _IO_BASE, nip);
 			regs->nip = fixup;
 			return;
 		}
 	}
 #endif /* CONFIG_ALL_PPC */
 	printk("Machine check in kernel mode.\n");
-	printk("Caused by (from SRR1=%lx): ", regs->msr);
-	switch (regs->msr & 0xF0000) {
+	printk("Caused by (from SRR1=%lx): ", msr);
+	switch (msr & 0xF0000) {
 	case 0x80000:
 		printk("Machine check signal\n");
 		break;
+	case 0:		/* for 601 */
 	case 0x40000:
 		printk("Transfer error ack signal\n");
 		break;
diff -urN linux-2.4.14-pre7/arch/ppc/kernel/walnut_setup.c linux/arch/ppc/kernel/walnut_setup.c
--- linux-2.4.14-pre7/arch/ppc/kernel/walnut_setup.c	Mon May 21 17:04:47 2001
+++ linux/arch/ppc/kernel/walnut_setup.c	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.walnut_setup.c 1.5 05/17/01 18:14:22 cort
+ * BK Id: SCCS/s.walnut_setup.c 1.8 10/18/01 11:16:28 trini
  */
 /*
  *
@@ -123,12 +123,7 @@
 	ppc_md.kbd_unexpected_up 	= NULL;
 	ppc_md.kbd_leds          	= NULL;
 	ppc_md.kbd_init_hw       	= NULL;
-
-#if defined(CONFIG_MAGIC_SYSRQ)
 	ppc_md.ppc_kbd_sysrq_xlate	= NULL;
-#endif
-
-	return;
 }
 
 /*
diff -urN linux-2.4.14-pre7/arch/ppc/lib/string.S linux/arch/ppc/lib/string.S
--- linux-2.4.14-pre7/arch/ppc/lib/string.S	Mon May 21 17:04:47 2001
+++ linux/arch/ppc/lib/string.S	Mon Dec  3 23:26:02 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.string.S 1.5 05/17/01 18:14:22 cort
+ * BK Id: SCCS/s.string.S 1.9 10/25/01 10:08:51 trini
  */
 /*
  * String handling functions for PowerPC.
@@ -14,22 +14,9 @@
 #include "../kernel/ppc_asm.tmpl"
 #include <linux/config.h>
 #include <asm/processor.h>
+#include <asm/cache.h>
 #include <asm/errno.h>
 
-#if defined(CONFIG_4xx) || defined(CONFIG_8xx)
-#define CACHE_LINE_SIZE		16
-#define LG_CACHE_LINE_SIZE	4
-#define MAX_COPY_PREFETCH	1
-#elif !defined(CONFIG_PPC64BRIDGE)
-#define CACHE_LINE_SIZE		32
-#define LG_CACHE_LINE_SIZE	5
-#define MAX_COPY_PREFETCH	4
-#else
-#define CACHE_LINE_SIZE		128
-#define LG_CACHE_LINE_SIZE	7
-#define MAX_COPY_PREFETCH	1
-#endif /* CONFIG_4xx || CONFIG_8xx */
-
 #define COPY_16_BYTES		\
 	lwz	r7,4(r4);	\
 	lwz	r8,8(r4);	\
@@ -75,11 +62,13 @@
 	.long	8 ## n ## 5b,9 ## n ## 1b;	\
 	.long	8 ## n ## 6b,9 ## n ## 1b;	\
 	.long	8 ## n ## 7b,9 ## n ## 1b;	\
-.text
+	.text
+
+	.text
 
-CACHELINE_BYTES = CACHE_LINE_SIZE
-LG_CACHELINE_BYTES = LG_CACHE_LINE_SIZE
-CACHELINE_MASK = (CACHE_LINE_SIZE-1)
+CACHELINE_BYTES = L1_CACHE_LINE_SIZE
+LG_CACHELINE_BYTES = LG_L1_CACHE_LINE_SIZE
+CACHELINE_MASK = (L1_CACHE_LINE_SIZE-1)
 
 	.globl	strcpy
 strcpy:
@@ -278,12 +267,12 @@
 	dcbz	r11,r6
 #endif
 	COPY_16_BYTES
-#if CACHE_LINE_SIZE >= 32
+#if L1_CACHE_LINE_SIZE >= 32
 	COPY_16_BYTES
-#if CACHE_LINE_SIZE >= 64
+#if L1_CACHE_LINE_SIZE >= 64
 	COPY_16_BYTES
 	COPY_16_BYTES
-#if CACHE_LINE_SIZE >= 128
+#if L1_CACHE_LINE_SIZE >= 128
 	COPY_16_BYTES
 	COPY_16_BYTES
 	COPY_16_BYTES
@@ -456,23 +445,23 @@
 
 #if !defined(CONFIG_8xx)
 	/* Here we decide how far ahead to prefetch the source */
-#if MAX_COPY_PREFETCH > 1
+#if MAX_L1_COPY_PREFETCH > 1
 	/* Heuristically, for large transfers we prefetch
-	   MAX_COPY_PREFETCH cachelines ahead.  For small transfers
+	   MAX_L1_COPY_PREFETCH cachelines ahead.  For small transfers
 	   we prefetch 1 cacheline ahead. */
-	cmpwi	r0,MAX_COPY_PREFETCH
+	cmpwi	r0,MAX_L1_COPY_PREFETCH
 	li	r7,1
 	li	r3,4
 	ble	111f
-	li	r7,MAX_COPY_PREFETCH
+	li	r7,MAX_L1_COPY_PREFETCH
 111:	mtctr	r7
 112:	dcbt	r3,r4
 	addi	r3,r3,CACHELINE_BYTES
 	bdnz	112b
-#else /* MAX_COPY_PREFETCH == 1 */
+#else /* MAX_L1_COPY_PREFETCH == 1 */
 	li	r3,CACHELINE_BYTES + 4
 	dcbt	r11,r4
-#endif /* MAX_COPY_PREFETCH */
+#endif /* MAX_L1_COPY_PREFETCH */
 #endif /* CONFIG_8xx */
 
 	mtctr	r0
@@ -492,12 +481,12 @@
 	.text
 /* the main body of the cacheline loop */
 	COPY_16_BYTES_WITHEX(0)
-#if CACHE_LINE_SIZE >= 32
+#if L1_CACHE_LINE_SIZE >= 32
 	COPY_16_BYTES_WITHEX(1)
-#if CACHE_LINE_SIZE >= 64
+#if L1_CACHE_LINE_SIZE >= 64
 	COPY_16_BYTES_WITHEX(2)
 	COPY_16_BYTES_WITHEX(3)
-#if CACHE_LINE_SIZE >= 128
+#if L1_CACHE_LINE_SIZE >= 128
 	COPY_16_BYTES_WITHEX(4)
 	COPY_16_BYTES_WITHEX(5)
 	COPY_16_BYTES_WITHEX(6)
@@ -546,12 +535,12 @@
  * 104f (if in read part) or 105f (if in write part), after updating r5
  */
 	COPY_16_BYTES_EXCODE(0)
-#if CACHE_LINE_SIZE >= 32
+#if L1_CACHE_LINE_SIZE >= 32
 	COPY_16_BYTES_EXCODE(1)
-#if CACHE_LINE_SIZE >= 64
+#if L1_CACHE_LINE_SIZE >= 64
 	COPY_16_BYTES_EXCODE(2)
 	COPY_16_BYTES_EXCODE(3)
-#if CACHE_LINE_SIZE >= 128
+#if L1_CACHE_LINE_SIZE >= 128
 	COPY_16_BYTES_EXCODE(4)
 	COPY_16_BYTES_EXCODE(5)
 	COPY_16_BYTES_EXCODE(6)
diff -urN linux-2.4.14-pre7/arch/ppc/mm/4xx_mmu.c linux/arch/ppc/mm/4xx_mmu.c
--- linux-2.4.14-pre7/arch/ppc/mm/4xx_mmu.c	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/mm/4xx_mmu.c	Mon Dec  3 23:26:02 2001
@@ -69,15 +69,15 @@
 	 * be applied to every page which is a member of a given zone. At
 	 * present, we utilize only two of the 4xx's zones.
 	 * The zone index bits (of ZSEL) in the PTE are used for software
-	 * indicators, except the LSB.  For user access, zone 15 is used,
-	 * for kernel access, zone 14 is used.  We set all but zone 15
+	 * indicators, except the LSB.  For user access, zone 1 is used,
+	 * for kernel access, zone 0 is used.  We set all but zone 1
 	 * to zero, allowing only kernel access as indicated in the PTE.
-	 * For zone 15, we set a 01 binary (a value of 10 will not work)
+	 * For zone 1, we set a 01 binary (a value of 10 will not work)
 	 * to allow user access as indicated in the PTE.  This also allows
 	 * kernel access as indicated in the PTE.
 	 */
 
-        mtspr(SPRN_ZPR, 0x00000001);
+        mtspr(SPRN_ZPR, 0x10000000);
 
 	flush_instruction_cache();
 
diff -urN linux-2.4.14-pre7/arch/ppc/mm/cachemap.c linux/arch/ppc/mm/cachemap.c
--- linux-2.4.14-pre7/arch/ppc/mm/cachemap.c	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/mm/cachemap.c	Mon Dec  3 23:26:02 2001
@@ -50,6 +50,8 @@
 #include <asm/smp.h>
 #include <asm/machdep.h>
 
+extern int get_pteptr(struct mm_struct *mm, unsigned long addr, pte_t **ptep);
+
 void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle)
 {
 	int order, rsize;
diff -urN linux-2.4.14-pre7/arch/ppc/mm/mmu_decl.h linux/arch/ppc/mm/mmu_decl.h
--- linux-2.4.14-pre7/arch/ppc/mm/mmu_decl.h	Tue Aug 28 06:58:33 2001
+++ linux/arch/ppc/mm/mmu_decl.h	Mon Dec  3 23:26:02 2001
@@ -53,6 +53,7 @@
 
 #elif defined(CONFIG_4xx)
 #define flush_HPTE(X, va, pg)	_tlbie(va)
+extern void MMU_init_hw(void);
 
 #else
 /* anything except 4xx or 8xx */
diff -urN linux-2.4.14-pre7/drivers/block/cciss.c linux/drivers/block/cciss.c
--- linux-2.4.14-pre7/drivers/block/cciss.c	Mon Dec  3 23:25:52 2001
+++ linux/drivers/block/cciss.c	Mon Dec  3 23:26:02 2001
@@ -1214,7 +1214,12 @@
 				status=0;
 		}
 	}
-	complete_buffers(cmd->bh, status);
+	complete_buffers(cmd->rq->bh, status);
+
+#ifdef CCISS_DEBUG
+	printk("Done with %p\n", cmd->rq);
+#endif /* CCISS_DEBUG */ 
+	end_that_request_last(cmd->rq);
 }
 
 
@@ -1269,7 +1274,7 @@
 {
 	ctlr_info_t *h= q->queuedata; 
 	CommandList_struct *c;
-	int log_unit, start_blk, seg, sect;
+	int log_unit, start_blk, seg;
 	char *lastdataend;
 	struct buffer_head *bh;
 	struct list_head *queue_head = &q->queue_head;
@@ -1278,13 +1283,12 @@
 	struct my_sg tmp_sg[MAXSGENTRIES];
 	int i;
 
-    // Loop till the queue is empty if or it is plugged
-    while (1)
-    {
-	if (q->plugged || list_empty(queue_head)) {
-                start_io(h);
-                return;
-        }
+	if (q->plugged)
+		goto startio;
+
+queue_next:
+	if (list_empty(queue_head))
+		goto startio;
 
 	creq =	blkdev_entry_next_request(queue_head); 
 	if (creq->nr_segments > MAXSGENTRIES)
@@ -1296,17 +1300,18 @@
                                 h->ctlr, creq->rq_dev, creq);
                 blkdev_dequeue_request(creq);
                 complete_buffers(creq->bh, 0);
-                start_io(h);
-                return;
+		end_that_request_last(creq);
+		goto startio;
         }
 
 	if (( c = cmd_alloc(h, 1)) == NULL)
-	{
-		start_io(h);
-		return;
-	}
+		goto startio;
+
+	spin_unlock_irq(&io_request_lock);
+
 	c->cmd_type = CMD_RWREQ;      
-	bh = c->bh = creq->bh;
+	bh = creq->bh;
+	c->rq = creq;
 	
 	/* fill in the request */ 
 	log_unit = MINOR(creq->rq_dev) >> NWD_SHIFT; 
@@ -1330,10 +1335,8 @@
 #endif /* CCISS_DEBUG */
 	seg = 0; 
 	lastdataend = NULL;
-	sect = 0;
 	while(bh)
 	{
-		sect += bh->b_size/512;
 		if (bh->b_data == lastdataend)
 		{  // tack it on to the last segment 
 			tmp_sg[seg-1].len +=bh->b_size;
@@ -1367,7 +1370,7 @@
 		h->maxSG = seg; 
 
 #ifdef CCISS_DEBUG
-	printk(KERN_DEBUG "cciss: Submitting %d sectors in %d segments\n", sect, seg);
+	printk(KERN_DEBUG "cciss: Submitting %d sectors in %d segments\n", creq->nr_sectors, seg);
 #endif /* CCISS_DEBUG */
 
 	c->Header.SGList = c->Header.SGTotal = seg;
@@ -1377,28 +1380,26 @@
 	c->Request.CDB[4]= (start_blk >>  8) & 0xff;
 	c->Request.CDB[5]= start_blk & 0xff;
 	c->Request.CDB[6]= 0; // (sect >> 24) & 0xff; MSB
-	c->Request.CDB[7]= (sect >>  8) & 0xff; 
-	c->Request.CDB[8]= sect & 0xff; 
+	c->Request.CDB[7]= (creq->nr_sectors >>  8) & 0xff; 
+	c->Request.CDB[8]= creq->nr_sectors & 0xff; 
 	c->Request.CDB[9] = c->Request.CDB[11] = c->Request.CDB[12] = 0;
 
-			
+	spin_lock_irq(&io_request_lock);
+
 	blkdev_dequeue_request(creq);
 
-	
         /*
          * ehh, we can't really end the request here since it's not
          * even started yet. for now it shouldn't hurt though
          */
-#ifdef CCISS_DEBUG
-	printk("Done with %p\n", creq);
-#endif /* CCISS_DEBUG */ 
-	end_that_request_last(creq);
-
 	addQ(&(h->reqQ),c);
 	h->Qdepth++;
 	if(h->Qdepth > h->maxQsinceinit)
 		h->maxQsinceinit = h->Qdepth; 
-   }  // while loop
+
+	goto queue_next;
+startio:
+	start_io(h);
 }
 
 static void do_cciss_intr(int irq, void *dev_id, struct pt_regs *regs)
diff -urN linux-2.4.14-pre7/drivers/block/cciss_cmd.h linux/drivers/block/cciss_cmd.h
--- linux-2.4.14-pre7/drivers/block/cciss_cmd.h	Tue May 22 10:23:16 2001
+++ linux/drivers/block/cciss_cmd.h	Mon Dec  3 23:26:02 2001
@@ -228,7 +228,7 @@
   int			   cmd_type; 
   struct _CommandList_struct *prev;
   struct _CommandList_struct *next;
-  struct buffer_head *	   bh;
+  struct request *	   rq;
 } CommandList_struct;
 
 //Configuration Table Structure
diff -urN linux-2.4.14-pre7/drivers/block/cpqarray.c linux/drivers/block/cpqarray.c
--- linux-2.4.14-pre7/drivers/block/cpqarray.c	Mon Dec  3 23:25:52 2001
+++ linux/drivers/block/cpqarray.c	Mon Dec  3 23:26:02 2001
@@ -911,21 +911,19 @@
 {
 	ctlr_info_t *h = q->queuedata;
 	cmdlist_t *c;
-	int seg, sect;
 	char *lastdataend;
 	struct list_head * queue_head = &q->queue_head;
 	struct buffer_head *bh;
 	struct request *creq;
 	struct my_sg tmp_sg[SG_MAX];
-	int i;
+	int i, seg;
 
-// Loop till the queue is empty if or it is plugged 
-   while (1)
-{
-	if (q->plugged || list_empty(queue_head)) {
-		start_io(h);
-		return;
-	}
+	if (q->plugged)
+		goto startio;
+
+queue_next:
+	if (list_empty(queue_head))
+		goto startio;
 
 	creq = blkdev_entry_next_request(queue_head);
 	if (creq->nr_segments > SG_MAX)
@@ -937,15 +935,14 @@
 				h->ctlr, creq->rq_dev, creq);
 		blkdev_dequeue_request(creq);
 		complete_buffers(creq->bh, 0);
-		start_io(h);
-                return;
+		end_that_request_last(creq);
+		goto startio;
 	}
 
 	if ((c = cmd_alloc(h,1)) == NULL)
-	{
-                start_io(h);
-                return;
-        }
+		goto startio;
+
+	spin_unlock_irq(&io_request_lock);
 
 	bh = creq->bh;
 
@@ -955,7 +952,7 @@
 	c->size += sizeof(rblk_t);
 
 	c->req.hdr.blk = ida[(h->ctlr<<CTLR_SHIFT) + MINOR(creq->rq_dev)].start_sect + creq->sector;
-	c->bh = bh;
+	c->rq = creq;
 DBGPX(
 	if (bh == NULL)
 		panic("bh == NULL?");
@@ -963,9 +960,7 @@
 	printk("sector=%d, nr_sectors=%d\n", creq->sector, creq->nr_sectors);
 );
 	seg = 0; lastdataend = NULL;
-	sect = 0;
 	while(bh) {
-		sect += bh->b_size/512;
 		if (bh->b_data == lastdataend) {
 			tmp_sg[seg-1].size += bh->b_size;
 			lastdataend += bh->b_size;
@@ -991,26 +986,12 @@
 	}
 DBGPX(	printk("Submitting %d sectors in %d segments\n", sect, seg); );
 	c->req.hdr.sg_cnt = seg;
-	c->req.hdr.blk_cnt = sect;
+	c->req.hdr.blk_cnt = creq->nr_sectors;
 
-	/*
-	 * Since we control our own merging, we know that this request
-	 * is now fully setup and there's nothing left.
-         */
-	if (creq->nr_sectors != sect) {
-		printk("ida: %ld != %d sectors\n", creq->nr_sectors, sect);
-		BUG();
-	}
+	spin_lock_irq(&io_request_lock);
 
 	blkdev_dequeue_request(creq);
 
-	/*
-	 * ehh, we can't really end the request here since it's not
-	 * even started yet. for now it shouldn't hurt though
-	 */
-DBGPX(	printk("Done with %p\n", creq); );
-	end_that_request_last(creq);
-
 	c->req.hdr.cmd = (creq->cmd == READ) ? IDA_READ : IDA_WRITE;
 	c->type = CMD_RWREQ;
 
@@ -1019,7 +1000,11 @@
 	h->Qdepth++;
 	if (h->Qdepth > h->maxQsinceinit) 
 		h->maxQsinceinit = h->Qdepth;
-   } // while loop
+
+	goto queue_next;
+
+startio:
+	start_io(h);
 }
 
 /* 
@@ -1096,7 +1081,13 @@
                         cmd->req.sg[i].addr, cmd->req.sg[i].size,
                         (cmd->req.hdr.cmd == IDA_READ) ? PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE);
         }
-	complete_buffers(cmd->bh, ok);
+
+	complete_buffers(cmd->rq->bh, ok);
+
+	DBGPX(printk("Done with %p\n", cmd->rq););
+	end_that_request_last(cmd->rq);
+
+
 }
 
 /*
diff -urN linux-2.4.14-pre7/drivers/block/ida_cmd.h linux/drivers/block/ida_cmd.h
--- linux-2.4.14-pre7/drivers/block/ida_cmd.h	Wed Jul 25 14:12:01 2001
+++ linux/drivers/block/ida_cmd.h	Mon Dec  3 23:26:02 2001
@@ -93,7 +93,7 @@
 	int	ctlr;
 	struct cmdlist *prev;
 	struct cmdlist *next;
-	struct buffer_head *bh;
+	struct request *rq;
 	int type;
 } cmdlist_t;
 	
diff -urN linux-2.4.14-pre7/drivers/char/Makefile linux/drivers/char/Makefile
--- linux-2.4.14-pre7/drivers/char/Makefile	Mon Oct 15 13:36:48 2001
+++ linux/drivers/char/Makefile	Mon Dec  3 23:26:02 2001
@@ -192,6 +192,7 @@
   obj-$(CONFIG_NVRAM) += nvram.o
 endif
 obj-$(CONFIG_TOSHIBA) += toshiba.o
+obj-$(CONFIG_I8K) += i8k.o
 obj-$(CONFIG_DS1620) += ds1620.o
 obj-$(CONFIG_INTEL_RNG) += i810_rng.o
 
diff -urN linux-2.4.14-pre7/drivers/char/i8k.c linux/drivers/char/i8k.c
--- linux-2.4.14-pre7/drivers/char/i8k.c	Wed Dec 31 16:00:00 1969
+++ linux/drivers/char/i8k.c	Mon Dec  3 23:26:02 2001
@@ -0,0 +1,556 @@
+/*
+ * i8k.c -- Linux driver for accessing the SMM BIOS on Dell I8000 laptops
+ *
+ * Copyright (C) 2001  Massimo Dal Zotto <dz@debian.org>
+ *
+ * This program 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, or (at your option) any
+ * later version.
+ *
+ * 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.
+ */
+
+#include <linux/module.h>
+#include <linux/version.h>
+#include <linux/types.h>
+#include <linux/init.h>
+#include <linux/proc_fs.h>
+#include <asm/io.h>
+#include <asm/uaccess.h>
+
+#include <linux/i8k.h>
+
+#define I8K_VERSION		"1.1 02/11/2001"
+#define I8K_BIOS_SIGNATURE	"Dell System Inspiron 8000"
+#define I8K_BIOS_SIGNATURE_ADDR 0x000ec000
+#define I8K_BIOS_VERSION_OFFSET	32
+
+#define I8K_SMM_FN_STATUS	0x0025
+#define I8K_SMM_POWER_STATUS	0x0069
+#define I8K_SMM_SET_FAN		0x01a3
+#define I8K_SMM_GET_FAN		0x00a3
+#define I8K_SMM_GET_SPEED	0x02a3
+#define I8K_SMM_GET_TEMP	0x10a3
+#define I8K_SMM_BIOS_VERSION	0x00a6
+
+#define I8K_FAN_MULT		30
+#define I8K_MAX_TEMP		127
+
+#define I8K_FN_NONE		0x08
+#define I8K_FN_UP		0x09
+#define I8K_FN_DOWN		0x0a
+#define I8K_FN_MUTE		0x0c
+
+#define I8K_POWER_AC		0x05
+#define I8K_POWER_BATTERY	0x01
+
+#define I8K_TEMPERATURE_BUG	1
+
+static char bios_version[4] = "?";
+static char bios_machine_id[16] = "?";
+
+int force = 0;
+
+MODULE_AUTHOR("Massimo Dal Zotto (dz@debian.org)");
+MODULE_DESCRIPTION("Driver for accessing the SMM BIOS on Dell I8000 laptops");
+MODULE_LICENSE("GPL");
+MODULE_PARM(force, "i");
+MODULE_PARM_DESC(force, "Force loading without checking for an Inspiron 8000");
+
+static ssize_t i8k_read(struct file *, char *, size_t, loff_t *);
+static int i8k_ioctl(struct inode *, struct file *, unsigned int,
+		     unsigned long);
+
+static struct file_operations i8k_fops = {
+    read:	i8k_read,
+    ioctl:	i8k_ioctl,
+};
+
+typedef struct {
+    unsigned int eax;
+    unsigned int ebx __attribute__ ((packed));
+    unsigned int ecx __attribute__ ((packed));
+    unsigned int edx __attribute__ ((packed));
+    unsigned int esi __attribute__ ((packed));
+    unsigned int edi __attribute__ ((packed));
+} SMMRegisters;
+
+/*
+ * Call the System Management Mode BIOS.
+ */
+static int i8k_smm(SMMRegisters *regs)
+{
+    int rc;
+
+    asm("pushl %%eax\n\t" \
+	"movl 0(%%eax),%%edx\n\t" \
+	"push %%edx\n\t" \
+	"movl 4(%%eax),%%ebx\n\t" \
+	"movl 8(%%eax),%%ecx\n\t" \
+	"movl 12(%%eax),%%edx\n\t" \
+	"movl 16(%%eax),%%esi\n\t" \
+	"movl 20(%%eax),%%edi\n\t" \
+	"popl %%eax\n\t" \
+	"out %%al,$0xb2\n\t" \
+	"out %%al,$0x84\n\t" \
+	"xchgl %%eax,(%%esp)\n\t"
+	"movl %%ebx,4(%%eax)\n\t" \
+	"movl %%ecx,8(%%eax)\n\t" \
+	"movl %%edx,12(%%eax)\n\t" \
+	"movl %%esi,16(%%eax)\n\t" \
+	"movl %%edi,20(%%eax)\n\t" \
+	"popl %%edx\n\t" \
+	"movl %%edx,0(%%eax)\n\t" \
+	"lahf\n\t" \
+	"shrl $8,%%eax\n\t" \
+	"andl $1,%%eax\n" \
+	: "=a" (rc)
+	: "a" (regs)
+	: "%ebx", "%ecx", "%edx", "%esi", "%edi", "memory");
+
+    if ((rc != 0) || ((regs->eax & 0xffff) == 0xffff)) {
+	return -EINVAL;
+    }
+
+    return 0;
+}
+
+/*
+ * Read the bios version. Return the version as an integer corresponding
+ * to the ascii value, for example "A17" is returned as 0x00413137.
+ */
+static int i8k_get_bios_version(void)
+{
+    SMMRegisters regs = { 0, 0, 0, 0, 0, 0 };
+    int rc;
+
+    regs.eax = I8K_SMM_BIOS_VERSION;
+    if ((rc=i8k_smm(&regs)) < 0) {
+	return rc;
+    }
+
+    return regs.eax;
+}
+
+/*
+ * Read the machine id. Not yet implemented.
+ */
+static int i8k_get_machine_id(unsigned char *buff)
+{
+    return -EINVAL;
+}
+
+/*
+ * Read the Fn key status.
+ */
+static int i8k_get_fn_status(void)
+{
+    SMMRegisters regs = { 0, 0, 0, 0, 0, 0 };
+    int rc;
+
+    regs.eax = I8K_SMM_FN_STATUS;
+    if ((rc=i8k_smm(&regs)) < 0) {
+	return rc;
+    }
+
+    switch ((regs.eax & 0xff00) >> 8) {
+    case I8K_FN_UP:
+	return I8K_VOL_UP;
+    case I8K_FN_DOWN:
+	return I8K_VOL_DOWN;
+    case I8K_FN_MUTE:
+	return I8K_VOL_MUTE;
+    default:
+	return 0;
+    }
+}
+
+/*
+ * Read the power status.
+ */
+static int i8k_get_power_status(void)
+{
+    SMMRegisters regs = { 0, 0, 0, 0, 0, 0 };
+    int rc;
+
+    regs.eax = I8K_SMM_POWER_STATUS;
+    if ((rc=i8k_smm(&regs)) < 0) {
+	return rc;
+    }
+
+    switch (regs.eax & 0xff) {
+    case I8K_POWER_AC:
+	return I8K_AC;
+    default:
+	return I8K_BATTERY;
+    }
+}
+
+/*
+ * Read the fan status.
+ */
+static int i8k_get_fan_status(int fan)
+{
+    SMMRegisters regs = { 0, 0, 0, 0, 0, 0 };
+    int rc;
+
+    regs.eax = I8K_SMM_GET_FAN;
+    regs.ebx = fan & 0xff;
+    if ((rc=i8k_smm(&regs)) < 0) {
+	return rc;
+    }
+
+    return (regs.eax & 0xff);
+}
+
+/*
+ * Read the fan speed in RPM.
+ */
+static int i8k_get_fan_speed(int fan)
+{
+    SMMRegisters regs = { 0, 0, 0, 0, 0, 0 };
+    int rc;
+
+    regs.eax = I8K_SMM_GET_SPEED;
+    regs.ebx = fan & 0xff;
+    if ((rc=i8k_smm(&regs)) < 0) {
+	return rc;
+    }
+
+    return (regs.eax & 0xffff) * I8K_FAN_MULT;
+}
+
+/*
+ * Set the fan speed (off, low, high). Returns the new fan status.
+ */
+static int i8k_set_fan(int fan, int speed)
+{
+    SMMRegisters regs = { 0, 0, 0, 0, 0, 0 };
+    int rc;
+
+    speed = (speed < 0) ? 0 : ((speed > I8K_FAN_MAX) ? I8K_FAN_MAX : speed);
+
+    regs.eax = I8K_SMM_SET_FAN;
+    regs.ebx = (fan & 0xff) | (speed << 8);
+    if ((rc=i8k_smm(&regs)) < 0) {
+	return rc;
+    }
+
+    return (i8k_get_fan_status(fan));
+}
+
+/*
+ * Read the cpu temperature.
+ */
+static int i8k_get_cpu_temp(void)
+{
+    SMMRegisters regs = { 0, 0, 0, 0, 0, 0 };
+    int rc;
+    int temp;
+
+#ifdef I8K_TEMPERATURE_BUG
+    static int prev = 0;
+#endif
+
+    regs.eax = I8K_SMM_GET_TEMP;
+    if ((rc=i8k_smm(&regs)) < 0) {
+	return rc;
+    }
+    temp = regs.eax & 0xff;
+
+#ifdef I8K_TEMPERATURE_BUG
+    /*
+     * Sometimes the temperature sensor returns 0x99, which is out of range.
+     * In this case we return (once) the previous cached value. For example:
+     # 1003655137 00000058 00005a4b
+     # 1003655138 00000099 00003a80 <--- 0x99 = 153 degrees
+     # 1003655139 00000054 00005c52
+     */
+    if (temp > I8K_MAX_TEMP) {
+	temp = prev;
+	prev = I8K_MAX_TEMP;
+    } else {
+	prev = temp;
+    }
+#endif
+
+    return temp;
+}
+
+static int i8k_ioctl(struct inode *ip, struct file *fp, unsigned int cmd,
+		     unsigned long arg)
+{
+    int val;
+    int speed;
+    unsigned char buff[16];
+
+    if (!arg) {
+	return -EINVAL;
+    }
+
+    switch (cmd) {
+    case I8K_BIOS_VERSION:
+	val = i8k_get_bios_version();
+	break;
+
+    case I8K_MACHINE_ID:
+	memset(buff, 0, 16);
+	val = i8k_get_machine_id(buff);
+	break;
+
+    case I8K_FN_STATUS:
+	val = i8k_get_fn_status();
+	break;
+
+    case I8K_POWER_STATUS:
+	val = i8k_get_power_status();
+	break;
+
+    case I8K_GET_TEMP:
+	val = i8k_get_cpu_temp();
+	break;
+
+    case I8K_GET_SPEED:
+	if (copy_from_user(&val, (int *)arg, sizeof(int))) {
+	    return -EFAULT;
+	}
+	val = i8k_get_fan_speed(val);
+	break;
+
+    case I8K_GET_FAN:
+	if (copy_from_user(&val, (int *)arg, sizeof(int))) {
+	    return -EFAULT;
+	}
+	val = i8k_get_fan_status(val);
+	break;
+
+    case I8K_SET_FAN:
+	if (copy_from_user(&val, (int *)arg, sizeof(int))) {
+	    return -EFAULT;
+	}
+	if (copy_from_user(&speed, (int *)arg+1, sizeof(int))) {
+	    return -EFAULT;
+	}
+	val = i8k_set_fan(val, speed);
+	break;
+
+    default:
+	return -EINVAL;
+    }
+
+    if (val < 0) {
+	return val;
+    }
+
+    switch (cmd) {
+    case I8K_BIOS_VERSION:
+	if (copy_to_user((int *)arg, &val, 4)) {
+	    return -EFAULT;
+	}
+	break;
+    case I8K_MACHINE_ID:
+	if (copy_to_user((int *)arg, buff, 16)) {
+	    return -EFAULT;
+	}
+	break;
+    default:
+	if (copy_to_user((int *)arg, &val, sizeof(int))) {
+	    return -EFAULT;
+	}
+	break;
+    }
+
+    return 0;
+}
+
+/*
+ * Print the information for /proc/i8k.
+ */
+static int i8k_get_info(char *buffer, char **start, off_t fpos, int length)
+{
+    int n, fn_key, cpu_temp, ac_power;
+    int left_fan, right_fan, left_speed, right_speed;
+
+    cpu_temp    = i8k_get_cpu_temp();
+    left_fan    = i8k_get_fan_status(I8K_FAN_LEFT);
+    right_fan   = i8k_get_fan_status(I8K_FAN_RIGHT);
+    left_speed  = i8k_get_fan_speed(I8K_FAN_LEFT);
+    right_speed = i8k_get_fan_speed(I8K_FAN_RIGHT);
+    ac_power    = i8k_get_power_status();
+    fn_key      = i8k_get_fn_status();
+
+    /*
+     * Info:
+     *
+     * 1)  Format version (this will change if format changes)
+     * 2)  BIOS version
+     * 3)  BIOS machine ID
+     * 4)  Cpu temperature
+     * 5)  Left fan status
+     * 6)  Right fan status
+     * 7)  Left fan speed
+     * 8)  Right fan speed
+     * 9)  AC power
+     * 10) Fn Key status
+     */
+    n = sprintf(buffer, "%s %s %s %d %d %d %d %d %d %d\n",
+		I8K_PROC_FMT,
+		bios_version,
+		bios_machine_id,
+		cpu_temp,
+		left_fan,
+		right_fan,
+		left_speed,
+		right_speed,
+		ac_power,
+		fn_key);
+
+    return n;
+}
+
+static ssize_t i8k_read(struct file *f, char *buffer, size_t len, loff_t *fpos)
+{
+    int n;
+    char info[128];
+
+    n = i8k_get_info(info, NULL, 0, 128);
+    if (n <= 0) {
+	return n;
+    }
+
+    if (*fpos >= n) {
+	return 0;
+    }
+
+    if ((*fpos + len) >= n) {
+	len = n - *fpos;
+    }
+
+    if (copy_to_user(buffer, info, len) != 0) {
+	return -EFAULT;
+    }
+
+    *fpos += len;
+    return len;
+}
+
+/*
+ * Probe for the presence of an Inspiron I8000.
+ */
+static int i8k_probe(void)
+{
+    unsigned char *buff, *p;
+    unsigned char bios_vers[4];
+    int version;
+
+    /*
+     * Until Dell tell us how to reliably check for an Inspiron system
+     * look for a signature at a fixed location in the BIOS memory.
+     * Ugly but safe.
+     */
+    if (!force) {
+	buff = ioremap(I8K_BIOS_SIGNATURE_ADDR, I8K_BIOS_VERSION_OFFSET+4);
+	if (buff == NULL) {
+	    printk("i8k: ioremap failed\n");
+	    return -ENODEV;
+	}
+	if (strncmp(buff,I8K_BIOS_SIGNATURE,sizeof(I8K_BIOS_SIGNATURE)) != 0) {
+	    printk("i8k: Inspiron 8000 BIOS signature not found\n");
+	    iounmap(buff);
+	    return -ENODEV;
+	}
+	strncpy(bios_vers, buff+I8K_BIOS_VERSION_OFFSET, 3);
+	bios_vers[3] = '\0';
+	iounmap(buff);
+    }
+    if (force >= 2) {
+	buff = ioremap(0x000c0000, 0x00100000-0x000c0000);
+	if (buff == NULL) {
+	    printk("i8k: ioremap failed\n");
+	    return -ENODEV;
+	}
+	for (p=buff; (p-buff)<(0x00100000-0x000c0000); p+=16) {
+	    if (strncmp(p,I8K_BIOS_SIGNATURE,sizeof(I8K_BIOS_SIGNATURE))==0) {
+		printk("i8k: Inspiron 8000 BIOS signature found at %08x\n",
+		       0x000c0000+(p-buff));
+		break;
+	    }
+	}
+	iounmap(buff);
+    }
+
+    /*
+     * Next try to get the BIOS version with an SMM call. If this
+     * fails SMM can't be reliably used on this system.
+     */
+    version = i8k_get_bios_version();
+    if (version <= 0) {
+	printk("i8k: unable to get BIOS version\n");
+	return -ENODEV;
+    }
+    bios_version[0] = (version >> 16) & 0xff;
+    bios_version[1] = (version >>  8) & 0xff;
+    bios_version[2] = (version)       & 0xff;
+    bios_version[3] = '\0';
+
+    /*
+     * Finally check if the two versions match.
+     */
+    if (!force) {
+	if (strncmp(bios_version,bios_vers,sizeof(bios_version)) != 0) {
+	    printk("i8k: BIOS version mismatch: %s != %s\n",
+		   bios_version, bios_vers);
+	    return -ENODEV;
+	}
+    }
+
+    return 0;
+}
+
+#ifdef MODULE
+static
+#endif
+int __init i8k_init(void)
+{
+    struct proc_dir_entry *proc_i8k;
+
+    /* Are we running on an Inspiron 8000 laptop? */
+    if (i8k_probe() != 0) {
+	return -ENODEV;
+    }
+
+    /* Register the proc entry */
+    proc_i8k = create_proc_info_entry("i8k", 0, NULL, i8k_get_info);
+    if (!proc_i8k) {
+	return -ENOENT;
+    }
+    proc_i8k->proc_fops = &i8k_fops;
+    SET_MODULE_OWNER(proc_i8k);
+
+    printk(KERN_INFO
+	   "Inspiron 8000 SMM driver v%s Massimo Dal Zotto (dz@debian.org)\n",
+	   I8K_VERSION);
+
+    return 0;
+}
+
+#ifdef MODULE
+int init_module(void)
+{
+    return i8k_init();
+}
+
+void cleanup_module(void)
+{
+    /* Remove the proc entry */
+    remove_proc_entry("i8k", NULL);
+
+    printk(KERN_INFO "i8k: module unloaded\n");
+}
+#endif
+
+/* end of file */
diff -urN linux-2.4.14-pre7/drivers/char/ip2/i2lib.c linux/drivers/char/ip2/i2lib.c
--- linux-2.4.14-pre7/drivers/char/ip2/i2lib.c	Mon Dec  3 23:25:52 2001
+++ linux/drivers/char/ip2/i2lib.c	Mon Dec  3 23:26:02 2001
@@ -338,7 +338,9 @@
 		pCh->tqueue_status.routine = (void(*)(void*)) do_status;
 		pCh->tqueue_status.data = pCh;
 
+#ifdef IP2DEBUG_TRACE
 		pCh->trace = ip2trace;
+#endif
 
 		++pCh;
      	--nChannels;
@@ -554,9 +556,9 @@
 	if ( !i2Validate ( pCh ) ) {
 		return -1;
 	}
-#ifdef IP2DEBUG_TRACE
+
 	ip2trace (CHANN, ITRC_QUEUE, ITRC_ENTER, 0 );
-#endif
+
 	pB = pCh->pMyBord;
 
 	// Board must also exist, and THE INTERRUPT COMMAND ALREADY SENT
@@ -634,9 +636,9 @@
 			if (--bufroom < 0) {
 				bufroom += maxBuff;
 			}
-#ifdef IP2DEBUG_TRACE
+
 			ip2trace (CHANN, ITRC_QUEUE, 2, 1, bufroom );
-#endif
+
 			// Check for overflow
 			if (totalsize <= bufroom) {
 				// Normal Expected path - We still hold LOCK
@@ -644,9 +646,8 @@
 			}
 		}
 
-#ifdef IP2DEBUG_TRACE
 		ip2trace (CHANN, ITRC_QUEUE, 3, 1, totalsize );
-#endif
+
 		// Prepare to wait for buffers to empty
 		WRITE_UNLOCK_IRQRESTORE(lock_var_p,flags); 
 		serviceOutgoingFifo(pB);	// Dump what we got
@@ -668,9 +669,8 @@
 			return 0;   // Wake up! Time to die!!!
 		}
 
-#ifdef IP2DEBUG_TRACE
-	ip2trace (CHANN, ITRC_QUEUE, 4, 0 );
-#endif
+		ip2trace (CHANN, ITRC_QUEUE, 4, 0 );
+
 	}	// end of for(;;)
 
 	// At this point we have room and the lock - stick them in.
@@ -692,9 +692,9 @@
 		// pCs->cmd[0].
 		if (pCs == CMD_BMARK_REQ) {
 			pCh->bookMarks++;
-#ifdef IP2DEBUG_TRACE
+
 			ip2trace (CHANN, ITRC_DRAIN, 30, 1, pCh->bookMarks );
-#endif
+
 		}
 		cnt = pCs->length;
 
@@ -702,9 +702,9 @@
 		// if the last command had to be at the end of a block, we end
 		// the existing block here and start a new one.
 		if ((blocksize + cnt > maxBlock) || lastended) {
-#ifdef IP2DEBUG_TRACE
+
 			ip2trace (CHANN, ITRC_QUEUE, 5, 0 );
-#endif
+
 			PTYPE_OF(pInsert) = type;
 			CHANNEL_OF(pInsert) = channel;
 			// count here does not include the header
@@ -766,9 +766,9 @@
 		i2QueueNeeds(pB, pCh, NEED_BYPASS);
 		break;
 	}
-#ifdef IP2DEBUG_TRACE
+
 	ip2trace (CHANN, ITRC_QUEUE, ITRC_RETURN, 1, nCommands );
-#endif
+
 	return nCommands; // Good status: number of commands sent
 }
 
@@ -791,9 +791,7 @@
 	unsigned short status;
 	i2eBordStrPtr pB;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_STATUS, ITRC_ENTER, 2, pCh->dataSetIn, resetBits );
-#endif
 
 	// Make sure the channel exists, otherwise do nothing */
 	if ( !i2Validate ( pCh ) )
@@ -811,9 +809,7 @@
 		pCh->dataSetIn &= ~(I2_DDCD | I2_DCTS | I2_DDSR | I2_DRI);
 	}
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_STATUS, ITRC_RETURN, 1, pCh->dataSetIn );
-#endif
 
 	return status;
 }
@@ -838,9 +834,7 @@
 	int count;
 	unsigned long flags = 0;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_INPUT, ITRC_ENTER, 0);
-#endif
 
 	// Ensure channel structure seems real
 	if ( !i2Validate( pCh ) ) {
@@ -906,9 +900,8 @@
 
 i2Input_exit:
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_INPUT, ITRC_RETURN, 1, count);
-#endif
+
 	return count;
 }
 
@@ -932,9 +925,7 @@
 	if ( !i2Validate ( pCh ) )
 		return -1;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_INPUT, 10, 0);
-#endif
 
 	WRITE_LOCK_IRQSAVE(&pCh->Ibuf_spinlock,flags);
 	count = pCh->Ibuf_stuff - pCh->Ibuf_strip;
@@ -962,9 +953,9 @@
 	} else {
 		WRITE_UNLOCK_IRQRESTORE(&pCh->Ibuf_spinlock,flags);
 	}
-#ifdef IP2DEBUG_TRACE
+
 	ip2trace (CHANN, ITRC_INPUT, 19, 1, count);
-#endif
+
 	return count;
 }
 
@@ -1034,9 +1025,7 @@
 
 	int bailout = 10;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_OUTPUT, ITRC_ENTER, 2, count, user );
-#endif
 
 	// Ensure channel structure seems real
 	if ( !i2Validate ( pCh ) ) 
@@ -1083,9 +1072,8 @@
 // Small WINDOW here with no LOCK but I can't call Flush with LOCK
 // We would be flushing (or ending flush) anyway
 
-#ifdef IP2DEBUG_TRACE
-			ip2trace (CHANN, ITRC_OUTPUT, 10, 1, amountToMove );
-#endif
+		ip2trace (CHANN, ITRC_OUTPUT, 10, 1, amountToMove );
+
 		if ( !(pCh->flush_flags && i2RetryFlushOutput(pCh) ) 
 				&& amountToMove > 0 )
 		{
@@ -1123,9 +1111,7 @@
 
 			WRITE_UNLOCK_IRQRESTORE(&pCh->Obuf_spinlock,flags);
 
-#ifdef IP2DEBUG_TRACE
 			ip2trace (CHANN, ITRC_OUTPUT, 13, 1, stuffIndex );
-#endif
 
 		} else {
 
@@ -1133,25 +1119,23 @@
 			// becuz we need to stuff a flush 
 			// or amount to move is <= 0
 
-#ifdef IP2DEBUG_TRACE
 			ip2trace(CHANN, ITRC_OUTPUT, 14, 3,
-				amountToMove,  pB->i2eFifoRemains, pB->i2eWaitingForEmptyFifo );
-#endif
+				amountToMove,  pB->i2eFifoRemains,
+				pB->i2eWaitingForEmptyFifo );
+
 			// Put this channel back on queue
 			// this ultimatly gets more data or wakes write output
 			i2QueueNeeds(pB, pCh, NEED_INLINE);
 
 			if ( pB->i2eWaitingForEmptyFifo ) {
 
-#ifdef IP2DEBUG_TRACE
 				ip2trace (CHANN, ITRC_OUTPUT, 16, 0 );
-#endif
+
 				// or schedule
 				if (!in_interrupt()) {
 
-#ifdef IP2DEBUG_TRACE
-	ip2trace (CHANN, ITRC_OUTPUT, 61, 0 );
-#endif
+					ip2trace (CHANN, ITRC_OUTPUT, 61, 0 );
+
 					current->state = TASK_INTERRUPTIBLE;
 					schedule_timeout(2);
 					if (signal_pending(current)) {
@@ -1159,9 +1143,9 @@
 					}
 					continue;
 				} else {
-#ifdef IP2DEBUG_TRACE
-	ip2trace (CHANN, ITRC_OUTPUT, 62, 0 );
-#endif
+
+					ip2trace (CHANN, ITRC_OUTPUT, 62, 0 );
+
 					// let interrupt in = WAS restore_flags()
 					// We hold no lock nor is irq off anymore???
 					
@@ -1171,31 +1155,31 @@
 			}
 			else if ( pB->i2eFifoRemains < 32 && !pB->i2eTxMailEmpty ( pB ) )
 			{
-#ifdef IP2DEBUG_TRACE
-				ip2trace (CHANN, ITRC_OUTPUT, 19, 2, pB->i2eFifoRemains,
-									pB->i2eTxMailEmpty );
-#endif
+				ip2trace (CHANN, ITRC_OUTPUT, 19, 2,
+					pB->i2eFifoRemains,
+					pB->i2eTxMailEmpty );
+
 				break;   // from while(count)
 			} else if ( pCh->channelNeeds & NEED_CREDIT ) {
-#ifdef IP2DEBUG_TRACE
+
 				ip2trace (CHANN, ITRC_OUTPUT, 22, 0 );
-#endif
+
 				break;   // from while(count)
 			} else if ( --bailout) {
 
 				// Try to throw more things (maybe not us) in the fifo if we're
 				// not already waiting for it.
 	
-#ifdef IP2DEBUG_TRACE
 				ip2trace (CHANN, ITRC_OUTPUT, 20, 0 );
-#endif
+
 				serviceOutgoingFifo(pB);
 				//break;  CONTINUE;
 			} else {
-#ifdef IP2DEBUG_TRACE
-				ip2trace (CHANN, ITRC_OUTPUT, 21, 3, pB->i2eFifoRemains,
-							pB->i2eOutMailWaiting, pB->i2eWaitingForEmptyFifo );
-#endif
+				ip2trace (CHANN, ITRC_OUTPUT, 21, 3,
+					pB->i2eFifoRemains,
+					pB->i2eOutMailWaiting,
+					pB->i2eWaitingForEmptyFifo );
+
 				break;   // from while(count)
 			}
 		}
@@ -1206,14 +1190,13 @@
 	// We drop through either when the count expires, or when there is some
 	// count left, but there was a non-blocking write.
 	if (countOriginal > count) {
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_OUTPUT, 17, 2, countOriginal, count );
-#endif
+
 		serviceOutgoingFifo( pB );
 	}
-#ifdef IP2DEBUG_TRACE
+
 	ip2trace (CHANN, ITRC_OUTPUT, ITRC_RETURN, 2, countOriginal, count );
-#endif
 
 	return countOriginal - count;
 }
@@ -1232,23 +1215,20 @@
 i2FlushOutput(i2ChanStrPtr pCh)
 {
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_FLUSH, 1, 1, pCh->flush_flags );
-#endif
 
 	if (pCh->flush_flags)
 		return;
 
 	if ( 1 != i2QueueCommands(PTYPE_BYPASS, pCh, 0, 1, CMD_STARTFL) ) {
 		pCh->flush_flags = STARTFL_FLAG;		// Failed - flag for later
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_FLUSH, 2, 0 );
-#endif
+
 	} else if ( 1 != i2QueueCommands(PTYPE_INLINE, pCh, 0, 1, CMD_STOPFL) ) {
 		pCh->flush_flags = STOPFL_FLAG;		// Failed - flag for later
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_FLUSH, 3, 0 );
-#endif
 	}
 }
 
@@ -1257,9 +1237,7 @@
 {
 	int old_flags = pCh->flush_flags;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_FLUSH, 14, 1, old_flags );
-#endif
 
 	pCh->flush_flags = 0;	// Clear flag so we can avoid recursion
 									// and queue the commands
@@ -1270,23 +1248,21 @@
 		} else {
 			old_flags = STARTFL_FLAG;	//Failure - Flag for retry later
 		}
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_FLUSH, 15, 1, old_flags );
-#endif
+
 	}
 	if ( old_flags & STOPFL_FLAG ) {
 		if ( 1 == i2QueueCommands(PTYPE_INLINE, pCh, 0, 1, CMD_STOPFL) > 0 ) {
 			old_flags = 0;	// Success - clear flags
 		}
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_FLUSH, 16, 1, old_flags );
-#endif
 	}
-   pCh->flush_flags = old_flags;
+	pCh->flush_flags = old_flags;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_FLUSH, 17, 1, old_flags );
-#endif
+
 	return old_flags;
 }
 
@@ -1303,9 +1279,8 @@
 static void
 i2DrainWakeup(i2ChanStrPtr pCh)
 {
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_DRAIN, 10, 1, pCh->BookmarkTimer.expires );
-#endif
+
 	pCh->BookmarkTimer.expires = 0;
 	wake_up_interruptible( &pCh->pBookmarkWait );
 }
@@ -1316,9 +1291,8 @@
 	wait_queue_t wait;
 	i2eBordStrPtr pB;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_DRAIN, ITRC_ENTER, 1, pCh->BookmarkTimer.expires);
-#endif
+
 	pB = pCh->pMyBord;
 	// If the board has gone fatal, return bad, 
 	// and also hit the trap routine if it exists.
@@ -1335,9 +1309,7 @@
 		pCh->BookmarkTimer.function = (void*)(unsigned long)i2DrainWakeup;
 		pCh->BookmarkTimer.data     = (unsigned long)pCh;
 
-#ifdef IP2DEBUG_TRACE
 		ip2trace (CHANN, ITRC_DRAIN, 1, 1, pCh->BookmarkTimer.expires );
-#endif
 
 		add_timer( &(pCh->BookmarkTimer) );
 	}
@@ -1361,14 +1333,11 @@
 				(pCh->BookmarkTimer.expires > jiffies)) {
 		del_timer( &(pCh->BookmarkTimer) );
 		pCh->BookmarkTimer.expires = 0;
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_DRAIN, 3, 1, pCh->BookmarkTimer.expires );
-#endif
 
 	}
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_DRAIN, ITRC_RETURN, 1, pCh->BookmarkTimer.expires );
-#endif
 	return;
 }
 
@@ -1413,17 +1382,17 @@
 
 	pCh = tp->driver_data;
 
-#ifdef IP2DEBUG_TRACE
-	ip2trace (CHANN, ITRC_SICMD, 10, 2, tp->flags, (1 << TTY_DO_WRITE_WAKEUP) );
-#endif
+	ip2trace (CHANN, ITRC_SICMD, 10, 2, tp->flags,
+			(1 << TTY_DO_WRITE_WAKEUP) );
+
 	wake_up_interruptible ( &tp->write_wait );
 	if ( ( tp->flags & (1 << TTY_DO_WRITE_WAKEUP) ) 
 	  && tp->ldisc.write_wakeup )
 	{
 		(tp->ldisc.write_wakeup) ( tp );
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_SICMD, 11, 0 );
-#endif
+
 	}
 }
 
@@ -1509,14 +1478,11 @@
 	unsigned char dss_change;
 	unsigned long bflags,cflags;
 
-#ifdef IP2DEBUG_TRACE
-	//ip2trace (ITRC_NO_PORT, ITRC_SFIFO, ITRC_ENTER, 0 );
-#endif
+//	ip2trace (ITRC_NO_PORT, ITRC_SFIFO, ITRC_ENTER, 0 );
 
 	while (HAS_INPUT(pB)) {
-#ifdef IP2DEBUG_TRACE
-		//ip2trace (ITRC_NO_PORT, ITRC_SFIFO, 2, 0 );
-#endif
+//		ip2trace (ITRC_NO_PORT, ITRC_SFIFO, 2, 0 );
+
 		// Process packet from fifo a one atomic unit
 		WRITE_LOCK_IRQSAVE(&pB->read_fifo_spinlock,bflags);
    
@@ -1529,9 +1495,8 @@
 		case PTYPE_DATA:
 			pB->got_input = 1;
 
-#ifdef IP2DEBUG_TRACE
-			//ip2trace (ITRC_NO_PORT, ITRC_SFIFO, 3, 0 );
-#endif
+//			ip2trace (ITRC_NO_PORT, ITRC_SFIFO, 3, 0 );
+
 			channel = CHANNEL_OF(pB->i2eLeadoffWord); /* Store channel */
 			count = iiReadWord(pB);          /* Count is in the next word */
 
@@ -1631,9 +1596,7 @@
 			break;   // From switch: ready for next packet
 
 		case PTYPE_STATUS:
-#ifdef IP2DEBUG_TRACE
 			ip2trace (ITRC_NO_PORT, ITRC_SFIFO, 4, 0 );
-#endif
       
 			count = CMD_COUNT_OF(pB->i2eLeadoffWord);
 
@@ -1646,9 +1609,9 @@
 
 			while (pc < pcLimit) {
 				channel = *pc++;
-#ifdef IP2DEBUG_TRACE
+
 				ip2trace (channel, ITRC_SFIFO, 7, 2, channel, *pc );
-#endif
+
 				/* check for valid channel */
 				if (channel < pB->i2eChannelCnt
 					 && 
@@ -1681,41 +1644,32 @@
 						break;
 
 					case STAT_DCD_UP:
-#ifdef IP2DEBUG_TRACE
 						ip2trace (channel, ITRC_MODEM, 1, 1, pCh->dataSetIn );
-#endif
+
 						if ( !(pCh->dataSetIn & I2_DCD) )
 						{
-#ifdef IP2DEBUG_TRACE
 							ip2trace (CHANN, ITRC_MODEM, 2, 0 );
-#endif
 							pCh->dataSetIn |= I2_DDCD;
 							pCh->icount.dcd++;
 							dss_change = 1;
 						}
 						pCh->dataSetIn |= I2_DCD;
-#ifdef IP2DEBUG_TRACE
+
 						ip2trace (channel, ITRC_MODEM, 3, 1, pCh->dataSetIn );
-#endif
 						break;
 
 					case STAT_DCD_DN:
-#ifdef IP2DEBUG_TRACE
 						ip2trace (channel, ITRC_MODEM, 4, 1, pCh->dataSetIn );
-#endif
 						if ( pCh->dataSetIn & I2_DCD )
 						{
-#ifdef IP2DEBUG_TRACE
 							ip2trace (channel, ITRC_MODEM, 5, 0 );
-#endif
 							pCh->dataSetIn |= I2_DDCD;
 							pCh->icount.dcd++;
 							dss_change = 1;
 						}
 						pCh->dataSetIn &= ~I2_DCD;
-#ifdef IP2DEBUG_TRACE
+
 						ip2trace (channel, ITRC_MODEM, 6, 1, pCh->dataSetIn );
-#endif
 						break;
 
 					case STAT_DSR_UP:
@@ -1771,9 +1725,8 @@
 						if (pCh->bookMarks <= 0 ) {
 							pCh->bookMarks = 0;
 							wake_up_interruptible( &pCh->pBookmarkWait );
-#ifdef IP2DEBUG_TRACE
+
 						ip2trace (channel, ITRC_DRAIN, 20, 1, pCh->BookmarkTimer.expires );
-#endif
 						}
 						break;
 
@@ -1783,22 +1736,21 @@
 						pCh->outfl.room =
 							((flowStatPtr)pc)->room -
 							(pCh->outfl.asof - ((flowStatPtr)pc)->asof);
-#ifdef IP2DEBUG_TRACE
+
 						ip2trace (channel, ITRC_STFLW, 1, 1, pCh->outfl.room );
-#endif
+
 						if (pCh->channelNeeds & NEED_CREDIT)
 						{
-#ifdef IP2DEBUG_TRACE
-						ip2trace (channel, ITRC_STFLW, 2, 1, pCh->channelNeeds);
-#endif
+							ip2trace (channel, ITRC_STFLW, 2, 1, pCh->channelNeeds);
+
 							pCh->channelNeeds &= ~NEED_CREDIT;
 							i2QueueNeeds(pB, pCh, NEED_INLINE);
 							if ( pCh->pTTY )
 								ip2_owake(pCh->pTTY);
 						}
-#ifdef IP2DEBUG_TRACE
+
 						ip2trace (channel, ITRC_STFLW, 3, 1, pCh->channelNeeds);
-#endif
+
 						pc += sizeof(flowStat);
 						break;
 
@@ -1894,16 +1846,15 @@
 			break;
 
 		default: // Neither packet? should be impossible
-#ifdef IP2DEBUG_TRACE
 			ip2trace (ITRC_NO_PORT, ITRC_SFIFO, 5, 1,
 				PTYPE_OF(pB->i2eLeadoffWord) );
-#endif
+
 			break;
 		}  // End of switch on type of packets
 	}	//while(board HAS_INPUT)
-#ifdef IP2DEBUG_TRACE
+
 	ip2trace (ITRC_NO_PORT, ITRC_SFIFO, ITRC_RETURN, 0 );
-#endif
+
 	// Send acknowledgement to the board even if there was no data!
 	pB->i2eOutMailWaiting |= MB_IN_STRIPPED;
 	return;
@@ -2021,9 +1972,8 @@
 	i2ChanStrPtr pCh;
 	unsigned short paddedSize		= ROUNDUP(sizeof(flowIn));
 
-#ifdef IP2DEBUG_TRACE
-ip2trace (ITRC_NO_PORT, ITRC_SFLOW, ITRC_ENTER, 2, pB->i2eFifoRemains, paddedSize );
-#endif
+	ip2trace (ITRC_NO_PORT, ITRC_SFLOW, ITRC_ENTER, 2,
+		pB->i2eFifoRemains, paddedSize );
 
 	// Continue processing so long as there are entries, or there is room in the
 	// fifo. Each entry represents a channel with something to do.
@@ -2035,14 +1985,12 @@
 			break;
 		}
 #ifdef DEBUG_FIFO
-WriteDBGBuf("FLOW",(unsigned char *) &(pCh->infl), paddedSize);
+		WriteDBGBuf("FLOW",(unsigned char *) &(pCh->infl), paddedSize);
 #endif /* DEBUG_FIFO */
 
 	}  // Either clogged or finished all the work
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_SFLOW, ITRC_RETURN, 0 );
-#endif
 }
 
 //******************************************************************************
@@ -2070,10 +2018,8 @@
 	int bailout  = 1000;
 	int bailout2;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_SICMD, ITRC_ENTER, 3, pB->i2eFifoRemains, 
 			pB->i2Dbuf_strip, pB->i2Dbuf_stuff );
-#endif
 
 	// Continue processing so long as there are entries, or there is room in the
 	// fifo. Each entry represents a channel with something to do.
@@ -2083,9 +2029,8 @@
 		WRITE_LOCK_IRQSAVE(&pCh->Obuf_spinlock,flags);
 		stripIndex = pCh->Obuf_strip;
 
-#ifdef IP2DEBUG_TRACE
 		ip2trace (CHANN, ITRC_SICMD, 3, 2, stripIndex, pCh->Obuf_stuff );
-#endif 
+
 		// as long as there are packets for this channel...
 		bailout2 = 1000;
 		while ( --bailout2 && stripIndex != pCh->Obuf_stuff) {
@@ -2104,16 +2049,15 @@
 			flowsize = CREDIT_USAGE(flowsize);
 			paddedSize = ROUNDUP(packetSize);
 
-#ifdef IP2DEBUG_TRACE
 			ip2trace (CHANN, ITRC_SICMD, 4, 2, pB->i2eFifoRemains, paddedSize );
-#endif 
+
 			// If we don't have enough credits from the board to send the data,
 			// flag the channel that we are waiting for flow control credit, and
 			// break out. This will clean up this channel and remove us from the
 			// queue of hot things to do.
-#ifdef IP2DEBUG_TRACE
+
 				ip2trace (CHANN, ITRC_SICMD, 5, 2, pCh->outfl.room, flowsize );
-#endif 
+
 			if (pCh->outfl.room <= flowsize)	{
 				// Do Not have the credits to send this packet.
 				i2QueueNeeds(pB, pCh, NEED_CREDIT);
@@ -2141,15 +2085,15 @@
 			}
 			pRemove += packetSize;
 			stripIndex += packetSize;
-#ifdef IP2DEBUG_TRACE
+
 			ip2trace (CHANN, ITRC_SICMD, 6, 2, stripIndex, pCh->Obuf_strip);
-#endif 
+
 			if (stripIndex >= OBUF_SIZE) {
 				stripIndex = 0;
 				pRemove = pCh->Obuf;
-#ifdef IP2DEBUG_TRACE
+
 				ip2trace (CHANN, ITRC_SICMD, 7, 1, stripIndex );
-#endif 
+
 			}
 		}	/* while */
 		if ( !bailout2 ) {
@@ -2161,23 +2105,20 @@
 		WRITE_UNLOCK_IRQRESTORE(&pCh->Obuf_spinlock,flags);
 		if ( notClogged )
 		{
-#ifdef IP2DEBUG_TRACE
+
 			ip2trace (CHANN, ITRC_SICMD, 8, 0 );
-#endif
+
 			if ( pCh->pTTY ) {
 				ip2_owake(pCh->pTTY);
 			}
 		}
 	}  // Either clogged or finished all the work
-#ifdef IP2DEBUG_TRACE
+
 	if ( !bailout ) {
 		ip2trace (ITRC_NO_PORT, ITRC_ERROR, 4, 0 );
 	}
-#endif
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_SICMD, ITRC_RETURN, 1,pB->i2Dbuf_strip);
-#endif
 }
 
 //******************************************************************************
@@ -2247,9 +2188,7 @@
 	}
 	pB->i2eStartMail = NO_MAIL_HERE;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_INTR, 2, 1, inmail );
-#endif
 
 	if (inmail != NO_MAIL_HERE) {
 		// If the board has gone fatal, nothing to do but hit a bit that will
@@ -2271,16 +2210,14 @@
 			pB->i2eFifoRemains = pB->i2eFifoSize;
 			pB->i2eWaitingForEmptyFifo = 0;
 			WRITE_UNLOCK_IRQRESTORE(&pB->write_fifo_spinlock,flags);
-#ifdef IP2DEBUG_TRACE
-		ip2trace (ITRC_NO_PORT, ITRC_INTR, 30, 1, pB->i2eFifoRemains );
-#endif
+
+			ip2trace (ITRC_NO_PORT, ITRC_INTR, 30, 1, pB->i2eFifoRemains );
+
 		}
 		serviceOutgoingFifo(pB);
 	}
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_INTR, 8, 0 );
-#endif
 
 exit_i2ServiceBoard:
 
diff -urN linux-2.4.14-pre7/drivers/char/ip2/i2lib.h linux/drivers/char/ip2/i2lib.h
--- linux-2.4.14-pre7/drivers/char/ip2/i2lib.h	Fri Feb 16 16:02:35 2001
+++ linux/drivers/char/ip2/i2lib.h	Mon Dec  3 23:26:02 2001
@@ -341,6 +341,12 @@
 static int  i2ServiceBoard(i2eBordStrPtr);
 static void i2DrainOutput(i2ChanStrPtr, int);
 
+#ifdef IP2DEBUG_TRACE
+void ip2trace(unsigned short,unsigned char,unsigned char,unsigned long,...);
+#else
+#define ip2trace(a,b,c,d...) do {} while (0)
+#endif
+
 // Argument to i2QueueCommands
 //
 #define C_IN_LINE 1
diff -urN linux-2.4.14-pre7/drivers/char/ip2main.c linux/drivers/char/ip2main.c
--- linux-2.4.14-pre7/drivers/char/ip2main.c	Mon Dec  3 23:25:52 2001
+++ linux/drivers/char/ip2main.c	Mon Dec  3 23:26:02 2001
@@ -13,9 +13,21 @@
 // ToDo:
 //
 // Fix the immediate DSS_NOW problem.
+// Work over the channel stats return logic in ip2_ipl_ioctl so they
+//	make sense for all 256 possible channels and so the user space
+//	utilities will compile and work properly.
 //
 // Done:
 //
+// 1.2.14	/\/\|=mhw=|\/\/
+// Added bounds checking to ip2_ipl_ioctl to avoid potential terroristic acts.
+// Changed the definition of ip2trace to be more consistant with kernel style
+//	Thanks to Andreas Dilger <adilger@turbolabs.com> for these updates
+//
+// 1.2.13	/\/\|=mhw=|\/\/
+// DEVFS: Renamed ttf/{n} to tts/F{n} and cuf/{n} to cua/F{n} to conform
+//	to agreed devfs serial device naming convention.
+//
 // 1.2.12	/\/\|=mhw=|\/\/
 // Cleaned up some remove queue cut and paste errors
 //
@@ -215,13 +227,13 @@
 
 /* String constants to identify ourselves */
 static char *pcName    = "Computone IntelliPort Plus multiport driver";
-static char *pcVersion = "1.2.11";
+static char *pcVersion = "1.2.14";
 
 /* String constants for port names */
 static char *pcDriver_name   = "ip2";
 #ifdef	CONFIG_DEVFS_FS
-static char *pcTty    		 = "ttf/%d";
-static char *pcCallout		 = "cuf/%d";
+static char *pcTty    		 = "tts/F%d";
+static char *pcCallout		 = "cua/F%d";
 #else
 static char *pcTty    		 = "ttyF";
 static char *pcCallout		 = "cuf";
@@ -289,7 +301,6 @@
 static int ip2_ipl_ioctl(struct inode *, struct file *, UINT, ULONG);
 static int ip2_ipl_open(struct inode *, struct file *);
 
-void ip2trace(unsigned short,unsigned char,unsigned char,unsigned long,...);
 static int DumpTraceBuffer(char *, int);
 static int DumpFifoBuffer( char *, int);
 
@@ -583,9 +594,7 @@
 	i2eBordStrPtr pB = NULL;
 	int rc = -1;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_INIT, ITRC_ENTER, 0 );
-#endif
 
 	/* process command line arguments to modprobe or
 		insmod i.e. iop & irqp */
@@ -789,9 +798,7 @@
 		}
 	}
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_INIT, 2, 0 );
-#endif
 
 	/* Zero out the normal tty device structure. */
 	memset ( &ip2_tty_driver, 0, sizeof ip2_tty_driver );
@@ -850,9 +857,7 @@
 	ip2_callout_driver.major   = IP2_CALLOUT_MAJOR;
 	ip2_callout_driver.subtype = SERIAL_TYPE_CALLOUT;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_INIT, 3, 0 );
-#endif
 
 	/* Register the tty devices. */
 	if ( ( err = tty_register_driver ( &ip2_tty_driver ) ) ) {
@@ -875,9 +880,7 @@
 		printk(KERN_ERR "IP2: failed to register read_procmem\n");
 	} else {
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_INIT, 4, 0 );
-#endif
 		/* Register the interrupt handler or poll handler, depending upon the
 		 * specified interrupt.
 		 */
@@ -967,9 +970,7 @@
 			}
 		}
 	}
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_INIT, ITRC_RETURN, 0 );
-#endif
 
 	return 0;
 }
@@ -1368,9 +1369,7 @@
 	int i;
 	i2eBordStrPtr  pB;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_INTR, 99, 1, irq );
-#endif
 
 	/* Service just the boards on the list using this irq */
 	for( i = 0; i < i2nBoards; ++i ) {
@@ -1404,9 +1403,7 @@
 
 	++irq_counter;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_INTR, ITRC_RETURN, 0 );
-#endif
 }
 
 /******************************************************************************/
@@ -1422,9 +1419,8 @@
 static void
 ip2_poll(unsigned long arg)
 {
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_INTR, 100, 0 );
-#endif
+
 	TimerOn = 0; // it's the truth but not checked in service
 
 	// Just polled boards, IRQ = 0 will hit all non-interrupt boards.
@@ -1436,9 +1432,7 @@
 	add_timer( &PollTimer );
 	TimerOn = 1;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (ITRC_NO_PORT, ITRC_INTR, ITRC_RETURN, 0 );
-#endif
 }
 
 static inline void 
@@ -1446,9 +1440,8 @@
 {
 	unsigned long flags;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace(CHANN, ITRC_INPUT, 21, 0 );
-#endif
+
 	// Data input
 	if ( pCh->pTTY != NULL ) {
 		READ_LOCK_IRQSAVE(&pCh->Ibuf_spinlock,flags)
@@ -1458,9 +1451,8 @@
 		} else
 			READ_UNLOCK_IRQRESTORE(&pCh->Ibuf_spinlock,flags)
 	} else {
-#ifdef IP2DEBUG_TRACE
 		ip2trace(CHANN, ITRC_INPUT, 22, 0 );
-#endif
+
 		i2InputFlush( pCh );
 	}
 }
@@ -1485,9 +1477,7 @@
 
 	status =  i2GetStatus( pCh, (I2_BRK|I2_PAR|I2_FRA|I2_OVR) );
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_STATUS, 21, 1, status );
-#endif
 
 	if (pCh->pTTY && (status & (I2_BRK|I2_PAR|I2_FRA|I2_OVR)) ) {
 		if ( (status & I2_BRK) ) {
@@ -1547,9 +1537,7 @@
 		}
 	}
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_STATUS, 26, 0 );
-#endif
 }
 
 /******************************************************************************/
@@ -1604,9 +1592,7 @@
 	int do_clocal = 0;
 	i2ChanStrPtr  pCh = DevTable[MINOR(tty->device)];
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (MINOR(tty->device), ITRC_OPEN, ITRC_ENTER, 0 );
-#endif
 
 	if ( pCh == NULL ) {
 		return -ENODEV;
@@ -1732,10 +1718,8 @@
 			(pCh->flags & ASYNC_CLOSING)?"True":"False");
 		printk(KERN_DEBUG "OpenBlock: waiting for CD or signal\n");
 #endif
-#ifdef IP2DEBUG_TRACE
 		ip2trace (CHANN, ITRC_OPEN, 3, 2, (pCh->flags & ASYNC_CALLOUT_ACTIVE),
-								(pCh->flags & ASYNC_CLOSING) );
-#endif
+				(pCh->flags & ASYNC_CLOSING) );
 		/* check for signal */
 		if (signal_pending(current)) {
 			rc = (( pCh->flags & ASYNC_HUP_NOTIFY ) ? -EAGAIN : -ERESTARTSYS);
@@ -1747,9 +1731,9 @@
 	remove_wait_queue(&pCh->open_wait, &wait);
 
 	--pCh->wopen; //why count?
-#ifdef IP2DEBUG_TRACE
+
 	ip2trace (CHANN, ITRC_OPEN, 4, 0 );
-#endif
+
 	if (rc != 0 ) {
 		return rc;
 	}
@@ -1786,9 +1770,8 @@
 #endif
 	serviceOutgoingFifo( pCh->pMyBord );
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_OPEN, ITRC_RETURN, 0 );
-#endif
+
 	return 0;
 }
 
@@ -1811,9 +1794,7 @@
 		return;
 	}
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_CLOSE, ITRC_ENTER, 0 );
-#endif
 
 #ifdef IP2DEBUG_OPEN
 	printk(KERN_DEBUG "IP2:close ttyF%02X:\n",MINOR(tty->device));
@@ -1822,16 +1803,15 @@
 	if ( tty_hung_up_p ( pFile ) ) {
 		MOD_DEC_USE_COUNT;
 
-#ifdef IP2DEBUG_TRACE
 		ip2trace (CHANN, ITRC_CLOSE, 2, 1, 2 );
-#endif
+
 		return;
 	}
 	if ( tty->count > 1 ) { /* not the last close */
 		MOD_DEC_USE_COUNT;
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_CLOSE, 2, 1, 3 );
-#endif
+
 		return;
 	}
 	pCh->flags |= ASYNC_CLOSING;	// last close actually
@@ -1898,9 +1878,8 @@
 
 	MOD_DEC_USE_COUNT;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_CLOSE, ITRC_RETURN, 1, 1 );
-#endif
+
 	return;
 }
 
@@ -1922,9 +1901,7 @@
 		return;
 	}
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_HANGUP, ITRC_ENTER, 0 );
-#endif
 
 	ip2_flush_buffer(tty);
 
@@ -1947,9 +1924,7 @@
 	pCh->pTTY = NULL;
 	wake_up_interruptible ( &pCh->open_wait );
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_HANGUP, ITRC_RETURN, 0 );
-#endif
 }
 
 /******************************************************************************/
@@ -1977,9 +1952,7 @@
 	int bytesSent = 0;
 	unsigned long flags;
 
-#ifdef IP2DEBUG_TRACE
-   ip2trace (CHANN, ITRC_WRITE, ITRC_ENTER, 2, count, -1 );
-#endif
+	ip2trace (CHANN, ITRC_WRITE, ITRC_ENTER, 2, count, -1 );
 
 	/* Flush out any buffered data left over from ip2_putchar() calls. */
 	ip2_flush_chars( tty );
@@ -1989,9 +1962,8 @@
 	bytesSent = i2Output( pCh, pData, count, user );
 	WRITE_UNLOCK_IRQRESTORE(&pCh->Pbuf_spinlock,flags);
 
-#ifdef IP2DEBUG_TRACE
-   ip2trace (CHANN, ITRC_WRITE, ITRC_RETURN, 1, bytesSent );
-#endif
+	ip2trace (CHANN, ITRC_WRITE, ITRC_RETURN, 1, bytesSent );
+
 	return bytesSent > 0 ? bytesSent : 0;
 }
 
@@ -2011,9 +1983,7 @@
 	i2ChanStrPtr  pCh = tty->driver_data;
 	unsigned long flags;
 
-#ifdef IP2DEBUG_TRACE
 //	ip2trace (CHANN, ITRC_PUTC, ITRC_ENTER, 1, ch );
-#endif
 
 	WRITE_LOCK_IRQSAVE(&pCh->Pbuf_spinlock,flags);
 	pCh->Pbuf[pCh->Pbuf_stuff++] = ch;
@@ -2023,9 +1993,7 @@
 	} else
 		WRITE_UNLOCK_IRQRESTORE(&pCh->Pbuf_spinlock,flags);
 
-#ifdef IP2DEBUG_TRACE
 //	ip2trace (CHANN, ITRC_PUTC, ITRC_RETURN, 1, ch );
-#endif
 }
 
 /******************************************************************************/
@@ -2045,9 +2013,9 @@
 
 	WRITE_LOCK_IRQSAVE(&pCh->Pbuf_spinlock,flags);
 	if ( pCh->Pbuf_stuff ) {
-#ifdef IP2DEBUG_TRACE
-//	ip2trace (CHANN, ITRC_PUTC, 10, 1, strip );
-#endif
+
+//		ip2trace (CHANN, ITRC_PUTC, 10, 1, strip );
+
 		//
 		// We may need to restart i2Output if it does not fullfill this request
 		//
@@ -2079,9 +2047,7 @@
 	bytesFree = i2OutputFree( pCh ) - pCh->Pbuf_stuff;
 	READ_UNLOCK_IRQRESTORE(&pCh->Pbuf_spinlock,flags);
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_WRITE, 11, 1, bytesFree );
-#endif
 
 	return ((bytesFree > 0) ? bytesFree : 0);
 }
@@ -2101,9 +2067,9 @@
 	i2ChanStrPtr  pCh = tty->driver_data;
 	int rc;
 	unsigned long flags;
-#ifdef IP2DEBUG_TRACE
+
 	ip2trace (CHANN, ITRC_WRITE, 12, 1, pCh->Obuf_char_count + pCh->Pbuf_stuff );
-#endif
+
 #ifdef IP2DEBUG_WRITE
 	printk (KERN_DEBUG "IP2: chars in buffer = %d (%d,%d)\n",
 				 pCh->Obuf_char_count + pCh->Pbuf_stuff,
@@ -2133,9 +2099,8 @@
 	i2ChanStrPtr  pCh = tty->driver_data;
 	unsigned long flags;
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_FLUSH, ITRC_ENTER, 0 );
-#endif
+
 #ifdef IP2DEBUG_WRITE
 	printk (KERN_DEBUG "IP2: flush buffer\n" );
 #endif
@@ -2144,9 +2109,9 @@
 	WRITE_UNLOCK_IRQRESTORE(&pCh->Pbuf_spinlock,flags);
 	i2FlushOutput( pCh );
 	ip2_owake(tty);
-#ifdef IP2DEBUG_TRACE
+
 	ip2trace (CHANN, ITRC_FLUSH, ITRC_RETURN, 0 );
-#endif
+
 }
 
 /******************************************************************************/
@@ -2292,9 +2257,7 @@
 		return -ENODEV;
 	}
 
-#ifdef IP2DEBUG_TRACE
 	ip2trace (CHANN, ITRC_IOCTL, ITRC_ENTER, 2, cmd, arg );
-#endif
 
 #ifdef IP2DEBUG_IOCTL
 	printk(KERN_DEBUG "IP2: ioctl cmd (%x), arg (%lx)\n", cmd, arg );
@@ -2302,18 +2265,18 @@
 
 	switch(cmd) {
 	case TIOCGSERIAL:
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_IOCTL, 2, 1, rc );
-#endif
+
 		rc = get_serial_info(pCh, (struct serial_struct *) arg);
 		if (rc)
 			return rc;
 		break;
 
 	case TIOCSSERIAL:
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_IOCTL, 3, 1, rc );
-#endif
+
 		rc = set_serial_info(pCh, (struct serial_struct *) arg);
 		if (rc)
 			return rc;
@@ -2349,9 +2312,9 @@
 
 	case TCSBRK:   /* SVID version: non-zero arg --> no break */
 		rc = tty_check_change(tty);
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_IOCTL, 4, 1, rc );
-#endif
+
 		if (!rc) {
 			ip2_wait_until_sent(tty,0);
 			if (!arg) {
@@ -2363,9 +2326,9 @@
 
 	case TCSBRKP:  /* support for POSIX tcsendbreak() */
 		rc = tty_check_change(tty);
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_IOCTL, 5, 1, rc );
-#endif
+
 		if (!rc) {
 			ip2_wait_until_sent(tty,0);
 			i2QueueCommands(PTYPE_INLINE, pCh, 100, 1,
@@ -2375,18 +2338,18 @@
 		break;
 
 	case TIOCGSOFTCAR:
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_IOCTL, 6, 1, rc );
-#endif
+
 			PUT_USER(rc,C_CLOCAL(tty) ? 1 : 0, (unsigned long *) arg);
 		if (rc)	
 			return rc;
 	break;
 
 	case TIOCSSOFTCAR:
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_IOCTL, 7, 1, rc );
-#endif
+
 		GET_USER(rc,arg,(unsigned long *) arg);
 		if (rc) 
 			return rc;
@@ -2396,9 +2359,9 @@
 		break;
 
 	case TIOCMGET:
-#ifdef IP2DEBUG_TRACE
+
 		ip2trace (CHANN, ITRC_IOCTL, 8, 1, rc );
-#endif
+
 /*
 	FIXME - the following code is causing a NULL pointer dereference in
 	2.3.51 in an interrupt handler.  It's suppose to prompt the board
@@ -2441,9 +2404,8 @@
 	case TIOCMBIS:
 	case TIOCMBIC:
 	case TIOCMSET:
-#ifdef IP2DEBUG_TRACE
 		ip2trace (CHANN, ITRC_IOCTL, 9, 0 );
-#endif
+
 		rc = set_modem_info(pCh, cmd, (unsigned int *) arg);
 		break;
 
@@ -2464,13 +2426,12 @@
 
 		serviceOutgoingFifo( pCh->pMyBord );
 		for(;;) {
-#ifdef IP2DEBUG_TRACE
 			ip2trace (CHANN, ITRC_IOCTL, 10, 0 );
-#endif
+
 			schedule();
-#ifdef IP2DEBUG_TRACE
+
 			ip2trace (CHANN, ITRC_IOCTL, 11, 0 );
-#endif
+
 			/* see if a signal did it */
 			if (signal_pending(current)) {
 				rc = -ERESTARTSYS;
@@ -2514,9 +2475,8 @@
 	 * serial driver.
 	 */
 	case TIOCGICOUNT:
-#ifdef IP2DEBUG_TRACE
 		ip2trace (CHANN, ITRC_IOCTL, 11, 1, rc );
-#endif
+
 		save_flags(flags);cli();
 		cnow = pCh->icount;
 		restore_flags(flags);
@@ -2547,15 +2507,14 @@
 	case TIOCSERSETMULTI:
 
 	default:
-#ifdef IP2DEBUG_TRACE
 		ip2trace (CHANN, ITRC_IOCTL, 12, 0 );
-#endif
+
 		rc =  -ENOIOCTLCMD;
 		break;
 	}
-#ifdef IP2DEBUG_TRACE
+
 	ip2trace (CHANN, ITRC_IOCTL, ITRC_RETURN, 0 );
-#endif
+
 	return rc;
 }
 
@@ -2766,9 +2725,9 @@
 #ifdef IP2DEBUG_IOCTL
 	printk (KERN_DEBUG "IP2: set line discipline\n" );
 #endif
-#ifdef IP2DEBUG_TRACE
+
 	ip2trace (((i2ChanStrPtr)tty->driver_data)->port_index, ITRC_IOCTL, 16, 0 );
-#endif
+
 }
 
 /******************************************************************************/
@@ -3224,12 +3183,16 @@
 			break;
 
 		default:
-			pCh = DevTable[cmd];
-			if ( pCh )
-			{
-				COPY_TO_USER(rc, (char*)arg, (char*)pCh, sizeof(i2ChanStr) );
+			if (cmd < IP2_MAX_PORTS) {
+				pCh = DevTable[cmd];
+				if ( pCh )
+				{
+					COPY_TO_USER(rc, (char*)arg, (char*)pCh, sizeof(i2ChanStr) );
+				} else {
+					rc = -ENODEV;
+				}
 			} else {
-				rc = cmd < 64 ? -ENODEV : -EINVAL;
+				rc = -EINVAL;
 			}
 		}
 		break;
@@ -3542,10 +3505,10 @@
 /*                                                                            */
 /*                                                                            */
 /******************************************************************************/
+#ifdef IP2DEBUG_TRACE
 void
 ip2trace (unsigned short pn, unsigned char cat, unsigned char label, unsigned long codes, ...)
 {
-#ifdef IP2DEBUG_TRACE
 	long flags;
 	unsigned long *pCode = &codes;
 	union ip2breadcrumb bc;
@@ -3585,8 +3548,8 @@
 
 		tracebuf[tracestuff++] = *++pCode;
 	}
-#endif
 }
+#endif
 
 
 MODULE_LICENSE("GPL");
diff -urN linux-2.4.14-pre7/drivers/char/misc.c linux/drivers/char/misc.c
--- linux-2.4.14-pre7/drivers/char/misc.c	Fri Sep  7 09:28:38 2001
+++ linux/drivers/char/misc.c	Mon Dec  3 23:26:02 2001
@@ -75,6 +75,7 @@
 extern int ds1286_init(void);
 extern int pmu_device_init(void);
 extern int tosh_init(void);
+extern int i8k_init(void);
 
 static int misc_read_proc(char *buf, char **start, off_t offset,
 			  int len, int *eof, void *private)
@@ -275,6 +276,9 @@
 #endif
 #ifdef CONFIG_TOSHIBA
 	tosh_init();
+#endif
+#ifdef CONFIG_I8K
+	i8k_init();
 #endif
 	if (devfs_register_chrdev(MISC_MAJOR,"misc",&misc_fops)) {
 		printk("unable to get major %d for misc devices\n",
diff -urN linux-2.4.14-pre7/drivers/char/tty_io.c linux/drivers/char/tty_io.c
--- linux-2.4.14-pre7/drivers/char/tty_io.c	Sat Sep 22 11:51:43 2001
+++ linux/drivers/char/tty_io.c	Mon Dec  3 23:26:02 2001
@@ -2329,9 +2329,6 @@
 #ifdef CONFIG_SERIAL_TX3912
 	tx3912_rs_init();
 #endif
-#ifdef CONFIG_COMPUTONE
-	ip2_init();
-#endif
 #ifdef CONFIG_ROCKETPORT
 	rp_init();
 #endif
diff -urN linux-2.4.14-pre7/drivers/parport/ChangeLog linux/drivers/parport/ChangeLog
--- linux-2.4.14-pre7/drivers/parport/ChangeLog	Mon Dec  3 23:25:52 2001
+++ linux/drivers/parport/ChangeLog	Mon Dec  3 23:26:02 2001
@@ -1,3 +1,11 @@
+2001-10-26  Tim Waugh  <twaugh@redhat.com>
+
+	* parport_pc.c (parport_irq_probe): When ECR programmable IRQ
+	support fails, generate interrupts using the FIFO even if we don't
+	want to use the FIFO for real data transfers.
+	(parport_pc_probe_port): Display the ECR address if we have an
+	ECR, not just if we will use the FIFO.
+
 2001-10-24  Dave Strauss  <D.Strauss@motorola.com>
 
 	* parport_pc.c (parport_pc_compat_write_block_pio,
diff -urN linux-2.4.14-pre7/drivers/parport/parport_pc.c linux/drivers/parport/parport_pc.c
--- linux-2.4.14-pre7/drivers/parport/parport_pc.c	Mon Dec  3 23:25:52 2001
+++ linux/drivers/parport/parport_pc.c	Mon Dec  3 23:26:02 2001
@@ -2119,10 +2119,9 @@
 
 	if (priv->ecr) {
 		pb->irq = programmable_irq_support(pb);
-	}
 
-	if (pb->modes & PARPORT_MODE_ECP) {
-		pb->irq = irq_probe_ECP(pb);
+		if (pb->irq == PARPORT_IRQ_NONE)
+			pb->irq = irq_probe_ECP(pb);
 	}
 
 	if ((pb->irq == PARPORT_IRQ_NONE) && priv->ecr &&
@@ -2255,7 +2254,7 @@
 	p->private_data = priv;
 
 	printk(KERN_INFO "%s: PC-style at 0x%lx", p->name, p->base);
-	if (p->base_hi && (p->modes & PARPORT_MODE_ECP))
+	if (p->base_hi && priv->ecr)
 		printk(" (0x%lx)", p->base_hi);
 	p->irq = irq;
 	p->dma = dma;
diff -urN linux-2.4.14-pre7/drivers/usb/Config.in linux/drivers/usb/Config.in
--- linux-2.4.14-pre7/drivers/usb/Config.in	Wed Oct 17 14:35:17 2001
+++ linux/drivers/usb/Config.in	Mon Dec  3 23:26:03 2001
@@ -16,7 +16,6 @@
       define_bool CONFIG_USB_BANDWIDTH n
    fi
    bool '  Long timeout for slow-responding devices (some MGE Ellipse UPSes)' CONFIG_USB_LONG_TIMEOUT
-   bool '  Large report fetching for "broken" devices (some APC UPSes)' CONFIG_USB_LARGE_CONFIG
 fi
 
 comment 'USB Controllers'
diff -urN linux-2.4.14-pre7/drivers/usb/devio.c linux/drivers/usb/devio.c
--- linux-2.4.14-pre7/drivers/usb/devio.c	Mon Sep 10 08:06:32 2001
+++ linux/drivers/usb/devio.c	Mon Dec  3 23:26:03 2001
@@ -844,6 +844,14 @@
 		uurb.buffer_length = totlen;
 		break;
 
+	case USBDEVFS_URB_TYPE_INTERRUPT:
+		uurb.number_of_packets = 0;
+		if (uurb.buffer_length > 16384)
+			return -EINVAL;
+		if (!access_ok((uurb.endpoint & USB_DIR_IN) ? VERIFY_WRITE : VERIFY_READ, uurb.buffer, uurb.buffer_length))
+			return -EFAULT;   
+		break;
+
 	default:
 		return -EINVAL;
 	}
diff -urN linux-2.4.14-pre7/drivers/usb/serial/ir-usb.c linux/drivers/usb/serial/ir-usb.c
--- linux-2.4.14-pre7/drivers/usb/serial/ir-usb.c	Wed Oct 10 23:42:47 2001
+++ linux/drivers/usb/serial/ir-usb.c	Mon Dec  3 23:26:03 2001
@@ -19,7 +19,13 @@
  * <dag@brattli.net>, and Jean Tourrilhes <jt@hpl.hp.com>
 
  * See Documentation/usb/usb-serial.txt for more information on using this driver
- * 
+ *
+ * 2001_Nov_01	greg kh
+ *	Added support for more IrDA USB devices.
+ *	Added support for zero packet.  Added buffer override paramater, so
+ *	users can transfer larger packets at once if they wish.  Both patches
+ *	came from Dag Brattli <dag@obexcode.com>.
+ *
  * 2001_Oct_07	greg kh
  *	initial version released.
  */
@@ -52,10 +58,14 @@
 /*
  * Version Information
  */
-#define DRIVER_VERSION "v0.1"
+#define DRIVER_VERSION "v0.2"
 #define DRIVER_AUTHOR "Greg Kroah-Hartman <greg@kroah.com>"
 #define DRIVER_DESC "USB IR Dongle driver"
 
+/* if overridden by the user, then use their value for the size of the read and
+ * write urbs */
+static int buffer_size = 0;
+
 static int  ir_startup (struct usb_serial *serial);
 static int  ir_open (struct usb_serial_port *port, struct file *filep);
 static void ir_close (struct usb_serial_port *port, struct file *filep);
@@ -66,7 +76,10 @@
 
 
 static __devinitdata struct usb_device_id id_table [] = {
-	{ USB_DEVICE(0x09c4, 0x0011) },
+	{ USB_DEVICE(0x050f, 0x0180) },		/* KC Technology, KC-180 */
+	{ USB_DEVICE(0x08e9, 0x0100) },		/* XTNDAccess */
+	{ USB_DEVICE(0x09c4, 0x0011) },		/* ACTiSys ACT-IR2000U */
+	{ USB_INTERFACE_INFO (USB_CLASS_APP_SPEC, USB_CLASS_IRDA, 0) },
 	{ }					/* Terminating entry */
 };
 
@@ -180,6 +193,7 @@
 static int ir_open (struct usb_serial_port *port, struct file *filp)
 {
 	struct usb_serial *serial = port->serial;
+	char *buffer;
 	int result = 0;
 
 	if (port_paranoia_check (port, __FUNCTION__))
@@ -195,11 +209,28 @@
 	if (!port->active) {
 		port->active = 1;
 
-		/* force low_latency on so that our tty_push actually forces the data through, 
-		   otherwise it is scheduled, and with high data rates (like with OHCI) data
-		   can get lost. */
-		port->tty->low_latency = 1;
-		
+		if (buffer_size) {
+			/* override the default buffer sizes */
+			buffer = kmalloc (buffer_size, GFP_KERNEL);
+			if (!buffer) {
+				err (__FUNCTION__ " - out of memory.");
+				return -ENOMEM;
+			}
+			kfree (port->read_urb->transfer_buffer);
+			port->read_urb->transfer_buffer = buffer;
+			port->read_urb->transfer_buffer_length = buffer_size;
+
+			buffer = kmalloc (buffer_size, GFP_KERNEL);
+			if (!buffer) {
+				err (__FUNCTION__ " - out of memory.");
+				return -ENOMEM;
+			}
+			kfree (port->write_urb->transfer_buffer);
+			port->write_urb->transfer_buffer = buffer;
+			port->write_urb->transfer_buffer_length = buffer_size;
+			port->bulk_out_size = buffer_size;
+		}
+
 		/* Start reading from the device */
 		FILL_BULK_URB(port->read_urb, serial->dev, 
 			      usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress),
@@ -279,12 +310,14 @@
 		memcpy (&transfer_buffer[1], buf, count);
 	}
 
-	transfer_buffer[0] = 0x00;
+	/* use 12 XBOF's as default */
+	transfer_buffer[0] = 0x30;
 
 	usb_serial_debug_data (__FILE__, __FUNCTION__, count+1, transfer_buffer);
 
 	port->write_urb->transfer_buffer_length = count + 1;
 	port->write_urb->dev = port->serial->dev;
+	port->write_urb->transfer_flags |= USB_ZERO_PACKET;
 	result = usb_submit_urb (port->write_urb);
 	if (result)
 		err(__FUNCTION__ " - failed submitting write urb, error %d", result);
@@ -320,7 +353,6 @@
 	struct usb_serial *serial = get_usb_serial (port, __FUNCTION__);
 	struct tty_struct *tty;
 	unsigned char *data = urb->transfer_buffer;
-	int i;
 	int result;
 
 	if (port_paranoia_check (port, __FUNCTION__))
@@ -340,18 +372,11 @@
 
 	usb_serial_debug_data (__FILE__, __FUNCTION__, urb->actual_length, data);
 
+	/* Bypass flip-buffers, and feed the ldisc directly due to our 
+	 * potentally large buffer size.  Since we used to set low_latency,
+	 * this is exactly what the tty layer did anyway :) */
 	tty = port->tty;
-	if (urb->actual_length > 1) {
-		for (i = 1; i < urb->actual_length ; ++i) {
-			/* if we insert more than TTY_FLIPBUF_SIZE characters, we drop them. */
-			if(tty->flip.count >= TTY_FLIPBUF_SIZE) {
-				tty_flip_buffer_push(tty);
-			}
-			/* this doesn't actually push the data through unless tty->low_latency is set */
-			tty_insert_flip_char(tty, data[i], 0);
-		}
-		tty_flip_buffer_push(tty);
-	}
+	tty->ldisc.receive_buf(tty, data+1, NULL, urb->actual_length-1);
 
 	/* Continue trying to always read  */
 	FILL_BULK_URB(port->read_urb, serial->dev, 
@@ -449,4 +474,6 @@
 
 MODULE_PARM(debug, "i");
 MODULE_PARM_DESC(debug, "Debug enabled or not");
+MODULE_PARM(buffer_size, "i");
+MODULE_PARM_DESC(buffer_size, "Size of the transfer buffers");
 
diff -urN linux-2.4.14-pre7/drivers/usb/usbnet.c linux/drivers/usb/usbnet.c
--- linux-2.4.14-pre7/drivers/usb/usbnet.c	Sat Oct 20 19:13:11 2001
+++ linux/drivers/usb/usbnet.c	Mon Dec  3 23:26:03 2001
@@ -1537,6 +1537,10 @@
 	USB_DEVICE (0x0525, 0x1080),	// NetChip ref design
 	driver_info:	(unsigned long) &net1080_info,
 },
+{
+	USB_DEVICE (0x06D0, 0x0622),	// Laplink Gold
+	driver_info:	(unsigned long) &net1080_info,
+},
 #endif
 
 #ifdef CONFIG_USB_PL2301
diff -urN linux-2.4.14-pre7/fs/binfmt_aout.c linux/fs/binfmt_aout.c
--- linux-2.4.14-pre7/fs/binfmt_aout.c	Sun Sep 30 12:26:08 2001
+++ linux/fs/binfmt_aout.c	Mon Dec  3 23:26:03 2001
@@ -285,13 +285,15 @@
 		return retval;
 
 	/* OK, This is the point of no return */
-#if !defined(__sparc__)
-	set_personality(PER_LINUX);
-#else
+#if defined(__alpha__)
+	SET_AOUT_PERSONALITY(bprm, ex);
+#elif defined(__sparc__)
 	set_personality(PER_SUNOS);
 #if !defined(__sparc_v9__)
 	memcpy(&current->thread.core_exec, &ex, sizeof(struct exec));
 #endif
+#else
+	set_personality(PER_LINUX);
 #endif
 
 	current->mm->end_code = ex.a_text +
diff -urN linux-2.4.14-pre7/fs/char_dev.c linux/fs/char_dev.c
--- linux-2.4.14-pre7/fs/char_dev.c	Tue May 22 09:35:42 2001
+++ linux/fs/char_dev.c	Mon Dec  3 23:26:03 2001
@@ -104,8 +104,7 @@
 
 void cdput(struct char_device *cdev)
 {
-	if (atomic_dec_and_test(&cdev->count)) {
-		spin_lock(&cdev_lock);
+	if (atomic_dec_and_lock(&cdev->count, &cdev_lock)) {
 		list_del(&cdev->hash);
 		spin_unlock(&cdev_lock);
 		destroy_cdev(cdev);
diff -urN linux-2.4.14-pre7/fs/devfs/base.c linux/fs/devfs/base.c
--- linux-2.4.14-pre7/fs/devfs/base.c	Wed Oct 10 23:23:24 2001
+++ linux/fs/devfs/base.c	Mon Dec  3 23:26:03 2001
@@ -555,6 +555,11 @@
 	       Fixed buffer underrun in <try_modload>.
 	       Moved down_read() from <search_for_entry_in_dir> to <find_entry>
   v0.119
+    20011029   Richard Gooch <rgooch@atnf.csiro.au>
+	       Fixed race in <devfsd_ioctl> when setting event mask.
+    20011103   Richard Gooch <rgooch@atnf.csiro.au>
+	       Avoid deadlock in <devfs_follow_link> by using temporary buffer.
+  v0.120
 */
 #include <linux/types.h>
 #include <linux/errno.h>
@@ -587,7 +592,7 @@
 #include <asm/bitops.h>
 #include <asm/atomic.h>
 
-#define DEVFS_VERSION            "0.119 (20011009)"
+#define DEVFS_VERSION            "0.120 (20011103)"
 
 #define DEVFS_NAME "devfs"
 
@@ -3029,13 +3034,25 @@
 {
     int err;
     struct devfs_entry *de;
+    char *copy;
 
     de = get_devfs_entry_from_vfs_inode (dentry->d_inode, TRUE);
     if (!de) return -ENODEV;
     down_read (&symlink_rwsem);
-    err = de->registered ? vfs_follow_link (nd,
-					    de->u.symlink.linkname) : -ENODEV;
+    if (!de->registered)
+    {
+	up_read (&symlink_rwsem);
+	return -ENODEV;
+    }
+    copy = kmalloc (de->u.symlink.length + 1, GFP_KERNEL);
+    if (copy) memcpy (copy, de->u.symlink.linkname, de->u.symlink.length + 1);
     up_read (&symlink_rwsem);
+    if (copy)
+    {
+	err = vfs_follow_link (nd, copy);
+	kfree (copy);
+    }
+    else err = -ENOMEM;
     return err;
 }   /*  End Function devfs_follow_link  */
 
@@ -3212,7 +3229,6 @@
 {
     int ival;
     struct fs_info *fs_info = inode->i_sb->u.generic_sbp;
-    static spinlock_t lock = SPIN_LOCK_UNLOCKED;
 
     switch (cmd)
     {
@@ -3226,7 +3242,14 @@
 	    doesn't matter who gets in first, as long as only one gets it  */
 	if (fs_info->devfsd_task == NULL)
 	{
+	    static spinlock_t lock = SPIN_LOCK_UNLOCKED;
+
 	    if ( !spin_trylock (&lock) ) return -EBUSY;
+	    if (fs_info->devfsd_task != NULL)
+	    {   /*  We lost the race...  */
+		spin_unlock (&lock);
+		return -EBUSY;
+	    }
 	    fs_info->devfsd_task = current;
 	    spin_unlock (&lock);
 	    fs_info->devfsd_file = file;
diff -urN linux-2.4.14-pre7/fs/exec.c linux/fs/exec.c
--- linux-2.4.14-pre7/fs/exec.c	Mon Dec  3 23:25:53 2001
+++ linux/fs/exec.c	Mon Dec  3 23:26:03 2001
@@ -771,7 +771,6 @@
 	    if (!bprm->loader && eh->fh.f_magic == 0x183 &&
 		(eh->fh.f_flags & 0x3000) == 0x3000)
 	    {
-		char * dynloader[] = { "/sbin/loader" };
 		struct file * file;
 		unsigned long loader;
 
@@ -781,10 +780,14 @@
 
 	        loader = PAGE_SIZE*MAX_ARG_PAGES-sizeof(void *);
 
-		file = open_exec(dynloader[0]);
+		file = open_exec("/sbin/loader");
 		retval = PTR_ERR(file);
 		if (IS_ERR(file))
 			return retval;
+
+		/* Remember if the application is TASO.  */
+		bprm->sh_bang = eh->ah.entry < 0x100000000;
+
 		bprm->file = file;
 		bprm->loader = loader;
 		retval = prepare_binprm(bprm);
diff -urN linux-2.4.14-pre7/fs/nfs/nfs2xdr.c linux/fs/nfs/nfs2xdr.c
--- linux-2.4.14-pre7/fs/nfs/nfs2xdr.c	Fri Feb  9 11:29:44 2001
+++ linux/fs/nfs/nfs2xdr.c	Mon Dec  3 23:26:03 2001
@@ -471,6 +471,8 @@
 
 	for (nr = 0; *p++; nr++) {
 		entry = p - 1;
+		if (p + 2 > end)
+			goto short_pkt;
 		p++; /* fileid */
 		len = ntohl(*p++);
 		p += XDR_QUADLEN(len) + 1;	/* name plus cookie */
@@ -479,13 +481,13 @@
 						len);
 			return -errno_NFSERR_IO;
 		}
-		if (p + 2 > end) {
-			printk(KERN_NOTICE
-				"NFS: short packet in readdir reply!\n");
-			entry[0] = entry[1] = 0;
-			break;
-		}
+		if (p + 2 > end)
+			goto short_pkt;
 	}
+	return nr;
+ short_pkt:
+	printk(KERN_NOTICE "NFS: short packet in readdir reply!\n");
+	entry[0] = entry[1] = 0;
 	return nr;
 }
 
diff -urN linux-2.4.14-pre7/fs/nfs/nfs3xdr.c linux/fs/nfs/nfs3xdr.c
--- linux-2.4.14-pre7/fs/nfs/nfs3xdr.c	Fri Feb  9 11:29:44 2001
+++ linux/fs/nfs/nfs3xdr.c	Mon Dec  3 23:26:03 2001
@@ -594,6 +594,8 @@
 	end = (u32 *) ((u8 *) p + iov[1].iov_len);
 	for (nr = 0; *p++; nr++) {
 		entry = p - 1;
+		if (p + 3 > end)
+			goto short_pkt;
 		p += 2;				/* inode # */
 		len = ntohl(*p++);		/* string length */
 		p += XDR_QUADLEN(len) + 2;	/* name + cookie */
@@ -605,10 +607,17 @@
 
 		if (res->plus) {
 			/* post_op_attr */
-			if (*p++)
+			if (p > end)
+				goto short_pkt;
+			if (*p++) {
 				p += 21;
+				if (p > end)
+					goto short_pkt;
+			}
 			/* post_op_fh3 */
 			if (*p++) {
+				if (p > end)
+					goto short_pkt;
 				len = ntohl(*p++);
 				if (len > NFS3_FHSIZE) {
 					printk(KERN_WARNING "NFS: giant filehandle in "
@@ -619,15 +628,15 @@
 			}
 		}
 
-		if (p + 2 > end) {
-			printk(KERN_NOTICE
-				"NFS: short packet in readdir reply!\n");
-			/* truncate listing */
-			entry[0] = entry[1] = 0;
-			break;
-		}
+		if (p + 2 > end)
+			goto short_pkt;
 	}
 
+	return nr;
+ short_pkt:
+	printk(KERN_NOTICE "NFS: short packet in readdir reply!\n");
+	/* truncate listing */
+	entry[0] = entry[1] = 0;
 	return nr;
 }
 
diff -urN linux-2.4.14-pre7/fs/ntfs/dir.c linux/fs/ntfs/dir.c
--- linux-2.4.14-pre7/fs/ntfs/dir.c	Tue Sep 11 17:02:46 2001
+++ linux/fs/ntfs/dir.c	Mon Dec  3 23:26:03 2001
@@ -19,6 +19,7 @@
 #include "support.h"
 #include "util.h"
 #include <linux/smp_lock.h>
+#include <linux/bitops.h>
 
 static char I30[] = "$I30";
 
diff -urN linux-2.4.14-pre7/include/asm-alpha/a.out.h linux/include/asm-alpha/a.out.h
--- linux-2.4.14-pre7/include/asm-alpha/a.out.h	Fri Feb  6 10:06:55 1998
+++ linux/include/asm-alpha/a.out.h	Mon Dec  3 23:26:03 2001
@@ -90,8 +90,16 @@
 
 #ifdef __KERNEL__
 
+/* Assume that start addresses below 4G belong to a TASO application.
+   Unfortunately, there is no proper bit in the exec header to check.
+   Worse, we have to notice the start address before swapping to use
+   /sbin/loader, which of course is _not_ a TASO application.  */
+#define SET_AOUT_PERSONALITY(BFPM, EX) \
+	set_personality (BFPM->sh_bang || EX.ah.entry < 0x100000000 \
+			 ? PER_LINUX_32BIT : PER_LINUX)
+
 #define STACK_TOP \
-  ((current->personality==PER_LINUX_32BIT) ? (0x80000000) : (0x00120000000UL))
+  (current->personality & ADDR_LIMIT_32BIT ? 0x80000000 : 0x00120000000UL)
 
 #endif
 
diff -urN linux-2.4.14-pre7/include/asm-alpha/hwrpb.h linux/include/asm-alpha/hwrpb.h
--- linux-2.4.14-pre7/include/asm-alpha/hwrpb.h	Mon Jun 19 17:59:33 2000
+++ linux/include/asm-alpha/hwrpb.h	Mon Dec  3 23:26:03 2001
@@ -18,6 +18,12 @@
 #define PCA56_CPU		9	/* PCA56 (21164PC)	*/
 #define PCA57_CPU		10	/* PCA57 (notyet)	*/
 #define EV67_CPU		11	/* EV67 (21264A)	*/
+#define EV68CB_CPU		12	/* EV68CB (21264C)	*/
+#define EV68AL_CPU		13	/* EV68AL (21264B)	*/
+#define EV68CX_CPU		14	/* EV68CX (21264D)	*/
+#define EV7_CPU			15	/* EV7 (21364)		*/
+#define EV79_CPU		16	/* EV79 (21364??)	*/
+#define EV69_CPU		17	/* EV69 (21264/EV69A)	*/
 
 /*
  * DEC system types for Alpha systems.  Found in HWRPB.
diff -urN linux-2.4.14-pre7/include/asm-ppc/atomic.h linux/include/asm-ppc/atomic.h
--- linux-2.4.14-pre7/include/asm-ppc/atomic.h	Tue Aug 28 06:58:33 2001
+++ linux/include/asm-ppc/atomic.h	Mon Dec  3 23:26:03 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.atomic.h 1.13 08/21/01 16:07:48 trini
+ * BK Id: SCCS/s.atomic.h 1.15 10/28/01 10:37:22 trini
  */
 /*
  * PowerPC atomic operations
@@ -7,9 +7,10 @@
 
 #ifndef _ASM_PPC_ATOMIC_H_ 
 #define _ASM_PPC_ATOMIC_H_
-#ifdef __KERNEL__
 
 typedef struct { volatile int counter; } atomic_t;
+
+#ifdef __KERNEL__
 
 #define ATOMIC_INIT(i)	{ (i) }
 
diff -urN linux-2.4.14-pre7/include/asm-ppc/byteorder.h linux/include/asm-ppc/byteorder.h
--- linux-2.4.14-pre7/include/asm-ppc/byteorder.h	Mon May 21 15:02:06 2001
+++ linux/include/asm-ppc/byteorder.h	Mon Dec  3 23:26:03 2001
@@ -1,13 +1,13 @@
 /*
- * BK Id: SCCS/s.byteorder.h 1.5 05/17/01 18:14:24 cort
+ * BK Id: SCCS/s.byteorder.h 1.8 10/11/01 13:02:49 trini
  */
 #ifndef _PPC_BYTEORDER_H
 #define _PPC_BYTEORDER_H
 
 #include <asm/types.h>
 
-#ifdef __KERNEL__
 #ifdef __GNUC__
+#ifdef __KERNEL__
 
 extern __inline__ unsigned ld_le16(const volatile unsigned short *addr)
 {
@@ -72,12 +72,14 @@
 #define __arch__swab16s(addr) st_le16(addr,*addr)
 #define __arch__swab32s(addr) st_le32(addr,*addr)
 
-#ifndef __STRICT_ANSI__
-#define __BYTEORDER_HAS_U64__
+#endif /* __KERNEL__ */
+
+#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
+#  define __BYTEORDER_HAS_U64__
+#  define __SWAB_64_THRU_32__
 #endif
 
 #endif /* __GNUC__ */
-#endif /* __KERNEL__ */
 
 #include <linux/byteorder/big_endian.h>
 
diff -urN linux-2.4.14-pre7/include/asm-ppc/cache.h linux/include/asm-ppc/cache.h
--- linux-2.4.14-pre7/include/asm-ppc/cache.h	Mon May 21 15:02:06 2001
+++ linux/include/asm-ppc/cache.h	Mon Dec  3 23:26:03 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.cache.h 1.5 05/17/01 18:14:24 cort
+ * BK Id: SCCS/s.cache.h 1.10 10/18/01 15:02:09 trini
  */
 /*
  * include/asm-ppc/cache.h
@@ -12,20 +12,25 @@
 #include <asm/processor.h>
 
 /* bytes per L1 cache line */
-#if !defined(CONFIG_8xx) || defined(CONFIG_8260)
-#if defined(CONFIG_PPC64BRIDGE)
-#define L1_CACHE_BYTES	128
+#if defined(CONFIG_8xx) || defined(CONFIG_403GCX)
+#define	L1_CACHE_LINE_SIZE	16
+#define LG_L1_CACHE_LINE_SIZE	4
+#define MAX_L1_COPY_PREFETCH	1
+#elif defined(CONFIG_PPC64BRIDGE)
+#define L1_CACHE_LINE_SIZE	128
+#define LG_L1_CACHE_LINE_SIZE	7
+#define MAX_L1_COPY_PREFETCH	1
 #else
-#define	L1_CACHE_BYTES  32
-#endif /* PPC64 */
-#else
-#define	L1_CACHE_BYTES	16
-#endif /* !8xx || 8260 */
+#define	L1_CACHE_LINE_SIZE  32
+#define LG_L1_CACHE_LINE_SIZE	5
+#define MAX_L1_COPY_PREFETCH	4
+#endif
+
+#define	L1_CACHE_BYTES L1_CACHE_LINE_SIZE
+#define	SMP_CACHE_BYTES L1_CACHE_BYTES
 
 #define	L1_CACHE_ALIGN(x)       (((x)+(L1_CACHE_BYTES-1))&~(L1_CACHE_BYTES-1))
 #define	L1_CACHE_PAGES		8
-
-#define	SMP_CACHE_BYTES L1_CACHE_BYTES
 
 #ifdef MODULE
 #define __cacheline_aligned __attribute__((__aligned__(L1_CACHE_BYTES)))
diff -urN linux-2.4.14-pre7/include/asm-ppc/fads.h linux/include/asm-ppc/fads.h
--- linux-2.4.14-pre7/include/asm-ppc/fads.h	Tue Aug 28 06:58:33 2001
+++ linux/include/asm-ppc/fads.h	Mon Dec  3 23:26:03 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.fads.h 1.11 08/17/01 15:23:17 paulus
+ * BK Id: SCCS/s.fads.h 1.14 10/26/01 10:14:09 trini
  */
 
 /*
@@ -8,41 +8,33 @@
  *
  * Copyright (c) 1998 Dan Malek (dmalek@jlc.net)
  */
-#ifndef __MACH_FADS_DEFS
-#define __MACH_FADS_DEFS
+#ifdef __KERNEL__
+#ifndef __ASM_FADS_H__
+#define __ASM_FADS_H__
 
-#ifndef __ASSEMBLY__
-/* A Board Information structure that is given to a program when
- * prom starts it up.
- */
-typedef struct bd_info {
-	unsigned int	bi_memstart;	/* Memory start address */
-	unsigned int	bi_memsize;	/* Memory (end) size in bytes */
-	unsigned int	bi_intfreq;	/* Internal Freq, in Hz */
-	unsigned int	bi_busfreq;	/* Bus Freq, in Hz */
-	unsigned char	bi_enetaddr[6];
-	unsigned int	bi_baudrate;
-} bd_t;
+#include <linux/config.h>
 
-extern bd_t m8xx_board_info;
+#include <asm/ppcboot.h>
 
 /* Memory map is configured by the PROM startup.
  * I tried to follow the FADS manual, although the startup PROM
  * dictates this and we simply have to move some of the physical
  * addresses for Linux.
  */
-#define BCSR_ADDR		((uint)0xfe000000)
+#define BCSR_ADDR		((uint)0xff010000)
 #define BCSR_SIZE		((uint)(64 * 1024))
-#define	BCSR0			((uint)0xfe000000)
-#define	BCSR1			((uint)0xfe000004)
-#define	BCSR2			((uint)0xfe000008)
-#define	BCSR3			((uint)0xfe00000c)
-#define	BCSR4			((uint)0xfe000010)
-#define IMAP_ADDR		((uint)0xf0000000)
+#define	BCSR0			((uint)0xff010000)
+#define	BCSR1			((uint)0xff010004)
+#define	BCSR2			((uint)0xff010008)
+#define	BCSR3			((uint)0xff01000c)
+#define	BCSR4			((uint)0xff010010)
+
+#define IMAP_ADDR		((uint)0xff000000)
 #define IMAP_SIZE		((uint)(64 * 1024))
-#define PCMCIA_MEM_ADDR		((uint)0x04000000)
+
+#define PCMCIA_MEM_ADDR		((uint)0xff020000)
 #define PCMCIA_MEM_SIZE		((uint)(64 * 1024))
- 
+
 /* Bits of interest in the BCSRs.
  */
 #define BCSR1_ETHEN		((uint)0x20000000)
@@ -55,8 +47,7 @@
 #define BCSR4_FETHCFG1		((uint)0x00400000)	/* PHY autoneg mode */
 #define BCSR4_FETHFDE		((uint)0x02000000)	/* PHY FDX advertise */
 #define BCSR4_FETHRST		((uint)0x00200000)	/* PHY Reset */
-#endif /* !__ASSEMBLY__ */
- 
+
 /* Interrupt level assignments.
  */
 #define FEC_INTERRUPT	SIU_LEVEL1	/* FEC interrupt */
@@ -65,5 +56,6 @@
 /* We don't use the 8259.
  */
 #define NR_8259_INTS	0
- 
-#endif
+
+#endif /* __ASM_FADS_H__ */
+#endif /* __KERNEL__ */
diff -urN linux-2.4.14-pre7/include/asm-ppc/fcntl.h linux/include/asm-ppc/fcntl.h
--- linux-2.4.14-pre7/include/asm-ppc/fcntl.h	Mon May 21 15:02:06 2001
+++ linux/include/asm-ppc/fcntl.h	Mon Dec  3 23:26:03 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.fcntl.h 1.5 05/17/01 18:14:24 cort
+ * BK Id: SCCS/s.fcntl.h 1.8 09/19/01 23:06:01 paulus
  */
 #ifndef _PPC_FCNTL_H
 #define _PPC_FCNTL_H
@@ -22,7 +22,7 @@
 #define O_DIRECTORY      040000	/* must be a directory */
 #define O_NOFOLLOW      0100000	/* don't follow links */
 #define O_LARGEFILE     0200000
-#define O_DIRECT	0400000	/* direct disk access hint - currently ignored */
+#define O_DIRECT	0400000	/* direct disk access hint */
 
 #define F_DUPFD		0	/* dup */
 #define F_GETFD		1	/* get close_on_exec */
diff -urN linux-2.4.14-pre7/include/asm-ppc/io.h linux/include/asm-ppc/io.h
--- linux-2.4.14-pre7/include/asm-ppc/io.h	Tue Aug 28 06:58:33 2001
+++ linux/include/asm-ppc/io.h	Mon Dec  3 23:26:03 2001
@@ -1,11 +1,12 @@
 /*
- * BK Id: SCCS/s.io.h 1.11 08/28/01 15:48:26 paulus
+ * BK Id: SCCS/s.io.h 1.14 10/16/01 15:58:42 trini
  */
 #ifdef __KERNEL__
 #ifndef _PPC_IO_H
 #define _PPC_IO_H
 
 #include <linux/config.h>
+#include <linux/types.h>
 #include <asm/page.h>
 #include <asm/byteorder.h>
 
@@ -29,20 +30,18 @@
 #include <asm/mpc8xx.h>
 #elif defined(CONFIG_8260)
 #include <asm/mpc8260.h>
-#else /* 4xx/8xx/8260 */
-#ifdef CONFIG_APUS
+#elif defined(CONFIG_APUS)
 #define _IO_BASE 0
 #define _ISA_MEM_BASE 0
 #define PCI_DRAM_OFFSET 0
-#else /* CONFIG_APUS */
+#else /* Everyone else */
 extern unsigned long isa_io_base;
 extern unsigned long isa_mem_base;
 extern unsigned long pci_dram_offset;
 #define _IO_BASE	isa_io_base
 #define _ISA_MEM_BASE	isa_mem_base
 #define PCI_DRAM_OFFSET	pci_dram_offset
-#endif /* CONFIG_APUS */
-#endif
+#endif /* Platform-dependant I/O */
 
 #define readb(addr) in_8((volatile u8 *)(addr))
 #define writeb(b,addr) out_8((volatile u8 *)(addr), (b))
@@ -89,16 +88,20 @@
 {							\
 	unsigned int x;					\
 	__asm__ __volatile__(				\
-		op " %0,0,%1\n"				\
-		"1:	sync\n"				\
-		"2:\n"					\
+			op "	%0,0,%1\n"		\
+		"1:	twi	0,%0,0\n"		\
+		"2:	isync\n"			\
+		"3:	nop\n"				\
+		"4:\n"					\
 		".section .fixup,\"ax\"\n"		\
-		"3:	li	%0,-1\n"		\
-		"	b	2b\n"			\
+		"5:	li	%0,-1\n"		\
+		"	b	4b\n"			\
 		".previous\n"				\
 		".section __ex_table,\"a\"\n"		\
 		"	.align	2\n"			\
-		"	.long	1b,3b\n"		\
+		"	.long	1b,5b\n"		\
+		"	.long	2b,5b\n"		\
+		"	.long	3b,5b\n"		\
 		".previous"				\
 		: "=&r" (x)				\
 		: "r" (port + _IO_BASE));		\
diff -urN linux-2.4.14-pre7/include/asm-ppc/ivms8.h linux/include/asm-ppc/ivms8.h
--- linux-2.4.14-pre7/include/asm-ppc/ivms8.h	Tue Aug 28 06:58:33 2001
+++ linux/include/asm-ppc/ivms8.h	Mon Dec  3 23:26:03 2001
@@ -1,77 +1,46 @@
 /*
- * BK Id: SCCS/s.ivms8.h 1.6 08/17/01 15:23:17 paulus
+ * BK Id: SCCS/s.ivms8.h 1.8 10/26/01 10:14:09 trini
  */
 /*
- * A collection of structures, addresses, and values associated with
- * Speech Design Integrated Voicemail Systems (IVMS8) boards.
+ * Speech Design Integrated Voicemail board specific definitions
+ * - IVMS8  (small,  8 channels)
+ * - IVML24 (large, 24 channels)
  *
- * Copyright (c) 2000 Wolfgang Denk (wd@denx.de)
+ * In 2.5 when we force a new bootloader, we can merge these two, and add
+ * in _MACH_'s for them. -- Tom
+ *
+ * Copyright (c) 2000, 2001 Wolfgang Denk (wd@denx.de)
  */
-#ifndef __MACH_IVMS8_DEFS
-#define __MACH_IVMS8_DEFS
-
-#ifndef __ASSEMBLY__
-
-typedef	void (interrupt_handler_t)(void *);
 
-typedef struct serial_io {
-	int	(*getc)(void);
-	int	(*tstc)(void);
-	void	(*putc)(const char c);
-	void	(*printf)(const char *fmt, ...);
-} serial_io_t;
+#ifdef __KERNEL__
+#ifndef __ASM_IVMS8_H__
+#define __ASM_IVMS8_H__
 
-typedef struct intr_util {
-	void	(*install_hdlr)(int, interrupt_handler_t *, void *);
-	void	(*free_hdlr)(int);
-} intr_util_t;
-
-
-/* A Board Information structure that is given to a program when
- * ppcboot starts it up.
- */
-typedef struct bd_info {
-	 unsigned long	bi_memstart;	/* start of  DRAM memory		*/
-	 unsigned long	bi_memsize;	/* size	 of  DRAM memory in bytes	*/
-	 unsigned long	bi_flashstart;	/* start of FLASH memory		*/
-	 unsigned long	bi_flashsize;	/* size	 of FLASH memory		*/
-	 unsigned long	bi_flashoffset; /* reserved area for startup monitor	*/
-	 unsigned long	bi_sramstart;	/* start of  SRAM memory		*/
-	 unsigned long	bi_sramsize;	/* size	 of  SRAM memory		*/
-	 unsigned long	bi_immr_base;	/* base of IMMR register		*/
-	 unsigned long	bi_bootflags;	/* boot / reboot flag (for LynxOS)	*/
-	 unsigned long	bi_ip_addr;	/* IP Address				*/
-	 unsigned char	bi_enetaddr[6]; /* Ethernet adress			*/
-	 unsigned char	bi_reserved[2]; /* -- just for alignment --		*/
-	 unsigned long	bi_intfreq;	/* Internal Freq, in MHz		*/
-	 unsigned long	bi_busfreq;	/* Bus Freq, in MHz			*/
-	 unsigned long	bi_baudrate;	/* Console Baudrate			*/
-	 serial_io_t	bi_serial_io;	/* Addr of monitor fnc for Console I/O	*/
-	 intr_util_t	bi_interrupt;	/* Addr of monitor fnc for Interrupts	*/
-} bd_t;
+#include <linux/config.h>
 
-#endif /* __ASSEMBLY__ */
+#include <asm/ppcboot.h>
 
-#define	IVMS_IMMR_BASE	0xFFF00000	/* phys. addr of IMMR			*/
-#define	IVMS_IMAP_SIZE	(64 * 1024)	/* size of mapped area			*/
+#define IVMS_IMMR_BASE	0xFFF00000	/* phys. addr of IMMR */
+#define IVMS_IMAP_SIZE	(64 * 1024)	/* size of mapped area */
 
-#define	IMAP_ADDR	IVMS_IMMR_BASE	/* physical base address of IMMR area	*/
-#define IMAP_SIZE	IVMS_IMAP_SIZE	/* mapped size of IMMR area		*/
+#define IMAP_ADDR	IVMS_IMMR_BASE	/* phys. base address of IMMR area */
+#define IMAP_SIZE	IVMS_IMAP_SIZE	/* mapped size of IMMR area */
 
 #define PCMCIA_MEM_ADDR	((uint)0xFE100000)
 #define PCMCIA_MEM_SIZE	((uint)(64 * 1024))
 
-#define	FEC_INTERRUPT	 9		/* = SIU_LEVEL4				*/
-#define IDE0_INTERRUPT	10		/* = IRQ5				*/
-#define	CPM_INTERRUPT	11		/* = SIU_LEVEL5 (was: SIU_LEVEL2)	*/
-#define PHY_INTERRUPT	12		/* = IRQ6				*/
+#define FEC_INTERRUPT	 9		/* = SIU_LEVEL4 */
+#define IDE0_INTERRUPT	10		/* = IRQ5 */
+#define CPM_INTERRUPT	11		/* = SIU_LEVEL5 (was: SIU_LEVEL2) */
+#define PHY_INTERRUPT	12		/* = IRQ6 */
 
-#define	MAX_HWIFS	1	/* overwrite default in include/asm-ppc/ide.h	*/
+/* override the default number of IDE hardware interfaces */
+#define MAX_HWIFS	1
 
 /*
  * Definitions for IDE0 Interface
  */
-#define IDE0_BASE_OFFSET		0x0000	/* Offset in PCMCIA memory	*/
+#define IDE0_BASE_OFFSET		0x0000	/* Offset in PCMCIA memory */
 #define IDE0_DATA_REG_OFFSET		0x0000
 #define IDE0_ERROR_REG_OFFSET		0x0081
 #define IDE0_NSECTOR_REG_OFFSET		0x0082
@@ -81,10 +50,10 @@
 #define IDE0_SELECT_REG_OFFSET		0x0086
 #define IDE0_STATUS_REG_OFFSET		0x0087
 #define IDE0_CONTROL_REG_OFFSET		0x0106
-#define IDE0_IRQ_REG_OFFSET		0x000A	/* not used			*/
+#define IDE0_IRQ_REG_OFFSET		0x000A	/* not used */
 
-/* We don't use the 8259.
-*/
+/* We don't use the 8259. */
 #define NR_8259_INTS	0
 
-#endif	/* __MACH_IVMS8_DEFS */
+#endif /* __ASM_IVMS8_H__ */
+#endif /* __KERNEL__ */
diff -urN linux-2.4.14-pre7/include/asm-ppc/m48t35.h linux/include/asm-ppc/m48t35.h
--- linux-2.4.14-pre7/include/asm-ppc/m48t35.h	Mon May 21 15:02:06 2001
+++ linux/include/asm-ppc/m48t35.h	Mon Dec  3 23:26:03 2001
@@ -1,27 +1,83 @@
 /*
- * BK Id: SCCS/s.m48t35.h 1.5 05/17/01 18:14:25 cort
+ * BK Id: SCCS/s.m48t35.h 1.8 10/16/01 15:58:42 trini
  */
 /*
  *  Registers for the SGS-Thomson M48T35 Timekeeper RAM chip
+ *  and
+ *  Registers for the SGS-Thomson M48T37 Timekeeper RAM chip
+ *  The 37 is the 35 plus alarm and century thus the offsets
+ *  are shifted by the extra registers.
  */
 
 #ifndef __PPC_M48T35_H
 #define __PPC_M48T35_H
 
 /* RTC offsets */
-#define M48T35_RTC_CONTROL  0
-#define M48T35_RTC_SECONDS  1
-#define M48T35_RTC_MINUTES  2
-#define M48T35_RTC_HOURS    3
-#define M48T35_RTC_DAY      4
-#define M48T35_RTC_DOM      5
-#define M48T35_RTC_MONTH    6
-#define M48T35_RTC_YEAR     7
+#define M48T35_RTC_FLAGS	(-8)	/* the negative regs are really T37 only */ 
+#define M48T35_RTC_CENTURY	(-7)
+#define M48T35_RTC_AL_SEC	(-6)    
+#define M48T35_RTC_AL_MIN	(-5)    
+#define M48T35_RTC_AL_HRS	(-4)    
+#define M48T35_RTC_AL_DOM	(-3)    
+#define M48T35_RTC_INTERRUPT	(-2)
+#define M48T35_RTC_WATCHDOG	(-1)
+#define M48T35_RTC_CONTROL	0	/* T35 starts here */ 
+#define M48T35_RTC_SECONDS	1
+#define M48T35_RTC_MINUTES	2
+#define M48T35_RTC_HOURS	3
+#define M48T35_RTC_DAY		4
+#define M48T35_RTC_DOM		5
+#define M48T35_RTC_MONTH	6
+#define M48T35_RTC_YEAR		7
 
+/* this way help us know which bits go with which regs */ 
+#define M48T35_RTC_FLAGS_BL           0x10
+#define M48T35_RTC_FLAGS_AF           0x40
+#define M48T35_RTC_FLAGS_WDF          0x80
+
+#define M48T35_RTC_INTERRUPT_AFE       0x80
+#define M48T35_RTC_INTERRUPT_ABE       0x20
+#define M48T35_RTC_INTERRUPT_ALL       (M48T35_RTC_INTERRUPT_AFE|M48T35_RTC_INTERRUPT_ABE)
+
+#define M48T35_RTC_WATCHDOG_RB         0x03
+#define M48T35_RTC_WATCHDOG_BMB        0x7c
+#define M48T35_RTC_WATCHDOG_WDS        0x80
+#define M48T35_RTC_WATCHDOG_ALL        (M48T35_RTC_WATCHDOG_RB|M48T35_RTC_WATCHDOG_BMB|M48T35_RTC_W
+
+#define M48T35_RTC_CONTROL_WRITE       0x80
+#define M48T35_RTC_CONTROL_READ        0x40
+#define M48T35_RTC_CONTROL_CAL_SIGN    0x20    
+#define M48T35_RTC_CONTROL_CAL_VALUE   0x1f
+#define M48T35_RTC_CONTROL_LOCKED      (M48T35_RTC_WRITE|M48T35_RTC_READ)
+#define M48T35_RTC_CONTROL_CALIBRATION (M48T35_RTC_CONTROL_CAL_SIGN|M48T35_RTC_CONTROL_CAL_VALUE)
+
+#define M48T35_RTC_SECONDS_SEC_1       0x0f
+#define M48T35_RTC_SECONDS_SEC_10      0x70    
+#define M48T35_RTC_SECONDS_ST          0x80
+#define M48T35_RTC_SECONDS_SEC_ALL     (M48T35_RTC_SECONDS_SEC_1|M48T35_RTC_SECONDS_SEC_10)
+
+#define M48T35_RTC_MINUTES_MIN_1       0x0f
+#define M48T35_RTC_MINUTES_MIN_10      0x70    
+#define M48T35_RTC_MINUTES_MIN_ALL     (M48T35_RTC_MINUTES_MIN_1|M48T35_RTC_MINUTES_MIN_10)
+
+#define M48T35_RTC_HOURS_HRS_1         0x0f
+#define M48T35_RTC_HOURS_HRS_10        0x30
+#define M48T35_RTC_HOURS_HRS_ALL       (M48T35_RTC_HOURS_HRS_1|M48T35_RTC_HOURS_HRS_10)
+
+#define M48T35_RTC_DAY_DAY_1           0x03
+#define M48T35_RTC_DAY_FT              0x40
+
+#define M48T35_RTC_ALARM_OFF           0x00
+#define M48T35_RTC_WATCHDOG_OFF        0x00
+
+
+/* legacy */
 #define M48T35_RTC_SET      0x80
 #define M48T35_RTC_STOPPED  0x80
 #define M48T35_RTC_READ     0x40
 
+
+/* read/write conversions */
 #ifndef BCD_TO_BIN
 #define BCD_TO_BIN(x)   ((x)=((x)&15) + ((x)>>4)*10)
 #endif
diff -urN linux-2.4.14-pre7/include/asm-ppc/machdep.h linux/include/asm-ppc/machdep.h
--- linux-2.4.14-pre7/include/asm-ppc/machdep.h	Wed Aug 29 20:49:36 2001
+++ linux/include/asm-ppc/machdep.h	Mon Dec  3 23:26:03 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.machdep.h 1.21 08/29/01 10:07:29 paulus
+ * BK Id: SCCS/s.machdep.h 1.23 10/18/01 11:16:28 trini
  */
 #ifdef __KERNEL__
 #ifndef _PPC_MACHDEP_H
@@ -61,9 +61,7 @@
 	char		(*kbd_unexpected_up)(unsigned char keycode);
 	void		(*kbd_leds)(unsigned char leds);
 	void		(*kbd_init_hw)(void);
-#ifdef CONFIG_MAGIC_SYSRQ
 	unsigned char 	*ppc_kbd_sysrq_xlate;
-#endif
 
 	/*
 	 * optional PCI "hooks"
diff -urN linux-2.4.14-pre7/include/asm-ppc/mpc8xx.h linux/include/asm-ppc/mpc8xx.h
--- linux-2.4.14-pre7/include/asm-ppc/mpc8xx.h	Mon May 21 15:02:06 2001
+++ linux/include/asm-ppc/mpc8xx.h	Mon Dec  3 23:26:03 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.mpc8xx.h 1.10 05/17/01 18:14:25 cort
+ * BK Id: SCCS/s.mpc8xx.h 1.15 11/01/01 12:48:53 trini
  */
 
 /* This is the single file included by all MPC8xx build options.
@@ -36,7 +36,7 @@
 #include <asm/rpxclassic.h>
 #endif
 
-#if (defined(CONFIG_TQM860) || defined(CONFIG_TQM8xxL))
+#if defined(CONFIG_TQM8xxL)
 #include <asm/tqm8xx.h>
 #endif
 
@@ -44,7 +44,7 @@
 #include <asm/spd8xx.h>
 #endif
 
-#if defined(CONFIG_IVMS8)
+#if defined(CONFIG_IVMS8) || defined(CONFIG_IVML24)
 #include <asm/ivms8.h>
 #endif
 
diff -urN linux-2.4.14-pre7/include/asm-ppc/oak.h linux/include/asm-ppc/oak.h
--- linux-2.4.14-pre7/include/asm-ppc/oak.h	Mon Oct  8 11:43:01 2001
+++ linux/include/asm-ppc/oak.h	Mon Dec  3 23:26:03 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.oak.h 1.10 09/14/01 17:37:56 trini
+ * BK Id: SCCS/s.oak.h 1.12 10/11/01 13:05:07 trini
  */
 /*
  *
@@ -18,8 +18,6 @@
 #ifndef	__OAK_H__
 #define	__OAK_H__
 
-#include <asm/irq.h>
-
 #define _IO_BASE	0
 #define _ISA_MEM_BASE	0
 #define PCI_DRAM_OFFSET	0
@@ -38,10 +36,12 @@
 
 /* Interrupt assignments fixed by the hardware implementation */
 
-#define	PPC403SPU_RX_INT	AIC_INT4
-#define	PPC403SPU_TX_INT	AIC_INT5
-#define	OAKNET_INT		AIC_INT27
-#define	OAKSERIAL_INT		AIC_INT28
+/* This is annoying kbuild-2.4 problem. -- Tom */
+
+#define	PPC403SPU_RX_INT	4	/* AIC_INT4 */
+#define	PPC403SPU_TX_INT	5	/* AIC_INT5 */
+#define	OAKNET_INT		27	/* AIC_INT27 */
+#define	OAKSERIAL_INT		28	/* AIC_INT28 */
 
 #ifndef __ASSEMBLY__
 /*
diff -urN linux-2.4.14-pre7/include/asm-ppc/pgtable.h linux/include/asm-ppc/pgtable.h
--- linux-2.4.14-pre7/include/asm-ppc/pgtable.h	Mon Jul  2 14:34:57 2001
+++ linux/include/asm-ppc/pgtable.h	Mon Dec  3 23:26:03 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.pgtable.h 1.12 06/28/01 15:50:17 paulus
+ * BK Id: SCCS/s.pgtable.h 1.15 09/22/01 11:26:52 trini
  */
 #ifdef __KERNEL__
 #ifndef _PPC_PGTABLE_H
@@ -223,7 +223,8 @@
 #define _PAGE_RW	0x0040	/* software: user write access allowed */
 #define _PAGE_ACCESSED	0x0080	/* software: page referenced */
 
-#define _PAGE_DIRTY	0x0100	/* C: page changed (write protect) */
+#define _PAGE_HWWRITE	0x0100	/* h/w write enable: never set in Linux PTE */
+#define _PAGE_DIRTY	0x0200	/* software: page changed */
 #define _PAGE_USER	0x0800	/* One of the PP bits, the other is USER&~RW */
 
 #else /* CONFIG_6xx */
@@ -241,12 +242,35 @@
 #define _PAGE_RW	0x400	/* software: user write access allowed */
 #endif
 
+/* The non-standard PowerPC MMUs, which includes the 4xx and 8xx (and
+ * mabe 603e) have TLB miss handlers that unconditionally set the
+ * _PAGE_ACCESSED flag as a performance optimization.  This causes
+ * problems for the page_none() macro, just like the HASHPTE flag does
+ * for the standard PowerPC MMUs.  Depending upon the MMU configuration,
+ * either HASHPTE or ACCESSED will have to be masked to give us a
+ * proper pte_none() condition.
+ */
 #ifndef _PAGE_HASHPTE
 #define _PAGE_HASHPTE	0
+#define _PTE_NONE_MASK _PAGE_ACCESSED
+#else
+#define _PTE_NONE_MASK _PAGE_HASHPTE
 #endif
 #ifndef _PAGE_SHARED
 #define _PAGE_SHARED	0
 #endif
+#ifndef _PAGE_HWWRITE
+#define _PAGE_HWWRITE	0
+#endif
+
+/* We can't use _PAGE_HWWRITE on any SMP due to the lack of ability
+ * to atomically manage _PAGE_HWWRITE and it's coordination flags,
+ * _PAGE_DIRTY or _PAGE_RW.  The SMP systems must manage HWWRITE
+ * or its logical equivalent in the MMU management software.
+ */
+#if CONFIG_SMP && _PAGE_HWWRITE
+#error "You can't configure SMP and HWWRITE"
+#endif
 
 #define _PAGE_CHG_MASK	(PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
 
@@ -308,7 +332,7 @@
 
 #endif /* __ASSEMBLY__ */
 
-#define pte_none(pte)		((pte_val(pte) & ~_PAGE_HASHPTE) == 0)
+#define pte_none(pte)		((pte_val(pte) & ~_PTE_NONE_MASK) == 0)
 #define pte_present(pte)	(pte_val(pte) & _PAGE_PRESENT)
 #define pte_clear(ptep)		do { set_pte((ptep), __pte(0)); } while (0)
 
@@ -353,11 +377,11 @@
 static inline pte_t pte_rdprotect(pte_t pte) {
 	pte_val(pte) &= ~_PAGE_USER; return pte; }
 static inline pte_t pte_wrprotect(pte_t pte) {
-	pte_val(pte) &= ~_PAGE_RW; return pte; }
+	pte_val(pte) &= ~(_PAGE_RW | _PAGE_HWWRITE); return pte; }
 static inline pte_t pte_exprotect(pte_t pte) {
 	pte_val(pte) &= ~_PAGE_EXEC; return pte; }
 static inline pte_t pte_mkclean(pte_t pte) {
-	pte_val(pte) &= ~_PAGE_DIRTY; return pte; }
+	pte_val(pte) &= ~(_PAGE_DIRTY | _PAGE_HWWRITE); return pte; }
 static inline pte_t pte_mkold(pte_t pte) {
 	pte_val(pte) &= ~_PAGE_ACCESSED; return pte; }
 
@@ -433,7 +457,7 @@
 
 static inline int ptep_test_and_clear_dirty(pte_t *ptep)
 {
-	return (pte_update(ptep, _PAGE_DIRTY, 0) & _PAGE_DIRTY) != 0;
+	return (pte_update(ptep, (_PAGE_DIRTY | _PAGE_HWWRITE), 0) & _PAGE_DIRTY) != 0;
 }
 
 static inline pte_t ptep_get_and_clear(pte_t *ptep)
@@ -443,7 +467,7 @@
 
 static inline void ptep_set_wrprotect(pte_t *ptep)
 {
-	pte_update(ptep, _PAGE_RW, 0);
+	pte_update(ptep, (_PAGE_RW | _PAGE_HWWRITE), 0);
 }
 
 static inline void ptep_mkdirty(pte_t *ptep)
diff -urN linux-2.4.14-pre7/include/asm-ppc/ppcboot.h linux/include/asm-ppc/ppcboot.h
--- linux-2.4.14-pre7/include/asm-ppc/ppcboot.h	Mon Oct 15 13:35:26 2001
+++ linux/include/asm-ppc/ppcboot.h	Mon Dec  3 23:26:03 2001
@@ -18,8 +18,8 @@
  * MA 02111-1307 USA
  */
 
-#ifndef _PPCBOOT_H_
-#define _PPCBOOT_H_	1
+#ifndef __ASM_PPCBOOT_H__
+#define __ASM_PPCBOOT_H__
 
 /*
  * Board information passed to kernel from PPCBoot
@@ -28,7 +28,6 @@
  */
 
 #ifndef __ASSEMBLY__
-
 #include <linux/types.h>
 
 typedef void (interrupt_handler_t)(void *);
@@ -46,48 +45,47 @@
 } mon_fnc_t;
 
 typedef struct bd_info {
-	unsigned long	bi_memstart;	/* start of  DRAM memory		*/
-	unsigned long	bi_memsize;	/* size	 of  DRAM memory in bytes	*/
-	unsigned long	bi_flashstart;	/* start of FLASH memory		*/
-	unsigned long	bi_flashsize;	/* size	 of FLASH memory		*/
-	unsigned long	bi_flashoffset; /* reserved area for startup monitor	*/
-	unsigned long	bi_sramstart;	/* start of  SRAM memory		*/
-	unsigned long	bi_sramsize;	/* size	 of  SRAM memory		*/
+	unsigned long	bi_memstart;	/* start of DRAM memory */
+	unsigned long	bi_memsize;	/* size	 of DRAM memory in bytes */
+	unsigned long	bi_flashstart;	/* start of FLASH memory */
+	unsigned long	bi_flashsize;	/* size	 of FLASH memory */
+	unsigned long	bi_flashoffset; /* reserved area for startup monitor */
+	unsigned long	bi_sramstart;	/* start of SRAM memory */
+	unsigned long	bi_sramsize;	/* size	 of SRAM memory */
 #if defined(CONFIG_8xx) || defined(CONFIG_8260)
-	unsigned long	bi_immr_base;	/* base of IMMR register		*/
+	unsigned long	bi_immr_base;	/* base of IMMR register */
 #endif
-	unsigned long	bi_bootflags;	/* boot / reboot flag (for LynxOS)	*/
-	unsigned long	bi_ip_addr;	/* IP Address				*/
-	unsigned char	bi_enetaddr[6]; /* Ethernet adress			*/
-	unsigned short	bi_ethspeed;	/* Ethernet speed in Mbps		*/
-	unsigned long	bi_intfreq;	/* Internal Freq, in MHz		*/
-	unsigned long	bi_busfreq;	/* Bus Freq, in MHz			*/
+	unsigned long	bi_bootflags;	/* boot / reboot flag (for LynxOS) */
+	unsigned long	bi_ip_addr;	/* IP Address */
+	unsigned char	bi_enetaddr[6];	/* Ethernet adress */
+	unsigned short	bi_ethspeed;	/* Ethernet speed in Mbps */
+	unsigned long	bi_intfreq;	/* Internal Freq, in MHz */
+	unsigned long	bi_busfreq;	/* Bus Freq, in MHz */
 #if defined(CONFIG_8260)
-	unsigned long	bi_cpmfreq;	/* CPM_CLK Freq, in MHz			*/
-	unsigned long	bi_brgfreq;	/* BRG_CLK Freq, in MHz			*/
-	unsigned long	bi_sccfreq;	/* SCC_CLK Freq, in MHz			*/
-	unsigned long	bi_vco;		/* VCO Out from PLL, in MHz		*/
+	unsigned long	bi_cpmfreq;	/* CPM_CLK Freq, in MHz */
+	unsigned long	bi_brgfreq;	/* BRG_CLK Freq, in MHz */
+	unsigned long	bi_sccfreq;	/* SCC_CLK Freq, in MHz */
+	unsigned long	bi_vco;		/* VCO Out from PLL, in MHz */
 #endif
-	unsigned long	bi_baudrate;	/* Console Baudrate			*/
+	unsigned long	bi_baudrate;	/* Console Baudrate */
 #if defined(CONFIG_405GP)
-	unsigned char	bi_s_version[4];  /* Version of this structure		*/
-	unsigned char	bi_r_version[32]; /* Version of the ROM (IBM)		*/
-	unsigned int	bi_procfreq;	/* CPU (Internal) Freq, in Hz		*/
+	unsigned char	bi_s_version[4];	/* Version of this structure */
+	unsigned char	bi_r_version[32];	/* Version of the ROM (IBM) */
+	unsigned int	bi_procfreq;	/* CPU (Internal) Freq, in Hz */
 	unsigned int	bi_plb_busfreq;	/* PLB Bus speed, in Hz */
 	unsigned int	bi_pci_busfreq;	/* PCI Bus speed, in Hz */
-	unsigned char	bi_pci_enetaddr[6];	/* PCI Ethernet MAC address     */
+	unsigned char	bi_pci_enetaddr[6];	/* PCI Ethernet MAC address */
 #endif
 #if defined(CONFIG_HYMOD)
-	hymod_conf_t	bi_hymod_conf;	/* hymod configuration information	*/
+	hymod_conf_t	bi_hymod_conf;	/* hymod configuration information */
 #endif
 #if defined(CONFIG_EVB64260)
 	/* the board has three onboard ethernet ports */
-	unsigned char   bi_enet1addr[6];
-	unsigned char   bi_enet2addr[6];
+	unsigned char	bi_enet1addr[6];
+	unsigned char	bi_enet2addr[6];
 #endif
-	mon_fnc_t	*bi_mon_fnc;	/* Pointer to monitor functions		*/
+	mon_fnc_t	*bi_mon_fnc;	/* Pointer to monitor functions	*/
 } bd_t;
 
 #endif /* __ASSEMBLY__ */
-
-#endif	/* _PPCBOOT_H_ */
+#endif	/* __ASM_PPCBOOT_H__ */
diff -urN linux-2.4.14-pre7/include/asm-ppc/serial.h linux/include/asm-ppc/serial.h
--- linux-2.4.14-pre7/include/asm-ppc/serial.h	Mon May 21 15:02:06 2001
+++ linux/include/asm-ppc/serial.h	Mon Dec  3 23:26:03 2001
@@ -1,11 +1,14 @@
 /*
- * BK Id: SCCS/s.serial.h 1.12 05/17/01 18:14:25 cort
+ * BK Id: SCCS/s.serial.h 1.15 10/23/01 08:09:35 trini
  */
 /*
  * include/asm-ppc/serial.h
  */
 
 #ifdef __KERNEL__
+#ifndef __ASM_SERIAL_H__
+#define __ASM_SERIAL_H__
+
 #include <linux/config.h>
 
 #ifdef CONFIG_GEMINI
@@ -133,4 +136,5 @@
 	MCA_SERIAL_PORT_DFNS
 
 #endif /* !CONFIG_GEMINI and others */
+#endif /* __ASM_SERIAL_H__ */
 #endif /* __KERNEL__ */
diff -urN linux-2.4.14-pre7/include/asm-ppc/smplock.h linux/include/asm-ppc/smplock.h
--- linux-2.4.14-pre7/include/asm-ppc/smplock.h	Mon May 21 15:02:06 2001
+++ linux/include/asm-ppc/smplock.h	Mon Dec  3 23:26:03 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.smplock.h 1.7 05/17/01 18:14:25 cort
+ * BK Id: SCCS/s.smplock.h 1.10 10/23/01 08:09:35 trini
  */
 /*
  * <asm/smplock.h>
@@ -7,6 +7,9 @@
  * Default SMP lock implementation
  */
 #ifdef __KERNEL__
+#ifndef __ASM_SMPLOCK_H__
+#define __ASM_SMPLOCK_H__
+
 #include <linux/interrupt.h>
 #include <linux/spinlock.h>
 
@@ -53,4 +56,5 @@
 	if (--current->lock_depth < 0)
 		spin_unlock(&kernel_flag);
 }
+#endif /* __ASM_SMPLOCK_H__ */
 #endif /* __KERNEL__ */
diff -urN linux-2.4.14-pre7/include/asm-ppc/spd8xx.h linux/include/asm-ppc/spd8xx.h
--- linux-2.4.14-pre7/include/asm-ppc/spd8xx.h	Mon Oct  8 11:40:13 2001
+++ linux/include/asm-ppc/spd8xx.h	Mon Dec  3 23:26:03 2001
@@ -1,76 +1,40 @@
 /*
- * BK Id: SCCS/s.spd8xx.h 1.6 09/14/01 17:37:56 trini
+ * BK Id: SCCS/s.spd8xx.h 1.8 10/27/01 13:39:41 trini
  */
 /*
- * A collection of structures, addresses, and values associated with
- * Speech Design SPD8xxTS boards.
- *
- * Copyright (c) 2000 Wolfgang Denk (wd@denx.de)
+ * Speech Design SPD8xxTS board specific definitions
+ * 
+ * Copyright (c) 2000,2001 Wolfgang Denk (wd@denx.de)
  */
-#ifndef __MACH_SPD8xx_DEFS
-#define __MACH_SPD8xx_DEFS
 
-#ifndef __ASSEMBLY__
+#ifdef __KERNEL__
+#ifndef __ASM_SPD8XX_H__
+#define __ASM_SPD8XX_H__
+
+#include <linux/config.h>
+ 
+#include <asm/ppcboot.h>
 
-typedef	void (interrupt_handler_t)(void *);
+#define SPD_IMMR_BASE	0xFFF00000	/* phys. addr of IMMR */
+#define SPD_IMAP_SIZE	(64 * 1024)	/* size of mapped area */
 
-typedef struct serial_io {
-	int	(*getc)(void);
-	int	(*tstc)(void);
-	void	(*putc)(const char c);
-	void	(*printf)(const char *fmt, ...);
-} serial_io_t;
-
-typedef struct intr_util {
-	void	(*install_hdlr)(int, interrupt_handler_t *, void *);
-	void	(*free_hdlr)(int);
-} intr_util_t;
-
-
-/* A Board Information structure that is given to a program when
- * ppcboot starts it up.
- */
-typedef struct bd_info {
-	 unsigned long	bi_memstart;	/* start of  DRAM memory		*/
-	 unsigned long	bi_memsize;	/* size	 of  DRAM memory in bytes	*/
-	 unsigned long	bi_flashstart;	/* start of FLASH memory		*/
-	 unsigned long	bi_flashsize;	/* size	 of FLASH memory		*/
-	 unsigned long	bi_flashoffset; /* reserved area for startup monitor	*/
-	 unsigned long	bi_sramstart;	/* start of  SRAM memory		*/
-	 unsigned long	bi_sramsize;	/* size	 of  SRAM memory		*/
-	 unsigned long	bi_immr_base;	/* base of IMMR register		*/
-	 unsigned long	bi_bootflags;	/* boot / reboot flag (for LynxOS)	*/
-	 unsigned long	bi_ip_addr;	/* IP Address				*/
-	 unsigned char	bi_enetaddr[6]; /* Ethernet adress			*/
-	 unsigned char	bi_reserved[2]; /* -- just for alignment --		*/
-	 unsigned long	bi_intfreq;	/* Internal Freq, in MHz		*/
-	 unsigned long	bi_busfreq;	/* Bus Freq, in MHz			*/
-	 unsigned long	bi_baudrate;	/* Console Baudrate			*/
-	 serial_io_t	bi_serial_io;	/* Addr of monitor fnc for Console I/O	*/
-	 intr_util_t	bi_interrupt;	/* Addr of monitor fnc for Interrupts	*/
-} bd_t;
-
-#endif /* __ASSEMBLY__ */
-
-#define	SPD_IMMR_BASE	0xFFF00000	/* phys. addr of IMMR			*/
-#define	SPD_IMAP_SIZE	(64 * 1024)	/* size of mapped area			*/
-
-#define	IMAP_ADDR	SPD_IMMR_BASE	/* physical base address of IMMR area	*/
-#define IMAP_SIZE	SPD_IMAP_SIZE	/* mapped size of IMMR area		*/
+#define IMAP_ADDR	SPD_IMMR_BASE	/* physical base address of IMMR area */
+#define IMAP_SIZE	SPD_IMAP_SIZE	/* mapped size of IMMR area */
 
 #define PCMCIA_MEM_ADDR	((uint)0xFE100000)
 #define PCMCIA_MEM_SIZE	((uint)(64 * 1024))
 
-#define IDE0_INTERRUPT	10		/* = IRQ5				*/
-#define	IDE1_INTERRUPT	12		/* = IRQ6				*/
-#define	CPM_INTERRUPT	13		/* = SIU_LEVEL6 (was: SIU_LEVEL2)	*/
+#define IDE0_INTERRUPT	10		/* = IRQ5 */
+#define IDE1_INTERRUPT	12		/* = IRQ6 */
+#define CPM_INTERRUPT	13		/* = SIU_LEVEL6 (was: SIU_LEVEL2) */
 
-#define	MAX_HWIFS	2	/* overwrite default in include/asm-ppc/ide.h	*/
+/* override the default number of IDE hardware interfaces */
+#define MAX_HWIFS	2
 
 /*
  * Definitions for IDE0 Interface
  */
-#define IDE0_BASE_OFFSET		0x0000	/* Offset in PCMCIA memory	*/
+#define IDE0_BASE_OFFSET		0x0000	/* Offset in PCMCIA memory */
 #define IDE0_DATA_REG_OFFSET		0x0000
 #define IDE0_ERROR_REG_OFFSET		0x0081
 #define IDE0_NSECTOR_REG_OFFSET		0x0082
@@ -80,12 +44,12 @@
 #define IDE0_SELECT_REG_OFFSET		0x0086
 #define IDE0_STATUS_REG_OFFSET		0x0087
 #define IDE0_CONTROL_REG_OFFSET		0x0106
-#define IDE0_IRQ_REG_OFFSET		0x000A	/* not used			*/
+#define IDE0_IRQ_REG_OFFSET		0x000A	/* not used */
 
 /*
  * Definitions for IDE1 Interface
  */
-#define IDE1_BASE_OFFSET		0x0C00	/* Offset in PCMCIA memory	*/
+#define IDE1_BASE_OFFSET		0x0C00	/* Offset in PCMCIA memory */
 #define IDE1_DATA_REG_OFFSET		0x0000
 #define IDE1_ERROR_REG_OFFSET		0x0081
 #define IDE1_NSECTOR_REG_OFFSET		0x0082
@@ -95,10 +59,11 @@
 #define IDE1_SELECT_REG_OFFSET		0x0086
 #define IDE1_STATUS_REG_OFFSET		0x0087
 #define IDE1_CONTROL_REG_OFFSET		0x0106
-#define IDE1_IRQ_REG_OFFSET		0x000A	/* not used			*/
+#define IDE1_IRQ_REG_OFFSET		0x000A	/* not used */
 
 /* We don't use the 8259.
 */
 #define NR_8259_INTS	0
 
-#endif	/* __MACH_SPD8xx_DEFS */
+#endif /* __ASM_SPD8XX_H__ */
+#endif /* __KERNEL__ */
diff -urN linux-2.4.14-pre7/include/asm-ppc/time.h linux/include/asm-ppc/time.h
--- linux-2.4.14-pre7/include/asm-ppc/time.h	Tue Aug 28 06:58:33 2001
+++ linux/include/asm-ppc/time.h	Mon Dec  3 23:26:03 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.time.h 1.15 08/16/01 07:49:31 paulus
+ * BK Id: SCCS/s.time.h 1.17 10/23/01 08:09:35 trini
  */
 /*
  * Common time prototypes and such for all ppc machines.
@@ -9,6 +9,9 @@
  */
 
 #ifdef __KERNEL__
+#ifndef __ASM_TIME_H__
+#define __ASM_TIME_H__
+
 #include <linux/config.h>
 #include <linux/mc146818rtc.h>
 #include <linux/threads.h>
@@ -136,4 +139,5 @@
 ({unsigned z; asm ("mulhwu %0,%1,%2" : "=r" (z) : "r" (x), "r" (y)); z;})
 
 unsigned mulhwu_scale_factor(unsigned, unsigned);
+#endif /* __ASM_TIME_H__ */
 #endif /* __KERNEL__ */
diff -urN linux-2.4.14-pre7/include/asm-ppc/uninorth.h linux/include/asm-ppc/uninorth.h
--- linux-2.4.14-pre7/include/asm-ppc/uninorth.h	Tue Aug 28 06:58:33 2001
+++ linux/include/asm-ppc/uninorth.h	Mon Dec  3 23:26:03 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.uninorth.h 1.11 08/19/01 22:23:04 paulus
+ * BK Id: SCCS/s.uninorth.h 1.13 10/23/01 08:09:35 trini
  */
 /*
  * uninorth.h: definitions for using the "UniNorth" host bridge chip
@@ -7,7 +7,8 @@
  *
  */
 #ifdef __KERNEL__
-
+#ifndef __ASM_UNINORTH_H__
+#define __ASM_UNINORTH_H__
 
 /*
  * Uni-N config space reg. definitions
@@ -131,4 +132,5 @@
 
 /* Uninorth 1.5 rev. has additional perf. monitor registers at 0xf00-0xf50 */
 
+#endif /* __ASM_UNINORTH_H__ */
 #endif /* __KERNEL__ */
diff -urN linux-2.4.14-pre7/include/asm-ppc/unistd.h linux/include/asm-ppc/unistd.h
--- linux-2.4.14-pre7/include/asm-ppc/unistd.h	Mon May 21 15:02:06 2001
+++ linux/include/asm-ppc/unistd.h	Mon Dec  3 23:26:03 2001
@@ -1,5 +1,5 @@
 /*
- * BK Id: SCCS/s.unistd.h 1.7 05/17/01 18:14:26 cort
+ * BK Id: SCCS/s.unistd.h 1.11 10/18/01 17:29:53 trini
  */
 #ifndef _ASM_PPC_UNISTD_H_
 #define _ASM_PPC_UNISTD_H_
@@ -198,6 +198,7 @@
 #define __NR_putpmsg		188	/* some people actually want streams */
 #define __NR_vfork		189
 #define __NR_ugetrlimit		190	/* SuS compliant getrlimit */
+#define __NR_readahead		191
 #define __NR_mmap2		192
 #define __NR_truncate64		193
 #define __NR_ftruncate64	194
@@ -213,6 +214,7 @@
 #define __NR_fcntl64		204
 #define __NR_madvise		205
 #define __NR_mincore		206
+#define __NR_gettid		207
 
 #define __NR(n)	#n
 
diff -urN linux-2.4.14-pre7/include/linux/i8k.h linux/include/linux/i8k.h
--- linux-2.4.14-pre7/include/linux/i8k.h	Wed Dec 31 16:00:00 1969
+++ linux/include/linux/i8k.h	Mon Dec  3 23:26:03 2001
@@ -0,0 +1,46 @@
+/*
+ * i8k.h -- Linux driver for accessing the SMM BIOS on Dell I8000 laptops
+ *
+ * Copyright (C) 2001  Massimo Dal Zotto <dz@debian.org>
+ *
+ * This program 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, or (at your option) any
+ * later version.
+ *
+ * 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.
+ */
+
+#ifndef _LINUX_I8K_H
+#define _LINUX_I8K_H
+
+#define I8K_PROC		"/proc/i8k"
+#define I8K_PROC_FMT		"1.0"
+
+#define I8K_BIOS_VERSION	_IOR ('i', 0x80, 4)
+#define I8K_MACHINE_ID		_IOR ('i', 0x81, 16)
+#define I8K_POWER_STATUS	_IOR ('i', 0x82, sizeof(int))
+#define I8K_FN_STATUS		_IOR ('i', 0x83, sizeof(int))
+#define I8K_GET_TEMP		_IOR ('i', 0x84, sizeof(int))
+#define I8K_GET_SPEED		_IOWR('i', 0x85, sizeof(int))
+#define I8K_GET_FAN		_IOWR('i', 0x86, sizeof(int))
+#define I8K_SET_FAN		_IOWR('i', 0x87, sizeof(int)*2)
+
+#define I8K_FAN_LEFT		1
+#define I8K_FAN_RIGHT		0
+#define I8K_FAN_OFF		0
+#define I8K_FAN_LOW		1
+#define I8K_FAN_HIGH		2
+#define I8K_FAN_MAX		I8K_FAN_HIGH
+
+#define I8K_VOL_UP		0x01
+#define I8K_VOL_DOWN		0x02
+#define I8K_VOL_MUTE		0x03
+
+#define I8K_AC			1
+#define I8K_BATTERY		0
+
+#endif
diff -urN linux-2.4.14-pre7/include/linux/ntfs_fs.h linux/include/linux/ntfs_fs.h
--- linux-2.4.14-pre7/include/linux/ntfs_fs.h	Sat Sep  8 12:24:40 2001
+++ linux/include/linux/ntfs_fs.h	Mon Dec  3 23:26:03 2001
@@ -10,12 +10,12 @@
  * Attribute flags (16-bit).
  */
 typedef enum {
-	ATTR_IS_COMPRESSED      = cpu_to_le16(0x0001),
-	ATTR_COMPRESSION_MASK   = cpu_to_le16(0x00ff),  /* Compression method
-							 * mask. Also, first
-							 * illegal value. */
-	ATTR_IS_ENCRYPTED       = cpu_to_le16(0x4000),
-	ATTR_IS_SPARSE          = cpu_to_le16(0x8000),
+	ATTR_IS_COMPRESSED      = __constant_cpu_to_le16(0x0001),
+	ATTR_COMPRESSION_MASK   = __constant_cpu_to_le16(0x00ff),
+					/* Compression method mask. Also,
+					 * first illegal value. */
+	ATTR_IS_ENCRYPTED       = __constant_cpu_to_le16(0x4000),
+	ATTR_IS_SPARSE          = __constant_cpu_to_le16(0x8000),
 } __attribute__ ((__packed__)) ATTR_FLAGS;
 
 /*
diff -urN linux-2.4.14-pre7/include/linux/swap.h linux/include/linux/swap.h
--- linux-2.4.14-pre7/include/linux/swap.h	Mon Dec  3 23:25:53 2001
+++ linux/include/linux/swap.h	Mon Dec  3 23:26:03 2001
@@ -79,6 +79,10 @@
 };
 
 extern int nr_swap_pages;
+
+/* Swap 50% full? Release swapcache more aggressively.. */
+#define vm_swap_full() (nr_swap_pages*2 < total_swap_pages)
+
 extern unsigned int nr_free_pages(void);
 extern unsigned int nr_free_buffer_pages(void);
 extern int nr_active_pages;
@@ -129,8 +133,7 @@
 extern struct page * read_swap_cache_async(swp_entry_t);
 
 /* linux/mm/oom_kill.c */
-extern int out_of_memory(void);
-extern void oom_kill(void);
+extern void out_of_memory(void);
 
 /* linux/mm/swapfile.c */
 extern int total_swap_pages;
diff -urN linux-2.4.14-pre7/include/linux/tcp.h linux/include/linux/tcp.h
--- linux-2.4.14-pre7/include/linux/tcp.h	Tue Oct 23 21:59:11 2001
+++ linux/include/linux/tcp.h	Mon Dec  3 23:26:03 2001
@@ -110,7 +110,7 @@
 	TCP_FLAG_RST = __constant_htonl(0x00040000), 
 	TCP_FLAG_SYN = __constant_htonl(0x00020000), 
 	TCP_FLAG_FIN = __constant_htonl(0x00010000),
-	TCP_RESERVED_BITS = __constant_htonl(0x0FC00000),
+	TCP_RESERVED_BITS = __constant_htonl(0x0F000000),
 	TCP_DATA_OFFSET = __constant_htonl(0xF0000000)
 }; 
 
diff -urN linux-2.4.14-pre7/include/linux/timer.h linux/include/linux/timer.h
--- linux-2.4.14-pre7/include/linux/timer.h	Tue Oct 23 21:59:06 2001
+++ linux/include/linux/timer.h	Mon Dec  3 23:26:03 2001
@@ -59,6 +59,8 @@
  *	2. Because if the timer wrap changes in future you wont have to
  *	   alter your driver code.
  *
+ * time_after(a,b) returns true if the time a is after time b.
+ *
  * Do this with "<0" and ">=0" to only test the sign of the result. A
  * good compiler would generate better code (and a really good compiler
  * wouldn't care). Gcc is currently neither.
diff -urN linux-2.4.14-pre7/include/net/tcp_ecn.h linux/include/net/tcp_ecn.h
--- linux-2.4.14-pre7/include/net/tcp_ecn.h	Mon Dec  3 23:25:53 2001
+++ linux/include/net/tcp_ecn.h	Mon Dec  3 23:26:03 2001
@@ -3,7 +3,7 @@
 
 #include <net/inet_ecn.h>
 
-#define TCP_HP_BITS (~(TCP_RESERVED_BITS|TCP_FLAG_PSH)|TCP_FLAG_ECE|TCP_FLAG_CWR)
+#define TCP_HP_BITS (~(TCP_RESERVED_BITS|TCP_FLAG_PSH))
 
 #define	TCP_ECN_OK		1
 #define TCP_ECN_QUEUE_CWR	2
diff -urN linux-2.4.14-pre7/kernel/ksyms.c linux/kernel/ksyms.c
--- linux-2.4.14-pre7/kernel/ksyms.c	Mon Dec  3 23:25:53 2001
+++ linux/kernel/ksyms.c	Mon Dec  3 23:26:03 2001
@@ -276,6 +276,7 @@
 EXPORT_SYMBOL(filemap_fdatasync);
 EXPORT_SYMBOL(filemap_fdatawait);
 EXPORT_SYMBOL(lock_page);
+EXPORT_SYMBOL(unlock_page);
 
 /* device registration */
 EXPORT_SYMBOL(register_chrdev);
diff -urN linux-2.4.14-pre7/kernel/printk.c linux/kernel/printk.c
--- linux-2.4.14-pre7/kernel/printk.c	Mon Sep 17 13:16:30 2001
+++ linux/kernel/printk.c	Mon Dec  3 23:26:03 2001
@@ -24,10 +24,18 @@
 #include <linux/init.h>
 #include <linux/module.h>
 #include <linux/interrupt.h>			/* For in_interrupt() */
+#include <linux/config.h>
 
 #include <asm/uaccess.h>
 
+#ifdef CONFIG_MULTIQUAD
+#define LOG_BUF_LEN	(65536)
+#elif defined(CONFIG_SMP)
+#define LOG_BUF_LEN	(32768)
+#else	
 #define LOG_BUF_LEN	(16384)			/* This must be a power of two */
+#endif
+
 #define LOG_BUF_MASK	(LOG_BUF_LEN-1)
 
 /* printk's without a loglevel use this.. */
diff -urN linux-2.4.14-pre7/mm/memory.c linux/mm/memory.c
--- linux-2.4.14-pre7/mm/memory.c	Mon Dec  3 23:25:53 2001
+++ linux/mm/memory.c	Mon Dec  3 23:26:03 2001
@@ -177,7 +177,7 @@
 	pgd_t * src_pgd, * dst_pgd;
 	unsigned long address = vma->vm_start;
 	unsigned long end = vma->vm_end;
-	unsigned long cow = (vma->vm_flags & (VM_SHARED | VM_MAYWRITE)) == VM_MAYWRITE;
+	unsigned long cow = (vma->vm_flags & (VM_SHARED | VM_WRITE)) == VM_WRITE;
 
 	src_pgd = pgd_offset(src, address)-1;
 	dst_pgd = pgd_offset(dst, address)-1;
@@ -911,11 +911,15 @@
 	if (!VALID_PAGE(old_page))
 		goto bad_wp_page;
 
-	if (can_share_swap_page(old_page)) {	
-		flush_cache_page(vma, address);
-		establish_pte(vma, address, page_table, pte_mkyoung(pte_mkdirty(pte_mkwrite(pte))));
-		spin_unlock(&mm->page_table_lock);
-		return 1;	/* Minor fault */
+	if (PageSwapCache(old_page) && !TryLockPage(old_page)) {
+		int reuse = can_share_swap_page(old_page);
+		unlock_page(old_page);
+		if (reuse) {
+			flush_cache_page(vma, address);
+			establish_pte(vma, address, page_table, pte_mkyoung(pte_mkdirty(pte_mkwrite(pte))));
+			spin_unlock(&mm->page_table_lock);
+			return 1;	/* Minor fault */
+		}
 	}
 
 	/*
@@ -928,7 +932,6 @@
 	if (!new_page)
 		goto no_mem;
 	copy_cow_page(old_page,new_page,address);
-	page_cache_release(old_page);
 
 	/*
 	 * Re-check the pte - we dropped the lock
@@ -945,6 +948,7 @@
 	}
 	spin_unlock(&mm->page_table_lock);
 	page_cache_release(new_page);
+	page_cache_release(old_page);
 	return 1;	/* Minor fault */
 
 bad_wp_page:
@@ -1066,10 +1070,6 @@
 	return;
 }
 
-/* Swap 80% full? Release the pages as they are paged in.. */
-#define vm_swap_full() \
-	(swapper_space.nrpages*5 > total_swap_pages*4)
-
 /*
  * We hold the mm semaphore and the page_table_lock on entry and
  * should release the pagetable lock on exit..
@@ -1104,8 +1104,7 @@
 		ret = 2;
 	}
 
-	if (!Page_Uptodate(page))
-		wait_on_page(page);
+	lock_page(page);
 
 	/*
 	 * Back out if somebody else faulted in this pte while we
@@ -1113,24 +1112,23 @@
 	 */
 	spin_lock(&mm->page_table_lock);
 	if (!pte_same(*page_table, orig_pte)) {
-		page_cache_release(page);
 		spin_unlock(&mm->page_table_lock);
+		unlock_page(page);
+		page_cache_release(page);
 		return 1;
 	}
 
 	/* The page isn't present yet, go ahead with the fault. */
 		
 	swap_free(entry);
-	if (vm_swap_full()) {
-		lock_page(page);
+	if (vm_swap_full())
 		remove_exclusive_swap_page(page);
-		UnlockPage(page);
-	}
 
 	mm->rss++;
 	pte = mk_pte(page, vma->vm_page_prot);
 	if (write_access && can_share_swap_page(page))
 		pte = pte_mkdirty(pte_mkwrite(pte));
+	unlock_page(page);
 
 	flush_page_to_ram(page);
 	flush_icache_page(vma, page);
diff -urN linux-2.4.14-pre7/mm/oom_kill.c linux/mm/oom_kill.c
--- linux-2.4.14-pre7/mm/oom_kill.c	Mon Dec  3 23:25:53 2001
+++ linux/mm/oom_kill.c	Mon Dec  3 23:26:03 2001
@@ -168,7 +168,7 @@
  * OR try to be smart about which process to kill. Note that we
  * don't have to be perfect here, we just have to be good.
  */
-void oom_kill(void)
+static void oom_kill(void)
 {
 	struct task_struct *p = select_bad_process(), *q;
 
@@ -195,33 +195,29 @@
 
 /**
  * out_of_memory - is the system out of memory?
- *
- * Returns 0 if there is still enough memory left,
- * 1 when we are out of memory (otherwise).
  */
-int out_of_memory(void)
+void out_of_memory(void)
 {
 	static unsigned long first, last, count;
-	unsigned long now = jiffies;
-	unsigned long since = now - last;
+	unsigned long now, since;
 
 	/*
-	 * If there's been more than a second since last query,
-	 * we're not oom.
+	 * Enough swap space left?  Not OOM.
 	 */
+	if (nr_swap_pages > 0)
+		return;
+
+	now = jiffies;
+	since = now - last;
 	last = now;
-	if (since > HZ) {
-		first = now;
-		count = 0;
-		return 0;
-	}
 
 	/*
-	 * If we have gotten less than 100 failures,
-	 * we're not really oom. 
+	 * If it's been a long time since last failure,
+	 * we're not oom.
 	 */
-	if (++count < 100)
-		return 0;
+	last = now;
+	if (since > 5*HZ)
+		goto reset;
 
 	/*
 	 * If we haven't tried for at least one second,
@@ -229,23 +225,21 @@
 	 */
 	since = now - first;
 	if (since < HZ)
-		return 0;
+		return;
 
 	/*
-	 * Enough swap space left?  Not OOM.
+	 * If we have gotten only a few failures,
+	 * we're not really oom. 
 	 */
-	if (nr_swap_pages > 0)
-		return 0;
+	if (++count < 10)
+		return;
 
 	/*
-	 * Ok, really out of memory.
-	 *
-	 * Reset test logic, let the poor sucker
-	 * we selected die in peace (this will
-	 * delay the next oom kill for at least
-	 * another second and another X failures).
+	 * Ok, really out of memory. Kill something.
 	 */
+	oom_kill();
+
+reset:
 	first = now;
 	count = 0;
-	return 1;
 }
diff -urN linux-2.4.14-pre7/mm/page_alloc.c linux/mm/page_alloc.c
--- linux-2.4.14-pre7/mm/page_alloc.c	Mon Dec  3 23:25:53 2001
+++ linux/mm/page_alloc.c	Mon Dec  3 23:26:03 2001
@@ -515,14 +515,14 @@
 	pg_data_t *tmpdat = pgdat;
 
 	printk("Free pages:      %6dkB (%6dkB HighMem)\n",
-		nr_free_pages() << (PAGE_SHIFT-10),
-		nr_free_highpages() << (PAGE_SHIFT-10));
+		K(nr_free_pages()),
+		K(nr_free_highpages()));
 
 	while (tmpdat) {
 		zone_t *zone;
 		for (zone = tmpdat->node_zones;
 			       	zone < tmpdat->node_zones + MAX_NR_ZONES; zone++)
-			printk("Zone:%s freepages:%6lukB min:%6luKB low:%6lukB " 
+			printk("Zone:%s freepages:%6lukB min:%6lukB low:%6lukB " 
 				       "high:%6lukB\n", 
 					zone->name,
 					K(zone->free_pages),
@@ -533,10 +533,6 @@
 		tmpdat = tmpdat->node_next;
 	}
 
-	printk("Free pages:      %6dkB (%6dkB HighMem)\n",
-		K(nr_free_pages()),
-		K(nr_free_highpages()));
-
 	printk("( Active: %d, inactive: %d, free: %d )\n",
 	       nr_active_pages,
 	       nr_inactive_pages,
@@ -561,8 +557,7 @@
 					nr++;
 				}
 				total += nr * (1 << order);
-				printk("%lu*%lukB ", nr,
-						(PAGE_SIZE>>10) << order);
+				printk("%lu*%lukB ", nr, K(1UL) << order);
 			}
 			spin_unlock_irqrestore(&zone->lock, flags);
 		}
diff -urN linux-2.4.14-pre7/mm/swapfile.c linux/mm/swapfile.c
--- linux-2.4.14-pre7/mm/swapfile.c	Mon Dec  3 23:25:53 2001
+++ linux/mm/swapfile.c	Mon Dec  3 23:26:03 2001
@@ -260,6 +260,9 @@
 int can_share_swap_page(struct page *page)
 {
 	int retval = 0;
+
+	if (!PageLocked(page))
+		BUG();
 	switch (page_count(page)) {
 	case 3:
 		if (!page->buffers)
@@ -268,10 +271,7 @@
 	case 2:
 		if (!PageSwapCache(page))
 			break;
-		if (TryLockPage(page))
-			break;
 		retval = exclusive_swap_page(page);
-		UnlockPage(page);
 		break;
 	case 1:
 		if (PageReserved(page))
@@ -343,7 +343,11 @@
 	}
 	if (page) {
 		page_cache_get(page);
-		delete_from_swap_cache(page);
+		/* Only cache user (+us), or swap space full? Free it! */
+		if (page_count(page) == 2 || vm_swap_full()) {
+			delete_from_swap_cache(page);
+			SetPageDirty(page);
+		}
 		UnlockPage(page);
 		page_cache_release(page);
 	}
diff -urN linux-2.4.14-pre7/mm/vmscan.c linux/mm/vmscan.c
--- linux-2.4.14-pre7/mm/vmscan.c	Mon Dec  3 23:25:53 2001
+++ linux/mm/vmscan.c	Mon Dec  3 23:26:03 2001
@@ -49,7 +49,7 @@
 	swp_entry_t entry;
 
 	/* Don't look at this pte if it's been accessed recently. */
-	if (ptep_test_and_clear_young(page_table)) {
+	if ((vma->vm_flags & VM_LOCKED) || ptep_test_and_clear_young(page_table)) {
 		mark_page_accessed(page);
 		return 0;
 	}
@@ -220,8 +220,8 @@
 	pgd_t *pgdir;
 	unsigned long end;
 
-	/* Don't swap out areas which are locked down */
-	if (vma->vm_flags & (VM_LOCKED|VM_RESERVED))
+	/* Don't swap out areas which are reserved */
+	if (vma->vm_flags & VM_RESERVED)
 		return count;
 
 	pgdir = pgd_offset(mm, address);
@@ -331,7 +331,7 @@
 {
 	struct list_head * entry;
 	int max_scan = nr_inactive_pages / priority;
-	int max_mapped = nr_pages*10;
+	int max_mapped = nr_pages << (9 - priority);
 
 	spin_lock(&pagemap_lru_lock);
 	while (--max_scan >= 0 && (entry = inactive_list.prev) != &inactive_list) {
@@ -588,9 +588,7 @@
 	 * Hmm.. Cache shrink failed - time to kill something?
 	 * Mhwahahhaha! This is the part I really like. Giggle.
 	 */
-	if (out_of_memory())
-		oom_kill();
-
+	out_of_memory();
 	return 0;
 }
 
