Hello community,
here is the log from the commit of package kernel-source
checked in at Fri May 9 22:09:02 CEST 2008.
--------
--- kernel-source/kernel-debug.changes 2008-05-07 20:22:21.000000000 +0200
+++ kernel-source/kernel-debug.changes 2008-05-08 22:25:41.978551000 +0200
@@ -1,0 +2,23 @@
+Thu May 8 20:59:42 CEST 2008 - gregkh@suse.de
+
+- comment out vmware patch as it should no longer be needed
+
+-------------------------------------------------------------------
+Thu May 8 20:43:11 CEST 2008 - gregkh@suse.de
+
+- rediff patches to apply cleanly.
+
+-------------------------------------------------------------------
+Thu May 8 20:35:09 CEST 2008 - gregkh@suse.de
+
+- Update to 2.6.25.3-rc1
+ - potential fix for increased power consumption and other bugs
+
+-------------------------------------------------------------------
+Thu May 8 12:26:19 CEST 2008 - sassmann@suse.de
+
+- Update config file ppc64.
+- patches.arch/ppc-ps3-ps3vram-mtd.patch: ps3vram driver that
+ allows you to access the extra ~240MB of DDR video.
+
+-------------------------------------------------------------------
kernel-default.changes: same change
kernel-dummy.changes: same change
kernel-kdump.changes: same change
kernel-pae.changes: same change
kernel-ppc64.changes: same change
kernel-ps3.changes: same change
kernel-s390.changes: same change
kernel-source.changes: same change
kernel-syms.changes: same change
kernel-vanilla.changes: same change
kernel-xen.changes: same change
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kernel-debug.spec ++++++
--- /var/tmp/diff_new_pack.R14408/_old 2008-05-09 22:03:24.000000000 +0200
+++ /var/tmp/diff_new_pack.R14408/_new 2008-05-09 22:03:24.000000000 +0200
@@ -43,7 +43,7 @@
Name: kernel-debug
Summary: A Debug Version of the Kernel
Version: 2.6.25.2
-Release: 1
+Release: 3
License: GPL v2 or later
Group: System/Kernel
Url: http://www.kernel.org/
@@ -190,7 +190,7 @@
-Source Timestamp: 2008-05-07 18:33:03 +0200
+Source Timestamp: 2008-05-08 21:04:16 +0200
%prep
if ! [ -e %_sourcedir/linux-2.6.25.tar.bz2 ]; then
@@ -588,6 +588,17 @@
%files -f kernel.files
%changelog
+* Thu May 08 2008 gregkh@suse.de
+- comment out vmware patch as it should no longer be needed
+* Thu May 08 2008 gregkh@suse.de
+- rediff patches to apply cleanly.
+* Thu May 08 2008 gregkh@suse.de
+- Update to 2.6.25.3-rc1
+ - potential fix for increased power consumption and other bugs
+* Thu May 08 2008 sassmann@suse.de
+- Update config file ppc64.
+- patches.arch/ppc-ps3-ps3vram-mtd.patch: ps3vram driver that
+ allows you to access the extra ~240MB of DDR video.
* Wed May 07 2008 gregkh@suse.de
- patches.kernel.org/patch-2.6.25.1-2: Linux 2.6.25.2.
- fixes CVE-2008-1669
kernel-default.spec: same change
++++++ kernel-dummy.spec ++++++
--- /var/tmp/diff_new_pack.R14408/_old 2008-05-09 22:03:24.000000000 +0200
+++ /var/tmp/diff_new_pack.R14408/_new 2008-05-09 22:03:24.000000000 +0200
@@ -16,7 +16,7 @@
Name: kernel-dummy
Summary: Internal dummy package for synchronizing release numbers
Version: 2.6.25.2
-Release: 1
+Release: 3
License: GPL v2 or later
Group: System/Kernel
AutoReqProv: off
@@ -29,7 +29,7 @@
--------
Andreas Gruenbacher
-Source Timestamp: 2008-05-07 18:33:03 +0200
+Source Timestamp: 2008-05-08 21:04:16 +0200
%install
rm -rf %buildroot
@@ -40,6 +40,17 @@
%defattr(-, root, root)
/etc/dummy
%changelog
+* Thu May 08 2008 gregkh@suse.de
+- comment out vmware patch as it should no longer be needed
+* Thu May 08 2008 gregkh@suse.de
+- rediff patches to apply cleanly.
+* Thu May 08 2008 gregkh@suse.de
+- Update to 2.6.25.3-rc1
+ - potential fix for increased power consumption and other bugs
+* Thu May 08 2008 sassmann@suse.de
+- Update config file ppc64.
+- patches.arch/ppc-ps3-ps3vram-mtd.patch: ps3vram driver that
+ allows you to access the extra ~240MB of DDR video.
* Wed May 07 2008 gregkh@suse.de
- patches.kernel.org/patch-2.6.25.1-2: Linux 2.6.25.2.
- fixes CVE-2008-1669
++++++ kernel-kdump.spec ++++++
--- /var/tmp/diff_new_pack.R14408/_old 2008-05-09 22:03:24.000000000 +0200
+++ /var/tmp/diff_new_pack.R14408/_new 2008-05-09 22:03:24.000000000 +0200
@@ -43,7 +43,7 @@
Name: kernel-kdump
Summary: kernel for kdump
Version: 2.6.25.2
-Release: 1
+Release: 3
License: GPL v2 or later
Group: System/Kernel
Url: http://lse.sourceforge.net/kdump/
@@ -189,7 +189,7 @@
-Source Timestamp: 2008-05-07 18:33:03 +0200
+Source Timestamp: 2008-05-08 21:04:16 +0200
%prep
if ! [ -e %_sourcedir/linux-2.6.25.tar.bz2 ]; then
@@ -587,6 +587,17 @@
%files -f kernel.files
%changelog
+* Thu May 08 2008 gregkh@suse.de
+- comment out vmware patch as it should no longer be needed
+* Thu May 08 2008 gregkh@suse.de
+- rediff patches to apply cleanly.
+* Thu May 08 2008 gregkh@suse.de
+- Update to 2.6.25.3-rc1
+ - potential fix for increased power consumption and other bugs
+* Thu May 08 2008 sassmann@suse.de
+- Update config file ppc64.
+- patches.arch/ppc-ps3-ps3vram-mtd.patch: ps3vram driver that
+ allows you to access the extra ~240MB of DDR video.
* Wed May 07 2008 gregkh@suse.de
- patches.kernel.org/patch-2.6.25.1-2: Linux 2.6.25.2.
- fixes CVE-2008-1669
++++++ kernel-pae.spec ++++++
--- /var/tmp/diff_new_pack.R14408/_old 2008-05-09 22:03:25.000000000 +0200
+++ /var/tmp/diff_new_pack.R14408/_new 2008-05-09 22:03:25.000000000 +0200
@@ -43,7 +43,7 @@
Name: kernel-pae
Summary: Kernel with PAE Support
Version: 2.6.25.2
-Release: 1
+Release: 3
License: GPL v2 or later
Group: System/Kernel
Url: http://www.kernel.org/
@@ -185,7 +185,7 @@
-Source Timestamp: 2008-05-07 18:33:03 +0200
+Source Timestamp: 2008-05-08 21:04:16 +0200
%prep
if ! [ -e %_sourcedir/linux-2.6.25.tar.bz2 ]; then
@@ -583,6 +583,17 @@
%files -f kernel.files
%changelog
+* Thu May 08 2008 gregkh@suse.de
+- comment out vmware patch as it should no longer be needed
+* Thu May 08 2008 gregkh@suse.de
+- rediff patches to apply cleanly.
+* Thu May 08 2008 gregkh@suse.de
+- Update to 2.6.25.3-rc1
+ - potential fix for increased power consumption and other bugs
+* Thu May 08 2008 sassmann@suse.de
+- Update config file ppc64.
+- patches.arch/ppc-ps3-ps3vram-mtd.patch: ps3vram driver that
+ allows you to access the extra ~240MB of DDR video.
* Wed May 07 2008 gregkh@suse.de
- patches.kernel.org/patch-2.6.25.1-2: Linux 2.6.25.2.
- fixes CVE-2008-1669
++++++ kernel-ppc64.spec ++++++
--- /var/tmp/diff_new_pack.R14408/_old 2008-05-09 22:03:25.000000000 +0200
+++ /var/tmp/diff_new_pack.R14408/_new 2008-05-09 22:03:25.000000000 +0200
@@ -43,7 +43,7 @@
Name: kernel-ppc64
Summary: Kernel for ppc64 Systems
Version: 2.6.25.2
-Release: 1
+Release: 3
License: GPL v2 or later; LGPL v2.1 or later
Group: System/Kernel
Url: http://www.kernel.org/
@@ -202,7 +202,7 @@
Tom Gall
see /usr/src/linux/CREDITS for more details.
-Source Timestamp: 2008-05-07 18:33:03 +0200
+Source Timestamp: 2008-05-08 21:04:16 +0200
%prep
if ! [ -e %_sourcedir/linux-2.6.25.tar.bz2 ]; then
@@ -600,6 +600,17 @@
%files -f kernel.files
%changelog
+* Thu May 08 2008 gregkh@suse.de
+- comment out vmware patch as it should no longer be needed
+* Thu May 08 2008 gregkh@suse.de
+- rediff patches to apply cleanly.
+* Thu May 08 2008 gregkh@suse.de
+- Update to 2.6.25.3-rc1
+ - potential fix for increased power consumption and other bugs
+* Thu May 08 2008 sassmann@suse.de
+- Update config file ppc64.
+- patches.arch/ppc-ps3-ps3vram-mtd.patch: ps3vram driver that
+ allows you to access the extra ~240MB of DDR video.
* Wed May 07 2008 gregkh@suse.de
- patches.kernel.org/patch-2.6.25.1-2: Linux 2.6.25.2.
- fixes CVE-2008-1669
++++++ kernel-ps3.spec ++++++
--- /var/tmp/diff_new_pack.R14408/_old 2008-05-09 22:03:25.000000000 +0200
+++ /var/tmp/diff_new_pack.R14408/_new 2008-05-09 22:03:25.000000000 +0200
@@ -43,7 +43,7 @@
Name: kernel-ps3
Summary: kernel for ps3 bootloader
Version: 2.6.25.2
-Release: 1
+Release: 3
License: GPL v2 or later
Group: System/Kernel
Url: http://www.kernel.org/
@@ -188,7 +188,7 @@
-Source Timestamp: 2008-05-07 18:33:03 +0200
+Source Timestamp: 2008-05-08 21:04:16 +0200
%prep
if ! [ -e %_sourcedir/linux-2.6.25.tar.bz2 ]; then
@@ -586,6 +586,17 @@
%files -f kernel.files
%changelog
+* Thu May 08 2008 gregkh@suse.de
+- comment out vmware patch as it should no longer be needed
+* Thu May 08 2008 gregkh@suse.de
+- rediff patches to apply cleanly.
+* Thu May 08 2008 gregkh@suse.de
+- Update to 2.6.25.3-rc1
+ - potential fix for increased power consumption and other bugs
+* Thu May 08 2008 sassmann@suse.de
+- Update config file ppc64.
+- patches.arch/ppc-ps3-ps3vram-mtd.patch: ps3vram driver that
+ allows you to access the extra ~240MB of DDR video.
* Wed May 07 2008 gregkh@suse.de
- patches.kernel.org/patch-2.6.25.1-2: Linux 2.6.25.2.
- fixes CVE-2008-1669
++++++ kernel-s390.spec ++++++
--- /var/tmp/diff_new_pack.R14408/_old 2008-05-09 22:03:25.000000000 +0200
+++ /var/tmp/diff_new_pack.R14408/_new 2008-05-09 22:03:25.000000000 +0200
@@ -43,7 +43,7 @@
Name: kernel-s390
Summary: The Standard Kernel
Version: 2.6.25.2
-Release: 1
+Release: 2
License: GPL v2 or later
Group: System/Kernel
Url: http://www.kernel.org/
@@ -183,7 +183,7 @@
-Source Timestamp: 2008-05-07 18:33:03 +0200
+Source Timestamp: 2008-05-08 21:04:16 +0200
%prep
if ! [ -e %_sourcedir/linux-2.6.25.tar.bz2 ]; then
@@ -581,6 +581,17 @@
%files -f kernel.files
%changelog
+* Thu May 08 2008 gregkh@suse.de
+- comment out vmware patch as it should no longer be needed
+* Thu May 08 2008 gregkh@suse.de
+- rediff patches to apply cleanly.
+* Thu May 08 2008 gregkh@suse.de
+- Update to 2.6.25.3-rc1
+ - potential fix for increased power consumption and other bugs
+* Thu May 08 2008 sassmann@suse.de
+- Update config file ppc64.
+- patches.arch/ppc-ps3-ps3vram-mtd.patch: ps3vram driver that
+ allows you to access the extra ~240MB of DDR video.
* Wed May 07 2008 gregkh@suse.de
- patches.kernel.org/patch-2.6.25.1-2: Linux 2.6.25.2.
- fixes CVE-2008-1669
++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.R14408/_old 2008-05-09 22:03:25.000000000 +0200
+++ /var/tmp/diff_new_pack.R14408/_new 2008-05-09 22:03:25.000000000 +0200
@@ -23,7 +23,7 @@
Name: kernel-source
Summary: The Linux Kernel Sources
Version: 2.6.25.2
-Release: 1
+Release: 3
License: GPL v2 only
Group: Development/Sources
AutoReqProv: off
@@ -105,7 +105,7 @@
see /usr/src/linux/CREDITS for more details.
-Source Timestamp: 2008-05-07 18:33:03 +0200
+Source Timestamp: 2008-05-08 21:04:16 +0200
%prep
if ! [ -e %_sourcedir/linux-2.6.25.tar.bz2 ]; then
@@ -283,6 +283,17 @@
%files -f kernel-source.files
%changelog
+* Thu May 08 2008 gregkh@suse.de
+- comment out vmware patch as it should no longer be needed
+* Thu May 08 2008 gregkh@suse.de
+- rediff patches to apply cleanly.
+* Thu May 08 2008 gregkh@suse.de
+- Update to 2.6.25.3-rc1
+ - potential fix for increased power consumption and other bugs
+* Thu May 08 2008 sassmann@suse.de
+- Update config file ppc64.
+- patches.arch/ppc-ps3-ps3vram-mtd.patch: ps3vram driver that
+ allows you to access the extra ~240MB of DDR video.
* Wed May 07 2008 gregkh@suse.de
- patches.kernel.org/patch-2.6.25.1-2: Linux 2.6.25.2.
- fixes CVE-2008-1669
++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.R14408/_old 2008-05-09 22:03:26.000000000 +0200
+++ /var/tmp/diff_new_pack.R14408/_new 2008-05-09 22:03:26.000000000 +0200
@@ -22,7 +22,7 @@
Name: kernel-syms
Summary: Kernel Symbol Versions (modversions)
Version: 2.6.25.2
-Release: 1
+Release: 3
License: GPL v2 or later
Group: Development/Sources
AutoReqProv: off
@@ -92,7 +92,7 @@
see /usr/src/linux/CREDITS for more details.
-Source Timestamp: 2008-05-07 18:33:03 +0200
+Source Timestamp: 2008-05-08 21:04:16 +0200
%prep
echo "Architecture symbol(s):" %symbols
@@ -144,6 +144,17 @@
/boot/symsets-*-*.tar.gz
/lib/modules/*/build
%changelog
+* Thu May 08 2008 gregkh@suse.de
+- comment out vmware patch as it should no longer be needed
+* Thu May 08 2008 gregkh@suse.de
+- rediff patches to apply cleanly.
+* Thu May 08 2008 gregkh@suse.de
+- Update to 2.6.25.3-rc1
+ - potential fix for increased power consumption and other bugs
+* Thu May 08 2008 sassmann@suse.de
+- Update config file ppc64.
+- patches.arch/ppc-ps3-ps3vram-mtd.patch: ps3vram driver that
+ allows you to access the extra ~240MB of DDR video.
* Wed May 07 2008 gregkh@suse.de
- patches.kernel.org/patch-2.6.25.1-2: Linux 2.6.25.2.
- fixes CVE-2008-1669
++++++ kernel-vanilla.spec ++++++
--- /var/tmp/diff_new_pack.R14408/_old 2008-05-09 22:03:26.000000000 +0200
+++ /var/tmp/diff_new_pack.R14408/_new 2008-05-09 22:03:26.000000000 +0200
@@ -43,7 +43,7 @@
Name: kernel-vanilla
Summary: The Standard Kernel - without any SUSE patches
Version: 2.6.25.2
-Release: 1
+Release: 3
License: GPL v2 or later
Group: System/Kernel
Url: http://www.kernel.org/
@@ -200,7 +200,7 @@
-Source Timestamp: 2008-05-07 18:33:03 +0200
+Source Timestamp: 2008-05-08 21:04:16 +0200
%prep
if ! [ -e %_sourcedir/linux-2.6.25.tar.bz2 ]; then
@@ -598,6 +598,17 @@
%files -f kernel.files
%changelog
+* Thu May 08 2008 gregkh@suse.de
+- comment out vmware patch as it should no longer be needed
+* Thu May 08 2008 gregkh@suse.de
+- rediff patches to apply cleanly.
+* Thu May 08 2008 gregkh@suse.de
+- Update to 2.6.25.3-rc1
+ - potential fix for increased power consumption and other bugs
+* Thu May 08 2008 sassmann@suse.de
+- Update config file ppc64.
+- patches.arch/ppc-ps3-ps3vram-mtd.patch: ps3vram driver that
+ allows you to access the extra ~240MB of DDR video.
* Wed May 07 2008 gregkh@suse.de
- patches.kernel.org/patch-2.6.25.1-2: Linux 2.6.25.2.
- fixes CVE-2008-1669
kernel-xen.spec: same change
++++++ build-source-timestamp ++++++
--- kernel-source/build-source-timestamp 2008-05-07 20:22:15.000000000 +0200
+++ kernel-source/build-source-timestamp 2008-05-08 22:25:35.683853000 +0200
@@ -1 +1 @@
-2008-05-07 18:33:03 +0200
+2008-05-08 21:04:16 +0200
++++++ config.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/config/powerpc/ppc64 new/config/powerpc/ppc64
--- old/config/powerpc/ppc64 2008-04-30 16:21:15.000000000 +0200
+++ new/config/powerpc/ppc64 2008-05-08 22:23:55.000000000 +0200
@@ -797,7 +797,76 @@
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
-# CONFIG_MTD is not set
+CONFIG_MTD=m
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+# CONFIG_MTD_PARTITIONS is not set
+
+#
+# User Modules And Translation Layers
+#
+# CONFIG_MTD_CHAR is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+CONFIG_MTD_PS3VRAM=m
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
CONFIG_OF_DEVICE=y
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
@@ -2624,6 +2693,7 @@
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
CONFIG_CRAMFS=m
CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
++++++ needed_space_in_mb ++++++
--- kernel-source/needed_space_in_mb 2008-05-08 02:27:15.000000000 +0200
+++ kernel-source/needed_space_in_mb 2008-05-08 22:26:17.030464000 +0200
@@ -1 +1 @@
-6000
+6144
++++++ patches.addon.tar.bz2 ++++++
++++++ patches.apparmor.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.apparmor/fsetattr.diff new/patches.apparmor/fsetattr.diff
--- old/patches.apparmor/fsetattr.diff 2008-05-07 20:21:18.000000000 +0200
+++ new/patches.apparmor/fsetattr.diff 2008-05-08 22:23:56.000000000 +0200
@@ -343,7 +343,7 @@
return error;
--- a/fs/utimes.c
+++ b/fs/utimes.c
-@@ -133,7 +133,7 @@
+@@ -146,7 +146,7 @@
}
}
mutex_lock(&inode->i_mutex);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.apparmor/vfs-notify_change.diff new/patches.apparmor/vfs-notify_change.diff
--- old/patches.apparmor/vfs-notify_change.diff 2008-05-07 20:21:19.000000000 +0200
+++ new/patches.apparmor/vfs-notify_change.diff 2008-05-08 22:23:56.000000000 +0200
@@ -272,7 +272,7 @@
mutex_lock(&sysfs_mutex);
--- a/fs/utimes.c
+++ b/fs/utimes.c
-@@ -55,7 +55,7 @@
+@@ -60,7 +60,7 @@
{
int error;
struct nameidata nd;
@@ -281,7 +281,7 @@
struct inode *inode;
struct iattr newattrs;
struct file *f = NULL;
-@@ -78,16 +78,17 @@
+@@ -83,16 +83,17 @@
f = fget(dfd);
if (!f)
goto out;
@@ -302,7 +302,7 @@
error = -EROFS;
if (IS_RDONLY(inode))
-@@ -132,7 +133,7 @@
+@@ -145,7 +146,7 @@
}
}
mutex_lock(&inode->i_mutex);
++++++ patches.arch.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.arch/ppc-ps3-ps3vram-mtd.patch new/patches.arch/ppc-ps3-ps3vram-mtd.patch
--- old/patches.arch/ppc-ps3-ps3vram-mtd.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.arch/ppc-ps3-ps3vram-mtd.patch 2008-05-08 14:55:33.000000000 +0200
@@ -0,0 +1,853 @@
+From: Jim Paris
+Subject: ps3vram driver that allows you to access the extra ~240MB of DDR video
+RAM
+
+ps3vram driver that allows you to access the extra ~240MB of DDR video RAM on
+the PS3 as a MTD block device. It can then be used as temporary storage or
+swap. It's faster than other storage and is very useful for installers and
+live CDs that have no swap media.
+
+This version creates a cache in XDR RAM and uses the GPU to do DMA
+between the cache and DDR RAM.
+
+Taken from git://git.kernel.org/pub/scm/linux/kernel/git/geoff/ps3-linux
+commit d41aecf2aacfe1d06b340413bf378192289a1964
+
+Signed-off-by: Jim Paris
+Signed-off-by: Vivien Chappelier
+Signed-off-by: Stefan Assmann
+
+---
+ drivers/mtd/devices/Kconfig | 7
+ drivers/mtd/devices/Makefile | 1
+ drivers/mtd/devices/ps3vram.c | 802 ++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 810 insertions(+)
+
+--- a/drivers/mtd/devices/Makefile
++++ b/drivers/mtd/devices/Makefile
+@@ -17,3 +17,4 @@ obj-$(CONFIG_MTD_LART) += lart.o
+ obj-$(CONFIG_MTD_BLOCK2MTD) += block2mtd.o
+ obj-$(CONFIG_MTD_DATAFLASH) += mtd_dataflash.o
+ obj-$(CONFIG_MTD_M25P80) += m25p80.o
++obj-$(CONFIG_MTD_PS3VRAM) += ps3vram.o
+--- /dev/null
++++ b/drivers/mtd/devices/ps3vram.c
+@@ -0,0 +1,802 @@
++/**
++ * ps3vram - Use extra PS3 video ram as MTD block device.
++ *
++ * Copyright (c) 2007-2008 Jim Paris
++ * Added support RSX DMA Vivien Chappelier
++ */
++#undef DEBUG
++
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++
++#include
++#include
++
++#define XDR_BUF_SIZE (2 * 1024 * 1024) /* XDR buffer (must be 1MB aligned) */
++#define XDR_IOIF 0x0c000000
++
++#define FIFO_BASE XDR_IOIF
++#define FIFO_SIZE (64 * 1024)
++
++#define DMA_PAGE_SIZE (4 * 1024)
++
++#define CACHE_PAGE_SIZE (256 * 1024)
++#define CACHE_PAGE_COUNT ((XDR_BUF_SIZE - FIFO_SIZE) / CACHE_PAGE_SIZE)
++
++#define CACHE_OFFSET CACHE_PAGE_SIZE
++#define FIFO_OFFSET 0
++
++#define CTRL_PUT 0x10
++#define CTRL_GET 0x11
++#define CTRL_TOP 0x15
++
++#define UPLOAD_SUBCH 1
++#define DOWNLOAD_SUBCH 2
++
++#define NV_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN 0x0000030c
++#define NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY 0x00000104
++
++#define L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT 0x601
++
++struct mtd_info ps3vram_mtd;
++
++#define CACHE_PAGE_PRESENT 1
++#define CACHE_PAGE_DIRTY 2
++
++#define dbg(fmt, args...) \
++ pr_debug("%s:%d " fmt "\n", __func__, __LINE__, ## args)
++
++struct ps3vram_tag {
++ unsigned int address;
++ unsigned int flags;
++};
++
++struct ps3vram_cache {
++ unsigned int page_count;
++ unsigned int page_size;
++ struct ps3vram_tag *tags;
++ unsigned int hit;
++ unsigned int miss;
++};
++
++struct ps3vram_priv {
++ uint64_t memory_handle;
++ uint64_t context_handle;
++ uint8_t *base;
++ uint32_t *ctrl;
++ uint32_t *reports;
++ uint8_t *xdr_buf;
++
++ uint32_t *fifo_base;
++ uint32_t *fifo_ptr;
++
++ struct ps3vram_cache cache;
++
++ /* Used to serialize cache/DMA operations */
++ struct mutex lock;
++};
++
++#define DMA_NOTIFIER_HANDLE_BASE 0x66604200 /* first DMA notifier handle */
++#define DMA_NOTIFIER_OFFSET_BASE 0x1000 /* first DMA notifier offset */
++#define DMA_NOTIFIER_SIZE 0x40
++
++#define NOTIFIER 8 /* notifier used for completion report */
++
++/* A trailing '-' means to subtract off ps3fb_videomemory.size */
++char *size = "256M-";
++module_param(size, charp, 0);
++MODULE_PARM_DESC(size, "memory size");
++
++static inline uint32_t *ps3vram_get_notifier(uint32_t *reports, int notifier)
++{
++ return (void *) reports +
++ DMA_NOTIFIER_OFFSET_BASE +
++ DMA_NOTIFIER_SIZE * notifier;
++}
++
++static void ps3vram_notifier_reset(struct mtd_info *mtd)
++{
++ int i;
++ struct ps3vram_priv *priv = mtd->priv;
++ uint32_t *notify = ps3vram_get_notifier(priv->reports, NOTIFIER);
++ for (i = 0; i < 4; i++)
++ notify[i] = 0xffffffff;
++}
++
++static int ps3vram_notifier_wait(struct mtd_info *mtd, int timeout_ms)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++ uint32_t *notify = ps3vram_get_notifier(priv->reports, NOTIFIER);
++
++ timeout_ms *= 1000;
++
++ do {
++ if (notify[3] == 0)
++ return 0;
++
++ if (timeout_ms)
++ udelay(1);
++ } while (timeout_ms--);
++
++ return -1;
++}
++
++static void ps3vram_dump_ring(struct mtd_info *mtd)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++ uint32_t *fifo;
++
++ pr_info("PUT = %08x GET = %08x\n", priv->ctrl[CTRL_PUT],
++ priv->ctrl[CTRL_GET]);
++ for (fifo = priv->fifo_base; fifo < priv->fifo_ptr; fifo++)
++ pr_info("%p: %08x\n", fifo, *fifo);
++}
++
++static void ps3vram_dump_reports(struct mtd_info *mtd)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++ int i;
++
++ for (i = 0; i < 16; i++) {
++ uint32_t *n = ps3vram_get_notifier(priv->reports, i);
++ pr_info("%p: %08x\n", n, *n);
++ }
++}
++
++static void ps3vram_init_ring(struct mtd_info *mtd)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++
++ priv->ctrl[CTRL_PUT] = FIFO_BASE + FIFO_OFFSET;
++ priv->ctrl[CTRL_GET] = FIFO_BASE + FIFO_OFFSET;
++}
++
++static int ps3vram_wait_ring(struct mtd_info *mtd, int timeout)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++
++ /* wait until setup commands are processed */
++ timeout *= 1000;
++ while (--timeout) {
++ if (priv->ctrl[CTRL_PUT] == priv->ctrl[CTRL_GET])
++ break;
++ udelay(1);
++ }
++ if (timeout == 0) {
++ pr_err("FIFO timeout (%08x/%08x/%08x)\n", priv->ctrl[CTRL_PUT],
++ priv->ctrl[CTRL_GET], priv->ctrl[CTRL_TOP]);
++ return -ETIMEDOUT;
++ }
++
++ return 0;
++}
++
++static inline void ps3vram_out_ring(struct ps3vram_priv *priv, uint32_t data)
++{
++ *(priv->fifo_ptr)++ = data;
++}
++
++static inline void ps3vram_begin_ring(struct ps3vram_priv *priv, uint32_t chan,
++ uint32_t tag, uint32_t size)
++{
++ ps3vram_out_ring(priv, (size << 18) | (chan << 13) | tag);
++}
++
++static void ps3vram_rewind_ring(struct mtd_info *mtd)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++ u64 status;
++
++ ps3vram_out_ring(priv, 0x20000000 | (FIFO_BASE + FIFO_OFFSET));
++
++ priv->ctrl[CTRL_PUT] = FIFO_BASE + FIFO_OFFSET;
++
++ /* asking the HV for a blit will kick the fifo */
++ status = lv1_gpu_context_attribute(priv->context_handle,
++ L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT,
++ 0, 0, 0, 0);
++ if (status)
++ pr_err("ps3vram: lv1_gpu_context_attribute FB_BLIT failed\n");
++
++ priv->fifo_ptr = priv->fifo_base;
++}
++
++static void ps3vram_fire_ring(struct mtd_info *mtd)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++ u64 status;
++
++ priv->ctrl[CTRL_PUT] = FIFO_BASE + FIFO_OFFSET +
++ (priv->fifo_ptr - priv->fifo_base) * sizeof(uint32_t);
++
++ /* asking the HV for a blit will kick the fifo */
++ status = lv1_gpu_context_attribute(priv->context_handle,
++ L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT,
++ 0, 0, 0, 0);
++ if (status)
++ pr_err("ps3vram: lv1_gpu_context_attribute FB_BLIT failed\n");
++
++ if ((priv->fifo_ptr - priv->fifo_base) * sizeof(uint32_t) >
++ FIFO_SIZE - 1024) {
++ dbg("fifo full, rewinding");
++ ps3vram_wait_ring(mtd, 200);
++ ps3vram_rewind_ring(mtd);
++ }
++}
++
++static void ps3vram_bind(struct mtd_info *mtd)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++
++ ps3vram_begin_ring(priv, UPLOAD_SUBCH, 0, 1);
++ ps3vram_out_ring(priv, 0x31337303);
++ ps3vram_begin_ring(priv, UPLOAD_SUBCH, 0x180, 3);
++ ps3vram_out_ring(priv, DMA_NOTIFIER_HANDLE_BASE + NOTIFIER);
++ ps3vram_out_ring(priv, 0xfeed0001); /* DMA system RAM instance */
++ ps3vram_out_ring(priv, 0xfeed0000); /* DMA video RAM instance */
++
++ ps3vram_begin_ring(priv, DOWNLOAD_SUBCH, 0, 1);
++ ps3vram_out_ring(priv, 0x3137c0de);
++ ps3vram_begin_ring(priv, DOWNLOAD_SUBCH, 0x180, 3);
++ ps3vram_out_ring(priv, DMA_NOTIFIER_HANDLE_BASE + NOTIFIER);
++ ps3vram_out_ring(priv, 0xfeed0000); /* DMA video RAM instance */
++ ps3vram_out_ring(priv, 0xfeed0001); /* DMA system RAM instance */
++
++ ps3vram_fire_ring(mtd);
++}
++
++static int ps3vram_upload(struct mtd_info *mtd, unsigned int src_offset,
++ unsigned int dst_offset, int len, int count)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++
++ ps3vram_begin_ring(priv, UPLOAD_SUBCH,
++ NV_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN, 8);
++ ps3vram_out_ring(priv, XDR_IOIF + src_offset);
++ ps3vram_out_ring(priv, dst_offset);
++ ps3vram_out_ring(priv, len);
++ ps3vram_out_ring(priv, len);
++ ps3vram_out_ring(priv, len);
++ ps3vram_out_ring(priv, count);
++ ps3vram_out_ring(priv, (1 << 8) | 1);
++ ps3vram_out_ring(priv, 0);
++
++ ps3vram_notifier_reset(mtd);
++ ps3vram_begin_ring(priv, UPLOAD_SUBCH,
++ NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY, 1);
++ ps3vram_out_ring(priv, 0);
++ ps3vram_begin_ring(priv, UPLOAD_SUBCH, 0x100, 1);
++ ps3vram_out_ring(priv, 0);
++ ps3vram_fire_ring(mtd);
++ if (ps3vram_notifier_wait(mtd, 200) < 0) {
++ pr_err("notifier timeout\n");
++ ps3vram_dump_ring(mtd);
++ ps3vram_dump_reports(mtd);
++ return -1;
++ }
++
++ return 0;
++}
++
++static int ps3vram_download(struct mtd_info *mtd, unsigned int src_offset,
++ unsigned int dst_offset, int len, int count)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++
++ ps3vram_begin_ring(priv, DOWNLOAD_SUBCH,
++ NV_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN, 8);
++ ps3vram_out_ring(priv, src_offset);
++ ps3vram_out_ring(priv, XDR_IOIF + dst_offset);
++ ps3vram_out_ring(priv, len);
++ ps3vram_out_ring(priv, len);
++ ps3vram_out_ring(priv, len);
++ ps3vram_out_ring(priv, count);
++ ps3vram_out_ring(priv, (1 << 8) | 1);
++ ps3vram_out_ring(priv, 0);
++
++ ps3vram_notifier_reset(mtd);
++ ps3vram_begin_ring(priv, DOWNLOAD_SUBCH,
++ NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY, 1);
++ ps3vram_out_ring(priv, 0);
++ ps3vram_begin_ring(priv, DOWNLOAD_SUBCH, 0x100, 1);
++ ps3vram_out_ring(priv, 0);
++ ps3vram_fire_ring(mtd);
++ if (ps3vram_notifier_wait(mtd, 200) < 0) {
++ pr_err("notifier timeout\n");
++ ps3vram_dump_ring(mtd);
++ ps3vram_dump_reports(mtd);
++ return -1;
++ }
++
++ return 0;
++}
++
++static void ps3vram_cache_evict(struct mtd_info *mtd, int entry)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++ struct ps3vram_cache *cache = &priv->cache;
++
++ if (cache->tags[entry].flags & CACHE_PAGE_DIRTY) {
++ dbg("flushing %d : 0x%08x", entry, cache->tags[entry].address);
++ if (ps3vram_upload(mtd,
++ CACHE_OFFSET + entry * cache->page_size,
++ cache->tags[entry].address,
++ DMA_PAGE_SIZE,
++ cache->page_size / DMA_PAGE_SIZE) < 0) {
++ pr_err("failed to upload from 0x%x to 0x%x size 0x%x\n",
++ entry * cache->page_size,
++ cache->tags[entry].address,
++ cache->page_size);
++ }
++ cache->tags[entry].flags &= ~CACHE_PAGE_DIRTY;
++ }
++}
++
++static void ps3vram_cache_load(struct mtd_info *mtd, int entry,
++ unsigned int address)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++ struct ps3vram_cache *cache = &priv->cache;
++
++ dbg("fetching %d : 0x%08x", entry, address);
++ if (ps3vram_download(mtd,
++ address,
++ CACHE_OFFSET + entry * cache->page_size,
++ DMA_PAGE_SIZE,
++ cache->page_size / DMA_PAGE_SIZE) < 0) {
++ pr_err("failed to download from 0x%x to 0x%x size 0x%x\n",
++ address,
++ entry * cache->page_size,
++ cache->page_size);
++ }
++
++ cache->tags[entry].address = address;
++ cache->tags[entry].flags |= CACHE_PAGE_PRESENT;
++}
++
++
++static void ps3vram_cache_flush(struct mtd_info *mtd)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++ struct ps3vram_cache *cache = &priv->cache;
++ int i;
++
++ dbg("FLUSH");
++ for (i = 0; i < cache->page_count; i++) {
++ ps3vram_cache_evict(mtd, i);
++ cache->tags[i].flags = 0;
++ }
++}
++
++static unsigned int ps3vram_cache_match(struct mtd_info *mtd, loff_t address)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++ struct ps3vram_cache *cache = &priv->cache;
++ unsigned int base;
++ unsigned int offset;
++ int i;
++ static int counter;
++
++ offset = (unsigned int) (address & (cache->page_size - 1));
++ base = (unsigned int) (address - offset);
++
++ /* fully associative check */
++ for (i = 0; i < cache->page_count; i++) {
++ if ((cache->tags[i].flags & CACHE_PAGE_PRESENT) &&
++ cache->tags[i].address == base) {
++ dbg("found entry %d : 0x%08x",
++ i, cache->tags[i].address);
++ cache->hit++;
++ return i;
++ }
++ }
++
++ /* choose a random entry */
++ i = (jiffies + (counter++)) % cache->page_count;
++ dbg("using cache entry %d", i);
++
++ ps3vram_cache_evict(mtd, i);
++ ps3vram_cache_load(mtd, i, base);
++
++ cache->miss++;
++ return i;
++}
++
++static int ps3vram_cache_init(struct mtd_info *mtd)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++
++ pr_info("creating cache: %d entries, %d bytes pages\n",
++ CACHE_PAGE_COUNT, CACHE_PAGE_SIZE);
++
++ priv->cache.page_count = CACHE_PAGE_COUNT;
++ priv->cache.page_size = CACHE_PAGE_SIZE;
++ priv->cache.tags = kzalloc(sizeof(struct ps3vram_tag) *
++ CACHE_PAGE_COUNT, GFP_KERNEL);
++ if (priv->cache.tags == NULL) {
++ pr_err("could not allocate cache tags\n");
++ return -ENOMEM;
++ }
++
++ return 0;
++}
++
++static void ps3vram_cache_cleanup(struct mtd_info *mtd)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++
++ ps3vram_cache_flush(mtd);
++ kfree(priv->cache.tags);
++}
++
++static int ps3vram_erase(struct mtd_info *mtd, struct erase_info *instr)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++
++ if (instr->addr + instr->len > mtd->size)
++ return -EINVAL;
++
++ mutex_lock(&priv->lock);
++
++ ps3vram_cache_flush(mtd);
++
++ /* Set bytes to 0xFF */
++ memset(priv->base + instr->addr, 0xFF, instr->len);
++
++ mutex_unlock(&priv->lock);
++
++ instr->state = MTD_ERASE_DONE;
++ mtd_erase_callback(instr);
++
++ return 0;
++}
++
++
++static int ps3vram_read(struct mtd_info *mtd, loff_t from, size_t len,
++ size_t *retlen, u_char *buf)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++ unsigned int cached, count;
++
++ dbg("from = 0x%08x len = 0x%zx", (unsigned int) from, len);
++
++ if (from >= mtd->size)
++ return -EINVAL;
++
++ if (len > mtd->size - from)
++ len = mtd->size - from;
++
++ /* Copy from vram to buf */
++ count = len;
++ while (count) {
++ unsigned int offset, avail;
++ unsigned int entry;
++
++ offset = (unsigned int) (from & (priv->cache.page_size - 1));
++ avail = priv->cache.page_size - offset;
++
++ mutex_lock(&priv->lock);
++
++ entry = ps3vram_cache_match(mtd, from);
++ cached = CACHE_OFFSET + entry * priv->cache.page_size + offset;
++
++ dbg("from=%08x cached=%08x offset=%08x avail=%08x count=%08x",
++ (unsigned)from, cached, offset, avail, count);
++
++ if (avail > count)
++ avail = count;
++ memcpy(buf, priv->xdr_buf + cached, avail);
++
++ mutex_unlock(&priv->lock);
++
++ buf += avail;
++ count -= avail;
++ from += avail;
++ }
++
++ *retlen = len;
++ return 0;
++}
++
++static int ps3vram_write(struct mtd_info *mtd, loff_t to, size_t len,
++ size_t *retlen, const u_char *buf)
++{
++ struct ps3vram_priv *priv = mtd->priv;
++ unsigned int cached, count;
++
++ if (to >= mtd->size)
++ return -EINVAL;
++
++ if (len > mtd->size - to)
++ len = mtd->size - to;
++
++ /* Copy from buf to vram */
++ count = len;
++ while (count) {
++ unsigned int offset, avail;
++ unsigned int entry;
++
++ offset = (unsigned int) (to & (priv->cache.page_size - 1));
++ avail = priv->cache.page_size - offset;
++
++ mutex_lock(&priv->lock);
++
++ entry = ps3vram_cache_match(mtd, to);
++ cached = CACHE_OFFSET + entry * priv->cache.page_size + offset;
++
++ dbg("to=%08x cached=%08x offset=%08x avail=%08x count=%08x",
++ (unsigned) to, cached, offset, avail, count);
++
++ if (avail > count)
++ avail = count;
++ memcpy(priv->xdr_buf + cached, buf, avail);
++
++ priv->cache.tags[entry].flags |= CACHE_PAGE_DIRTY;
++
++ mutex_unlock(&priv->lock);
++
++ buf += avail;
++ count -= avail;
++ to += avail;
++ }
++
++ *retlen = len;
++ return 0;
++}
++
++/* XXX: Fake structure so we can call ps3_{open,close}_hv_device */
++static struct ps3_system_bus_device fake_dev = {
++ .match_id = PS3_MATCH_ID_GRAPHICS,
++ .dev_type = PS3_DEVICE_TYPE_IOC0,
++};
++
++static int ps3vram_proc_read(char *buf, char **start, off_t offset,
++ int count, int *eof, void *data)
++{
++ struct ps3vram_priv *priv = (struct ps3vram_priv *) data;
++ int len;
++ off_t end;
++ char tmp[256];
++
++ len = sprintf(tmp, "hit:%u\nmiss:%u\n",
++ priv->cache.hit, priv->cache.miss);
++
++ *start = buf;
++
++ end = (off_t)count + offset;
++
++ if (end >= (off_t)len) {
++ *eof = 1;
++ count = ((off_t)len > offset) ?
++ (int)((off_t)len - offset) : 0;
++ }
++
++ memcpy(buf, tmp + offset, count);
++
++ return count;
++}
++
++static void init_proc(void)
++{
++ struct proc_dir_entry *proc_file;
++
++ proc_file = create_proc_entry("ps3vram", 0644, NULL);
++
++ if (!proc_file) {
++ pr_warning("failed to create /proc entry\n");
++ return;
++ }
++
++ proc_file->owner = THIS_MODULE;
++ proc_file->data = ps3vram_mtd.priv;
++ proc_file->read_proc = ps3vram_proc_read;
++}
++
++static int __init init_ps3vram(void)
++{
++ struct ps3vram_priv *priv;
++ uint64_t status;
++ uint64_t ddr_lpar, ctrl_lpar, info_lpar, reports_lpar;
++ int64_t ddr_size;
++ uint64_t reports_size;
++ int ret = -ENOMEM;
++ char *rest;
++
++ ret = -EIO;
++ ps3vram_mtd.priv = kzalloc(sizeof(struct ps3vram_priv), GFP_KERNEL);
++ if (!ps3vram_mtd.priv)
++ goto out;
++ priv = ps3vram_mtd.priv;
++
++ mutex_init(&priv->lock);
++
++ /* Allocate XDR buffer (1MB aligned) */
++ priv->xdr_buf = (uint8_t *) __get_free_pages(GFP_KERNEL,
++ get_order(XDR_BUF_SIZE));
++ if (priv->xdr_buf == NULL) {
++ pr_err("ps3vram: could not allocate XDR buffer\n");
++ ret = -ENOMEM;
++ goto out_free_priv;
++ }
++
++ /* Put FIFO at begginning of XDR buffer */
++ priv->fifo_base = (uint32_t *) (priv->xdr_buf + FIFO_OFFSET);
++ priv->fifo_ptr = priv->fifo_base;
++
++ /* XXX: Need to open GPU, in case ps3fb or snd_ps3 aren't loaded */
++ if (ps3_open_hv_device(&fake_dev)) {
++ pr_err("ps3vram: ps3_open_hv_device failed\n");
++ ret = -EAGAIN;
++ goto out_close_gpu;
++ }
++
++ /* Request memory */
++ status = -1;
++ ddr_size = memparse(size, &rest);
++ if (*rest == '-')
++ ddr_size -= ps3fb_videomemory.size;
++ ddr_size = ALIGN(ddr_size, 1024*1024);
++ if (ddr_size <= 0) {
++ printk(KERN_ERR "ps3vram: specified size is too small\n");
++ ret = -EINVAL;
++ goto out_close_gpu;
++ }
++
++ while (ddr_size > 0) {
++ status = lv1_gpu_memory_allocate(ddr_size, 0, 0, 0, 0,
++ &priv->memory_handle,
++ &ddr_lpar);
++ if (status == 0)
++ break;
++ ddr_size -= 1024*1024;
++ }
++ if (status != 0 || ddr_size <= 0) {
++ pr_err("ps3vram: lv1_gpu_memory_allocate failed\n");
++ ret = -ENOMEM;
++ goto out_free_xdr_buf;
++ }
++ pr_info("ps3vram: allocated %u MiB of DDR memory\n",
++ (unsigned int) (ddr_size / 1024 / 1024));
++
++ /* Request context */
++ status = lv1_gpu_context_allocate(priv->memory_handle,
++ 0,
++ &priv->context_handle,
++ &ctrl_lpar,
++ &info_lpar,
++ &reports_lpar,
++ &reports_size);
++ if (status) {
++ pr_err("ps3vram: lv1_gpu_context_allocate failed\n");
++ ret = -ENOMEM;
++ goto out_free_memory;
++ }
++
++ /* Map XDR buffer to RSX */
++ status = lv1_gpu_context_iomap(priv->context_handle, XDR_IOIF,
++ ps3_mm_phys_to_lpar(__pa(priv->xdr_buf)),
++ XDR_BUF_SIZE, 0);
++ if (status) {
++ pr_err("ps3vram: lv1_gpu_context_iomap failed\n");
++ ret = -ENOMEM;
++ goto out_free_context;
++ }
++
++ priv->base = ioremap(ddr_lpar, ddr_size);
++ if (!priv->base) {
++ pr_err("ps3vram: ioremap failed\n");
++ ret = -ENOMEM;
++ goto out_free_context;
++ }
++
++ priv->ctrl = ioremap(ctrl_lpar, 64 * 1024);
++ if (!priv->ctrl) {
++ pr_err("ps3vram: ioremap failed\n");
++ ret = -ENOMEM;
++ goto out_unmap_vram;
++ }
++
++ priv->reports = ioremap(reports_lpar, reports_size);
++ if (!priv->reports) {
++ pr_err("ps3vram: ioremap failed\n");
++ ret = -ENOMEM;
++ goto out_unmap_ctrl;
++ }
++
++ ps3vram_init_ring(&ps3vram_mtd);
++
++ ps3vram_mtd.name = "ps3vram";
++ ps3vram_mtd.size = ddr_size;
++ ps3vram_mtd.flags = MTD_CAP_RAM;
++ ps3vram_mtd.erase = ps3vram_erase;
++ ps3vram_mtd.point = NULL;
++ ps3vram_mtd.unpoint = NULL;
++ ps3vram_mtd.read = ps3vram_read;
++ ps3vram_mtd.write = ps3vram_write;
++ ps3vram_mtd.owner = THIS_MODULE;
++ ps3vram_mtd.type = MTD_RAM;
++ ps3vram_mtd.erasesize = CACHE_PAGE_SIZE;
++ ps3vram_mtd.writesize = 1;
++
++ ps3vram_bind(&ps3vram_mtd);
++
++ if (ps3vram_wait_ring(&ps3vram_mtd, 100) < 0) {
++ pr_err("failed to initialize channels\n");
++ ret = -ETIMEDOUT;
++ goto out_unmap_reports;
++ }
++
++ ps3vram_cache_init(&ps3vram_mtd);
++ init_proc();
++
++ if (add_mtd_device(&ps3vram_mtd)) {
++ pr_err("ps3vram: failed to register device\n");
++ ret = -EAGAIN;
++ goto out_cache_cleanup;
++ }
++
++ pr_info("ps3vram mtd device registered, %lu bytes\n", ddr_size);
++ return 0;
++
++out_cache_cleanup:
++ ps3vram_cache_cleanup(&ps3vram_mtd);
++out_unmap_reports:
++ iounmap(priv->reports);
++out_unmap_ctrl:
++ iounmap(priv->ctrl);
++out_unmap_vram:
++ iounmap(priv->base);
++out_free_context:
++ lv1_gpu_context_free(priv->context_handle);
++out_free_memory:
++ lv1_gpu_memory_free(priv->memory_handle);
++out_close_gpu:
++ ps3_close_hv_device(&fake_dev);
++out_free_xdr_buf:
++ free_pages((unsigned long) priv->xdr_buf, get_order(XDR_BUF_SIZE));
++out_free_priv:
++ kfree(ps3vram_mtd.priv);
++ ps3vram_mtd.priv = NULL;
++out:
++ return ret;
++}
++
++static void __exit cleanup_ps3vram(void)
++{
++ struct ps3vram_priv *priv;
++
++ priv = ps3vram_mtd.priv;
++ if (priv == NULL)
++ return;
++
++ remove_proc_entry("ps3vram", NULL);
++ del_mtd_device(&ps3vram_mtd);
++ ps3vram_cache_cleanup(&ps3vram_mtd);
++ iounmap(priv->reports);
++ iounmap(priv->ctrl);
++ iounmap(priv->base);
++ lv1_gpu_context_free(priv->context_handle);
++ lv1_gpu_memory_free(priv->memory_handle);
++ ps3_close_hv_device(&fake_dev);
++ free_pages((unsigned long) priv->xdr_buf, get_order(XDR_BUF_SIZE));
++ kfree(priv);
++
++ pr_info("ps3vram mtd device unregistered\n");
++}
++
++module_init(init_ps3vram);
++module_exit(cleanup_ps3vram);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Jim Paris ");
++MODULE_DESCRIPTION("MTD driver for PS3 video RAM");
+--- a/drivers/mtd/devices/Kconfig
++++ b/drivers/mtd/devices/Kconfig
+@@ -93,6 +93,13 @@ config MTD_PHRAM
+ doesn't have access to, memory beyond the mem=xxx limit, nvram,
+ memory on the video card, etc...
+
++config MTD_PS3VRAM
++ tristate "PS3 video RAM"
++ depends on FB_PS3
++ help
++ This driver allows you to use excess PS3 video RAM as volatile
++ storage or system swap.
++
+ config MTD_LART
+ tristate "28F160xx flash driver for LART"
+ depends on SA1100_LART
++++++ patches.fixes.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.fixes/mptbase-vmware-fix new/patches.fixes/mptbase-vmware-fix
--- old/patches.fixes/mptbase-vmware-fix 2008-04-17 18:13:57.000000000 +0200
+++ new/patches.fixes/mptbase-vmware-fix 1970-01-01 01:00:00.000000000 +0100
@@ -1,41 +0,0 @@
-From: Petr Vandrovec
-Subject: Installation in VMware-Server fails
-References: 263883
-
-Installation in VMware-Server fails as the VMware mpt emulation is
-broken; it does not (or wrongly) set the MaxDevices field to '0'.
-
-Signed-off-by: Hannes Reinecke
-
----
- drivers/message/fusion/mptbase.c | 12 +++++++++++-
- 1 files changed, 11 insertions(+), 1 deletion(-)
-
---- a/drivers/message/fusion/mptbase.c
-+++ b/drivers/message/fusion/mptbase.c
-@@ -2915,6 +2915,16 @@
- pfacts->IOCStatus = le16_to_cpu(pfacts->IOCStatus);
- pfacts->IOCLogInfo = le32_to_cpu(pfacts->IOCLogInfo);
- pfacts->MaxDevices = le16_to_cpu(pfacts->MaxDevices);
-+ /*
-+ * VMware emulation is broken, its PortFact's MaxDevices reports value
-+ * programmed by IOC Init, so if IOC Init is programmed to 256 (which
-+ * is 0, as that field is only 8 bit), it reports back 0 in port facts,
-+ * instead of 256... And unfortunately using 256 triggers another bug
-+ * in the code (parallel SCSI can have only 16 devices).
-+ */
-+ if (pfacts->MaxDevices == 0) {
-+ pfacts->MaxDevices = 16;
-+ }
- pfacts->PortSCSIID = le16_to_cpu(pfacts->PortSCSIID);
- pfacts->ProtocolFlags = le16_to_cpu(pfacts->ProtocolFlags);
- pfacts->MaxPostedCmdBuffers = le16_to_cpu(pfacts->MaxPostedCmdBuffers);
-@@ -2922,7 +2932,7 @@
- pfacts->MaxLanBuckets = le16_to_cpu(pfacts->MaxLanBuckets);
-
- max_id = (ioc->bus_type == SAS) ? pfacts->PortSCSIID :
-- pfacts->MaxDevices;
-+ pfacts->MaxDevices;
- ioc->devices_per_bus = (max_id > 255) ? 256 : max_id;
- ioc->number_of_buses = (ioc->devices_per_bus < 256) ? 1 : max_id/256;
-
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.fixes/quota_reiserfs_tail_fix.diff new/patches.fixes/quota_reiserfs_tail_fix.diff
--- old/patches.fixes/quota_reiserfs_tail_fix.diff 2008-04-23 11:56:03.000000000 +0200
+++ new/patches.fixes/quota_reiserfs_tail_fix.diff 1970-01-01 01:00:00.000000000 +0100
@@ -1,85 +0,0 @@
-From: Jan Kara
-Subject: [PATCH] reiserfs: Unpack tails on quota files
-References: bnc#375179
-Patch-mainline: 2.6.26
-
-Quota files cannot have tails because quota_write and quota_read functions do
-not support them. So far when quota files did have tail, we just refused to
-turn quotas on it. Sadly this check has been wrong and so there are now plenty
-installations where quota files don't have NOTAIL flag set and so now after
-fixing the check, they suddently fail to turn quotas on. Since it's easy to
-unpack the tail from kernel, do this from reiserfs_quota_on() which solves the
-problem and is generally nicer to users anyway.
-
-Signed-off-by: Jan Kara
-
-Index: linux-2.6.25/fs/reiserfs/ioctl.c
-===================================================================
---- linux-2.6.25.orig/fs/reiserfs/ioctl.c
-+++ linux-2.6.25/fs/reiserfs/ioctl.c
-@@ -11,8 +11,6 @@
- #include
- #include
-
--static int reiserfs_unpack(struct inode *inode, struct file *filp);
--
- /*
- ** reiserfs_ioctl - handler for ioctl for inode
- ** supported commands:
-@@ -140,7 +138,7 @@ int reiserfs_prepare_write(struct file *
- ** Function try to convert tail from direct item into indirect.
- ** It set up nopack attribute in the REISERFS_I(inode)->nopack
- */
--static int reiserfs_unpack(struct inode *inode, struct file *filp)
-+int reiserfs_unpack(struct inode *inode, struct file *filp)
- {
- int retval = 0;
- int index;
-Index: linux-2.6.25/fs/reiserfs/super.c
-===================================================================
---- linux-2.6.25.orig/fs/reiserfs/super.c
-+++ linux-2.6.25/fs/reiserfs/super.c
-@@ -2040,6 +2040,7 @@ static int reiserfs_quota_on(struct supe
- {
- int err;
- struct nameidata nd;
-+ struct inode *inode;
-
- if (!(REISERFS_SB(sb)->s_mount_opt & (1 << REISERFS_QUOTA)))
- return -EINVAL;
-@@ -2051,12 +2052,18 @@ static int reiserfs_quota_on(struct supe
- path_put(&nd.path);
- return -EXDEV;
- }
-+ inode = nd.path.dentry->d_inode;
- /* We must not pack tails for quota files on reiserfs for quota IO to work */
-- if (!(REISERFS_I(nd.path.dentry->d_inode)->i_flags & i_nopack_mask)) {
-- reiserfs_warning(sb, "super-6520",
-- "Quota file must have tail packing disabled.");
-- path_put(&nd.path);
-- return -EINVAL;
-+ if (!(REISERFS_I(inode)->i_flags & i_nopack_mask)) {
-+ err = reiserfs_unpack(inode, NULL);
-+ if (err) {
-+ reiserfs_warning(sb,
-+ "reiserfs: Unpacking tail of quota file failed"
-+ " (%d). Cannot turn on quotas.", err);
-+ path_put(&nd.path);
-+ return -EINVAL;
-+ }
-+ mark_inode_dirty(inode);
- }
- /* Not journalling quota? No more tests needed... */
- if (!REISERFS_SB(sb)->s_qf_names[USRQUOTA] &&
-Index: linux-2.6.25/include/linux/reiserfs_fs.h
-===================================================================
---- linux-2.6.25.orig/include/linux/reiserfs_fs.h
-+++ linux-2.6.25/include/linux/reiserfs_fs.h
-@@ -2211,6 +2211,7 @@ int reiserfs_ioctl(struct inode *inode,
- unsigned int cmd, unsigned long arg);
- long reiserfs_compat_ioctl(struct file *filp,
- unsigned int cmd, unsigned long arg);
-+int reiserfs_unpack(struct inode *inode, struct file *filp);
-
- /* ioctl's command */
- #define REISERFS_IOC_UNPACK _IOW(0xCD,1,long)
++++++ patches.kernel.org.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.kernel.org/patch-2.6.25.3-rc1 new/patches.kernel.org/patch-2.6.25.3-rc1
--- old/patches.kernel.org/patch-2.6.25.3-rc1 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.kernel.org/patch-2.6.25.3-rc1 2008-05-08 20:40:09.000000000 +0200
@@ -0,0 +1,588 @@
+From: Greg Kroah-Hartman
+Subject: Linux 2.6.25.3-rc1
+
+Makefile change commented out to not drive rpm crazy...
+
+Signed-off-by: Greg Kroah-Hartman
+
+#diff --git a/Makefile b/Makefile
+#index 621f7b3..1deced0 100644
+#--- a/Makefile
+#+++ b/Makefile
+#@@ -1,7 +1,7 @@
+# VERSION = 2
+# PATCHLEVEL = 6
+# SUBLEVEL = 25
+#-EXTRAVERSION = .2
+#+EXTRAVERSION = .3-rc1
+# NAME = Funky Weasel is Jiggy wit it
+#
+# # *DOCUMENTATION*
+diff --git a/arch/arm/kernel/kprobes-decode.c b/arch/arm/kernel/kprobes-decode.c
+index d51bc8b..b4565bb 100644
+--- a/arch/arm/kernel/kprobes-decode.c
++++ b/arch/arm/kernel/kprobes-decode.c
+@@ -1176,7 +1176,7 @@ space_cccc_001x(kprobe_opcode_t insn, struct arch_specific_insn *asi)
+ * *S (bit 20) updates condition codes
+ * ADC/SBC/RSC reads the C flag
+ */
+- insn &= 0xfff00ff0; /* Rn = r0, Rd = r0 */
++ insn &= 0xfff00fff; /* Rn = r0, Rd = r0 */
+ asi->insn[0] = insn;
+ asi->insn_handler = (insn & (1 << 20)) ? /* S-bit */
+ emulate_alu_imm_rwflags : emulate_alu_imm_rflags;
+diff --git a/arch/arm/kernel/kprobes.c b/arch/arm/kernel/kprobes.c
+index 13e371a..5593dd2 100644
+--- a/arch/arm/kernel/kprobes.c
++++ b/arch/arm/kernel/kprobes.c
+@@ -66,7 +66,7 @@ int __kprobes arch_prepare_kprobe(struct kprobe *p)
+ return -ENOMEM;
+ for (is = 0; is < MAX_INSN_SIZE; ++is)
+ p->ainsn.insn[is] = tmp_insn[is];
+- flush_insns(&p->ainsn.insn, MAX_INSN_SIZE);
++ flush_insns(p->ainsn.insn, MAX_INSN_SIZE);
+ break;
+
+ case INSN_GOOD_NO_SLOT: /* instruction doesn't need insn slot */
+diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
+index 7b6e3bb..05356ce 100644
+--- a/arch/x86/pci/common.c
++++ b/arch/x86/pci/common.c
+@@ -372,13 +372,16 @@ static struct dmi_system_id __devinitdata pciprobe_dmi_table[] = {
+ {}
+ };
+
++void __init dmi_check_pciprobe(void)
++{
++ dmi_check_system(pciprobe_dmi_table);
++}
++
+ struct pci_bus * __devinit pcibios_scan_root(int busnum)
+ {
+ struct pci_bus *bus = NULL;
+ struct pci_sysdata *sd;
+
+- dmi_check_system(pciprobe_dmi_table);
+-
+ while ((bus = pci_find_next_bus(bus)) != NULL) {
+ if (bus->number == busnum) {
+ /* Already scanned */
+diff --git a/arch/x86/pci/init.c b/arch/x86/pci/init.c
+index 3de9f9b..f1bf4e5 100644
+--- a/arch/x86/pci/init.c
++++ b/arch/x86/pci/init.c
+@@ -32,6 +32,8 @@ static __init int pci_access_init(void)
+ printk(KERN_ERR
+ "PCI: Fatal: No config space access function found\n");
+
++ dmi_check_pciprobe();
++
+ return 0;
+ }
+ arch_initcall(pci_access_init);
+diff --git a/arch/x86/pci/pci.h b/arch/x86/pci/pci.h
+index 3431518..95e5675 100644
+--- a/arch/x86/pci/pci.h
++++ b/arch/x86/pci/pci.h
+@@ -39,6 +39,8 @@ enum pci_bf_sort_state {
+ pci_dmi_bf,
+ };
+
++extern void __init dmi_check_pciprobe(void);
++
+ /* pci-i386.c */
+
+ extern unsigned int pcibios_max_latency;
+diff --git a/crypto/authenc.c b/crypto/authenc.c
+index ed8ac5a..4b22676 100644
+--- a/crypto/authenc.c
++++ b/crypto/authenc.c
+@@ -217,9 +217,10 @@ static void crypto_authenc_givencrypt_done(struct crypto_async_request *req,
+ int err)
+ {
+ if (!err) {
+- struct aead_givcrypt_request *greq = req->data;
++ struct aead_request *areq = req->data;
++ struct skcipher_givcrypt_request *greq = aead_request_ctx(areq);
+
+- err = crypto_authenc_genicv(&greq->areq, greq->giv, 0);
++ err = crypto_authenc_genicv(areq, greq->giv, 0);
+ }
+
+ aead_request_complete(req->data, err);
+diff --git a/crypto/cryptd.c b/crypto/cryptd.c
+index 2504252..b150de5 100644
+--- a/crypto/cryptd.c
++++ b/crypto/cryptd.c
+@@ -190,8 +190,10 @@ static struct crypto_instance *cryptd_alloc_instance(struct crypto_alg *alg,
+ int err;
+
+ inst = kzalloc(sizeof(*inst) + sizeof(*ctx), GFP_KERNEL);
+- if (IS_ERR(inst))
++ if (!inst) {
++ inst = ERR_PTR(-ENOMEM);
+ goto out;
++ }
+
+ err = -ENAMETOOLONG;
+ if (snprintf(inst->alg.cra_driver_name, CRYPTO_MAX_ALG_NAME,
+diff --git a/crypto/eseqiv.c b/crypto/eseqiv.c
+index b14f14e..881d309 100644
+--- a/crypto/eseqiv.c
++++ b/crypto/eseqiv.c
+@@ -136,7 +136,8 @@ static int eseqiv_givencrypt(struct skcipher_givcrypt_request *req)
+ }
+
+ ablkcipher_request_set_crypt(subreq, reqctx->src, dst,
+- req->creq.nbytes, req->creq.info);
++ req->creq.nbytes + ivsize,
++ req->creq.info);
+
+ memcpy(req->creq.info, ctx->salt, ivsize);
+
+diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
+index 788da97..836362b 100644
+--- a/drivers/acpi/processor_idle.c
++++ b/drivers/acpi/processor_idle.c
+@@ -848,6 +848,7 @@ static int acpi_processor_get_power_info_default(struct acpi_processor *pr)
+ /* all processors need to support C1 */
+ pr->power.states[ACPI_STATE_C1].type = ACPI_STATE_C1;
+ pr->power.states[ACPI_STATE_C1].valid = 1;
++ pr->power.states[ACPI_STATE_C1].entry_method = ACPI_CSTATE_HALT;
+ }
+ /* the C0 state only exists as a filler in our array */
+ pr->power.states[ACPI_STATE_C0].valid = 1;
+@@ -960,6 +961,9 @@ static int acpi_processor_get_power_info_cst(struct acpi_processor *pr)
+ cx.address);
+ }
+
++ if (cx.type == ACPI_STATE_C1) {
++ cx.valid = 1;
++ }
+
+ obj = &(element->package.elements[2]);
+ if (obj->type != ACPI_TYPE_INTEGER)
+diff --git a/drivers/md/md.c b/drivers/md/md.c
+index 61ccbd2..9f6d228 100644
+--- a/drivers/md/md.c
++++ b/drivers/md/md.c
+@@ -2096,7 +2096,7 @@ rdev_attr_store(struct kobject *kobj, struct attribute *attr,
+ rv = -EBUSY;
+ else
+ rv = entry->store(rdev, page, length);
+- mddev_unlock(rdev->mddev);
++ mddev_unlock(mddev);
+ }
+ return rv;
+ }
+diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h
+index f13346b..44ebdea 100644
+--- a/drivers/net/wireless/b43/b43.h
++++ b/drivers/net/wireless/b43/b43.h
+@@ -628,6 +628,10 @@ struct b43_wl {
+
+ struct mutex mutex;
+ spinlock_t irq_lock;
++ /* R/W lock for data transmission.
++ * Transmissions on 2+ queues can run concurrently, but somebody else
++ * might sync with TX by write_lock_irqsave()'ing. */
++ rwlock_t tx_lock;
+ /* Lock for LEDs access. */
+ spinlock_t leds_lock;
+ /* Lock for SHM access. */
+diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
+index f23317e..e0055d0 100644
+--- a/drivers/net/wireless/b43/main.c
++++ b/drivers/net/wireless/b43/main.c
+@@ -622,6 +622,7 @@ static void b43_synchronize_irq(struct b43_wldev *dev)
+ */
+ void b43_dummy_transmission(struct b43_wldev *dev)
+ {
++ struct b43_wl *wl = dev->wl;
+ struct b43_phy *phy = &dev->phy;
+ unsigned int i, max_loop;
+ u16 value;
+@@ -648,6 +649,9 @@ void b43_dummy_transmission(struct b43_wldev *dev)
+ return;
+ }
+
++ spin_lock_irq(&wl->irq_lock);
++ write_lock(&wl->tx_lock);
++
+ for (i = 0; i < 5; i++)
+ b43_ram_write(dev, i * 4, buffer[i]);
+
+@@ -688,6 +692,9 @@ void b43_dummy_transmission(struct b43_wldev *dev)
+ }
+ if (phy->radio_ver == 0x2050 && phy->radio_rev <= 0x5)
+ b43_radio_write16(dev, 0x0051, 0x0037);
++
++ write_unlock(&wl->tx_lock);
++ spin_unlock_irq(&wl->irq_lock);
+ }
+
+ static void key_write(struct b43_wldev *dev,
+@@ -2592,15 +2599,21 @@ static int b43_op_tx(struct ieee80211_hw *hw,
+ {
+ struct b43_wl *wl = hw_to_b43_wl(hw);
+ struct b43_wldev *dev = wl->current_dev;
+- int err = -ENODEV;
++ unsigned long flags;
++ int err;
+
+ if (unlikely(!dev))
+- goto out;
+- if (unlikely(b43_status(dev) < B43_STAT_STARTED))
+- goto out;
+- /* DMA-TX is done without a global lock. */
+- err = b43_dma_tx(dev, skb, ctl);
+-out:
++ return NETDEV_TX_BUSY;
++
++ /* Transmissions on seperate queues can run concurrently. */
++ read_lock_irqsave(&wl->tx_lock, flags);
++
++ err = -ENODEV;
++ if (likely(b43_status(dev) >= B43_STAT_STARTED))
++ err = b43_dma_tx(dev, skb, ctl);
++
++ read_unlock_irqrestore(&wl->tx_lock, flags);
++
+ if (unlikely(err))
+ return NETDEV_TX_BUSY;
+ return NETDEV_TX_OK;
+@@ -3109,7 +3122,9 @@ static void b43_wireless_core_stop(struct b43_wldev *dev)
+ spin_unlock_irqrestore(&wl->irq_lock, flags);
+ b43_synchronize_irq(dev);
+
++ write_lock_irqsave(&wl->tx_lock, flags);
+ b43_set_status(dev, B43_STAT_INITIALIZED);
++ write_unlock_irqrestore(&wl->tx_lock, flags);
+
+ mutex_unlock(&wl->mutex);
+ /* Must unlock as it would otherwise deadlock. No races here.
+@@ -3117,8 +3132,6 @@ static void b43_wireless_core_stop(struct b43_wldev *dev)
+ cancel_delayed_work_sync(&dev->periodic_work);
+ mutex_lock(&wl->mutex);
+
+- ieee80211_stop_queues(wl->hw); //FIXME this could cause a deadlock, as mac80211 seems buggy.
+-
+ b43_mac_suspend(dev);
+ free_irq(dev->dev->irq, dev);
+ b43dbg(wl, "Wireless interface stopped\n");
+@@ -3912,6 +3925,14 @@ static int b43_wireless_core_attach(struct b43_wldev *dev)
+ err = -EOPNOTSUPP;
+ goto err_powerdown;
+ }
++ if (1 /* disable A-PHY */) {
++ /* FIXME: For now we disable the A-PHY on multi-PHY devices. */
++ if (dev->phy.type != B43_PHYTYPE_N) {
++ have_2ghz_phy = 1;
++ have_5ghz_phy = 0;
++ }
++ }
++
+ dev->phy.gmode = have_2ghz_phy;
+ tmp = dev->phy.gmode ? B43_TMSLOW_GMODE : 0;
+ b43_wireless_core_reset(dev, tmp);
+@@ -4076,6 +4097,7 @@ static int b43_wireless_init(struct ssb_device *dev)
+ memset(wl, 0, sizeof(*wl));
+ wl->hw = hw;
+ spin_lock_init(&wl->irq_lock);
++ rwlock_init(&wl->tx_lock);
+ spin_lock_init(&wl->leds_lock);
+ spin_lock_init(&wl->shm_lock);
+ mutex_init(&wl->mutex);
+diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c
+index d93b357..7a3625f 100644
+--- a/drivers/serial/mpc52xx_uart.c
++++ b/drivers/serial/mpc52xx_uart.c
+@@ -1221,8 +1221,8 @@ static struct of_device_id mpc52xx_uart_of_match[] = {
+ #endif
+ #ifdef CONFIG_PPC_MPC512x
+ { .compatible = "fsl,mpc5121-psc-uart", .data = &mpc512x_psc_ops, },
+- {},
+ #endif
++ {},
+ };
+
+ static int __devinit
+diff --git a/fs/reiserfs/ioctl.c b/fs/reiserfs/ioctl.c
+index e0f0f09..9f877ab 100644
+--- a/fs/reiserfs/ioctl.c
++++ b/fs/reiserfs/ioctl.c
+@@ -11,8 +11,6 @@
+ #include
+ #include
+
+-static int reiserfs_unpack(struct inode *inode, struct file *filp);
+-
+ /*
+ ** reiserfs_ioctl - handler for ioctl for inode
+ ** supported commands:
+@@ -140,7 +138,7 @@ int reiserfs_prepare_write(struct file *f, struct page *page,
+ ** Function try to convert tail from direct item into indirect.
+ ** It set up nopack attribute in the REISERFS_I(inode)->nopack
+ */
+-static int reiserfs_unpack(struct inode *inode, struct file *filp)
++int reiserfs_unpack(struct inode *inode, struct file *filp)
+ {
+ int retval = 0;
+ int index;
+diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
+index 393cc22..3302259 100644
+--- a/fs/reiserfs/super.c
++++ b/fs/reiserfs/super.c
+@@ -2019,6 +2019,7 @@ static int reiserfs_quota_on(struct super_block *sb, int type, int format_id,
+ {
+ int err;
+ struct nameidata nd;
++ struct inode *inode;
+
+ if (!(REISERFS_SB(sb)->s_mount_opt & (1 << REISERFS_QUOTA)))
+ return -EINVAL;
+@@ -2030,12 +2031,18 @@ static int reiserfs_quota_on(struct super_block *sb, int type, int format_id,
+ path_put(&nd.path);
+ return -EXDEV;
+ }
++ inode = nd.path.dentry->d_inode;
+ /* We must not pack tails for quota files on reiserfs for quota IO to work */
+- if (!(REISERFS_I(nd.path.dentry->d_inode)->i_flags & i_nopack_mask)) {
+- reiserfs_warning(sb,
+- "reiserfs: Quota file must have tail packing disabled.");
+- path_put(&nd.path);
+- return -EINVAL;
++ if (!(REISERFS_I(inode)->i_flags & i_nopack_mask)) {
++ err = reiserfs_unpack(inode, NULL);
++ if (err) {
++ reiserfs_warning(sb,
++ "reiserfs: Unpacking tail of quota file failed"
++ " (%d). Cannot turn on quotas.", err);
++ path_put(&nd.path);
++ return -EINVAL;
++ }
++ mark_inode_dirty(inode);
+ }
+ /* Not journalling quota? No more tests needed... */
+ if (!REISERFS_SB(sb)->s_qf_names[USRQUOTA] &&
+diff --git a/fs/utimes.c b/fs/utimes.c
+index b18da9c..80a481e 100644
+--- a/fs/utimes.c
++++ b/fs/utimes.c
+@@ -39,9 +39,14 @@ asmlinkage long sys_utime(char __user *filename, struct utimbuf __user *times)
+
+ #endif
+
++static bool nsec_special(long nsec)
++{
++ return nsec == UTIME_OMIT || nsec == UTIME_NOW;
++}
++
+ static bool nsec_valid(long nsec)
+ {
+- if (nsec == UTIME_OMIT || nsec == UTIME_NOW)
++ if (nsec_special(nsec))
+ return true;
+
+ return nsec >= 0 && nsec <= 999999999;
+@@ -115,7 +120,15 @@ long do_utimes(int dfd, char __user *filename, struct timespec *times, int flags
+ newattrs.ia_mtime.tv_nsec = times[1].tv_nsec;
+ newattrs.ia_valid |= ATTR_MTIME_SET;
+ }
+- } else {
++ }
++
++ /*
++ * If times is NULL or both times are either UTIME_OMIT or
++ * UTIME_NOW, then need to check permissions, because
++ * inode_change_ok() won't do it.
++ */
++ if (!times || (nsec_special(times[0].tv_nsec) &&
++ nsec_special(times[1].tv_nsec))) {
+ error = -EACCES;
+ if (IS_IMMUTABLE(inode))
+ goto dput_and_out;
+diff --git a/include/crypto/scatterwalk.h b/include/crypto/scatterwalk.h
+index 224658b..833d208 100644
+--- a/include/crypto/scatterwalk.h
++++ b/include/crypto/scatterwalk.h
+@@ -57,10 +57,14 @@ static inline void scatterwalk_sg_chain(struct scatterlist *sg1, int num,
+ struct scatterlist *sg2)
+ {
+ sg_set_page(&sg1[num - 1], (void *)sg2, 0, 0);
++ sg1[num - 1].page_link &= ~0x02;
+ }
+
+ static inline struct scatterlist *scatterwalk_sg_next(struct scatterlist *sg)
+ {
++ if (sg_is_last(sg))
++ return NULL;
++
+ return (++sg)->length ? sg : (void *)sg_page(sg);
+ }
+
+diff --git a/include/linux/reiserfs_fs.h b/include/linux/reiserfs_fs.h
+index 8e7eff2..4aacaee 100644
+--- a/include/linux/reiserfs_fs.h
++++ b/include/linux/reiserfs_fs.h
+@@ -2176,6 +2176,7 @@ int reiserfs_ioctl(struct inode *inode, struct file *filp,
+ unsigned int cmd, unsigned long arg);
+ long reiserfs_compat_ioctl(struct file *filp,
+ unsigned int cmd, unsigned long arg);
++int reiserfs_unpack(struct inode *inode, struct file *filp);
+
+ /* ioctl's command */
+ #define REISERFS_IOC_UNPACK _IOW(0xCD,1,long)
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 8dcdec6..1e4596c 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -876,6 +876,7 @@ static inline void resched_rq(struct rq *rq)
+ enum {
+ HRTICK_SET, /* re-programm hrtick_timer */
+ HRTICK_RESET, /* not a new slice */
++ HRTICK_BLOCK, /* stop hrtick operations */
+ };
+
+ /*
+@@ -887,6 +888,8 @@ static inline int hrtick_enabled(struct rq *rq)
+ {
+ if (!sched_feat(HRTICK))
+ return 0;
++ if (unlikely(test_bit(HRTICK_BLOCK, &rq->hrtick_flags)))
++ return 0;
+ return hrtimer_is_hres_active(&rq->hrtick_timer);
+ }
+
+@@ -969,7 +972,63 @@ static enum hrtimer_restart hrtick(struct hrtimer *timer)
+ return HRTIMER_NORESTART;
+ }
+
+-static inline void init_rq_hrtick(struct rq *rq)
++static void hotplug_hrtick_disable(int cpu)
++{
++ struct rq *rq = cpu_rq(cpu);
++ unsigned long flags;
++
++ spin_lock_irqsave(&rq->lock, flags);
++ rq->hrtick_flags = 0;
++ __set_bit(HRTICK_BLOCK, &rq->hrtick_flags);
++ spin_unlock_irqrestore(&rq->lock, flags);
++
++ hrtick_clear(rq);
++}
++
++static void hotplug_hrtick_enable(int cpu)
++{
++ struct rq *rq = cpu_rq(cpu);
++ unsigned long flags;
++
++ spin_lock_irqsave(&rq->lock, flags);
++ __clear_bit(HRTICK_BLOCK, &rq->hrtick_flags);
++ spin_unlock_irqrestore(&rq->lock, flags);
++}
++
++static int
++hotplug_hrtick(struct notifier_block *nfb, unsigned long action, void *hcpu)
++{
++ int cpu = (int)(long)hcpu;
++
++ switch (action) {
++ case CPU_UP_CANCELED:
++ case CPU_UP_CANCELED_FROZEN:
++ case CPU_DOWN_PREPARE:
++ case CPU_DOWN_PREPARE_FROZEN:
++ case CPU_DEAD:
++ case CPU_DEAD_FROZEN:
++ hotplug_hrtick_disable(cpu);
++ return NOTIFY_OK;
++
++ case CPU_UP_PREPARE:
++ case CPU_UP_PREPARE_FROZEN:
++ case CPU_DOWN_FAILED:
++ case CPU_DOWN_FAILED_FROZEN:
++ case CPU_ONLINE:
++ case CPU_ONLINE_FROZEN:
++ hotplug_hrtick_enable(cpu);
++ return NOTIFY_OK;
++ }
++
++ return NOTIFY_DONE;
++}
++
++static void init_hrtick(void)
++{
++ hotcpu_notifier(hotplug_hrtick, 0);
++}
++
++static void init_rq_hrtick(struct rq *rq)
+ {
+ rq->hrtick_flags = 0;
+ hrtimer_init(&rq->hrtick_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+@@ -1006,6 +1065,10 @@ static inline void init_rq_hrtick(struct rq *rq)
+ void hrtick_resched(void)
+ {
+ }
++
++static inline void init_hrtick(void)
++{
++}
+ #endif
+
+ /*
+@@ -7094,6 +7157,7 @@ void __init sched_init_smp(void)
+ put_online_cpus();
+ /* XXX: Theoretical race here - CPU may be hotplugged now */
+ hotcpu_notifier(update_sched_domains, 0);
++ init_hrtick();
+
+ /* Move init over to a non-isolated CPU */
+ if (set_cpus_allowed(current, non_isolated_cpus) < 0)
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index 402a504..55443c2 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -2518,7 +2518,9 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,
+ struct page *page;
+ unsigned long end_pfn = start_pfn + size;
+ unsigned long pfn;
++ struct zone *z;
+
++ z = &NODE_DATA(nid)->node_zones[zone];
+ for (pfn = start_pfn; pfn < end_pfn; pfn++) {
+ /*
+ * There can be holes in boot-time mem_map[]s
+@@ -2536,7 +2538,6 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,
+ init_page_count(page);
+ reset_page_mapcount(page);
+ SetPageReserved(page);
+-
+ /*
+ * Mark the block movable so that blocks are reserved for
+ * movable at startup. This will force kernel allocations
+@@ -2545,8 +2546,15 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,
+ * kernel allocations are made. Later some blocks near
+ * the start are marked MIGRATE_RESERVE by
+ * setup_zone_migrate_reserve()
++ *
++ * bitmap is created for zone's valid pfn range. but memmap
++ * can be created for invalid pages (for alignment)
++ * check here not to call set_pageblock_migratetype() against
++ * pfn out of zone.
+ */
+- if ((pfn & (pageblock_nr_pages-1)))
++ if ((z->zone_start_pfn <= pfn)
++ && (pfn < z->zone_start_pfn + z->spanned_pages)
++ && !(pfn & (pageblock_nr_pages - 1)))
+ set_pageblock_migratetype(page, MIGRATE_MOVABLE);
+
+ INIT_LIST_HEAD(&page->lru);
+@@ -4460,6 +4468,8 @@ void set_pageblock_flags_group(struct page *page, unsigned long flags,
+ pfn = page_to_pfn(page);
+ bitmap = get_pageblock_bitmap(zone, pfn);
+ bitidx = pfn_to_bitidx(zone, pfn);
++ VM_BUG_ON(pfn < zone->zone_start_pfn);
++ VM_BUG_ON(pfn >= zone->zone_start_pfn + zone->spanned_pages);
+
+ for (; start_bitidx <= end_bitidx; start_bitidx++, value <<= 1)
+ if (flags & value)
++++++ patches.suse.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.suse/kdb-common new/patches.suse/kdb-common
--- old/patches.suse/kdb-common 2008-05-07 20:21:22.000000000 +0200
+++ new/patches.suse/kdb-common 2008-05-08 22:23:57.000000000 +0200
@@ -20193,7 +20193,7 @@
*/
--- a/kernel/sched.c
+++ b/kernel/sched.c
-@@ -7403,7 +7403,7 @@
+@@ -7467,7 +7467,7 @@
#endif /* CONFIG_MAGIC_SYSRQ */
@@ -20202,7 +20202,7 @@
/*
* These functions are only useful for the IA64 MCA handling.
*
-@@ -8166,3 +8166,79 @@
+@@ -8230,3 +8230,79 @@
.subsys_id = cpuacct_subsys_id,
};
#endif /* CONFIG_CGROUP_CPUACCT */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.suse/novfs-add-the-novell-filesystem-client-kernel-module.patch new/patches.suse/novfs-add-the-novell-filesystem-client-kernel-module.patch
--- old/patches.suse/novfs-add-the-novell-filesystem-client-kernel-module.patch 2008-04-30 07:56:05.000000000 +0200
+++ new/patches.suse/novfs-add-the-novell-filesystem-client-kernel-module.patch 2008-05-08 22:23:58.000000000 +0200
@@ -46,7 +46,7 @@
--- a/fs/Kconfig
+++ b/fs/Kconfig
-@@ -2144,6 +2144,15 @@
+@@ -2145,6 +2145,15 @@
If unsure, say N.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.suse/reiserfs-eliminate-per-super-xattr-lock.diff new/patches.suse/reiserfs-eliminate-per-super-xattr-lock.diff
--- old/patches.suse/reiserfs-eliminate-per-super-xattr-lock.diff 2008-05-07 20:21:22.000000000 +0200
+++ new/patches.suse/reiserfs-eliminate-per-super-xattr-lock.diff 2008-05-08 22:23:58.000000000 +0200
@@ -507,7 +507,7 @@
--- a/include/linux/reiserfs_fs.h
+++ b/include/linux/reiserfs_fs.h
-@@ -2226,7 +2226,4 @@
+@@ -2227,7 +2227,4 @@
#define reiserfs_write_lock( sb ) lock_kernel()
#define reiserfs_write_unlock( sb ) unlock_kernel()
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.suse/reiserfs-reiserfs-warning.diff new/patches.suse/reiserfs-reiserfs-warning.diff
--- old/patches.suse/reiserfs-reiserfs-warning.diff 2008-05-07 20:21:22.000000000 +0200
+++ new/patches.suse/reiserfs-reiserfs-warning.diff 2008-05-08 22:23:58.000000000 +0200
@@ -2187,18 +2187,18 @@
"claims to use %u bitmap blocks in "
"its super block, but requires %u. "
"Clearing to zero.", sb_bmap_nr(rs),
-@@ -2043,8 +2058,8 @@
- }
- /* We must not pack tails for quota files on reiserfs for quota IO to work */
- if (!(REISERFS_I(nd.path.dentry->d_inode)->i_flags & i_nopack_mask)) {
-- reiserfs_warning(sb,
-- "reiserfs: Quota file must have tail packing disabled.");
-+ reiserfs_warning(sb, "super-6520",
-+ "Quota file must have tail packing disabled.");
- path_put(&nd.path);
- return -EINVAL;
- }
-@@ -2056,8 +2071,8 @@
+@@ -2047,8 +2062,8 @@
+ if (!(REISERFS_I(inode)->i_flags & i_nopack_mask)) {
+ err = reiserfs_unpack(inode, NULL);
+ if (err) {
+- reiserfs_warning(sb,
+- "reiserfs: Unpacking tail of quota file failed"
++ reiserfs_warning(sb, "super-6520",
++ "Unpacking tail of quota file failed"
+ " (%d). Cannot turn on quotas.", err);
+ path_put(&nd.path);
+ return -EINVAL;
+@@ -2063,8 +2078,8 @@
}
/* Quotafile not of fs root? */
if (nd.path.dentry->d_parent->d_inode != sb->s_root->d_inode)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.suse/reiserfs-strip-whitespace.diff new/patches.suse/reiserfs-strip-whitespace.diff
--- old/patches.suse/reiserfs-strip-whitespace.diff 2008-05-07 20:21:24.000000000 +0200
+++ new/patches.suse/reiserfs-strip-whitespace.diff 2008-05-08 22:23:58.000000000 +0200
@@ -516,7 +516,7 @@
ClearPageUptodate(page);
--- a/fs/reiserfs/ioctl.c
+++ b/fs/reiserfs/ioctl.c
-@@ -172,7 +172,7 @@
+@@ -170,7 +170,7 @@
}
/* we unpack by finding the page with the tail, and calling
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.suse/reiserfs-use-generic-xattr-handlers.diff new/patches.suse/reiserfs-use-generic-xattr-handlers.diff
--- old/patches.suse/reiserfs-use-generic-xattr-handlers.diff 2008-05-07 20:21:24.000000000 +0200
+++ new/patches.suse/reiserfs-use-generic-xattr-handlers.diff 2008-05-08 22:23:58.000000000 +0200
@@ -32,7 +32,7 @@
--- a/fs/reiserfs/super.c
+++ b/fs/reiserfs/super.c
-@@ -2199,9 +2199,6 @@
+@@ -2206,9 +2206,6 @@
return ret;
}
@@ -42,7 +42,7 @@
reiserfs_proc_info_global_init();
reiserfs_proc_register_global("version",
reiserfs_global_version_in_proc);
-@@ -2212,9 +2209,6 @@
+@@ -2219,9 +2216,6 @@
return 0;
}
@@ -52,7 +52,7 @@
reiserfs_proc_unregister_global("version");
reiserfs_proc_info_global_done();
destroy_inodecache();
-@@ -2224,7 +2218,6 @@
+@@ -2231,7 +2225,6 @@
static void __exit exit_reiserfs_fs(void)
{
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.suse/squashfs.patch new/patches.suse/squashfs.patch
--- old/patches.suse/squashfs.patch 2008-04-30 16:21:19.000000000 +0200
+++ new/patches.suse/squashfs.patch 2008-05-08 22:23:58.000000000 +0200
@@ -20,7 +20,7 @@
--- a/fs/Kconfig
+++ b/fs/Kconfig
-@@ -1379,6 +1379,26 @@
+@@ -1380,6 +1380,26 @@
If unsure, say N.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.suse/sysctl-add-affinity_load_balancing new/patches.suse/sysctl-add-affinity_load_balancing
--- old/patches.suse/sysctl-add-affinity_load_balancing 2008-04-17 18:14:00.000000000 +0200
+++ new/patches.suse/sysctl-add-affinity_load_balancing 2008-05-08 22:23:58.000000000 +0200
@@ -25,7 +25,7 @@
--- a/kernel/sched.c
+++ b/kernel/sched.c
-@@ -1750,6 +1750,28 @@
+@@ -1813,6 +1813,28 @@
return idlest;
}
@@ -54,7 +54,7 @@
/*
* sched_balance_self: balance the current task (running on cpu) in domains
* that have the 'flag' flag set. In practice, this is SD_BALANCE_FORK and
-@@ -1761,11 +1783,17 @@
+@@ -1824,11 +1846,17 @@
*
* preempt must be disabled.
*/
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.suse/udf-3-move-headers-out-include-linux.patch new/patches.suse/udf-3-move-headers-out-include-linux.patch
--- old/patches.suse/udf-3-move-headers-out-include-linux.patch 2008-05-05 13:38:12.000000000 +0200
+++ new/patches.suse/udf-3-move-headers-out-include-linux.patch 2008-05-08 22:23:58.000000000 +0200
@@ -17,28 +17,26 @@
Signed-off-by: Christoph Hellwig
Signed-off-by: Jan Kara
---
- fs/udf/file.c | 1 -
- fs/udf/ialloc.c | 1 -
- fs/udf/lowlevel.c | 1 -
- fs/udf/misc.c | 1 -
- fs/udf/partition.c | 1 -
- fs/udf/super.c | 1 -
- fs/udf/symlink.c | 1 -
- fs/udf/truncate.c | 1 -
- fs/udf/udf_i.h | 30 ++++++++++--
- fs/udf/udf_sb.h | 93 +++++++++++++++++++++++++++++++++++
+ include/linux/udf_fs.h | 51 --------------------
+ include/linux/udf_fs_sb.h | 117 ----------------------------------------------
+ fs/udf/file.c | 1
+ fs/udf/ialloc.c | 1
+ fs/udf/lowlevel.c | 1
+ fs/udf/misc.c | 1
+ fs/udf/partition.c | 1
+ fs/udf/super.c | 1
+ fs/udf/symlink.c | 1
+ fs/udf/truncate.c | 1
+ fs/udf/udf_i.h | 30 ++++++++++-
+ fs/udf/udf_sb.h | 93 ++++++++++++++++++++++++++++++++++++
fs/udf/udfdecl.h | 25 ++++++++-
- fs/udf/unicode.c | 1 -
- include/linux/Kbuild | 2 +-
- include/linux/udf_fs.h | 51 -------------------
+ fs/udf/unicode.c | 1
+ include/linux/Kbuild | 2
include/linux/udf_fs_i.h | 31 ------------
- include/linux/udf_fs_sb.h | 117 ---------------------------------------------
16 files changed, 142 insertions(+), 216 deletions(-)
delete mode 100644 include/linux/udf_fs.h
delete mode 100644 include/linux/udf_fs_sb.h
-diff --git a/fs/udf/file.c b/fs/udf/file.c
-index 822cc40..0ed6e14 100644
--- a/fs/udf/file.c
+++ b/fs/udf/file.c
@@ -27,7 +27,6 @@
@@ -49,8 +47,6 @@
#include
#include
#include /* memset */
-diff --git a/fs/udf/ialloc.c b/fs/udf/ialloc.c
-index 8436031..c3fb28e 100644
--- a/fs/udf/ialloc.c
+++ b/fs/udf/ialloc.c
@@ -21,7 +21,6 @@
@@ -61,8 +57,6 @@
#include
#include
-diff --git a/fs/udf/lowlevel.c b/fs/udf/lowlevel.c
-index 579bae7..703843f 100644
--- a/fs/udf/lowlevel.c
+++ b/fs/udf/lowlevel.c
@@ -23,7 +23,6 @@
@@ -73,8 +67,6 @@
#include "udf_sb.h"
unsigned int udf_get_last_session(struct super_block *sb)
-diff --git a/fs/udf/misc.c b/fs/udf/misc.c
-index a1d6da0..581b6e4 100644
--- a/fs/udf/misc.c
+++ b/fs/udf/misc.c
@@ -23,7 +23,6 @@
@@ -85,8 +77,6 @@
#include
#include "udf_i.h"
-diff --git a/fs/udf/partition.c b/fs/udf/partition.c
-index fc53334..307c9c3 100644
--- a/fs/udf/partition.c
+++ b/fs/udf/partition.c
@@ -24,7 +24,6 @@
@@ -97,8 +87,6 @@
#include
#include
-diff --git a/fs/udf/super.c b/fs/udf/super.c
-index 53e1d6e..02815e9 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -57,7 +57,6 @@
@@ -109,8 +97,6 @@
#include "udf_sb.h"
#include "udf_i.h"
-diff --git a/fs/udf/symlink.c b/fs/udf/symlink.c
-index 6ec9922..c3265e1 100644
--- a/fs/udf/symlink.c
+++ b/fs/udf/symlink.c
@@ -23,7 +23,6 @@
@@ -121,8 +107,6 @@
#include
#include
#include
-diff --git a/fs/udf/truncate.c b/fs/udf/truncate.c
-index fe61be1..6111d97 100644
--- a/fs/udf/truncate.c
+++ b/fs/udf/truncate.c
@@ -22,7 +22,6 @@
@@ -133,8 +117,6 @@
#include
#include "udf_i.h"
-diff --git a/fs/udf/udf_i.h b/fs/udf/udf_i.h
-index ccc52f1..d6d9a77 100644
--- a/fs/udf/udf_i.h
+++ b/fs/udf/udf_i.h
@@ -1,10 +1,32 @@
@@ -174,8 +156,6 @@
-#endif /* !defined(_LINUX_UDF_I_H) */
+#endif /* _UDF_I_H) */
-diff --git a/fs/udf/udf_sb.h b/fs/udf/udf_sb.h
-index 737d1c6..fb2a6e9 100644
--- a/fs/udf/udf_sb.h
+++ b/fs/udf/udf_sb.h
@@ -1,6 +1,8 @@
@@ -285,8 +265,6 @@
static inline struct udf_sb_info *UDF_SB(struct super_block *sb)
{
return sb->s_fs_info;
-diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h
-index 681dc2b..c9c7585 100644
--- a/fs/udf/udfdecl.h
+++ b/fs/udf/udfdecl.h
@@ -1,18 +1,37 @@
@@ -330,8 +308,6 @@
#define udf_fixed_to_variable(x) ( ( ( (x) >> 5 ) * 39 ) + ( (x) & 0x0000001F ) )
#define udf_variable_to_fixed(x) ( ( ( (x) / 39 ) << 5 ) + ( (x) % 39 ) )
-diff --git a/fs/udf/unicode.c b/fs/udf/unicode.c
-index e533b11..b9de050 100644
--- a/fs/udf/unicode.c
+++ b/fs/udf/unicode.c
@@ -23,7 +23,6 @@
@@ -342,11 +318,9 @@
#include "udf_sb.h"
-diff --git a/include/linux/Kbuild b/include/linux/Kbuild
-index aada32f..897d84e 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
-@@ -149,6 +149,7 @@ header-y += tiocl.h
+@@ -150,6 +150,7 @@
header-y += tipc.h
header-y += tipc_config.h
header-y += toshiba.h
@@ -354,7 +328,7 @@
header-y += ultrasound.h
header-y += un.h
header-y += utime.h
-@@ -336,7 +337,6 @@ unifdef-y += time.h
+@@ -333,7 +334,6 @@
unifdef-y += timex.h
unifdef-y += tty.h
unifdef-y += types.h
@@ -362,9 +336,6 @@
unifdef-y += udp.h
unifdef-y += uinput.h
unifdef-y += uio.h
-diff --git a/include/linux/udf_fs.h b/include/linux/udf_fs.h
-deleted file mode 100644
-index aa88654..0000000
--- a/include/linux/udf_fs.h
+++ /dev/null
@@ -1,51 +0,0 @@
@@ -419,8 +390,6 @@
- printk (KERN_INFO "UDF-fs INFO " f, ##a);
-
-#endif /* _UDF_FS_H */
-diff --git a/include/linux/udf_fs_i.h b/include/linux/udf_fs_i.h
-index ffaf056..3536965 100644
--- a/include/linux/udf_fs_i.h
+++ b/include/linux/udf_fs_i.h
@@ -9,41 +9,10 @@
@@ -465,9 +434,6 @@
#define UDF_GETEASIZE _IOR('l', 0x40, int)
#define UDF_GETEABLOCK _IOR('l', 0x41, void *)
#define UDF_GETVOLIDENT _IOR('l', 0x42, void *)
-diff --git a/include/linux/udf_fs_sb.h b/include/linux/udf_fs_sb.h
-deleted file mode 100644
-index 9bc4735..0000000
--- a/include/linux/udf_fs_sb.h
+++ /dev/null
@@ -1,117 +0,0 @@
@@ -588,6 +554,3 @@
-};
-
-#endif /* _UDF_FS_SB_H */
---
-1.5.2.4
-
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.suse/udf-41-use-crc_itu_t-from-lib-instead-of-udf_crc.patch new/patches.suse/udf-41-use-crc_itu_t-from-lib-instead-of-udf_crc.patch
--- old/patches.suse/udf-41-use-crc_itu_t-from-lib-instead-of-udf_crc.patch 2008-05-05 13:38:12.000000000 +0200
+++ new/patches.suse/udf-41-use-crc_itu_t-from-lib-instead-of-udf_crc.patch 2008-05-08 22:23:58.000000000 +0200
@@ -10,23 +10,21 @@
Cc: Sergey Vlasov
Signed-off-by: Jan Kara
---
- fs/Kconfig | 1 +
- fs/udf/Makefile | 2 +-
- fs/udf/crc.c | 172 ------------------------------------------------------
- fs/udf/inode.c | 11 ++--
- fs/udf/misc.c | 12 ++--
- fs/udf/namei.c | 21 +++----
- fs/udf/super.c | 10 ++--
- fs/udf/udfdecl.h | 3 -
- fs/udf/unicode.c | 3 +-
+ fs/udf/crc.c | 172 -------------------------------------------------------
+ fs/Kconfig | 1
+ fs/udf/Makefile | 2
+ fs/udf/inode.c | 11 +--
+ fs/udf/misc.c | 12 ++-
+ fs/udf/namei.c | 21 +++---
+ fs/udf/super.c | 10 +--
+ fs/udf/udfdecl.h | 3
+ fs/udf/unicode.c | 3
9 files changed, 32 insertions(+), 203 deletions(-)
delete mode 100644 fs/udf/crc.c
-diff --git a/fs/Kconfig b/fs/Kconfig
-index d731282..86229c9 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
-@@ -663,6 +663,7 @@ config ZISOFS
+@@ -675,6 +675,7 @@
config UDF_FS
tristate "UDF file system support"
@@ -34,19 +32,14 @@
help
This is the new file system used on some CD-ROMs and DVDs. Say Y if
you intend to mount DVD discs or CDRW's written in packet mode, or
-diff --git a/fs/udf/Makefile b/fs/udf/Makefile
-index be845e7..0d4503f 100644
--- a/fs/udf/Makefile
+++ b/fs/udf/Makefile
-@@ -6,4 +6,4 @@ obj-$(CONFIG_UDF_FS) += udf.o
+@@ -6,4 +6,4 @@
udf-objs := balloc.o dir.o file.o ialloc.o inode.o lowlevel.o namei.o \
partition.o super.o truncate.o symlink.o fsync.o \
- crc.o directory.o misc.o udftime.o unicode.o
+ directory.o misc.o udftime.o unicode.o
-diff --git a/fs/udf/crc.c b/fs/udf/crc.c
-deleted file mode 100644
-index f178c63..0000000
--- a/fs/udf/crc.c
+++ /dev/null
@@ -1,172 +0,0 @@
@@ -222,8 +215,6 @@
-}
-
-#endif /* defined(GENERATE) */
-diff --git a/fs/udf/inode.c b/fs/udf/inode.c
-index 6e151f1..6e74b11 100644
--- a/fs/udf/inode.c
+++ b/fs/udf/inode.c
@@ -37,6 +37,7 @@
@@ -234,7 +225,7 @@
#include "udf_i.h"
#include "udf_sb.h"
-@@ -1419,9 +1420,9 @@ static int udf_update_inode(struct inode *inode, int do_sync)
+@@ -1419,9 +1420,9 @@
iinfo->i_location.
logicalBlockNum);
use->descTag.descCRCLength = cpu_to_le16(crclen);
@@ -247,7 +238,7 @@
use->descTag.tagChecksum = udf_tag_checksum(&use->descTag);
mark_buffer_dirty(bh);
-@@ -1584,8 +1585,8 @@ static int udf_update_inode(struct inode *inode, int do_sync)
+@@ -1584,8 +1585,8 @@
crclen += iinfo->i_lenEAttr + iinfo->i_lenAlloc -
sizeof(tag);
fe->descTag.descCRCLength = cpu_to_le16(crclen);
@@ -258,8 +249,6 @@
fe->descTag.tagChecksum = udf_tag_checksum(&fe->descTag);
/* write the data blocks */
-diff --git a/fs/udf/misc.c b/fs/udf/misc.c
-index 9699620..84bf0fd 100644
--- a/fs/udf/misc.c
+++ b/fs/udf/misc.c
@@ -24,6 +24,7 @@
@@ -270,7 +259,7 @@
#include "udf_i.h"
#include "udf_sb.h"
-@@ -135,8 +136,8 @@ struct genericFormat *udf_add_extendedattr(struct inode *inode, uint32_t size,
+@@ -135,8 +136,8 @@
/* rewrite CRC + checksum of eahd */
crclen = sizeof(struct extendedAttrHeaderDesc) - sizeof(tag);
eahd->descTag.descCRCLength = cpu_to_le16(crclen);
@@ -281,7 +270,7 @@
eahd->descTag.tagChecksum = udf_tag_checksum(&eahd->descTag);
iinfo->i_lenEAttr += size;
return (struct genericFormat *)&ea[offset];
-@@ -241,8 +242,9 @@ struct buffer_head *udf_read_tagged(struct super_block *sb, uint32_t block,
+@@ -241,8 +242,9 @@
/* Verify the descriptor CRC */
if (le16_to_cpu(tag_p->descCRCLength) + sizeof(tag) > sb->s_blocksize ||
@@ -293,7 +282,7 @@
return bh;
udf_debug("Crc failure block %d: crc = %d, crclen = %d\n", block,
-@@ -266,7 +268,7 @@ void udf_update_tag(char *data, int length)
+@@ -266,7 +268,7 @@
length -= sizeof(tag);
tptr->descCRCLength = cpu_to_le16(length);
@@ -302,8 +291,6 @@
tptr->tagChecksum = udf_tag_checksum(tptr);
}
-diff --git a/fs/udf/namei.c b/fs/udf/namei.c
-index 68686b7..ba5537d 100644
--- a/fs/udf/namei.c
+++ b/fs/udf/namei.c
@@ -31,6 +31,7 @@
@@ -314,7 +301,7 @@
static inline int udf_match(int len1, const char *name1, int len2,
const char *name2)
-@@ -97,25 +98,23 @@ int udf_write_fi(struct inode *inode, struct fileIdentDesc *cfi,
+@@ -97,25 +98,23 @@
memset(fibh->ebh->b_data, 0x00, padlen + offset);
}
@@ -349,8 +336,6 @@
}
cfi->descTag.descCRC = cpu_to_le16(crc);
-diff --git a/fs/udf/super.c b/fs/udf/super.c
-index 6823733..b564fc1 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -56,6 +56,7 @@
@@ -361,7 +346,7 @@
#include
#include "udf_sb.h"
-@@ -1765,8 +1766,8 @@ static void udf_open_lvid(struct super_block *sb)
+@@ -1765,8 +1766,8 @@
lvid->integrityType = LVID_INTEGRITY_TYPE_OPEN;
lvid->descTag.descCRC = cpu_to_le16(
@@ -372,7 +357,7 @@
lvid->descTag.tagChecksum = udf_tag_checksum(&lvid->descTag);
mark_buffer_dirty(bh);
-@@ -1800,9 +1801,8 @@ static void udf_close_lvid(struct super_block *sb)
+@@ -1800,9 +1801,8 @@
lvid->integrityType = cpu_to_le32(LVID_INTEGRITY_TYPE_CLOSE);
lvid->descTag.descCRC = cpu_to_le16(
@@ -384,11 +369,9 @@
lvid->descTag.tagChecksum = udf_tag_checksum(&lvid->descTag);
mark_buffer_dirty(bh);
-diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h
-index 61897d3..f3f45d0 100644
--- a/fs/udf/udfdecl.h
+++ b/fs/udf/udfdecl.h
-@@ -220,9 +220,6 @@ extern struct fileIdentDesc *udf_get_fileident(void *buffer, int bufsize,
+@@ -220,9 +220,6 @@
extern long_ad *udf_get_filelongad(uint8_t *, int, uint32_t *, int);
extern short_ad *udf_get_fileshortad(uint8_t *, int, uint32_t *, int);
@@ -398,8 +381,6 @@
/* udftime.c */
extern struct timespec *udf_disk_stamp_to_time(struct timespec *dest,
timestamp src);
-diff --git a/fs/udf/unicode.c b/fs/udf/unicode.c
-index f5872ae..9fdf8c9 100644
--- a/fs/udf/unicode.c
+++ b/fs/udf/unicode.c
@@ -23,6 +23,7 @@
@@ -410,7 +391,7 @@
#include "udf_sb.h"
-@@ -454,7 +455,7 @@ static int udf_translate_to_linux(uint8_t *newName, uint8_t *udfName,
+@@ -454,7 +455,7 @@
} else if (newIndex > 250)
newIndex = 250;
newName[newIndex++] = CRC_MARK;
@@ -419,6 +400,3 @@
newName[newIndex++] = hexChar[(valueCRC & 0xf000) >> 12];
newName[newIndex++] = hexChar[(valueCRC & 0x0f00) >> 8];
newName[newIndex++] = hexChar[(valueCRC & 0x00f0) >> 4];
---
-1.5.2.4
-
++++++ patches.xen.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.xen/xen3-auto-xen-kconfig.diff new/patches.xen/xen3-auto-xen-kconfig.diff
--- old/patches.xen/xen3-auto-xen-kconfig.diff 2008-04-17 18:14:03.000000000 +0200
+++ new/patches.xen/xen3-auto-xen-kconfig.diff 2008-05-08 22:23:59.000000000 +0200
@@ -3,11 +3,22 @@
Patch-mainline: obsolete
Acked-by: jbeulich@novell.com
-Index: head-2008-04-15/arch/x86/Kconfig
-===================================================================
---- head-2008-04-15.orig/arch/x86/Kconfig 2008-04-15 09:41:09.000000000 +0200
-+++ head-2008-04-15/arch/x86/Kconfig 2008-04-15 09:59:19.000000000 +0200
-@@ -30,6 +30,7 @@ config GENERIC_LOCKBREAK
+---
+ arch/x86/Kconfig | 102 ++++++++++++--
+ arch/x86/Kconfig.cpu | 3
+ arch/x86/Kconfig.debug | 2
+ drivers/acpi/Kconfig | 5
+ drivers/char/tpm/Kconfig | 9 +
+ drivers/serial/Kconfig | 1
+ drivers/video/console/Kconfig | 1
+ drivers/xen/Kconfig | 298 ++++++++++++++++++++++++++++++++++++++++++
+ fs/Kconfig | 1
+ kernel/Kconfig.preempt | 1
+ 10 files changed, 405 insertions(+), 18 deletions(-)
+
+--- a/arch/x86/Kconfig
++++ b/arch/x86/Kconfig
+@@ -30,6 +30,7 @@
config GENERIC_TIME
def_bool y
@@ -15,7 +26,7 @@
config GENERIC_CMOS_UPDATE
def_bool y
-@@ -171,7 +172,7 @@ config X86_64_SMP
+@@ -171,7 +172,7 @@
config X86_HT
bool
depends on SMP
@@ -24,7 +35,7 @@
default y
config X86_BIOS_REBOOT
-@@ -182,6 +183,17 @@ config X86_BIOS_REBOOT
+@@ -182,6 +183,17 @@
config X86_TRAMPOLINE
bool
depends on X86_SMP || (X86_VOYAGER && SMP)
@@ -42,7 +53,7 @@
default y
config KTIME_SCALAR
-@@ -229,6 +241,16 @@ config X86_PC
+@@ -229,6 +241,16 @@
help
Choose this option if your computer is a standard PC or compatible.
@@ -59,7 +70,7 @@
config X86_ELAN
bool "AMD Elan"
depends on X86_32
-@@ -325,6 +347,13 @@ config X86_RDC321X
+@@ -325,6 +347,13 @@
as R-8610-(G).
If you don't have one of these chips, you should say N here.
@@ -73,7 +84,7 @@
config X86_VSMP
bool "Support for ScaleMP vSMP"
depends on X86_64 && PCI
-@@ -409,6 +438,7 @@ source "arch/x86/Kconfig.cpu"
+@@ -409,6 +438,7 @@
config HPET_TIMER
def_bool X86_64
prompt "HPET Timer Support" if X86_32
@@ -81,7 +92,7 @@
help
Use the IA-PC HPET (High Precision Event Timer) to manage
time in preference to the PIT and RTC, if a HPET is
-@@ -436,7 +466,7 @@ config GART_IOMMU
+@@ -436,7 +466,7 @@
default y
select SWIOTLB
select AGP
@@ -90,7 +101,7 @@
help
Support for full DMA access of devices with 32bit memory access only
on systems with more than 3GB. This is usually needed for USB,
-@@ -451,7 +481,7 @@ config GART_IOMMU
+@@ -451,7 +481,7 @@
config CALGARY_IOMMU
bool "IBM Calgary IOMMU support"
select SWIOTLB
@@ -99,7 +110,7 @@
help
Support for hardware IOMMUs in IBM's xSeries x366 and x460
systems. Needed to run systems with more than 3GB of memory
-@@ -496,6 +526,7 @@ config NR_CPUS
+@@ -496,6 +526,7 @@
range 2 255
depends on SMP
default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000
@@ -107,7 +118,7 @@
default "8"
help
This allows you to specify the maximum number of CPUs which this
-@@ -507,7 +538,7 @@ config NR_CPUS
+@@ -507,7 +538,7 @@
config SCHED_SMT
bool "SMT (Hyperthreading) scheduler support"
@@ -116,7 +127,7 @@
help
SMT scheduler support improves the CPU scheduler's decision making
when dealing with Intel Pentium 4 chips with HyperThreading at a
-@@ -517,7 +548,7 @@ config SCHED_SMT
+@@ -517,7 +548,7 @@
config SCHED_MC
def_bool y
prompt "Multi-core scheduler support"
@@ -125,7 +136,7 @@
help
Multi-core scheduler support improves the CPU scheduler's decision
making when dealing with multi-core CPU chips at a cost of slightly
-@@ -527,7 +558,7 @@ source "kernel/Kconfig.preempt"
+@@ -527,7 +558,7 @@
config X86_UP_APIC
bool "Local APIC support on uniprocessors"
@@ -134,7 +145,7 @@
help
A local APIC (Advanced Programmable Interrupt Controller) is an
integrated interrupt controller in the CPU. If you have a single-CPU
-@@ -553,18 +584,25 @@ config X86_UP_IOAPIC
+@@ -553,18 +584,25 @@
config X86_LOCAL_APIC
def_bool y
depends on X86_64 || (X86_32 && (X86_UP_APIC || ((X86_VISWS || SMP) && !X86_VOYAGER) || X86_GENERICARCH))
@@ -161,7 +172,7 @@
---help---
Machine Check Exception support allows the processor to notify the
kernel if it detects a problem (e.g. overheating, component failure).
-@@ -681,6 +719,7 @@ config X86_REBOOTFIXUPS
+@@ -681,6 +719,7 @@
config MICROCODE
tristate "/dev/cpu/microcode - Intel IA32 CPU microcode support"
@@ -169,7 +180,7 @@
select FW_LOADER
---help---
If you say Y here, you will be able to update the microcode on
-@@ -839,7 +878,7 @@ config X86_PAE
+@@ -839,7 +878,7 @@
# Common NUMA Features
config NUMA
bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)"
@@ -178,7 +189,7 @@
depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT || X86_GENERICARCH) && ACPI) && EXPERIMENTAL)
default n if X86_PC
default y if (X86_NUMAQ || X86_SUMMIT)
-@@ -927,7 +966,7 @@ config ARCH_SPARSEMEM_DEFAULT
+@@ -927,7 +966,7 @@
config ARCH_SPARSEMEM_ENABLE
def_bool y
@@ -187,7 +198,7 @@
select SPARSEMEM_STATIC if X86_32
select SPARSEMEM_VMEMMAP_ENABLE if X86_64
-@@ -953,6 +992,7 @@ config HIGHPTE
+@@ -953,6 +992,7 @@
config MATH_EMULATION
bool
prompt "Math emulation" if X86_32
@@ -195,7 +206,7 @@
---help---
Linux can emulate a math coprocessor (used for floating point
operations) if you don't have one. 486DX and Pentium processors have
-@@ -978,6 +1018,8 @@ config MATH_EMULATION
+@@ -978,6 +1018,8 @@
config MTRR
bool "MTRR (Memory Type Range Register) support"
@@ -204,7 +215,7 @@
---help---
On Intel P6 family processors (Pentium Pro, Pentium II and later)
the Memory Type Range Registers (MTRRs) may be used to control
-@@ -1013,7 +1055,7 @@ config MTRR
+@@ -1013,7 +1055,7 @@
config EFI
def_bool n
prompt "EFI runtime service support"
@@ -213,7 +224,7 @@
---help---
This enables the kernel to use EFI runtime services that are
available (such as the EFI variable services).
-@@ -1028,7 +1070,7 @@ config EFI
+@@ -1028,7 +1070,7 @@
config IRQBALANCE
def_bool y
prompt "Enable kernel irq balancing"
@@ -222,7 +233,7 @@
help
The default yes will allow the kernel to do irq load balancing.
Saying no will keep the kernel from doing irq load balancing.
-@@ -1090,6 +1132,7 @@ source kernel/Kconfig.hz
+@@ -1090,6 +1132,7 @@
config KEXEC
bool "kexec system call"
@@ -230,7 +241,7 @@
help
kexec is a system call that implements the ability to shutdown your
current kernel, and to start another kernel. It is like a reboot
-@@ -1218,6 +1261,7 @@ config COMPAT_VDSO
+@@ -1218,6 +1261,7 @@
def_bool y
prompt "Compat VDSO support"
depends on X86_32 || IA32_EMULATION
@@ -238,7 +249,7 @@
help
Map the 32-bit VDSO to the predictable old-style address too.
---help---
-@@ -1238,7 +1282,7 @@ config HAVE_ARCH_EARLY_PFN_TO_NID
+@@ -1238,7 +1282,7 @@
depends on NUMA
menu "Power management options"
@@ -247,7 +258,7 @@
config ARCH_HIBERNATION_HEADER
def_bool y
-@@ -1255,7 +1299,7 @@ config X86_APM_BOOT
+@@ -1255,7 +1299,7 @@
menuconfig APM
tristate "APM (Advanced Power Management) BIOS support"
@@ -256,7 +267,7 @@
---help---
APM is a BIOS specification for saving power using several different
techniques. This is mostly useful for battery powered laptops with
-@@ -1422,6 +1466,7 @@ choice
+@@ -1422,6 +1466,7 @@
config PCI_GOBIOS
bool "BIOS"
@@ -264,7 +275,7 @@
config PCI_GOMMCONFIG
bool "MMConfig"
-@@ -1429,6 +1474,13 @@ config PCI_GOMMCONFIG
+@@ -1429,6 +1474,13 @@
config PCI_GODIRECT
bool "Direct"
@@ -278,7 +289,7 @@
config PCI_GOANY
bool "Any"
-@@ -1436,7 +1488,7 @@ endchoice
+@@ -1436,7 +1488,7 @@
config PCI_BIOS
def_bool y
@@ -287,7 +298,7 @@
# x86-64 doesn't support PCI BIOS access from long mode so always go direct.
config PCI_DIRECT
-@@ -1455,6 +1507,22 @@ config PCI_MMCONFIG
+@@ -1455,6 +1507,22 @@
bool "Support mmconfig PCI config space access"
depends on X86_64 && PCI && ACPI
@@ -310,7 +321,7 @@
config DMAR
bool "Support for DMA Remapping Devices (EXPERIMENTAL)"
depends on X86_64 && PCI_MSI && ACPI && EXPERIMENTAL
-@@ -1497,7 +1565,7 @@ if X86_32
+@@ -1497,7 +1565,7 @@
config ISA
bool "ISA support"
@@ -319,7 +330,7 @@
help
Find out whether you have ISA slots on your motherboard. ISA is the
name of a bus system, i.e. the way the CPU talks to the other stuff
-@@ -1524,7 +1592,7 @@ config EISA
+@@ -1524,7 +1592,7 @@
source "drivers/eisa/Kconfig"
config MCA
@@ -328,18 +339,16 @@
default y if X86_VOYAGER
help
MicroChannel Architecture is found in some IBM PS/2 machines and
-@@ -1629,4 +1697,6 @@ source "crypto/Kconfig"
+@@ -1629,4 +1697,6 @@
source "arch/x86/kvm/Kconfig"
+source "drivers/xen/Kconfig"
+
source "lib/Kconfig"
-Index: head-2008-04-15/arch/x86/Kconfig.cpu
-===================================================================
---- head-2008-04-15.orig/arch/x86/Kconfig.cpu 2008-04-15 09:41:09.000000000 +0200
-+++ head-2008-04-15/arch/x86/Kconfig.cpu 2008-04-15 09:59:19.000000000 +0200
-@@ -335,7 +335,7 @@ config X86_PPRO_FENCE
+--- a/arch/x86/Kconfig.cpu
++++ b/arch/x86/Kconfig.cpu
+@@ -335,7 +335,7 @@
config X86_F00F_BUG
def_bool y
@@ -348,7 +357,7 @@
config X86_WP_WORKS_OK
def_bool y
-@@ -393,6 +393,7 @@ config X86_P6_NOP
+@@ -393,6 +393,7 @@
config X86_TSC
def_bool y
depends on ((MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2) && !X86_NUMAQ) || X86_64
@@ -356,11 +365,9 @@
# this should be set for all -march=.. options where the compiler
# generates cmov.
-Index: head-2008-04-15/arch/x86/Kconfig.debug
-===================================================================
---- head-2008-04-15.orig/arch/x86/Kconfig.debug 2008-04-15 09:41:09.000000000 +0200
-+++ head-2008-04-15/arch/x86/Kconfig.debug 2008-04-15 09:59:19.000000000 +0200
-@@ -103,7 +103,7 @@ config X86_MPPARSE
+--- a/arch/x86/Kconfig.debug
++++ b/arch/x86/Kconfig.debug
+@@ -103,7 +103,7 @@
config DOUBLEFAULT
default y
bool "Enable doublefault exception handler" if EMBEDDED
@@ -369,11 +376,9 @@
help
This option allows trapping of rare doublefault exceptions that
would otherwise cause a system to silently reboot. Disabling this
-Index: head-2008-04-15/drivers/acpi/Kconfig
-===================================================================
---- head-2008-04-15.orig/drivers/acpi/Kconfig 2008-04-15 09:41:09.000000000 +0200
-+++ head-2008-04-15/drivers/acpi/Kconfig 2008-04-15 09:59:19.000000000 +0200
-@@ -349,6 +349,7 @@ config ACPI_SYSTEM
+--- a/drivers/acpi/Kconfig
++++ b/drivers/acpi/Kconfig
+@@ -349,6 +349,7 @@
config X86_PM_TIMER
bool "Power Management Timer Support" if EMBEDDED
depends on X86
@@ -381,7 +386,7 @@
default y
help
The Power Management Timer is available on all ACPI-capable,
-@@ -402,4 +403,8 @@ config ACPI_SBS
+@@ -402,4 +403,8 @@
This driver adds support for the Smart Battery System, another
type of access to battery information, found on some laptops.
@@ -390,11 +395,9 @@
+ depends on X86 && XEN && ACPI_SLEEP
+ default y
endif # ACPI
-Index: head-2008-04-15/drivers/char/tpm/Kconfig
-===================================================================
---- head-2008-04-15.orig/drivers/char/tpm/Kconfig 2008-04-15 09:41:09.000000000 +0200
-+++ head-2008-04-15/drivers/char/tpm/Kconfig 2008-04-15 09:59:19.000000000 +0200
-@@ -58,4 +58,13 @@ config TCG_INFINEON
+--- a/drivers/char/tpm/Kconfig
++++ b/drivers/char/tpm/Kconfig
+@@ -58,4 +58,13 @@
Further information on this driver and the supported hardware
can be found at http://www.prosec.rub.de/tpm
@@ -408,11 +411,9 @@
+ will be called tpm_xenu.
+
endif # TCG_TPM
-Index: head-2008-04-15/drivers/serial/Kconfig
-===================================================================
---- head-2008-04-15.orig/drivers/serial/Kconfig 2008-04-15 09:41:09.000000000 +0200
-+++ head-2008-04-15/drivers/serial/Kconfig 2008-04-15 09:59:19.000000000 +0200
-@@ -12,6 +12,7 @@ menu "Serial drivers"
+--- a/drivers/serial/Kconfig
++++ b/drivers/serial/Kconfig
+@@ -12,6 +12,7 @@
config SERIAL_8250
tristate "8250/16550 and compatible serial support"
depends on (BROKEN || !SPARC)
@@ -420,11 +421,9 @@
select SERIAL_CORE
---help---
This selects whether you want to include the driver for the standard
-Index: head-2008-04-15/drivers/video/console/Kconfig
-===================================================================
---- head-2008-04-15.orig/drivers/video/console/Kconfig 2008-04-15 09:41:09.000000000 +0200
-+++ head-2008-04-15/drivers/video/console/Kconfig 2008-04-15 09:59:19.000000000 +0200
-@@ -46,6 +46,7 @@ config VGACON_SOFT_SCROLLBACK_SIZE
+--- a/drivers/video/console/Kconfig
++++ b/drivers/video/console/Kconfig
+@@ -46,6 +46,7 @@
config VIDEO_SELECT
bool "Video mode selection support"
depends on X86 && VGA_CONSOLE
@@ -432,10 +431,8 @@
---help---
This enables support for text mode selection on kernel startup. If
you want to take advantage of some high-resolution text mode your
-Index: head-2008-04-15/drivers/xen/Kconfig
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2008-04-15/drivers/xen/Kconfig 2008-04-15 09:59:19.000000000 +0200
+--- /dev/null
++++ b/drivers/xen/Kconfig
@@ -0,0 +1,298 @@
+#
+# This Kconfig describe xen options
@@ -470,7 +467,7 @@
+ depends on PROC_FS
+
+config XEN_NETDEV_ACCEL_SFC_UTIL
-+ depends on X86
++ depends on X86
+ tristate
+
+config XEN_BACKEND
@@ -494,11 +491,11 @@
+ depends on XEN_BACKEND
+ default XEN_BACKEND
+ help
-+ The block tap driver is an alternative to the block back driver
++ The block tap driver is an alternative to the block back driver
+ and allows VM block requests to be redirected to userspace through
-+ a device interface. The tap allows user-space development of
++ a device interface. The tap allows user-space development of
+ high-performance block backends, where disk images may be implemented
-+ as files, in memory, or on other hosts across the network. This
++ as files, in memory, or on other hosts across the network. This
+ driver can safely coexist with the existing blockback driver.
+
+config XEN_NETDEV_BACKEND
@@ -735,11 +732,9 @@
+ def_bool y
+
+endif
-Index: head-2008-04-15/fs/Kconfig
-===================================================================
---- head-2008-04-15.orig/fs/Kconfig 2008-04-15 09:41:09.000000000 +0200
-+++ head-2008-04-15/fs/Kconfig 2008-04-15 09:59:19.000000000 +0200
-@@ -991,6 +991,7 @@ config TMPFS_POSIX_ACL
+--- a/fs/Kconfig
++++ b/fs/Kconfig
+@@ -992,6 +992,7 @@
config HUGETLBFS
bool "HugeTLB file system support"
depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN
@@ -747,11 +742,9 @@
help
hugetlbfs is a filesystem backing for HugeTLB pages, based on
ramfs. For architectures that support it, say Y here and read
-Index: head-2008-04-15/kernel/Kconfig.preempt
-===================================================================
---- head-2008-04-15.orig/kernel/Kconfig.preempt 2008-04-15 09:41:09.000000000 +0200
-+++ head-2008-04-15/kernel/Kconfig.preempt 2008-04-15 09:59:19.000000000 +0200
-@@ -35,6 +35,7 @@ config PREEMPT_VOLUNTARY
+--- a/kernel/Kconfig.preempt
++++ b/kernel/Kconfig.preempt
+@@ -35,6 +35,7 @@
config PREEMPT
bool "Preemptible Kernel (Low-Latency Desktop)"
++++++ series.conf ++++++
--- kernel-source/series.conf 2008-05-07 20:22:02.000000000 +0200
+++ kernel-source/series.conf 2008-05-08 22:24:13.404219000 +0200
@@ -29,6 +29,7 @@
########################################################
patches.kernel.org/patch-2.6.25.1
patches.kernel.org/patch-2.6.25.1-2
+ patches.kernel.org/patch-2.6.25.3-rc1
########################################################
# Build fixes that apply to the vanilla kernel too.
@@ -134,6 +135,8 @@
# PS3
########################################################
+ patches.arch/ppc-ps3-ps3vram-mtd.patch
+
########################################################
# S/390
########################################################
@@ -266,7 +269,6 @@
patches.suse/reiserfs-rename-._.diff
# Fixes
- patches.fixes/quota_reiserfs_tail_fix.diff
########################################################
# ocfs2
@@ -379,7 +381,7 @@
patches.drivers/libata-ata_piix-verify-sidpr
patches.drivers/libata-sata_inic162x-update-to-0.4
- patches.fixes/mptbase-vmware-fix
+# patches.fixes/mptbase-vmware-fix
# Remaining SCSI patches (garloff)
patches.suse/scsi-error-test-unit-ready-timeout
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org