r1503 - in trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27: config powerpc/pieces

luther@haydn.debian.org luther@haydn.debian.org
Wed, 01 Sep 2004 13:45:22 -0600


Author: luther
Date: 2004-09-01 13:43:37 -0600 (Wed, 01 Sep 2004)
New Revision: 1503

Modified:
   trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/config/powerpc
   trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/powerpc/pieces/asfs-1.0b4.diff
   trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/powerpc/pieces/benh.diff
   trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/powerpc/pieces/pegasos.diff
Log:
Fixed 2.4.27 patch set.
removed one rivafb hunk, this probably means that rivafb is broken.
Updated powerpc config file.


Modified: trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/config/powerpc
===================================================================
--- trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/config/powerpc	2004-09-01 05:15:32 UTC (rev 1502)
+++ trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/config/powerpc	2004-09-01 19:43:37 UTC (rev 1503)
@@ -106,7 +106,6 @@
 CONFIG_GEN_RTC=y
 CONFIG_PPC601_SYNC_FIX=y
 CONFIG_PROC_DEVICETREE=y
-CONFIG_PPC_RTAS=y
 CONFIG_PREP_RESIDUAL=y
 # CONFIG_PROC_PREPRESIDUAL is not set
 CONFIG_PPCBUG_NVRAM=y
@@ -165,7 +164,7 @@
 # CONFIG_CISS_MONITOR_THREAD is not set
 CONFIG_BLK_DEV_DAC960=m
 CONFIG_BLK_DEV_UMEM=m
-CONFIG_BLK_DEV_CARMEL=m
+CONFIG_BLK_DEV_SX8=m
 CONFIG_BLK_DEV_LOOP=m
 CONFIG_BLK_DEV_NBD=m
 CONFIG_BLK_DEV_RAM=y
@@ -185,6 +184,7 @@
 CONFIG_MD_MULTIPATH=m
 CONFIG_BLK_DEV_LVM=m
 CONFIG_BLK_DEV_DM=m
+CONFIG_BLK_DEV_DM_MIRROR=m
 
 #
 # Networking options
@@ -395,7 +395,7 @@
 CONFIG_NET_SCH_TEQL=m
 CONFIG_NET_SCH_TBF=m
 CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DELAY=m
+CONFIG_NET_SCH_NETEM=m
 CONFIG_NET_SCH_DSMARK=m
 CONFIG_NET_SCH_INGRESS=m
 # CONFIG_NET_QOS is not set
@@ -565,6 +565,7 @@
 CONFIG_SCSI_SATA=y
 CONFIG_SCSI_SATA_SVW=y
 CONFIG_SCSI_SATA_PROMISE=m
+CONFIG_SCSI_SATA_SX4=m
 CONFIG_SCSI_SATA_SIL=m
 CONFIG_SCSI_SATA_SIS=m
 CONFIG_SCSI_SATA_VIA=m
@@ -809,7 +810,6 @@
 CONFIG_PLX_HERMES=m
 CONFIG_TMD_HERMES=m
 CONFIG_PCI_HERMES=m
-CONFIG_TMD_HERMES=m
 
 #
 # Wireless Pcmcia cards support
@@ -1329,7 +1329,6 @@
 CONFIG_WDT_501=y
 # CONFIG_WDT_501_FAN is not set
 CONFIG_MACHZ_WDT=m
-# CONFIG_AMD7XX_TCO is not set
 CONFIG_SCx200=m
 # CONFIG_SCx200_GPIO is not set
 CONFIG_NVRAM=y
@@ -1822,6 +1821,7 @@
 #
 CONFIG_USB_ZERO=m
 CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
 CONFIG_USB_FILE_STORAGE=m
 # CONFIG_USB_FILE_STORAGE_TEST is not set
 
@@ -1872,8 +1872,10 @@
 CONFIG_CRYPTO_AES=m
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
 CONFIG_CRYPTO_ARC4=m
 CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_MICHAEL_MIC=m
 CONFIG_CRYPTO_TEST=m
 
 #

Modified: trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/powerpc/pieces/asfs-1.0b4.diff
===================================================================
--- trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/powerpc/pieces/asfs-1.0b4.diff	2004-09-01 05:15:32 UTC (rev 1502)
+++ trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/powerpc/pieces/asfs-1.0b4.diff	2004-09-01 19:43:37 UTC (rev 1503)
@@ -1,7 +1,7 @@
-diff -urN kernel-source-2.4.26-chrp8mb/Documentation/Configure.help kernel-source-2.4.26-asfs/Documentation/Configure.help
---- kernel-source-2.4.26-chrp8mb/Documentation/Configure.help	2004-07-02 08:14:29.000000000 +0200
-+++ kernel-source-2.4.26-asfs/Documentation/Configure.help	2004-07-02 08:24:22.285843128 +0200
-@@ -17336,6 +17336,34 @@
+diff -urN kernel-source-2.4.27/Documentation/Configure.help kernel-source-2.4.27-asfs/Documentation/Configure.help
+--- kernel-source-2.4.27/Documentation/Configure.help	2004-08-24 07:53:15.000000000 +0200
++++ kernel-source-2.4.27-asfs/Documentation/Configure.help	2004-09-01 21:03:31.189527824 +0200
+@@ -17396,6 +17396,34 @@
    say M here and read <file:Documentation/modules.txt>.  If unsure,
    say N.
  
@@ -36,9 +36,9 @@
  Apple HFS file system support
  CONFIG_HFS_FS
    If you say Y here, you will be able to mount Macintosh-formatted
-diff -urN kernel-source-2.4.26-chrp8mb/Documentation/filesystems/00-INDEX kernel-source-2.4.26-asfs/Documentation/filesystems/00-INDEX
---- kernel-source-2.4.26-chrp8mb/Documentation/filesystems/00-INDEX	2004-02-21 04:46:58.000000000 +0100
-+++ kernel-source-2.4.26-asfs/Documentation/filesystems/00-INDEX	2004-07-02 08:23:11.962533896 +0200
+diff -urN kernel-source-2.4.27/Documentation/filesystems/00-INDEX kernel-source-2.4.27-asfs/Documentation/filesystems/00-INDEX
+--- kernel-source-2.4.27/Documentation/filesystems/00-INDEX	2004-02-18 14:36:30.000000000 +0100
++++ kernel-source-2.4.27-asfs/Documentation/filesystems/00-INDEX	2004-09-01 21:03:31.192527368 +0200
 @@ -6,6 +6,8 @@
  	- info and mount options for the Acorn Advanced Disc Filing System.
  affs.txt
@@ -48,9 +48,9 @@
  befs.txt
  	- info for the BeOS file system (BFS)
  bfs.txt
-diff -urN kernel-source-2.4.26-chrp8mb/Documentation/filesystems/asfs.txt kernel-source-2.4.26-asfs/Documentation/filesystems/asfs.txt
---- kernel-source-2.4.26-chrp8mb/Documentation/filesystems/asfs.txt	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/Documentation/filesystems/asfs.txt	2004-07-02 08:23:11.963533744 +0200
+diff -urN kernel-source-2.4.27/Documentation/filesystems/asfs.txt kernel-source-2.4.27-asfs/Documentation/filesystems/asfs.txt
+--- kernel-source-2.4.27/Documentation/filesystems/asfs.txt	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/Documentation/filesystems/asfs.txt	2004-09-01 21:03:31.301510800 +0200
 @@ -0,0 +1,150 @@
 +
 +Amiga SmartFileSystem, Linux implementation
@@ -202,9 +202,9 @@
 +The ASFS driver is realased under the terms of of the GNU General 
 +Public License. See source code for more details.
 +
-diff -urN kernel-source-2.4.26-chrp8mb/fs/asfs/adminspace.c kernel-source-2.4.26-asfs/fs/asfs/adminspace.c
---- kernel-source-2.4.26-chrp8mb/fs/asfs/adminspace.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/fs/asfs/adminspace.c	2004-07-02 08:23:12.058519304 +0200
+diff -urN kernel-source-2.4.27/fs/asfs/adminspace.c kernel-source-2.4.27-asfs/fs/asfs/adminspace.c
+--- kernel-source-2.4.27/fs/asfs/adminspace.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/fs/asfs/adminspace.c	2004-09-01 21:03:31.405494992 +0200
 @@ -0,0 +1,442 @@
 +/*
 + *
@@ -648,9 +648,9 @@
 +}
 +
 +#endif
-diff -urN kernel-source-2.4.26-chrp8mb/fs/asfs/bitfuncs.c kernel-source-2.4.26-asfs/fs/asfs/bitfuncs.c
---- kernel-source-2.4.26-chrp8mb/fs/asfs/bitfuncs.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/fs/asfs/bitfuncs.c	2004-07-02 08:23:12.059519152 +0200
+diff -urN kernel-source-2.4.27/fs/asfs/bitfuncs.c kernel-source-2.4.27-asfs/fs/asfs/bitfuncs.c
+--- kernel-source-2.4.27/fs/asfs/bitfuncs.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/fs/asfs/bitfuncs.c	2004-09-01 21:03:31.406494840 +0200
 @@ -0,0 +1,249 @@
 +/*
 + *
@@ -901,9 +901,9 @@
 +}
 +
 +#endif
-diff -urN kernel-source-2.4.26-chrp8mb/fs/asfs/dir.c kernel-source-2.4.26-asfs/fs/asfs/dir.c
---- kernel-source-2.4.26-chrp8mb/fs/asfs/dir.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/fs/asfs/dir.c	2004-07-02 08:23:12.061518848 +0200
+diff -urN kernel-source-2.4.27/fs/asfs/dir.c kernel-source-2.4.27-asfs/fs/asfs/dir.c
+--- kernel-source-2.4.27/fs/asfs/dir.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/fs/asfs/dir.c	2004-09-01 21:03:31.506479640 +0200
 @@ -0,0 +1,214 @@
 +/*
 + *
@@ -1119,9 +1119,9 @@
 +	d_add(dentry, inode);
 +	return ERR_PTR(res);
 +}
-diff -urN kernel-source-2.4.26-chrp8mb/fs/asfs/extents.c kernel-source-2.4.26-asfs/fs/asfs/extents.c
---- kernel-source-2.4.26-chrp8mb/fs/asfs/extents.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/fs/asfs/extents.c	2004-07-02 08:23:12.066518088 +0200
+diff -urN kernel-source-2.4.27/fs/asfs/extents.c kernel-source-2.4.27-asfs/fs/asfs/extents.c
+--- kernel-source-2.4.27/fs/asfs/extents.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/fs/asfs/extents.c	2004-09-01 21:03:31.608464136 +0200
 @@ -0,0 +1,583 @@
 +/*
 + *
@@ -1706,9 +1706,9 @@
 +	return errorcode;
 +}
 +#endif
-diff -urN kernel-source-2.4.26-chrp8mb/fs/asfs/file.c kernel-source-2.4.26-asfs/fs/asfs/file.c
---- kernel-source-2.4.26-chrp8mb/fs/asfs/file.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/fs/asfs/file.c	2004-07-02 08:23:12.067517936 +0200
+diff -urN kernel-source-2.4.27/fs/asfs/file.c kernel-source-2.4.27-asfs/fs/asfs/file.c
+--- kernel-source-2.4.27/fs/asfs/file.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/fs/asfs/file.c	2004-09-01 21:03:31.610463832 +0200
 @@ -0,0 +1,255 @@
 +/*
 + *
@@ -1965,9 +1965,9 @@
 +}
 +
 +#endif
-diff -urN kernel-source-2.4.26-chrp8mb/fs/asfs/inode.c kernel-source-2.4.26-asfs/fs/asfs/inode.c
---- kernel-source-2.4.26-chrp8mb/fs/asfs/inode.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/fs/asfs/inode.c	2004-07-02 08:23:12.176501368 +0200
+diff -urN kernel-source-2.4.27/fs/asfs/inode.c kernel-source-2.4.27-asfs/fs/asfs/inode.c
+--- kernel-source-2.4.27/fs/asfs/inode.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/fs/asfs/inode.c	2004-09-01 21:03:31.710448632 +0200
 @@ -0,0 +1,477 @@
 +/*
 + *
@@ -2446,9 +2446,9 @@
 +}
 +*/
 +#endif
-diff -urN kernel-source-2.4.26-chrp8mb/fs/asfs/Makefile kernel-source-2.4.26-asfs/fs/asfs/Makefile
---- kernel-source-2.4.26-chrp8mb/fs/asfs/Makefile	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/fs/asfs/Makefile	2004-07-02 08:23:11.966533288 +0200
+diff -urN kernel-source-2.4.27/fs/asfs/Makefile kernel-source-2.4.27-asfs/fs/asfs/Makefile
+--- kernel-source-2.4.27/fs/asfs/Makefile	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/fs/asfs/Makefile	2004-09-01 21:03:31.711448480 +0200
 @@ -0,0 +1,15 @@
 +#
 +# Makefile for the linux asfs filesystem routines.
@@ -2465,9 +2465,9 @@
 +obj-m  := $(O_TARGET)
 +
 +include $(TOPDIR)/Rules.make
-diff -urN kernel-source-2.4.26-chrp8mb/fs/asfs/namei.c kernel-source-2.4.26-asfs/fs/asfs/namei.c
---- kernel-source-2.4.26-chrp8mb/fs/asfs/namei.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/fs/asfs/namei.c	2004-07-02 08:23:12.177501216 +0200
+diff -urN kernel-source-2.4.27/fs/asfs/namei.c kernel-source-2.4.27-asfs/fs/asfs/namei.c
+--- kernel-source-2.4.27/fs/asfs/namei.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/fs/asfs/namei.c	2004-09-01 21:03:31.712448328 +0200
 @@ -0,0 +1,152 @@
 +/*
 + *
@@ -2621,9 +2621,9 @@
 +	return hashval;
 +}
 +
-diff -urN kernel-source-2.4.26-chrp8mb/fs/asfs/nodes.c kernel-source-2.4.26-asfs/fs/asfs/nodes.c
---- kernel-source-2.4.26-chrp8mb/fs/asfs/nodes.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/fs/asfs/nodes.c	2004-07-02 08:23:12.355474160 +0200
+diff -urN kernel-source-2.4.27/fs/asfs/nodes.c kernel-source-2.4.27-asfs/fs/asfs/nodes.c
+--- kernel-source-2.4.27/fs/asfs/nodes.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/fs/asfs/nodes.c	2004-09-01 21:03:31.822431608 +0200
 @@ -0,0 +1,454 @@
 +/*
 + *
@@ -3079,9 +3079,9 @@
 +}
 +
 +#endif
-diff -urN kernel-source-2.4.26-chrp8mb/fs/asfs/objects.c kernel-source-2.4.26-asfs/fs/asfs/objects.c
---- kernel-source-2.4.26-chrp8mb/fs/asfs/objects.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/fs/asfs/objects.c	2004-07-02 08:23:12.445460480 +0200
+diff -urN kernel-source-2.4.27/fs/asfs/objects.c kernel-source-2.4.27-asfs/fs/asfs/objects.c
+--- kernel-source-2.4.27/fs/asfs/objects.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/fs/asfs/objects.c	2004-09-01 21:03:31.923416256 +0200
 @@ -0,0 +1,763 @@
 +/*
 + *
@@ -3846,9 +3846,9 @@
 +	return 0;
 +}
 +#endif
-diff -urN kernel-source-2.4.26-chrp8mb/fs/asfs/super.c kernel-source-2.4.26-asfs/fs/asfs/super.c
---- kernel-source-2.4.26-chrp8mb/fs/asfs/super.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/fs/asfs/super.c	2004-07-02 08:23:12.532447256 +0200
+diff -urN kernel-source-2.4.27/fs/asfs/super.c kernel-source-2.4.27-asfs/fs/asfs/super.c
+--- kernel-source-2.4.27/fs/asfs/super.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/fs/asfs/super.c	2004-09-01 21:03:32.022401208 +0200
 @@ -0,0 +1,422 @@
 +/*
 + *
@@ -4272,9 +4272,9 @@
 +
 +module_init(init_asfs_fs)
 +module_exit(exit_asfs_fs)
-diff -urN kernel-source-2.4.26-chrp8mb/fs/asfs/symlink.c kernel-source-2.4.26-asfs/fs/asfs/symlink.c
---- kernel-source-2.4.26-chrp8mb/fs/asfs/symlink.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/fs/asfs/symlink.c	2004-07-02 08:23:12.616434488 +0200
+diff -urN kernel-source-2.4.27/fs/asfs/symlink.c kernel-source-2.4.27-asfs/fs/asfs/symlink.c
+--- kernel-source-2.4.27/fs/asfs/symlink.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/fs/asfs/symlink.c	2004-09-01 21:03:32.024400904 +0200
 @@ -0,0 +1,225 @@
 +/*
 + *
@@ -4501,9 +4501,9 @@
 +}
 +
 +#endif
-diff -urN kernel-source-2.4.26-chrp8mb/fs/Config.in kernel-source-2.4.26-asfs/fs/Config.in
---- kernel-source-2.4.26-chrp8mb/fs/Config.in	2004-04-17 05:32:34.000000000 +0200
-+++ kernel-source-2.4.26-asfs/fs/Config.in	2004-07-02 08:25:19.524141584 +0200
+diff -urN kernel-source-2.4.27/fs/Config.in kernel-source-2.4.27-asfs/fs/Config.in
+--- kernel-source-2.4.27/fs/Config.in	2004-08-24 07:53:15.000000000 +0200
++++ kernel-source-2.4.27-asfs/fs/Config.in	2004-09-01 21:03:32.142382968 +0200
 @@ -19,6 +19,9 @@
  
  dep_tristate 'Amiga FFS file system support (EXPERIMENTAL)' CONFIG_AFFS_FS $CONFIG_EXPERIMENTAL
@@ -4514,9 +4514,9 @@
  dep_tristate 'Apple HFS file system support (EXPERIMENTAL)' CONFIG_HFS_FS $CONFIG_EXPERIMENTAL
  
  dep_tristate 'Apple HFS+ (Extended HFS) file system support (EXPERIMENTAL)' CONFIG_HFSPLUS_FS $CONFIG_EXPERIMENTAL
-diff -urN kernel-source-2.4.26-chrp8mb/fs/Makefile kernel-source-2.4.26-asfs/fs/Makefile
---- kernel-source-2.4.26-chrp8mb/fs/Makefile	2004-04-17 05:32:34.000000000 +0200
-+++ kernel-source-2.4.26-asfs/fs/Makefile	2004-07-02 08:23:11.965533440 +0200
+diff -urN kernel-source-2.4.27/fs/Makefile kernel-source-2.4.27-asfs/fs/Makefile
+--- kernel-source-2.4.27/fs/Makefile	2004-08-24 07:53:15.000000000 +0200
++++ kernel-source-2.4.27-asfs/fs/Makefile	2004-09-01 21:03:32.240368072 +0200
 @@ -55,6 +55,7 @@
  subdir-$(CONFIG_JFFS_FS)	+= jffs
  subdir-$(CONFIG_JFFS2_FS)	+= jffs2
@@ -4525,9 +4525,9 @@
  subdir-$(CONFIG_ROMFS_FS)	+= romfs
  subdir-$(CONFIG_QNX4FS_FS)	+= qnx4
  subdir-$(CONFIG_UDF_FS)		+= udf
-diff -urN kernel-source-2.4.26-chrp8mb/include/linux/asfs_fs.h kernel-source-2.4.26-asfs/include/linux/asfs_fs.h
---- kernel-source-2.4.26-chrp8mb/include/linux/asfs_fs.h	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/include/linux/asfs_fs.h	2004-07-02 08:23:12.000000000 +0200
+diff -urN kernel-source-2.4.27/include/linux/asfs_fs.h kernel-source-2.4.27-asfs/include/linux/asfs_fs.h
+--- kernel-source-2.4.27/include/linux/asfs_fs.h	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/include/linux/asfs_fs.h	2004-09-01 21:03:32.347351808 +0200
 @@ -0,0 +1,449 @@
 +#ifndef __LINUX_ASFS_FS_H
 +#define __LINUX_ASFS_FS_H
@@ -4978,9 +4978,9 @@
 +
 +#endif				/* __KERNEL__ */
 +#endif
-diff -urN kernel-source-2.4.26-chrp8mb/include/linux/asfs_fs_i.h kernel-source-2.4.26-asfs/include/linux/asfs_fs_i.h
---- kernel-source-2.4.26-chrp8mb/include/linux/asfs_fs_i.h	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/include/linux/asfs_fs_i.h	2004-07-02 08:23:12.000000000 +0200
+diff -urN kernel-source-2.4.27/include/linux/asfs_fs_i.h kernel-source-2.4.27-asfs/include/linux/asfs_fs_i.h
+--- kernel-source-2.4.27/include/linux/asfs_fs_i.h	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/include/linux/asfs_fs_i.h	2004-09-01 21:03:32.348351656 +0200
 @@ -0,0 +1,26 @@
 +#ifndef __ASFS_FS_I
 +#define __ASFS_FS_I
@@ -5008,9 +5008,9 @@
 +
 +#define ASFS_I(inode)	(&(inode)->u.asfs_i)
 +#endif
-diff -urN kernel-source-2.4.26-chrp8mb/include/linux/asfs_fs_sb.h kernel-source-2.4.26-asfs/include/linux/asfs_fs_sb.h
---- kernel-source-2.4.26-chrp8mb/include/linux/asfs_fs_sb.h	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26-asfs/include/linux/asfs_fs_sb.h	2004-07-02 08:23:12.000000000 +0200
+diff -urN kernel-source-2.4.27/include/linux/asfs_fs_sb.h kernel-source-2.4.27-asfs/include/linux/asfs_fs_sb.h
+--- kernel-source-2.4.27/include/linux/asfs_fs_sb.h	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-asfs/include/linux/asfs_fs_sb.h	2004-09-01 21:03:32.445336912 +0200
 @@ -0,0 +1,29 @@
 +#ifndef __ASFS_FS_SB
 +#define __ASFS_FS_SB
@@ -5041,9 +5041,9 @@
 +#define ASFS_SB(sb)	(&(sb)->u.asfs_sb)
 +
 +#endif
-diff -urN kernel-source-2.4.26-chrp8mb/include/linux/fs.h kernel-source-2.4.26-asfs/include/linux/fs.h
---- kernel-source-2.4.26-chrp8mb/include/linux/fs.h	2004-02-22 10:28:34.000000000 +0100
-+++ kernel-source-2.4.26-asfs/include/linux/fs.h	2004-07-02 08:23:13.000000000 +0200
+diff -urN kernel-source-2.4.27/include/linux/fs.h kernel-source-2.4.27-asfs/include/linux/fs.h
+--- kernel-source-2.4.27/include/linux/fs.h	2004-08-24 07:53:15.000000000 +0200
++++ kernel-source-2.4.27-asfs/include/linux/fs.h	2004-09-01 21:03:32.544321864 +0200
 @@ -309,6 +309,7 @@
  #include <linux/nfs_fs_i.h>
  #include <linux/sysv_fs_i.h>

Modified: trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/powerpc/pieces/benh.diff
===================================================================
--- trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/powerpc/pieces/benh.diff	2004-09-01 05:15:32 UTC (rev 1502)
+++ trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/powerpc/pieces/benh.diff	2004-09-01 19:43:37 UTC (rev 1503)
@@ -1,6 +1,6 @@
-diff -urN kernel-source-2.4.26.orig/arch/ppc/boot/common/misc-simple.c kernel-source-2.4.26/arch/ppc/boot/common/misc-simple.c
---- kernel-source-2.4.26.orig/arch/ppc/boot/common/misc-simple.c	2004-04-14 15:05:27.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/boot/common/misc-simple.c	2004-07-31 18:36:17.689835768 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/boot/common/misc-simple.c kernel-source-2.4.27-benh/arch/ppc/boot/common/misc-simple.c
+--- kernel-source-2.4.27/arch/ppc/boot/common/misc-simple.c	2004-04-14 15:05:27.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/boot/common/misc-simple.c	2004-09-01 20:56:21.829800424 +0200
 @@ -75,7 +75,7 @@
  extern void gunzip(void *, int, unsigned char *, int *);
  extern void serial_fixups(void);
@@ -10,9 +10,9 @@
  decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
  		void *ignored)
  {
-diff -urN kernel-source-2.4.26.orig/arch/ppc/boot/pmac/chrpmain.c kernel-source-2.4.26/arch/ppc/boot/pmac/chrpmain.c
---- kernel-source-2.4.26.orig/arch/ppc/boot/pmac/chrpmain.c	2004-02-18 14:36:30.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/boot/pmac/chrpmain.c	2004-07-31 18:36:17.983791080 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/boot/pmac/chrpmain.c kernel-source-2.4.27-benh/arch/ppc/boot/pmac/chrpmain.c
+--- kernel-source-2.4.27/arch/ppc/boot/pmac/chrpmain.c	2004-02-18 14:36:30.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/boot/pmac/chrpmain.c	2004-09-01 20:56:21.904789024 +0200
 @@ -29,8 +29,10 @@
  
  #define RAM_END		(16 << 20)
@@ -26,9 +26,9 @@
  
  #define SCRATCH_SIZE	(128 << 10)
  
-diff -urN kernel-source-2.4.26.orig/arch/ppc/boot/pmac/coffmain.c kernel-source-2.4.26/arch/ppc/boot/pmac/coffmain.c
---- kernel-source-2.4.26.orig/arch/ppc/boot/pmac/coffmain.c	2004-02-18 14:36:30.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/boot/pmac/coffmain.c	2004-07-31 18:36:17.996789104 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/boot/pmac/coffmain.c kernel-source-2.4.27-benh/arch/ppc/boot/pmac/coffmain.c
+--- kernel-source-2.4.27/arch/ppc/boot/pmac/coffmain.c	2004-02-18 14:36:30.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/boot/pmac/coffmain.c	2004-09-01 20:56:21.906788720 +0200
 @@ -18,29 +18,36 @@
  extern char __ramdisk_begin[], __ramdisk_end;
  extern char _start, _end;
@@ -127,9 +127,9 @@
      printf("start address = 0x%x\n", sa);
  
      (*(kernel_start_t)sa)(a1, a2, prom);
-diff -urN kernel-source-2.4.26.orig/arch/ppc/boot/pmac/misc.S kernel-source-2.4.26/arch/ppc/boot/pmac/misc.S
---- kernel-source-2.4.26.orig/arch/ppc/boot/pmac/misc.S	2003-06-13 16:51:31.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/boot/pmac/misc.S	2004-07-31 18:36:17.999788648 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/boot/pmac/misc.S kernel-source-2.4.27-benh/arch/ppc/boot/pmac/misc.S
+--- kernel-source-2.4.27/arch/ppc/boot/pmac/misc.S	2003-06-13 16:51:31.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/boot/pmac/misc.S	2004-09-01 20:56:21.980777472 +0200
 @@ -22,6 +22,10 @@
  	mtibatl	3,0			/* invalidate BAT first */
  	ori	3,3,4			/* set up BAT registers for 601 */
@@ -154,9 +154,9 @@
  	mtdbatl	3,4
  	mtdbatu	3,3
  	mtibatl	3,4
-diff -urN kernel-source-2.4.26.orig/arch/ppc/config.in kernel-source-2.4.26/arch/ppc/config.in
---- kernel-source-2.4.26.orig/arch/ppc/config.in	2004-04-14 15:05:27.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/config.in	2004-07-31 18:36:18.085775576 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/config.in kernel-source-2.4.27-benh/arch/ppc/config.in
+--- kernel-source-2.4.27/arch/ppc/config.in	2004-08-08 01:26:04.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/config.in	2004-09-01 20:56:22.057765768 +0200
 @@ -55,6 +55,17 @@
    define_bool CONFIG_PPC_STD_MMU y
  fi
@@ -175,7 +175,7 @@
  if [ "$CONFIG_8260" = "y" ]; then
    define_bool CONFIG_SERIAL_CONSOLE y
    define_bool CONFIG_CPM2 y
-@@ -582,6 +593,9 @@
+@@ -581,6 +592,9 @@
    if [ "$CONFIG_ADB_CUDA" != "n" ]; then
      bool 'Support for ANS LCD display' CONFIG_ANSLCD
    fi
@@ -185,7 +185,7 @@
  fi
  endmenu
  
-@@ -621,6 +635,10 @@
+@@ -620,6 +634,10 @@
  
  bool 'Kernel debugging' CONFIG_DEBUG_KERNEL
  if [ "$CONFIG_DEBUG_KERNEL" = "y" ]; then
@@ -196,7 +196,7 @@
    bool '  Magic SysRq key' CONFIG_MAGIC_SYSRQ
    bool '  Debug high memory support' CONFIG_DEBUG_HIGHMEM
    bool '  Debug memory allocations' CONFIG_DEBUG_SLAB
-@@ -640,6 +658,9 @@
+@@ -639,6 +657,9 @@
      dep_bool '    Enable serial console thru kgdb port' CONFIG_KGDB_CONSOLE $CONFIG_KGDB
    fi
    bool '  Include xmon kernel debugger' CONFIG_XMON
@@ -206,9 +206,9 @@
    bool '  Include BDI-2000 user context switcher' CONFIG_BDI_SWITCH
    # CONFIG_KGDB is much more useful with -g enbaled.  This makes the
    # following look a little odd.
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/btext.c kernel-source-2.4.26/arch/ppc/kernel/btext.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/btext.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/kernel/btext.c	2004-07-31 18:36:18.297743352 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/btext.c kernel-source-2.4.27-benh/arch/ppc/kernel/btext.c
+--- kernel-source-2.4.27/arch/ppc/kernel/btext.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/btext.c	2004-09-01 20:56:22.206743120 +0200
 @@ -42,22 +42,14 @@
  static unsigned char vga_font[cmapsz];
  
@@ -235,9 +235,9 @@
  
  /*
   * This is called only when we are booted via BootX.
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/cpu_setup_6xx.S kernel-source-2.4.26/arch/ppc/kernel/cpu_setup_6xx.S
---- kernel-source-2.4.26.orig/arch/ppc/kernel/cpu_setup_6xx.S	2004-02-18 14:36:30.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/kernel/cpu_setup_6xx.S	2004-07-31 18:36:18.495713256 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/cpu_setup_6xx.S kernel-source-2.4.27-benh/arch/ppc/kernel/cpu_setup_6xx.S
+--- kernel-source-2.4.27/arch/ppc/kernel/cpu_setup_6xx.S	2004-02-18 14:36:30.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/cpu_setup_6xx.S	2004-09-01 20:56:22.208742816 +0200
 @@ -53,6 +53,9 @@
  	bl	setup_7400_workarounds
  	bl	setup_common_caches
@@ -258,9 +258,9 @@
  	mtlr	r4
  	blr
  
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/cpu_setup_power4.S kernel-source-2.4.26/arch/ppc/kernel/cpu_setup_power4.S
---- kernel-source-2.4.26.orig/arch/ppc/kernel/cpu_setup_power4.S	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/kernel/cpu_setup_power4.S	2004-07-31 18:36:18.497712952 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/cpu_setup_power4.S kernel-source-2.4.27-benh/arch/ppc/kernel/cpu_setup_power4.S
+--- kernel-source-2.4.27/arch/ppc/kernel/cpu_setup_power4.S	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/cpu_setup_power4.S	2004-09-01 20:56:22.284731264 +0200
 @@ -0,0 +1,183 @@
 +/*
 + * This file contains low level CPU setup functions.
@@ -445,9 +445,9 @@
 +	mtcr	r7
 +	blr
 +
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/cputable.c kernel-source-2.4.26/arch/ppc/kernel/cputable.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/cputable.c	2004-04-14 15:05:27.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/kernel/cputable.c	2004-07-31 18:36:18.745675256 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/cputable.c kernel-source-2.4.27-benh/arch/ppc/kernel/cputable.c
+--- kernel-source-2.4.27/arch/ppc/kernel/cputable.c	2004-04-14 15:05:27.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/cputable.c	2004-09-01 20:56:22.361719560 +0200
 @@ -47,8 +47,10 @@
   */
  #ifdef CONFIG_ALTIVEC
@@ -567,9 +567,9 @@
  	128, 128,
  	__setup_cpu_ppc970
      },
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/head.S kernel-source-2.4.26/arch/ppc/kernel/head.S
---- kernel-source-2.4.26.orig/arch/ppc/kernel/head.S	2004-04-14 15:05:27.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/kernel/head.S	2004-07-31 18:36:18.851659144 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/head.S kernel-source-2.4.27-benh/arch/ppc/kernel/head.S
+--- kernel-source-2.4.27/arch/ppc/kernel/head.S	2004-04-14 15:05:27.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/head.S	2004-09-01 20:56:22.445706792 +0200
 @@ -141,17 +141,6 @@
  	mr	r27,r7
  	li	r24,0			/* cpu # */
@@ -711,9 +711,9 @@
  ppc970_setup_hid:
  	li	r0,0
  	sync
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/irq.c kernel-source-2.4.26/arch/ppc/kernel/irq.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/irq.c	2003-11-28 19:26:19.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/kernel/irq.c	2004-07-31 18:36:19.005635736 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/irq.c kernel-source-2.4.27-benh/arch/ppc/kernel/irq.c
+--- kernel-source-2.4.27/arch/ppc/kernel/irq.c	2003-11-28 19:26:19.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/irq.c	2004-09-01 20:56:22.447706488 +0200
 @@ -75,6 +75,10 @@
  unsigned long ppc_lost_interrupts[NR_MASK_WORDS];
  atomic_t ppc_n_lost_interrupts;
@@ -776,9 +776,9 @@
  					printk("get_irqlock(%d) waiting, global_irq_holder=%d\n", cpu, global_irq_holder);
  #ifdef CONFIG_XMON
  					xmon(0);
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/m8xx_setup.c kernel-source-2.4.26/arch/ppc/kernel/m8xx_setup.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/m8xx_setup.c	2004-02-18 14:36:30.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/kernel/m8xx_setup.c	2004-07-31 18:36:19.009635128 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/m8xx_setup.c kernel-source-2.4.27-benh/arch/ppc/kernel/m8xx_setup.c
+--- kernel-source-2.4.27/arch/ppc/kernel/m8xx_setup.c	2004-02-18 14:36:30.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/m8xx_setup.c	2004-09-01 20:56:22.528694176 +0200
 @@ -43,6 +43,7 @@
  #include <asm/machdep.h>
  #include <asm/bootinfo.h>
@@ -787,9 +787,9 @@
  
  #include "ppc8xx_pic.h"
  
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/Makefile kernel-source-2.4.26/arch/ppc/kernel/Makefile
---- kernel-source-2.4.26.orig/arch/ppc/kernel/Makefile	2004-04-14 15:05:27.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/kernel/Makefile	2004-07-31 18:36:19.010634976 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/Makefile kernel-source-2.4.27-benh/arch/ppc/kernel/Makefile
+--- kernel-source-2.4.27/arch/ppc/kernel/Makefile	2004-04-14 15:05:27.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/Makefile	2004-09-01 20:56:22.603682776 +0200
 @@ -43,12 +43,13 @@
  obj-y				+= idle_gen.o
  endif
@@ -814,9 +814,9 @@
  					indirect_pci.o i8259.o
  obj-$(CONFIG_GEMINI)		+= open_pic.o
  obj-$(CONFIG_LOPEC)		+= mpc10x_common.o indirect_pci.o pci_auto.o \
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/misc.S kernel-source-2.4.26/arch/ppc/kernel/misc.S
---- kernel-source-2.4.26.orig/arch/ppc/kernel/misc.S	2004-04-14 15:05:27.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/kernel/misc.S	2004-07-31 18:36:19.021633304 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/misc.S kernel-source-2.4.27-benh/arch/ppc/kernel/misc.S
+--- kernel-source-2.4.27/arch/ppc/kernel/misc.S	2004-04-14 15:05:27.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/misc.S	2004-09-01 20:56:22.605682472 +0200
 @@ -200,6 +200,59 @@
  	mr	r4,r24
  	bctr
@@ -877,9 +877,9 @@
  /* void __save_flags_ptr(unsigned long *flags) */
  _GLOBAL(__save_flags_ptr)
  	mfmsr	r4
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/open_pic2.c kernel-source-2.4.26/arch/ppc/kernel/open_pic2.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/open_pic2.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/kernel/open_pic2.c	2004-07-31 18:36:19.025632696 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/open_pic2.c kernel-source-2.4.27-benh/arch/ppc/kernel/open_pic2.c
+--- kernel-source-2.4.27/arch/ppc/kernel/open_pic2.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/open_pic2.c	2004-09-01 20:56:22.758659216 +0200
 @@ -0,0 +1,580 @@
 +/*
 + *  arch/ppc/kernel/open_pic.c -- OpenPIC Interrupt Handling
@@ -1461,9 +1461,9 @@
 +	spin_unlock_irqrestore(&openpic2_setup_lock, flags);
 +}
 +#endif /* CONFIG_PMAC_PBOOK */
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/open_pic.c kernel-source-2.4.26/arch/ppc/kernel/open_pic.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/open_pic.c	2004-02-18 14:36:30.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/kernel/open_pic.c	2004-07-31 18:36:19.028632240 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/open_pic.c kernel-source-2.4.27-benh/arch/ppc/kernel/open_pic.c
+--- kernel-source-2.4.27/arch/ppc/kernel/open_pic.c	2004-02-18 14:36:30.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/open_pic.c	2004-09-01 20:56:22.760658912 +0200
 @@ -877,6 +877,17 @@
  static u32 save_irq_src_dest[OPENPIC_MAX_SOURCES];
  static u32 save_cpu_task_pri[OPENPIC_MAX_PROCESSORS];
@@ -1502,9 +1502,9 @@
  	spin_unlock_irqrestore(&openpic_setup_lock, flags);
  }
  #endif /* CONFIG_PMAC_PBOOK */
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/pci.c kernel-source-2.4.26/arch/ppc/kernel/pci.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/pci.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/kernel/pci.c	2004-07-31 18:36:19.047629352 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/pci.c kernel-source-2.4.27-benh/arch/ppc/kernel/pci.c
+--- kernel-source-2.4.27/arch/ppc/kernel/pci.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/pci.c	2004-09-01 20:56:22.914635504 +0200
 @@ -22,7 +22,7 @@
  #include <asm/irq.h>
  #include <asm/uaccess.h>
@@ -1677,9 +1677,9 @@
  	if (!hose)
  		return -ENODEV;
  
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/ppc_ksyms.c kernel-source-2.4.26/arch/ppc/kernel/ppc_ksyms.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/ppc_ksyms.c	2004-04-14 15:05:27.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/kernel/ppc_ksyms.c	2004-07-31 18:36:19.050628896 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/ppc_ksyms.c kernel-source-2.4.27-benh/arch/ppc/kernel/ppc_ksyms.c
+--- kernel-source-2.4.27/arch/ppc/kernel/ppc_ksyms.c	2004-04-14 15:05:27.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/ppc_ksyms.c	2004-09-01 20:56:22.916635200 +0200
 @@ -14,6 +14,7 @@
  #include <linux/irq.h>
  #include <linux/pci.h>
@@ -1769,9 +1769,9 @@
  EXPORT_SYMBOL_NOVERS(agp_special_page);
 +EXPORT_SYMBOL(local_flush_tlb_all);
  #endif /* defined(CONFIG_ALL_PPC) */
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/process.c kernel-source-2.4.26/arch/ppc/kernel/process.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/process.c	2003-11-28 19:26:19.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/kernel/process.c	2004-07-31 18:36:19.074625248 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/process.c kernel-source-2.4.27-benh/arch/ppc/kernel/process.c
+--- kernel-source-2.4.27/arch/ppc/kernel/process.c	2003-11-28 19:26:19.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/process.c	2004-09-01 20:56:22.993623496 +0200
 @@ -507,14 +507,19 @@
  	if (sp == NULL)
  		asm("mr %0,1" : "=r" (sp));
@@ -1794,9 +1794,9 @@
  			break;
  	}
  	printk("\n");
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/prom.c kernel-source-2.4.26/arch/ppc/kernel/prom.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/prom.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/kernel/prom.c	2004-07-31 18:36:19.078624640 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/prom.c kernel-source-2.4.27-benh/arch/ppc/kernel/prom.c
+--- kernel-source-2.4.27/arch/ppc/kernel/prom.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/prom.c	2004-09-01 20:56:23.070611792 +0200
 @@ -206,7 +206,7 @@
  		ifunc = interpret_macio_props;
  	else if (!strcmp(np->type, "isa"))
@@ -1829,9 +1829,9 @@
  		np->intrs[i].line = irq[0] + offset;
  		if (n > 1)
  			np->intrs[i].sense = irq[1];
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/prom_init.c kernel-source-2.4.26/arch/ppc/kernel/prom_init.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/prom_init.c	2003-11-28 19:26:19.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/kernel/prom_init.c	2004-07-31 18:36:19.092622512 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/prom_init.c kernel-source-2.4.27-benh/arch/ppc/kernel/prom_init.c
+--- kernel-source-2.4.27/arch/ppc/kernel/prom_init.c	2003-11-28 19:26:19.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/prom_init.c	2004-09-01 20:56:23.148599936 +0200
 @@ -253,6 +253,74 @@
  	}
  }
@@ -2013,9 +2013,9 @@
  static void __init
  prom_instantiate_rtas(void)
  {
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/semaphore.c kernel-source-2.4.26/arch/ppc/kernel/semaphore.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/semaphore.c	2003-06-13 16:51:31.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/kernel/semaphore.c	2004-07-31 18:36:19.095622056 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/semaphore.c kernel-source-2.4.27-benh/arch/ppc/kernel/semaphore.c
+--- kernel-source-2.4.27/arch/ppc/kernel/semaphore.c	2003-06-13 16:51:31.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/semaphore.c	2004-09-01 20:56:23.149599784 +0200
 @@ -73,9 +73,8 @@
  	struct task_struct *tsk = current;
  	DECLARE_WAITQUEUE(wait, tsk);
@@ -2065,9 +2065,9 @@
  	wake_up(&sem->wait);
  	return retval;
  }
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/setup.c kernel-source-2.4.26/arch/ppc/kernel/setup.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/setup.c	2004-04-14 15:05:27.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/kernel/setup.c	2004-07-31 18:36:19.109619928 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/setup.c kernel-source-2.4.27-benh/arch/ppc/kernel/setup.c
+--- kernel-source-2.4.27/arch/ppc/kernel/setup.c	2004-04-14 15:05:27.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/setup.c	2004-09-01 20:56:23.299576984 +0200
 @@ -52,6 +52,7 @@
  struct ide_machdep_calls ppc_ide_md;
  char *sysmap;
@@ -2140,9 +2140,9 @@
  /* Checks "l2cr=xxxx" command-line option */
  int __init ppc_setup_l2cr(char *str)
  {
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/smp.c kernel-source-2.4.26/arch/ppc/kernel/smp.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/smp.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/kernel/smp.c	2004-07-31 18:36:19.120618256 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/smp.c kernel-source-2.4.27-benh/arch/ppc/kernel/smp.c
+--- kernel-source-2.4.27/arch/ppc/kernel/smp.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/smp.c	2004-09-01 20:56:23.376565280 +0200
 @@ -55,14 +55,13 @@
  /* all cpu mappings are 1-1 -- Cort */
  volatile unsigned long cpu_callin_map[NR_CPUS];
@@ -2298,9 +2298,9 @@
  	__sti();
  }
  
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/smp-tbsync.c kernel-source-2.4.26/arch/ppc/kernel/smp-tbsync.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/smp-tbsync.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/kernel/smp-tbsync.c	2004-07-31 18:36:19.121618104 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/smp-tbsync.c kernel-source-2.4.27-benh/arch/ppc/kernel/smp-tbsync.c
+--- kernel-source-2.4.27/arch/ppc/kernel/smp-tbsync.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/smp-tbsync.c	2004-09-01 20:56:23.378564976 +0200
 @@ -0,0 +1,182 @@
 +/*
 + * Smp timebase synchronization for ppc.
@@ -2484,9 +2484,9 @@
 +	/* all done */
 +	smp_tb_synchronized = 1;
 +}
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/time.c kernel-source-2.4.26/arch/ppc/kernel/time.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/time.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/kernel/time.c	2004-07-31 18:36:19.132616432 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/time.c kernel-source-2.4.27-benh/arch/ppc/kernel/time.c
+--- kernel-source-2.4.27/arch/ppc/kernel/time.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/time.c	2004-09-01 20:56:23.459552664 +0200
 @@ -145,6 +145,12 @@
  	unsigned jiffy_stamp = last_jiffy_stamp(cpu);
  	extern void do_IRQ(struct pt_regs *);
@@ -2500,9 +2500,9 @@
  	if (atomic_read(&ppc_n_lost_interrupts) != 0)
  		do_IRQ(regs);
  
-diff -urN kernel-source-2.4.26.orig/arch/ppc/kernel/traps.c kernel-source-2.4.26/arch/ppc/kernel/traps.c
---- kernel-source-2.4.26.orig/arch/ppc/kernel/traps.c	2004-04-14 15:05:27.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/kernel/traps.c	2004-07-31 18:36:19.147614152 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/traps.c kernel-source-2.4.27-benh/arch/ppc/kernel/traps.c
+--- kernel-source-2.4.27/arch/ppc/kernel/traps.c	2004-04-14 15:05:27.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/kernel/traps.c	2004-09-01 20:56:23.537540808 +0200
 @@ -76,6 +76,9 @@
  #endif
  #endif
@@ -2641,9 +2641,9 @@
  }
  
  void
-diff -urN kernel-source-2.4.26.orig/arch/ppc/lib/locks.c kernel-source-2.4.26/arch/ppc/lib/locks.c
---- kernel-source-2.4.26.orig/arch/ppc/lib/locks.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/lib/locks.c	2004-07-31 18:36:19.170610656 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/lib/locks.c kernel-source-2.4.27-benh/arch/ppc/lib/locks.c
+--- kernel-source-2.4.27/arch/ppc/lib/locks.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/lib/locks.c	2004-09-01 20:56:23.538540656 +0200
 @@ -15,9 +15,19 @@
  
  #if SPINLOCK_DEBUG
@@ -2718,9 +2718,9 @@
  	clear_bit(31,&(rw)->lock);
  }
  
-diff -urN kernel-source-2.4.26.orig/arch/ppc/mm/fault.c kernel-source-2.4.26/arch/ppc/mm/fault.c
---- kernel-source-2.4.26.orig/arch/ppc/mm/fault.c	2003-11-28 19:26:19.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/mm/fault.c	2004-07-31 18:36:19.191607464 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/mm/fault.c kernel-source-2.4.27-benh/arch/ppc/mm/fault.c
+--- kernel-source-2.4.27/arch/ppc/mm/fault.c	2003-11-28 19:26:19.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/mm/fault.c	2004-09-01 20:56:23.616528800 +0200
 @@ -96,7 +96,7 @@
  void do_page_fault(struct pt_regs *regs, unsigned long address,
  		   unsigned long error_code)
@@ -2740,9 +2740,9 @@
  		goto bad_area;
  
  good_area:
-diff -urN kernel-source-2.4.26.orig/arch/ppc/mm/init.c kernel-source-2.4.26/arch/ppc/mm/init.c
---- kernel-source-2.4.26.orig/arch/ppc/mm/init.c	2003-11-28 19:26:19.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/mm/init.c	2004-07-31 18:36:19.199606248 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/mm/init.c kernel-source-2.4.27-benh/arch/ppc/mm/init.c
+--- kernel-source-2.4.27/arch/ppc/mm/init.c	2003-11-28 19:26:19.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/mm/init.c	2004-09-01 20:56:23.692517248 +0200
 @@ -125,6 +125,9 @@
  
  int do_check_pgt_cache(int low, int high)
@@ -2779,9 +2779,9 @@
  	totalram_pages += free_all_bootmem();
  
  	/* adjust vmalloc_start */
-diff -urN kernel-source-2.4.26.orig/arch/ppc/platforms/Makefile kernel-source-2.4.26/arch/ppc/platforms/Makefile
---- kernel-source-2.4.26.orig/arch/ppc/platforms/Makefile	2004-04-14 15:05:27.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/platforms/Makefile	2004-07-31 18:36:19.213604120 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/Makefile kernel-source-2.4.27-benh/arch/ppc/platforms/Makefile
+--- kernel-source-2.4.27/arch/ppc/platforms/Makefile	2004-08-08 01:26:04.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/platforms/Makefile	2004-09-01 20:56:23.693517096 +0200
 @@ -26,7 +26,7 @@
  
  O_TARGET := platform.o
@@ -2801,9 +2801,9 @@
  obj-$(CONFIG_PREP_RESIDUAL)	+= residual.o
  obj-$(CONFIG_GEMINI)		+= gemini_pci.o gemini_setup.o gemini_prom.o
  obj-$(CONFIG_LOPEC)		+= lopec_setup.o lopec_pci.o
-diff -urN kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_backlight.c kernel-source-2.4.26/arch/ppc/platforms/pmac_backlight.c
---- kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_backlight.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/platforms/pmac_backlight.c	2004-07-31 18:36:19.220603056 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/pmac_backlight.c kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_backlight.c
+--- kernel-source-2.4.27/arch/ppc/platforms/pmac_backlight.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_backlight.c	2004-09-01 20:56:23.693517096 +0200
 @@ -37,6 +37,10 @@
  	char *prop;
  	int valid = 0;
@@ -2815,9 +2815,9 @@
  	bk_node = find_devices("backlight");
  
  #ifdef CONFIG_ADB_PMU
-diff -urN kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_cpufreq.c kernel-source-2.4.26/arch/ppc/platforms/pmac_cpufreq.c
---- kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_cpufreq.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/arch/ppc/platforms/pmac_cpufreq.c	2004-07-31 18:36:19.230601536 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/pmac_cpufreq.c kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_cpufreq.c
+--- kernel-source-2.4.27/arch/ppc/platforms/pmac_cpufreq.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_cpufreq.c	2004-09-01 20:56:23.771505240 +0200
 @@ -0,0 +1,352 @@
 +#include <linux/config.h>
 +#include <linux/types.h>
@@ -3171,9 +3171,9 @@
 +
 +__initcall(pmac_cpufreq_setup);
 +
-diff -urN kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_feature.c kernel-source-2.4.26/arch/ppc/platforms/pmac_feature.c
---- kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_feature.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/platforms/pmac_feature.c	2004-07-31 18:36:19.247598952 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/pmac_feature.c kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_feature.c
+--- kernel-source-2.4.27/arch/ppc/platforms/pmac_feature.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_feature.c	2004-09-01 20:56:23.852492928 +0200
 @@ -80,6 +80,7 @@
  	macio_keylargo,
  	macio_pangea,
@@ -3375,9 +3375,9 @@
  	if (macio_chips[0].type == macio_keylargo ||
  	    macio_chips[0].type == macio_pangea ||
  	    macio_chips[0].type == macio_intrepid) {
-diff -urN kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_nvram.c kernel-source-2.4.26/arch/ppc/platforms/pmac_nvram.c
---- kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_nvram.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/platforms/pmac_nvram.c	2004-07-31 18:36:19.258597280 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/pmac_nvram.c kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_nvram.c
+--- kernel-source-2.4.27/arch/ppc/platforms/pmac_nvram.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_nvram.c	2004-09-01 20:56:23.932480768 +0200
 @@ -5,33 +5,46 @@
  #include <linux/module.h>
  #include <linux/kernel.h>
@@ -4036,9 +4036,9 @@
 +EXPORT_SYMBOL(pmac_nvram_sync);
 +EXPORT_SYMBOL(pmac_xpram_read);
 +EXPORT_SYMBOL(pmac_xpram_write);
-diff -urN kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_pci.c kernel-source-2.4.26/arch/ppc/platforms/pmac_pci.c
---- kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_pci.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/platforms/pmac_pci.c	2004-07-31 18:36:19.269595608 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/pmac_pci.c kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_pci.c
+--- kernel-source-2.4.27/arch/ppc/platforms/pmac_pci.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_pci.c	2004-09-01 20:56:24.011468760 +0200
 @@ -28,11 +28,14 @@
  
  #undef DEBUG
@@ -4390,9 +4390,9 @@
  }
  
  static void __init
-diff -urN kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_pic.c kernel-source-2.4.26/arch/ppc/platforms/pmac_pic.c
---- kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_pic.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/platforms/pmac_pic.c	2004-07-31 18:36:19.272595152 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/pmac_pic.c kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_pic.c
+--- kernel-source-2.4.27/arch/ppc/platforms/pmac_pic.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_pic.c	2004-09-01 20:56:24.013468456 +0200
 @@ -342,28 +342,69 @@
  pmac_pic_init(void)
  {
@@ -4469,9 +4469,9 @@
  #ifdef CONFIG_XMON
  			{
  				struct device_node* pswitch;
-diff -urN kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_setup.c kernel-source-2.4.26/arch/ppc/platforms/pmac_setup.c
---- kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_setup.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/platforms/pmac_setup.c	2004-07-31 18:36:19.292592112 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/pmac_setup.c kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_setup.c
+--- kernel-source-2.4.27/arch/ppc/platforms/pmac_setup.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_setup.c	2004-09-01 20:56:24.092456448 +0200
 @@ -50,6 +50,7 @@
  #include <linux/seq_file.h>
  #include <linux/blkdev.h>
@@ -4606,9 +4606,9 @@
  #ifdef CONFIG_BLK_DEV_IDE_PMAC
          ppc_ide_md.ide_init_hwif	= pmac_ide_init_hwif_ports;
          ppc_ide_md.default_io_base	= pmac_ide_get_base;
-diff -urN kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_sleep.S kernel-source-2.4.26/arch/ppc/platforms/pmac_sleep.S
---- kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_sleep.S	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/platforms/pmac_sleep.S	2004-07-31 18:36:19.294591808 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/pmac_sleep.S kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_sleep.S
+--- kernel-source-2.4.27/arch/ppc/platforms/pmac_sleep.S	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_sleep.S	2004-09-01 20:56:24.171444440 +0200
 @@ -44,7 +44,7 @@
  	.text
  	.align	5
@@ -4643,9 +4643,9 @@
  	.text
 +
 +#endif /* CONFIG_6xx */
-diff -urN kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_smp.c kernel-source-2.4.26/arch/ppc/platforms/pmac_smp.c
---- kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_smp.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/platforms/pmac_smp.c	2004-07-31 18:36:19.313588920 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/pmac_smp.c kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_smp.c
+--- kernel-source-2.4.27/arch/ppc/platforms/pmac_smp.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_smp.c	2004-09-01 20:56:24.252432128 +0200
 @@ -52,6 +52,7 @@
  #include <asm/time.h>
  #include <asm/open_pic.h>
@@ -4861,9 +4861,9 @@
  
  /* PowerSurge-style Macs */
  struct smp_ops_t psurge_smp_ops __pmacdata = {
-diff -urN kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_time.c kernel-source-2.4.26/arch/ppc/platforms/pmac_time.c
---- kernel-source-2.4.26.orig/arch/ppc/platforms/pmac_time.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/platforms/pmac_time.c	2004-07-31 18:36:19.318588160 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/pmac_time.c kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_time.c
+--- kernel-source-2.4.27/arch/ppc/platforms/pmac_time.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/platforms/pmac_time.c	2004-09-01 20:56:24.253431976 +0200
 @@ -167,7 +167,7 @@
  {
  	struct device_node *vias;
@@ -4910,9 +4910,9 @@
  	tb_to_us = mulhwu_scale_factor(freq, 1000000);
 +	printk("tb_to_us: %d\n", tb_to_us);
  }
-diff -urN kernel-source-2.4.26.orig/arch/ppc/xmon/start.c kernel-source-2.4.26/arch/ppc/xmon/start.c
---- kernel-source-2.4.26.orig/arch/ppc/xmon/start.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/xmon/start.c	2004-07-31 18:36:19.375579496 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/xmon/start.c kernel-source-2.4.27-benh/arch/ppc/xmon/start.c
+--- kernel-source-2.4.27/arch/ppc/xmon/start.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/xmon/start.c	2004-09-01 20:56:24.425405832 +0200
 @@ -12,6 +12,7 @@
  #include <linux/kernel.h>
  #include <linux/errno.h>
@@ -5191,9 +5191,9 @@
  #ifdef CONFIG_ADB_PMU
  	if (_machine == _MACH_Pmac) {
  		pmu_resume();
-diff -urN kernel-source-2.4.26.orig/arch/ppc/xmon/xmon.c kernel-source-2.4.26/arch/ppc/xmon/xmon.c
---- kernel-source-2.4.26.orig/arch/ppc/xmon/xmon.c	2003-08-25 13:44:40.000000000 +0200
-+++ kernel-source-2.4.26/arch/ppc/xmon/xmon.c	2004-07-31 18:36:19.582548032 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/xmon/xmon.c kernel-source-2.4.27-benh/arch/ppc/xmon/xmon.c
+--- kernel-source-2.4.27/arch/ppc/xmon/xmon.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-benh/arch/ppc/xmon/xmon.c	2004-09-01 20:56:24.427405528 +0200
 @@ -209,6 +209,7 @@
  #endif /* CONFIG_SMP */
  	remove_bpts();
@@ -5210,10 +5210,10 @@
  #endif	/* CONFIG_PMAC_BACKLIGHT */
  	cmd = cmds(excp);
  	if (cmd == 's') {
-diff -urN kernel-source-2.4.26.orig/Documentation/Configure.help kernel-source-2.4.26/Documentation/Configure.help
---- kernel-source-2.4.26.orig/Documentation/Configure.help	2004-07-20 14:05:56.000000000 +0200
-+++ kernel-source-2.4.26/Documentation/Configure.help	2004-07-31 18:36:19.973488600 +0200
-@@ -28566,6 +28566,30 @@
+diff -urN kernel-source-2.4.27/Documentation/Configure.help kernel-source-2.4.27-benh/Documentation/Configure.help
+--- kernel-source-2.4.27/Documentation/Configure.help	2004-08-24 07:53:15.000000000 +0200
++++ kernel-source-2.4.27-benh/Documentation/Configure.help	2004-09-01 20:59:00.018752048 +0200
+@@ -28610,6 +28610,30 @@
    hotplug firmware loading support, but a module built outside the kernel tree
    does.
  
@@ -5244,9 +5244,9 @@
  NatSemi SCx200 support
  CONFIG_SCx200
    This provides basic support for the National Semiconductor SCx200
-diff -urN kernel-source-2.4.26.orig/Documentation/cpufreq kernel-source-2.4.26/Documentation/cpufreq
---- kernel-source-2.4.26.orig/Documentation/cpufreq	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/Documentation/cpufreq	2004-07-31 18:36:19.985486776 +0200
+diff -urN kernel-source-2.4.27/Documentation/cpufreq kernel-source-2.4.27-benh/Documentation/cpufreq
+--- kernel-source-2.4.27/Documentation/cpufreq	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/Documentation/cpufreq	2004-09-01 20:56:24.000000000 +0200
 @@ -0,0 +1,361 @@
 +     CPU frequency and voltage scaling code in the Linux(TM) kernel
 +
@@ -5609,9 +5609,9 @@
 +
 +CPUFreq project homepage
 +* http://www.brodo.de/cpufreq/
-diff -urN kernel-source-2.4.26.orig/Documentation/laptop-mode.sh kernel-source-2.4.26/Documentation/laptop-mode.sh
---- kernel-source-2.4.26.orig/Documentation/laptop-mode.sh	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/Documentation/laptop-mode.sh	2004-07-31 18:36:19.986486624 +0200
+diff -urN kernel-source-2.4.27/Documentation/laptop-mode.sh kernel-source-2.4.27-benh/Documentation/laptop-mode.sh
+--- kernel-source-2.4.27/Documentation/laptop-mode.sh	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/Documentation/laptop-mode.sh	2004-09-01 20:56:24.000000000 +0200
 @@ -0,0 +1,42 @@
 +#!/bin/sh
 +#
@@ -5655,9 +5655,9 @@
 +esac
 +
 +exit 0
-diff -urN kernel-source-2.4.26.orig/drivers/block/ll_rw_blk.c kernel-source-2.4.26/drivers/block/ll_rw_blk.c
---- kernel-source-2.4.26.orig/drivers/block/ll_rw_blk.c	2004-04-14 15:05:29.000000000 +0200
-+++ kernel-source-2.4.26/drivers/block/ll_rw_blk.c	2004-07-31 18:36:20.049477048 +0200
+diff -urN kernel-source-2.4.27/drivers/block/ll_rw_blk.c kernel-source-2.4.27-benh/drivers/block/ll_rw_blk.c
+--- kernel-source-2.4.27/drivers/block/ll_rw_blk.c	2004-04-14 15:05:29.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/block/ll_rw_blk.c	2004-09-01 20:56:24.977321928 +0200
 @@ -162,6 +162,12 @@
  	return i;
  }
@@ -5699,9 +5699,9 @@
  }
  
  /**
-diff -urN kernel-source-2.4.26.orig/drivers/char/agp/agpgart_be.c kernel-source-2.4.26/drivers/char/agp/agpgart_be.c
---- kernel-source-2.4.26.orig/drivers/char/agp/agpgart_be.c	2004-04-14 15:05:29.000000000 +0200
-+++ kernel-source-2.4.26/drivers/char/agp/agpgart_be.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/char/agp/agpgart_be.c kernel-source-2.4.27-benh/drivers/char/agp/agpgart_be.c
+--- kernel-source-2.4.27/drivers/char/agp/agpgart_be.c	2004-08-08 01:26:04.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/char/agp/agpgart_be.c	2004-09-01 20:56:25.226284080 +0200
 @@ -52,6 +52,9 @@
  #ifdef CONFIG_X86
  #include <asm/msr.h>
@@ -5721,7 +5721,7 @@
  	/* ??? I wonder if we'll really need to flush caches, or if the
  	   core logic can manage to keep the system coherent.  The ARM
  	   speaks only of using `cflush' to get things in memory in
-@@ -5920,6 +5923,404 @@
+@@ -5924,6 +5927,404 @@
  }
  #endif /* CONFIG_AGP_ATI */
  
@@ -6126,7 +6126,7 @@
  /* per-chipset initialization data.
   * note -- all chipsets for a single vendor MUST be grouped together
   */
-@@ -6432,6 +6833,12 @@
+@@ -6442,6 +6843,12 @@
  	  "ATI",
  	  "IGP330/340/345/350/M",
  	  ati_generic_setup },
@@ -6139,7 +6139,7 @@
  	{ PCI_DEVICE_ID_ATI_RS250,
  	  PCI_VENDOR_ID_ATI,
  	  ATI_RS250,
-@@ -6464,6 +6871,33 @@
+@@ -6474,6 +6881,33 @@
  	  ati_generic_setup },
  #endif /* CONFIG_AGP_ATI */
  
@@ -6173,10 +6173,10 @@
  	{ 0, }, /* dummy final entry, always present */
  };
  
-diff -urN kernel-source-2.4.26.orig/drivers/char/Config.in kernel-source-2.4.26/drivers/char/Config.in
---- kernel-source-2.4.26.orig/drivers/char/Config.in	2004-07-20 14:05:56.000000000 +0200
-+++ kernel-source-2.4.26/drivers/char/Config.in	2004-07-31 18:36:20.000000000 +0200
-@@ -368,6 +368,7 @@
+diff -urN kernel-source-2.4.27/drivers/char/Config.in kernel-source-2.4.27-benh/drivers/char/Config.in
+--- kernel-source-2.4.27/drivers/char/Config.in	2004-08-24 07:53:14.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/char/Config.in	2004-09-01 20:56:25.228283776 +0200
+@@ -367,6 +367,7 @@
        bool '  HP ZX1 AGP support' CONFIG_AGP_HP_ZX1
     fi
     bool '  ATI IGP chipset support' CONFIG_AGP_ATI
@@ -6184,9 +6184,9 @@
  fi
  
  mainmenu_option next_comment
-diff -urN kernel-source-2.4.26.orig/drivers/i2c/i2c-keywest.c kernel-source-2.4.26/drivers/i2c/i2c-keywest.c
---- kernel-source-2.4.26.orig/drivers/i2c/i2c-keywest.c	2004-02-18 14:36:31.000000000 +0100
-+++ kernel-source-2.4.26/drivers/i2c/i2c-keywest.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/i2c/i2c-keywest.c kernel-source-2.4.27-benh/drivers/i2c/i2c-keywest.c
+--- kernel-source-2.4.27/drivers/i2c/i2c-keywest.c	2004-02-18 14:36:31.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/i2c/i2c-keywest.c	2004-09-01 20:56:25.386259760 +0200
 @@ -26,6 +26,7 @@
      2001/12/13 BenH	New implementation
      2001/12/15 BenH	Add support for "byte" and "quick"
@@ -6646,9 +6646,9 @@
  	up(&iface->sem);
  
  	/* Release all channels */
-diff -urN kernel-source-2.4.26.orig/drivers/i2c/i2c-keywest.h kernel-source-2.4.26/drivers/i2c/i2c-keywest.h
---- kernel-source-2.4.26.orig/drivers/i2c/i2c-keywest.h	2002-02-25 20:37:57.000000000 +0100
-+++ kernel-source-2.4.26/drivers/i2c/i2c-keywest.h	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/i2c/i2c-keywest.h kernel-source-2.4.27-benh/drivers/i2c/i2c-keywest.h
+--- kernel-source-2.4.27/drivers/i2c/i2c-keywest.h	2002-02-25 20:37:57.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/i2c/i2c-keywest.h	2004-09-01 20:56:25.387259608 +0200
 @@ -64,7 +64,6 @@
  	unsigned		datalen;
  	int			state;
@@ -6667,9 +6667,9 @@
  }
  
  #define write_reg(reg, val)	__write_reg(iface, reg, val) 
-diff -urN kernel-source-2.4.26.orig/drivers/ide/Config.in kernel-source-2.4.26/drivers/ide/Config.in
---- kernel-source-2.4.26.orig/drivers/ide/Config.in	2004-07-20 14:05:56.000000000 +0200
-+++ kernel-source-2.4.26/drivers/ide/Config.in	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/ide/Config.in kernel-source-2.4.27-benh/drivers/ide/Config.in
+--- kernel-source-2.4.27/drivers/ide/Config.in	2004-08-24 07:53:14.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/ide/Config.in	2004-09-01 20:56:25.465247752 +0200
 @@ -90,6 +90,9 @@
  	 dep_bool '      Probe internal Kauai ATA/100 first' CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST $CONFIG_BLK_DEV_IDE_PMAC
  	 dep_bool '      PowerMac IDE DMA support' CONFIG_BLK_DEV_IDEDMA_PMAC $CONFIG_BLK_DEV_IDE_PMAC
@@ -6680,9 +6680,9 @@
  	 if [ "$CONFIG_BLK_DEV_IDE_PMAC" = "y" ]; then
  	   define_bool CONFIG_BLK_DEV_IDEDMA $CONFIG_BLK_DEV_IDEDMA_PMAC
  	 fi
-diff -urN kernel-source-2.4.26.orig/drivers/ide/ide-probe.c kernel-source-2.4.26/drivers/ide/ide-probe.c
---- kernel-source-2.4.26.orig/drivers/ide/ide-probe.c	2004-07-20 14:05:56.000000000 +0200
-+++ kernel-source-2.4.26/drivers/ide/ide-probe.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/ide/ide-probe.c kernel-source-2.4.27-benh/drivers/ide/ide-probe.c
+--- kernel-source-2.4.27/drivers/ide/ide-probe.c	2004-04-14 15:05:29.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/ide/ide-probe.c	2004-09-01 20:56:25.553234376 +0200
 @@ -982,6 +982,13 @@
  	q->queuedata = HWGROUP(drive);
  	blk_init_queue(q, do_ide_request);
@@ -6726,9 +6726,9 @@
  		*max_ra++ = vm_max_readahead;
  	}
  
-diff -urN kernel-source-2.4.26.orig/drivers/ide/pci/pdc202xx_new.c kernel-source-2.4.26/drivers/ide/pci/pdc202xx_new.c
---- kernel-source-2.4.26.orig/drivers/ide/pci/pdc202xx_new.c	2003-06-13 16:51:33.000000000 +0200
-+++ kernel-source-2.4.26/drivers/ide/pci/pdc202xx_new.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/ide/pci/pdc202xx_new.c kernel-source-2.4.27-benh/drivers/ide/pci/pdc202xx_new.c
+--- kernel-source-2.4.27/drivers/ide/pci/pdc202xx_new.c	2004-08-08 01:26:04.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/ide/pci/pdc202xx_new.c	2004-09-01 20:56:25.643220696 +0200
 @@ -32,6 +32,11 @@
  #include <asm/io.h>
  #include <asm/irq.h>
@@ -6871,7 +6871,7 @@
  }
  
  static void pdcnew_tune_drive (ide_drive_t *drive, u8 pio)
-@@ -533,6 +439,46 @@
+@@ -535,6 +441,46 @@
  	return dev->irq;
  }
  
@@ -6918,7 +6918,7 @@
  static void __init init_hwif_pdc202new (ide_hwif_t *hwif)
  {
  	hwif->autodma = 0;
-@@ -542,10 +488,7 @@
+@@ -544,10 +490,7 @@
  	hwif->speedproc = &pdcnew_new_tune_chipset;
  	hwif->resetproc = &pdcnew_new_reset;
  
@@ -6929,7 +6929,7 @@
  
  	hwif->ultra_mask = 0x7f;
  	hwif->mwdma_mask = 0x07;
-@@ -562,6 +505,10 @@
+@@ -564,6 +507,10 @@
  	printk(KERN_DEBUG "%s: %s-pin cable\n",
  		hwif->name, hwif->udma_four ? "80" : "40");
  #endif /* PDC202_DEBUG_CABLE */
@@ -6940,9 +6940,9 @@
  }
  
  static void __init init_dma_pdc202new (ide_hwif_t *hwif, unsigned long dmabase)
-diff -urN kernel-source-2.4.26.orig/drivers/ide/ppc/pmac.c kernel-source-2.4.26/drivers/ide/ppc/pmac.c
---- kernel-source-2.4.26.orig/drivers/ide/ppc/pmac.c	2003-06-13 16:51:34.000000000 +0200
-+++ kernel-source-2.4.26/drivers/ide/ppc/pmac.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/ide/ppc/pmac.c kernel-source-2.4.27-benh/drivers/ide/ppc/pmac.c
+--- kernel-source-2.4.27/drivers/ide/ppc/pmac.c	2003-06-13 16:51:34.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/ide/ppc/pmac.c	2004-09-01 20:56:25.807195768 +0200
 @@ -38,10 +38,8 @@
  #include <asm/pmac_feature.h>
  #include <asm/sections.h>
@@ -7287,9 +7287,9 @@
  		pmif->dma_regs = (volatile struct dbdma_regs*)(pmif->mapbase + 0x1000);
  	} else {
  		if (request_OF_resource(np, 1, " (mac-io IDE DMA)") == NULL) {
-diff -urN kernel-source-2.4.26.orig/drivers/ide/setup-pci.c kernel-source-2.4.26/drivers/ide/setup-pci.c
---- kernel-source-2.4.26.orig/drivers/ide/setup-pci.c	2004-07-20 14:05:56.000000000 +0200
-+++ kernel-source-2.4.26/drivers/ide/setup-pci.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/ide/setup-pci.c kernel-source-2.4.27-benh/drivers/ide/setup-pci.c
+--- kernel-source-2.4.27/drivers/ide/setup-pci.c	2004-08-24 07:53:14.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/ide/setup-pci.c	2004-09-01 20:56:25.809195464 +0200
 @@ -51,6 +51,7 @@
  {
  	int h;
@@ -7320,9 +7320,9 @@
  		hwif = ide_hwifs + h;
  		if (hwif->chipset == ide_unknown)
  			return hwif;	/* pick an unused entry */
-diff -urN kernel-source-2.4.26.orig/drivers/macintosh/macserial.c kernel-source-2.4.26/drivers/macintosh/macserial.c
---- kernel-source-2.4.26.orig/drivers/macintosh/macserial.c	2002-08-03 02:39:44.000000000 +0200
-+++ kernel-source-2.4.26/drivers/macintosh/macserial.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/macintosh/macserial.c kernel-source-2.4.27-benh/drivers/macintosh/macserial.c
+--- kernel-source-2.4.27/drivers/macintosh/macserial.c	2002-08-03 02:39:44.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/macintosh/macserial.c	2004-09-01 20:56:25.968171296 +0200
 @@ -59,7 +59,7 @@
  };
  #endif
@@ -7405,9 +7405,9 @@
  	int	bits = 8;
  	int	parity = 'n';
  	int	cflag = CREAD | HUPCL | CLOCAL;
-diff -urN kernel-source-2.4.26.orig/drivers/macintosh/Makefile kernel-source-2.4.26/drivers/macintosh/Makefile
---- kernel-source-2.4.26.orig/drivers/macintosh/Makefile	2002-11-29 00:53:13.000000000 +0100
-+++ kernel-source-2.4.26/drivers/macintosh/Makefile	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/macintosh/Makefile kernel-source-2.4.27-benh/drivers/macintosh/Makefile
+--- kernel-source-2.4.27/drivers/macintosh/Makefile	2002-11-29 00:53:13.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/macintosh/Makefile	2004-09-01 20:56:25.969171144 +0200
 @@ -35,6 +35,8 @@
  obj-$(CONFIG_INPUT_ADBHID)	+= adbhid.o
  obj-$(CONFIG_PPC_RTC)		+= rtc.o
@@ -7426,10 +7426,10 @@
  # The global Rules.make.
  
  include $(TOPDIR)/Rules.make
-diff -urN kernel-source-2.4.26.orig/drivers/macintosh/nvram.c kernel-source-2.4.26/drivers/macintosh/nvram.c
---- kernel-source-2.4.26.orig/drivers/macintosh/nvram.c	2003-06-13 16:51:34.000000000 +0200
-+++ kernel-source-2.4.26/drivers/macintosh/nvram.c	2004-07-31 18:36:20.000000000 +0200
-@@ -75,8 +75,8 @@
+diff -urN kernel-source-2.4.27/drivers/macintosh/nvram.c kernel-source-2.4.27-benh/drivers/macintosh/nvram.c
+--- kernel-source-2.4.27/drivers/macintosh/nvram.c	2004-08-08 01:26:04.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/macintosh/nvram.c	2004-09-01 20:56:26.047159288 +0200
+@@ -77,8 +77,8 @@
  	unsigned int cmd, unsigned long arg)
  {
  	switch(cmd) {
@@ -7440,7 +7440,7 @@
  			int part, offset;
  			if (copy_from_user(&part,(void*)arg,sizeof(part))!=0)
  				return -EFAULT;
-@@ -87,6 +87,9 @@
+@@ -89,6 +89,9 @@
  				return -EFAULT;
  			break;
  		}
@@ -7450,9 +7450,9 @@
  
  		default:
  			return -EINVAL;
-diff -urN kernel-source-2.4.26.orig/drivers/macintosh/therm_pismo.c kernel-source-2.4.26/drivers/macintosh/therm_pismo.c
---- kernel-source-2.4.26.orig/drivers/macintosh/therm_pismo.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/macintosh/therm_pismo.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/macintosh/therm_pismo.c kernel-source-2.4.27-benh/drivers/macintosh/therm_pismo.c
+--- kernel-source-2.4.27/drivers/macintosh/therm_pismo.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/macintosh/therm_pismo.c	2004-09-01 20:56:26.126147280 +0200
 @@ -0,0 +1,269 @@
 +/*
 + * Device driver for the i2c thermostat found on some laptops
@@ -7723,9 +7723,9 @@
 +
 +module_init(thermostat_init);
 +module_exit(thermostat_exit);
-diff -urN kernel-source-2.4.26.orig/drivers/macintosh/therm_pm72.c kernel-source-2.4.26/drivers/macintosh/therm_pm72.c
---- kernel-source-2.4.26.orig/drivers/macintosh/therm_pm72.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/macintosh/therm_pm72.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/macintosh/therm_pm72.c kernel-source-2.4.27-benh/drivers/macintosh/therm_pm72.c
+--- kernel-source-2.4.27/drivers/macintosh/therm_pm72.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/macintosh/therm_pm72.c	2004-09-01 20:56:26.210134512 +0200
 @@ -0,0 +1,1179 @@
 +/*
 + * Device driver for the thermostats & fan controller of  the
@@ -8906,9 +8906,9 @@
 +MODULE_DESCRIPTION("Driver for Apple's PowerMac7,2 G5 thermal control");
 +MODULE_LICENSE("GPL");
 +
-diff -urN kernel-source-2.4.26.orig/drivers/macintosh/therm_pm72.h kernel-source-2.4.26/drivers/macintosh/therm_pm72.h
---- kernel-source-2.4.26.orig/drivers/macintosh/therm_pm72.h	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/macintosh/therm_pm72.h	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/macintosh/therm_pm72.h kernel-source-2.4.27-benh/drivers/macintosh/therm_pm72.h
+--- kernel-source-2.4.27/drivers/macintosh/therm_pm72.h	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/macintosh/therm_pm72.h	2004-09-01 20:56:26.212134208 +0200
 @@ -0,0 +1,250 @@
 +#ifndef __THERM_PMAC_7_2_H__
 +#define __THERM_PMAC_7_2_H__
@@ -9160,9 +9160,9 @@
 +};
 +
 +#endif /* __THERM_PMAC_7_2_H__ */
-diff -urN kernel-source-2.4.26.orig/drivers/macintosh/therm_windtunnel.c kernel-source-2.4.26/drivers/macintosh/therm_windtunnel.c
---- kernel-source-2.4.26.orig/drivers/macintosh/therm_windtunnel.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/macintosh/therm_windtunnel.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/macintosh/therm_windtunnel.c kernel-source-2.4.27-benh/drivers/macintosh/therm_windtunnel.c
+--- kernel-source-2.4.27/drivers/macintosh/therm_windtunnel.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/macintosh/therm_windtunnel.c	2004-09-01 20:56:26.370110192 +0200
 @@ -0,0 +1,456 @@
 +/* 
 + *   Creation Date: <2003/03/14 20:54:13 samuel>
@@ -9620,9 +9620,9 @@
 +module_init(g4fan_init);
 +module_exit(g4fan_exit);
 +
-diff -urN kernel-source-2.4.26.orig/drivers/macintosh/via-pmu.c kernel-source-2.4.26/drivers/macintosh/via-pmu.c
---- kernel-source-2.4.26.orig/drivers/macintosh/via-pmu.c	2003-08-25 13:44:42.000000000 +0200
-+++ kernel-source-2.4.26/drivers/macintosh/via-pmu.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/macintosh/via-pmu.c kernel-source-2.4.27-benh/drivers/macintosh/via-pmu.c
+--- kernel-source-2.4.27/drivers/macintosh/via-pmu.c	2003-08-25 13:44:42.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/macintosh/via-pmu.c	2004-09-01 20:56:26.455097272 +0200
 @@ -64,6 +64,13 @@
  /* How many iterations between battery polls */
  #define BATTERY_POLLING_COUNT	2
@@ -10411,9 +10411,9 @@
  EXPORT_SYMBOL(pmu_i2c_combined_read);
  EXPORT_SYMBOL(pmu_i2c_stdsub_write);
  EXPORT_SYMBOL(pmu_i2c_simple_read);
-diff -urN kernel-source-2.4.26.orig/drivers/net/irda/irda-usb.c kernel-source-2.4.26/drivers/net/irda/irda-usb.c
---- kernel-source-2.4.26.orig/drivers/net/irda/irda-usb.c	2004-02-18 14:36:31.000000000 +0100
-+++ kernel-source-2.4.26/drivers/net/irda/irda-usb.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/net/irda/irda-usb.c kernel-source-2.4.27-benh/drivers/net/irda/irda-usb.c
+--- kernel-source-2.4.27/drivers/net/irda/irda-usb.c	2004-02-18 14:36:31.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/net/irda/irda-usb.c	2004-09-01 20:56:26.542084048 +0200
 @@ -1386,6 +1386,9 @@
  		WARNING("usb-irda: bad class_descriptor type\n");
  	}
@@ -10424,9 +10424,9 @@
  #ifdef IU_DUMP_CLASS_DESC
  		irda_usb_dump_class_desc(desc);
  #endif	/* IU_DUMP_CLASS_DESC */
-diff -urN kernel-source-2.4.26.orig/drivers/net/Makefile kernel-source-2.4.26/drivers/net/Makefile
---- kernel-source-2.4.26.orig/drivers/net/Makefile	2004-04-14 15:05:30.000000000 +0200
-+++ kernel-source-2.4.26/drivers/net/Makefile	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/net/Makefile kernel-source-2.4.27-benh/drivers/net/Makefile
+--- kernel-source-2.4.27/drivers/net/Makefile	2004-08-08 01:26:04.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/net/Makefile	2004-09-01 20:56:26.544083744 +0200
 @@ -17,7 +17,7 @@
  
  export-objs     :=	8390.o arlan.o aironet4500_core.o aironet4500_card.o \
@@ -10445,9 +10445,9 @@
  
  obj-$(CONFIG_MACE) += mace.o
  obj-$(CONFIG_BMAC) += bmac.o
-diff -urN kernel-source-2.4.26.orig/drivers/net/ne2k-pci.c kernel-source-2.4.26/drivers/net/ne2k-pci.c
---- kernel-source-2.4.26.orig/drivers/net/ne2k-pci.c	2004-04-14 15:05:30.000000000 +0200
-+++ kernel-source-2.4.26/drivers/net/ne2k-pci.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/net/ne2k-pci.c kernel-source-2.4.27-benh/drivers/net/ne2k-pci.c
+--- kernel-source-2.4.27/drivers/net/ne2k-pci.c	2004-04-14 15:05:30.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/net/ne2k-pci.c	2004-09-01 20:56:26.622071888 +0200
 @@ -70,8 +70,6 @@
  #if defined(__powerpc__)
  #define inl_le(addr)  le32_to_cpu(inl(addr))
@@ -10457,10 +10457,10 @@
  #endif
  
  #define PFX DRV_NAME ": "
-diff -urN kernel-source-2.4.26.orig/drivers/net/pcnet32.c kernel-source-2.4.26/drivers/net/pcnet32.c
---- kernel-source-2.4.26.orig/drivers/net/pcnet32.c	2004-04-14 15:05:30.000000000 +0200
-+++ kernel-source-2.4.26/drivers/net/pcnet32.c	2004-07-31 18:36:20.000000000 +0200
-@@ -860,7 +860,7 @@
+diff -urN kernel-source-2.4.27/drivers/net/pcnet32.c kernel-source-2.4.27-benh/drivers/net/pcnet32.c
+--- kernel-source-2.4.27/drivers/net/pcnet32.c	2004-08-08 01:26:05.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/net/pcnet32.c	2004-09-01 20:56:26.781047720 +0200
+@@ -1072,7 +1072,7 @@
  	break;
      case 0x2625:
  	chipname = "PCnet/FAST III 79C973"; /* PCI */
@@ -10469,17 +10469,9 @@
  	break;
      case 0x2626:
  	chipname = "PCnet/Home 79C978"; /* PCI */
-@@ -903,6 +903,7 @@
- 	 
-     if(fset)
-     {
-+	printk(KERN_INFO PFX "Activating Tx error recovery on %s\n", chipname);
- 	a->write_bcr(ioaddr, 18, (a->read_bcr(ioaddr, 18) | 0x0800));
- 	a->write_csr(ioaddr, 80, (a->read_csr(ioaddr, 80) & 0x0C00) | 0x0c00);
- 	dxsuflo = 1;
-diff -urN kernel-source-2.4.26.orig/drivers/net/sungem.c kernel-source-2.4.26/drivers/net/sungem.c
---- kernel-source-2.4.26.orig/drivers/net/sungem.c	2004-04-14 15:05:30.000000000 +0200
-+++ kernel-source-2.4.26/drivers/net/sungem.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/net/sungem.c kernel-source-2.4.27-benh/drivers/net/sungem.c
+--- kernel-source-2.4.27/drivers/net/sungem.c	2004-04-14 15:05:30.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/net/sungem.c	2004-09-01 20:56:26.871034040 +0200
 @@ -63,12 +63,20 @@
  #include <asm/pmac_feature.h>
  #endif
@@ -11742,9 +11734,9 @@
  	pci_set_drvdata(pdev, dev);
  
  	dev->open = gem_open;
-diff -urN kernel-source-2.4.26.orig/drivers/net/sungem.h kernel-source-2.4.26/drivers/net/sungem.h
---- kernel-source-2.4.26.orig/drivers/net/sungem.h	2002-08-03 02:39:44.000000000 +0200
-+++ kernel-source-2.4.26/drivers/net/sungem.h	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/net/sungem.h kernel-source-2.4.27-benh/drivers/net/sungem.h
+--- kernel-source-2.4.27/drivers/net/sungem.h	2002-08-03 02:39:44.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/net/sungem.h	2004-09-01 20:56:26.951021880 +0200
 @@ -28,6 +28,9 @@
  #define GREG_CFG_IBURST		0x00000001	/* Infinite Burst		*/
  #define GREG_CFG_TXDMALIM	0x0000003e	/* TX DMA grant limit		*/
@@ -11852,9 +11844,9 @@
  #define ALIGNED_RX_SKB_ADDR(addr) \
          ((((unsigned long)(addr) + (64UL - 1UL)) & ~(64UL - 1UL)) - (unsigned long)(addr))
  static __inline__ struct sk_buff *gem_alloc_skb(int size, int gfp_flags)
-diff -urN kernel-source-2.4.26.orig/drivers/net/sungem_phy.c kernel-source-2.4.26/drivers/net/sungem_phy.c
---- kernel-source-2.4.26.orig/drivers/net/sungem_phy.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/net/sungem_phy.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/net/sungem_phy.c kernel-source-2.4.27-benh/drivers/net/sungem_phy.c
+--- kernel-source-2.4.27/drivers/net/sungem_phy.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/net/sungem_phy.c	2004-09-01 20:56:27.033009416 +0200
 @@ -0,0 +1,867 @@
 +/*
 + * PHY drivers for the sungem ethernet driver.
@@ -12723,9 +12715,9 @@
 +EXPORT_SYMBOL(mii_phy_probe);
 +MODULE_LICENSE("GPL");
 +
-diff -urN kernel-source-2.4.26.orig/drivers/net/sungem_phy.h kernel-source-2.4.26/drivers/net/sungem_phy.h
---- kernel-source-2.4.26.orig/drivers/net/sungem_phy.h	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/net/sungem_phy.h	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/net/sungem_phy.h kernel-source-2.4.27-benh/drivers/net/sungem_phy.h
+--- kernel-source-2.4.27/drivers/net/sungem_phy.h	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/net/sungem_phy.h	2004-09-01 20:56:27.035009112 +0200
 @@ -0,0 +1,116 @@
 +#ifndef __SUNGEM_PHY_H__
 +#define __SUNGEM_PHY_H__
@@ -12843,10 +12835,10 @@
 +#define MII_M1011_PHY_SPEC_STATUS_RESOLVED	0x0800
 +
 +#endif /* __SUNGEM_PHY_H__ */
-diff -urN kernel-source-2.4.26.orig/drivers/net/tulip/tulip_core.c kernel-source-2.4.26/drivers/net/tulip/tulip_core.c
---- kernel-source-2.4.26.orig/drivers/net/tulip/tulip_core.c	2004-04-14 15:05:30.000000000 +0200
-+++ kernel-source-2.4.26/drivers/net/tulip/tulip_core.c	2004-07-31 18:36:20.000000000 +0200
-@@ -476,6 +476,15 @@
+diff -urN kernel-source-2.4.27/drivers/net/tulip/tulip_core.c kernel-source-2.4.27-benh/drivers/net/tulip/tulip_core.c
+--- kernel-source-2.4.27/drivers/net/tulip/tulip_core.c	2004-08-08 01:26:05.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/net/tulip/tulip_core.c	2004-09-01 20:56:27.191985248 +0200
+@@ -477,6 +477,15 @@
  	} else
  		tulip_select_media(dev, 1);
  
@@ -12862,9 +12854,9 @@
  	/* Start the chip's Tx to process setup frame. */
  	tulip_stop_rxtx(tp);
  	barrier();
-diff -urN kernel-source-2.4.26.orig/drivers/pci/pci.c kernel-source-2.4.26/drivers/pci/pci.c
---- kernel-source-2.4.26.orig/drivers/pci/pci.c	2003-11-28 19:26:20.000000000 +0100
-+++ kernel-source-2.4.26/drivers/pci/pci.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/pci/pci.c kernel-source-2.4.27-benh/drivers/pci/pci.c
+--- kernel-source-2.4.27/drivers/pci/pci.c	2004-08-08 01:26:05.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/pci/pci.c	2004-09-01 20:56:27.271973088 +0200
 @@ -28,7 +28,7 @@
  #include <asm/page.h>
  #include <asm/dma.h>	/* isa_dma_bridge_buggy */
@@ -12907,9 +12899,9 @@
  		pci_write_config_word(dev, PCI_STATUS, 0xffff);
  
  		child = pci_add_new_bus(bus, dev, ++max);
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/awacs_defs.h kernel-source-2.4.26/drivers/sound/dmasound/awacs_defs.h
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/awacs_defs.h	2002-02-25 20:38:04.000000000 +0100
-+++ kernel-source-2.4.26/drivers/sound/dmasound/awacs_defs.h	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/awacs_defs.h kernel-source-2.4.27-benh/drivers/sound/dmasound/awacs_defs.h
+--- kernel-source-2.4.27/drivers/sound/dmasound/awacs_defs.h	2002-02-25 20:38:04.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/awacs_defs.h	2004-09-01 20:56:27.272972936 +0200
 @@ -168,8 +168,9 @@
  
  #define RATE_LOW	1	/* HIGH = 48kHz, etc;  LOW = 44.1kHz, etc. */
@@ -12941,9 +12933,9 @@
 +#define I2S_REG_PEAKLEVEL_IN1		0x90
 +
  #endif /* _AWACS_DEFS_H_ */
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/Config.in kernel-source-2.4.26/drivers/sound/dmasound/Config.in
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/Config.in	2002-02-25 20:38:04.000000000 +0100
-+++ kernel-source-2.4.26/drivers/sound/dmasound/Config.in	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/Config.in kernel-source-2.4.27-benh/drivers/sound/dmasound/Config.in
+--- kernel-source-2.4.27/drivers/sound/dmasound/Config.in	2002-02-25 20:38:04.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/Config.in	2004-09-01 20:56:27.350961080 +0200
 @@ -27,13 +27,27 @@
  fi
  
@@ -12973,9 +12965,9 @@
 +   fi
  fi
 -
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/dmasound_awacs.c kernel-source-2.4.26/drivers/sound/dmasound/dmasound_awacs.c
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/dmasound_awacs.c	2002-08-03 02:39:44.000000000 +0200
-+++ kernel-source-2.4.26/drivers/sound/dmasound/dmasound_awacs.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/dmasound_awacs.c kernel-source-2.4.27-benh/drivers/sound/dmasound/dmasound_awacs.c
+--- kernel-source-2.4.27/drivers/sound/dmasound/dmasound_awacs.c	2002-08-03 02:39:44.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/dmasound_awacs.c	2004-09-01 20:56:27.447946336 +0200
 @@ -88,10 +88,14 @@
  
  #include "awacs_defs.h"
@@ -14018,9 +14010,9 @@
 + * c-basic-offset: 8
 + * End:
 + */
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/Makefile kernel-source-2.4.26/drivers/sound/dmasound/Makefile
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/Makefile	2002-02-25 20:38:04.000000000 +0100
-+++ kernel-source-2.4.26/drivers/sound/dmasound/Makefile	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/Makefile kernel-source-2.4.27-benh/drivers/sound/dmasound/Makefile
+--- kernel-source-2.4.27/drivers/sound/dmasound/Makefile	2002-02-25 20:38:04.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/Makefile	2004-09-01 20:56:27.449946032 +0200
 @@ -13,7 +13,8 @@
  
  list-multi := dmasound_pmac.o
@@ -14031,9 +14023,9 @@
  
  obj-$(CONFIG_DMASOUND)        += dmasound_core.o
  obj-$(CONFIG_DMASOUND_ATARI)  += dmasound_atari.o
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/tas3001c.c kernel-source-2.4.26/drivers/sound/dmasound/tas3001c.c
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/tas3001c.c	2002-02-25 20:38:05.000000000 +0100
-+++ kernel-source-2.4.26/drivers/sound/dmasound/tas3001c.c	2004-07-31 18:36:20.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/tas3001c.c kernel-source-2.4.27-benh/drivers/sound/dmasound/tas3001c.c
+--- kernel-source-2.4.27/drivers/sound/dmasound/tas3001c.c	2002-02-25 20:38:05.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/tas3001c.c	2004-09-01 20:56:27.544931592 +0200
 @@ -45,403 +45,854 @@
  #include <linux/types.h>
  #include <linux/i2c.h>
@@ -15145,9 +15137,9 @@
 + * c-basic-offset: 8
 + * End:
 + */
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/tas3001c.h kernel-source-2.4.26/drivers/sound/dmasound/tas3001c.h
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/tas3001c.h	2002-02-25 20:38:05.000000000 +0100
-+++ kernel-source-2.4.26/drivers/sound/dmasound/tas3001c.h	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/tas3001c.h kernel-source-2.4.27-benh/drivers/sound/dmasound/tas3001c.h
+--- kernel-source-2.4.27/drivers/sound/dmasound/tas3001c.h	2002-02-25 20:38:05.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/tas3001c.h	2004-09-01 20:56:27.627918976 +0200
 @@ -9,240 +9,56 @@
   * Written by Christopher C. Chimelis <chris@debian.org>
   */
@@ -15431,9 +15423,9 @@
  
 -#endif /* _tas3001c_h_ */
 +#endif /* _TAS3001C_H_ */
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/tas3001c_tables.c kernel-source-2.4.26/drivers/sound/dmasound/tas3001c_tables.c
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/tas3001c_tables.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/sound/dmasound/tas3001c_tables.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/tas3001c_tables.c kernel-source-2.4.27-benh/drivers/sound/dmasound/tas3001c_tables.c
+--- kernel-source-2.4.27/drivers/sound/dmasound/tas3001c_tables.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/tas3001c_tables.c	2004-09-01 20:56:27.709906512 +0200
 @@ -0,0 +1,375 @@
 +#include "tas_common.h"
 +#include "tas_eq_prefs.h"
@@ -15810,9 +15802,9 @@
 +  &eqp_0f_1_0,
 +  NULL
 +};
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/tas3004.c kernel-source-2.4.26/drivers/sound/dmasound/tas3004.c
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/tas3004.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/sound/dmasound/tas3004.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/tas3004.c kernel-source-2.4.27-benh/drivers/sound/dmasound/tas3004.c
+--- kernel-source-2.4.27/drivers/sound/dmasound/tas3004.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/tas3004.c	2004-09-01 20:56:27.794893592 +0200
 @@ -0,0 +1,1173 @@
 +/*
 + * Driver for the i2c/i2s based TA3004 sound chip used
@@ -16987,9 +16979,9 @@
 + * c-basic-offset: 8
 + * End:
 + */
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/tas3004.h kernel-source-2.4.26/drivers/sound/dmasound/tas3004.h
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/tas3004.h	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/sound/dmasound/tas3004.h	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/tas3004.h kernel-source-2.4.27-benh/drivers/sound/dmasound/tas3004.h
+--- kernel-source-2.4.27/drivers/sound/dmasound/tas3004.h	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/tas3004.h	2004-09-01 20:56:27.795893440 +0200
 @@ -0,0 +1,77 @@
 +/*
 + * Header file for the i2c/i2s based TA3004 sound chip used
@@ -17068,9 +17060,9 @@
 +};
 +
 +#endif /* _TAS3004_H_ */
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/tas3004_tables.c kernel-source-2.4.26/drivers/sound/dmasound/tas3004_tables.c
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/tas3004_tables.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/sound/dmasound/tas3004_tables.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/tas3004_tables.c kernel-source-2.4.27-benh/drivers/sound/dmasound/tas3004_tables.c
+--- kernel-source-2.4.27/drivers/sound/dmasound/tas3004_tables.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/tas3004_tables.c	2004-09-01 20:56:27.879880672 +0200
 @@ -0,0 +1,301 @@
 +#include "tas3004.h"
 +#include "tas_eq_prefs.h"
@@ -17373,9 +17365,9 @@
 +  &eqp_1c_1_0,
 +  NULL
 +};
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/tas_common.c kernel-source-2.4.26/drivers/sound/dmasound/tas_common.c
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/tas_common.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/sound/dmasound/tas_common.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/tas_common.c kernel-source-2.4.27-benh/drivers/sound/dmasound/tas_common.c
+--- kernel-source-2.4.27/drivers/sound/dmasound/tas_common.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/tas_common.c	2004-09-01 20:56:27.961868208 +0200
 @@ -0,0 +1,256 @@
 +#include <linux/version.h>
 +#include <linux/module.h>
@@ -17633,9 +17625,9 @@
 + * c-basic-offset: 8
 + * End:
 + */
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/tas_common.h kernel-source-2.4.26/drivers/sound/dmasound/tas_common.h
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/tas_common.h	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/sound/dmasound/tas_common.h	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/tas_common.h kernel-source-2.4.27-benh/drivers/sound/dmasound/tas_common.h
+--- kernel-source-2.4.27/drivers/sound/dmasound/tas_common.h	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/tas_common.h	2004-09-01 20:56:27.963867904 +0200
 @@ -0,0 +1,284 @@
 +#ifndef _TAS_COMMON_H_
 +#define _TAS_COMMON_H_
@@ -17921,9 +17913,9 @@
 + * c-basic-offset: 8
 + * End:
 + */
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/tas_eq_prefs.h kernel-source-2.4.26/drivers/sound/dmasound/tas_eq_prefs.h
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/tas_eq_prefs.h	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/sound/dmasound/tas_eq_prefs.h	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/tas_eq_prefs.h kernel-source-2.4.27-benh/drivers/sound/dmasound/tas_eq_prefs.h
+--- kernel-source-2.4.27/drivers/sound/dmasound/tas_eq_prefs.h	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/tas_eq_prefs.h	2004-09-01 20:56:28.043855744 +0200
 @@ -0,0 +1,24 @@
 +#ifndef _TAS_EQ_PREFS_H_
 +#define _TAS_EQ_PREFS_H_
@@ -17949,9 +17941,9 @@
 + * c-basic-offset: 8
 + * End:
 + */
-diff -urN kernel-source-2.4.26.orig/drivers/sound/dmasound/tas_ioctl.h kernel-source-2.4.26/drivers/sound/dmasound/tas_ioctl.h
---- kernel-source-2.4.26.orig/drivers/sound/dmasound/tas_ioctl.h	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/sound/dmasound/tas_ioctl.h	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/sound/dmasound/tas_ioctl.h kernel-source-2.4.27-benh/drivers/sound/dmasound/tas_ioctl.h
+--- kernel-source-2.4.27/drivers/sound/dmasound/tas_ioctl.h	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/sound/dmasound/tas_ioctl.h	2004-09-01 20:56:28.123843584 +0200
 @@ -0,0 +1,24 @@
 +#ifndef _TAS_IOCTL_H_
 +#define _TAS_IOCTL_H_
@@ -17977,9 +17969,9 @@
 +#define TAS_READ_DRCE_MAX        _SIOR('t',7,int)
 +
 +#endif
-diff -urN kernel-source-2.4.26.orig/drivers/usb/host/usb-ohci.h kernel-source-2.4.26/drivers/usb/host/usb-ohci.h
---- kernel-source-2.4.26.orig/drivers/usb/host/usb-ohci.h	2004-04-14 15:05:33.000000000 +0200
-+++ kernel-source-2.4.26/drivers/usb/host/usb-ohci.h	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/usb/host/usb-ohci.h kernel-source-2.4.27-benh/drivers/usb/host/usb-ohci.h
+--- kernel-source-2.4.27/drivers/usb/host/usb-ohci.h	2004-04-14 15:05:33.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/usb/host/usb-ohci.h	2004-09-01 20:56:28.125843280 +0200
 @@ -58,7 +58,7 @@
  
  	dma_addr_t dma;
@@ -17998,9 +17990,9 @@
  		0 /* no page-crossing issues */,
  		GFP_KERNEL | OHCI_MEM_FLAGS);
  	if (!ohci->dev_cache)
-diff -urN kernel-source-2.4.26.orig/drivers/usb/storage/scsiglue.c kernel-source-2.4.26/drivers/usb/storage/scsiglue.c
---- kernel-source-2.4.26.orig/drivers/usb/storage/scsiglue.c	2004-04-14 15:05:35.000000000 +0200
-+++ kernel-source-2.4.26/drivers/usb/storage/scsiglue.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/usb/storage/scsiglue.c kernel-source-2.4.27-benh/drivers/usb/storage/scsiglue.c
+--- kernel-source-2.4.27/drivers/usb/storage/scsiglue.c	2004-08-08 01:26:05.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/usb/storage/scsiglue.c	2004-09-01 20:56:28.287818656 +0200
 @@ -75,16 +75,19 @@
  {
  	struct us_data *us;
@@ -18039,9 +18031,9 @@
  	return 0;
  }
  
-diff -urN kernel-source-2.4.26.orig/drivers/video/aty/atyfb_base.c kernel-source-2.4.26/drivers/video/aty/atyfb_base.c
---- kernel-source-2.4.26.orig/drivers/video/aty/atyfb_base.c	2004-02-18 14:36:31.000000000 +0100
-+++ kernel-source-2.4.26/drivers/video/aty/atyfb_base.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/aty/atyfb_base.c kernel-source-2.4.27-benh/drivers/video/aty/atyfb_base.c
+--- kernel-source-2.4.27/drivers/video/aty/atyfb_base.c	2004-02-18 14:36:31.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/video/aty/atyfb_base.c	2004-09-01 20:56:28.374805432 +0200
 @@ -106,7 +106,7 @@
  /*
   * Debug flags.
@@ -18106,9 +18098,9 @@
  #ifdef CONFIG_PMAC_BACKLIGHT
      if ((_machine == _MACH_Pmac) && blank)
          set_backlight_enable(0);
-diff -urN kernel-source-2.4.26.orig/drivers/video/aty/atyfb.h kernel-source-2.4.26/drivers/video/aty/atyfb.h
---- kernel-source-2.4.26.orig/drivers/video/aty/atyfb.h	2003-11-28 19:26:20.000000000 +0100
-+++ kernel-source-2.4.26/drivers/video/aty/atyfb.h	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/aty/atyfb.h kernel-source-2.4.27-benh/drivers/video/aty/atyfb.h
+--- kernel-source-2.4.27/drivers/video/aty/atyfb.h	2003-11-28 19:26:20.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/video/aty/atyfb.h	2004-09-01 20:56:28.375805280 +0200
 @@ -179,6 +179,7 @@
      unsigned char *save_framebuffer;
      unsigned long save_pll[64];
@@ -18117,9 +18109,9 @@
  };
  
  
-diff -urN kernel-source-2.4.26.orig/drivers/video/aty/mach64_cursor.c kernel-source-2.4.26/drivers/video/aty/mach64_cursor.c
---- kernel-source-2.4.26.orig/drivers/video/aty/mach64_cursor.c	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/drivers/video/aty/mach64_cursor.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/aty/mach64_cursor.c kernel-source-2.4.27-benh/drivers/video/aty/mach64_cursor.c
+--- kernel-source-2.4.27/drivers/video/aty/mach64_cursor.c	2003-11-28 19:26:21.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/video/aty/mach64_cursor.c	2004-09-01 20:56:28.456792968 +0200
 @@ -54,7 +54,7 @@
  	const u8 *blue = cursor_color_map;
  	int i;
@@ -18159,9 +18151,9 @@
      return 1;
  }
  
-diff -urN kernel-source-2.4.26.orig/drivers/video/aty128fb.c kernel-source-2.4.26/drivers/video/aty128fb.c
---- kernel-source-2.4.26.orig/drivers/video/aty128fb.c	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/drivers/video/aty128fb.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/aty128fb.c kernel-source-2.4.27-benh/drivers/video/aty128fb.c
+--- kernel-source-2.4.27/drivers/video/aty128fb.c	2003-11-28 19:26:21.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/video/aty128fb.c	2004-09-01 20:56:28.548778984 +0200
 @@ -55,7 +55,7 @@
  #include <linux/ioport.h>
  #include <asm/io.h>
@@ -18335,9 +18327,9 @@
  
  static int aty128fb_ioctl(struct inode *inode, struct file *file, u_int cmd,
  		       u_long arg, int con, struct fb_info *info)
-diff -urN kernel-source-2.4.26.orig/drivers/video/Config.in kernel-source-2.4.26/drivers/video/Config.in
---- kernel-source-2.4.26.orig/drivers/video/Config.in	2004-07-20 14:05:56.000000000 +0200
-+++ kernel-source-2.4.26/drivers/video/Config.in	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/Config.in kernel-source-2.4.27-benh/drivers/video/Config.in
+--- kernel-source-2.4.27/drivers/video/Config.in	2004-08-24 07:53:14.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/video/Config.in	2004-09-01 20:56:28.631766368 +0200
 @@ -73,7 +73,7 @@
        dep_bool '  Apple "valkyrie" display support' CONFIG_FB_VALKYRIE $CONFIG_ALL_PPC
        bool '  Chips 65550 display support' CONFIG_FB_CT65550
@@ -18386,9 +18378,9 @@
  	 define_tristate CONFIG_FBCON_CFB32 y
        else
  	 if [ "$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_ATY" = "m" -o \
-diff -urN kernel-source-2.4.26.orig/drivers/video/imsttfb.c kernel-source-2.4.26/drivers/video/imsttfb.c
---- kernel-source-2.4.26.orig/drivers/video/imsttfb.c	2002-02-25 20:38:07.000000000 +0100
-+++ kernel-source-2.4.26/drivers/video/imsttfb.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/imsttfb.c kernel-source-2.4.27-benh/drivers/video/imsttfb.c
+--- kernel-source-2.4.27/drivers/video/imsttfb.c	2002-02-25 20:38:07.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/video/imsttfb.c	2004-09-01 20:56:28.714753752 +0200
 @@ -444,6 +444,20 @@
  };
  
@@ -18456,9 +18448,9 @@
  			return -ENODEV;
  	}
  
-diff -urN kernel-source-2.4.26.orig/drivers/video/offb.c kernel-source-2.4.26/drivers/video/offb.c
---- kernel-source-2.4.26.orig/drivers/video/offb.c	2002-02-25 20:38:07.000000000 +0100
-+++ kernel-source-2.4.26/drivers/video/offb.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/offb.c kernel-source-2.4.27-benh/drivers/video/offb.c
+--- kernel-source-2.4.27/drivers/video/offb.c	2002-02-25 20:38:07.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/video/offb.c	2004-09-01 20:56:28.716753448 +0200
 @@ -448,6 +448,10 @@
  		unsigned long regbase = dp->addrs[1].address;
  		info->cmap_adr = ioremap(regbase, 0x1FFF);
@@ -18470,9 +18462,9 @@
  	} else if (!strncmp(name, "ATY,", 4)) {
  		/* Hrm... this is bad... any recent ATI not covered
  		 * by the previous cases will get there, while this
-diff -urN kernel-source-2.4.26.orig/drivers/video/radeonfb.c kernel-source-2.4.26/drivers/video/radeonfb.c
---- kernel-source-2.4.26.orig/drivers/video/radeonfb.c	2004-07-20 14:05:56.000000000 +0200
-+++ kernel-source-2.4.26/drivers/video/radeonfb.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/radeonfb.c kernel-source-2.4.27-benh/drivers/video/radeonfb.c
+--- kernel-source-2.4.27/drivers/video/radeonfb.c	2004-08-24 07:53:14.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/video/radeonfb.c	2004-09-01 20:56:28.887727456 +0200
 @@ -208,6 +208,7 @@
  	RADEON_Le,
  	RADEON_Lf,
@@ -18921,9 +18913,9 @@
  	rinfo->init_state.lvds_gen_cntl &= ~LVDS_STATE_MASK;
  	rinfo->init_state.lvds_gen_cntl |= (lvds_gen_cntl & LVDS_STATE_MASK);
  
-diff -urN kernel-source-2.4.26.orig/drivers/video/radeon.h kernel-source-2.4.26/drivers/video/radeon.h
---- kernel-source-2.4.26.orig/drivers/video/radeon.h	2003-08-25 13:44:42.000000000 +0200
-+++ kernel-source-2.4.26/drivers/video/radeon.h	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/radeon.h kernel-source-2.4.27-benh/drivers/video/radeon.h
+--- kernel-source-2.4.27/drivers/video/radeon.h	2003-08-25 13:44:42.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/video/radeon.h	2004-09-01 20:56:28.972714536 +0200
 @@ -469,6 +469,17 @@
  #define BUS_READ_BURST                             0x40000000
  #define BUS_RDY_READ_DLY                           0x80000000
@@ -18971,9 +18963,9 @@
  
  #define GUI_ACTIVE			0x80000000
  
-diff -urN kernel-source-2.4.26.orig/drivers/video/riva/accel.c kernel-source-2.4.26/drivers/video/riva/accel.c
---- kernel-source-2.4.26.orig/drivers/video/riva/accel.c	2003-06-13 16:51:37.000000000 +0200
-+++ kernel-source-2.4.26/drivers/video/riva/accel.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/riva/accel.c kernel-source-2.4.27-benh/drivers/video/riva/accel.c
+--- kernel-source-2.4.27/drivers/video/riva/accel.c	2004-08-08 01:26:05.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/video/riva/accel.c	2004-09-01 20:56:28.974714232 +0200
 @@ -14,6 +14,7 @@
  
  inline void wait_for_idle(struct rivafb_info *rinfo)
@@ -19110,9 +19102,9 @@
  	fontwidthmask:	FONTWIDTHRANGE(4, 16)
  };
  #endif
-diff -urN kernel-source-2.4.26.orig/drivers/video/riva/fbdev.c kernel-source-2.4.26/drivers/video/riva/fbdev.c
---- kernel-source-2.4.26.orig/drivers/video/riva/fbdev.c	2003-06-13 16:51:37.000000000 +0200
-+++ kernel-source-2.4.26/drivers/video/riva/fbdev.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/riva/fbdev.c kernel-source-2.4.27-benh/drivers/video/riva/fbdev.c
+--- kernel-source-2.4.27/drivers/video/riva/fbdev.c	2004-08-08 01:26:05.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/video/riva/fbdev.c	2004-09-01 20:56:29.221676688 +0200
 @@ -55,10 +55,13 @@
  #error This driver requires PCI support.
  #endif
@@ -19379,9 +19371,9 @@
 +		rivafb_default_var = emac_default_var;
 +	}
 +}
+ 
++#define IVAD_CONTRAST_REG	0x00
 +
-+#define IVAD_CONTRAST_REG	0x00
- 
 +static void
 +set_ivad_contrast(u8 contrast)
 +{
@@ -19474,88 +19466,8 @@
  	newmode.crtc[0x4] = Set8Bits (hStart);
  	newmode.crtc[0x5] = SetBitField (hBlankEnd, 5: 5, 7:7)
   		| SetBitField (hEnd, 4: 0, 4:0);
-@@ -950,37 +1101,64 @@
- 	newmode.crtc[0x11] = SetBitField (vEnd, 3: 0, 3:0)
- 		| SetBit (5);
- 	newmode.crtc[0x12] = Set8Bits (vDisplay);
--	newmode.crtc[0x13] = ((width / 8) * ((bpp + 1) / 8)) & 0xFF;
-+	newmode.crtc[0x13] = (width / 8) * ((bpp + 1) / 8);
- 	newmode.crtc[0x15] = Set8Bits (vBlankStart);
- 	newmode.crtc[0x16] = Set8Bits (vBlankEnd);
+@@ -1463,6 +1614,12 @@
  
-+	newmode.ext.screen = SetBitField(hBlankEnd,6:6,4:4)
-+		| SetBitField(vBlankStart,10:10,3:3)
-+		| SetBitField(vStart,10:10,2:2)
-+		| SetBitField(vDisplay,10:10,1:1)
-+		| SetBitField(vTotal,10:10,0:0);
-+	newmode.ext.horiz  = SetBitField(hTotal,8:8,0:0) 
-+		| SetBitField(hDisplay,8:8,1:1)
-+		| SetBitField(hBlankStart,8:8,2:2)
-+		| SetBitField(hStart,8:8,3:3);
-+	newmode.ext.extra  = SetBitField(vTotal,11:11,0:0)
-+		| SetBitField(vDisplay,11:11,2:2)
-+		| SetBitField(vStart,11:11,4:4)
-+		| SetBitField(vBlankStart,11:11,6:6); 
-+
-+	/* CalcStateExt does this already */
-+	/*
- 	newmode.ext.bpp = bpp;
- 	newmode.ext.width = width;
- 	newmode.ext.height = height;
-+	*/
-+	newmode.ext.interlace = 0xff; /* interlace off */
-+
-+	if(rinfo->riva.Architecture >= NV_ARCH_10)
-+		rinfo->riva.CURSOR = (U032 *)(rinfo->fb_base + rinfo->riva.CursorStart);
- 
- 	rinfo->riva.CalcStateExt(&rinfo->riva, &newmode.ext, bpp, width,
--				  hDisplaySize, hDisplay, hStart, hEnd,
--				  hTotal, height, vDisplay, vStart, vEnd,
--				  vTotal, dotClock);
-+				  hDisplaySize, height, dotClock);
- 
- 	newmode.ext.scale = rinfo->riva.PRAMDAC[0x00000848/4] & 0xfff000ff;
--
--	if (rinfo->riva.flatPanel) {
-+	if(rinfo->FlatPanel == 1) {
- 		newmode.ext.pixel |= (1 << 7);
- 		newmode.ext.scale |= (1 << 8);
- 	}
--
--	newmode.ext.vpll2 = rinfo->riva.PRAMDAC[0x00000520/4];
--
--#if defined(__powerpc__)
--	/*
--	 * XXX only Mac cards use second DAC for flat panel
--	 */
--	if (rinfo->riva.flatPanel) {
-+	if(rinfo->SecondCRTC) {
-+		newmode.ext.head  = rinfo->riva.PCRTC0[0x00000860/4] & ~0x00001000;
-+		newmode.ext.head2 = rinfo->riva.PCRTC0[0x00002860/4] | 0x00001000;
-+		newmode.ext.crtcOwner = 3;
- 		newmode.ext.pllsel |= 0x20000800;
- 		newmode.ext.vpll2 = newmode.ext.vpll;
-+	} else if(rinfo->riva.twoHeads) {
-+		newmode.ext.head  =  rinfo->riva.PCRTC0[0x00000860/4] | 0x00001000;
-+		newmode.ext.head2 =  rinfo->riva.PCRTC0[0x00002860/4] & ~0x00001000;
-+		newmode.ext.crtcOwner = 0;
-+		newmode.ext.vpll2 = rinfo->riva.PRAMDAC0[0x00000520/4];
- 	}
--#endif
-+
-+	newmode.ext.cursorConfig = 0x02000100;
-+	
-+	newmode.misc_output &= 0x3f;
-+	if ((video_mode->sync & FB_SYNC_HOR_HIGH_ACT) == 0)
-+		newmode.misc_output |= 0x40;
-+	if ((video_mode->sync & FB_SYNC_VERT_HIGH_ACT) == 0)
-+		newmode.misc_output |= 0x80;
-+		
- 	rinfo->current_state = newmode;
- 	riva_load_state(rinfo, &rinfo->current_state);
- 
-@@ -1463,6 +1641,12 @@
- 
  	accel = v.accel_flags & FB_ACCELF_TEXT;
  
 +	/* Accel seem to not work properly on GeForce4's yet...*/
@@ -19567,7 +19479,7 @@
  	switch (v.bits_per_pixel) {
  #ifdef FBCON_HAS_CFB8
  	case 1 ... 8:
-@@ -1802,6 +1986,13 @@
+@@ -1802,6 +1959,13 @@
  			vesa |= 0xc0;
  			break;
  		}
@@ -19581,7 +19493,7 @@
  	}
  
  	SEQout(rinfo, 0x01, tmp);
-@@ -1877,6 +2068,14 @@
+@@ -1877,6 +2041,14 @@
  
  	riva_set_dispsw(rinfo, disp);
  
@@ -19596,7 +19508,7 @@
  	DPRINTK("EXIT, returning 0\n");
  	return 0;
  
-@@ -1913,18 +2112,36 @@
+@@ -1913,18 +2085,36 @@
  }
  
  #ifdef CONFIG_ALL_PPC
@@ -19637,7 +19549,7 @@
  		return 0;
  }
  #endif /* CONFIG_ALL_PPC */
-@@ -1959,7 +2176,8 @@
+@@ -1959,7 +2149,8 @@
                          rinfo->vAct_high = 1;
  	}
  
@@ -19647,7 +19559,7 @@
  		rinfo->panel_xres, rinfo->panel_yres);
  
  	rinfo->got_dfpinfo = 1;
-@@ -2020,7 +2238,8 @@
+@@ -2020,7 +2211,8 @@
  	if (riva_dfp_parse_EDID(rinfo))
  		riva_update_default_var(rinfo);
  
@@ -19657,7 +19569,7 @@
  }
  
  
-@@ -2049,6 +2268,14 @@
+@@ -2049,6 +2241,14 @@
  	rinfo->drvr_name = rci->name;
  	rinfo->riva.Architecture = rci->arch_rev;
  
@@ -19672,7 +19584,7 @@
  	rinfo->pd = pd;
  	rinfo->base0_region_size = pci_resource_len(pd, 0);
  	rinfo->base1_region_size = pci_resource_len(pd, 1);
-@@ -2065,100 +2292,65 @@
+@@ -2065,100 +2265,65 @@
  	rinfo->ctrl_base_phys = pci_resource_start(rinfo->pd, 0);
  	rinfo->fb_base_phys = pci_resource_start(rinfo->pd, 1);
  
@@ -19797,7 +19709,7 @@
  	}
  
  #ifdef CONFIG_MTRR
-@@ -2215,10 +2407,16 @@
+@@ -2215,10 +2380,16 @@
  	rivafb_exit_cursor(rinfo);
  /* err_out_iounmap_fb: */
  	iounmap(rinfo->fb_base);
@@ -19816,7 +19728,7 @@
  err_out_free_base0:
  	release_mem_region(rinfo->ctrl_base_phys, rinfo->base0_region_size);
  err_out_kfree:
-@@ -2256,6 +2454,11 @@
+@@ -2256,6 +2427,11 @@
  	release_mem_region(board->fb_base_phys,
  			   board->ram_amount);
  
@@ -19828,7 +19740,7 @@
  	kfree(board);
  
  	pci_set_drvdata(pd, NULL);
-@@ -2301,6 +2504,16 @@
+@@ -2301,6 +2477,16 @@
  		} else if (!strncmp(this_opt, "nomtrr", 6)) {
  			nomtrr = 1;
  #endif
@@ -19845,7 +19757,7 @@
  		} else if (!strncmp(this_opt, "nohwcursor", 10)) {
  			nohwcursor = 1;
  		} else
-@@ -2331,9 +2544,13 @@
+@@ -2331,9 +2517,13 @@
  #ifdef MODULE
  	if (font) strncpy(fontname, font, sizeof(fontname)-1);
  #endif
@@ -19859,7 +19771,7 @@
  	return 0;
  }
  
-@@ -2357,6 +2574,11 @@
+@@ -2357,6 +2547,11 @@
  MODULE_PARM_DESC(nohwcursor, "Disables hardware cursor (0 or 1=disabled) (default=0)");
  MODULE_PARM(noblink, "i");
  MODULE_PARM_DESC(noblink, "Disables hardware cursor blinking (0 or 1=disabled) (default=0)");
@@ -19871,16 +19783,2388 @@
  #ifdef CONFIG_MTRR
  MODULE_PARM(nomtrr, "i");
  MODULE_PARM_DESC(nomtrr, "Disables MTRR support (0 or 1=disabled) (default=0)");
-@@ -2364,5 +2586,5 @@
+@@ -2364,5 +2559,5 @@
  #endif /* MODULE */
  
  MODULE_AUTHOR("Ani Joshi, maintainer");
 -MODULE_DESCRIPTION("Framebuffer driver for nVidia Riva 128, TNT, TNT2");
 +MODULE_DESCRIPTION("Framebuffer driver for nVidia Riva 128, TNT, TNT2, and the GeForce series");
  MODULE_LICENSE("GPL");
-diff -urN kernel-source-2.4.26.orig/drivers/video/riva/Makefile kernel-source-2.4.26/drivers/video/riva/Makefile
---- kernel-source-2.4.26.orig/drivers/video/riva/Makefile	2001-02-03 21:48:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/video/riva/Makefile	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/riva/fbdev.c.orig kernel-source-2.4.27-benh/drivers/video/riva/fbdev.c.orig
+--- kernel-source-2.4.27/drivers/video/riva/fbdev.c.orig	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/video/riva/fbdev.c.orig	2004-08-08 01:26:05.000000000 +0200
+@@ -0,0 +1,2368 @@
++/*
++ * linux/drivers/video/riva/fbdev.c
++ *
++ * nVidia RIVA 128/TNT/TNT2/GeForce2/3 fb driver
++ *
++ * Maintained by Ani Joshi <ajoshi@kernel.crashing.org>
++ *
++ * Copyright 1999-2000 Jeff Garzik
++ * Copyright 2000-2003 Ani Joshi
++ *
++ * Contributors:
++ *
++ *	Ani Joshi:  Lots of debugging and cleanup work, really helped
++ *	get the driver going
++ *
++ *	Ferenc Bakonyi:  Bug fixes, cleanup, modularization
++ *
++ *	Jindrich Makovicka:  Accel code help, hw cursor, mtrr
++ *
++ * Initial template from skeletonfb.c, created 28 Dec 1997 by Geert Uytterhoeven
++ * Includes riva_hw.c from nVidia, see copyright below.
++ * KGI code provided the basis for state storage, init, and mode switching.
++ *
++ * This file is subject to the terms and conditions of the GNU General Public
++ * License.  See the file COPYING in the main directory of this archive
++ * for more details.
++ *
++ * Known bugs and issues:
++ *	restoring text mode fails
++ *	doublescan modes are broken
++ *	option 'noaccel' has no effect
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/errno.h>
++#include <linux/string.h>
++#include <linux/mm.h>
++#include <linux/selection.h>
++#include <linux/tty.h>
++#include <linux/slab.h>
++#include <linux/delay.h>
++#include <linux/fb.h>
++#include <linux/init.h>
++#include <linux/pci.h>
++#include <linux/console.h>
++#ifdef CONFIG_MTRR
++#include <asm/mtrr.h>
++#endif
++#include "rivafb.h"
++#include "nvreg.h"
++
++#ifndef CONFIG_PCI		/* sanity check */
++#error This driver requires PCI support.
++#endif
++
++
++
++/* version number of this driver */
++#define RIVAFB_VERSION "0.9.4"
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * various helpful macros and constants
++ *
++ * ------------------------------------------------------------------------- */
++
++#undef RIVAFBDEBUG
++#ifdef RIVAFBDEBUG
++#define DPRINTK(fmt, args...) printk(KERN_DEBUG "%s: " fmt, __FUNCTION__ , ## args)
++#else
++#define DPRINTK(fmt, args...)
++#endif
++
++#ifndef RIVA_NDEBUG
++#define assert(expr) \
++	if(!(expr)) { \
++	printk( "Assertion failed! %s,%s,%s,line=%d\n",\
++	#expr,__FILE__,__FUNCTION__,__LINE__); \
++	BUG(); \
++	}
++#else
++#define assert(expr)
++#endif
++
++#define PFX "rivafb: "
++
++/* macro that allows you to set overflow bits */
++#define SetBitField(value,from,to) SetBF(to,GetBF(value,from))
++#define SetBit(n)		(1<<(n))
++#define Set8Bits(value)		((value)&0xff)
++
++/* HW cursor parameters */
++#define DEFAULT_CURSOR_BLINK_RATE	(40)
++#define CURSOR_HIDE_DELAY		(20)
++#define CURSOR_SHOW_DELAY		(3)
++
++#ifdef __BIG_ENDIAN
++#define CURSOR_COLOR		0xff7f
++#else
++#define CURSOR_COLOR		0x7fff
++#endif
++#define TRANSPARENT_COLOR	0x0000
++#define MAX_CURS		32
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * prototypes
++ *
++ * ------------------------------------------------------------------------- */
++
++static void rivafb_blank(int blank, struct fb_info *info);
++
++extern void riva_setup_accel(struct rivafb_info *rinfo);
++extern inline void wait_for_idle(struct rivafb_info *rinfo);
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * card identification
++ *
++ * ------------------------------------------------------------------------- */
++
++enum riva_chips {
++	CH_RIVA_128 = 0,
++	CH_RIVA_TNT,
++	CH_RIVA_TNT2,
++	CH_RIVA_UTNT2,	/* UTNT2 */
++	CH_RIVA_VTNT2,	/* VTNT2 */
++	CH_RIVA_UVTNT2,	/* VTNT2 */
++	CH_RIVA_ITNT2,	/* ITNT2 */
++	CH_GEFORCE_SDR,
++	CH_GEFORCE_DDR,
++	CH_QUADRO,
++	CH_GEFORCE2_MX,
++	CH_QUADRO2_MXR,
++	CH_GEFORCE2_GTS,
++	CH_GEFORCE2_ULTRA,
++	CH_QUADRO2_PRO,
++	CH_GEFORCE2_GO,
++        CH_GEFORCE3,
++        CH_GEFORCE3_1,
++        CH_GEFORCE3_2,
++        CH_QUADRO_DDC
++};
++
++/* directly indexed by riva_chips enum, above */
++static struct riva_chip_info {
++	const char *name;
++	unsigned arch_rev;
++} riva_chip_info[] __devinitdata = {
++	{ "RIVA-128", NV_ARCH_03 },
++	{ "RIVA-TNT", NV_ARCH_04 },
++	{ "RIVA-TNT2", NV_ARCH_04 },
++	{ "RIVA-UTNT2", NV_ARCH_04 },
++	{ "RIVA-VTNT2", NV_ARCH_04 },
++	{ "RIVA-UVTNT2", NV_ARCH_04 },
++	{ "RIVA-ITNT2", NV_ARCH_04 },
++	{ "GeForce-SDR", NV_ARCH_10},
++	{ "GeForce-DDR", NV_ARCH_10},
++	{ "Quadro", NV_ARCH_10},
++	{ "GeForce2-MX", NV_ARCH_10},
++	{ "Quadro2-MXR", NV_ARCH_10},
++	{ "GeForce2-GTS", NV_ARCH_10},
++	{ "GeForce2-ULTRA", NV_ARCH_10},
++	{ "Quadro2-PRO", NV_ARCH_10},
++        { "GeForce2-Go", NV_ARCH_10},
++        { "GeForce3", NV_ARCH_20}, 
++        { "GeForce3 Ti 200", NV_ARCH_20},
++        { "GeForce3 Ti 500", NV_ARCH_20},
++        { "Quadro DDC", NV_ARCH_20}
++};
++
++static struct pci_device_id rivafb_pci_tbl[] __devinitdata = {
++	{ PCI_VENDOR_ID_NVIDIA_SGS, PCI_DEVICE_ID_NVIDIA_SGS_RIVA128,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_RIVA_128 },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_TNT,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_RIVA_TNT },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_TNT2,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_RIVA_TNT2 },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_UTNT2,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_RIVA_UTNT2 },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_VTNT2,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_RIVA_VTNT2 },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_UVTNT2,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_RIVA_VTNT2 },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_ITNT2,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_RIVA_ITNT2 },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_SDR,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_SDR },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_DDR,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_DDR },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_MX },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX2,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_MX },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO2_MXR,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO2_MXR },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_GTS },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS2,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_GTS },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_ULTRA,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_ULTRA },
++	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO2_PRO,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO2_PRO },
++        { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_GO,
++          PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_GO },
++        { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE3,
++          PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE3 },
++        { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE3_1,
++          PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE3_1 },
++        { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE3_2,
++          PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE3_2 },
++        { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_DDC,
++          PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO_DDC },
++	{ 0, } /* terminate list */
++};
++MODULE_DEVICE_TABLE(pci, rivafb_pci_tbl);
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * framebuffer related structures
++ *
++ * ------------------------------------------------------------------------- */
++
++#ifdef FBCON_HAS_CFB8
++extern struct display_switch fbcon_riva8;
++#endif
++#ifdef FBCON_HAS_CFB16
++extern struct display_switch fbcon_riva16;
++#endif
++#ifdef FBCON_HAS_CFB32
++extern struct display_switch fbcon_riva32;
++#endif
++
++#if 0
++/* describes the state of a Riva board */
++struct rivafb_par {
++	struct riva_regs state;	/* state of hw board */
++	__u32 visual;		/* FB_VISUAL_xxx */
++	unsigned depth;		/* bpp of current mode */
++};
++#endif
++
++struct riva_cursor {
++	int enable;
++	int on;
++	int vbl_cnt;
++	int last_move_delay;
++	int blink_rate;
++	struct {
++		u16 x, y;
++	} pos, size;
++	unsigned short image[MAX_CURS*MAX_CURS];
++	struct timer_list *timer;
++};
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * global variables
++ *
++ * ------------------------------------------------------------------------- */
++
++struct rivafb_info *riva_boards = NULL;
++
++/* command line data, set in rivafb_setup() */
++static char fontname[40] __initdata = { 0 };
++static char noaccel __initdata = 0;
++static char nomove = 0;
++static char nohwcursor __initdata = 0;
++static char noblink = 0;
++#ifdef CONFIG_MTRR
++static char nomtrr __initdata = 0;
++#endif
++
++#ifndef MODULE
++static char *mode_option __initdata = NULL;
++#else
++static char *font = NULL;
++#endif
++
++static struct fb_var_screeninfo rivafb_default_var = {
++	xres:		640,
++	yres:		480,
++	xres_virtual:	640,
++	yres_virtual:	480,
++	xoffset:	0,
++	yoffset:	0,
++	bits_per_pixel:	8,
++	grayscale:	0,
++	red:		{0, 6, 0},
++	green:		{0, 6, 0},
++	blue:		{0, 6, 0},
++	transp:		{0, 0, 0},
++	nonstd:		0,
++	activate:	0,
++	height:		-1,
++	width:		-1,
++	accel_flags:	0,
++	pixclock:	39721,
++	left_margin:	40,
++	right_margin:	24,
++	upper_margin:	32,
++	lower_margin:	11,
++	hsync_len:	96,
++	vsync_len:	2,
++	sync:		0,
++	vmode:		FB_VMODE_NONINTERLACED
++};
++
++/* from GGI */
++static const struct riva_regs reg_template = {
++	{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,	/* ATTR */
++	 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
++	 0x41, 0x01, 0x0F, 0x00, 0x00},
++	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* CRT  */
++	 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
++	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3,	/* 0x10 */
++	 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
++	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 0x20 */
++	 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
++	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 0x30 */
++	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
++	 0x00,							/* 0x40 */
++	 },
++	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,	/* GRA  */
++	 0xFF},
++	{0x03, 0x01, 0x0F, 0x00, 0x0E},				/* SEQ  */
++	0xEB							/* MISC */
++};
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * MMIO access macros
++ *
++ * ------------------------------------------------------------------------- */
++
++static inline void CRTCout(struct rivafb_info *rinfo, unsigned char index,
++			   unsigned char val)
++{
++	VGA_WR08(rinfo->riva.PCIO, 0x3d4, index);
++	VGA_WR08(rinfo->riva.PCIO, 0x3d5, val);
++}
++
++static inline unsigned char CRTCin(struct rivafb_info *rinfo,
++				   unsigned char index)
++{
++	VGA_WR08(rinfo->riva.PCIO, 0x3d4, index);
++	return (VGA_RD08(rinfo->riva.PCIO, 0x3d5));
++}
++
++static inline void GRAout(struct rivafb_info *rinfo, unsigned char index,
++			  unsigned char val)
++{
++	VGA_WR08(rinfo->riva.PVIO, 0x3ce, index);
++	VGA_WR08(rinfo->riva.PVIO, 0x3cf, val);
++}
++
++static inline unsigned char GRAin(struct rivafb_info *rinfo,
++				  unsigned char index)
++{
++	VGA_WR08(rinfo->riva.PVIO, 0x3ce, index);
++	return (VGA_RD08(rinfo->riva.PVIO, 0x3cf));
++}
++
++static inline void SEQout(struct rivafb_info *rinfo, unsigned char index,
++			  unsigned char val)
++{
++	VGA_WR08(rinfo->riva.PVIO, 0x3c4, index);
++	VGA_WR08(rinfo->riva.PVIO, 0x3c5, val);
++}
++
++static inline unsigned char SEQin(struct rivafb_info *rinfo,
++				  unsigned char index)
++{
++	VGA_WR08(rinfo->riva.PVIO, 0x3c4, index);
++	return (VGA_RD08(rinfo->riva.PVIO, 0x3c5));
++}
++
++static inline void ATTRout(struct rivafb_info *rinfo, unsigned char index,
++			   unsigned char val)
++{
++	VGA_WR08(rinfo->riva.PCIO, 0x3c0, index);
++	VGA_WR08(rinfo->riva.PCIO, 0x3c0, val);
++}
++
++static inline unsigned char ATTRin(struct rivafb_info *rinfo,
++				   unsigned char index)
++{
++	VGA_WR08(rinfo->riva.PCIO, 0x3c0, index);
++	return (VGA_RD08(rinfo->riva.PCIO, 0x3c1));
++}
++
++static inline void MISCout(struct rivafb_info *rinfo, unsigned char val)
++{
++	VGA_WR08(rinfo->riva.PVIO, 0x3c2, val);
++}
++
++static inline unsigned char MISCin(struct rivafb_info *rinfo)
++{
++	return (VGA_RD08(rinfo->riva.PVIO, 0x3cc));
++}
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * cursor stuff
++ *
++ * ------------------------------------------------------------------------- */
++
++/**
++ * riva_cursor_timer_handler - blink timer
++ * @dev_addr: pointer to rivafb_info object containing info for current riva board
++ *
++ * DESCRIPTION:
++ * Cursor blink timer.
++ */
++static void riva_cursor_timer_handler(unsigned long dev_addr)
++{
++	struct rivafb_info *rinfo = (struct rivafb_info *)dev_addr;
++
++	if (!rinfo->cursor) return;
++
++	if (!rinfo->cursor->enable) goto out;
++
++	if (rinfo->cursor->last_move_delay < 1000)
++		rinfo->cursor->last_move_delay++;
++
++	if (rinfo->cursor->vbl_cnt && --rinfo->cursor->vbl_cnt == 0) {
++		rinfo->cursor->on ^= 1;
++		if (rinfo->cursor->on)
++			*(rinfo->riva.CURSORPOS) = (rinfo->cursor->pos.x & 0xFFFF)
++						   | (rinfo->cursor->pos.y << 16);
++		rinfo->riva.ShowHideCursor(&rinfo->riva, rinfo->cursor->on);
++		if (!noblink)
++			rinfo->cursor->vbl_cnt = rinfo->cursor->blink_rate;
++	}
++out:
++	rinfo->cursor->timer->expires = jiffies + (HZ / 100);
++	add_timer(rinfo->cursor->timer);
++}
++
++/**
++ * rivafb_init_cursor - allocates cursor structure and starts blink timer
++ * @rinfo: pointer to rivafb_info object containing info for current riva board
++ *
++ * DESCRIPTION:
++ * Allocates cursor structure and starts blink timer.
++ *
++ * RETURNS:
++ * Pointer to allocated cursor structure.
++ *
++ * CALLED FROM:
++ * rivafb_init_one()
++ */
++static struct riva_cursor * __init rivafb_init_cursor(struct rivafb_info *rinfo)
++{
++	struct riva_cursor *cursor;
++
++	cursor = kmalloc(sizeof(struct riva_cursor), GFP_KERNEL);
++	if (!cursor) return 0;
++	memset(cursor, 0, sizeof(*cursor));
++
++	cursor->timer = kmalloc(sizeof(*cursor->timer), GFP_KERNEL);
++	if (!cursor->timer) {
++		kfree(cursor);
++		return 0;
++	}
++	memset(cursor->timer, 0, sizeof(*cursor->timer));
++
++	cursor->blink_rate = DEFAULT_CURSOR_BLINK_RATE;
++
++	init_timer(cursor->timer);
++	cursor->timer->expires = jiffies + (HZ / 100);
++	cursor->timer->data = (unsigned long)rinfo;
++	cursor->timer->function = riva_cursor_timer_handler;
++	add_timer(cursor->timer);
++
++	return cursor;
++}
++
++/**
++ * rivafb_exit_cursor - stops blink timer and releases cursor structure
++ * @rinfo: pointer to rivafb_info object containing info for current riva board
++ *
++ * DESCRIPTION:
++ * Stops blink timer and releases cursor structure.
++ *
++ * CALLED FROM:
++ * rivafb_init_one()
++ * rivafb_remove_one()
++ */
++static void rivafb_exit_cursor(struct rivafb_info *rinfo)
++{
++	struct riva_cursor *cursor = rinfo->cursor;
++
++	if (cursor) {
++		if (cursor->timer) {
++			del_timer_sync(cursor->timer);
++			kfree(cursor->timer);
++		}
++		kfree(cursor);
++		rinfo->cursor = 0;
++	}
++}
++
++/**
++ * rivafb_download_cursor - writes cursor shape into card registers
++ * @rinfo: pointer to rivafb_info object containing info for current riva board
++ *
++ * DESCRIPTION:
++ * Writes cursor shape into card registers.
++ *
++ * CALLED FROM:
++ * riva_load_video_mode()
++ */
++static void rivafb_download_cursor(struct rivafb_info *rinfo)
++{
++	int i, save;
++	int *image;
++	
++	if (!rinfo->cursor) return;
++
++	image = (int *)rinfo->cursor->image;
++	save = rinfo->riva.ShowHideCursor(&rinfo->riva, 0);
++	for (i = 0; i < (MAX_CURS*MAX_CURS*2)/sizeof(int); i++)
++		writel(image[i], rinfo->riva.CURSOR + i);
++
++	rinfo->riva.ShowHideCursor(&rinfo->riva, save);
++}
++
++/**
++ * rivafb_create_cursor - sets rectangular cursor
++ * @rinfo: pointer to rivafb_info object containing info for current riva board
++ * @width: cursor width in pixels
++ * @height: cursor height in pixels
++ *
++ * DESCRIPTION:
++ * Sets rectangular cursor.
++ *
++ * CALLED FROM:
++ * rivafb_set_font()
++ * rivafb_set_var()
++ */
++static void rivafb_create_cursor(struct rivafb_info *rinfo, int width, int height)
++{
++	struct riva_cursor *c = rinfo->cursor;
++	int i, j, idx;
++
++	if (c) {
++		if (width <= 0 || height <= 0) {
++			width = 8;
++			height = 16;
++		}
++		if (width > MAX_CURS) width = MAX_CURS;
++		if (height > MAX_CURS) height = MAX_CURS;
++
++		c->size.x = width;
++		c->size.y = height;
++		
++		idx = 0;
++
++		for (i = 0; i < height; i++) {
++			for (j = 0; j < width; j++,idx++)
++				c->image[idx] = CURSOR_COLOR;
++			for (j = width; j < MAX_CURS; j++,idx++)
++				c->image[idx] = TRANSPARENT_COLOR;
++		}
++		for (i = height; i < MAX_CURS; i++)
++			for (j = 0; j < MAX_CURS; j++,idx++)
++				c->image[idx] = TRANSPARENT_COLOR;
++	}
++}
++
++/**
++ * rivafb_set_font - change font size
++ * @p: pointer to display object
++ * @width: font width in pixels
++ * @height: font height in pixels
++ *
++ * DESCRIPTION:
++ * Callback function called if font settings changed.
++ *
++ * RETURNS:
++ * 1 (Always succeeds.)
++ */
++static int rivafb_set_font(struct display *p, int width, int height)
++{
++	struct rivafb_info *fb = (struct rivafb_info *)(p->fb_info);
++
++	rivafb_create_cursor(fb, width, height);
++	return 1;
++}
++
++/**
++ * rivafb_cursor - cursor handler
++ * @p: pointer to display object
++ * @mode: cursor mode (see CM_*)
++ * @x: cursor x coordinate in characters
++ * @y: cursor y coordinate in characters
++ *
++ * DESCRIPTION:
++ * Cursor handler.
++ */
++static void rivafb_cursor(struct display *p, int mode, int x, int y)
++{
++	struct rivafb_info *rinfo = (struct rivafb_info *)(p->fb_info);
++	struct riva_cursor *c = rinfo->cursor;
++
++	if (!c)	return;
++
++	x = x * fontwidth(p) - p->var.xoffset;
++	y = y * fontheight(p) - p->var.yoffset;
++
++	if (c->pos.x == x && c->pos.y == y && (mode == CM_ERASE) == !c->enable)
++		return;
++
++	c->enable = 0;
++	if (c->on) rinfo->riva.ShowHideCursor(&rinfo->riva, 0);
++		
++	c->pos.x = x;
++	c->pos.y = y;
++
++	switch (mode) {
++	case CM_ERASE:
++		c->on = 0;
++		break;
++	case CM_DRAW:
++	case CM_MOVE:
++		if (c->last_move_delay <= 1) { /* rapid cursor movement */
++			c->vbl_cnt = CURSOR_SHOW_DELAY;
++		} else {
++			*(rinfo->riva.CURSORPOS) = (x & 0xFFFF) | (y << 16);
++			rinfo->riva.ShowHideCursor(&rinfo->riva, 1);
++			if (!noblink) c->vbl_cnt = CURSOR_HIDE_DELAY;
++			c->on = 1;
++		}
++		c->last_move_delay = 0;
++		c->enable = 1;
++		break;
++	}
++}
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * general utility functions
++ *
++ * ------------------------------------------------------------------------- */
++
++/**
++ * riva_set_dispsw - sets dispsw
++ * @rinfo: pointer to internal driver struct for a given Riva card
++ * @disp: pointer to display object
++ *
++ * DESCRIPTION:
++ * Sets up console low level operations depending on the current? color depth
++ * of the display.
++ *
++ * CALLED FROM:
++ * rivafb_set_var()
++ * rivafb_switch()
++ * riva_init_disp()
++ */
++static void riva_set_dispsw(struct rivafb_info *rinfo, struct display *disp)
++{
++	int accel = disp->var.accel_flags & FB_ACCELF_TEXT;
++
++	DPRINTK("ENTER\n");
++
++	assert(rinfo != NULL);
++
++	disp->dispsw_data = NULL;
++
++	disp->screen_base = rinfo->fb_base;
++	disp->type = FB_TYPE_PACKED_PIXELS;
++	disp->type_aux = 0;
++	disp->ypanstep = 1;
++	disp->ywrapstep = 0;
++	disp->can_soft_blank = 1;
++	disp->inverse = 0;
++
++	switch (disp->var.bits_per_pixel) {
++#ifdef FBCON_HAS_CFB8
++	case 8:
++		rinfo->dispsw = accel ? fbcon_riva8 : fbcon_cfb8;
++		disp->dispsw = &rinfo->dispsw;
++		disp->line_length = disp->var.xres_virtual;
++		disp->visual = FB_VISUAL_PSEUDOCOLOR;
++		break;
++#endif
++#ifdef FBCON_HAS_CFB16
++	case 16:
++		rinfo->dispsw = accel ? fbcon_riva16 : fbcon_cfb16;
++		disp->dispsw_data = &rinfo->con_cmap.cfb16;
++		disp->dispsw = &rinfo->dispsw;
++		disp->line_length = disp->var.xres_virtual * 2;
++		disp->visual = FB_VISUAL_DIRECTCOLOR;
++		break;
++#endif
++#ifdef FBCON_HAS_CFB32
++	case 32:
++		rinfo->dispsw = accel ? fbcon_riva32 : fbcon_cfb32;
++		disp->dispsw_data = rinfo->con_cmap.cfb32;
++		disp->dispsw = &rinfo->dispsw;
++		disp->line_length = disp->var.xres_virtual * 4;
++		disp->visual = FB_VISUAL_DIRECTCOLOR;
++		break;
++#endif
++	default:
++		DPRINTK("Setting fbcon_dummy renderer\n");
++		rinfo->dispsw = fbcon_dummy;
++		disp->dispsw = &rinfo->dispsw;
++	}
++
++	/* FIXME: verify that the above code sets dsp->* fields correctly */
++
++	if (rinfo->cursor) {
++		rinfo->dispsw.cursor = rivafb_cursor;
++		rinfo->dispsw.set_font = rivafb_set_font;
++	}
++
++	DPRINTK("EXIT\n");
++}
++
++/**
++ * riva_wclut - set CLUT entry
++ * @chip: pointer to RIVA_HW_INST object
++ * @regnum: register number
++ * @red: red component
++ * @green: green component
++ * @blue: blue component
++ *
++ * DESCRIPTION:
++ * Sets color register @regnum.
++ *
++ * CALLED FROM:
++ * riva_setcolreg()
++ */
++static void riva_wclut(RIVA_HW_INST *chip,
++		       unsigned char regnum, unsigned char red,
++		       unsigned char green, unsigned char blue)
++{
++	VGA_WR08(chip->PDIO, 0x3c8, regnum);
++	VGA_WR08(chip->PDIO, 0x3c9, red);
++	VGA_WR08(chip->PDIO, 0x3c9, green);
++	VGA_WR08(chip->PDIO, 0x3c9, blue);
++}
++
++/**
++ * riva_save_state - saves current chip state
++ * @rinfo: pointer to rivafb_info object containing info for current riva board
++ * @regs: pointer to riva_regs object
++ *
++ * DESCRIPTION:
++ * Saves current chip state to @regs.
++ *
++ * CALLED FROM:
++ * rivafb_init_one()
++ */
++/* from GGI */
++static void riva_save_state(struct rivafb_info *rinfo, struct riva_regs *regs)
++{
++	int i;
++
++	rinfo->riva.LockUnlock(&rinfo->riva, 0);
++
++	rinfo->riva.UnloadStateExt(&rinfo->riva, &regs->ext);
++
++	regs->misc_output = MISCin(rinfo);
++
++	for (i = 0; i < NUM_CRT_REGS; i++) {
++		regs->crtc[i] = CRTCin(rinfo, i);
++	}
++
++	for (i = 0; i < NUM_ATC_REGS; i++) {
++		regs->attr[i] = ATTRin(rinfo, i);
++	}
++
++	for (i = 0; i < NUM_GRC_REGS; i++) {
++		regs->gra[i] = GRAin(rinfo, i);
++	}
++
++	for (i = 0; i < NUM_SEQ_REGS; i++) {
++		regs->seq[i] = SEQin(rinfo, i);
++	}
++}
++
++/**
++ * riva_load_state - loads current chip state
++ * @rinfo: pointer to rivafb_info object containing info for current riva board
++ * @regs: pointer to riva_regs object
++ *
++ * DESCRIPTION:
++ * Loads chip state from @regs.
++ *
++ * CALLED FROM:
++ * riva_load_video_mode()
++ * rivafb_init_one()
++ * rivafb_remove_one()
++ */
++/* from GGI */
++static void riva_load_state(struct rivafb_info *rinfo, struct riva_regs *regs)
++{
++	int i;
++	RIVA_HW_STATE *state = &regs->ext;
++
++	CRTCout(rinfo, 0x11, 0x00);
++
++	rinfo->riva.LockUnlock(&rinfo->riva, 0);
++
++	rinfo->riva.LoadStateExt(&rinfo->riva, state);
++
++	MISCout(rinfo, regs->misc_output);
++
++	for (i = 0; i < NUM_CRT_REGS; i++) {
++		switch (i) {
++		case 0x19:
++		case 0x20 ... 0x40:
++			break;
++		default:
++			CRTCout(rinfo, i, regs->crtc[i]);
++		}
++	}
++
++	for (i = 0; i < NUM_ATC_REGS; i++) {
++		ATTRout(rinfo, i, regs->attr[i]);
++	}
++
++	for (i = 0; i < NUM_GRC_REGS; i++) {
++		GRAout(rinfo, i, regs->gra[i]);
++	}
++
++	for (i = 0; i < NUM_SEQ_REGS; i++) {
++		SEQout(rinfo, i, regs->seq[i]);
++	}
++}
++
++/**
++ * riva_load_video_mode - calculate timings
++ * @rinfo: pointer to rivafb_info object containing info for current riva board
++ * @video_mode: video mode to set
++ *
++ * DESCRIPTION:
++ * Calculate some timings and then send em off to riva_load_state().
++ *
++ * CALLED FROM:
++ * rivafb_set_var()
++ */
++static void riva_load_video_mode(struct rivafb_info *rinfo,
++				 struct fb_var_screeninfo *video_mode)
++{
++	struct riva_regs newmode;
++	int bpp, width, hDisplaySize, hDisplay, hStart,
++	    hEnd, hTotal, height, vDisplay, vStart, vEnd, vTotal, dotClock;
++	int hBlankStart, hBlankEnd, vBlankStart, vBlankEnd;
++
++	/* time to calculate */
++
++	rivafb_blank(1, (struct fb_info *)rinfo);
++
++	bpp = video_mode->bits_per_pixel;
++	if (bpp == 16 && video_mode->green.length == 5)
++		bpp = 15;
++	width = video_mode->xres_virtual;
++	hDisplaySize = video_mode->xres;
++	hDisplay = (hDisplaySize / 8) - 1;
++	hStart = (hDisplaySize + video_mode->right_margin) / 8 + 2;
++	hEnd = (hDisplaySize + video_mode->right_margin +
++		video_mode->hsync_len) / 8 - 1;
++	hTotal = (hDisplaySize + video_mode->right_margin +
++		  video_mode->hsync_len + video_mode->left_margin) / 8 - 1;
++	hBlankStart = hDisplay;
++	hBlankEnd = hTotal;
++	height = video_mode->yres_virtual;
++	vDisplay = video_mode->yres - 1;
++	vStart = video_mode->yres + video_mode->lower_margin - 1;
++	vEnd = video_mode->yres + video_mode->lower_margin +
++	       video_mode->vsync_len - 1;
++	vTotal = video_mode->yres + video_mode->lower_margin +
++		 video_mode->vsync_len + video_mode->upper_margin + 2;
++	vBlankStart = vDisplay;
++	vBlankEnd = vTotal;
++	dotClock = 1000000000 / video_mode->pixclock;
++
++	memcpy(&newmode, &reg_template, sizeof(struct riva_regs));
++
++	newmode.ext.screen = SetBitField(hBlankEnd,6:6,4:4)
++                  | SetBitField(vBlankStart,10:10,3:3)
++                  | SetBitField(vStart,10:10,2:2)
++                  | SetBitField(vDisplay,10:10,1:1)
++                  | SetBitField(vTotal,10:10,0:0);
++    
++    	newmode.ext.horiz  = SetBitField(hTotal,8:8,0:0)
++                  | SetBitField(hDisplay,8:8,1:1)
++                  | SetBitField(hBlankStart,8:8,2:2)
++                  | SetBitField(hStart,8:8,3:3);
++
++    	newmode.ext.extra  = SetBitField(vTotal,11:11,0:0)
++                    | SetBitField(vDisplay,11:11,2:2)
++                    | SetBitField(vStart,11:11,4:4)
++                    | SetBitField(vBlankStart,11:11,6:6);
++
++	if (rinfo->riva.flatPanel) {
++		vStart = vTotal - 3;
++		vEnd = vTotal - 2;
++		vBlankStart = vStart;
++		hStart = hTotal - 3;
++		hEnd = hTotal - 2;
++		hBlankEnd = hTotal + 4;
++	}
++
++	newmode.crtc[0x0] = Set8Bits (hTotal - 4);
++	newmode.crtc[0x1] = Set8Bits (hDisplay);
++	newmode.crtc[0x2] = Set8Bits (hBlankStart);
++	newmode.crtc[0x3] = SetBitField(hBlankEnd,4:0,4:0)
++                | SetBit(7);
++	newmode.crtc[0x4] = Set8Bits (hStart);
++	newmode.crtc[0x5] = SetBitField (hBlankEnd, 5: 5, 7:7)
++ 		| SetBitField (hEnd, 4: 0, 4:0);
++	newmode.crtc[0x6] = SetBitField (vTotal, 7: 0, 7:0);
++	newmode.crtc[0x7] = SetBitField (vTotal, 8: 8, 0:0)
++		| SetBitField (vDisplay, 8: 8, 1:1)
++		| SetBitField (vStart, 8: 8, 2:2)
++		| SetBitField (vBlankStart, 8: 8, 3:3)
++		| SetBit (4)
++		| SetBitField (vTotal, 9: 9, 5:5)
++		| SetBitField (vDisplay, 9: 9, 6:6)
++		| SetBitField (vStart, 9: 9, 7:7);
++	newmode.crtc[0x9] = SetBitField (vBlankStart, 9: 9, 5:5)
++		| SetBit (6);
++	newmode.crtc[0x10] = Set8Bits (vStart);
++	newmode.crtc[0x11] = SetBitField (vEnd, 3: 0, 3:0)
++		| SetBit (5);
++	newmode.crtc[0x12] = Set8Bits (vDisplay);
++	newmode.crtc[0x13] = ((width / 8) * ((bpp + 1) / 8)) & 0xFF;
++	newmode.crtc[0x15] = Set8Bits (vBlankStart);
++	newmode.crtc[0x16] = Set8Bits (vBlankEnd + 1);
++
++	newmode.ext.bpp = bpp;
++	newmode.ext.width = width;
++	newmode.ext.height = height;
++
++	rinfo->riva.CalcStateExt(&rinfo->riva, &newmode.ext, bpp, width,
++				  hDisplaySize, hDisplay, hStart, hEnd,
++				  hTotal, height, vDisplay, vStart, vEnd,
++				  vTotal, dotClock);
++
++	newmode.ext.scale = rinfo->riva.PRAMDAC[0x00000848/4] & 0xfff000ff;
++
++	if (rinfo->riva.flatPanel) {
++		newmode.ext.pixel |= (1 << 7);
++		newmode.ext.scale |= (1 << 8);
++	}
++
++	newmode.ext.vpll2 = rinfo->riva.PRAMDAC[0x00000520/4];
++
++#if defined(__powerpc__)
++	/*
++	 * XXX only Mac cards use second DAC for flat panel
++	 */
++	if (rinfo->riva.flatPanel) {
++		newmode.ext.pllsel |= 0x20000800;
++		newmode.ext.vpll2 = newmode.ext.vpll;
++	}
++#endif
++	rinfo->current_state = newmode;
++	riva_load_state(rinfo, &rinfo->current_state);
++
++	rinfo->riva.LockUnlock(&rinfo->riva, 0); /* important for HW cursor */
++	rivafb_download_cursor(rinfo);
++
++	rivafb_blank(0, (struct fb_info *)rinfo);
++}
++
++/**
++ * riva_board_list_add - maintains board list
++ * @board_list: root node of list of boards
++ * @new_node: new node to be added
++ *
++ * DESCRIPTION:
++ * Adds @new_node to the list referenced by @board_list.
++ *
++ * RETURNS:
++ * New root node
++ *
++ * CALLED FROM:
++ * rivafb_init_one()
++ */
++static struct rivafb_info *riva_board_list_add(struct rivafb_info *board_list,
++					       struct rivafb_info *new_node)
++{
++	struct rivafb_info *i_p = board_list;
++
++	new_node->next = NULL;
++
++	if (board_list == NULL)
++		return new_node;
++
++	while (i_p->next != NULL)
++		i_p = i_p->next;
++	i_p->next = new_node;
++
++	return board_list;
++}
++
++/**
++ * riva_board_list_del - maintains board list
++ * @board_list: root node of list of boards
++ * @del_node: node to be removed
++ *
++ * DESCRIPTION:
++ * Removes @del_node from the list referenced by @board_list.
++ *
++ * RETURNS:
++ * New root node
++ *
++ * CALLED FROM:
++ * rivafb_remove_one()
++ */
++static struct rivafb_info *riva_board_list_del(struct rivafb_info *board_list,
++					       struct rivafb_info *del_node)
++{
++	struct rivafb_info *i_p = board_list;
++
++	if (board_list == del_node)
++		return del_node->next;
++
++	while (i_p->next != del_node)
++		i_p = i_p->next;
++	i_p->next = del_node->next;
++
++	return board_list;
++}
++
++/**
++ * rivafb_do_maximize - 
++ * @rinfo: pointer to rivafb_info object containing info for current riva board
++ * @var:
++ * @v:
++ * @nom:
++ * @den:
++ *
++ * DESCRIPTION:
++ * .
++ *
++ * RETURNS:
++ * -EINVAL on failure, 0 on success
++ * 
++ *
++ * CALLED FROM:
++ * rivafb_set_var()
++ */
++static int rivafb_do_maximize(struct rivafb_info *rinfo,
++			      struct fb_var_screeninfo *var,
++			      struct fb_var_screeninfo *v,
++			      int nom, int den)
++{
++	static struct {
++		int xres, yres;
++	} modes[] = {
++		{1600, 1280},
++		{1280, 1024},
++		{1024, 768},
++		{800, 600},
++		{640, 480},
++		{-1, -1}
++	};
++	int i;
++
++	/* use highest possible virtual resolution */
++	if (v->xres_virtual == -1 && v->yres_virtual == -1) {
++		printk(KERN_WARNING PFX
++		       "using maximum available virtual resolution\n");
++		for (i = 0; modes[i].xres != -1; i++) {
++			if (modes[i].xres * nom / den * modes[i].yres <
++			    rinfo->ram_amount / 2)
++				break;
++		}
++		if (modes[i].xres == -1) {
++			printk(KERN_ERR PFX
++			       "could not find a virtual resolution that fits into video memory!!\n");
++			DPRINTK("EXIT - EINVAL error\n");
++			return -EINVAL;
++		}
++		v->xres_virtual = modes[i].xres;
++		v->yres_virtual = modes[i].yres;
++
++		printk(KERN_INFO PFX
++		       "virtual resolution set to maximum of %dx%d\n",
++		       v->xres_virtual, v->yres_virtual);
++	} else if (v->xres_virtual == -1) {
++		v->xres_virtual = (rinfo->ram_amount * den /
++			(nom * v->yres_virtual * 2)) & ~15;
++		printk(KERN_WARNING PFX
++		       "setting virtual X resolution to %d\n", v->xres_virtual);
++	} else if (v->yres_virtual == -1) {
++		v->xres_virtual = (v->xres_virtual + 15) & ~15;
++		v->yres_virtual = rinfo->ram_amount * den /
++			(nom * v->xres_virtual * 2);
++		printk(KERN_WARNING PFX
++		       "setting virtual Y resolution to %d\n", v->yres_virtual);
++	} else {
++		v->xres_virtual = (v->xres_virtual + 15) & ~15;
++		if (v->xres_virtual * nom / den * v->yres_virtual > rinfo->ram_amount) {
++			printk(KERN_ERR PFX
++			       "mode %dx%dx%d rejected...resolution too high to fit into video memory!\n",
++			       var->xres, var->yres, var->bits_per_pixel);
++			DPRINTK("EXIT - EINVAL error\n");
++			return -EINVAL;
++		}
++	}
++	
++	if (v->xres_virtual * nom / den >= 8192) {
++		printk(KERN_WARNING PFX
++		       "virtual X resolution (%d) is too high, lowering to %d\n",
++		       v->xres_virtual, 8192 * den / nom - 16);
++		v->xres_virtual = 8192 * den / nom - 16;
++	}
++	
++	if (v->xres_virtual < v->xres) {
++		printk(KERN_ERR PFX
++		       "virtual X resolution (%d) is smaller than real\n", v->xres_virtual);
++		return -EINVAL;
++	}
++
++	if (v->yres_virtual < v->yres) {
++		printk(KERN_ERR PFX
++		       "virtual Y resolution (%d) is smaller than real\n", v->yres_virtual);
++		return -EINVAL;
++	}
++	
++	return 0;
++}
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * internal fb_ops helper functions
++ *
++ * ------------------------------------------------------------------------- */
++
++/**
++ * riva_get_cmap_len - query current color map length
++ * @var: standard kernel fb changeable data
++ *
++ * DESCRIPTION:
++ * Get current color map length.
++ *
++ * RETURNS:
++ * Length of color map
++ *
++ * CALLED FROM:
++ * riva_getcolreg()
++ * riva_setcolreg()
++ * rivafb_get_cmap()
++ * rivafb_set_cmap()
++ */
++static int riva_get_cmap_len(const struct fb_var_screeninfo *var)
++{
++	int rc = 16;		/* reasonable default */
++
++	assert(var != NULL);
++
++	switch (var->bits_per_pixel) {
++#ifdef FBCON_HAS_CFB8
++	case 8:
++		rc = 256;	/* pseudocolor... 256 entries HW palette */
++		break;
++#endif
++#ifdef FBCON_HAS_CFB16
++	case 15:
++		rc = 15;	/* fix for 15 bpp depths on Riva 128 based cards */
++		break;
++	case 16:
++		rc = 16;	/* directcolor... 16 entries SW palette */
++		break;		/* Mystique: truecolor, 16 entries SW palette, HW palette hardwired into 1:1 mapping */
++#endif
++#ifdef FBCON_HAS_CFB32
++	case 32:
++		rc = 16;	/* directcolor... 16 entries SW palette */
++		break;		/* Mystique: truecolor, 16 entries SW palette, HW palette hardwired into 1:1 mapping */
++#endif
++	default:
++		/* should not occur */
++		break;
++	}
++
++	return rc;
++}
++
++/**
++ * riva_getcolreg
++ * @regno: register index
++ * @red: red component
++ * @green: green component
++ * @blue: blue component
++ * @transp: transparency
++ * @info: pointer to rivafb_info object containing info for current riva board
++ *
++ * DESCRIPTION:
++ * Read a single color register and split it into colors/transparent.
++ * The return values must have a 16 bit magnitude.
++ *
++ * RETURNS:
++ * Return != 0 for invalid regno.
++ *
++ * CALLED FROM:
++ * rivafb_get_cmap()
++ * rivafb_switch()
++ * fbcmap.c:fb_get_cmap()
++ *	fbgen.c:fbgen_get_cmap()
++ *	fbgen.c:fbgen_switch()
++ */
++static int riva_getcolreg(unsigned regno, unsigned *red, unsigned *green,
++			  unsigned *blue, unsigned *transp,
++			  struct fb_info *info)
++{
++	struct rivafb_info *rivainfo = (struct rivafb_info *)info;
++
++	if (regno >= riva_get_cmap_len(&rivainfo->currcon_display->var))
++		return 1;
++
++	*red = rivainfo->palette[regno].red;
++	*green = rivainfo->palette[regno].green;
++	*blue = rivainfo->palette[regno].blue;
++	*transp = 0;
++
++	return 0;
++}
++
++/**
++ * riva_setcolreg
++ * @regno: register index
++ * @red: red component
++ * @green: green component
++ * @blue: blue component
++ * @transp: transparency
++ * @info: pointer to rivafb_info object containing info for current riva board
++ *
++ * DESCRIPTION:
++ * Set a single color register. The values supplied have a 16 bit
++ * magnitude.
++ *
++ * RETURNS:
++ * Return != 0 for invalid regno.
++ *
++ * CALLED FROM:
++ * rivafb_set_cmap()
++ * fbcmap.c:fb_set_cmap()
++ *	fbgen.c:fbgen_get_cmap()
++ *	fbgen.c:fbgen_install_cmap()
++ *		fbgen.c:fbgen_set_var()
++ *		fbgen.c:fbgen_switch()
++ *		fbgen.c:fbgen_blank()
++ *	fbgen.c:fbgen_blank()
++ */
++static int riva_setcolreg(unsigned regno, unsigned red, unsigned green,
++			  unsigned blue, unsigned transp,
++			  struct fb_info *info)
++{
++	struct rivafb_info *rivainfo = (struct rivafb_info *)info;
++	RIVA_HW_INST *chip = &rivainfo->riva;
++	struct display *p;
++
++	DPRINTK("ENTER\n");
++
++	assert(rivainfo != NULL);
++	assert(rivainfo->currcon_display != NULL);
++
++	p = rivainfo->currcon_display;
++
++	if (regno >= riva_get_cmap_len(&p->var))
++		return -EINVAL;
++
++	rivainfo->palette[regno].red = red;
++	rivainfo->palette[regno].green = green;
++	rivainfo->palette[regno].blue = blue;
++
++	if (p->var.grayscale) {
++		/* gray = 0.30*R + 0.59*G + 0.11*B */
++		red = green = blue =
++		    (red * 77 + green * 151 + blue * 28) >> 8;
++	}
++
++	switch (p->var.bits_per_pixel) {
++#ifdef FBCON_HAS_CFB8
++	case 8:
++		/* "transparent" stuff is completely ignored. */
++		riva_wclut(chip, regno, red >> 8, green >> 8, blue >> 8);
++		break;
++#endif /* FBCON_HAS_CFB8 */
++#ifdef FBCON_HAS_CFB16
++	case 16:
++		assert(regno < 16);
++		if (p->var.green.length == 5) {
++			/* 0rrrrrgg gggbbbbb */
++			rivainfo->con_cmap.cfb16[regno] =
++			    ((red & 0xf800) >> 1) |
++			    ((green & 0xf800) >> 6) | ((blue & 0xf800) >> 11);
++		} else {
++			/* rrrrrggg gggbbbbb */
++			rivainfo->con_cmap.cfb16[regno] =
++			    ((red & 0xf800) >> 0) |
++			    ((green & 0xf800) >> 5) | ((blue & 0xf800) >> 11);
++		}
++		break;
++#endif /* FBCON_HAS_CFB16 */
++#ifdef FBCON_HAS_CFB32
++	case 32:
++		assert(regno < 16);
++		rivainfo->con_cmap.cfb32[regno] =
++		    ((red & 0xff00) << 8) |
++		    ((green & 0xff00)) | ((blue & 0xff00) >> 8);
++		break;
++#endif /* FBCON_HAS_CFB32 */
++	default:
++		/* do nothing */
++		break;
++	}
++
++	return 0;
++}
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * framebuffer operations
++ *
++ * ------------------------------------------------------------------------- */
++
++static int rivafb_get_fix(struct fb_fix_screeninfo *fix, int con,
++			  struct fb_info *info)
++{
++	struct rivafb_info *rivainfo = (struct rivafb_info *)info;
++	struct display *p;
++
++	DPRINTK("ENTER\n");
++
++	assert(fix != NULL);
++	assert(info != NULL);
++	assert(rivainfo->drvr_name && rivainfo->drvr_name[0]);
++	assert(rivainfo->fb_base_phys > 0);
++	assert(rivainfo->ram_amount > 0);
++
++	p = (con < 0) ? rivainfo->info.disp : &fb_display[con];
++
++	memset(fix, 0, sizeof(struct fb_fix_screeninfo));
++	sprintf(fix->id, "nVidia %s", rivainfo->drvr_name);
++
++	fix->type = p->type;
++	fix->type_aux = p->type_aux;
++	fix->visual = p->visual;
++
++	fix->xpanstep = 1;
++	fix->ypanstep = 1;
++	fix->ywrapstep = 0;	/* FIXME: no ywrap for now */
++
++	fix->line_length = p->line_length;
++
++	fix->mmio_start = rivainfo->ctrl_base_phys;
++	fix->mmio_len = rivainfo->base0_region_size;
++	fix->smem_start = rivainfo->fb_base_phys;
++	fix->smem_len = rivainfo->ram_amount;
++
++	switch (rivainfo->riva.Architecture) {
++	case NV_ARCH_03:
++		fix->accel = FB_ACCEL_NV3;
++		break;
++	case NV_ARCH_04:	/* riva_hw.c now doesn't distinguish between TNT & TNT2 */
++		fix->accel = FB_ACCEL_NV4;
++		break;
++	case NV_ARCH_10:	/* FIXME: ID for GeForce */
++	case NV_ARCH_20:
++		fix->accel = FB_ACCEL_NV4;
++		break;
++
++	}
++
++	DPRINTK("EXIT, returning 0\n");
++
++	return 0;
++}
++
++static int rivafb_get_var(struct fb_var_screeninfo *var, int con,
++			  struct fb_info *info)
++{
++	struct rivafb_info *rivainfo = (struct rivafb_info *)info;
++
++	DPRINTK("ENTER\n");
++
++	assert(info != NULL);
++	assert(var != NULL);
++
++	*var = (con < 0) ? rivainfo->disp.var : fb_display[con].var;
++
++	DPRINTK("EXIT, returning 0\n");
++
++	return 0;
++}
++
++static int rivafb_set_var(struct fb_var_screeninfo *var, int con,
++			  struct fb_info *info)
++{
++	struct rivafb_info *rivainfo = (struct rivafb_info *)info;
++	struct display *dsp;
++	struct fb_var_screeninfo v;
++	int nom, den;		/* translating from pixels->bytes */
++	int accel;
++	unsigned chgvar = 0;
++
++	DPRINTK("ENTER\n");
++
++	assert(info != NULL);
++	assert(var != NULL);
++
++	DPRINTK("Requested: %dx%dx%d\n", var->xres, var->yres,
++		var->bits_per_pixel);
++	DPRINTK("  virtual: %dx%d\n", var->xres_virtual,
++		var->yres_virtual);
++	DPRINTK("   offset: (%d,%d)\n", var->xoffset, var->yoffset);
++	DPRINTK("grayscale: %d\n", var->grayscale);
++
++	dsp = (con < 0) ? rivainfo->info.disp : &fb_display[con];
++	assert(dsp != NULL);
++
++	/* if var has changed, we should call changevar() later */
++	if (con >= 0) {
++		chgvar = ((dsp->var.xres != var->xres) ||
++			  (dsp->var.yres != var->yres) ||
++			  (dsp->var.xres_virtual != var->xres_virtual) ||
++			  (dsp->var.yres_virtual != var->yres_virtual) ||
++			  (dsp->var.accel_flags != var->accel_flags) ||
++			  (dsp->var.bits_per_pixel != var->bits_per_pixel)
++			  || memcmp(&dsp->var.red, &var->red,
++				    sizeof(var->red))
++			  || memcmp(&dsp->var.green, &var->green,
++				    sizeof(var->green))
++			  || memcmp(&dsp->var.blue, &var->blue,
++				    sizeof(var->blue)));
++	}
++
++	memcpy(&v, var, sizeof(v));
++
++	accel = v.accel_flags & FB_ACCELF_TEXT;
++
++	switch (v.bits_per_pixel) {
++#ifdef FBCON_HAS_CFB8
++	case 1 ... 8:
++		v.bits_per_pixel = 8;
++		nom = 1;
++		den = 1;
++		v.red.offset = 0;
++		v.red.length = 8;
++		v.green.offset = 0;
++		v.green.length = 8;
++		v.blue.offset = 0;
++		v.blue.length = 8;
++		break;
++#endif
++#ifdef FBCON_HAS_CFB16
++	case 9 ... 15:
++		v.green.length = 5;
++		/* fall through */
++	case 16:
++		v.bits_per_pixel = 16;
++		nom = 2;
++		den = 1;
++		if (v.green.length == 5) {
++			/* 0rrrrrgg gggbbbbb */
++			v.red.offset = 10;
++			v.green.offset = 5;
++			v.blue.offset = 0;
++			v.red.length = 5;
++			v.green.length = 5;
++			v.blue.length = 5;
++		} else {
++			/* rrrrrggg gggbbbbb */
++			v.red.offset = 11;
++			v.green.offset = 5;
++			v.blue.offset = 0;
++			v.red.length = 5;
++			v.green.length = 6;
++			v.blue.length = 5;
++		}
++		break;
++#endif
++#ifdef FBCON_HAS_CFB32
++	case 17 ... 32:
++		v.bits_per_pixel = 32;
++		nom = 4;
++		den = 1;
++		v.red.offset = 16;
++		v.green.offset = 8;
++		v.blue.offset = 0;
++		v.red.length = 8;
++		v.green.length = 8;
++		v.blue.length = 8;
++		break;
++#endif
++	default:
++		printk(KERN_ERR PFX
++		       "mode %dx%dx%d rejected...color depth not supported.\n",
++		       var->xres, var->yres, var->bits_per_pixel);
++		DPRINTK("EXIT, returning -EINVAL\n");
++		return -EINVAL;
++	}
++
++	if (rivafb_do_maximize(rivainfo, var, &v, nom, den) < 0)
++		return -EINVAL;
++
++	if (v.xoffset < 0)
++		v.xoffset = 0;
++	if (v.yoffset < 0)
++		v.yoffset = 0;
++
++	/* truncate xoffset and yoffset to maximum if too high */
++	if (v.xoffset > v.xres_virtual - v.xres)
++		v.xoffset = v.xres_virtual - v.xres - 1;
++
++	if (v.yoffset > v.yres_virtual - v.yres)
++		v.yoffset = v.yres_virtual - v.yres - 1;
++
++	v.red.msb_right =
++	    v.green.msb_right =
++	    v.blue.msb_right =
++	    v.transp.offset = v.transp.length = v.transp.msb_right = 0;
++
++	switch (v.activate & FB_ACTIVATE_MASK) {
++	case FB_ACTIVATE_TEST:
++		DPRINTK("EXIT - FB_ACTIVATE_TEST\n");
++		return 0;
++	case FB_ACTIVATE_NXTOPEN:	/* ?? */
++	case FB_ACTIVATE_NOW:
++		break;		/* continue */
++	default:
++		DPRINTK("EXIT - unknown activation type\n");
++		return -EINVAL;	/* unknown */
++	}
++
++	memcpy(&dsp->var, &v, sizeof(v));
++	if (chgvar) {
++		riva_set_dispsw(rivainfo, dsp);
++
++		if (accel) {
++			if (nomove)
++				dsp->scrollmode = SCROLL_YNOMOVE;
++			else
++				dsp->scrollmode = 0;
++		} else
++			dsp->scrollmode = SCROLL_YREDRAW;
++
++		if (info && info->changevar)
++			info->changevar(con);
++	}
++
++	rivafb_create_cursor(rivainfo, fontwidth(dsp), fontheight(dsp));
++	riva_load_video_mode(rivainfo, &v);
++	if (accel) riva_setup_accel(rivainfo);
++
++	DPRINTK("EXIT, returning 0\n");
++	return 0;
++}
++
++static int rivafb_get_cmap(struct fb_cmap *cmap, int kspc, int con,
++			   struct fb_info *info)
++{
++	struct rivafb_info *rivainfo = (struct rivafb_info *)info;
++	struct display *dsp;
++
++	DPRINTK("ENTER\n");
++
++	assert(rivainfo != NULL);
++	assert(cmap != NULL);
++
++	dsp = (con < 0) ? rivainfo->info.disp : &fb_display[con];
++
++	if (con == rivainfo->currcon) {	/* current console? */
++		int rc = fb_get_cmap(cmap, kspc, riva_getcolreg, info);
++		DPRINTK("EXIT - returning %d\n", rc);
++		return rc;
++	} else if (dsp->cmap.len)	/* non default colormap? */
++		fb_copy_cmap(&dsp->cmap, cmap, kspc ? 0 : 2);
++	else
++		fb_copy_cmap(fb_default_cmap
++			     (riva_get_cmap_len(&dsp->var)), cmap,
++			     kspc ? 0 : 2);
++
++	DPRINTK("EXIT, returning 0\n");
++
++	return 0;
++}
++
++static int rivafb_set_cmap(struct fb_cmap *cmap, int kspc, int con,
++			   struct fb_info *info)
++{
++	struct rivafb_info *rivainfo = (struct rivafb_info *)info;
++	struct display *dsp;
++	unsigned int cmap_len;
++
++	DPRINTK("ENTER\n");
++	
++	assert(rivainfo != NULL);
++	assert(cmap != NULL);
++
++	dsp = (con < 0) ? rivainfo->info.disp : &fb_display[con];
++
++	cmap_len = riva_get_cmap_len(&dsp->var);
++	if (dsp->cmap.len != cmap_len) {
++		int err = fb_alloc_cmap(&dsp->cmap, cmap_len, 0);
++		if (err) {
++			DPRINTK("EXIT - returning %d\n", err);
++			return err;
++		}
++	}
++	if (con == rivainfo->currcon) {	/* current console? */
++		int rc = fb_set_cmap(cmap, kspc, riva_setcolreg, info);
++		DPRINTK("EXIT - returning %d\n", rc);
++		return rc;
++	} else
++		fb_copy_cmap(cmap, &dsp->cmap, kspc ? 0 : 1);
++
++	DPRINTK("EXIT, returning 0\n");
++
++	return 0;
++}
++
++/**
++ * rivafb_pan_display
++ * @var: standard kernel fb changeable data
++ * @con: TODO
++ * @info: pointer to rivafb_info object containing info for current riva board
++ *
++ * DESCRIPTION:
++ * Pan (or wrap, depending on the `vmode' field) the display using the
++ * `xoffset' and `yoffset' fields of the `var' structure.
++ * If the values don't fit, return -EINVAL.
++ *
++ * This call looks only at xoffset, yoffset and the FB_VMODE_YWRAP flag
++ */
++static int rivafb_pan_display(struct fb_var_screeninfo *var, int con,
++			      struct fb_info *info)
++{
++	unsigned int base;
++	struct display *dsp;
++	struct rivafb_info *rivainfo = (struct rivafb_info *)info;
++
++	DPRINTK("ENTER\n");
++
++	assert(rivainfo != NULL);
++
++	if (var->xoffset > (var->xres_virtual - var->xres))
++		return -EINVAL;
++	if (var->yoffset > (var->yres_virtual - var->yres))
++		return -EINVAL;
++
++	dsp = (con < 0) ? rivainfo->info.disp : &fb_display[con];
++
++	if (var->vmode & FB_VMODE_YWRAP) {
++		if (var->yoffset < 0
++		    || var->yoffset >= dsp->var.yres_virtual
++		    || var->xoffset) return -EINVAL;
++	} else {
++		if (var->xoffset + dsp->var.xres > dsp->var.xres_virtual ||
++		    var->yoffset + dsp->var.yres > dsp->var.yres_virtual)
++			return -EINVAL;
++	}
++
++	base = var->yoffset * dsp->line_length + var->xoffset;
++
++	if (con == rivainfo->currcon) {
++		rivainfo->riva.SetStartAddress(&rivainfo->riva, base);
++	}
++
++	dsp->var.xoffset = var->xoffset;
++	dsp->var.yoffset = var->yoffset;
++
++	if (var->vmode & FB_VMODE_YWRAP)
++		dsp->var.vmode |= FB_VMODE_YWRAP;
++	else
++		dsp->var.vmode &= ~FB_VMODE_YWRAP;
++
++	DPRINTK("EXIT, returning 0\n");
++
++	return 0;
++}
++
++static int rivafb_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
++			unsigned long arg, int con, struct fb_info *info)
++{
++	struct rivafb_info *rivainfo = (struct rivafb_info *)info;
++
++	DPRINTK("ENTER\n");
++
++	assert(rivainfo != NULL);
++
++	/* no rivafb-specific ioctls */
++
++	DPRINTK("EXIT, returning -EINVAL\n");
++
++	return -EINVAL;
++}
++
++static int rivafb_rasterimg(struct fb_info *info, int start)
++{
++	struct rivafb_info *rinfo = (struct rivafb_info *)info;
++
++	wait_for_idle(rinfo);
++
++	return 0;
++}
++
++static int rivafb_switch(int con, struct fb_info *info)
++{
++	struct rivafb_info *rivainfo = (struct rivafb_info *)info;
++	struct fb_cmap *cmap;
++	struct display *dsp;
++	
++	DPRINTK("ENTER\n");
++	
++	assert(rivainfo != NULL);
++
++	dsp = (con < 0) ? rivainfo->info.disp : &fb_display[con];
++
++	if (rivainfo->currcon >= 0) {
++		/* Do we have to save the colormap? */
++		cmap = &(rivainfo->currcon_display->cmap);
++		DPRINTK("switch1: con = %d, cmap.len = %d\n",
++			 rivainfo->currcon, cmap->len);
++
++		if (cmap->len) {
++			DPRINTK("switch1a: %p %p %p %p\n", cmap->red,
++				 cmap->green, cmap->blue, cmap->transp);
++			fb_get_cmap(cmap, 1, riva_getcolreg, info);
++		}
++	}
++	rivainfo->currcon = con;
++	rivainfo->currcon_display = dsp;
++
++	rivafb_set_var(&dsp->var, con, info);
++	riva_set_dispsw(rivainfo, dsp);
++
++	DPRINTK("EXIT, returning 0\n");
++	return 0;
++}
++
++static int rivafb_updatevar(int con, struct fb_info *info)
++{
++	int rc;
++
++	DPRINTK("ENTER\n");
++
++	rc = (con < 0) ? -EINVAL : rivafb_pan_display(&fb_display[con].var,
++						      con, info);
++	DPRINTK("EXIT, returning %d\n", rc);
++	return rc;
++}
++
++static void rivafb_blank(int blank, struct fb_info *info)
++{
++	unsigned char tmp, vesa;
++	struct rivafb_info *rinfo = (struct rivafb_info *)info;
++
++	DPRINTK("ENTER\n");
++
++	assert(rinfo != NULL);
++
++	tmp = SEQin(rinfo, 0x01) & ~0x20;	/* screen on/off */
++	vesa = CRTCin(rinfo, 0x1a) & ~0xc0;	/* sync on/off */
++
++	if (blank) {
++		tmp |= 0x20;
++		switch (blank - 1) {
++		case VESA_NO_BLANKING:
++			break;
++		case VESA_VSYNC_SUSPEND:
++			vesa |= 0x80;
++			break;
++		case VESA_HSYNC_SUSPEND:
++			vesa |= 0x40;
++			break;
++		case VESA_POWERDOWN:
++			vesa |= 0xc0;
++			break;
++		}
++	}
++
++	SEQout(rinfo, 0x01, tmp);
++	CRTCout(rinfo, 0x1a, vesa);
++
++	DPRINTK("EXIT\n");
++}
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * initialization helper functions
++ *
++ * ------------------------------------------------------------------------- */
++
++/* kernel interface */
++static struct fb_ops riva_fb_ops = {
++	owner:		THIS_MODULE,
++	fb_get_fix:	rivafb_get_fix,
++	fb_get_var:	rivafb_get_var,
++	fb_set_var:	rivafb_set_var,
++	fb_get_cmap:	rivafb_get_cmap,
++	fb_set_cmap:	rivafb_set_cmap,
++	fb_pan_display:	rivafb_pan_display,
++	fb_ioctl:	rivafb_ioctl,
++	fb_rasterimg:	rivafb_rasterimg,
++};
++
++static int __devinit riva_init_disp_var(struct rivafb_info *rinfo)
++{
++#ifndef MODULE
++	if (mode_option)
++		fb_find_mode(&rinfo->disp.var, &rinfo->info, mode_option,
++			     NULL, 0, NULL, 8);
++#endif
++	if (rinfo->use_default_var)
++		/* We will use the modified default var */
++		rinfo->disp.var = rivafb_default_var;
++
++	return 0;
++}
++
++static int __devinit riva_init_disp(struct rivafb_info *rinfo)
++{
++	struct fb_info *info;
++	struct display *disp;
++
++	DPRINTK("ENTER\n");
++
++	assert(rinfo != NULL);
++
++	info = &rinfo->info;
++	disp = &rinfo->disp;
++
++	disp->var = rivafb_default_var;
++	
++	if (noaccel)
++		disp->var.accel_flags &= ~FB_ACCELF_TEXT;
++	else
++		disp->var.accel_flags |= FB_ACCELF_TEXT;
++	
++	info->disp = disp;
++
++	/* FIXME: assure that disp->cmap is completely filled out */
++
++	rinfo->currcon_display = disp;
++
++	if ((riva_init_disp_var(rinfo)) < 0) {
++		DPRINTK("EXIT, returning -1\n");
++		return -1;
++	}
++
++	riva_set_dispsw(rinfo, disp);
++
++	DPRINTK("EXIT, returning 0\n");
++	return 0;
++
++}
++
++static int __devinit riva_set_fbinfo(struct rivafb_info *rinfo)
++{
++	struct fb_info *info;
++
++	assert(rinfo != NULL);
++
++	info = &rinfo->info;
++
++	strcpy(info->modename, rinfo->drvr_name);
++	info->node = -1;
++	info->flags = FBINFO_FLAG_DEFAULT;
++	info->fbops = &riva_fb_ops;
++
++	/* FIXME: set monspecs to what??? */
++
++	info->display_fg = NULL;
++	strncpy(info->fontname, fontname, sizeof(info->fontname));
++	info->fontname[sizeof(info->fontname) - 1] = 0;
++
++	info->changevar = NULL;
++	info->switch_con = rivafb_switch;
++	info->updatevar = rivafb_updatevar;
++	info->blank = rivafb_blank;
++
++	if (riva_init_disp(rinfo) < 0)	/* must be done last */
++		return -1;
++
++	return 0;
++}
++
++#ifdef CONFIG_ALL_PPC
++static int riva_get_EDID_OF(struct rivafb_info *rinfo)
++{
++	struct device_node *dp;
++	unsigned char *pedid = NULL;
++
++	dp = pci_device_to_OF_node(rinfo->pd);
++	pedid = (unsigned char *)get_property(dp, "EDID,B", 0);
++
++	if (pedid) {
++		rinfo->EDID = pedid;
++		return 1;
++	} else
++		return 0;
++}
++#endif /* CONFIG_ALL_PPC */
++
++static int riva_dfp_parse_EDID(struct rivafb_info *rinfo)
++{
++	unsigned char *block = rinfo->EDID;
++
++	if (!block)
++		return 0;
++
++	/* jump to detailed timing block section */
++	block += 54;
++
++        rinfo->clock = (block[0] + (block[1] << 8));
++        rinfo->panel_xres = (block[2] + ((block[4] & 0xf0) << 4));
++        rinfo->hblank = (block[3] + ((block[4] & 0x0f) << 8));
++        rinfo->panel_yres = (block[5] + ((block[7] & 0xf0) << 4));
++        rinfo->vblank = (block[6] + ((block[7] & 0x0f) << 8));
++        rinfo->hOver_plus = (block[8] + ((block[11] & 0xc0) << 2));
++        rinfo->hSync_width = (block[9] + ((block[11] & 0x30) << 4));
++        rinfo->vOver_plus = ((block[10] >> 4) + ((block[11] & 0x0c) << 2));
++        rinfo->vSync_width = ((block[10] & 0x0f) + ((block[11] & 0x03) << 4));
++        rinfo->interlaced = ((block[17] & 0x80) >> 7);
++        rinfo->synct = ((block[17] & 0x18) >> 3);
++        rinfo->misc = ((block[17] & 0x06) >> 1);
++        rinfo->hAct_high = rinfo->vAct_high = 0;
++        if (rinfo->synct == 3) {
++                if (rinfo->misc & 2)
++                        rinfo->hAct_high = 1;
++                if (rinfo->misc & 1)
++                        rinfo->vAct_high = 1;
++	}
++
++	printk("rivafb: detected DFP panel size from EDID: %dx%d\n",
++		rinfo->panel_xres, rinfo->panel_yres);
++
++	rinfo->got_dfpinfo = 1;
++
++	return 1;
++}
++
++static void riva_update_default_var(struct rivafb_info *rinfo)
++{
++	struct fb_var_screeninfo *var = &rivafb_default_var;
++
++        var->xres = rinfo->panel_xres;
++        var->yres = rinfo->panel_yres;
++        var->xres_virtual = rinfo->panel_xres;
++        var->yres_virtual = rinfo->panel_yres;
++        var->xoffset = var->yoffset = 0;
++        var->bits_per_pixel = 8;
++        var->pixclock = 100000000 / rinfo->clock;
++        var->left_margin = (rinfo->hblank - rinfo->hOver_plus - rinfo->hSync_width);
++        var->right_margin = rinfo->hOver_plus;
++        var->upper_margin = (rinfo->vblank - rinfo->vOver_plus - rinfo->vSync_width);
++        var->lower_margin = rinfo->vOver_plus;
++        var->hsync_len = rinfo->hSync_width;
++        var->vsync_len = rinfo->vSync_width;
++        var->sync = 0;
++
++        if (rinfo->synct == 3) {
++                if (rinfo->hAct_high)
++                        var->sync |= FB_SYNC_HOR_HIGH_ACT;
++                if (rinfo->vAct_high)
++                        var->sync |= FB_SYNC_VERT_HIGH_ACT;
++        }
++ 
++        var->vmode = 0;
++        if (rinfo->interlaced)
++                var->vmode |= FB_VMODE_INTERLACED;
++
++	if (!noaccel)
++		var->accel_flags |= FB_ACCELF_TEXT;
++        
++        rinfo->use_default_var = 1;
++}
++
++
++static void riva_get_EDID(struct rivafb_info *rinfo)
++{
++#ifdef CONFIG_ALL_PPC
++	if (!riva_get_EDID_OF(rinfo))
++		printk("rivafb: could not retrieve EDID from OF\n");
++#else
++	/* XXX use other methods later */
++#endif
++}
++
++
++static void riva_get_dfpinfo(struct rivafb_info *rinfo)
++{
++	if (riva_dfp_parse_EDID(rinfo))
++		riva_update_default_var(rinfo);
++
++	rinfo->riva.flatPanel = rinfo->got_dfpinfo;
++}
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * PCI bus
++ *
++ * ------------------------------------------------------------------------- */
++
++static int __devinit rivafb_init_one(struct pci_dev *pd,
++				     const struct pci_device_id *ent)
++{
++	struct rivafb_info *rinfo;
++	struct riva_chip_info *rci = &riva_chip_info[ent->driver_data];
++
++	assert(pd != NULL);
++	assert(rci != NULL);
++
++	rinfo = kmalloc(sizeof(struct rivafb_info), GFP_KERNEL);
++	if (!rinfo)
++		goto err_out;
++
++	memset(rinfo, 0, sizeof(struct rivafb_info));
++
++	rinfo->drvr_name = rci->name;
++	rinfo->riva.Architecture = rci->arch_rev;
++
++	rinfo->pd = pd;
++	rinfo->base0_region_size = pci_resource_len(pd, 0);
++	rinfo->base1_region_size = pci_resource_len(pd, 1);
++
++	{
++		/* enable IO and mem if not already done */
++		unsigned short cmd;
++
++		pci_read_config_word(pd, PCI_COMMAND, &cmd);
++		cmd |= (PCI_COMMAND_IO | PCI_COMMAND_MEMORY);
++		pci_write_config_word(pd, PCI_COMMAND, cmd);
++	}
++ 
++	rinfo->ctrl_base_phys = pci_resource_start(rinfo->pd, 0);
++	rinfo->fb_base_phys = pci_resource_start(rinfo->pd, 1);
++
++	rinfo->ctrl_base = ioremap(rinfo->ctrl_base_phys,
++				   rinfo->base0_region_size);
++	if (!rinfo->ctrl_base) {
++		printk(KERN_ERR PFX "cannot ioremap MMIO base\n");
++		goto err_out_free_base1;
++	}
++	
++	riva_get_EDID(rinfo);
++
++	riva_get_dfpinfo(rinfo);
++
++	rinfo->riva.EnableIRQ = 0;
++	rinfo->riva.PRAMDAC = (unsigned *)(rinfo->ctrl_base + 0x00680000);
++	rinfo->riva.PFB = (unsigned *)(rinfo->ctrl_base + 0x00100000);
++	rinfo->riva.PFIFO = (unsigned *)(rinfo->ctrl_base + 0x00002000);
++	rinfo->riva.PGRAPH = (unsigned *)(rinfo->ctrl_base + 0x00400000);
++	rinfo->riva.PEXTDEV = (unsigned *)(rinfo->ctrl_base + 0x00101000);
++	rinfo->riva.PTIMER = (unsigned *)(rinfo->ctrl_base + 0x00009000);
++	rinfo->riva.PMC = (unsigned *)(rinfo->ctrl_base + 0x00000000);
++	rinfo->riva.FIFO = (unsigned *)(rinfo->ctrl_base + 0x00800000);
++
++	rinfo->riva.PCIO = (U008 *)(rinfo->ctrl_base + 0x00601000);
++	rinfo->riva.PDIO = (U008 *)(rinfo->ctrl_base + 0x00681000);
++	rinfo->riva.PVIO = (U008 *)(rinfo->ctrl_base + 0x000C0000);
++
++	rinfo->riva.IO = (MISCin(rinfo) & 0x01) ? 0x3D0 : 0x3B0;
++
++	if (rinfo->riva.Architecture == NV_ARCH_03) {
++		/*
++		 * We have to map the full BASE_1 aperture for Riva128's
++		 * because they use the PRAMIN set in "framebuffer" space
++		 */
++		if (!request_mem_region(rinfo->fb_base_phys,
++					rinfo->base1_region_size, "rivafb")) {
++			printk(KERN_ERR PFX "cannot reserve FB region\n");
++			goto err_out_free_base0;
++		}
++	
++		rinfo->fb_base = ioremap(rinfo->fb_base_phys,
++					 rinfo->base1_region_size);
++		if (!rinfo->fb_base) {
++			printk(KERN_ERR PFX "cannot ioremap FB base\n");
++			goto err_out_iounmap_ctrl;
++		}
++	}
++
++
++	switch (rinfo->riva.Architecture) {
++	case NV_ARCH_03:
++		rinfo->riva.PRAMIN = (unsigned *)(rinfo->fb_base + 0x00C00000);
++		break;
++	case NV_ARCH_04:
++	case NV_ARCH_10:
++	case NV_ARCH_20:
++		rinfo->riva.PCRTC = (unsigned *)(rinfo->ctrl_base + 0x00600000);
++		rinfo->riva.PRAMIN = (unsigned *)(rinfo->ctrl_base + 0x00710000);
++		break;
++	}
++
++#if defined(__powerpc__)
++	/*
++	 * XXX Mac cards use the second DAC for the panel
++	 */
++	if (rinfo->riva.flatPanel) {
++		printk("rivafb: using second CRTC\n");
++		rinfo->riva.PCIO = rinfo->riva.PCIO + 0x2000;
++		rinfo->riva.PCRTC = rinfo->riva.PCRTC + 0x800;
++		rinfo->riva.PRAMDAC = rinfo->riva.PRAMDAC + 0x800;
++		rinfo->riva.PDIO = rinfo->riva.PDIO + 0x2000;
++	}
++#endif
++
++	RivaGetConfig(&rinfo->riva);
++
++	rinfo->ram_amount = rinfo->riva.RamAmountKBytes * 1024;
++	rinfo->dclk_max = rinfo->riva.MaxVClockFreqKHz * 1000;
++
++	if (rinfo->riva.Architecture != NV_ARCH_03) {
++		/*
++		 * Now the _normal_ chipsets can just map the amount of
++		 * real physical ram instead of the whole aperture
++		 */
++		if (!request_mem_region(rinfo->fb_base_phys,
++					rinfo->ram_amount, "rivafb")) {
++			printk(KERN_ERR PFX "cannot reserve FB region\n");
++			goto err_out_free_base0;
++		}
++	
++		rinfo->fb_base = ioremap(rinfo->fb_base_phys,
++					 rinfo->ram_amount);
++		if (!rinfo->fb_base) {
++			printk(KERN_ERR PFX "cannot ioremap FB base\n");
++			goto err_out_iounmap_ctrl;
++		}
++	}
++
++#ifdef CONFIG_MTRR
++	if (!nomtrr) {
++		rinfo->mtrr.vram = mtrr_add(rinfo->fb_base_phys,
++					    rinfo->ram_amount,
++					    MTRR_TYPE_WRCOMB, 1);
++		if (rinfo->mtrr.vram < 0) {
++			printk(KERN_ERR PFX "unable to setup MTRR\n");
++		} else {
++			rinfo->mtrr.vram_valid = 1;
++			/* let there be speed */
++			printk(KERN_INFO PFX "RIVA MTRR set to ON\n");
++		}
++	}
++#endif /* CONFIG_MTRR */
++
++	/* unlock io */
++	CRTCout(rinfo, 0x11, 0xFF);	/* vgaHWunlock() + riva unlock (0x7F) */
++	rinfo->riva.LockUnlock(&rinfo->riva, 0);
++
++	riva_save_state(rinfo, &rinfo->initial_state);
++
++	if (!nohwcursor) rinfo->cursor = rivafb_init_cursor(rinfo);
++
++	if (riva_set_fbinfo(rinfo) < 0) {
++		printk(KERN_ERR PFX "error setting initial video mode\n");
++		goto err_out_cursor;
++	}
++
++	if (register_framebuffer((struct fb_info *)rinfo) < 0) {
++		printk(KERN_ERR PFX
++			"error registering riva framebuffer\n");
++		goto err_out_load_state;
++	}
++
++	riva_boards = riva_board_list_add(riva_boards, rinfo);
++
++	pci_set_drvdata(pd, rinfo);
++
++	printk(KERN_INFO PFX
++		"PCI nVidia NV%x framebuffer ver %s (%s, %dMB @ 0x%lX)\n",
++		rinfo->riva.Architecture,
++		RIVAFB_VERSION,
++		rinfo->drvr_name,
++		rinfo->ram_amount / (1024 * 1024),
++		rinfo->fb_base_phys);
++
++	return 0;
++
++err_out_load_state:
++	riva_load_state(rinfo, &rinfo->initial_state);
++err_out_cursor:
++	rivafb_exit_cursor(rinfo);
++/* err_out_iounmap_fb: */
++	iounmap(rinfo->fb_base);
++err_out_iounmap_ctrl:
++	iounmap(rinfo->ctrl_base);
++err_out_free_base1:
++	release_mem_region(rinfo->fb_base_phys, rinfo->base1_region_size);
++err_out_free_base0:
++	release_mem_region(rinfo->ctrl_base_phys, rinfo->base0_region_size);
++err_out_kfree:
++	kfree(rinfo);
++err_out:
++	return -ENODEV;
++}
++
++static void __devexit rivafb_remove_one(struct pci_dev *pd)
++{
++	struct rivafb_info *board = pci_get_drvdata(pd);
++	
++	if (!board)
++		return;
++
++	riva_boards = riva_board_list_del(riva_boards, board);
++
++	riva_load_state(board, &board->initial_state);
++
++	unregister_framebuffer((struct fb_info *)board);
++
++	rivafb_exit_cursor(board);
++
++#ifdef CONFIG_MTRR
++	if (board->mtrr.vram_valid)
++		mtrr_del(board->mtrr.vram, board->fb_base_phys,
++			 board->ram_amount);
++#endif /* CONFIG_MTRR */
++
++	iounmap(board->ctrl_base);
++	iounmap(board->fb_base);
++
++	release_mem_region(board->ctrl_base_phys,
++			   board->base0_region_size);
++	release_mem_region(board->fb_base_phys,
++			   board->ram_amount);
++
++	kfree(board);
++
++	pci_set_drvdata(pd, NULL);
++}
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * initialization
++ *
++ * ------------------------------------------------------------------------- */
++
++#ifndef MODULE
++int __init rivafb_setup(char *options)
++{
++	char *this_opt;
++
++	if (!options || !*options)
++		return 0;
++
++	while ((this_opt = strsep(&options, ",")) != NULL) {
++		if (!*this_opt)
++			continue;
++		if (!strncmp(this_opt, "font:", 5)) {
++			char *p;
++			int i;
++
++			p = this_opt + 5;
++			for (i = 0; i < sizeof(fontname) - 1; i++)
++				if (!*p || *p == ' ' || *p == ',')
++					break;
++			memcpy(fontname, this_opt + 5, i);
++			fontname[i] = 0;
++
++		} else if (!strncmp(this_opt, "noblink", 7)) {
++			noblink = 1;
++		} else if (!strncmp(this_opt, "noaccel", 7)) {
++			noaccel = 1;
++		} else if (!strncmp(this_opt, "nomove", 6)) {
++			nomove = 1;
++#ifdef CONFIG_MTRR
++		} else if (!strncmp(this_opt, "nomtrr", 6)) {
++			nomtrr = 1;
++#endif
++		} else if (!strncmp(this_opt, "nohwcursor", 10)) {
++			nohwcursor = 1;
++		} else
++			mode_option = this_opt;
++	}
++	return 0;
++}
++#endif /* !MODULE */
++
++static struct pci_driver rivafb_driver = {
++	name:		"rivafb",
++	id_table:	rivafb_pci_tbl,
++	probe:		rivafb_init_one,
++	remove:		__devexit_p(rivafb_remove_one),
++};
++
++
++
++/* ------------------------------------------------------------------------- *
++ *
++ * modularization
++ *
++ * ------------------------------------------------------------------------- */
++
++int __init rivafb_init(void)
++{
++	int err;
++#ifdef MODULE
++	if (font) strncpy(fontname, font, sizeof(fontname)-1);
++#endif
++	err = pci_module_init(&rivafb_driver);
++	if (err)
++		return err;
++	return 0;
++}
++
++
++#ifdef MODULE
++static void __exit rivafb_exit(void)
++{
++	pci_unregister_driver(&rivafb_driver);
++}
++
++module_init(rivafb_init);
++module_exit(rivafb_exit);
++
++MODULE_PARM(font, "s");
++MODULE_PARM_DESC(font, "Specifies one of the compiled-in fonts (default=none)");
++MODULE_PARM(noaccel, "i");
++MODULE_PARM_DESC(noaccel, "Disables hardware acceleration (0 or 1=disabled) (default=0)");
++MODULE_PARM(nomove, "i");
++MODULE_PARM_DESC(nomove, "Enables YSCROLL_NOMOVE (0 or 1=enabled) (default=0)");
++MODULE_PARM(nohwcursor, "i");
++MODULE_PARM_DESC(nohwcursor, "Disables hardware cursor (0 or 1=disabled) (default=0)");
++MODULE_PARM(noblink, "i");
++MODULE_PARM_DESC(noblink, "Disables hardware cursor blinking (0 or 1=disabled) (default=0)");
++#ifdef CONFIG_MTRR
++MODULE_PARM(nomtrr, "i");
++MODULE_PARM_DESC(nomtrr, "Disables MTRR support (0 or 1=disabled) (default=0)");
++#endif
++#endif /* MODULE */
++
++MODULE_AUTHOR("Ani Joshi, maintainer");
++MODULE_DESCRIPTION("Framebuffer driver for nVidia Riva 128, TNT, TNT2");
++MODULE_LICENSE("GPL");
+diff -urN kernel-source-2.4.27/drivers/video/riva/Makefile kernel-source-2.4.27-benh/drivers/video/riva/Makefile
+--- kernel-source-2.4.27/drivers/video/riva/Makefile	2001-02-03 21:48:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/video/riva/Makefile	2004-09-01 20:56:29.313662704 +0200
 @@ -9,7 +9,7 @@
  
  O_TARGET := rivafb.o
@@ -19890,9 +22174,9 @@
  obj-m    := $(O_TARGET)
  
  include $(TOPDIR)/Rules.make
-diff -urN kernel-source-2.4.26.orig/drivers/video/riva/nv_setup.c kernel-source-2.4.26/drivers/video/riva/nv_setup.c
---- kernel-source-2.4.26.orig/drivers/video/riva/nv_setup.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/video/riva/nv_setup.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/riva/nv_setup.c kernel-source-2.4.27-benh/drivers/video/riva/nv_setup.c
+--- kernel-source-2.4.27/drivers/video/riva/nv_setup.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/video/riva/nv_setup.c	2004-09-01 20:56:29.399649632 +0200
 @@ -0,0 +1,262 @@
 +/* $XConsortium: nv_driver.c /main/3 1996/10/28 05:13:37 kaleb $ */
 +/*
@@ -20156,9 +22440,9 @@
 +	rinfo->riva.flatPanel = (rinfo->FlatPanel > 0) ? TRUE : FALSE;
 +}
 +
-diff -urN kernel-source-2.4.26.orig/drivers/video/riva/nv_type.h kernel-source-2.4.26/drivers/video/riva/nv_type.h
---- kernel-source-2.4.26.orig/drivers/video/riva/nv_type.h	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/drivers/video/riva/nv_type.h	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/riva/nv_type.h kernel-source-2.4.27-benh/drivers/video/riva/nv_type.h
+--- kernel-source-2.4.27/drivers/video/riva/nv_type.h	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/drivers/video/riva/nv_type.h	2004-09-01 20:56:29.401649328 +0200
 @@ -0,0 +1,58 @@
 +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h,v 1.35 2002/08/05 20:47:06 mvojkovi Exp $ */
 +
@@ -20218,9 +22502,9 @@
 +#define NV_CHIP_0x0289              ((PCI_VENDOR_ID_NVIDIA << 16) | 0x0289)
 +
 +#endif /* __NV_STRUCT_H__ */
-diff -urN kernel-source-2.4.26.orig/drivers/video/riva/rivafb.h kernel-source-2.4.26/drivers/video/riva/rivafb.h
---- kernel-source-2.4.26.orig/drivers/video/riva/rivafb.h	2003-06-13 16:51:37.000000000 +0200
-+++ kernel-source-2.4.26/drivers/video/riva/rivafb.h	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/riva/rivafb.h kernel-source-2.4.27-benh/drivers/video/riva/rivafb.h
+--- kernel-source-2.4.27/drivers/video/riva/rivafb.h	2003-06-13 16:51:37.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/video/riva/rivafb.h	2004-09-01 20:56:29.487636256 +0200
 @@ -92,6 +92,12 @@
  #ifdef CONFIG_MTRR
  	struct { int vram; int vram_valid; } mtrr;
@@ -20234,9 +22518,9 @@
 +void riva_common_setup(struct rivafb_info*);
 +
  #endif /* __RIVAFB_H */
-diff -urN kernel-source-2.4.26.orig/drivers/video/riva/riva_hw.c kernel-source-2.4.26/drivers/video/riva/riva_hw.c
---- kernel-source-2.4.26.orig/drivers/video/riva/riva_hw.c	2003-06-13 16:51:37.000000000 +0200
-+++ kernel-source-2.4.26/drivers/video/riva/riva_hw.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/riva/riva_hw.c kernel-source-2.4.27-benh/drivers/video/riva/riva_hw.c
+--- kernel-source-2.4.27/drivers/video/riva/riva_hw.c	2003-06-13 16:51:37.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/video/riva/riva_hw.c	2004-09-01 20:56:29.665609200 +0200
 @@ -41,13 +41,17 @@
   * GPL licensing note -- nVidia is allowing a liberal interpretation of
   * the documentation restriction above, to merely say that this nVidia's
@@ -20881,9 +23165,9 @@
      /*
       * Fill in FIFO pointers.
       */
-diff -urN kernel-source-2.4.26.orig/drivers/video/riva/riva_hw.h kernel-source-2.4.26/drivers/video/riva/riva_hw.h
---- kernel-source-2.4.26.orig/drivers/video/riva/riva_hw.h	2003-06-13 16:51:37.000000000 +0200
-+++ kernel-source-2.4.26/drivers/video/riva/riva_hw.h	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/riva/riva_hw.h kernel-source-2.4.27-benh/drivers/video/riva/riva_hw.h
+--- kernel-source-2.4.27/drivers/video/riva/riva_hw.h	2003-06-13 16:51:37.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/video/riva/riva_hw.h	2004-09-01 20:56:29.747596736 +0200
 @@ -41,14 +41,28 @@
   * GPL licensing note -- nVidia is allowing a liberal interpretation of
   * the documentation restriction above, to merely say that this nVidia's
@@ -21023,9 +23307,9 @@
     (hwinst).FifoFreeCount -= (cnt);                                \
  }
  #endif /* __RIVA_HW_H__ */
-diff -urN kernel-source-2.4.26.orig/drivers/video/riva/riva_tbl.h kernel-source-2.4.26/drivers/video/riva/riva_tbl.h
---- kernel-source-2.4.26.orig/drivers/video/riva/riva_tbl.h	2003-06-13 16:51:37.000000000 +0200
-+++ kernel-source-2.4.26/drivers/video/riva/riva_tbl.h	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/drivers/video/riva/riva_tbl.h kernel-source-2.4.27-benh/drivers/video/riva/riva_tbl.h
+--- kernel-source-2.4.27/drivers/video/riva/riva_tbl.h	2003-06-13 16:51:37.000000000 +0200
++++ kernel-source-2.4.27-benh/drivers/video/riva/riva_tbl.h	2004-09-01 20:56:29.750596280 +0200
 @@ -41,10 +41,12 @@
   * GPL licensing note -- nVidia is allowing a liberal interpretation of
   * the documentation restriction above, to merely say that this nVidia's
@@ -21170,9 +23454,9 @@
      {0x00000020, 0x80000000},
      {0x00000021, 0x80011142},
      {0x00000022, 0x80000001},
-diff -urN kernel-source-2.4.26.orig/fs/jbd/transaction.c kernel-source-2.4.26/fs/jbd/transaction.c
---- kernel-source-2.4.26.orig/fs/jbd/transaction.c	2004-07-20 14:05:56.000000000 +0200
-+++ kernel-source-2.4.26/fs/jbd/transaction.c	2004-07-31 18:36:21.000000000 +0200
+diff -urN kernel-source-2.4.27/fs/jbd/transaction.c kernel-source-2.4.27-benh/fs/jbd/transaction.c
+--- kernel-source-2.4.27/fs/jbd/transaction.c	2004-08-24 07:53:14.000000000 +0200
++++ kernel-source-2.4.27-benh/fs/jbd/transaction.c	2004-09-01 20:56:29.000000000 +0200
 @@ -56,7 +56,11 @@
  	transaction->t_journal = journal;
  	transaction->t_state = T_RUNNING;
@@ -21186,9 +23470,9 @@
  	INIT_LIST_HEAD(&transaction->t_jcb);
  
  	if (journal->j_commit_interval) {
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/atomic.h kernel-source-2.4.26/include/asm-ppc/atomic.h
---- kernel-source-2.4.26.orig/include/asm-ppc/atomic.h	2003-08-25 13:44:44.000000000 +0200
-+++ kernel-source-2.4.26/include/asm-ppc/atomic.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/atomic.h kernel-source-2.4.27-benh/include/asm-ppc/atomic.h
+--- kernel-source-2.4.27/include/asm-ppc/atomic.h	2003-08-25 13:44:44.000000000 +0200
++++ kernel-source-2.4.27-benh/include/asm-ppc/atomic.h	2004-09-01 20:56:29.915571200 +0200
 @@ -18,9 +18,12 @@
  extern void atomic_set_mask(unsigned long mask, unsigned long *addr);
  
@@ -21243,9 +23527,9 @@
  "1:	lwarx	%0,0,%1		# atomic_dec_if_positive\n\
  	addic.	%0,%0,-1\n\
  	blt-	2f\n"
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/elf.h kernel-source-2.4.26/include/asm-ppc/elf.h
---- kernel-source-2.4.26.orig/include/asm-ppc/elf.h	2003-06-13 16:51:38.000000000 +0200
-+++ kernel-source-2.4.26/include/asm-ppc/elf.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/elf.h kernel-source-2.4.27-benh/include/asm-ppc/elf.h
+--- kernel-source-2.4.27/include/asm-ppc/elf.h	2003-06-13 16:51:38.000000000 +0200
++++ kernel-source-2.4.27-benh/include/asm-ppc/elf.h	2004-09-01 20:56:29.995559040 +0200
 @@ -10,7 +10,7 @@
  
  #define ELF_NGREG	48	/* includes nip, msr, lr, etc. */
@@ -21255,9 +23539,9 @@
  
  /*
   * These are used to set parameters in the core dumps.
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/hardirq.h kernel-source-2.4.26/include/asm-ppc/hardirq.h
---- kernel-source-2.4.26.orig/include/asm-ppc/hardirq.h	2003-08-25 13:44:44.000000000 +0200
-+++ kernel-source-2.4.26/include/asm-ppc/hardirq.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/hardirq.h kernel-source-2.4.27-benh/include/asm-ppc/hardirq.h
+--- kernel-source-2.4.27/include/asm-ppc/hardirq.h	2003-08-25 13:44:44.000000000 +0200
++++ kernel-source-2.4.27-benh/include/asm-ppc/hardirq.h	2004-09-01 20:56:29.996558888 +0200
 @@ -54,12 +54,24 @@
  extern unsigned volatile long global_irq_lock;
  extern atomic_t global_irq_count;
@@ -21309,9 +23593,9 @@
  	atomic_dec(&global_irq_count);
  	--local_irq_count(cpu);
  }
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/highmem.h kernel-source-2.4.26/include/asm-ppc/highmem.h
---- kernel-source-2.4.26.orig/include/asm-ppc/highmem.h	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/include/asm-ppc/highmem.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/highmem.h kernel-source-2.4.27-benh/include/asm-ppc/highmem.h
+--- kernel-source-2.4.27/include/asm-ppc/highmem.h	2003-11-28 19:26:21.000000000 +0100
++++ kernel-source-2.4.27-benh/include/asm-ppc/highmem.h	2004-09-01 20:56:30.076546728 +0200
 @@ -28,7 +28,7 @@
  #include <asm/pgtable.h>
  
@@ -21321,9 +23605,9 @@
  
  extern pte_t *kmap_pte;
  extern pgprot_t kmap_prot;
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/ide.h kernel-source-2.4.26/include/asm-ppc/ide.h
---- kernel-source-2.4.26.orig/include/asm-ppc/ide.h	2003-06-13 16:51:38.000000000 +0200
-+++ kernel-source-2.4.26/include/asm-ppc/ide.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/ide.h kernel-source-2.4.27-benh/include/asm-ppc/ide.h
+--- kernel-source-2.4.27/include/asm-ppc/ide.h	2003-06-13 16:51:38.000000000 +0200
++++ kernel-source-2.4.27-benh/include/asm-ppc/ide.h	2004-09-01 20:56:30.077546576 +0200
 @@ -34,6 +34,7 @@
                                       ide_ioreg_t data_port,
                                       ide_ioreg_t ctrl_port,
@@ -21350,9 +23634,9 @@
  #endif /* __KERNEL__ */
  
  #endif /* __ASMPPC_IDE_H */
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/io.h kernel-source-2.4.26/include/asm-ppc/io.h
---- kernel-source-2.4.26.orig/include/asm-ppc/io.h	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/include/asm-ppc/io.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/io.h kernel-source-2.4.27-benh/include/asm-ppc/io.h
+--- kernel-source-2.4.27/include/asm-ppc/io.h	2003-11-28 19:26:21.000000000 +0100
++++ kernel-source-2.4.27-benh/include/asm-ppc/io.h	2004-09-01 20:56:30.159534112 +0200
 @@ -288,9 +288,15 @@
  /* Enforce in-order execution of data I/O.
   * No distinction between read/write on PPC; use eieio for all three.
@@ -21410,9 +23694,9 @@
  }
  
  static inline int check_signature(unsigned long io_addr,
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/nvram.h kernel-source-2.4.26/include/asm-ppc/nvram.h
---- kernel-source-2.4.26.orig/include/asm-ppc/nvram.h	2003-06-13 16:51:38.000000000 +0200
-+++ kernel-source-2.4.26/include/asm-ppc/nvram.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/nvram.h kernel-source-2.4.27-benh/include/asm-ppc/nvram.h
+--- kernel-source-2.4.27/include/asm-ppc/nvram.h	2003-06-13 16:51:38.000000000 +0200
++++ kernel-source-2.4.27-benh/include/asm-ppc/nvram.h	2004-09-01 20:56:30.160533960 +0200
 @@ -41,11 +41,15 @@
  
  /* Return partition offset in nvram */
@@ -21442,9 +23726,9 @@
  
  #endif
  #endif /* __KERNEL__ */
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/open_pic.h kernel-source-2.4.26/include/asm-ppc/open_pic.h
---- kernel-source-2.4.26.orig/include/asm-ppc/open_pic.h	2003-08-25 13:44:44.000000000 +0200
-+++ kernel-source-2.4.26/include/asm-ppc/open_pic.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/open_pic.h kernel-source-2.4.27-benh/include/asm-ppc/open_pic.h
+--- kernel-source-2.4.27/include/asm-ppc/open_pic.h	2003-08-25 13:44:44.000000000 +0200
++++ kernel-source-2.4.27-benh/include/asm-ppc/open_pic.h	2004-09-01 20:56:30.161533808 +0200
 @@ -21,8 +21,12 @@
   *  Non-offset'ed vector numbers
   */
@@ -21495,9 +23779,9 @@
 +				     int wait);
 +
  #endif /* _PPC_KERNEL_OPEN_PIC_H */
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/page.h kernel-source-2.4.26/include/asm-ppc/page.h
---- kernel-source-2.4.26.orig/include/asm-ppc/page.h	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/include/asm-ppc/page.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/page.h kernel-source-2.4.27-benh/include/asm-ppc/page.h
+--- kernel-source-2.4.27/include/asm-ppc/page.h	2003-11-28 19:26:21.000000000 +0100
++++ kernel-source-2.4.27-benh/include/asm-ppc/page.h	2004-09-01 20:56:30.241521648 +0200
 @@ -34,7 +34,9 @@
  #include <asm/system.h> /* for xmon definition */
  
@@ -21508,9 +23792,9 @@
  	printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
  	xmon(0); \
  } while (0)
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/pgalloc.h kernel-source-2.4.26/include/asm-ppc/pgalloc.h
---- kernel-source-2.4.26.orig/include/asm-ppc/pgalloc.h	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/include/asm-ppc/pgalloc.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/pgalloc.h kernel-source-2.4.27-benh/include/asm-ppc/pgalloc.h
+--- kernel-source-2.4.27/include/asm-ppc/pgalloc.h	2003-11-28 19:26:21.000000000 +0100
++++ kernel-source-2.4.27-benh/include/asm-ppc/pgalloc.h	2004-09-01 20:56:30.243521344 +0200
 @@ -68,6 +68,7 @@
  	return ret;
  }
@@ -21562,9 +23846,9 @@
  
  extern __inline__ void pte_free_slow(pte_t *pte)
  {
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/pmac_feature.h kernel-source-2.4.26/include/asm-ppc/pmac_feature.h
---- kernel-source-2.4.26.orig/include/asm-ppc/pmac_feature.h	2003-08-25 13:44:44.000000000 +0200
-+++ kernel-source-2.4.26/include/asm-ppc/pmac_feature.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/pmac_feature.h kernel-source-2.4.27-benh/include/asm-ppc/pmac_feature.h
+--- kernel-source-2.4.27/include/asm-ppc/pmac_feature.h	2003-08-25 13:44:44.000000000 +0200
++++ kernel-source-2.4.27-benh/include/asm-ppc/pmac_feature.h	2004-09-01 20:56:30.323509184 +0200
 @@ -96,8 +96,8 @@
  #define PMAC_TYPE_UNKNOWN_CORE99	0x5f
  
@@ -21587,9 +23871,9 @@
  /*
   * Motherboard flags
   */
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/ppc4xx_serial.h kernel-source-2.4.26/include/asm-ppc/ppc4xx_serial.h
---- kernel-source-2.4.26.orig/include/asm-ppc/ppc4xx_serial.h	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/include/asm-ppc/ppc4xx_serial.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/ppc4xx_serial.h kernel-source-2.4.27-benh/include/asm-ppc/ppc4xx_serial.h
+--- kernel-source-2.4.27/include/asm-ppc/ppc4xx_serial.h	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/include/asm-ppc/ppc4xx_serial.h	2004-09-01 20:56:30.324509032 +0200
 @@ -0,0 +1,101 @@
 +/*
 + *    Copyright 2000 MontaVista Software Inc.
@@ -21692,9 +23976,9 @@
 +
 +#endif	/* __ASMPPC_PPC4xx_SERIAL_H */
 +#endif /* __KERNEL__ */
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/processor.h kernel-source-2.4.26/include/asm-ppc/processor.h
---- kernel-source-2.4.26.orig/include/asm-ppc/processor.h	2004-04-14 15:05:40.000000000 +0200
-+++ kernel-source-2.4.26/include/asm-ppc/processor.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/processor.h kernel-source-2.4.27-benh/include/asm-ppc/processor.h
+--- kernel-source-2.4.27/include/asm-ppc/processor.h	2004-04-14 15:05:40.000000000 +0200
++++ kernel-source-2.4.27-benh/include/asm-ppc/processor.h	2004-09-01 20:56:30.406496568 +0200
 @@ -296,6 +296,8 @@
  #define	  HID1_ABE	(1<<10)		/* 7450 Address Broadcast Enable */
  #define	SPRN_HID2	0x3F8	/* Hardware Implementation Register 2 */
@@ -21712,9 +23996,9 @@
  #ifdef CONFIG_BOOKE
  #define	SPRN_TCR	0x154	/* Book E Timer Control Register */
  #else
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/semaphore.h kernel-source-2.4.26/include/asm-ppc/semaphore.h
---- kernel-source-2.4.26.orig/include/asm-ppc/semaphore.h	2003-06-13 16:51:38.000000000 +0200
-+++ kernel-source-2.4.26/include/asm-ppc/semaphore.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/semaphore.h kernel-source-2.4.27-benh/include/asm-ppc/semaphore.h
+--- kernel-source-2.4.27/include/asm-ppc/semaphore.h	2003-06-13 16:51:38.000000000 +0200
++++ kernel-source-2.4.27-benh/include/asm-ppc/semaphore.h	2004-09-01 20:56:30.408496264 +0200
 @@ -87,9 +87,8 @@
  	/*
  	 * Try to get the semaphore, take the slow path if we fail.
@@ -21762,9 +24046,9 @@
  		__up(sem);
  }
  
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/smp.h kernel-source-2.4.26/include/asm-ppc/smp.h
---- kernel-source-2.4.26.orig/include/asm-ppc/smp.h	2003-06-13 16:51:38.000000000 +0200
-+++ kernel-source-2.4.26/include/asm-ppc/smp.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/smp.h kernel-source-2.4.27-benh/include/asm-ppc/smp.h
+--- kernel-source-2.4.27/include/asm-ppc/smp.h	2003-06-13 16:51:38.000000000 +0200
++++ kernel-source-2.4.27-benh/include/asm-ppc/smp.h	2004-09-01 20:56:30.488484104 +0200
 @@ -17,6 +17,8 @@
  
  #ifndef __ASSEMBLY__
@@ -21783,9 +24067,9 @@
  #endif /* !(CONFIG_SMP) */
  
  #endif /* !(_PPC_SMP_H) */
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/spinlock.h kernel-source-2.4.26/include/asm-ppc/spinlock.h
---- kernel-source-2.4.26.orig/include/asm-ppc/spinlock.h	2003-06-13 16:51:38.000000000 +0200
-+++ kernel-source-2.4.26/include/asm-ppc/spinlock.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/spinlock.h kernel-source-2.4.27-benh/include/asm-ppc/spinlock.h
+--- kernel-source-2.4.27/include/asm-ppc/spinlock.h	2003-06-13 16:51:38.000000000 +0200
++++ kernel-source-2.4.27-benh/include/asm-ppc/spinlock.h	2004-09-01 20:56:30.489483952 +0200
 @@ -70,7 +70,7 @@
  
  static inline void spin_unlock(spinlock_t *lock)
@@ -21813,9 +24097,9 @@
  	rw->lock = 0;
  }
  
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/uninorth.h kernel-source-2.4.26/include/asm-ppc/uninorth.h
---- kernel-source-2.4.26.orig/include/asm-ppc/uninorth.h	2003-08-25 13:44:44.000000000 +0200
-+++ kernel-source-2.4.26/include/asm-ppc/uninorth.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/asm-ppc/uninorth.h kernel-source-2.4.27-benh/include/asm-ppc/uninorth.h
+--- kernel-source-2.4.27/include/asm-ppc/uninorth.h	2003-08-25 13:44:44.000000000 +0200
++++ kernel-source-2.4.27-benh/include/asm-ppc/uninorth.h	2004-09-01 20:56:30.490483800 +0200
 @@ -131,5 +131,20 @@
  
  /* Uninorth 1.5 rev. has additional perf. monitor registers at 0xf00-0xf50 */
@@ -21837,9 +24121,9 @@
 +
  #endif /* __ASM_UNINORTH_H__ */
  #endif /* __KERNEL__ */
-diff -urN kernel-source-2.4.26.orig/include/linux/agp_backend.h kernel-source-2.4.26/include/linux/agp_backend.h
---- kernel-source-2.4.26.orig/include/linux/agp_backend.h	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/include/linux/agp_backend.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/linux/agp_backend.h kernel-source-2.4.27-benh/include/linux/agp_backend.h
+--- kernel-source-2.4.27/include/linux/agp_backend.h	2003-11-28 19:26:21.000000000 +0100
++++ kernel-source-2.4.27-benh/include/linux/agp_backend.h	2004-09-01 20:56:30.000000000 +0200
 @@ -101,7 +101,8 @@
  	ATI_RS300_100,
  	ATI_RS300_133,
@@ -21850,9 +24134,9 @@
  };
  
  typedef struct _agp_version {
-diff -urN kernel-source-2.4.26.orig/include/linux/blkdev.h kernel-source-2.4.26/include/linux/blkdev.h
---- kernel-source-2.4.26.orig/include/linux/blkdev.h	2004-02-18 14:36:32.000000000 +0100
-+++ kernel-source-2.4.26/include/linux/blkdev.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/linux/blkdev.h kernel-source-2.4.27-benh/include/linux/blkdev.h
+--- kernel-source-2.4.27/include/linux/blkdev.h	2004-02-18 14:36:32.000000000 +0100
++++ kernel-source-2.4.27-benh/include/linux/blkdev.h	2004-09-01 20:56:30.000000000 +0200
 @@ -63,6 +63,8 @@
  typedef int (make_request_fn) (request_queue_t *q, int rw, struct buffer_head *bh);
  typedef void (plug_device_fn) (request_queue_t *q, kdev_t device);
@@ -21887,9 +24171,9 @@
  extern inline int blk_seg_merge_ok(struct buffer_head *, struct buffer_head *);
  
  extern int * blk_size[MAX_BLKDEV];
-diff -urN kernel-source-2.4.26.orig/include/linux/cpufreq.h kernel-source-2.4.26/include/linux/cpufreq.h
---- kernel-source-2.4.26.orig/include/linux/cpufreq.h	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/include/linux/cpufreq.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/linux/cpufreq.h kernel-source-2.4.27-benh/include/linux/cpufreq.h
+--- kernel-source-2.4.27/include/linux/cpufreq.h	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/include/linux/cpufreq.h	2004-09-01 20:56:30.000000000 +0200
 @@ -0,0 +1,247 @@
 +/*
 + *  linux/include/linux/cpufreq.h
@@ -22138,9 +24422,9 @@
 +#endif /* CONFIG_CPU_FREQ_24_API */
 +
 +#endif /* _LINUX_CPUFREQ_H */
-diff -urN kernel-source-2.4.26.orig/include/linux/ioport.h kernel-source-2.4.26/include/linux/ioport.h
---- kernel-source-2.4.26.orig/include/linux/ioport.h	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/include/linux/ioport.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/linux/ioport.h kernel-source-2.4.27-benh/include/linux/ioport.h
+--- kernel-source-2.4.27/include/linux/ioport.h	2003-11-28 19:26:21.000000000 +0100
++++ kernel-source-2.4.27-benh/include/linux/ioport.h	2004-09-01 20:56:30.000000000 +0200
 @@ -85,6 +85,7 @@
  
  extern int check_resource(struct resource *root, unsigned long, unsigned long);
@@ -22149,9 +24433,9 @@
  extern int release_resource(struct resource *new);
  extern int allocate_resource(struct resource *root, struct resource *new,
  			     unsigned long size,
-diff -urN kernel-source-2.4.26.orig/include/linux/mm.h kernel-source-2.4.26/include/linux/mm.h
---- kernel-source-2.4.26.orig/include/linux/mm.h	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/include/linux/mm.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/linux/mm.h kernel-source-2.4.27-benh/include/linux/mm.h
+--- kernel-source-2.4.27/include/linux/mm.h	2003-11-28 19:26:21.000000000 +0100
++++ kernel-source-2.4.27-benh/include/linux/mm.h	2004-09-01 20:56:30.000000000 +0200
 @@ -637,11 +637,25 @@
  	return gfp_mask;
  }
@@ -22210,9 +24494,9 @@
  }
  
  /* Look up the first VMA which satisfies  addr < vm_end,  NULL if none. */
-diff -urN kernel-source-2.4.26.orig/include/linux/pci_ids.h kernel-source-2.4.26/include/linux/pci_ids.h
---- kernel-source-2.4.26.orig/include/linux/pci_ids.h	2004-07-20 14:05:56.000000000 +0200
-+++ kernel-source-2.4.26/include/linux/pci_ids.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/linux/pci_ids.h kernel-source-2.4.27-benh/include/linux/pci_ids.h
+--- kernel-source-2.4.27/include/linux/pci_ids.h	2004-08-24 07:53:14.000000000 +0200
++++ kernel-source-2.4.27-benh/include/linux/pci_ids.h	2004-09-01 20:56:30.000000000 +0200
 @@ -299,11 +299,21 @@
  /* Radeon R300 (9500) */
  #define PCI_DEVICE_ID_ATI_RADEON_AD	0x4144
@@ -22260,7 +24544,7 @@
  #define PCI_DEVICE_ID_IBM_CPC710_PCI64	0x00fc
  #define PCI_DEVICE_ID_IBM_CPC710_PCI32	0x0105
  #define	PCI_DEVICE_ID_IBM_405GP		0x0156
-@@ -758,6 +779,10 @@
+@@ -759,6 +780,10 @@
  #define PCI_DEVICE_ID_APPLE_UNI_N_AGP_P	0x0027
  #define PCI_DEVICE_ID_APPLE_UNI_N_AGP15	0x002d
  #define PCI_DEVICE_ID_APPLE_UNI_N_FW2	0x0030
@@ -22271,7 +24555,7 @@
  #define PCI_DEVICE_ID_APPLE_TIGON3	0x1645
  
  #define PCI_VENDOR_ID_YAMAHA		0x1073
-@@ -1001,6 +1026,17 @@
+@@ -1010,6 +1035,17 @@
  #define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS2	0x0151
  #define PCI_DEVICE_ID_NVIDIA_GEFORCE2_ULTRA	0x0152
  #define PCI_DEVICE_ID_NVIDIA_QUADRO2_PRO	0x0153
@@ -22288,8 +24572,8 @@
 +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_500_GOGL		0x017C
  #define PCI_DEVICE_ID_NVIDIA_IGEFORCE2		0x01a0
  #define PCI_DEVICE_ID_NVIDIA_NFORCE		0x01a4
- #define PCI_DEVICE_ID_NVIDIA_NFORCE_IDE		0x01bc
-@@ -1009,6 +1045,12 @@
+ #define PCI_DEVICE_ID_NVIDIA_MCP1_AUDIO		0x01b1
+@@ -1019,6 +1055,12 @@
  #define PCI_DEVICE_ID_NVIDIA_GEFORCE3_1		0x0201
  #define PCI_DEVICE_ID_NVIDIA_GEFORCE3_2		0x0202
  #define PCI_DEVICE_ID_NVIDIA_QUADRO_DDC		0x0203
@@ -22302,9 +24586,9 @@
  
  #define PCI_VENDOR_ID_IMS		0x10e0
  #define PCI_DEVICE_ID_IMS_8849		0x8849
-diff -urN kernel-source-2.4.26.orig/include/linux/pmu.h kernel-source-2.4.26/include/linux/pmu.h
---- kernel-source-2.4.26.orig/include/linux/pmu.h	2003-08-25 13:44:44.000000000 +0200
-+++ kernel-source-2.4.26/include/linux/pmu.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/linux/pmu.h kernel-source-2.4.27-benh/include/linux/pmu.h
+--- kernel-source-2.4.27/include/linux/pmu.h	2003-08-25 13:44:44.000000000 +0200
++++ kernel-source-2.4.27-benh/include/linux/pmu.h	2004-09-01 20:56:30.000000000 +0200
 @@ -69,6 +69,8 @@
  /* Bits in the environement message (either obtained via PMU_GET_COVER,
   * or via PMU_INT_ENVIRONMENT on core99 */
@@ -22331,10 +24615,10 @@
  
  extern int pmu_present(void);
  extern int pmu_get_model(void);
-diff -urN kernel-source-2.4.26.orig/include/linux/sysctl.h kernel-source-2.4.26/include/linux/sysctl.h
---- kernel-source-2.4.26.orig/include/linux/sysctl.h	2004-07-20 14:05:56.000000000 +0200
-+++ kernel-source-2.4.26/include/linux/sysctl.h	2004-07-31 18:36:22.000000000 +0200
-@@ -156,6 +156,7 @@
+diff -urN kernel-source-2.4.27/include/linux/sysctl.h kernel-source-2.4.27-benh/include/linux/sysctl.h
+--- kernel-source-2.4.27/include/linux/sysctl.h	2004-08-24 07:53:14.000000000 +0200
++++ kernel-source-2.4.27-benh/include/linux/sysctl.h	2004-09-01 20:56:31.000000000 +0200
+@@ -157,6 +157,7 @@
  	VM_MAPPED_RATIO=20,     /* amount of unfreeable pages that triggers swapout */
  	VM_LAPTOP_MODE=21,	/* kernel in laptop flush mode */
  	VM_BLOCK_DUMP=22,	/* dump fs activity to log */
@@ -22342,9 +24626,9 @@
  };
  
  
-diff -urN kernel-source-2.4.26.orig/include/linux/wait.h kernel-source-2.4.26/include/linux/wait.h
---- kernel-source-2.4.26.orig/include/linux/wait.h	2003-08-25 13:44:44.000000000 +0200
-+++ kernel-source-2.4.26/include/linux/wait.h	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/include/linux/wait.h kernel-source-2.4.27-benh/include/linux/wait.h
+--- kernel-source-2.4.27/include/linux/wait.h	2003-08-25 13:44:44.000000000 +0200
++++ kernel-source-2.4.27-benh/include/linux/wait.h	2004-09-01 20:56:31.000000000 +0200
 @@ -90,11 +90,17 @@
   * spurious .aligns.
   */
@@ -22373,9 +24657,9 @@
  			(x)->__magic, (long)&((x)->__magic), (x)->__creator);	\
  			WQ_BUG();						\
  		}								\
-diff -urN kernel-source-2.4.26.orig/init/main.c kernel-source-2.4.26/init/main.c
---- kernel-source-2.4.26.orig/init/main.c	2004-07-20 14:05:56.000000000 +0200
-+++ kernel-source-2.4.26/init/main.c	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/init/main.c kernel-source-2.4.27-benh/init/main.c
+--- kernel-source-2.4.27/init/main.c	2004-08-24 07:53:15.000000000 +0200
++++ kernel-source-2.4.27-benh/init/main.c	2004-09-01 20:56:31.211374208 +0200
 @@ -162,7 +162,7 @@
     better than 1% */
  #define LPS_PREC 8
@@ -22385,9 +24669,9 @@
  {
  	unsigned long ticks, loopbit;
  	int lps_precision = LPS_PREC;
-diff -urN kernel-source-2.4.26.orig/kernel/cpufreq.c kernel-source-2.4.26/kernel/cpufreq.c
---- kernel-source-2.4.26.orig/kernel/cpufreq.c	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/kernel/cpufreq.c	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/kernel/cpufreq.c kernel-source-2.4.27-benh/kernel/cpufreq.c
+--- kernel-source-2.4.27/kernel/cpufreq.c	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/kernel/cpufreq.c	2004-09-01 20:56:31.291362048 +0200
 @@ -0,0 +1,1130 @@
 +/*
 + *  linux/kernel/cpufreq.c
@@ -23519,9 +25803,9 @@
 +#define cpufreq_restore()
 +#endif /* CONFIG_PM */
 +
-diff -urN kernel-source-2.4.26.orig/kernel/Makefile kernel-source-2.4.26/kernel/Makefile
---- kernel-source-2.4.26.orig/kernel/Makefile	2004-07-20 14:05:56.000000000 +0200
-+++ kernel-source-2.4.26/kernel/Makefile	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/kernel/Makefile kernel-source-2.4.27-benh/kernel/Makefile
+--- kernel-source-2.4.27/kernel/Makefile	2004-08-24 07:53:15.000000000 +0200
++++ kernel-source-2.4.27-benh/kernel/Makefile	2004-09-01 20:56:31.292361896 +0200
 @@ -9,7 +9,7 @@
  
  O_TARGET := kernel.o
@@ -23539,9 +25823,9 @@
  
  ifneq ($(CONFIG_IA64),y)
  # According to Alan Modra <alan@linuxcare.com.au>, the -fno-omit-frame-pointer is
-diff -urN kernel-source-2.4.26.orig/kernel/panic.c kernel-source-2.4.26/kernel/panic.c
---- kernel-source-2.4.26.orig/kernel/panic.c	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/kernel/panic.c	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/kernel/panic.c kernel-source-2.4.27-benh/kernel/panic.c
+--- kernel-source-2.4.27/kernel/panic.c	2004-08-24 07:53:14.000000000 +0200
++++ kernel-source-2.4.27-benh/kernel/panic.c	2004-09-01 20:56:31.293361744 +0200
 @@ -51,6 +51,10 @@
  #if defined(CONFIG_ARCH_S390)
          unsigned long caller = (unsigned long) __builtin_return_address(0);
@@ -23553,9 +25837,9 @@
  
  #ifdef CONFIG_VT
  	disable_console_blank();
-diff -urN kernel-source-2.4.26.orig/kernel/printk.c kernel-source-2.4.26/kernel/printk.c
---- kernel-source-2.4.26.orig/kernel/printk.c	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/kernel/printk.c	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/kernel/printk.c kernel-source-2.4.27-benh/kernel/printk.c
+--- kernel-source-2.4.27/kernel/printk.c	2003-11-28 19:26:21.000000000 +0100
++++ kernel-source-2.4.27-benh/kernel/printk.c	2004-09-01 20:56:31.367350496 +0200
 @@ -26,7 +26,10 @@
  #include <linux/module.h>
  #include <linux/interrupt.h>			/* For in_interrupt() */
@@ -23607,9 +25891,9 @@
  	}
  	console_may_schedule = 0;
  	up(&console_sem);
-diff -urN kernel-source-2.4.26.orig/kernel/resource.c kernel-source-2.4.26/kernel/resource.c
---- kernel-source-2.4.26.orig/kernel/resource.c	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/kernel/resource.c	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/kernel/resource.c kernel-source-2.4.27-benh/kernel/resource.c
+--- kernel-source-2.4.27/kernel/resource.c	2003-11-28 19:26:21.000000000 +0100
++++ kernel-source-2.4.27-benh/kernel/resource.c	2004-09-01 20:56:31.369350192 +0200
 @@ -163,9 +163,24 @@
  	write_lock(&resource_lock);
  	conflict = __request_resource(root, new);
@@ -23635,10 +25919,10 @@
  int release_resource(struct resource *old)
  {
  	int retval;
-diff -urN kernel-source-2.4.26.orig/kernel/sysctl.c kernel-source-2.4.26/kernel/sysctl.c
---- kernel-source-2.4.26.orig/kernel/sysctl.c	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/kernel/sysctl.c	2004-07-31 18:36:22.000000000 +0200
-@@ -302,6 +302,8 @@
+diff -urN kernel-source-2.4.27/kernel/sysctl.c kernel-source-2.4.27-benh/kernel/sysctl.c
+--- kernel-source-2.4.27/kernel/sysctl.c	2004-08-08 01:26:06.000000000 +0200
++++ kernel-source-2.4.27-benh/kernel/sysctl.c	2004-09-01 20:56:31.444338792 +0200
+@@ -305,6 +305,8 @@
  	 &pgt_cache_water, 2*sizeof(int), 0644, NULL, &proc_dointvec},
  	{VM_PAGE_CLUSTER, "page-cluster", 
  	 &page_cluster, sizeof(int), 0644, NULL, &proc_dointvec},
@@ -23647,10 +25931,10 @@
  	{VM_MIN_READAHEAD, "min-readahead",
  	&vm_min_readahead,sizeof(int), 0644, NULL, &proc_dointvec},
  	{VM_MAX_READAHEAD, "max-readahead",
-diff -urN kernel-source-2.4.26.orig/MAINTAINERS kernel-source-2.4.26/MAINTAINERS
---- kernel-source-2.4.26.orig/MAINTAINERS	2004-07-20 14:05:57.000000000 +0200
-+++ kernel-source-2.4.26/MAINTAINERS	2004-07-31 18:36:22.000000000 +0200
-@@ -1359,7 +1359,7 @@
+diff -urN kernel-source-2.4.27/MAINTAINERS kernel-source-2.4.27-benh/MAINTAINERS
+--- kernel-source-2.4.27/MAINTAINERS	2004-08-24 07:53:15.000000000 +0200
++++ kernel-source-2.4.27-benh/MAINTAINERS	2004-09-01 20:56:31.670304440 +0200
+@@ -1376,7 +1376,7 @@
  NVIDIA (RIVA) FRAMEBUFFER DRIVER
  P:	Ani Joshi
  M:	ajoshi@kernel.crashing.org
@@ -23659,9 +25943,9 @@
  S:	Maintained
  
  OLYMPIC NETWORK DRIVER
-diff -urN kernel-source-2.4.26.orig/mm/highmem.c kernel-source-2.4.26/mm/highmem.c
---- kernel-source-2.4.26.orig/mm/highmem.c	2003-06-13 16:51:39.000000000 +0200
-+++ kernel-source-2.4.26/mm/highmem.c	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/mm/highmem.c kernel-source-2.4.27-benh/mm/highmem.c
+--- kernel-source-2.4.27/mm/highmem.c	2003-06-13 16:51:39.000000000 +0200
++++ kernel-source-2.4.27-benh/mm/highmem.c	2004-09-01 20:56:31.672304136 +0200
 @@ -121,6 +121,17 @@
  		}
  	}
@@ -23680,9 +25964,9 @@
  	set_pte(&(pkmap_page_table[last_pkmap_nr]), mk_pte(page, kmap_prot));
  
  	pkmap_count[last_pkmap_nr] = 1;
-diff -urN kernel-source-2.4.26.orig/mm/memory.c kernel-source-2.4.26/mm/memory.c
---- kernel-source-2.4.26.orig/mm/memory.c	2003-11-28 19:26:21.000000000 +0100
-+++ kernel-source-2.4.26/mm/memory.c	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/mm/memory.c kernel-source-2.4.27-benh/mm/memory.c
+--- kernel-source-2.4.27/mm/memory.c	2003-11-28 19:26:21.000000000 +0100
++++ kernel-source-2.4.27-benh/mm/memory.c	2004-09-01 20:56:31.817282096 +0200
 @@ -102,6 +102,24 @@
  		return;
  	}
@@ -23736,9 +26020,9 @@
  	return error;
  }
  
-diff -urN kernel-source-2.4.26.orig/mm/mmap.c kernel-source-2.4.26/mm/mmap.c
---- kernel-source-2.4.26.orig/mm/mmap.c	2004-02-18 14:36:32.000000000 +0100
-+++ kernel-source-2.4.26/mm/mmap.c	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/mm/mmap.c kernel-source-2.4.27-benh/mm/mmap.c
+--- kernel-source-2.4.27/mm/mmap.c	2004-02-18 14:36:32.000000000 +0100
++++ kernel-source-2.4.27-benh/mm/mmap.c	2004-09-01 20:56:31.891270848 +0200
 @@ -46,6 +46,7 @@
  };
  
@@ -23783,9 +26067,9 @@
  		return NULL;
  	if (vma->vm_flags & VM_LOCKED) {
  		make_pages_present(addr, start);
-diff -urN kernel-source-2.4.26.orig/README.BENH kernel-source-2.4.26/README.BENH
---- kernel-source-2.4.26.orig/README.BENH	1970-01-01 01:00:00.000000000 +0100
-+++ kernel-source-2.4.26/README.BENH	2004-07-31 18:36:22.000000000 +0200
+diff -urN kernel-source-2.4.27/README.BENH kernel-source-2.4.27-benh/README.BENH
+--- kernel-source-2.4.27/README.BENH	1970-01-01 01:00:00.000000000 +0100
++++ kernel-source-2.4.27-benh/README.BENH	2004-09-01 20:56:31.892270696 +0200
 @@ -0,0 +1,27 @@
 +Welcome to my PowerMac tree.
 +

Modified: trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/powerpc/pieces/pegasos.diff
===================================================================
--- trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/powerpc/pieces/pegasos.diff	2004-09-01 05:15:32 UTC (rev 1502)
+++ trunk/kernel-2.4/powerpc/kernel-patch-powerpc-2.4.27-2.4.27/powerpc/pieces/pegasos.diff	2004-09-01 19:43:37 UTC (rev 1503)
@@ -1,7 +1,7 @@
-diff -urN kernel-source-2.4.26-asfs/arch/ppc/kernel/pci.c kernel-source-2.4.26-pegasos/arch/ppc/kernel/pci.c
---- kernel-source-2.4.26-asfs/arch/ppc/kernel/pci.c	2004-06-30 17:01:45.000000000 +0200
-+++ kernel-source-2.4.26-pegasos/arch/ppc/kernel/pci.c	2004-07-01 14:56:41.636114440 +0200
-@@ -1334,6 +1334,8 @@
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/pci.c kernel-source-2.4.27-pegasos/arch/ppc/kernel/pci.c
+--- kernel-source-2.4.27/arch/ppc/kernel/pci.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-pegasos/arch/ppc/kernel/pci.c	2004-09-01 21:07:12.149936736 +0200
+@@ -1280,6 +1280,8 @@
  #ifdef CONFIG_ALL_PPC
  	if (machine_is_compatible("MacRISC"))
  		bus_offset = 0x10;
@@ -10,10 +10,10 @@
  	else
  #endif
  		bus_offset = 1;
-diff -urN kernel-source-2.4.26-asfs/arch/ppc/kernel/prom.c kernel-source-2.4.26-pegasos/arch/ppc/kernel/prom.c
---- kernel-source-2.4.26-asfs/arch/ppc/kernel/prom.c	2004-06-30 17:01:45.000000000 +0200
-+++ kernel-source-2.4.26-pegasos/arch/ppc/kernel/prom.c	2004-07-01 14:54:30.387067328 +0200
-@@ -905,6 +905,20 @@
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/prom.c kernel-source-2.4.27-pegasos/arch/ppc/kernel/prom.c
+--- kernel-source-2.4.27/arch/ppc/kernel/prom.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-pegasos/arch/ppc/kernel/prom.c	2004-09-01 21:07:12.151936432 +0200
+@@ -894,6 +894,20 @@
  	return device_is_compatible(root, compat);
  }
  
@@ -34,10 +34,10 @@
  /*
   * Construct and return a list of the device_nodes with a given type
   * and compatible property.
-diff -urN kernel-source-2.4.26-asfs/arch/ppc/kernel/prom_init.c kernel-source-2.4.26-pegasos/arch/ppc/kernel/prom_init.c
---- kernel-source-2.4.26-asfs/arch/ppc/kernel/prom_init.c	2004-06-30 17:01:45.000000000 +0200
-+++ kernel-source-2.4.26-pegasos/arch/ppc/kernel/prom_init.c	2004-07-01 14:54:30.478053496 +0200
-@@ -789,6 +789,9 @@
+diff -urN kernel-source-2.4.27/arch/ppc/kernel/prom_init.c kernel-source-2.4.27-pegasos/arch/ppc/kernel/prom_init.c
+--- kernel-source-2.4.27/arch/ppc/kernel/prom_init.c	2003-11-28 19:26:19.000000000 +0100
++++ kernel-source-2.4.27-pegasos/arch/ppc/kernel/prom_init.c	2004-09-01 21:07:12.153936128 +0200
+@@ -765,6 +765,9 @@
  	char *p, *d;
   	unsigned long phys;
  	void *result[3];
@@ -47,7 +47,7 @@
  
   	/* Default */
   	phys = (unsigned long) &_stext;
-@@ -880,6 +883,10 @@
+@@ -856,6 +859,10 @@
  	prom_print("from prom_init\n");
  	prom_stdout = 0;
  
@@ -58,9 +58,9 @@
  	return phys;
  }
  
-diff -urN kernel-source-2.4.26-asfs/arch/ppc/platforms/chrp_pci.c kernel-source-2.4.26-pegasos/arch/ppc/platforms/chrp_pci.c
---- kernel-source-2.4.26-asfs/arch/ppc/platforms/chrp_pci.c	2003-06-01 05:06:23.000000000 +0200
-+++ kernel-source-2.4.26-pegasos/arch/ppc/platforms/chrp_pci.c	2004-07-01 14:54:30.652027048 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/chrp_pci.c kernel-source-2.4.27-pegasos/arch/ppc/platforms/chrp_pci.c
+--- kernel-source-2.4.27/arch/ppc/platforms/chrp_pci.c	2003-06-13 16:51:31.000000000 +0200
++++ kernel-source-2.4.27-pegasos/arch/ppc/platforms/chrp_pci.c	2004-09-01 21:07:12.155935824 +0200
 @@ -158,6 +158,111 @@
  	rtas_write_config_dword
  };
@@ -214,9 +214,9 @@
         else
                 ppc_md.pcibios_fixup = chrp_pcibios_fixup;
  }
-diff -urN kernel-source-2.4.26-asfs/arch/ppc/platforms/chrp_setup.c kernel-source-2.4.26-pegasos/arch/ppc/platforms/chrp_setup.c
---- kernel-source-2.4.26-asfs/arch/ppc/platforms/chrp_setup.c	2003-08-30 08:01:33.000000000 +0200
-+++ kernel-source-2.4.26-pegasos/arch/ppc/platforms/chrp_setup.c	2004-07-01 14:54:30.739013824 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/chrp_setup.c kernel-source-2.4.27-pegasos/arch/ppc/platforms/chrp_setup.c
+--- kernel-source-2.4.27/arch/ppc/platforms/chrp_setup.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-pegasos/arch/ppc/platforms/chrp_setup.c	2004-09-01 21:07:12.157935520 +0200
 @@ -220,6 +220,37 @@
  	}
  }
@@ -317,9 +317,9 @@
  
  	ppc_md.init           = chrp_init2;
  
-diff -urN kernel-source-2.4.26-asfs/arch/ppc/platforms/chrp_time.c kernel-source-2.4.26-pegasos/arch/ppc/platforms/chrp_time.c
---- kernel-source-2.4.26-asfs/arch/ppc/platforms/chrp_time.c	2003-08-30 08:01:33.000000000 +0200
-+++ kernel-source-2.4.26-pegasos/arch/ppc/platforms/chrp_time.c	2004-07-01 14:54:30.741013520 +0200
+diff -urN kernel-source-2.4.27/arch/ppc/platforms/chrp_time.c kernel-source-2.4.27-pegasos/arch/ppc/platforms/chrp_time.c
+--- kernel-source-2.4.27/arch/ppc/platforms/chrp_time.c	2003-08-25 13:44:40.000000000 +0200
++++ kernel-source-2.4.27-pegasos/arch/ppc/platforms/chrp_time.c	2004-09-01 21:07:12.157935520 +0200
 @@ -41,8 +41,11 @@
  	int base;
  
@@ -332,9 +332,9 @@
  	base = rtcs->addrs[0].address;
  	nvram_as1 = 0;
  	nvram_as0 = base;
-diff -urN kernel-source-2.4.26-asfs/drivers/ide/pci/via82cxxx.c kernel-source-2.4.26-pegasos/drivers/ide/pci/via82cxxx.c
---- kernel-source-2.4.26-asfs/drivers/ide/pci/via82cxxx.c	2003-08-30 08:01:37.000000000 +0200
-+++ kernel-source-2.4.26-pegasos/drivers/ide/pci/via82cxxx.c	2004-07-01 14:54:11.709906688 +0200
+diff -urN kernel-source-2.4.27/drivers/ide/pci/via82cxxx.c kernel-source-2.4.27-pegasos/drivers/ide/pci/via82cxxx.c
+--- kernel-source-2.4.27/drivers/ide/pci/via82cxxx.c	2003-08-25 13:44:41.000000000 +0200
++++ kernel-source-2.4.27-pegasos/drivers/ide/pci/via82cxxx.c	2004-09-01 21:07:12.231924272 +0200
 @@ -90,6 +90,7 @@
  	{ "vt82c586b",	PCI_DEVICE_ID_VIA_82C586_0, 0x30, 0x3f, VIA_UDMA_33 | VIA_SET_FIFO },
  	{ "vt82c586a",	PCI_DEVICE_ID_VIA_82C586_0, 0x20, 0x2f, VIA_UDMA_33 | VIA_SET_FIFO },
@@ -352,10 +352,10 @@
  	for (i = 0; i < 2; i++) {
  		hwif->drives[i].io_32bit = 1;
  		hwif->drives[i].unmask = (via_config->flags & VIA_NO_UNMASK) ? 0 : 1;
-diff -urN kernel-source-2.4.26-asfs/drivers/net/via-rhine.c kernel-source-2.4.26-pegasos/drivers/net/via-rhine.c
---- kernel-source-2.4.26-asfs/drivers/net/via-rhine.c	2003-11-29 10:53:36.000000000 +0100
-+++ kernel-source-2.4.26-pegasos/drivers/net/via-rhine.c	2004-07-01 14:54:08.665369528 +0200
-@@ -740,7 +740,7 @@
+diff -urN kernel-source-2.4.27/drivers/net/via-rhine.c kernel-source-2.4.27-pegasos/drivers/net/via-rhine.c
+--- kernel-source-2.4.27/drivers/net/via-rhine.c	2004-08-24 07:53:14.000000000 +0200
++++ kernel-source-2.4.27-pegasos/drivers/net/via-rhine.c	2004-09-01 21:07:12.234923816 +0200
+@@ -750,7 +750,7 @@
  
  	if (!is_valid_ether_addr(dev->dev_addr)) {
  		printk(KERN_ERR "Invalid MAC address for card #%d\n", card_idx);
@@ -364,10 +364,23 @@
  	}
  
  	if (chip_id == VT6102) {
-diff -urN kernel-source-2.4.26-asfs/include/linux/pci_ids.h kernel-source-2.4.26-pegasos/include/linux/pci_ids.h
---- kernel-source-2.4.26-asfs/include/linux/pci_ids.h	2004-06-30 17:02:18.000000000 +0200
-+++ kernel-source-2.4.26-pegasos/include/linux/pci_ids.h	2004-07-01 14:54:01.000000000 +0200
-@@ -1353,10 +1353,12 @@
+diff -urN kernel-source-2.4.27/include/asm-ppc/pci-bridge.h kernel-source-2.4.27-pegasos/include/asm-ppc/pci-bridge.h
+--- kernel-source-2.4.27/include/asm-ppc/pci-bridge.h	2003-08-25 13:44:44.000000000 +0200
++++ kernel-source-2.4.27-pegasos/include/asm-ppc/pci-bridge.h	2004-09-01 21:07:12.239923056 +0200
+@@ -85,6 +85,9 @@
+ 	 */
+ 	struct resource io_space;
+ 	struct resource mem_space;
++
++	/* Pegasos 2 magic mapping */
++	volatile unsigned int *cfg_peg2_magic;
+ };
+ 
+ /* These are used for config access before all the PCI probing
+diff -urN kernel-source-2.4.27/include/linux/pci_ids.h kernel-source-2.4.27-pegasos/include/linux/pci_ids.h
+--- kernel-source-2.4.27/include/linux/pci_ids.h	2004-08-24 07:53:14.000000000 +0200
++++ kernel-source-2.4.27-pegasos/include/linux/pci_ids.h	2004-09-01 21:07:12.238923208 +0200
+@@ -1330,10 +1330,12 @@
  #define PCI_SUBDEVICE_ID_KEYSPAN_SX2	0x5334
  
  #define PCI_VENDOR_ID_GALILEO		0x11ab
@@ -380,16 +393,3 @@
  
  #define PCI_VENDOR_ID_LITEON		0x11ad
  #define PCI_DEVICE_ID_LITEON_LNE100TX	0x0002
-diff -urN kernel-source-2.4.26.orig/include/asm-ppc/pci-bridge.h kernel-source-2.4.26/include/asm-ppc/pci-bridge.h
---- kernel-source-2.4.26.orig/include/asm-ppc/pci-bridge.h	2003-08-30 08:01:48.000000000 +0200
-+++ kernel-source-2.4.26/include/asm-ppc/pci-bridge.h	2004-04-08 16:45:00.000000000 +0200
-@@ -85,6 +85,9 @@
- 	 */
- 	struct resource io_space;
- 	struct resource mem_space;
-+
-+	/* Pegasos 2 magic mapping */
-+	volatile unsigned int *cfg_peg2_magic;
- };
- 
- /* These are used for config access before all the PCI probing