--- linux-2.6-2.6.30.orig/debian/compat
+++ linux-2.6-2.6.30/debian/compat
@@ -0,0 +1 @@
+7
--- linux-2.6-2.6.30.orig/debian/README
+++ linux-2.6-2.6.30/debian/README
@@ -0,0 +1,73 @@
+Migrating to the common kernel-image package
+-------------------------------------------- 
+Files for architecture <arch> should be placed into arch/<arch>. This
+directory normally contains a common config file for this architecture
+('config'), flavour-specific config files, Makefile.inc file,
+controlling the build for this arch, and the defines file, containing
+the machine descriptions for various flavours.  For arches with
+subarches the subdirectory arch/<arch>/<subarch> with the same file
+structure must be created for each subarch.
+
+Kernel config files
+-------------------
+Configuration files are constructed dynamically by concatenating a number
+of config files as described below. 
+
+For architecture without subarches:
+
+  arch/config
+  arch/<arch>/config 
+  arch/<arch>/config.<flavour>
+  
+For architecture with subarches:
+
+  arch/config
+  arch/<arch>/config
+  arch/<arch>/<subarch>/config
+  arch/<arch>/<subarch>/config.<flavour>
+
+Control file
+------------
+The master control file debian/control must be generated before
+the package is uploaded. debian/rules contains the debian/control 
+target, which generates the control file by invoking the 
+debian/bin/gencontrol.py script, which combines the templates from
+the templates directory and arch/subarch specific defines file to
+produce the debian/control file. Note that this target is intentionally
+made to fail with a non-zero exit code to make sure that it is never
+run during an automatic build. The following variables are substituted
+into the templates:
+
+@version@      Upstream kernel version, for example 2.6.11.
+@major@        The major version, for example 2.6
+@arch@         The Debian arch name, such as powerpc or i386.
+@subarch@      The subarch - only used by powerpc right now.
+@flavour@      The build flavour, such as 686 or k7-smp.
+@class@        The CPU/architecture class; displayed in synopsis.  It should
+               be fairly short, as the synopsis is supposed to be <80 chars.
+               It should be in the form "foo class", and will show up in the
+	       description as "foo class machines".
+@longclass@    The CPU/architecture class; displayed in the extended
+               description.  The same rules apply as in @class@.  If
+	       this is unset, it will default to @class@.
+@desc@         (Potentially) multi-line verbiage that's appended to
+               -image descriptions.
+@abiname@      Current abiname, a single digit.
+
+Normally, the arch-specific contents should be controlled by
+adjusting the corresponding defines file.
+
+Makefile.inc
+------------
+Each architecture subdirectory in arch may contain a Makefile.inc
+file, which is included by debian/rules after definining all the
+variables. It may be used to override the standard variables on
+per-architecture basis and other evil things. So far the valid uses of
+this file include the setting of the following variables:
+
+image_postproc
+
+  A command to be run after the kernel image is built. As far as I know,
+  it only required on sparc for stripping of the kernel which is too big
+  to be booted otherwise. Typical use is too ugly to be presented here.
+
--- linux-2.6-2.6.30.orig/debian/control
+++ linux-2.6-2.6.30/debian/control
@@ -0,0 +1,1121 @@
+Source: linux-2.6
+Section: kernel
+Priority: optional
+Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org>
+Uploaders: Bastian Blank <waldi@debian.org>, Frederik Schüler <fs@debian.org>, maximilian attems <maks@debian.org>
+Standards-Version: 3.8.1
+Build-Depends: debhelper (>> 7), cpio, module-init-tools, python, gcc-4.3 [alpha amd64 arm armel hppa i386 ia64 m68k mips mipsel powerpc s390 sparc], binutils-hppa64 [hppa], gcc-4.3-hppa64 [hppa]
+Build-Depends-Indep: bzip2, python-central, xmlto
+XS-Python-Version: current
+
+Package: linux-source-2.6.30
+Architecture: all
+Section: kernel
+Provides: linux-source, linux-source-2.6
+Depends: binutils, bzip2
+Recommends: libc6-dev | libc-dev, gcc, make
+Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-mt-dev
+Description: Linux kernel source for version 2.6.30 with Debian patches
+ This package provides source code for the Linux kernel version 2.6.30.
+ This source closely tracks official Linux kernel releases.  Debian's
+ modifications to that source consist of security fixes, bug fixes, and
+ features that have already been (or we believe will be) accepted by the
+ upstream maintainers.
+ .
+ If you wish to use this package to create a custom Linux kernel, then it
+ is suggested that you investigate the package kernel-package, which has
+ been designed to ease the task of creating kernel image packages.
+
+Package: linux-doc-2.6.30
+Architecture: all
+Section: doc
+Provides: linux-doc-2.6
+Description: Linux kernel specific documentation for version 2.6.30
+ This package provides the various README files and HTML documentation for
+ the Linux kernel version 2.6.30.  Plenty of information, including the
+ descriptions of various kernel subsystems, filesystems, driver-specific
+ notes and the like.  Consult the file
+ /usr/share/doc/linux-doc-2.6.30/Documentation/00-INDEX for the detailed
+ description of the contents.
+
+Package: linux-manual-2.6.30
+Architecture: all
+Section: doc
+Provides: linux-manual, kernel-manual-2.6
+Replaces: linux-manual, kernel-manual-2.6
+Conflicts: linux-manual, kernel-manual-2.6
+Description: Linux kernel API manual pages for version 2.6.30
+ This package provides the Kernel Hacker's Guide in the form of manual
+ pages, describing the kernel API functions.  They are installed into
+ section 9 of the manual.
+ .
+ As the files containing manual pages for different kernel versions are
+ installed in the same location, only one linux-manual package may be
+ installed at a time.  The linux-doc package containing the documentation
+ in other formats is free from such restriction.
+
+Package: linux-patch-debian-2.6.30
+Architecture: all
+Depends: bzip2, linux-support-2.6.30-bpo.2
+Suggests: linux-source-2.6.30
+Description: Debian patches to version 2.6.30 of the Linux kernel
+ This package includes the patches used to produce the prepackaged
+ linux-source-2.6.30 package, as well as architecture-specific patches.
+ .
+ Note that these patches do NOT apply against a pristine Linux 2.6.30
+ kernel but only against the kernel tarball linux-2.6_2.6.30.orig.tar.gz
+ from the Debian archive.
+
+Package: linux-tree-2.6.30
+Architecture: all
+Section: devel
+Provides: linux-tree-2.6.30-8-bpo50+2, linux-tree-2.6.30-8squeeze1, linux-tree-2.6.30-8, linux-tree-2.6.30-7, linux-tree-2.6.30-6, linux-tree-2.6.30-5, linux-tree-2.6.30-4, linux-tree-2.6.30-3, linux-tree-2.6.30-2, linux-tree-2.6.30-1
+Depends: linux-patch-debian-2.6.30 (= 2.6.30-8~bpo50+2), linux-source-2.6.30 (= 2.6.30-8~bpo50+2) | linux-source-2.6.30 (= 2.6.30-8squeeze1) | linux-source-2.6.30 (= 2.6.30-8) | linux-source-2.6.30 (= 2.6.30-7) | linux-source-2.6.30 (= 2.6.30-6) | linux-source-2.6.30 (= 2.6.30-5) | linux-source-2.6.30 (= 2.6.30-4) | linux-source-2.6.30 (= 2.6.30-3) | linux-source-2.6.30 (= 2.6.30-2) | linux-source-2.6.30 (= 2.6.30-1)
+Description: Linux kernel source tree for building Debian kernel images
+ This metapackage is used as a build dependency of Debian linux-image
+ packages to prevent a version discrepancy between the linux-image and
+ corresponding linux-sources packages in the fast-moving unstable archive.
+ The package's dependency relations are structured so that a linux-image
+ package's build dependencies can always be satisfied, even if the
+ linux-source package that had been used to compile the image has been
+ superseeded by a newer Debian revision since the last build.
+ .
+ The package provides a list of virtual packages, corresponding to Debian
+ revisions of a linux-source package.  The Debian linux-patch contains the
+ information needed to roll back the current linux-source to any of the
+ revisions identified by the provided virtual packages.  Therefore, the
+ linux-tree package ensures the availability of the Linux kernel source
+ tree corresponding to each of the virtual packages listed.
+ .
+ The package serves no purpose outside of the Debian build and archive
+ infrastructure.
+
+Package: linux-support-2.6.30-bpo.2
+Architecture: all
+Section: devel
+Depends: ${python:Depends}
+Description: Support files for Linux 2.6.30
+ This package provides support files for the Linux kernel build.
+XB-Python-Version: ${python:Versions}
+
+Package: linux-libc-dev
+Architecture: alpha amd64 arm armel hppa i386 ia64 m68k mips mipsel powerpc s390 sparc
+Section: devel
+Provides: linux-kernel-headers
+Replaces: linux-kernel-headers, libdrm-dev (<= 2.4.5-1)
+Conflicts: linux-kernel-headers
+Description: Linux support headers for userspace development
+ This package provides userspaces headers from the Linux kernel.  These
+ headers are used by the installed headers for GNU glibc and other system
+ libraries.
+
+Package: linux-headers-2.6.30-bpo.2-all
+Architecture: alpha amd64 arm armel hppa i386 ia64 m68k mips mipsel powerpc s390 sparc
+Depends: linux-headers-2.6.30-bpo.2-all-${kernel:Arch} (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-headers-2.6.30-bpo.2-all-alpha
+Architecture: alpha
+Depends: linux-headers-2.6.30-bpo.2-alpha-generic (= ${binary:Version}), linux-headers-2.6.30-bpo.2-alpha-smp (= ${binary:Version}), linux-headers-2.6.30-bpo.2-alpha-legacy (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-headers-2.6.30-bpo.2-common
+Architecture: alpha amd64 arm armel hppa i386 ia64 m68k mips mipsel powerpc s390 sparc
+Description: Common header files for Linux 2.6.30-bpo.2
+ This package provides the architecture-specific common kernel header files
+ for Linux kernel version 2.6.30-bpo.2,  generally used for building
+ out-of-tree kernel modules.  To obtain a complete set of headers you also
+ need to install the linux-headers-2.6.30-bpo.2-(flavour)  package,
+ matching the flavour of the kernel you intend the build for.
+
+Package: linux-image-2.6.30-bpo.2-alpha-generic
+Architecture: alpha
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-alpha-generic
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, aboot, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Alpha
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Alpha machines.
+
+Package: linux-headers-2.6.30-bpo.2-alpha-generic
+Architecture: alpha
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-alpha-generic
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-alpha-generic,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-alpha-generic,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-alpha-generic  package.
+
+Package: linux-image-2.6.30-bpo.2-alpha-smp
+Architecture: alpha
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-alpha-smp
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, aboot, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Alpha SMP
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Alpha SMP machines.
+
+Package: linux-headers-2.6.30-bpo.2-alpha-smp
+Architecture: alpha
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-alpha-smp
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-alpha-smp,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-alpha-smp,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-alpha-smp  package.
+
+Package: linux-image-2.6.30-bpo.2-alpha-legacy
+Architecture: alpha
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-alpha-legacy
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, aboot, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Alpha Legacy
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Alpha Legacy machines.
+
+Package: linux-headers-2.6.30-bpo.2-alpha-legacy
+Architecture: alpha
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-alpha-legacy
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-alpha-legacy,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-alpha-legacy,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-alpha-legacy  package.
+
+Package: linux-headers-2.6.30-bpo.2-all-amd64
+Architecture: amd64
+Depends: linux-headers-2.6.30-bpo.2-amd64 (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.2-amd64
+Architecture: amd64 i386
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-amd64
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, grub | lilo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on AMD64
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on all 64bit single- and multiprocessor AMD and Intel
+ machines.
+ .
+ This kernel also runs on a Xen hypervisor.  It supports only unpriviledged
+ (domU) operation.
+
+Package: linux-headers-2.6.30-bpo.2-amd64
+Architecture: amd64 i386
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-amd64
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-amd64,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-amd64,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-amd64  package.
+
+Package: linux-headers-2.6.30-bpo.2-all-arm
+Architecture: arm
+Depends: linux-headers-2.6.30-bpo.2-footbridge (= ${binary:Version}), linux-headers-2.6.30-bpo.2-iop32x (= ${binary:Version}), linux-headers-2.6.30-bpo.2-ixp4xx (= ${binary:Version}), linux-headers-2.6.30-bpo.2-orion5x (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.2-footbridge
+Architecture: arm
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-footbridge
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, nwutil
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Footbridge
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Footbridge based (CATS, Netwinder) machines.
+
+Package: linux-headers-2.6.30-bpo.2-footbridge
+Architecture: arm
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-footbridge
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-footbridge,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-footbridge,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-footbridge  package.
+
+Package: linux-image-2.6.30-bpo.2-iop32x
+Architecture: arm armel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-iop32x
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on IOP32x
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on IOP32x based (Thecus N2100, etc) machines.
+
+Package: linux-headers-2.6.30-bpo.2-iop32x
+Architecture: arm armel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-iop32x
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-iop32x,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-iop32x,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-iop32x  package.
+
+Package: linux-image-2.6.30-bpo.2-ixp4xx
+Architecture: arm armel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-ixp4xx
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on IXP4xx
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on IXP4xx based (Linksys NSLU2, etc) machines.
+
+Package: linux-headers-2.6.30-bpo.2-ixp4xx
+Architecture: arm armel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-ixp4xx
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-ixp4xx,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-ixp4xx,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-ixp4xx  package.
+
+Package: linux-image-2.6.30-bpo.2-orion5x
+Architecture: arm armel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-orion5x
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Recommends: uboot-mkimage
+Suggests: linux-doc-2.6.30, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Orion
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Orion 5181, 5182 and 5281 based (QNAP
+ TS-109/TS-209, etc) machines.
+
+Package: linux-headers-2.6.30-bpo.2-orion5x
+Architecture: arm armel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-orion5x
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-orion5x,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-orion5x,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-orion5x  package.
+
+Package: linux-headers-2.6.30-bpo.2-all-armel
+Architecture: armel
+Depends: linux-headers-2.6.30-bpo.2-iop32x (= ${binary:Version}), linux-headers-2.6.30-bpo.2-ixp4xx (= ${binary:Version}), linux-headers-2.6.30-bpo.2-kirkwood (= ${binary:Version}), linux-headers-2.6.30-bpo.2-orion5x (= ${binary:Version}), linux-headers-2.6.30-bpo.2-versatile (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.2-kirkwood
+Architecture: armel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-kirkwood
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Recommends: uboot-mkimage
+Suggests: linux-doc-2.6.30, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Marvell Kirkwood
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Marvell Kirkwood based (SheevaPlug, QNAP
+ TS-119/TS-219, etc) machines.
+
+Package: linux-headers-2.6.30-bpo.2-kirkwood
+Architecture: armel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-kirkwood
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-kirkwood,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-kirkwood,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-kirkwood  package.
+
+Package: linux-image-2.6.30-bpo.2-versatile
+Architecture: armel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-versatile
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Versatile
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Versatile (PB, AB, Qemu) machines.
+
+Package: linux-headers-2.6.30-bpo.2-versatile
+Architecture: armel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-versatile
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-versatile,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-versatile,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-versatile  package.
+
+Package: linux-headers-2.6.30-bpo.2-all-hppa
+Architecture: hppa
+Depends: linux-headers-2.6.30-bpo.2-parisc (= ${binary:Version}), linux-headers-2.6.30-bpo.2-parisc-smp (= ${binary:Version}), linux-headers-2.6.30-bpo.2-parisc64 (= ${binary:Version}), linux-headers-2.6.30-bpo.2-parisc64-smp (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.2-parisc
+Architecture: hppa
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-parisc
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, palo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on 32-bit PA-RISC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on 32-bit PA-RISC machines.
+
+Package: linux-headers-2.6.30-bpo.2-parisc
+Architecture: hppa
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3, binutils-hppa64, gcc-4.3-hppa64
+Description: Header files for Linux 2.6.30-bpo.2-parisc
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-parisc,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-parisc,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-parisc  package.
+
+Package: linux-image-2.6.30-bpo.2-parisc-smp
+Architecture: hppa
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-parisc-smp
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, palo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on multiprocessor 32-bit PA-RISC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on multiprocessor 32-bit PA-RISC machines.
+
+Package: linux-headers-2.6.30-bpo.2-parisc-smp
+Architecture: hppa
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3, binutils-hppa64, gcc-4.3-hppa64
+Description: Header files for Linux 2.6.30-bpo.2-parisc-smp
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-parisc-smp,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-parisc-smp,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-parisc-smp  package.
+
+Package: linux-image-2.6.30-bpo.2-parisc64
+Architecture: hppa
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-parisc64
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, palo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on 64-bit PA-RISC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on 64-bit PA-RISC machines.
+
+Package: linux-headers-2.6.30-bpo.2-parisc64
+Architecture: hppa
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3, binutils-hppa64, gcc-4.3-hppa64
+Description: Header files for Linux 2.6.30-bpo.2-parisc64
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-parisc64,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-parisc64,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-parisc64  package.
+
+Package: linux-image-2.6.30-bpo.2-parisc64-smp
+Architecture: hppa
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-parisc64-smp
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, palo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on multiprocessor 64-bit PA-RISC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on multiprocessor 64-bit PA-RISC machines.
+
+Package: linux-headers-2.6.30-bpo.2-parisc64-smp
+Architecture: hppa
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3, binutils-hppa64, gcc-4.3-hppa64
+Description: Header files for Linux 2.6.30-bpo.2-parisc64-smp
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-parisc64-smp,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-parisc64-smp,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-parisc64-smp  package.
+
+Package: linux-headers-2.6.30-bpo.2-all-i386
+Architecture: i386
+Depends: linux-headers-2.6.30-bpo.2-486 (= ${binary:Version}), linux-headers-2.6.30-bpo.2-686 (= ${binary:Version}), linux-headers-2.6.30-bpo.2-686-bigmem (= ${binary:Version}), linux-headers-2.6.30-bpo.2-amd64 (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.2-486
+Architecture: i386
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-486
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, grub | lilo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on x86
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on x86 and compatible machines.
+
+Package: linux-headers-2.6.30-bpo.2-486
+Architecture: i386
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-486
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-486,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-486,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-486  package.
+
+Package: linux-image-2.6.30-bpo.2-686
+Architecture: i386
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-686
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Recommends: libc6-i686
+Suggests: linux-doc-2.6.30, grub | lilo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on PPro/Celeron/PII/PIII/P4
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Pentium Pro/Celeron/Pentium II/Pentium III/Pentium
+ 4 machines.
+
+Package: linux-headers-2.6.30-bpo.2-686
+Architecture: i386
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-686
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-686,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-686,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-686  package.
+
+Package: linux-image-2.6.30-bpo.2-686-bigmem
+Architecture: i386
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-686-bigmem
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Recommends: libc6-i686
+Suggests: linux-doc-2.6.30, grub | lilo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on PPro/Celeron/PII/PIII/P4
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Pentium Pro/Celeron/Pentium II/Pentium III/Pentium
+ 4 with 4-64G RAM machines.
+ .
+ This kernel also runs on a Xen hypervisor.  It supports only unpriviledged
+ (domU) operation.
+
+Package: linux-headers-2.6.30-bpo.2-686-bigmem
+Architecture: i386
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-686-bigmem
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-686-bigmem,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-686-bigmem,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-686-bigmem  package.
+
+Package: linux-headers-2.6.30-bpo.2-all-ia64
+Architecture: ia64
+Depends: linux-headers-2.6.30-bpo.2-itanium (= ${binary:Version}), linux-headers-2.6.30-bpo.2-mckinley (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.2-itanium
+Architecture: ia64
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-itanium
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, elilo, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Itanium
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Itanium machines.
+
+Package: linux-headers-2.6.30-bpo.2-itanium
+Architecture: ia64
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-itanium
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-itanium,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-itanium,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-itanium  package.
+
+Package: linux-image-2.6.30-bpo.2-mckinley
+Architecture: ia64
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-mckinley
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, elilo, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Itanium II
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Itanium II machines.
+
+Package: linux-headers-2.6.30-bpo.2-mckinley
+Architecture: ia64
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-mckinley
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-mckinley,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-mckinley,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-mckinley  package.
+
+Package: linux-headers-2.6.30-bpo.2-all-m68k
+Architecture: m68k
+Depends: linux-headers-2.6.30-bpo.2-amiga (= ${binary:Version}), linux-headers-2.6.30-bpo.2-atari (= ${binary:Version}), linux-headers-2.6.30-bpo.2-bvme6000 (= ${binary:Version}), linux-headers-2.6.30-bpo.2-mac (= ${binary:Version}), linux-headers-2.6.30-bpo.2-mvme147 (= ${binary:Version}), linux-headers-2.6.30-bpo.2-mvme16x (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.2-amiga
+Architecture: m68k
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-amiga
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, vmelilo, fdutils
+Description: Linux 2.6.30 image on Amiga
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Amiga machines.
+
+Package: linux-headers-2.6.30-bpo.2-amiga
+Architecture: m68k
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-amiga
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-amiga,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-amiga,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-amiga  package.
+
+Package: linux-image-2.6.30-bpo.2-atari
+Architecture: m68k
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-atari
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, vmelilo, fdutils
+Description: Linux 2.6.30 image on Atari
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Atari machines.
+
+Package: linux-headers-2.6.30-bpo.2-atari
+Architecture: m68k
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-atari
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-atari,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-atari,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-atari  package.
+
+Package: linux-image-2.6.30-bpo.2-bvme6000
+Architecture: m68k
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-bvme6000
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, vmelilo, fdutils
+Description: Linux 2.6.30 image on BVM BVME4000 and BVME6000
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on BVM BVME4000 and BVME6000 machines.
+
+Package: linux-headers-2.6.30-bpo.2-bvme6000
+Architecture: m68k
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-bvme6000
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-bvme6000,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-bvme6000,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-bvme6000  package.
+
+Package: linux-image-2.6.30-bpo.2-mac
+Architecture: m68k
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-mac
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, vmelilo, fdutils
+Description: Linux 2.6.30 image on Macintosh
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Macintosh machines.
+
+Package: linux-headers-2.6.30-bpo.2-mac
+Architecture: m68k
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-mac
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-mac,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-mac,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-mac  package.
+
+Package: linux-image-2.6.30-bpo.2-mvme147
+Architecture: m68k
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-mvme147
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, vmelilo, fdutils
+Description: Linux 2.6.30 image on Motorola MVME147
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Motorola MVME147 machines.
+
+Package: linux-headers-2.6.30-bpo.2-mvme147
+Architecture: m68k
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-mvme147
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-mvme147,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-mvme147,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-mvme147  package.
+
+Package: linux-image-2.6.30-bpo.2-mvme16x
+Architecture: m68k
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-mvme16x
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, vmelilo, fdutils
+Description: Linux 2.6.30 image on Motorola MVME162/6/7, MVME172/7
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Motorola MVME162/6/7, MVME172/7 machines.
+
+Package: linux-headers-2.6.30-bpo.2-mvme16x
+Architecture: m68k
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-mvme16x
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-mvme16x,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-mvme16x,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-mvme16x  package.
+
+Package: linux-headers-2.6.30-bpo.2-all-mips
+Architecture: mips
+Depends: linux-headers-2.6.30-bpo.2-r4k-ip22 (= ${binary:Version}), linux-headers-2.6.30-bpo.2-r5k-ip32 (= ${binary:Version}), linux-headers-2.6.30-bpo.2-sb1-bcm91250a (= ${binary:Version}), linux-headers-2.6.30-bpo.2-sb1a-bcm91480b (= ${binary:Version}), linux-headers-2.6.30-bpo.2-4kc-malta (= ${binary:Version}), linux-headers-2.6.30-bpo.2-5kc-malta (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.2-r4k-ip22
+Architecture: mips
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-r4k-ip22
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on SGI IP22
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on SGI IP22 (Indy, Indigo2) machines.
+
+Package: linux-headers-2.6.30-bpo.2-r4k-ip22
+Architecture: mips
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-r4k-ip22
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-r4k-ip22,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-r4k-ip22,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-r4k-ip22  package.
+
+Package: linux-image-2.6.30-bpo.2-r5k-ip32
+Architecture: mips
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-r5k-ip32
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on SGI IP32
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on SGI IP32 (O2) machines.
+
+Package: linux-headers-2.6.30-bpo.2-r5k-ip32
+Architecture: mips
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-r5k-ip32
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-r5k-ip32,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-r5k-ip32,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-r5k-ip32  package.
+
+Package: linux-image-2.6.30-bpo.2-sb1-bcm91250a
+Architecture: mips mipsel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-sb1-bcm91250a
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on BCM91250A
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Broadcom BCM91250A (aka SWARM) machines.
+
+Package: linux-headers-2.6.30-bpo.2-sb1-bcm91250a
+Architecture: mips mipsel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-sb1-bcm91250a
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-sb1-bcm91250a,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-sb1-bcm91250a,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-sb1-bcm91250a  package.
+
+Package: linux-image-2.6.30-bpo.2-sb1a-bcm91480b
+Architecture: mips mipsel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-sb1a-bcm91480b
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on BCM91480B
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Broadcom BCM91480B (aka BigSur) machines.
+
+Package: linux-headers-2.6.30-bpo.2-sb1a-bcm91480b
+Architecture: mips mipsel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-sb1a-bcm91480b
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-sb1a-bcm91480b,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-sb1a-bcm91480b,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-sb1a-bcm91480b  package.
+
+Package: linux-image-2.6.30-bpo.2-4kc-malta
+Architecture: mips mipsel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-4kc-malta
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on MIPS Malta
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on MIPS Malta board machines.
+
+Package: linux-headers-2.6.30-bpo.2-4kc-malta
+Architecture: mips mipsel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-4kc-malta
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-4kc-malta,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-4kc-malta,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-4kc-malta  package.
+
+Package: linux-image-2.6.30-bpo.2-5kc-malta
+Architecture: mips mipsel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-5kc-malta
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on MIPS Malta (64-bit)
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on MIPS Malta board (64-bit) machines.
+
+Package: linux-headers-2.6.30-bpo.2-5kc-malta
+Architecture: mips mipsel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-5kc-malta
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-5kc-malta,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-5kc-malta,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-5kc-malta  package.
+
+Package: linux-headers-2.6.30-bpo.2-all-mipsel
+Architecture: mipsel
+Depends: linux-headers-2.6.30-bpo.2-r5k-cobalt (= ${binary:Version}), linux-headers-2.6.30-bpo.2-sb1-bcm91250a (= ${binary:Version}), linux-headers-2.6.30-bpo.2-sb1a-bcm91480b (= ${binary:Version}), linux-headers-2.6.30-bpo.2-4kc-malta (= ${binary:Version}), linux-headers-2.6.30-bpo.2-5kc-malta (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.2-r5k-cobalt
+Architecture: mipsel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-r5k-cobalt
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on Cobalt
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Cobalt (Qube, RaQ, Qube2, RaQ2) machines.
+
+Package: linux-headers-2.6.30-bpo.2-r5k-cobalt
+Architecture: mipsel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-r5k-cobalt
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-r5k-cobalt,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-r5k-cobalt,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-r5k-cobalt  package.
+
+Package: linux-headers-2.6.30-bpo.2-all-powerpc
+Architecture: powerpc
+Depends: linux-headers-2.6.30-bpo.2-powerpc (= ${binary:Version}), linux-headers-2.6.30-bpo.2-powerpc-smp (= ${binary:Version}), linux-headers-2.6.30-bpo.2-powerpc64 (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.2-powerpc
+Architecture: powerpc
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-powerpc
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, mkvmlinuz
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on uniprocessor 32-bit PowerPC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on uniprocessor 32-bit PowerPC machines.
+
+Package: linux-headers-2.6.30-bpo.2-powerpc
+Architecture: powerpc
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-powerpc
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-powerpc,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-powerpc,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-powerpc  package.
+
+Package: linux-image-2.6.30-bpo.2-powerpc-smp
+Architecture: powerpc
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-powerpc-smp
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, mkvmlinuz
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on multiprocessor 32-bit PowerPC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on multiprocessor 32-bit PowerPC machines.
+
+Package: linux-headers-2.6.30-bpo.2-powerpc-smp
+Architecture: powerpc
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-powerpc-smp
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-powerpc-smp,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-powerpc-smp,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-powerpc-smp  package.
+
+Package: linux-image-2.6.30-bpo.2-powerpc64
+Architecture: powerpc
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-powerpc64
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, mkvmlinuz
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on 64-bit PowerPC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on 64-bit PowerPC machines.
+
+Package: linux-headers-2.6.30-bpo.2-powerpc64
+Architecture: powerpc
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-powerpc64
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-powerpc64,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-powerpc64,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-powerpc64  package.
+
+Package: linux-headers-2.6.30-bpo.2-all-s390
+Architecture: s390
+Depends: linux-headers-2.6.30-bpo.2-s390x (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.2-s390x
+Architecture: s390
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-s390x
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, s390-tools
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on IBM zSeries
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on IBM zSeries machines.
+ .
+ This kernel has support to IPL (boot) from a VM reader or DASD device.
+
+Package: linux-headers-2.6.30-bpo.2-s390x
+Architecture: s390
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-s390x
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-s390x,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-s390x,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-s390x  package.
+
+Package: linux-image-2.6.30-bpo.2-s390x-tape
+Architecture: s390
+Provides: linux-image, linux-image-2.6
+Depends: ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, s390-tools
+Description: Linux 2.6.30 image on IBM zSeries, IPL from tape
+ This package provides the binary image for Linux kernel 2.6.30 on IBM
+ zSeries machines.
+ .
+ This kernel has support to IPL (boot) from a tape.
+
+Package: linux-headers-2.6.30-bpo.2-all-sparc
+Architecture: sparc
+Depends: linux-headers-2.6.30-bpo.2-sparc64 (= ${binary:Version}), linux-headers-2.6.30-bpo.2-sparc64-smp (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.2-sparc64
+Architecture: sparc
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-sparc64
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, silo, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on uniprocessor 64-bit UltraSPARC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on uniprocessor 64-bit UltraSPARC machines.
+
+Package: linux-headers-2.6.30-bpo.2-sparc64
+Architecture: sparc
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-sparc64
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-sparc64,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-sparc64,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-sparc64  package.
+
+Package: linux-image-2.6.30-bpo.2-sparc64-smp
+Architecture: sparc
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.2-sparc64-smp
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, silo, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on multiprocessor 64-bit UltraSPARC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on multiprocessor 64-bit UltraSPARC machines.
+
+Package: linux-headers-2.6.30-bpo.2-sparc64-smp
+Architecture: sparc
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.2-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.2-sparc64-smp
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.2-sparc64-smp,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.2-sparc64-smp,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.2-sparc64-smp  package.
+
--- linux-2.6-2.6.30.orig/debian/rules.defs
+++ linux-2.6-2.6.30/debian/rules.defs
@@ -0,0 +1,4 @@
+BUILD_DIR = debian/build
+STAMPS_DIR = debian/stamps
+TEMPLATES_DIR = debian/templates
+
--- linux-2.6-2.6.30.orig/debian/README.build
+++ linux-2.6-2.6.30/debian/README.build
@@ -0,0 +1,17 @@
+Building kernels from SVN (for official images):
+
+1) Start by downloading a kernel tarball from kernel.org
+   (ie, linux-2.6.25.tar.bz2) and, optionally, a patch
+   (i.e. patch-2.6.26-rc3.bz2).
+
+2) Run ./debian/bin/genorig.py <tarball> [patch]. This will produce
+   ../orig/linux-2.6_<version>.orig.tar.gz
+   (i.e. linux-2.6_2.6.26~rc3.orig.tar.gz).
+
+3) Unpack linux-2.6-<version>.orig.tar.gz, cd into the new directory,
+   and do a 'svn export' to get the debian/ subdirectory.
+   Alternatively unpack using "make -f debian/rules orig".
+
+4) Build debian/control by running 'make -f debian/rules debian/control-real'.
+
+5) .configs will be generated during build.
--- linux-2.6-2.6.30.orig/debian/rules.gen
+++ linux-2.6-2.6.30/debian/rules.gen
@@ -0,0 +1,784 @@
+.NOTPARALLEL:
+binary-arch: binary-arch_alpha binary-arch_amd64 binary-arch_arm binary-arch_armel binary-arch_hppa binary-arch_i386 binary-arch_ia64 binary-arch_m68k binary-arch_mips binary-arch_mipsel binary-arch_powerpc binary-arch_s390 binary-arch_sparc
+binary-arch_alpha: binary-arch_alpha_none binary-arch_alpha_real
+binary-arch_alpha_none: binary-arch_alpha_none_alpha-generic binary-arch_alpha_none_alpha-legacy binary-arch_alpha_none_alpha-smp binary-arch_alpha_none_real
+binary-arch_alpha_none_alpha-generic: binary-arch_alpha_none_alpha-generic_real
+binary-arch_alpha_none_alpha-generic_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-generic' FLAVOUR='alpha-generic' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-generic' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-alpha-generic' ARCH='alpha' COMPILER='gcc-4.3'
+binary-arch_alpha_none_alpha-legacy: binary-arch_alpha_none_alpha-legacy_real
+binary-arch_alpha_none_alpha-legacy_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-legacy' FLAVOUR='alpha-legacy' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-legacy' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-alpha-legacy' ARCH='alpha' COMPILER='gcc-4.3'
+binary-arch_alpha_none_alpha-smp: binary-arch_alpha_none_alpha-smp_real
+binary-arch_alpha_none_alpha-smp_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-smp' FLAVOUR='alpha-smp' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-alpha-smp' ARCH='alpha' COMPILER='gcc-4.3'
+binary-arch_alpha_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' ABINAME='-bpo.2' ARCH='alpha'
+binary-arch_alpha_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='alpha'
+binary-arch_amd64: binary-arch_amd64_none binary-arch_amd64_real
+binary-arch_amd64_none: binary-arch_amd64_none_amd64 binary-arch_amd64_none_real
+binary-arch_amd64_none_amd64: binary-arch_amd64_none_amd64_real
+binary-arch_amd64_none_amd64_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-amd64' FLAVOUR='amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/amd64/config debian/config/kernelarch-x86/config-arch-64 debian/config/amd64/config.amd64' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-amd64' ARCH='amd64' COMPILER='gcc-4.3'
+binary-arch_amd64_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' ABINAME='-bpo.2' ARCH='amd64'
+binary-arch_amd64_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='amd64'
+binary-arch_arm: binary-arch_arm_none binary-arch_arm_real
+binary-arch_arm_none: binary-arch_arm_none_footbridge binary-arch_arm_none_iop32x binary-arch_arm_none_ixp4xx binary-arch_arm_none_orion5x binary-arch_arm_none_real
+binary-arch_arm_none_footbridge: binary-arch_arm_none_footbridge_real
+binary-arch_arm_none_footbridge_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-footbridge' FLAVOUR='footbridge' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.footbridge' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-footbridge' ARCH='arm' COMPILER='gcc-4.3'
+binary-arch_arm_none_iop32x: binary-arch_arm_none_iop32x_real
+binary-arch_arm_none_iop32x_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-iop32x' FLAVOUR='iop32x' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.iop32x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-iop32x' ARCH='arm' COMPILER='gcc-4.3'
+binary-arch_arm_none_ixp4xx: binary-arch_arm_none_ixp4xx_real
+binary-arch_arm_none_ixp4xx_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-ixp4xx' FLAVOUR='ixp4xx' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.ixp4xx' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-ixp4xx' ARCH='arm' COMPILER='gcc-4.3'
+binary-arch_arm_none_orion5x: binary-arch_arm_none_orion5x_real
+binary-arch_arm_none_orion5x_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-orion5x' FLAVOUR='orion5x' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.orion5x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-orion5x' ARCH='arm' COMPILER='gcc-4.3'
+binary-arch_arm_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' ABINAME='-bpo.2' ARCH='arm'
+binary-arch_arm_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='arm'
+binary-arch_armel: binary-arch_armel_none binary-arch_armel_real
+binary-arch_armel_none: binary-arch_armel_none_iop32x binary-arch_armel_none_ixp4xx binary-arch_armel_none_kirkwood binary-arch_armel_none_orion5x binary-arch_armel_none_real binary-arch_armel_none_versatile
+binary-arch_armel_none_iop32x: binary-arch_armel_none_iop32x_real
+binary-arch_armel_none_iop32x_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-iop32x' FLAVOUR='iop32x' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.iop32x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-iop32x' ARCH='armel' COMPILER='gcc-4.3'
+binary-arch_armel_none_ixp4xx: binary-arch_armel_none_ixp4xx_real
+binary-arch_armel_none_ixp4xx_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-ixp4xx' FLAVOUR='ixp4xx' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.ixp4xx' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-ixp4xx' ARCH='armel' COMPILER='gcc-4.3'
+binary-arch_armel_none_kirkwood: binary-arch_armel_none_kirkwood_real
+binary-arch_armel_none_kirkwood_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-kirkwood' FLAVOUR='kirkwood' KCONFIG='debian/config/config debian/config/armel/config debian/config/armel/config.kirkwood' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-kirkwood' ARCH='armel' COMPILER='gcc-4.3'
+binary-arch_armel_none_orion5x: binary-arch_armel_none_orion5x_real
+binary-arch_armel_none_orion5x_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-orion5x' FLAVOUR='orion5x' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.orion5x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-orion5x' ARCH='armel' COMPILER='gcc-4.3'
+binary-arch_armel_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' ABINAME='-bpo.2' ARCH='armel'
+binary-arch_armel_none_versatile: binary-arch_armel_none_versatile_real
+binary-arch_armel_none_versatile_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-versatile' FLAVOUR='versatile' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.versatile' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-versatile' ARCH='armel' COMPILER='gcc-4.3'
+binary-arch_armel_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='armel'
+binary-arch_hppa: binary-arch_hppa_none binary-arch_hppa_real
+binary-arch_hppa_none: binary-arch_hppa_none_parisc binary-arch_hppa_none_parisc-smp binary-arch_hppa_none_parisc64 binary-arch_hppa_none_parisc64-smp binary-arch_hppa_none_real
+binary-arch_hppa_none_parisc: binary-arch_hppa_none_parisc_real
+binary-arch_hppa_none_parisc-smp: binary-arch_hppa_none_parisc-smp_real
+binary-arch_hppa_none_parisc-smp_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc-smp' FLAVOUR='parisc-smp' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-parisc-smp' ARCH='hppa' COMPILER='gcc-4.3'
+binary-arch_hppa_none_parisc64: binary-arch_hppa_none_parisc64_real
+binary-arch_hppa_none_parisc64-smp: binary-arch_hppa_none_parisc64-smp_real
+binary-arch_hppa_none_parisc64-smp_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc64-smp' FLAVOUR='parisc64-smp' CFLAGS='-fno-cse-follow-jumps' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-parisc64-smp' ARCH='hppa' COMPILER='gcc-4.3'
+binary-arch_hppa_none_parisc64_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc64' FLAVOUR='parisc64' CFLAGS='-fno-cse-follow-jumps' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-parisc64' ARCH='hppa' COMPILER='gcc-4.3'
+binary-arch_hppa_none_parisc_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc' FLAVOUR='parisc' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-parisc' ARCH='hppa' COMPILER='gcc-4.3'
+binary-arch_hppa_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' ABINAME='-bpo.2' ARCH='hppa'
+binary-arch_hppa_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='hppa'
+binary-arch_i386: binary-arch_i386_none binary-arch_i386_real
+binary-arch_i386_none: binary-arch_i386_none_486 binary-arch_i386_none_686 binary-arch_i386_none_686-bigmem binary-arch_i386_none_amd64 binary-arch_i386_none_real
+binary-arch_i386_none_486: binary-arch_i386_none_486_real
+binary-arch_i386_none_486_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-486' FLAVOUR='486' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.486' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-486' ARCH='i386' COMPILER='gcc-4.3'
+binary-arch_i386_none_686: binary-arch_i386_none_686_real
+binary-arch_i386_none_686-bigmem: binary-arch_i386_none_686-bigmem_real
+binary-arch_i386_none_686-bigmem_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-686-bigmem' FLAVOUR='686-bigmem' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.686-bigmem' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-686-bigmem' ARCH='i386' COMPILER='gcc-4.3'
+binary-arch_i386_none_686_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-686' FLAVOUR='686' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.686' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-686' ARCH='i386' COMPILER='gcc-4.3'
+binary-arch_i386_none_amd64: binary-arch_i386_none_amd64_real
+binary-arch_i386_none_amd64_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-amd64' FLAVOUR='amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-64 debian/config/amd64/config debian/config/amd64/config.amd64' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-amd64' ARCH='i386' COMPILER='gcc-4.3'
+binary-arch_i386_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' ABINAME='-bpo.2' ARCH='i386'
+binary-arch_i386_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='i386'
+binary-arch_ia64: binary-arch_ia64_none binary-arch_ia64_real
+binary-arch_ia64_none: binary-arch_ia64_none_itanium binary-arch_ia64_none_mckinley binary-arch_ia64_none_real
+binary-arch_ia64_none_itanium: binary-arch_ia64_none_itanium_real
+binary-arch_ia64_none_itanium_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-itanium' FLAVOUR='itanium' KCONFIG='debian/config/config debian/config/ia64/config debian/config/ia64/config.itanium' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-itanium' ARCH='ia64' COMPILER='gcc-4.3'
+binary-arch_ia64_none_mckinley: binary-arch_ia64_none_mckinley_real
+binary-arch_ia64_none_mckinley_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mckinley' FLAVOUR='mckinley' KCONFIG='debian/config/config debian/config/ia64/config debian/config/ia64/config.mckinley' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-mckinley' ARCH='ia64' COMPILER='gcc-4.3'
+binary-arch_ia64_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' ABINAME='-bpo.2' ARCH='ia64'
+binary-arch_ia64_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='ia64'
+binary-arch_m68k: binary-arch_m68k_none binary-arch_m68k_real
+binary-arch_m68k_none: binary-arch_m68k_none_amiga binary-arch_m68k_none_atari binary-arch_m68k_none_bvme6000 binary-arch_m68k_none_mac binary-arch_m68k_none_mvme147 binary-arch_m68k_none_mvme16x binary-arch_m68k_none_real
+binary-arch_m68k_none_amiga: binary-arch_m68k_none_amiga_real
+binary-arch_m68k_none_amiga_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-amiga' FLAVOUR='amiga' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.amiga' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-amiga' ARCH='m68k' COMPILER='gcc-4.3'
+binary-arch_m68k_none_atari: binary-arch_m68k_none_atari_real
+binary-arch_m68k_none_atari_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-atari' FLAVOUR='atari' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.atari' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-atari' ARCH='m68k' COMPILER='gcc-4.3'
+binary-arch_m68k_none_bvme6000: binary-arch_m68k_none_bvme6000_real
+binary-arch_m68k_none_bvme6000_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-bvme6000' FLAVOUR='bvme6000' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.bvme6000' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-bvme6000' ARCH='m68k' COMPILER='gcc-4.3'
+binary-arch_m68k_none_mac: binary-arch_m68k_none_mac_real
+binary-arch_m68k_none_mac_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mac' FLAVOUR='mac' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mac' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-mac' ARCH='m68k' COMPILER='gcc-4.3'
+binary-arch_m68k_none_mvme147: binary-arch_m68k_none_mvme147_real
+binary-arch_m68k_none_mvme147_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mvme147' FLAVOUR='mvme147' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mvme147' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-mvme147' ARCH='m68k' COMPILER='gcc-4.3'
+binary-arch_m68k_none_mvme16x: binary-arch_m68k_none_mvme16x_real
+binary-arch_m68k_none_mvme16x_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mvme16x' FLAVOUR='mvme16x' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mvme16x' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-mvme16x' ARCH='m68k' COMPILER='gcc-4.3'
+binary-arch_m68k_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' ARCH='m68k'
+binary-arch_m68k_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='m68k'
+binary-arch_mips: binary-arch_mips_none binary-arch_mips_real
+binary-arch_mips_none: binary-arch_mips_none_4kc-malta binary-arch_mips_none_5kc-malta binary-arch_mips_none_r4k-ip22 binary-arch_mips_none_r5k-ip32 binary-arch_mips_none_real binary-arch_mips_none_sb1-bcm91250a binary-arch_mips_none_sb1a-bcm91480b
+binary-arch_mips_none_4kc-malta: binary-arch_mips_none_4kc-malta_real
+binary-arch_mips_none_4kc-malta_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-4kc-malta' FLAVOUR='4kc-malta' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.4kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-4kc-malta' ARCH='mips' COMPILER='gcc-4.3'
+binary-arch_mips_none_5kc-malta: binary-arch_mips_none_5kc-malta_real
+binary-arch_mips_none_5kc-malta_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-5kc-malta' FLAVOUR='5kc-malta' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.5kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-5kc-malta' ARCH='mips' COMPILER='gcc-4.3'
+binary-arch_mips_none_r4k-ip22: binary-arch_mips_none_r4k-ip22_real
+binary-arch_mips_none_r4k-ip22_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-r4k-ip22' FLAVOUR='r4k-ip22' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.r4k-ip22' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-r4k-ip22' ARCH='mips' COMPILER='gcc-4.3'
+binary-arch_mips_none_r5k-ip32: binary-arch_mips_none_r5k-ip32_real
+binary-arch_mips_none_r5k-ip32_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-r5k-ip32' FLAVOUR='r5k-ip32' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.r5k-ip32' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-r5k-ip32' ARCH='mips' COMPILER='gcc-4.3'
+binary-arch_mips_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' ARCH='mips'
+binary-arch_mips_none_sb1-bcm91250a: binary-arch_mips_none_sb1-bcm91250a_real
+binary-arch_mips_none_sb1-bcm91250a_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1-bcm91250a' FLAVOUR='sb1-bcm91250a' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.sb1-bcm91250a' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sb1-bcm91250a' ARCH='mips' COMPILER='gcc-4.3'
+binary-arch_mips_none_sb1a-bcm91480b: binary-arch_mips_none_sb1a-bcm91480b_real
+binary-arch_mips_none_sb1a-bcm91480b_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1a-bcm91480b' FLAVOUR='sb1a-bcm91480b' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.sb1a-bcm91480b' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sb1a-bcm91480b' ARCH='mips' COMPILER='gcc-4.3'
+binary-arch_mips_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='mips'
+binary-arch_mipsel: binary-arch_mipsel_none binary-arch_mipsel_real
+binary-arch_mipsel_none: binary-arch_mipsel_none_4kc-malta binary-arch_mipsel_none_5kc-malta binary-arch_mipsel_none_r5k-cobalt binary-arch_mipsel_none_real binary-arch_mipsel_none_sb1-bcm91250a binary-arch_mipsel_none_sb1a-bcm91480b
+binary-arch_mipsel_none_4kc-malta: binary-arch_mipsel_none_4kc-malta_real
+binary-arch_mipsel_none_4kc-malta_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-4kc-malta' FLAVOUR='4kc-malta' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.4kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-4kc-malta' ARCH='mipsel' COMPILER='gcc-4.3'
+binary-arch_mipsel_none_5kc-malta: binary-arch_mipsel_none_5kc-malta_real
+binary-arch_mipsel_none_5kc-malta_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-5kc-malta' FLAVOUR='5kc-malta' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.5kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-5kc-malta' ARCH='mipsel' COMPILER='gcc-4.3'
+binary-arch_mipsel_none_r5k-cobalt: binary-arch_mipsel_none_r5k-cobalt_real
+binary-arch_mipsel_none_r5k-cobalt_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-r5k-cobalt' FLAVOUR='r5k-cobalt' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.r5k-cobalt' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-r5k-cobalt' ARCH='mipsel' COMPILER='gcc-4.3'
+binary-arch_mipsel_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' ARCH='mipsel'
+binary-arch_mipsel_none_sb1-bcm91250a: binary-arch_mipsel_none_sb1-bcm91250a_real
+binary-arch_mipsel_none_sb1-bcm91250a_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1-bcm91250a' FLAVOUR='sb1-bcm91250a' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.sb1-bcm91250a' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sb1-bcm91250a' ARCH='mipsel' COMPILER='gcc-4.3'
+binary-arch_mipsel_none_sb1a-bcm91480b: binary-arch_mipsel_none_sb1a-bcm91480b_real
+binary-arch_mipsel_none_sb1a-bcm91480b_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1a-bcm91480b' FLAVOUR='sb1a-bcm91480b' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.sb1a-bcm91480b' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sb1a-bcm91480b' ARCH='mipsel' COMPILER='gcc-4.3'
+binary-arch_mipsel_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='mipsel'
+binary-arch_powerpc: binary-arch_powerpc_none binary-arch_powerpc_real
+binary-arch_powerpc_none: binary-arch_powerpc_none_powerpc binary-arch_powerpc_none_powerpc-smp binary-arch_powerpc_none_powerpc64 binary-arch_powerpc_none_real
+binary-arch_powerpc_none_powerpc: binary-arch_powerpc_none_powerpc_real
+binary-arch_powerpc_none_powerpc-smp: binary-arch_powerpc_none_powerpc-smp_real
+binary-arch_powerpc_none_powerpc-smp_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc-smp' FLAVOUR='powerpc-smp' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc debian/config/powerpc/config.powerpc-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-powerpc-smp' ARCH='powerpc' COMPILER='gcc-4.3'
+binary-arch_powerpc_none_powerpc64: binary-arch_powerpc_none_powerpc64_real
+binary-arch_powerpc_none_powerpc64_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc64' FLAVOUR='powerpc64' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-powerpc64' ARCH='powerpc' COMPILER='gcc-4.3'
+binary-arch_powerpc_none_powerpc_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc' FLAVOUR='powerpc' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-powerpc' ARCH='powerpc' COMPILER='gcc-4.3'
+binary-arch_powerpc_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' ABINAME='-bpo.2' ARCH='powerpc'
+binary-arch_powerpc_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='powerpc'
+binary-arch_s390: binary-arch_s390_none binary-arch_s390_real
+binary-arch_s390_none: binary-arch_s390_none_real binary-arch_s390_none_s390x binary-arch_s390_none_s390x-tape
+binary-arch_s390_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='s390' ABINAME='-bpo.2' ARCH='s390'
+binary-arch_s390_none_s390x: binary-arch_s390_none_s390x_real
+binary-arch_s390_none_s390x-tape: binary-arch_s390_none_s390x-tape_real
+binary-arch_s390_none_s390x-tape_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-s390x' FLAVOUR='s390x-tape' KCONFIG='debian/config/config debian/config/s390/config debian/config/s390/config.s390x-tape' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='s390' ABINAME='-bpo.2' TYPE='plain-s390-tape' LOCALVERSION='-s390x-tape' ARCH='s390' COMPILER='gcc-4.3'
+binary-arch_s390_none_s390x_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-s390x' FLAVOUR='s390x' KCONFIG='debian/config/config debian/config/s390/config debian/config/s390/config.s390x' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='s390' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-s390x' ARCH='s390' COMPILER='gcc-4.3'
+binary-arch_s390_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='s390'
+binary-arch_sparc: binary-arch_sparc_none binary-arch_sparc_real
+binary-arch_sparc_none: binary-arch_sparc_none_real binary-arch_sparc_none_sparc64 binary-arch_sparc_none_sparc64-smp
+binary-arch_sparc_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' ABINAME='-bpo.2' ARCH='sparc'
+binary-arch_sparc_none_sparc64: binary-arch_sparc_none_sparc64_real
+binary-arch_sparc_none_sparc64-smp: binary-arch_sparc_none_sparc64-smp_real
+binary-arch_sparc_none_sparc64-smp_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sparc64-smp' FLAVOUR='sparc64-smp' KCONFIG='debian/config/config debian/config/sparc/config debian/config/sparc/config.sparc64-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sparc64-smp' ARCH='sparc' COMPILER='gcc-4.3'
+binary-arch_sparc_none_sparc64_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sparc64' FLAVOUR='sparc64' KCONFIG='debian/config/config debian/config/sparc/config debian/config/sparc/config.sparc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sparc64' ARCH='sparc' COMPILER='gcc-4.3'
+binary-arch_sparc_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='sparc'
+binary-indep::
+	$(MAKE) -f debian/rules.real binary-indep ABINAME='-bpo.2' SOURCEVERSION='2.6.30-8~bpo50+2' MAJOR='2.6' VERSION='2.6.30' UPSTREAMVERSION='2.6.30'
+build: build_alpha build_amd64 build_arm build_armel build_hppa build_i386 build_ia64 build_m68k build_mips build_mipsel build_powerpc build_s390 build_sparc
+build_alpha: build_alpha_none build_alpha_real
+build_alpha_none: build_alpha_none_alpha-generic build_alpha_none_alpha-legacy build_alpha_none_alpha-smp build_alpha_none_real
+build_alpha_none_alpha-generic: build_alpha_none_alpha-generic_real
+build_alpha_none_alpha-generic_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-generic' FLAVOUR='alpha-generic' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-generic' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-alpha-generic' ARCH='alpha' COMPILER='gcc-4.3'
+build_alpha_none_alpha-legacy: build_alpha_none_alpha-legacy_real
+build_alpha_none_alpha-legacy_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-legacy' FLAVOUR='alpha-legacy' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-legacy' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-alpha-legacy' ARCH='alpha' COMPILER='gcc-4.3'
+build_alpha_none_alpha-smp: build_alpha_none_alpha-smp_real
+build_alpha_none_alpha-smp_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-smp' FLAVOUR='alpha-smp' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-alpha-smp' ARCH='alpha' COMPILER='gcc-4.3'
+build_alpha_none_real:
+build_alpha_real:
+build_amd64: build_amd64_none build_amd64_real
+build_amd64_none: build_amd64_none_amd64 build_amd64_none_real
+build_amd64_none_amd64: build_amd64_none_amd64_real
+build_amd64_none_amd64_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-amd64' FLAVOUR='amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/amd64/config debian/config/kernelarch-x86/config-arch-64 debian/config/amd64/config.amd64' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-amd64' ARCH='amd64' COMPILER='gcc-4.3'
+build_amd64_none_real:
+build_amd64_real:
+build_arm: build_arm_none build_arm_real
+build_arm_none: build_arm_none_footbridge build_arm_none_iop32x build_arm_none_ixp4xx build_arm_none_orion5x build_arm_none_real
+build_arm_none_footbridge: build_arm_none_footbridge_real
+build_arm_none_footbridge_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-footbridge' FLAVOUR='footbridge' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.footbridge' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-footbridge' ARCH='arm' COMPILER='gcc-4.3'
+build_arm_none_iop32x: build_arm_none_iop32x_real
+build_arm_none_iop32x_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-iop32x' FLAVOUR='iop32x' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.iop32x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-iop32x' ARCH='arm' COMPILER='gcc-4.3'
+build_arm_none_ixp4xx: build_arm_none_ixp4xx_real
+build_arm_none_ixp4xx_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-ixp4xx' FLAVOUR='ixp4xx' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.ixp4xx' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-ixp4xx' ARCH='arm' COMPILER='gcc-4.3'
+build_arm_none_orion5x: build_arm_none_orion5x_real
+build_arm_none_orion5x_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-orion5x' FLAVOUR='orion5x' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.orion5x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-orion5x' ARCH='arm' COMPILER='gcc-4.3'
+build_arm_none_real:
+build_arm_real:
+build_armel: build_armel_none build_armel_real
+build_armel_none: build_armel_none_iop32x build_armel_none_ixp4xx build_armel_none_kirkwood build_armel_none_orion5x build_armel_none_real build_armel_none_versatile
+build_armel_none_iop32x: build_armel_none_iop32x_real
+build_armel_none_iop32x_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-iop32x' FLAVOUR='iop32x' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.iop32x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-iop32x' ARCH='armel' COMPILER='gcc-4.3'
+build_armel_none_ixp4xx: build_armel_none_ixp4xx_real
+build_armel_none_ixp4xx_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-ixp4xx' FLAVOUR='ixp4xx' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.ixp4xx' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-ixp4xx' ARCH='armel' COMPILER='gcc-4.3'
+build_armel_none_kirkwood: build_armel_none_kirkwood_real
+build_armel_none_kirkwood_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-kirkwood' FLAVOUR='kirkwood' KCONFIG='debian/config/config debian/config/armel/config debian/config/armel/config.kirkwood' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-kirkwood' ARCH='armel' COMPILER='gcc-4.3'
+build_armel_none_orion5x: build_armel_none_orion5x_real
+build_armel_none_orion5x_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-orion5x' FLAVOUR='orion5x' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.orion5x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-orion5x' ARCH='armel' COMPILER='gcc-4.3'
+build_armel_none_real:
+build_armel_none_versatile: build_armel_none_versatile_real
+build_armel_none_versatile_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-versatile' FLAVOUR='versatile' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.versatile' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-versatile' ARCH='armel' COMPILER='gcc-4.3'
+build_armel_real:
+build_hppa: build_hppa_none build_hppa_real
+build_hppa_none: build_hppa_none_parisc build_hppa_none_parisc-smp build_hppa_none_parisc64 build_hppa_none_parisc64-smp build_hppa_none_real
+build_hppa_none_parisc: build_hppa_none_parisc_real
+build_hppa_none_parisc-smp: build_hppa_none_parisc-smp_real
+build_hppa_none_parisc-smp_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-parisc-smp' FLAVOUR='parisc-smp' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-parisc-smp' ARCH='hppa' COMPILER='gcc-4.3'
+build_hppa_none_parisc64: build_hppa_none_parisc64_real
+build_hppa_none_parisc64-smp: build_hppa_none_parisc64-smp_real
+build_hppa_none_parisc64-smp_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-parisc64-smp' FLAVOUR='parisc64-smp' CFLAGS='-fno-cse-follow-jumps' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-parisc64-smp' ARCH='hppa' COMPILER='gcc-4.3'
+build_hppa_none_parisc64_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-parisc64' FLAVOUR='parisc64' CFLAGS='-fno-cse-follow-jumps' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-parisc64' ARCH='hppa' COMPILER='gcc-4.3'
+build_hppa_none_parisc_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-parisc' FLAVOUR='parisc' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-parisc' ARCH='hppa' COMPILER='gcc-4.3'
+build_hppa_none_real:
+build_hppa_real:
+build_i386: build_i386_none build_i386_real
+build_i386_none: build_i386_none_486 build_i386_none_686 build_i386_none_686-bigmem build_i386_none_amd64 build_i386_none_real
+build_i386_none_486: build_i386_none_486_real
+build_i386_none_486_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-486' FLAVOUR='486' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.486' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-486' ARCH='i386' COMPILER='gcc-4.3'
+build_i386_none_686: build_i386_none_686_real
+build_i386_none_686-bigmem: build_i386_none_686-bigmem_real
+build_i386_none_686-bigmem_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-686-bigmem' FLAVOUR='686-bigmem' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.686-bigmem' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-686-bigmem' ARCH='i386' COMPILER='gcc-4.3'
+build_i386_none_686_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-686' FLAVOUR='686' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.686' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-686' ARCH='i386' COMPILER='gcc-4.3'
+build_i386_none_amd64: build_i386_none_amd64_real
+build_i386_none_amd64_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-amd64' FLAVOUR='amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-64 debian/config/amd64/config debian/config/amd64/config.amd64' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-amd64' ARCH='i386' COMPILER='gcc-4.3'
+build_i386_none_real:
+build_i386_real:
+build_ia64: build_ia64_none build_ia64_real
+build_ia64_none: build_ia64_none_itanium build_ia64_none_mckinley build_ia64_none_real
+build_ia64_none_itanium: build_ia64_none_itanium_real
+build_ia64_none_itanium_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-itanium' FLAVOUR='itanium' KCONFIG='debian/config/config debian/config/ia64/config debian/config/ia64/config.itanium' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-itanium' ARCH='ia64' COMPILER='gcc-4.3'
+build_ia64_none_mckinley: build_ia64_none_mckinley_real
+build_ia64_none_mckinley_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-mckinley' FLAVOUR='mckinley' KCONFIG='debian/config/config debian/config/ia64/config debian/config/ia64/config.mckinley' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-mckinley' ARCH='ia64' COMPILER='gcc-4.3'
+build_ia64_none_real:
+build_ia64_real:
+build_m68k: build_m68k_none build_m68k_real
+build_m68k_none: build_m68k_none_amiga build_m68k_none_atari build_m68k_none_bvme6000 build_m68k_none_mac build_m68k_none_mvme147 build_m68k_none_mvme16x build_m68k_none_real
+build_m68k_none_amiga: build_m68k_none_amiga_real
+build_m68k_none_amiga_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-amiga' FLAVOUR='amiga' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.amiga' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-amiga' ARCH='m68k' COMPILER='gcc-4.3'
+build_m68k_none_atari: build_m68k_none_atari_real
+build_m68k_none_atari_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-atari' FLAVOUR='atari' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.atari' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-atari' ARCH='m68k' COMPILER='gcc-4.3'
+build_m68k_none_bvme6000: build_m68k_none_bvme6000_real
+build_m68k_none_bvme6000_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-bvme6000' FLAVOUR='bvme6000' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.bvme6000' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-bvme6000' ARCH='m68k' COMPILER='gcc-4.3'
+build_m68k_none_mac: build_m68k_none_mac_real
+build_m68k_none_mac_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-mac' FLAVOUR='mac' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mac' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-mac' ARCH='m68k' COMPILER='gcc-4.3'
+build_m68k_none_mvme147: build_m68k_none_mvme147_real
+build_m68k_none_mvme147_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-mvme147' FLAVOUR='mvme147' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mvme147' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-mvme147' ARCH='m68k' COMPILER='gcc-4.3'
+build_m68k_none_mvme16x: build_m68k_none_mvme16x_real
+build_m68k_none_mvme16x_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-mvme16x' FLAVOUR='mvme16x' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mvme16x' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-mvme16x' ARCH='m68k' COMPILER='gcc-4.3'
+build_m68k_none_real:
+build_m68k_real:
+build_mips: build_mips_none build_mips_real
+build_mips_none: build_mips_none_4kc-malta build_mips_none_5kc-malta build_mips_none_r4k-ip22 build_mips_none_r5k-ip32 build_mips_none_real build_mips_none_sb1-bcm91250a build_mips_none_sb1a-bcm91480b
+build_mips_none_4kc-malta: build_mips_none_4kc-malta_real
+build_mips_none_4kc-malta_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-4kc-malta' FLAVOUR='4kc-malta' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.4kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-4kc-malta' ARCH='mips' COMPILER='gcc-4.3'
+build_mips_none_5kc-malta: build_mips_none_5kc-malta_real
+build_mips_none_5kc-malta_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-5kc-malta' FLAVOUR='5kc-malta' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.5kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-5kc-malta' ARCH='mips' COMPILER='gcc-4.3'
+build_mips_none_r4k-ip22: build_mips_none_r4k-ip22_real
+build_mips_none_r4k-ip22_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-r4k-ip22' FLAVOUR='r4k-ip22' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.r4k-ip22' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-r4k-ip22' ARCH='mips' COMPILER='gcc-4.3'
+build_mips_none_r5k-ip32: build_mips_none_r5k-ip32_real
+build_mips_none_r5k-ip32_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-r5k-ip32' FLAVOUR='r5k-ip32' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.r5k-ip32' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-r5k-ip32' ARCH='mips' COMPILER='gcc-4.3'
+build_mips_none_real:
+build_mips_none_sb1-bcm91250a: build_mips_none_sb1-bcm91250a_real
+build_mips_none_sb1-bcm91250a_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-sb1-bcm91250a' FLAVOUR='sb1-bcm91250a' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.sb1-bcm91250a' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sb1-bcm91250a' ARCH='mips' COMPILER='gcc-4.3'
+build_mips_none_sb1a-bcm91480b: build_mips_none_sb1a-bcm91480b_real
+build_mips_none_sb1a-bcm91480b_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-sb1a-bcm91480b' FLAVOUR='sb1a-bcm91480b' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.sb1a-bcm91480b' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sb1a-bcm91480b' ARCH='mips' COMPILER='gcc-4.3'
+build_mips_real:
+build_mipsel: build_mipsel_none build_mipsel_real
+build_mipsel_none: build_mipsel_none_4kc-malta build_mipsel_none_5kc-malta build_mipsel_none_r5k-cobalt build_mipsel_none_real build_mipsel_none_sb1-bcm91250a build_mipsel_none_sb1a-bcm91480b
+build_mipsel_none_4kc-malta: build_mipsel_none_4kc-malta_real
+build_mipsel_none_4kc-malta_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-4kc-malta' FLAVOUR='4kc-malta' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.4kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-4kc-malta' ARCH='mipsel' COMPILER='gcc-4.3'
+build_mipsel_none_5kc-malta: build_mipsel_none_5kc-malta_real
+build_mipsel_none_5kc-malta_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-5kc-malta' FLAVOUR='5kc-malta' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.5kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-5kc-malta' ARCH='mipsel' COMPILER='gcc-4.3'
+build_mipsel_none_r5k-cobalt: build_mipsel_none_r5k-cobalt_real
+build_mipsel_none_r5k-cobalt_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-r5k-cobalt' FLAVOUR='r5k-cobalt' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.r5k-cobalt' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-r5k-cobalt' ARCH='mipsel' COMPILER='gcc-4.3'
+build_mipsel_none_real:
+build_mipsel_none_sb1-bcm91250a: build_mipsel_none_sb1-bcm91250a_real
+build_mipsel_none_sb1-bcm91250a_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-sb1-bcm91250a' FLAVOUR='sb1-bcm91250a' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.sb1-bcm91250a' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sb1-bcm91250a' ARCH='mipsel' COMPILER='gcc-4.3'
+build_mipsel_none_sb1a-bcm91480b: build_mipsel_none_sb1a-bcm91480b_real
+build_mipsel_none_sb1a-bcm91480b_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-sb1a-bcm91480b' FLAVOUR='sb1a-bcm91480b' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.sb1a-bcm91480b' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sb1a-bcm91480b' ARCH='mipsel' COMPILER='gcc-4.3'
+build_mipsel_real:
+build_powerpc: build_powerpc_none build_powerpc_real
+build_powerpc_none: build_powerpc_none_powerpc build_powerpc_none_powerpc-smp build_powerpc_none_powerpc64 build_powerpc_none_real
+build_powerpc_none_powerpc: build_powerpc_none_powerpc_real
+build_powerpc_none_powerpc-smp: build_powerpc_none_powerpc-smp_real
+build_powerpc_none_powerpc-smp_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc-smp' FLAVOUR='powerpc-smp' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc debian/config/powerpc/config.powerpc-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-powerpc-smp' ARCH='powerpc' COMPILER='gcc-4.3'
+build_powerpc_none_powerpc64: build_powerpc_none_powerpc64_real
+build_powerpc_none_powerpc64_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc64' FLAVOUR='powerpc64' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-powerpc64' ARCH='powerpc' COMPILER='gcc-4.3'
+build_powerpc_none_powerpc_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc' FLAVOUR='powerpc' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-powerpc' ARCH='powerpc' COMPILER='gcc-4.3'
+build_powerpc_none_real:
+build_powerpc_real:
+build_s390: build_s390_none build_s390_real
+build_s390_none: build_s390_none_real build_s390_none_s390x build_s390_none_s390x-tape
+build_s390_none_real:
+build_s390_none_s390x: build_s390_none_s390x_real
+build_s390_none_s390x-tape: build_s390_none_s390x-tape_real
+build_s390_none_s390x-tape_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-s390x' FLAVOUR='s390x-tape' KCONFIG='debian/config/config debian/config/s390/config debian/config/s390/config.s390x-tape' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='s390' ABINAME='-bpo.2' TYPE='plain-s390-tape' LOCALVERSION='-s390x-tape' ARCH='s390' COMPILER='gcc-4.3'
+build_s390_none_s390x_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-s390x' FLAVOUR='s390x' KCONFIG='debian/config/config debian/config/s390/config debian/config/s390/config.s390x' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='s390' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-s390x' ARCH='s390' COMPILER='gcc-4.3'
+build_s390_real:
+build_sparc: build_sparc_none build_sparc_real
+build_sparc_none: build_sparc_none_real build_sparc_none_sparc64 build_sparc_none_sparc64-smp
+build_sparc_none_real:
+build_sparc_none_sparc64: build_sparc_none_sparc64_real
+build_sparc_none_sparc64-smp: build_sparc_none_sparc64-smp_real
+build_sparc_none_sparc64-smp_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-sparc64-smp' FLAVOUR='sparc64-smp' KCONFIG='debian/config/config debian/config/sparc/config debian/config/sparc/config.sparc64-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sparc64-smp' ARCH='sparc' COMPILER='gcc-4.3'
+build_sparc_none_sparc64_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-sparc64' FLAVOUR='sparc64' KCONFIG='debian/config/config debian/config/sparc/config debian/config/sparc/config.sparc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sparc64' ARCH='sparc' COMPILER='gcc-4.3'
+build_sparc_real:
+setup: setup_alpha setup_amd64 setup_arm setup_armel setup_hppa setup_i386 setup_ia64 setup_m68k setup_mips setup_mipsel setup_powerpc setup_s390 setup_sparc
+setup_alpha: setup_alpha_none setup_alpha_real
+setup_alpha_none: setup_alpha_none_alpha-generic setup_alpha_none_alpha-legacy setup_alpha_none_alpha-smp setup_alpha_none_real
+setup_alpha_none_alpha-generic: setup_alpha_none_alpha-generic_real
+setup_alpha_none_alpha-generic_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-generic' FLAVOUR='alpha-generic' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-generic' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-alpha-generic' ARCH='alpha' COMPILER='gcc-4.3'
+setup_alpha_none_alpha-legacy: setup_alpha_none_alpha-legacy_real
+setup_alpha_none_alpha-legacy_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-legacy' FLAVOUR='alpha-legacy' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-legacy' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-alpha-legacy' ARCH='alpha' COMPILER='gcc-4.3'
+setup_alpha_none_alpha-smp: setup_alpha_none_alpha-smp_real
+setup_alpha_none_alpha-smp_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-smp' FLAVOUR='alpha-smp' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-alpha-smp' ARCH='alpha' COMPILER='gcc-4.3'
+setup_alpha_none_real:
+setup_alpha_real:
+setup_amd64: setup_amd64_none setup_amd64_real
+setup_amd64_none: setup_amd64_none_amd64 setup_amd64_none_real
+setup_amd64_none_amd64: setup_amd64_none_amd64_real
+setup_amd64_none_amd64_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-amd64' FLAVOUR='amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/amd64/config debian/config/kernelarch-x86/config-arch-64 debian/config/amd64/config.amd64' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-amd64' ARCH='amd64' COMPILER='gcc-4.3'
+setup_amd64_none_real:
+setup_amd64_real:
+setup_arm: setup_arm_none setup_arm_real
+setup_arm_none: setup_arm_none_footbridge setup_arm_none_iop32x setup_arm_none_ixp4xx setup_arm_none_orion5x setup_arm_none_real
+setup_arm_none_footbridge: setup_arm_none_footbridge_real
+setup_arm_none_footbridge_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-footbridge' FLAVOUR='footbridge' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.footbridge' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-footbridge' ARCH='arm' COMPILER='gcc-4.3'
+setup_arm_none_iop32x: setup_arm_none_iop32x_real
+setup_arm_none_iop32x_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-iop32x' FLAVOUR='iop32x' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.iop32x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-iop32x' ARCH='arm' COMPILER='gcc-4.3'
+setup_arm_none_ixp4xx: setup_arm_none_ixp4xx_real
+setup_arm_none_ixp4xx_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-ixp4xx' FLAVOUR='ixp4xx' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.ixp4xx' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-ixp4xx' ARCH='arm' COMPILER='gcc-4.3'
+setup_arm_none_orion5x: setup_arm_none_orion5x_real
+setup_arm_none_orion5x_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-orion5x' FLAVOUR='orion5x' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.orion5x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-orion5x' ARCH='arm' COMPILER='gcc-4.3'
+setup_arm_none_real:
+setup_arm_real:
+setup_armel: setup_armel_none setup_armel_real
+setup_armel_none: setup_armel_none_iop32x setup_armel_none_ixp4xx setup_armel_none_kirkwood setup_armel_none_orion5x setup_armel_none_real setup_armel_none_versatile
+setup_armel_none_iop32x: setup_armel_none_iop32x_real
+setup_armel_none_iop32x_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-iop32x' FLAVOUR='iop32x' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.iop32x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-iop32x' ARCH='armel' COMPILER='gcc-4.3'
+setup_armel_none_ixp4xx: setup_armel_none_ixp4xx_real
+setup_armel_none_ixp4xx_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-ixp4xx' FLAVOUR='ixp4xx' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.ixp4xx' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-ixp4xx' ARCH='armel' COMPILER='gcc-4.3'
+setup_armel_none_kirkwood: setup_armel_none_kirkwood_real
+setup_armel_none_kirkwood_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-kirkwood' FLAVOUR='kirkwood' KCONFIG='debian/config/config debian/config/armel/config debian/config/armel/config.kirkwood' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-kirkwood' ARCH='armel' COMPILER='gcc-4.3'
+setup_armel_none_orion5x: setup_armel_none_orion5x_real
+setup_armel_none_orion5x_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-orion5x' FLAVOUR='orion5x' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.orion5x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-orion5x' ARCH='armel' COMPILER='gcc-4.3'
+setup_armel_none_real:
+setup_armel_none_versatile: setup_armel_none_versatile_real
+setup_armel_none_versatile_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-versatile' FLAVOUR='versatile' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.versatile' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-versatile' ARCH='armel' COMPILER='gcc-4.3'
+setup_armel_real:
+setup_hppa: setup_hppa_none setup_hppa_real
+setup_hppa_none: setup_hppa_none_parisc setup_hppa_none_parisc-smp setup_hppa_none_parisc64 setup_hppa_none_parisc64-smp setup_hppa_none_real
+setup_hppa_none_parisc: setup_hppa_none_parisc_real
+setup_hppa_none_parisc-smp: setup_hppa_none_parisc-smp_real
+setup_hppa_none_parisc-smp_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc-smp' FLAVOUR='parisc-smp' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-parisc-smp' ARCH='hppa' COMPILER='gcc-4.3'
+setup_hppa_none_parisc64: setup_hppa_none_parisc64_real
+setup_hppa_none_parisc64-smp: setup_hppa_none_parisc64-smp_real
+setup_hppa_none_parisc64-smp_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc64-smp' FLAVOUR='parisc64-smp' CFLAGS='-fno-cse-follow-jumps' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-parisc64-smp' ARCH='hppa' COMPILER='gcc-4.3'
+setup_hppa_none_parisc64_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc64' FLAVOUR='parisc64' CFLAGS='-fno-cse-follow-jumps' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-parisc64' ARCH='hppa' COMPILER='gcc-4.3'
+setup_hppa_none_parisc_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc' FLAVOUR='parisc' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-parisc' ARCH='hppa' COMPILER='gcc-4.3'
+setup_hppa_none_real:
+setup_hppa_real:
+setup_i386: setup_i386_none setup_i386_real
+setup_i386_none: setup_i386_none_486 setup_i386_none_686 setup_i386_none_686-bigmem setup_i386_none_amd64 setup_i386_none_real
+setup_i386_none_486: setup_i386_none_486_real
+setup_i386_none_486_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-486' FLAVOUR='486' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.486' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-486' ARCH='i386' COMPILER='gcc-4.3'
+setup_i386_none_686: setup_i386_none_686_real
+setup_i386_none_686-bigmem: setup_i386_none_686-bigmem_real
+setup_i386_none_686-bigmem_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-686-bigmem' FLAVOUR='686-bigmem' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.686-bigmem' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-686-bigmem' ARCH='i386' COMPILER='gcc-4.3'
+setup_i386_none_686_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-686' FLAVOUR='686' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.686' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-686' ARCH='i386' COMPILER='gcc-4.3'
+setup_i386_none_amd64: setup_i386_none_amd64_real
+setup_i386_none_amd64_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-amd64' FLAVOUR='amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-64 debian/config/amd64/config debian/config/amd64/config.amd64' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-amd64' ARCH='i386' COMPILER='gcc-4.3'
+setup_i386_none_real:
+setup_i386_real:
+setup_ia64: setup_ia64_none setup_ia64_real
+setup_ia64_none: setup_ia64_none_itanium setup_ia64_none_mckinley setup_ia64_none_real
+setup_ia64_none_itanium: setup_ia64_none_itanium_real
+setup_ia64_none_itanium_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-itanium' FLAVOUR='itanium' KCONFIG='debian/config/config debian/config/ia64/config debian/config/ia64/config.itanium' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-itanium' ARCH='ia64' COMPILER='gcc-4.3'
+setup_ia64_none_mckinley: setup_ia64_none_mckinley_real
+setup_ia64_none_mckinley_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mckinley' FLAVOUR='mckinley' KCONFIG='debian/config/config debian/config/ia64/config debian/config/ia64/config.mckinley' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-mckinley' ARCH='ia64' COMPILER='gcc-4.3'
+setup_ia64_none_real:
+setup_ia64_real:
+setup_m68k: setup_m68k_none setup_m68k_real
+setup_m68k_none: setup_m68k_none_amiga setup_m68k_none_atari setup_m68k_none_bvme6000 setup_m68k_none_mac setup_m68k_none_mvme147 setup_m68k_none_mvme16x setup_m68k_none_real
+setup_m68k_none_amiga: setup_m68k_none_amiga_real
+setup_m68k_none_amiga_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-amiga' FLAVOUR='amiga' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.amiga' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-amiga' ARCH='m68k' COMPILER='gcc-4.3'
+setup_m68k_none_atari: setup_m68k_none_atari_real
+setup_m68k_none_atari_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-atari' FLAVOUR='atari' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.atari' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-atari' ARCH='m68k' COMPILER='gcc-4.3'
+setup_m68k_none_bvme6000: setup_m68k_none_bvme6000_real
+setup_m68k_none_bvme6000_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-bvme6000' FLAVOUR='bvme6000' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.bvme6000' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-bvme6000' ARCH='m68k' COMPILER='gcc-4.3'
+setup_m68k_none_mac: setup_m68k_none_mac_real
+setup_m68k_none_mac_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mac' FLAVOUR='mac' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mac' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-mac' ARCH='m68k' COMPILER='gcc-4.3'
+setup_m68k_none_mvme147: setup_m68k_none_mvme147_real
+setup_m68k_none_mvme147_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mvme147' FLAVOUR='mvme147' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mvme147' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-mvme147' ARCH='m68k' COMPILER='gcc-4.3'
+setup_m68k_none_mvme16x: setup_m68k_none_mvme16x_real
+setup_m68k_none_mvme16x_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mvme16x' FLAVOUR='mvme16x' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mvme16x' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-mvme16x' ARCH='m68k' COMPILER='gcc-4.3'
+setup_m68k_none_real:
+setup_m68k_real:
+setup_mips: setup_mips_none setup_mips_real
+setup_mips_none: setup_mips_none_4kc-malta setup_mips_none_5kc-malta setup_mips_none_r4k-ip22 setup_mips_none_r5k-ip32 setup_mips_none_real setup_mips_none_sb1-bcm91250a setup_mips_none_sb1a-bcm91480b
+setup_mips_none_4kc-malta: setup_mips_none_4kc-malta_real
+setup_mips_none_4kc-malta_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-4kc-malta' FLAVOUR='4kc-malta' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.4kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-4kc-malta' ARCH='mips' COMPILER='gcc-4.3'
+setup_mips_none_5kc-malta: setup_mips_none_5kc-malta_real
+setup_mips_none_5kc-malta_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-5kc-malta' FLAVOUR='5kc-malta' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.5kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-5kc-malta' ARCH='mips' COMPILER='gcc-4.3'
+setup_mips_none_r4k-ip22: setup_mips_none_r4k-ip22_real
+setup_mips_none_r4k-ip22_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-r4k-ip22' FLAVOUR='r4k-ip22' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.r4k-ip22' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-r4k-ip22' ARCH='mips' COMPILER='gcc-4.3'
+setup_mips_none_r5k-ip32: setup_mips_none_r5k-ip32_real
+setup_mips_none_r5k-ip32_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-r5k-ip32' FLAVOUR='r5k-ip32' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.r5k-ip32' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-r5k-ip32' ARCH='mips' COMPILER='gcc-4.3'
+setup_mips_none_real:
+setup_mips_none_sb1-bcm91250a: setup_mips_none_sb1-bcm91250a_real
+setup_mips_none_sb1-bcm91250a_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1-bcm91250a' FLAVOUR='sb1-bcm91250a' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.sb1-bcm91250a' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sb1-bcm91250a' ARCH='mips' COMPILER='gcc-4.3'
+setup_mips_none_sb1a-bcm91480b: setup_mips_none_sb1a-bcm91480b_real
+setup_mips_none_sb1a-bcm91480b_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1a-bcm91480b' FLAVOUR='sb1a-bcm91480b' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.sb1a-bcm91480b' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sb1a-bcm91480b' ARCH='mips' COMPILER='gcc-4.3'
+setup_mips_real:
+setup_mipsel: setup_mipsel_none setup_mipsel_real
+setup_mipsel_none: setup_mipsel_none_4kc-malta setup_mipsel_none_5kc-malta setup_mipsel_none_r5k-cobalt setup_mipsel_none_real setup_mipsel_none_sb1-bcm91250a setup_mipsel_none_sb1a-bcm91480b
+setup_mipsel_none_4kc-malta: setup_mipsel_none_4kc-malta_real
+setup_mipsel_none_4kc-malta_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-4kc-malta' FLAVOUR='4kc-malta' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.4kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-4kc-malta' ARCH='mipsel' COMPILER='gcc-4.3'
+setup_mipsel_none_5kc-malta: setup_mipsel_none_5kc-malta_real
+setup_mipsel_none_5kc-malta_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-5kc-malta' FLAVOUR='5kc-malta' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.5kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-5kc-malta' ARCH='mipsel' COMPILER='gcc-4.3'
+setup_mipsel_none_r5k-cobalt: setup_mipsel_none_r5k-cobalt_real
+setup_mipsel_none_r5k-cobalt_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-r5k-cobalt' FLAVOUR='r5k-cobalt' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.r5k-cobalt' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-r5k-cobalt' ARCH='mipsel' COMPILER='gcc-4.3'
+setup_mipsel_none_real:
+setup_mipsel_none_sb1-bcm91250a: setup_mipsel_none_sb1-bcm91250a_real
+setup_mipsel_none_sb1-bcm91250a_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1-bcm91250a' FLAVOUR='sb1-bcm91250a' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.sb1-bcm91250a' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sb1-bcm91250a' ARCH='mipsel' COMPILER='gcc-4.3'
+setup_mipsel_none_sb1a-bcm91480b: setup_mipsel_none_sb1a-bcm91480b_real
+setup_mipsel_none_sb1a-bcm91480b_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1a-bcm91480b' FLAVOUR='sb1a-bcm91480b' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.sb1a-bcm91480b' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sb1a-bcm91480b' ARCH='mipsel' COMPILER='gcc-4.3'
+setup_mipsel_real:
+setup_powerpc: setup_powerpc_none setup_powerpc_real
+setup_powerpc_none: setup_powerpc_none_powerpc setup_powerpc_none_powerpc-smp setup_powerpc_none_powerpc64 setup_powerpc_none_real
+setup_powerpc_none_powerpc: setup_powerpc_none_powerpc_real
+setup_powerpc_none_powerpc-smp: setup_powerpc_none_powerpc-smp_real
+setup_powerpc_none_powerpc-smp_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc-smp' FLAVOUR='powerpc-smp' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc debian/config/powerpc/config.powerpc-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-powerpc-smp' ARCH='powerpc' COMPILER='gcc-4.3'
+setup_powerpc_none_powerpc64: setup_powerpc_none_powerpc64_real
+setup_powerpc_none_powerpc64_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc64' FLAVOUR='powerpc64' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-powerpc64' ARCH='powerpc' COMPILER='gcc-4.3'
+setup_powerpc_none_powerpc_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc' FLAVOUR='powerpc' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-powerpc' ARCH='powerpc' COMPILER='gcc-4.3'
+setup_powerpc_none_real:
+setup_powerpc_real:
+setup_s390: setup_s390_none setup_s390_real
+setup_s390_none: setup_s390_none_real setup_s390_none_s390x setup_s390_none_s390x-tape
+setup_s390_none_real:
+setup_s390_none_s390x: setup_s390_none_s390x_real
+setup_s390_none_s390x-tape: setup_s390_none_s390x-tape_real
+setup_s390_none_s390x-tape_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-s390x' FLAVOUR='s390x-tape' KCONFIG='debian/config/config debian/config/s390/config debian/config/s390/config.s390x-tape' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='s390' ABINAME='-bpo.2' TYPE='plain-s390-tape' LOCALVERSION='-s390x-tape' ARCH='s390' COMPILER='gcc-4.3'
+setup_s390_none_s390x_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-s390x' FLAVOUR='s390x' KCONFIG='debian/config/config debian/config/s390/config debian/config/s390/config.s390x' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='s390' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-s390x' ARCH='s390' COMPILER='gcc-4.3'
+setup_s390_real:
+setup_sparc: setup_sparc_none setup_sparc_real
+setup_sparc_none: setup_sparc_none_real setup_sparc_none_sparc64 setup_sparc_none_sparc64-smp
+setup_sparc_none_real:
+setup_sparc_none_sparc64: setup_sparc_none_sparc64_real
+setup_sparc_none_sparc64-smp: setup_sparc_none_sparc64-smp_real
+setup_sparc_none_sparc64-smp_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sparc64-smp' FLAVOUR='sparc64-smp' KCONFIG='debian/config/config debian/config/sparc/config debian/config/sparc/config.sparc64-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sparc64-smp' ARCH='sparc' COMPILER='gcc-4.3'
+setup_sparc_none_sparc64_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sparc64' FLAVOUR='sparc64' KCONFIG='debian/config/config debian/config/sparc/config debian/config/sparc/config.sparc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.2' TYPE='plain' LOCALVERSION='-sparc64' ARCH='sparc' COMPILER='gcc-4.3'
+setup_sparc_real:
+source: source_alpha source_amd64 source_arm source_armel source_hppa source_i386 source_ia64 source_m68k source_mips source_mipsel source_powerpc source_s390 source_sparc
+source_alpha: source_alpha_none source_alpha_real
+source_alpha_none: source_alpha_none_alpha-generic source_alpha_none_alpha-legacy source_alpha_none_alpha-smp source_alpha_none_real
+source_alpha_none_alpha-generic: source_alpha_none_alpha-generic_real
+source_alpha_none_alpha-generic_real:
+source_alpha_none_alpha-legacy: source_alpha_none_alpha-legacy_real
+source_alpha_none_alpha-legacy_real:
+source_alpha_none_alpha-smp: source_alpha_none_alpha-smp_real
+source_alpha_none_alpha-smp_real:
+source_alpha_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' ABINAME='-bpo.2' ARCH='alpha'
+source_alpha_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='alpha'
+source_amd64: source_amd64_none source_amd64_real
+source_amd64_none: source_amd64_none_amd64 source_amd64_none_real
+source_amd64_none_amd64: source_amd64_none_amd64_real
+source_amd64_none_amd64_real:
+source_amd64_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' ABINAME='-bpo.2' ARCH='amd64'
+source_amd64_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='amd64'
+source_arm: source_arm_none source_arm_real
+source_arm_none: source_arm_none_footbridge source_arm_none_iop32x source_arm_none_ixp4xx source_arm_none_orion5x source_arm_none_real
+source_arm_none_footbridge: source_arm_none_footbridge_real
+source_arm_none_footbridge_real:
+source_arm_none_iop32x: source_arm_none_iop32x_real
+source_arm_none_iop32x_real:
+source_arm_none_ixp4xx: source_arm_none_ixp4xx_real
+source_arm_none_ixp4xx_real:
+source_arm_none_orion5x: source_arm_none_orion5x_real
+source_arm_none_orion5x_real:
+source_arm_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' ABINAME='-bpo.2' ARCH='arm'
+source_arm_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='arm'
+source_armel: source_armel_none source_armel_real
+source_armel_none: source_armel_none_iop32x source_armel_none_ixp4xx source_armel_none_kirkwood source_armel_none_orion5x source_armel_none_real source_armel_none_versatile
+source_armel_none_iop32x: source_armel_none_iop32x_real
+source_armel_none_iop32x_real:
+source_armel_none_ixp4xx: source_armel_none_ixp4xx_real
+source_armel_none_ixp4xx_real:
+source_armel_none_kirkwood: source_armel_none_kirkwood_real
+source_armel_none_kirkwood_real:
+source_armel_none_orion5x: source_armel_none_orion5x_real
+source_armel_none_orion5x_real:
+source_armel_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' ABINAME='-bpo.2' ARCH='armel'
+source_armel_none_versatile: source_armel_none_versatile_real
+source_armel_none_versatile_real:
+source_armel_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='armel'
+source_hppa: source_hppa_none source_hppa_real
+source_hppa_none: source_hppa_none_parisc source_hppa_none_parisc-smp source_hppa_none_parisc64 source_hppa_none_parisc64-smp source_hppa_none_real
+source_hppa_none_parisc: source_hppa_none_parisc_real
+source_hppa_none_parisc-smp: source_hppa_none_parisc-smp_real
+source_hppa_none_parisc-smp_real:
+source_hppa_none_parisc64: source_hppa_none_parisc64_real
+source_hppa_none_parisc64-smp: source_hppa_none_parisc64-smp_real
+source_hppa_none_parisc64-smp_real:
+source_hppa_none_parisc64_real:
+source_hppa_none_parisc_real:
+source_hppa_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' ABINAME='-bpo.2' ARCH='hppa'
+source_hppa_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='hppa'
+source_i386: source_i386_none source_i386_real
+source_i386_none: source_i386_none_486 source_i386_none_686 source_i386_none_686-bigmem source_i386_none_amd64 source_i386_none_real
+source_i386_none_486: source_i386_none_486_real
+source_i386_none_486_real:
+source_i386_none_686: source_i386_none_686_real
+source_i386_none_686-bigmem: source_i386_none_686-bigmem_real
+source_i386_none_686-bigmem_real:
+source_i386_none_686_real:
+source_i386_none_amd64: source_i386_none_amd64_real
+source_i386_none_amd64_real:
+source_i386_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' ABINAME='-bpo.2' ARCH='i386'
+source_i386_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='i386'
+source_ia64: source_ia64_none source_ia64_real
+source_ia64_none: source_ia64_none_itanium source_ia64_none_mckinley source_ia64_none_real
+source_ia64_none_itanium: source_ia64_none_itanium_real
+source_ia64_none_itanium_real:
+source_ia64_none_mckinley: source_ia64_none_mckinley_real
+source_ia64_none_mckinley_real:
+source_ia64_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' ABINAME='-bpo.2' ARCH='ia64'
+source_ia64_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='ia64'
+source_m68k: source_m68k_none source_m68k_real
+source_m68k_none: source_m68k_none_amiga source_m68k_none_atari source_m68k_none_bvme6000 source_m68k_none_mac source_m68k_none_mvme147 source_m68k_none_mvme16x source_m68k_none_real
+source_m68k_none_amiga: source_m68k_none_amiga_real
+source_m68k_none_amiga_real:
+source_m68k_none_atari: source_m68k_none_atari_real
+source_m68k_none_atari_real:
+source_m68k_none_bvme6000: source_m68k_none_bvme6000_real
+source_m68k_none_bvme6000_real:
+source_m68k_none_mac: source_m68k_none_mac_real
+source_m68k_none_mac_real:
+source_m68k_none_mvme147: source_m68k_none_mvme147_real
+source_m68k_none_mvme147_real:
+source_m68k_none_mvme16x: source_m68k_none_mvme16x_real
+source_m68k_none_mvme16x_real:
+source_m68k_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.2' ARCH='m68k'
+source_m68k_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='m68k'
+source_mips: source_mips_none source_mips_real
+source_mips_none: source_mips_none_4kc-malta source_mips_none_5kc-malta source_mips_none_r4k-ip22 source_mips_none_r5k-ip32 source_mips_none_real source_mips_none_sb1-bcm91250a source_mips_none_sb1a-bcm91480b
+source_mips_none_4kc-malta: source_mips_none_4kc-malta_real
+source_mips_none_4kc-malta_real:
+source_mips_none_5kc-malta: source_mips_none_5kc-malta_real
+source_mips_none_5kc-malta_real:
+source_mips_none_r4k-ip22: source_mips_none_r4k-ip22_real
+source_mips_none_r4k-ip22_real:
+source_mips_none_r5k-ip32: source_mips_none_r5k-ip32_real
+source_mips_none_r5k-ip32_real:
+source_mips_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' ARCH='mips'
+source_mips_none_sb1-bcm91250a: source_mips_none_sb1-bcm91250a_real
+source_mips_none_sb1-bcm91250a_real:
+source_mips_none_sb1a-bcm91480b: source_mips_none_sb1a-bcm91480b_real
+source_mips_none_sb1a-bcm91480b_real:
+source_mips_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='mips'
+source_mipsel: source_mipsel_none source_mipsel_real
+source_mipsel_none: source_mipsel_none_4kc-malta source_mipsel_none_5kc-malta source_mipsel_none_r5k-cobalt source_mipsel_none_real source_mipsel_none_sb1-bcm91250a source_mipsel_none_sb1a-bcm91480b
+source_mipsel_none_4kc-malta: source_mipsel_none_4kc-malta_real
+source_mipsel_none_4kc-malta_real:
+source_mipsel_none_5kc-malta: source_mipsel_none_5kc-malta_real
+source_mipsel_none_5kc-malta_real:
+source_mipsel_none_r5k-cobalt: source_mipsel_none_r5k-cobalt_real
+source_mipsel_none_r5k-cobalt_real:
+source_mipsel_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.2' ARCH='mipsel'
+source_mipsel_none_sb1-bcm91250a: source_mipsel_none_sb1-bcm91250a_real
+source_mipsel_none_sb1-bcm91250a_real:
+source_mipsel_none_sb1a-bcm91480b: source_mipsel_none_sb1a-bcm91480b_real
+source_mipsel_none_sb1a-bcm91480b_real:
+source_mipsel_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='mipsel'
+source_powerpc: source_powerpc_none source_powerpc_real
+source_powerpc_none: source_powerpc_none_powerpc source_powerpc_none_powerpc-smp source_powerpc_none_powerpc64 source_powerpc_none_real
+source_powerpc_none_powerpc: source_powerpc_none_powerpc_real
+source_powerpc_none_powerpc-smp: source_powerpc_none_powerpc-smp_real
+source_powerpc_none_powerpc-smp_real:
+source_powerpc_none_powerpc64: source_powerpc_none_powerpc64_real
+source_powerpc_none_powerpc64_real:
+source_powerpc_none_powerpc_real:
+source_powerpc_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' ABINAME='-bpo.2' ARCH='powerpc'
+source_powerpc_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='powerpc'
+source_s390: source_s390_none source_s390_real
+source_s390_none: source_s390_none_real source_s390_none_s390x source_s390_none_s390x-tape
+source_s390_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='s390' ABINAME='-bpo.2' ARCH='s390'
+source_s390_none_s390x: source_s390_none_s390x_real
+source_s390_none_s390x-tape: source_s390_none_s390x-tape_real
+source_s390_none_s390x-tape_real:
+source_s390_none_s390x_real:
+source_s390_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='s390'
+source_sparc: source_sparc_none source_sparc_real
+source_sparc_none: source_sparc_none_real source_sparc_none_sparc64 source_sparc_none_sparc64-smp
+source_sparc_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-8~bpo50+2' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' ABINAME='-bpo.2' ARCH='sparc'
+source_sparc_none_sparc64: source_sparc_none_sparc64_real
+source_sparc_none_sparc64-smp: source_sparc_none_sparc64-smp_real
+source_sparc_none_sparc64-smp_real:
+source_sparc_none_sparc64_real:
+source_sparc_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-8~bpo50+2' VERSION='2.6.30' ABINAME='-bpo.2' ARCH='sparc'
--- linux-2.6-2.6.30.orig/debian/changelog
+++ linux-2.6-2.6.30/debian/changelog
@@ -0,0 +1,6707 @@
+linux-2.6 (2.6.30-8~bpo50+2) lenny-backports; urgency=low
+
+  * Rebuild for lenny.
+  * Reenable CONFIG_ACPI_PROCFS_POWER.
+
+ -- Norbert Tretkowski <nobse@debian.org>  Thu, 10 Dec 2009 12:40:36 +0100
+
+linux-2.6 (2.6.30-8squeeze1) testing-security; urgency=high
+
+  * ipv4: additional update of dev_net(dev) to struct *net
+    in ip_fragment.c, NULL ptr OOPS (CVE-2009-1298)
+  * mac80211 (CVE-2009-4026, CVE-2009-4027):
+    - fix two remote exploits
+    - fix spurious delBA handling
+
+ -- dann frazier <dannf@debian.org>  Thu, 03 Dec 2009 15:12:36 -0700
+
+linux-2.6 (2.6.30-8) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * Disable SYS_HAS_EARLY_PRINTK on SGI IP22 to work around a hang
+    during bootup (Closes: #507557)
+  * module: workaround duplicate section names to fix a panic on
+    boot on hppa (Closes: #545229).
+  * Add stable release 2.6.30.8.
+  * [armel/kirkwood] Add Marvell OpenRD-Client support (Dhaval Vasa).
+    Thanks Stefan Kaltenbrunner.
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 25 Sep 2009 23:47:56 +0200
+
+linux-2.6 (2.6.30-7) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * [armel/kirkwood] Enable eSATA on QNAP TS-219P (John Holland).
+  * [armel/kirkwood] Marvell OpenRD-Base board support (Dhaval Vasa).
+  * [armel/kirkwood] Initialise SATA for OpenRD-Base (Ron Lee).
+  * [armel/kirkwood] Enable SATA_AHCI.
+
+  [ Ben Hutchings ]
+  * qla1280: Release spinlock when requesting firmware (closes: #543244)
+  * r128: Add test for initialisation to all ioctls that require it
+    (closes: #541630)
+  * [i386] Fix crash in text_poke_early() on 486-class processors
+    (Closes: #515982)
+  * intel-agp: Fix cache flushing on i8xx chipsets, avoiding graphics
+    corruption and GPU lock-ups (Closes: #541307)
+  * [i386] Allow ISA memory range uncacheable mapping requests
+    (Closes: #538159)
+  * Fix idle time in /proc/uptime (Closes: #545981)
+  * e1000, e1000e, igb, ixgb, ixgbe, sfc: Fix initial link state
+    (Closes: #546041)
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.30.5.
+    - drm/i915: Hook connector to encoder during load detection
+      (fixes tv/vga detect) (Closes: #522358)
+  * Add stable release 2.6.30.6.
+    - x86: Fix lock-up on SMP Pentium Pro, Pentium 2, Pentium 3, and
+      Athlon MP systems (Closes: #542551)
+    - NET: Fix information leaks from getsockname() (CVE-2009-3001,
+      CVE-2009-3002)
+    - iwl3945/rfkill: Reenable radio when hardware switch turned back on
+      (Closes: #530554)
+  * Bump ABI to 2.
+  * Apply missing fixes:
+    - block: fix sg SG_DXFER_TO_FROM_DEV regression.
+    - sched_rt: Fix overload bug on rt group scheduling.
+  * Add stable release 2.6.30.7.
+  * [sparc] Disable PROM console. (closes: #525958)
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 16 Sep 2009 17:23:13 +0200
+
+linux-2.6 (2.6.30-6) unstable; urgency=high
+
+  [ Bastian Blank ]
+  * Set default low address space protection to default value.
+
+  [ dann frazier ]
+  * Make sock_sendpage() use kernel_sendpage() (CVE-2009-2692)
+  * flat: fix uninitialized ptr with shared libs
+  * [parisc] isa-eeprom - Fix loff_t usage
+  * do_sigaltstack: avoid copying 'stack_t' as a structure to user space
+  * posix-timers: Fix oops in clock_nanosleep() with CLOCK_MONOTONIC_RAW
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 15 Aug 2009 15:50:02 +0200
+
+linux-2.6 (2.6.30-5) unstable; urgency=high
+
+  [ maximilian attems ]
+  * Add stable release 2.6.30.4.
+    - cifs: fix regression with O_EXCL creates and optimize away lookup
+      (closes: #536426)
+    - ecryptfs: check tag 11 literal data buffer size (CVE-2009-2406)
+    - ecryptfs: check tag 3 package encrypted size (CVE-2009-2407)
+  * Ignore nf_conntrack ABI change.
+  * Revert to keep ABI:
+    - block: fix sg SG_DXFER_TO_FROM_DEV regression.
+    - sched_rt: Fix overload bug on rt group scheduling.
+  * [hppa]: Ignore any ABI (broke on 2.6.30.2).
+
+ -- maximilian attems <maks@debian.org>  Mon, 03 Aug 2009 12:08:56 +0200
+
+linux-2.6 (2.6.30-4) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.30.2.
+  * Fix pci access in x86 startup code. (closes: #537783)
+  * Ignore ABI changes.
+  * Include all plattform and mach specific headers on arm.
+
+  [ maximilian attems ]
+  * Add stable release 2.6.30.3.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 30 Jul 2009 11:55:11 +0200
+
+linux-2.6 (2.6.30-3) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Build-Depend against cpio. (closes: #536196)
+
+  [ Martin Michlmayr ]
+  * [arm] Export __cpu_flush_dcache_page.
+
+  [ Aurelien Jarno ]
+  * [ia64] Fix asm/fpu.h includes.
+
+  [ dann frazier ]
+  * Fix NULL pointer dereference in tun_chr_pool() (CVE-2009-1897)
+  * personality: fix PER_CLEAR_ON_SETID (CVE-2009-1895)
+  * Add -fno-delete-null-pointer-checks to CFLAGS
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 18 Jul 2009 10:00:01 +0200
+
+linux-2.6 (2.6.30-2) unstable; urgency=low
+
+  [ dann frazier ]
+  * [powerpc] Use generic rtc (closes: #535354)
+  * [parisc]
+    - ensure broadcast tlb purge runs single threaded
+    - fix ldcw inline assembler
+    (closes: #535844)
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.30.1:
+    - KVM: x86: check for cr3 validity in ioctl_set_sregs (CVE-2009-2287)
+    - ALSA: intel8x0 - Fix PCM position craziness (closes: #533780)
+    - ide-cd: prevent null pointer deref via cdrom_newpc_intr (closes: #535342)
+  * Ignore ABI changes.
+
+  [ maximilian attems ]
+  * [alpha] Add upstream smp buildfix.
+  * [parisc] Disable vxge and niu.
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 07 Jul 2009 14:45:43 +0200
+
+linux-2.6 (2.6.30-1) unstable; urgency=low
+
+  * New upstream release.
+    - radeonfb: suspend/resume for ATI Mobility Radeon RV350.
+      (closes: #506964)
+    - tcp: fix MSG_PEEK race check (closes: #513695)
+    - e100 fixes (closes: #527056)
+    - mos7840: fix miscalculation of minor numbers (closes: #498293)
+    - reiserfs update (closes: #531804)
+    - bluetooth stack suspend/resume (closes: #508426, #529785)
+    - e1000e: Remove mutex_trylock and associated WARN on failure
+      (closes: #524699)
+
+  [ maximilian attems ]
+  * [sparc] Enable BLK_DEV_CRYPTOLOOP. (closes: #521829)
+  * Enable PATA_JMICRON instead of legacy BLK_DEV_JMICRON.
+    (closes: #431500, #458493)
+  * Set new NILFS2, AT76C50X_USB, MWL8K, P54_SPI, AR9170_USB,
+    NETFILTER_XT_MATCH_CLUSTER, RDS, SCSI_MPT2SAS, SCSI_OSD_INITIATOR,
+    ETHOC, IGBVF, VXGE, TOUCHSCREEN_AD7877, SENSORS_ATK0110,
+    NETFILTER_XT_TARGET_LED, 3C359, HW_RANDOM_TIMERIOMEM, SENSORS_G760A,
+    SENSORS_LTC4215, SENSORS_LM95241, USB_GSPCA_MR97310A, USB_GSPCA_SQ905,
+    USB_GSPCA_SQ905C, USB_PWC_INPUT_EVDEV, DVB_USB_CE6230, SND_INDIGOIOX,
+    SND_INDIGODJX, USB_SERIAL_CP210X, USB_SERIAL_QUALCOMM,
+    USB_SERIAL_SYMBOL, ISL29003, SERIAL_MAX3100, VIDEO_HDPVR, VIDEO_CX231XX,
+    DRAGONRISE_FF, LEDS_LP5521, LEDS_DAC124S085, LEDS_BD2802,
+    UIO_AEC, CRYPTO_ZLIB, REGULATOR_FIXED_VOLTAGE, NOP_USB_XCEIV,
+    POHMELFS, FSCACHE, CACHEFILES, EXOFS, NFS_FSCACHE, AFS_FSCACHE,
+    MTD_NAND_NANDSIM, STRIP_ASM_SYMS, FCOE_FNIC, USB_NET_CDC_EEM,
+    PCI_IOV, ASYNC_TX_DMA, ROMFS_BACKED_BY_BOTH, DETECT_HUNG_TASK.
+  * [amd64, i386] Set new DELL_WMI, EDAC_AMD8131, EDAC_AMD8111, X86_PAT, DMAR,
+    X86_CPU_DEBUG, CRYPTO_AES_NI_INTEL, X86_X2APIC.
+  * Newer Standards-Version 3.8.1 without changes.
+  * xfs: fix freeing memory in xfs_getbmap().
+
+  [ Ben Hutchings ]
+  * Remove firmware from drivers/staging (closes: #521553)
+    - make rt2860sta and rt2870sta use request_firmware(),
+      thanks to Darren Salt
+  * Remove some sourceless firmware not included in Debian kernel images
+
+  [ Martin Michlmayr ]
+  * [mipsel/r5k-cobalt] Enable SCSI_SYM53C8XX_2 (closes: #526836).
+  * [arm/iop32x, arm/ixp4xx, arm/orion5x] Turn off BOOT_TRACER,
+    BLK_DEV_IO_TRACE, CONTEXT_SWITCH_TRACER, ARM_UNWIND and
+    SECURITY_SELINUX because of size constraints.
+  * [mips/sb1-bcm91250a] There is a platform PATA driver for SWARM IDE
+    these days, so disable IDE and build in ATA, SCSI and BLK_DEV_SD.
+  * [mips/sb1-bcm91250a, mips/sb1a-bcm91480b] Compile in SB1250_MAC and
+    BROADCOM_PHY.
+  * [mips/r4k-ip22] Enable NET_ISA and various ISA network modules on
+    the request of Damian Dimmich since they might be useful on the
+    SGI Indigo2.
+  * Add patches from git.marvell.com:
+    - alternative copy_to_user: more precise fallback threshold
+    - lower overhead with alternative copy_to_user for small copies
+    - Kirkwood: Add CPU idle driver
+    - Kirkwood: clock gating for unused peripherals
+
+  [ Aurelien Jarno ]
+  * [mips(el)/sb1-bcm91250a] Set CONFIG_SCSI_AIC7XXX=y, it is needed
+    on the build daemons.
+
+  [ Bastian Blank ]
+  * [i386] Disable PentiumPro errata workaround.
+  * [i386] Enable support for big SMP systems.
+  * Disable OSS.
+  * [s390] Use Sparse Memory layout.
+  * [amd64, i386, powerpc, sparc] Make IPv6 support built-in.
+  * Centralize Sound core options.
+  * Centralize Power Management options.
+  * Centralize CPU Frequency scaling options.
+  * [sparc] Enable CPU Frequency scaling.
+  * Enable Network console logging support.
+  * [s390/s390x-tape] Add image.
+  * [s390/s390, s390/s390-tape] Remove images.
+  * [i386/486] Enable High Memory Support.
+  * [i386] Allocate pagetables from High Memory.
+  * [amd64, i386] Write protect kernel read-only data structures.
+  * [amd64, i386] Make kernel relocatable.
+  * Move images and headers into kernel section.
+
+  [ dann frazier ]
+  * Enable bnx2x, using firmware-split patches from net-next and mirroring
+    the per-subarch config settings used for bnx2
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 14 Jun 2009 11:45:08 +0200
+
+linux-2.6 (2.6.29-5) unstable; urgency=low
+
+  [ dann frazier ]
+  * [ia64] Backport rtc-efi driver from mainline
+
+  [ maximilian attems ]
+  * qla1280: Fix off-by-some error in firmware loading. (closes: #527265)
+
+  [ Martin Michlmayr ]
+  * Broadcom SB: fix locking in set_irq_affinity.
+  * mmc: load mvsdio automatically when it's a platform device.
+  * mmc: mvsdio: ignore high speed timing requests from the core
+  * USB: ftdi_sio: add vendor/product id for the Marvell SheevaPlug.
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.29.3:
+    - ath9k: Fix FIF_BCN_PRBRESP_PROMISC handling
+    - tracing: x86, mmiotrace: fix range test
+    - sched: account system time properly
+    - rndis_wlan: fix initialization order for workqueue&workers
+    - mm: fix Committed_AS underflow on large NR_CPUS environment
+    - Ignore madvise(MADV_WILLNEED) for hugetlbfs-backed regions
+    - clockevents: prevent endless loop in tick_handle_periodic()
+    - intel-iommu: Avoid panic() for DRHD at address zero.
+    - intel-iommu: Fix oops in device_to_iommu() when devices not found.
+    - intel-iommu: Fix device-to-iommu mapping for PCI-PCI bridges.
+    - cs5536: define dma_sff_read_status() method
+    - proc: avoid information leaks to non-privileged processes
+    - ath5k: fix buffer overrun in rate debug code
+    - mv643xx_eth: OOM handling fixes
+    - mv643xx_eth: 64bit mib counter read fix
+    - check_unsafe_exec: s/lock_task_sighand/rcu_read_lock/
+    - do_execve() must not clear fs->in_exec if it was set by another thread
+    - check_unsafe_exec() doesn't care about signal handlers sharing
+    - New locking/refcounting for fs_struct
+    - Take fs_struct handling to new file (fs/fs_struct.c)
+    - Get rid of bumping fs_struct refcount in pivot_root(2)
+    - Kill unsharing fs_struct in __set_personality()
+    - Annotate struct fs_struct's usage count restriction
+    - fix setuid sometimes wouldn't
+    - fix setuid sometimes doesn't
+    - compat_do_execve should unshare_files
+    - powerpc: Sanitize stack pointer in signal handling code
+    - ACPI: Revert conflicting workaround for BIOS w/ mangled PRT entries
+    - USB: serial: fix lifetime and locking problems
+    - ptrace: ptrace_attach: fix the usage of ->cred_exec_mutex
+    - kbuild: fix Module.markers permission error under cygwin
+    - pagemap: require aligned-length, non-null reads of /proc/pid/pagemap
+    - drm/i915: allow tiled front buffers on 965+
+    - bio: fix memcpy corruption in bio_copy_user_iov()
+    - PCI quirk: disable MSI on VIA VT3364 chipsets
+    - ASoC: Fix offset of freqmode in WM8580 PLL configuration
+    - x86/PCI: don't call e820_all_mapped with -1 in the mmconfig case
+    - x86-64: fix FPU corruption with signals and preemption
+    - drm/i915: add support for G41 chipset
+    - unreached code in selinux_ip_postroute_iptables_compat() (CVE-2009-1184)
+    - PCI: fix incorrect mask of PM No_Soft_Reset bit
+    - exit_notify: kill the wrong capable(CAP_KILL) check (CVE-2009-1337)
+    - crypto: ixp4xx - Fix handling of chained sg buffers
+    - block: include empty disks in /proc/diskstats
+    - b44: Use kernel DMA addresses for the kernel DMA API
+    - virtio-rng: Remove false BUG for spurious callbacks
+    - USB: Unusual Device support for Gold MP3 Player Energy
+    - KVM: x86: release time_page on vcpu destruction
+    - KVM: Fix overlapping check for memory slots
+    - KVM: MMU: disable global page optimization
+    - KVM: MMU: Fix off-by-one calculating large page count
+    - mac80211: fix basic rate bitmap calculation
+    - ALSA: us122l: add snd_us122l_free()
+    - thinkpad-acpi: fix LED blinking through timer trigger
+    - b43: Refresh RX poison on buffer recycling
+    - b43: Poison RX buffers
+    - mac80211: Fix bug in getting rx status for frames pending in reorder
+      buffer
+    - forcedeth: Fix resume from hibernation regression.
+  * Ignore ABI change.
+
+  [ Jurij Smakov ]
+  * [sparc] Fix build
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 17 May 2009 12:45:13 +0200
+
+linux-2.6 (2.6.29-4) unstable; urgency=low
+
+  [ maximilian attems ]
+  * drm/i915: allow tiled front buffers on 965+.
+
+  [ Martin Michlmayr ]
+  * Extend erase timeout in M25P80 SPI Flash driver (Peter Horton).
+  * Add driver for GMT G760A fan speed PWM controller chip.
+  * [arm/orion5x] Enable SENSORS_G760A.
+  * Add patches from git.marvell.com:
+    - allow for alternative __copy_to_user/__clear_user implementations
+    - alternative copy_to_user/clear_user implementation copy_user
+  * [arm/orion5x, armel/kirkwood] Enable UACCESS_WITH_MEMCPY.
+  * [MMC] give Sandisk/Kingston SDHC cards some slack before the SWITCH
+    command.
+
+  [ dann frazier ]
+  * [parisc] Fix macro expansion in atomic.h fixing PHONET compilation issue
+  * [parisc] reenable PHONET
+  * Btrfs: fix __ucmpdi2 compile bug on 32 bit builds
+
+  [ Stephen R. Marenka ]
+  * [m68k] Add 2.6.29 patches.
+  * [m68k] Enable RTC for aranym (2.6.29 solution).
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.29.2:
+    - Bonding: fix zero address hole bug in arp_ip_target list
+    - skge: fix occasional BUG during MTU change
+    - scsi: mpt: suppress debugobjects warning
+    - hugetlbfs: return negative error code for bad mount option
+    - NFS: Fix the XDR iovec calculation in nfs3_xdr_setaclargs
+    - gso: Fix support for linear packets
+    - agp: zero pages before sending to userspace
+    - virtio: fix suspend when using virtio_balloon
+    - Revert "console ASCII glyph 1:1 mapping"
+    - Input: gameport - fix attach driver code
+    - x86, PAT: Remove page granularity tracking for vm_insert_pfn maps
+    - KVM: is_long_mode() should check for EFER.LMA
+    - KVM: VMX: Update necessary state when guest enters long mode
+    - KVM: fix kvm_vm_ioctl_deassign_device
+    - KVM: MMU: handle compound pages in kvm_is_mmio_pfn
+    - KVM: Reset PIT irq injection logic when the PIT IRQ is unmasked
+    - KVM: Interrupt mask notifiers for ioapic
+    - KVM: Add CONFIG_HAVE_KVM_IRQCHIP
+    - KVM: Fix missing smp tlb flush in invlpg
+    - USB: usb-storage: augment unusual_devs entry for Simple Tech/Datafab
+    - USB: fix oops in cdc-wdm in case of malformed descriptors
+    - USB: ftdi_sio: add vendor/project id for JETI specbos 1201 spectrometer
+    - usb gadget: fix ethernet link reports to ethtool
+    - x86: disable X86_PTRACE_BTS for now
+    - SCSI: sg: fix q->queue_lock on scsi_error_handler path
+    - SCSI: sg: avoid blk_put_request/blk_rq_unmap_user in interrupt
+    - SCSI: sg: fix races with ioctl(SG_IO)
+    - SCSI: sg: fix races during device removal
+    - mm: pass correct mm when growing stack
+    - pata_hpt37x: fix HPT370 DMA timeouts
+    - hpt366: fix HPT370 DMA timeouts
+    - powerpc: Fix data-corrupting bug in __futex_atomic_op
+    - ALSA: hda - Fix the cmd cache keys for amp verbs
+    - sfc: Match calls to netif_napi_add() and netif_napi_del()
+    - tty: Fix leak in ti-usb
+    - spi: spi_write_then_read() bugfixes
+    - add some long-missing capabilities to fs_mask
+    - hrtimer: fix rq->lock inversion (again)
+    - x86: fix broken irq migration logic while cleaning up multiple vectors
+    - sched: do not count frozen tasks toward load
+    - dm kcopyd: fix callback race
+    - dm kcopyd: prepare for callback race fix
+    - posix-timers: fix RLIMIT_CPU && setitimer(CPUCLOCK_PROF)
+    - posix-timers: fix RLIMIT_CPU && fork()
+    - posixtimers, sched: Fix posix clock monotonicity
+    - cap_prctl: don't set error to 0 at 'no_change'
+    - SCSI: libiscsi: fix iscsi pool error path
+    - SCSI: libiscsi: fix iscsi pool error path
+    - sparc64: Fix bug in ("sparc64: Flush TLB before releasing pages.")
+    - ALSA: hda - add missing comma in ad1884_slave_vols
+    - splice: fix deadlock in splicing to file
+    - netfilter: {ip, ip6, arp}_tables: fix incorrect loop detection
+    - kprobes: Fix locking imbalance in kretprobes
+    - acer-wmi: Blacklist Acer Aspire One
+    - crypto: shash - Fix unaligned calculation with short length
+    - net/netrom: Fix socket locking
+    - af_rose/x25: Sanity check the maximum user frame size
+    - dm table: fix upgrade mode race
+    - dm: path selector use module refcount directly
+    - dm target: use module refcount directly
+    - dm snapshot: avoid having two exceptions for the same chunk
+    - dm snapshot: avoid dropping lock in __find_pending_exception
+    - dm snapshot: refactor __find_pending_exception
+    - dm io: make sync_io uninterruptible
+    - dm raid1: switch read_record from kmalloc to slab to save memory
+    - vfs: skip I_CLEAR state inodes
+    - dm: preserve bi_io_vec when resubmitting bios
+    - ixgbe: Fix potential memory leak/driver panic issue while setting up Tx &
+      Rx ring parameters
+    - mm: do_xip_mapping_read: fix length calculation
+    - mm: define a UNIQUE value for AS_UNEVICTABLE flag
+    - sysctl: fix suid_dumpable and lease-break-time sysctls
+    - cpumask: fix slab corruption caused by alloc_cpumask_var_node()
+    - ide-atapi: start DMA after issuing a packet command
+    - ide: drivers/ide/ide-atapi.c needs <linux/scatterlist.h>
+    - V4L/DVB (10943): cx88: Prevent general protection fault on rmmod
+    - r8169: Reset IntrStatus after chip reset
+    - md/raid1 - don't assume newly allocated bvecs are initialised.
+    - SCSI: sg: fix iovec bugs introduced by the block layer conversion
+    - drm/i915: fix TV mode setting in property change
+    - drm/i915: only set TV mode when any property changed
+    - drm: Use pgprot_writecombine in GEM GTT mapping to get the right bits for
+      !PAT.
+    - drm/i915: check for -EINVAL from vm_insert_pfn
+    - drm/i915: Check for dev->primary->master before dereference.
+    - drm/i915: Sync crt hotplug detection with intel video driver
+    - drm/i915: Read the right SDVO register when detecting SVDO/HDMI.
+    - drm/i915: Change DCC tiling detection case to cover only mobile parts.
+    - dock: fix dereference after kfree()
+    - ACPI: cap off P-state transition latency from buggy BIOSes
+    - x86, setup: mark %esi as clobbered in E820 BIOS call
+    - tracing/core: fix early free of cpumasks
+    - rt2x00: Fix SLAB corruption during rmmod
+    - ext4: fix locking typo in mballoc which could cause soft lockup hangs
+    - ext4: fix typo which causes a memory leak on error path
+    - MIPS: Compat: Zero upper 32-bit of offset_high and offset_low.
+    - PCI/x86: detect host bridge config space size w/o using quirks
+    - ide: Fix code dealing with sleeping devices in do_ide_request()
+    - fbdev: fix info->lock deadlock in fbcon_event_notify()
+    - fbmem: fix fb_info->lock and mm->mmap_sem circular locking dependency
+    - security/smack: fix oops when setting a size 0 SMACK64 xattr
+  * Bump ABI to 2.
+  * [sparc] Make the kernels again 64bit. (closes: #525926)
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 03 May 2009 09:38:42 +0200
+
+linux-2.6 (2.6.29-3) unstable; urgency=low
+
+  [ maximilian attems ]
+  * [powerpc] Pipe mkimage postinst call to stderr for debconf.
+    Thanks Jordi Mallach <jordi@debian.org> for the patch. (closes: #518231)
+  * [parisc] Disable PHONET.
+  * [sparc] Disable BTRFS.
+
+  [ Bastian Blank ]
+  * [alpha] Fix location of kernel image.
+  * Add source link to headers packages. (closes: #523726)
+
+  [ Martin Michlmayr ]
+  * Add some sata_mv fixes for Kirkwood from Marvell:
+    - use new sata phy register settings for new devices
+    - increate the IORDY timeout for the soc controllers
+
+ -- maximilian attems <maks@debian.org>  Fri, 17 Apr 2009 10:36:03 +0200
+
+linux-2.6 (2.6.29-2) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * [arm/ixp4xx] Build in LEDS_TRIGGER_TIMER (closes: #521141).
+  * [mips*/4kc-malta, mips*/5kc-malta] Build in RTC_DRV_CMOS.
+
+  [ maximilian attems ]
+  * linux-libc-dev: Bump versioned replaces libdrm-dev.
+  * parisc: hardcode gcc-4.3 usage.
+  * Postrm cleanup new module-init-tools 3.7 files.
+
+  [ Bastian Blank ]
+  * Install all needed Makefiles into common headers package.
+    (closes: #521472)
+  * Add stable release 2.6.29.1:
+    - V4L: v4l2-common: remove incorrect MODULE test
+    - sparc64: Fix reset hangs on Niagara systems.
+    - sparc64: Flush TLB before releasing pages.
+    - sparc64: Fix MM refcount check in smp_flush_tlb_pending().
+    - KVM: MMU: Fix another largepage memory leak
+    - cfg80211: fix incorrect assumption on last_request for 11d
+    - lguest: fix spurious BUG_ON() on invalid guest stack.
+    - lguest: wire up pte_update/pte_update_defer
+    - VM, x86, PAT: Change is_linear_pfn_mapping to not use vm_pgoff
+    - x86: mtrr: don't modify RdDram/WrDram bits of fixed MTRRs
+    - x86: ptrace, bts: fix an unreachable statement
+    - x86: fix 64k corruption-check
+    - x86, uv: fix cpumask iterator in uv_bau_init()
+    - x86, PAT, PCI: Change vma prot in pci_mmap to reflect inherited prot
+    - Add a missing unlock_kernel() in raw_open()
+    - fuse: fix fuse_file_lseek returning with lock held
+    - ARM: 5435/1: fix compile warning in sanity_check_meminfo()
+    - ARM: twl4030 - leak fix
+    - ARM: fix leak in iop13xx/pci
+    - ARM: cumana: Fix a long standing bogon
+    - ARM: 5428/1: Module relocation update for R_ARM_V4BX
+    - ARM: pxa: fix overlay being un-necessarily initialized on pxa25x
+    - DVB: firedtv: FireDTV S2 problems with tuning solved
+    - cfg80211: force last_request to be set for OLD_REG if regdom is EU
+    - CIFS: Fix memory overwrite when saving nativeFileSystem field during mount
+    - ath5k: warn and correct rate for unknown hw rate indexes
+    - ath5k: disable MIB interrupts
+    - b43: fix b43_plcp_get_bitrate_idx_ofdm return type
+    - ath9k: fix dma mapping leak of rx buffer upon rmmod
+    - ath5k: use spin_lock_irqsave for beacon lock
+    - cifs: fix buffer format byte on NT Rename/hardlink
+    - ath9k: downgrade xmit queue full message to xmit debug
+    - KVM: SVM: set accessed bit for VMCB segment selectors
+    - KVM: VMX: Don't allow uninhibited access to EFER on i386
+    - USB: add quirk to avoid config and interface strings
+    - USB: gadget: fix rndis regression
+    - USB: usb-storage: increase max_sectors for tape drives
+    - USB: fix USB_STORAGE_CYPRESS_ATACB
+    - USB: EHCI: add software retry for transaction errors
+    - xfrm: spin_lock() should be spin_unlock() in xfrm_state.c
+    - ipv6: Plug sk_buff leak in ipv6_rcv (net/ipv6/ip6_input.c)
+    - GRO: Disable GRO on legacy netif_rx path (closes: #521691)
+    - bridge: bad error handling when adding invalid ether address
+    - dnet: drivers/net/dnet.c needs <linux/io.h>
+    - udp: Wrong locking code in udp seq_file infrastructure
+    - netfilter: nf_conntrack_tcp: fix unaligned memory access in tcp_sack
+
+  [ dann frazier ]
+  * bnx2: correct firmware revisions (closes: #522049)
+  * [mips] Zero upper 32-bits of compat llseek (closes: #521016)
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 04 Apr 2009 15:13:33 +0200
+
+linux-2.6 (2.6.29-1) unstable; urgency=low
+
+  * New upstream release
+    - tg3 use request_firmware and firmware nuked.
+    - acenic use request_firmware and firmware nuked.
+    - e100 use request_firmware and firmware nuked. (closes: #494308)
+    - cassini use request_firmware and firmware nuked.
+    - starfire use request_firmware and firmware nuked. (closes: #501152)
+    - cxgb3 use request_firmware and firmware nuked.
+    - NR_CPUS setting no longer affects size of modules. (closes: #516709)
+    - orinoco: use KERN_DEBUG for link status messages. (closes: #447549)
+    - [CIFS] Fix oops in cifs_strfromUCS_le mounting to servers which do
+      not specify their OS. (closes: #463402)
+    - fixes conflict between <asm/byteorder.h> and <endian.h> on mips
+      (closes: #519761)
+
+  [ maximilian attems ]
+  * topconfig set new NET_NS, NET_SCH_DRR, NET_CLS_CGROUP, LIB80211,
+    SCSI_CXGB3_ISCSI, NATIONAL_PHY, STE10XP, LSI_ET1011C_PHY, BTRFS_FS,
+    SQUASHFS, PCI_STUB, WIMAX, MTD_LPDDR, EEPROM_AT24, EEPROM_AT25,
+    EEPROM_LEGACY, BLK_DEV_IT8172, SMSC9420, WIMAX_I2400M_USB,
+    WIMAX_I2400M_SDIO, MISDN_HFCUSB, SENSORS_ADT7475, SENSORS_LTC4245,
+    RADIO_TEA5764, SND_HDA_CODEC_INTELHDMI, RT2860, RT2870, RTL8187SE,
+    LIBFC, FCOE, ATL1C, JOYSTICK_WALKERA0701, TOUCHSCREEN_WACOM_W8001,
+    TOUCHSCREEN_TSC2007, W1_SLAVE_DS2431, WM8350_POWER, SOC_CAMERA_MT9T031,
+    SOC_CAMERA_TW9910, SOC_CAMERA_OV772X, USB_STV06XX, USB_GSPCA_OV534,
+    DVB_LGDT3304, WM8350_WATCHDOG, SMSC_SCH311X_WDT, SND_HRTIMER,
+    SND_HDA_RECONFIG, GREENASIA_FF, USB_SERIAL_SIEMENS_MPI,
+    USB_SERIAL_OPTICON, LEDS_ALIX2, LEDS_WM8350, OCFS2_FS_POSIX_ACL,
+    BTRFS_FS_POSIX_ACL, ATM_SOLOS, MFD_PCF50633, PCF50633_ADC, PCF50633_GPIO,
+    REGULATOR_PCF50633, DVB_S921, EDAC_I5400, RTC_DRV_PCF50633,
+    INPUT_PCF50633_PMU, CHARGER_PCF50633, DEVPTS_MULTIPLE_INSTANCES,
+    SCHED_OMIT_FRAME_POINTER, DCB, IXGBE_DCB, SFC_MTD, BE2NET, DNET.
+  * topconfig enable SND_HDA_HWDEP for sound debugging purpose.
+  * topconfig enable USB_HIDDEV (closes: #517771)
+  * [x86] set DELL_LAPTOP, COMEDI, X86_PTRACE_BTS, XENFS, XEN_COMPAT_XENFS,
+    X86_REROUTE_FOR_BROKEN_BOOT_IRQS, OPTIMIZE_INLINING.
+  * [x86] unset DRM_I915_KMS due to upgrade path from Lenny override with
+    modeset module param.
+  * temp.image.plain/preinst: Consistent output.
+  * [x86_64] set SPARSE_IRQ, NUMA_MIGRATE_IRQ_DESC, TREE_RCU.
+  * [x86_32] set BLK_DEV_CS5536.
+  * [powerpc] set PHANTOM, HP_ILO, MV643XX_ETH, MOUSE_BCM5974, VIRTUALIZATION.
+  * topconfig unset legacy SCSI_PROC_FS, PCMCIA_IOCTL, ACPI_PROCFS_POWER,
+    ACPI_PROC_EVENT.
+
+  [ Bastian Blank ]
+  * Use external source directory for all builds.
+  * Use external source directory for all header packages.
+  * Use dh_prep.
+  * Update copyright file.
+  * [s390/s390] Disable BTRFS.
+  * [sparc] Use sparc as kernel architecture.
+  * Update kconfig report changes patch.
+  * [s390] Enable KVM.
+  * Use debhelper compat level 7.
+
+  [ Martin Michlmayr ]
+  * [mips/r4k-ip22] Build in RTC_DRV_DS1286.
+  * [mips/r5k-ip32] Build in RTC_DRV_CMOS (Closes: #516775).
+  * [arm/versatile, arm/iop32x, arm/ixp4xx] Make LLC2 modular.
+  * [arm, mips, mipsel] Make MII modular.
+  * [arm/ixp4xx] Make IXP4XX_WATCHDOG modular.
+  * topconfig: Disable NET_DSA since this hardware is special purpose and
+    the option cannot be made modular at the moment and bloats the kernel
+    image too much.
+  * [arm, armel] Enable various V4L USB devices. (Closes: #518582)
+  * [arm/orion5x] Build the SENSORS_LM75 module since it's needed on the
+    D-Link DNS-323.
+  * [arm/iop32x, arm/ixp4xx, arm/orion5x] Enable INPUT_TOUCHSCREEN.
+  * [arm/iop32x, arm/ixp4xx, arm/orion5x] Enable INPUT_JOYDEV, GAMEPORT
+    and INPUT_JOYSTICK (Closes: #520433).
+  * [arm/iop32x, arm/ixp4xx, arm/orion5x] Add a size check to ensure that
+    the kernel will fit in flash.
+  * Add patches from git.marvell.com to improve Kirkwood support:
+    - make gpio /input/output validation separate
+    - MPP initialization code
+    - SDIO driver for Marvell SoCs
+    - SDIO driver registration for DB6281 and RD6281
+    - register internal devices in a common place
+    - Marvell SheevaPlug support
+    - SheevaPlug USB Power Enable setup
+    - SheevaPlug LED support
+    - Hook up I2C on Kirkwood
+    - Add support for QNAP TS-119/TS-219 Turbo NAS
+  * [armel/kirkwood] Add an image for Marvell's Kirkwood platform.
+
+  [ Ben Hutchings ]
+  * Remove firmware from drivers and make them use request_firmware():
+    - mga (closes: #502666)
+    - qla1280 (closes: #502667)
+    - r128 (closes: #494007)
+    - radeon (closes: #494009)
+    - tehuti (closes: #501153)
+    - typhoon (closes: #502669)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 24 Mar 2009 14:32:11 +0100
+
+linux-2.6 (2.6.28-1) unstable; urgency=low
+
+  * New upstream release
+    - new btusb. (closes: #505184)
+    - iwlagn driver for Intel Wifi Link 5100 and 5300. (closes: #501157)
+    - drm git branch vblank-rework merged. (closes: #456219)
+    - netfilter.h got in.h include. (closes: #487103)
+    - netlink errno propageted. (closes: #489340)
+    - agp g41 support (closes: #513228)
+    - Includes atl2 driver (Closes: #500065)
+    - Fixes loading of video module on Samsung systems
+      (Closes: #475319, #495697)
+    - Fix rf_kill handling of iwl3945 driver (Closes: #503688)
+    - Fix adjtimex frequency offset (Closes: #432877)
+    - Fix oopses with Canon PIXMA MP150 (Closes: #487725)
+    - Fix excessive interrrupts with compiz (Closes: #456219)
+    - dsp56k: use request_firmware and firmware nuked (closes: #494010)
+    - dabusb: use request_firmware and firmware nuked (closes: #502663)
+    - kaweth: use request_firmware and firmware nuked (closes: #502665)
+
+  [ maximilian attems ]
+  * Reenable new Juju firewire stack.
+  * topconfig set ATH9K, IWL5000, IP_NF_SECURITY, IP6_NF_SECURITY,
+    BRIDGE_EBT_IP6, BT_HCIBTUSB, TOUCHSCREEN_INEXIO, TOUCHSCREEN_TOUCHIT213,
+    VIRTIO_CONSOLE, VIDEO_ZORAN_ZR36060, USB_VIDEO_CLASS_INPUT_EVDEV,
+    USB_GSPCA, USB_S2255, OCFS2_FS_STATS, OMFS_FS, CRYPTO_RMD128,
+    CRYPTO_RMD160, CRYPTO_RMD256, CRYPTO_RMD320, VLAN_8021Q_GVRP, HP_WMI,
+    COMPAL_LAPTOP, SCSI_DH, SCSI_DH_RDAC, SCSI_DH_HP_SW, SCSI_DH_EMC,
+    SCSI_DH_ALUA, MAC80211_HWSIM, USB_HSO, BLK_DEV_INTEGRITY, SGI_XP, SGI_GRU,
+    TLAN, ATM_IA, ATM_FORE200E, MISDN, I2C_HELPER_AUTO, I2C_ISCH,
+    I2C_NFORCE2_S4985, AT24, SENSORS_AD7414, SENSORS_ADCXX,
+    SOC_CAMERA_PLATFORM, VIDEO_SH_MOBILE_CEU, DVB_USB_DW2102, DVB_USB_ANYSEE,
+    DVB_SIANO_SMS1XXX, DVB_DRX397XD, MMC_SDHCI_PCI (closes: #507150),
+    MMC_SDRICOH_CS (closes: #509979), EDAC_I5100, RTC_DRV_M41T94,
+    RTC_DRV_DS1305, UBIFS, EXT4 (closes: #512266), CGROUP_FREEZER,
+    NETFILTER_TPROXY, NETFILTER_XT_TARGET_TPROXY, NETFILTER_XT_MATCH_RECENT,
+    NETFILTER_XT_MATCH_SOCKET, NET_ACT_SKBEDIT, PHONET, NET_9P_RDMA, ATL2, JME,
+    ENIC, MLX4_EN, USB_NET_SMSC95XX, I7300_IDLE, NET_SCH_MULTIQ, ICS932S401,
+    PANASONIC_LAPTOP, QLGE, LIBERTAS_THINFIRM, LIBERTAS_THINFIRM_USB,
+    INPUT_CM109, W1_SLAVE_BQ27000, SENSORS_ADT7462, SENSORS_MAX1111,
+    SENSORS_LIS3LV02D, MFD_WM8400, MFD_WM8350_I2C, SOC_CAMERA_MT9M111,
+    USB_M5602, USB_GSPCA_CONEX, USB_GSPCA_ETOMS, USB_GSPCA_FINEPIX,
+    USB_GSPCA_MARS, USB_GSPCA_OV519, USB_GSPCA_PAC207, USB_GSPCA_PAC7311,
+    USB_GSPCA_SONIXB, USB_GSPCA_SONIXJ, USB_GSPCA_SPCA500, USB_GSPCA_SPCA501,
+    USB_GSPCA_SPCA505, USB_GSPCA_SPCA506, USB_GSPCA_SPCA508, USB_GSPCA_SPCA561,
+    USB_GSPCA_STK014, USB_GSPCA_SUNPLUS, USB_GSPCA_T613, USB_GSPCA_TV8532,
+    USB_GSPCA_VC032X, USB_GSPCA_ZC3XX, C2PORT, C2PORT_DURAMAR_2150,
+    W83697UG_WDT, USB_MR800, DVB_USB_CINERGY_T2, DVB_USB_DTV5100,
+    DVB_USB_AF9015, DVB_DM1105, DVB_LGS8GL5, DVB_DUMMY_FE,
+    SND_HDA_CODEC_NVHDMI, SND_USB_US122L, USB_VST, LEDS_PCA9532, LEDS_HP_DISK,
+    LEDS_PCA955X, LEDS_TRIGGER_BACKLIGHT, EDAC_X38, RTC_DRV_RX8581,
+    RTC_DRV_DS1390, RTC_DRV_DS3234, RTC_DRV_DS1286, RTC_DRV_M48T35,
+    RTC_DRV_BQ4802, RTC_DRV_WM8350, UNEVICTABLE_LRU, MAC80211_RC_MINSTREL,
+    BATTERY_BQ27x00, REGULATOR, REGULATOR_BQ24022, REGULATOR_WM8350,
+    REGULATOR_WM8400, FB_VIA, FB_METRONOME, FB_MB862XX, UIO_SERCOS3,
+    CORE_DUMP_DEFAULT_ELF_HEADERS, NET_DSA, NET_DSA_MV88E6060,
+    NET_DSA_MV88E6131, NET_DSA_MV88E6123_61_65, IT87_WDT,
+    BACKLIGHT_MBP_NVIDIA, SND_HDA_INPUT_BEEP, USB_WUSB, USB_TMC, IDE_GD,
+    IDE_GD_ATA, IDE_GD_ATAPI, PCMCIA_IBMTR, USB_EMI62, USB_EMI26, USB_SEVSEG,
+    UWB, UWB_WLP, UWB_I1480U, UWB_I1480U_WLP, CRYPTO_FIPS, ANSI_CPRNG,
+    CRC_T10DIF, STAGING, ET131X, CRYPTO_ANSI_CPRNG, PRISM2_USB, HID_COMPAT,
+    SYSCTL_SYSCALL_CHECK, BOOT_TRACER.
+  * [x86] set MOUSE_BCM5974, X86_RESERVE_LOW_64K, OPROFILE_IBS,
+    MICROCODE_INTEL, MICROCODE_AMD, X86_VERBOSE_BOOTUP, MTRR_SANITIZER,
+    CRYPTO_CRC32C_INTEL, STRICT_DEVMEM.
+  * [x86_64] set AMD_IOMMU, INTR_REMAP.
+  * [x86_32] set TOUCHSCREEN_HTCPEN, MOUSE_PS2_OLPC.
+  * Add stable releases 2.6.28.1-6.
+  * Turn off SYSFS_DEPRECATED* for newer udev and proper /sys/.
+  * linux-libc-dev: Add versioned replaces libdrm-dev. (closes: #513604)
+  * topconfig: Enable MACVLAN. (closes: #504611)
+  * [ppc] BAYCOM_PAR, BAYCOM_EPP.
+  * [x86_64] set NR_CPUS to 512. (closes: #491309)
+  * [686-bigmem] set modular XEN_FBDEV_FRONTEND.
+  * Newer Standards-Version 3.8.0 without changes.
+  * Use update-initramfs for initramfs-tools.
+  * Fix preinst and postinst call to not use deprecated mkinitramfs-kpkg
+    interfaces.
+
+  [ Martin Michlmayr ]
+  * [mips/r4k-ip22, mips/sb1-bcm91250a] Don't build in ISO9660.
+  * [mipsel/r5k-cobalt] Enable INPUT_COBALT_BTNS.
+  * [mipsel/r5k-cobalt] Enable the new Cobalt LCD driver (FB_COBALT).
+  * [mips/r4k-ip22] Enable the new ALSA sound driver (SND_SGI_HAL2).
+  * [arm/iop32x, arm/ixp4xx] Don't build in KEYBOARD_ATKBD, MOUSE_PS2,
+    SERIO, JFFS2_FS, and CRAMFS.
+  * [arm/iop32x, arm/ixp4xx] Unset DEBUG_KERNEL so the kernel will
+    fit in flash.
+  * [arm/orion5x] Unset FIXED_PHY to work around a clash with fixed
+    mdio bus and mv643xx_eth.
+  * Migrate arm, armel, mips and mipsel away from kernel-package.
+
+  [ Ian Campbell ]
+  * [x86]: Enable Xen guest support in amd64 flavour. (closes: #495590)
+
+  [ dann frazier ]
+  * [x86, ia64] Enable ACPI_PCI_SLOT
+
+  [ Bastian Blank ]
+  * Make gcc-4.3 the default compiler. (closes: #463295)
+  * Add optional image size check.
+  * debian/rules.real: Setup image installation rules for alpha, hppa,
+    ia64 and sparc.
+  * Remove support to build images using kernel-package.
+
+ -- maximilian attems <maks@debian.org>  Wed, 18 Feb 2009 16:36:04 +0100
+
+linux-2.6 (2.6.26-12) unstable; urgency=high
+
+  [ Ian Campbell ]
+  * xen: fix ACPI processor throttling for when processor id is -1. (closes: #502849)
+
+  [ dann frazier ]
+  * Make sendmsg() block during UNIX garbage collection (CVE-2008-5300)
+  * Fix race conditions between inotify removal and umount (CVE-2008-5182)
+  * Fix DoS when calling svc_listen twice on the same socket while reading
+    /proc/net/atm/*vc (CVE-2008-5079)
+
+  [ Bastian Blank ]
+  * [openvz, vserver] Fix descriptions.
+  * [sparc] Enable Sun Logical Domains support. (closes: #501684)
+  * Fix coexistence of pata_marvell and ahci. (closes: #507432)
+  * [sparc] Support Intergraph graphics chips. (closes: #508108)
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 15 Dec 2008 12:57:18 +0100
+
+linux-2.6 (2.6.26-11) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * [sparc] Reintroduce dummy PCI host controller to workaround broken X.org.
+  * [sparc] Fix size checks in PCI maps.
+  * Add stable release 2.6.26.8:
+    - netfilter: restore lost ifdef guarding defrag exception
+    - netfilter: snmp nat leaks memory in case of failure
+    - netfilter: xt_iprange: fix range inversion match
+    - ACPI: dock: avoid check _STA method
+    - ACPI: video: fix brightness allocation
+    - sparc64: Fix race in arch/sparc64/kernel/trampoline.S
+    - math-emu: Fix signalling of underflow and inexact while packing result.
+    - tcpv6: fix option space offsets with md5
+    - net: Fix netdev_run_todo dead-lock
+    - scx200_i2c: Add missing class parameter
+    - DVB: s5h1411: Power down s5h1411 when not in use
+    - DVB: s5h1411: Perform s5h1411 soft reset after tuning
+    - DVB: s5h1411: bugfix: Setting serial or parallel mode could destroy bits
+    - V4L: pvrusb2: Keep MPEG PTSs from drifting away
+    - ACPI: Always report a sync event after a lid state change
+    - ALSA: use correct lock in snd_ctl_dev_disconnect()
+    - file caps: always start with clear bprm->caps_*
+    - libertas: fix buffer overrun
+    - net: Fix recursive descent in __scm_destroy().
+    - SCSI: qla2xxx: Skip FDMI registration on ISP21xx/22xx parts.
+      (Closes: #502552)
+    - edac cell: fix incorrect edac_mode
+    - ext[234]: Avoid printk floods in the face of directory corruption
+      (CVE-2008-3528)
+    - gpiolib: fix oops in gpio_get_value_cansleep()
+  * Override ABI changes.
+  * [xen] Update description. (closes: #505961)
+  * Revert parts of 2.6.26.6 to fix resume breakage. (closes: #504167)
+    - clockevents: prevent multiple init/shutdown
+    - clockevents: broadcast fixup possible waiters
+
+  [ dann frazier ]
+  * Fix buffer overflow in hfsplus (CVE-2008-4933)
+  * Fix BUG() in hfsplus (CVE-2008-4934)
+  * Fix stack corruption in hfs (CVE-2008-5025)
+  * Fix oops in tvaudio when controlling bass/treble (CVE-2008-5033)
+
+  [ Martin Michlmayr ]
+  * [arm/iop32x, arm/ixp4xx, arm/orion5x] Enable support for more partition
+    tables, including MAC_PARTITION (requested by Benoît Knecht).
+  * leds-pca9532: Fix memory leak and properly handle errors (Sven Wegener)
+  * leds-pca9532: Move i2c work to a workqueque (Riku Voipio). (closes:
+    #506116)
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 26 Nov 2008 11:43:48 +0100
+
+linux-2.6 (2.6.26-10) unstable; urgency=low
+
+  [ dann frazier ]
+  * sctp: Fix possible kernel panic in sctp_sf_abort_violation (CVE-2008-4618)
+
+  [ Martin Michlmayr ]
+  * DNS-323: add support for revision B1 machines (Matthew Palmer).
+  * ext3/ext4: Add support for non-native signed/unsigned htree hash
+    algorithms (Theodore Ts'o). (closes: #493957)
+  * [arm/ixp4xx] Enable USB_ACM (closes: #504723).
+
+  [ Bastian Blank ]
+  * agp: Fix stolen memory counting on Intel G4X. (closes: #502606)
+  * Add stable release 2.6.26.7:
+    - security: avoid calling a NULL function pointer in drivers/video/tvaudio.c
+    - DVB: au0828: add support for another USB id for Hauppauge HVR950Q
+    - drm/i915: fix ioremap of a user address for non-root (CVE-2008-3831)
+    - ACPI: Ignore _BQC object when registering backlight device
+    - hwmon: (it87) Prevent power-off on Shuttle SN68PT
+    - Check mapped ranges on sysfs resource files
+    - x86: avoid dereferencing beyond stack + THREAD_SIZE
+    - PCI: disable ASPM on pre-1.1 PCIe devices
+    - PCI: disable ASPM per ACPI FADT setting
+    - V4L/DVB (9053): fix buffer overflow in uvc-video
+    - V4L/DVB (8617): uvcvideo: don't use stack-based buffers for USB transfers.
+    - V4L/DVB (8498): uvcvideo: Return sensible min and max values when querying
+      a boolean control.
+    - V4L: zr36067: Fix RGBR pixel format
+    - V4L: bttv: Prevent NULL pointer dereference in radio_open
+    - libata: fix EH action overwriting in ata_eh_reset()
+    - libata: always do follow-up SRST if hardreset returned -EAGAIN
+    - fbcon_set_all_vcs: fix kernel crash when switching the rotated consoles
+    - modules: fix module "notes" kobject leak
+    - b43legacy: Fix failure in rate-adjustment mechanism
+    - CIFS: make sure we have the right resume info before calling CIFSFindNext
+    - sched_rt.c: resch needed in rt_rq_enqueue() for the root rt_rq
+    - tty: Termios locking - sort out real_tty confusions and lock reads
+    - x86, early_ioremap: fix fencepost error
+    - x86: improve UP kernel when CPU-hotplug and SMP is enabled
+    - x86: Reserve FIRST_DEVICE_VECTOR in used_vectors bitmap.
+  * [xen] Remove pte file workaround.
+
+  [ Ian Campbell ]
+  * [xen] Disable usage of PAT. (closes: #503821)
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 08 Nov 2008 10:50:58 +0100
+
+linux-2.6 (2.6.26-9) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.26.6:
+    - mm owner: fix race between swapoff and exit
+    - rtc: fix kernel panic on second use of SIGIO nofitication
+    - fbcon: fix monochrome color value calculation
+    - ALSA: snd-powermac: HP detection for 1st iMac G3 SL
+    - ALSA: snd-powermac: mixers for PowerMac G4 AGP
+    - sparc64: Fix missing devices due to PCI bridge test in
+      of_create_pci_dev().
+    - sparc64: Fix disappearing PCI devices on e3500.
+    - sparc64: Fix OOPS in psycho_pcierr_intr_other().
+    - sparc64: Fix interrupt register calculations on Psycho and Sabre.
+    - sparc64: Fix PCI error interrupt registry on PSYCHO.
+    - udp: Fix rcv socket locking
+    - sctp: Fix oops when INIT-ACK indicates that peer doesn't support AUTH
+      (CVE-2008-4576)
+    - sctp: do not enable peer features if we can't do them.
+    - ipsec: Fix pskb_expand_head corruption in xfrm_state_check_space
+    - netlink: fix overrun in attribute iteration
+    - niu: panic on reset
+    - ipv6: Fix OOPS in ip6_dst_lookup_tail().
+    - XFRM,IPv6: initialize ip6_dst_blackhole_ops.kmem_cachep
+    - af_key: Free dumping state on socket close
+    - pcmcia: Fix broken abuse of dev->driver_data
+    - clockevents: remove WARN_ON which was used to gather information
+    - ntp: fix calculation of the next jiffie to trigger RTC sync
+    - x86: HPET: read back compare register before reading counter
+    - x86: HPET fix moronic 32/64bit thinko
+    - clockevents: broadcast fixup possible waiters
+    - HPET: make minimum reprogramming delta useful
+    - clockevents: prevent endless loop lockup
+    - clockevents: prevent multiple init/shutdown
+    - clockevents: enforce reprogram in oneshot setup
+    - clockevents: prevent endless loop in periodic broadcast handler
+    - clockevents: prevent clockevent event_handler ending up handler_noop
+    - x86: fix memmap=exactmap boot argument
+    - x86: add io delay quirk for Presario F700
+    - ACPI: Avoid bogus EC timeout when EC is in Polling mode
+    - x86: fix SMP alternatives: use mutex instead of spinlock, text_poke is
+      sleepable
+    - rtc: fix deadlock
+    - mm: dirty page tracking race fix
+    - x86-64: fix overlap of modules and fixmap areas
+    - x86: PAT proper tracking of set_memory_uc and friends
+    - x86: fix oprofile + hibernation badness
+    - x86: fdiv bug detection fix
+    - rt2x00: Use ieee80211_hw->workqueue again
+    - x86: Fix 27-rc crash on vsmp due to paravirt during module load
+    - sg: disable interrupts inside sg_copy_buffer
+    - ocfs2: Increment the reference count of an already-active stack.
+    - APIC routing fix
+    - sched: fix process time monotonicity
+    - block: submit_bh() inadvertently discards barrier flag on a sync write
+    - x64, fpu: fix possible FPU leakage in error conditions
+    - x86-64: Clean up save/restore_i387() usage
+    - KVM: SVM: fix guest global tlb flushes with NPT
+    - KVM: SVM: fix random segfaults with NPT enabled
+    - ALSA: remove unneeded power_mutex lock in snd_pcm_drop
+    - ALSA: fix locking in snd_pcm_open*() and snd_rawmidi_open*()
+    - ALSA: oxygen: fix distorted output on AK4396-based cards
+    - ALSA: hda - Fix model for Dell Inspiron 1525
+    - SCSI: qla2xxx: Defer enablement of RISC interrupts until ISP
+      initialization completes.
+    - USB: fix hcd interrupt disabling
+    - smb.h: do not include linux/time.h in userspace
+    - pxa2xx_spi: fix build breakage
+    - pxa2xx_spi: chipselect bugfixes
+    - pxa2xx_spi: dma bugfixes
+    - mm: mark the correct zone as full when scanning zonelists
+    - async_tx: fix the bug in async_tx_run_dependencies
+    - drivers/mmc/card/block.c: fix refcount leak in mmc_block_open()
+    - ixgbe: initialize interrupt throttle rate
+    - i2c-dev: Return correct error code on class_create() failure
+    - x86-32: AMD c1e force timer broadcast late
+  * [x86] Update patch to detect not properly announced cmos RTC devices.
+  * [xen] Overtake hvc console by default.
+
+  [ maximilian attems ]
+  * [openvz] ip: NULL pointer dereferrence in tcp_v(4|6)_send_ack
+    (closes: #500472)
+  * [openvz] unset NF_CONNTRACK_IPV6 for now until abi bump.
+
+  [ Stephen R. Marenka ]
+  * [m68k] add patches to fix atari ethernec per Michael Schmitz:
+    atari-ethernec-IRQF_SHARED.diff and atari-ethernec-fixes.diff.
+  * [m68k] add mac-esp-fix-for-quadras-with-two-esp-chips.diff to fix macs 
+    with dual scsi busses and a problem with xorg, per Finn Thain.
+  * [m68k] add atari-atari_keyb_init-operator-precedence.diff per
+    Michael Schmitz.
+  * [m68k] more mac patches, per Finn Thain.
+
+  [ Martin Michlmayr ]
+  * [arm/ixp4xx] Enable USB_ATM and USB_SPEEDTOUCH (closes: #502182).
+  * [arm/iop32x, arm/orion5x] Likewise.
+  * DNS-323: read MAC address from flash (Matthew Palmer).
+
+  [ dann frazier ]
+  * Restrict access to the DRM_I915_HWS_ADDR ioctl (CVE-2008-3831)
+  * Don't allow splicing to files opened with O_APPEND (CVE-2008-4554)
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 18 Oct 2008 12:14:22 +0200
+
+linux-2.6 (2.6.26-8) unstable; urgency=medium
+
+  [ dann frazier ]
+  * [x86] Fix broken LDT access in VMI (CVE-2008-4410)
+  * ata: Fix off-by-one-error that causes errors when reading a
+    block on the LBA28-LBA48 boundary
+  * [s390] prevent ptrace padding area read/write in 31-bit mode
+    (CVE-2008-1514)
+
+  [ Bastian Blank ]
+  * Fix generation of i386 Xen image information.
+  * [i386] Restrict the usage of long NOPs. (closes: #464962)
+  * Fix access to uninitialized user keyring. (closes: #500279)
+  * [x86] Fix detection of non-PNP RTC devices. (closes: #499230)
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 09 Oct 2008 12:07:21 +0200
+
+linux-2.6 (2.6.26-7) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * [xen] Add SuSE Xen patch. (closes: #495895)
+  * Only register notifiers in braille console if used, fixes Insert key.
+    (closes: #494374)
+  * Fix ACPI EC GPE storm detection. (closes: #494546)
+  * Disable useless support for ISP1760 USB host controller.
+    (closes: #498304)
+  * rt61pci: Add a sleep after firmware upload. (closes: #498828)
+
+  [ Stephen R. Marenka ]
+  * [m68k] Set CONFIG_ATARI_ETHERNEC=m for atari, since it only works
+    in modular form.
+  * [m68k] Enable CONFIG_ADB_PMU68K=y for mac.
+  * [m68k] Add atari-aranym-nf-wrappers.diff patch to fix atari LBD
+    problems, set CONFIG_LBD=y for atari.
+
+  [ Martin Michlmayr ]
+  * [arm/orion5x] Enable CONFIG_ATALK (requested by Ben Schwarz).
+  * [arm/versatile] Enable CONFIG_VFP. (closes: #499463)
+  * ath5k: Fix bad udelay calls on AR5210 code (Nick Kossifidis).
+  * [arm] No longer disable ATH5K.
+
+  [ dann frazier ]
+  * Add missing capability checks in sbni_ioctl (CVE-2008-3525)
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 01 Oct 2008 09:02:30 +0200
+
+linux-2.6 (2.6.26-6) unstable; urgency=low
+
+  [ maximilian attems ]
+  * [openvz] Enable checkpointing. (closes: #497292)
+
+  [ Bastian Blank ]
+  * Allow forced module loading again. (closes: #494144)
+  * Set IEEE 802.11 (wireless) regulatory domain default to EU.
+    (closes: #497971)
+  * [i386] Enable IDE ACPI support. Override ABI changes. (closes: #470528)
+  * [i386/686-bigmem] Promote to generic subarch. (closes: #476120)
+
+  [ Martin Michlmayr ]
+  * Fix dead 21041 ethernet after ifconfig down (Thomas Bogendoerfer).
+
+  [ dann frazier ]
+  * [hppa] Enable the FPU before using it, fixes booting on A500s
+    with our CONFIG_PRINTK_TIME=y setting. (closes: #499458)
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 24 Sep 2008 12:06:47 +0200
+
+linux-2.6 (2.6.26-5) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * Backport power-off method for Kurobox Pro.
+  * [arm/versatile] Really enable CONFIG_RTC_DRV_PL031 (closes: #484432).
+
+  [ Stephen R. Marenka ]
+  * [m68k] Set CONFIG_LBD=n for atari, since it conflicts with nfblock.
+
+  [ Bastian Blank ]
+  * Reenable SiS SATA support. (closes: #496603)
+  * [amd64,i386] Disable new-style SiS PATA support.
+  * Add stable release 2.6.26.4:
+    - sata_mv: don't issue two DMA commands concurrently
+    - KVM: MMU: Fix torn shadow pte
+    - x86: work around MTRR mask setting, v2
+    - nfsd: fix buffer overrun decoding NFSv4 acl (CVE-2008-3915)
+    - sunrpc: fix possible overrun on read of /proc/sys/sunrpc/transports
+      (CVE-2008-3911)
+    - r8169: balance pci_map / pci_unmap pair
+    - tg3: Fix firmware event timeouts
+    - crypto: authenc - Avoid using clobbered request pointer
+    - sparc64: Fix cmdline_memory_size handling bugs.
+    - sparc64: Fix overshoot in nid_range().
+    - ipsec: Fix deadlock in xfrm_state management. (closes: #497796)
+    - sctp: fix random memory dereference with SCTP_HMAC_IDENT option.
+    - sctp: correct bounds check in sctp_setsockopt_auth_key
+    - sch_prio: Fix nla_parse_nested_compat() regression
+    - sctp: add verification checks to SCTP_AUTH_KEY option
+    - sctp: fix potential panics in the SCTP-AUTH API.
+    - udp: Drop socket lock for encapsulated packets
+    - pkt_sched: Fix actions referencing
+    - pkt_sched: Fix return value corruption in HTB and TBF.
+    - netns: Add network namespace argument to rt6_fill_node() and
+      ipv6_dev_get_saddr()
+    - ipv6: Fix OOPS, ip -f inet6 route get fec0::1, linux-2.6.26,
+      ip6_route_output, rt6_fill_node+0x175 (CVE-2008-3686)
+    - AX.25: Fix sysctl registration if !CONFIG_AX25_DAMA_SLAVE
+    - mm: make setup_zone_migrate_reserve() aware of overlapping nodes
+    - 8250: improve workaround for UARTs that don't re-assert THRE correctly
+    - rtc_time_to_tm: fix signed/unsigned arithmetic
+    - drivers/char/random.c: fix a race which can lead to a bogus BUG()
+    - cifs: fix O_APPEND on directio mounts
+    - atl1: disable TSO by default
+    - forcedeth: fix checksum flag
+    - bio: fix bio_copy_kern() handling of bio->bv_len
+    - bio: fix __bio_copy_iov() handling of bio->bv_len
+    - ALSA: oxygen: prevent muting of nonexistent AC97 controls
+    - S390 dasd: fix data size for PSF/PRSSD command
+    - x86: fix "kernel won't boot on a Cyrix MediaGXm (Geode)"
+    - x86: work around MTRR mask setting
+    - USB: cdc-acm: don't unlock acm->mutex on error path
+    - binfmt_misc: fix false -ENOEXEC when coupled with other binary handlers
+    - fbdefio: add set_page_dirty handler to deferred IO FB
+    - eeepc-laptop: fix use after free
+    - PCI: fix reference leak in pci_get_dev_by_id()
+    - cramfs: fix named-pipe handling
+  * Override ABI changes.
+  * [hppa] Disable new-style RTC support. Override ABI changes.
+
+  [ maximilian attems ]
+  * openvz: Add upstream fixes up to 24cebf40278cb071ff8b. (closes: #497528)
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 10 Sep 2008 12:55:16 +0200
+
+linux-2.6 (2.6.26-4) unstable; urgency=low
+
+  [ maximilian attems ]
+  * x86: Reset ACPI_PROCFS_POWER for Lenny as buggy apps depend on it.
+    (closes: #495541)
+  * x86: ACPI: Fix thermal shutdowns
+  * openvz: Add upstream fixes up to 0f14912e3d2251aff. (closes: #494384)
+  * Add stable release 2.6.26.3:
+    - USB: fix interface unregistration logic
+    - usb-storage: unusual_devs entries for iRiver T10 and Datafab CF+SM reader
+    - usb-serial: don't release unregistered minors
+    - usb-storage: revert DMA-alignment change for Wireless USB
+    - usb-storage: automatically recognize bad residues
+    - USB: ftdi_sio: Add USB Product Id for ELV HS485
+    - qla2xxx: Set an rport's dev_loss_tmo value in a consistent manner.
+    - dccp: change L/R must have at least one byte in the dccpsf_val field
+      (CVE-2008-3276)
+    - KVM: Avoid instruction emulation when event delivery is pending
+    - cs5520: add enablebits checking
+    - acer-wmi: Fix wireless and bluetooth on early AMW0 v2 laptops
+    - USB: usb-storage: quirk around v1.11 firmware on Nikon D4
+    - radeonfb: fix accel engine hangs
+    - radeon: misc corrections
+    - sparc64: Fix global reg snapshotting on self-cpu.
+    - sparc64: Do not clobber %g7 in setcontext() trap.
+    - sparc64: Fix end-of-stack checking in save_stack_trace().
+    - sparc64: Fix recursion in stack overflow detection handling.
+    - sparc64: Make global reg dumping even more useful.
+    - sparc64: Implement IRQ stacks.
+    - sparc64: Handle stack trace attempts before irqstacks are setup.
+    - PCI: Limit VPD length for Broadcom 5708S
+    - ide: it821x in pass-through mode segfaults in 2.6.26-stable
+    - syncookies: Make sure ECN is disabled
+    - USB: ftdi_sio: add support for Luminance Stellaris Evaluation/Development
+      Kits
+    - i2c: Fix NULL pointer dereference in i2c_new_probed_device
+    - SCSI: hptiop: add more PCI device IDs
+    - SCSI: ses: fix VPD inquiry overrun
+    - SCSI: scsi_transport_spi: fix oops in revalidate
+    - CIFS: Fix compiler warning on 64-bit
+    - x86: fix spin_is_contended()
+    - matrox maven: fix a broken error path
+    - i2c: Let users select algorithm drivers manually again
+    - CIFS: properly account for new user= field in SPNEGO upcall string
+      allocation
+    - x86: fix setup code crashes on my old 486 box
+    - KVM: ia64: Fix irq disabling leak in error handling code
+    - mlock() fix return values
+    - rtl8187: Fix lockups due to concurrent access to config routine
+    - KVM: task switch: segment base is linear address
+    - KVM: task switch: use seg regs provided by subarch instead of reading
+      from GDT
+    - KVM: task switch: translate guest segment limit to virt-extension byte
+      granular field
+    - r8169: avoid thrashing PCI conf space above RTL_GIGA_MAC_VER_06
+    - sparc64: FUTEX_OP_ANDN fix
+    - posix-timers: do_schedule_next_timer: fix the setting of ->si_overrun
+    - posix-timers: fix posix_timer_event() vs dequeue_signal() race
+    - vt8623fb: fix kernel oops
+    - ide-cd: fix endianity for the error message in cdrom_read_capacity
+    - qla2xxx: Add dev_loss_tmo_callbk/terminate_rport_io callback support.
+    - random32: seeding improvement
+    - CIFS: mount of IPC$ breaks with iget patch
+    - CIFS: if get root inode fails during mount, cleanup tree connection
+    - crypto: padlock - fix VIA PadLock instruction usage with
+      irq_ts_save/restore()
+    - ipvs: Fix possible deadlock in estimator code
+    - SCSI: block: Fix miscalculation of sg_io timeout in CDROM_SEND_PACKET
+      handler.
+    - ALSA: asoc: restrict sample rate and size in Freescale MPC8610 sound
+      drivers
+    - ALSA: ASoC: fix SNDCTL_DSP_SYNC support in Freescale 8610 sound drivers
+    - USB: pl2023: Remove USB id (4348:5523) handled by ch341
+    - relay: fix "full buffer with exactly full last subbuffer" accounting
+      problem
+    - ipv6: Fix ip6_xmit to send fragments if ipfragok is true
+    - x86: amd opteron TOM2 mask val fix
+
+  [ dann frazier ]
+  * [ia64] Fix boot-time hang w/ PRINTK_TIME by ensuring that cpu0 can access
+    per-cpu vars in early boot
+  * delay calls to sched_clock() until after sched_clock_init() to prevent
+    inaccurate printk timings on ia64 and presumably other architectures
+
+  [ Ian Campbell ]
+  * [xen] import upstream fix to fb-defio driver used by Xen framebuffer.
+
+  [ Bastian Blank ]
+  * [powerpc] Enable proper RTC support. (closes: #484693)
+
+  [ Martin Michlmayr ]
+  * Add Marvell Orion fixes:
+    - sata_mv: add the Gen IIE flag to the SoC devices.
+    - sata_mv: don't avoid clearing interrupt status on SoC host adapters
+
+  [ dann frazier ]
+  * Fix overflow condition in sctp_setsockopt_auth_key (CVE-2008-3526)
+  * Fix panics that may occur if SCTP AUTH is disabled (CVE-2008-3792)
+  * [x86] Fix memory leak in the copy_user routine
+    (CVE-2008-0598, closes: #490910)
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 28 Aug 2008 08:46:42 +0200
+
+linux-2.6 (2.6.26-3) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Disable Emagic Audiowerk 2 soundcard support. The PCI IDs clashes with
+    many DVB cards.
+  * Update VServer patch to 2.3.0.35.
+  * [armel/versatile] Override ABI changes.
+  * [i386/686-bigmem] Add VServer image.
+
+  [ Aurelien Jarno ]
+  * [armel/versatile] Disable CONFIG_NO_HZ, CONFIG_HIGH_RES_TIMERS for
+    dynticks. (closes: #494842)
+
+  [ Martin Michlmayr ]
+  * Fix PCIe on the Kurobox Pro (Lennert Buytenhek).
+  * Fix regressions caused by the "use software GSO for SG+CSUM capable
+    netdevices" patch:
+    - loopback: Enable TSO (Herbert Xu)
+    - net: Preserve netfilter attributes in skb_gso_segment using
+      __copy_skb_header (Herbert Xu)
+
+  [ dann frazier ]
+  * [amd64] Fix typo in TOM2 mask value, preventing a hang on some opteron
+    systems. (closes: #494365)
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 18 Aug 2008 15:34:38 +0200
+
+linux-2.6 (2.6.26-2) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * [powerpc] Install arch/powerpc/lib/crtsavres.o into the headers, it is
+    used during module linking.
+  * Add stable release 2.6.26.1:
+    - Fix off-by-one error in iov_iter_advance()
+    - ath5k: don't enable MSI, we cannot handle it yet
+    - b43legacy: Release mutex in error handling code
+    - cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already
+    - VFS: increase pseudo-filesystem block size to PAGE_SIZE
+    - markers: fix markers read barrier for multiple probes
+    - tmpfs: fix kernel BUG in shmem_delete_inode
+    - mpc52xx_psc_spi: fix block transfer
+    - ixgbe: remove device ID for unsupported device
+    - UML - Fix boot crash
+    - eCryptfs: use page_alloc not kmalloc to get a page of memory
+    - x86: fix kernel_physical_mapping_init() for large x86 systems
+    - DVB: cx23885: SRAM changes for the 885 and 887 silicon parts
+    - DVB: cx23885: Reallocated the sram to avoid concurrent VIDB/C issues
+    - DVB: cx23885: DVB Transport cards using DVB port VIDB/TS1 did not stream
+    - DVB: cx23885: Ensure PAD_CTRL is always reset to a sensible default
+    - V4L: cx23885: Bugfix for concurrent use of /dev/video0 and /dev/video1
+    - V4L: saa7134: Copy tuner data earlier to avoid overwriting manual tuner type
+    - V4L: uvcvideo: Add support for Medion Akoya Mini E1210 integrated webcam
+    - V4L: uvcvideo: Make input device support optional
+    - V4L: uvcvideo: Don't free URB buffers on suspend
+    - V4L: uvcvideo: Use GFP_NOIO when allocating memory during resume
+    - V4L: uvcvideo: Fix a buffer overflow in format descriptor parsing
+    - DVB: dib0700: add support for Hauppauge Nova-TD Stick 52009
+    - V4L: cx18: Upgrade to newer firmware & update documentation
+    - ALSA: trident - pause s/pdif output
+    - myri10ge: do not use mgp->max_intr_slots before loading the firmware
+    - myri10ge: do not forget to setup the single slice pointers
+    - iop-adma: fix platform driver hotplug/coldplug
+    - sparc64: Do not define BIO_VMERGE_BOUNDARY.
+    - sparc64: Fix cpufreq notifier registry.
+    - sparc64: Fix lockdep issues in LDC protocol layer.
+    - tcp: Clear probes_out more aggressively in tcp_ack().
+    - ARM: fix fls() for 64-bit arguments
+    - vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section
+    - rtc-at91rm9200: avoid spurious irqs
+    - ide-cd: fix oops when using growisofs
+    - x86: fix crash due to missing debugctlmsr on AMD K6-3
+    - cpusets: fix wrong domain attr updates
+    - proc: fix /proc/*/pagemap some more
+    - Fix build on COMPAT platforms when CONFIG_EPOLL is disabled
+    - markers: fix duplicate modpost entry
+    - x86, suspend, acpi: enter Big Real Mode
+    - USB: fix usb serial pm counter decrement for disconnected interfaces
+    - x86 reboot quirks: add Dell Precision WorkStation T5400
+    - Fix typos from signal_32/64.h merge
+    - rcu: fix rcu_try_flip_waitack_needed() to prevent grace-period stall
+    - Patch Upstream: x86 ptrace: fix PTRACE_GETFPXREGS error
+    - KVM: MMU: Fix potential race setting upper shadow ptes on nonpae hosts
+    - KVM: MMU: nuke shadowed pgtable pages and ptes on memslot destruction
+    - KVM: x86 emulator: Fix HLT instruction
+    - KVM: VMX: Add ept_sync_context in flush_tlb
+    - KVM: mmu_shrink: kvm_mmu_zap_page requires slots_lock to be held
+    - KVM: SVM: fix suspend/resume support
+    - KVM: VMX: Fix a wrong usage of vmcs_config
+    - isofs: fix minor filesystem corruption
+    - quota: fix possible infinite loop in quota code
+    - hdlcdrv: Fix CRC calculation.
+    - ipv6: __KERNEL__ ifdef struct ipv6_devconf
+    - ipv6: use timer pending
+    - udplite: Protection against coverage value wrap-around
+    - pxamci: trivial fix of DMA alignment register bit clearing
+  * [sparc] Install asm-sparc headers again.
+  * Force RTC on by default and set clock on startup. Override ABI changes.
+  * [i386, amd64] Make the CMOS RTC support builtin. (closes: #493567)
+  * Add stable release 2.6.26.2:
+    - sound: ensure device number is valid in snd_seq_oss_synth_make_info
+    - Ath5k: kill tasklets on shutdown
+    - Ath5k: fix memory corruption
+    - vfs: fix lookup on deleted directory
+    - ALSA: emu10k1 - Fix inverted Analog/Digital mixer switch on Audigy2
+    - ALSA: hda - Add missing Thinkpad Z60m support
+    - ALSA: hda - Fix DMA position inaccuracy
+    - ALSA: hda - Fix wrong volumes in AD1988 auto-probe mode
+    - Add compat handler for PTRACE_GETSIGINFO
+    - Bluetooth: Signal user-space for HIDP and BNEP socket errors
+    - Input: i8042 - add Acer Aspire 1360 to nomux blacklist
+    - Input: i8042 - add Gericom Bellagio to nomux blacklist
+    - Input: i8042 - add Intel D845PESV to nopnp list
+    - jbd: fix race between free buffer and commit transaction
+    - NFS: Ensure we zap only the access and acl caches when setting new acls
+    - SCSI: ch: fix ch_remove oops
+    - linear: correct disk numbering error check
+    - netfilter: xt_time: fix time's time_mt()'s use of do_div()
+    - Kprobe smoke test lockdep warning
+    - Close race in md_probe
+    - x86: io delay - add checking for NULL early param
+    - x86: idle process - add checking for NULL early param
+    - SCSI: bsg: fix bsg_mutex hang with device removal
+    - netfilter: nf_nat_sip: c= is optional for session
+    - romfs_readpage: don't report errors for pages beyond i_size
+    - ftrace: remove unneeded documentation
+
+  [ Martin Michlmayr ]
+  * METH: fix MAC address setup (Thomas Bogendoerfer)
+  * Export the reset button of the QNAP TS-409.
+  * net: use software GSO for SG+CSUM capable netdevices (Lennert Buytenhek)
+
+  [ dann frazier ]
+  * device_create interface changed between 2.6.26 and 2.6.27; adjust hpilo
+    backport appropriately. Fixes a NULL pointer dereference in ilo_probe().
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 08 Aug 2008 08:09:00 +0200
+
+linux-2.6 (2.6.26-1) unstable; urgency=low
+
+  * New upstream release see http://kernelnewbies.org/Linux_2_6_26
+    - UDF 2.50 support. (closes: #480910)
+    - mmc: increase power up delay (closes: #481190)
+    - snd-hda-intel suspend troubles fixed. (closes: #469727, #481613, #480034)
+    - cifs QueryUnixPathInfo fix (closes: #480995)
+    - r8169 oops in r8169_get_mac_version (closes: #471892)
+    - netfilter headers cleanup (closes: #482331)
+    - iwlwifi led support (closes: #469095)
+    - ath5k associates on AR5213A (closes: #463785)
+    - T42 suspend fix (closes: #485873)
+    - cpuidle acpi driver: fix oops on AC<->DC (closes: #477201)
+    - opti621 ide fixes (closes: #475561)
+    - ssh connection hangs with mac80211 (closes: #486089)
+    - ocfs2: Allow uid/gid/perm changes of symlinks (closes: #479475)
+    - xircom_tulip_cb: oboslete driver removed (closes: #416900)
+    - r8169 properly detect link status (closes: #487586)
+    - iwl3945 connection + support fixes (closes: #481436, #482196)
+    - longrun cpufreq min freq fix (closes: #468149)
+    - emux midi synthesizer SOFT_PEDAL-release event (closes: #474312)
+    - vmemmap fixes to use smaller pages (closes: #483489)
+    - x86 freeze fixes (closes: #482100, #482074)
+    - xen boot failure fix (closes: #488284)
+    - gdb read floating-point and SSE registers (closes: #485375)
+    - USB_PERSIST is default on (closes: #489963)
+    - alsa snd-hda Dell Inspiron fix (closes: #490649)
+    - ipw2200: queue direct scans (closes: #487721)
+    - better gcc-4.3 support (closes: #492301)
+    - iwl3945 monitor mode. (closes: #482387)
+
+  [ maximilian attems ]
+  * topconfig set CRYPTO_CTS, SND_PCSP, SND_AW2, IWL4965_LEDS, IWL3945_LEDS,
+    RT2400PCI_LEDS, RT2500PCI_LEDS, RT61PCI_LEDS, RT2500USB_LEDS,
+    RT73USB_LEDS, NF_CT_PROTO_DCCP, BRIDGE_EBT_NFLOG, IWLWIFI_RFKILL,
+    USB_SERIAL_SPCP8X5, USB_STORAGE_CYPRESS_ATACB, DVB_ISL6405, DVB_AU8522,
+    VIDEO_EM28XX_DVB, VIDEO_CX18, VIDEO_AU0828, SOC_CAMERA_MT9M001,
+    SOC_CAMERA_MT9V022, DVB_TUNER_ITD1000, VIDEO_PVRUSB2_DVB, USB_C67X00_HCD,
+    USB_ISP1760_HCD, HTC_PASIC3, I2C_PCA_PLATFORM, TOUCHSCREEN_WM97XX,
+    JOYSTICK_ZHENHUA, SFC, ACCESSIBILITY, UIO_SMX, LOGIRUMBLEPAD2_FF,
+    A11Y_BRAILLE_CONSOLE, EDS_TRIGGER_DEFAULT_ON, VIDEO_ALLOW_V4L1, ATA_ACPI,
+    SATA_PMP, ATA_SFF, USB_SERIAL_MOTOROLA, USB_WDM, MAC80211_MESH,
+    IPV6_MROUTE, IPV6_PIMSM_V2, MTD_AR7_PARTS, SENSORS_IBMAEM, PATA_SCH,
+    CGROUP_DEVICE, USB_ISIGHTFW, HW_RANDOM_VIRTIO, RTC_DRV_FM3130,
+    USB_VIDEO_CLASS, CIFS_DFS_UPCALL.
+  * [amd64, i386]: KVM_CLOCK, KVM_GUEST, ISCSI_IBFT_FIND, ISCSI_IBFT, THERMAL,
+    EEEPC_LAPTOP, FB_N411, THERMAL_HWMON.
+  * [amd64]: Enable SCSI_DPT_I2O as 64 bit now.
+  * Reenable USB_SERIAL_EDGEPORT, USB_SERIAL_EDGEPORT_TI. (closes: #480195)
+  * Enable TCP_MD5SIG for BGP sessions. (closes: #443742)
+  * Add recognised alsa cards to bug report.
+  * topconfig: Enable HYSDN, no longer broken on smp.
+  * Add request_firmware patch for keyspan. (closes: #448900)
+  * [x86]: Enable dma engine. (closes: #473331)
+  * [ppc64]: Enable IBMEBUS and EHEA. (closes: #484888)
+  * topconfig: Enable PROFILING across all flavours. (closes: #484885)
+  * 486: enable OLPC support thanks Andres Salomon for merge. 
+    Kconfig variable patch by Robert Millan (closes: #485063).
+  * Add request_firmware patch for ip2.
+  * Add request_firmware patch for acenic. (closes: #284221)
+  * [x86, ia64]: Set HPET_RTC_IRQ. (closes: #479709, #476970)
+  * [ppc]: Set SND_VIRMIDI. (closes: #290090)
+  * Fallback for userspace compatibility to old IEEE 1394 FireWire stack.
+    (closes: #451367, #475295, #478419)
+  * [x86]: Enable modular FB_UVESA. (closes: #473180)
+  * JFFS2 enable summary and compressor support. (closes: #488242)
+  * Add OLPC sdhci quirks. Thanks Andres Salomon <dilinger@debian.org>
+    (closes: #485192)
+  * [ppc]: Enable RTC_DRV_PPC. (closes: #484693) Thanks for the patch to
+    Geoff Levand <geoffrey.levand@am.sony.com>.
+  * Enable BLK_DEV_BSG for SG v4 support.
+  * [amd64] Enable default disabled memtest boot param.
+  * topconfig: Enable PATA_SIS instead of SATA_SIS. (closes: #485609)
+  * Add OpenVZ countainer flavour for amd64, i386. (closes: #392015)
+  * atl1e driver for Atheros(R) L1e Fast Ethernet. (closes: #492029)
+  * [ALSA] hda - Add ICH9 controller support (8086:2911)
+  * [ALSA] hda - support intel DG33 motherboards
+  * HP iLO driver
+  * Input: i8042 - add Arima-Rioworks HDAMB board to noloop list
+    (closes: #489190) thanks Guillaume Morin <guillaume@morinfr.org>
+
+  [ Martin Michlmayr ]
+  * [arm/orion5x] Update the config to reflect upstream renaming this
+    subarch.
+  * [arm/orion5x] Add some patches from Marvell's Orion tree:
+    - Feroceon: speed up flushing of the entire cache
+    - support for 5281 D0 stepping
+    - cache align destination pointer when copying memory for some processors
+    - cache align memset and memzero
+    - DMA engine driver for Marvell XOR engine
+    - Orion hardware watchdog support
+  * [arm/orion5x] Enable NETCONSOLE.
+  * [arm/orion5x] Disable more SCSI drivers.
+  * [arm/ixp4xx] Disable most ATA and more SCSI and network drivers.
+  * [arm/versatile] Enable CONFIG_RTC_DRV_PL031 (closes: #484432).
+  * [arm/iop32x, arm/ixp4xx, arm/versatile] Enable ARM_THUMB (closes: #484524).
+  * [arm/iop32x] Add LED driver for Thecus N2100 (Riku Voipio).
+  * [mips/r5k-ip32] Enable USB.
+  * [arm/orion5x, arm/iop32x, arm/ixp4xx, mipsel/r5k-cobalt] Enable HAMRADIO
+    on the request of Heinz Janssen.
+  * [arm/orion5x] Add support for QNAP TS-409 and HP mv2120; thanks
+    Sylver Bruneau.
+  * [mips] Add patches from Thomas Bogendoerfer:
+    - gbefb: fix cmap FIFO timeout (closes: #487257)
+    - IP32: Enable FAST-20 for onboard scsi
+    - IP32: SGI O2 sound driver
+  * [arm/ixp4xx] Add support for Freecom FSG-3 (Rod Whitby).
+  * [arm/ixp4xx] Enable CONFIG_MACH_DSMG600.
+  * [arm/iop32x] Unset NET_DMA since it actually leads to worse network
+    performance.
+  * [arm/orion5x] Fix a boot crash on the Kurobox Pro.
+  * [arm/orion5x] use better key codes for the TS-209/TS-409 buttons
+  * [arm/orion5x] export red SATA lights on TS-409, fix SATA presence/activity
+  * [arm] Enable KEXEC (closes: #492268).
+  * [arm/orion5x] Enable USB_PRINTER, requested by Mike Arthur.
+  * [arm/orion5x] Enable binfmt aout, x25, wireless and ATM.
+  * [arm/iop32x, arm/orion5x] Enable USB_SISUSBVGA.
+  * [arm] xfs: pack some shortform dir2 structures for the ARM old ABI
+    architecture (closes: #414932).
+
+  [ Ian Campbell ]
+  * Readme.build updated on how to generate orig tarballs.
+  * Forward port vmlinuz-target.patch.
+  * Enable Xen save/restore and memory ballooning for Xen enabled kernels.
+
+  [ Bastian Blank ]
+  * [powerpc/powerpc-miboot] Disable. (closes: #481358)
+  * [powerpc/powerpc64] Support IBM Cell based plattforms and PS3.
+    (closes: #462529)
+  * [s390] Synchronize block device, network bridge, network scheduler and CRC
+    support.
+  * [s390] Enable support for PCI-attached cryptographic adapters.
+  * Use control group as base for group CPU scheduler. This reenabled
+    traditional nice behaviour. (closes: #489223)
+  * Bump yaird dependencies to at least 0.0.13.
+  * Reenable SECCOMP. There is no longer additional overhead.
+    (closes: #474648)
+  * Export symbol required for MOL again. (closes: #460667)
+  * [powerpc/powerpc64] Fix console selection in LPAR environment.
+    (closes: #492703)
+  * Fix several userspace compatibility problems.
+
+  [ Christian T. Steigies ]
+  * [m68k] enable SERIAL_CONSOLE for amiga and atari
+
+  [ Thiemo Seufer ]
+  * [mips] Fix logic bug in atomic_sub_if_positive.
+
+  [ Stephen R. Marenka ]
+  * [m68k] Update pending m68k patches.
+  * [m68k] Enable nfcon and nfblock for atari.
+  * [m68k] Change compiler to default.
+
+  [ Aurelien Jarno ]
+  * [arm/versatile] Switch scsi/ext3/smc91x to modules now that we have proper
+    d-i support. Remove options defined in toplevel config file.
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 30 Jul 2008 10:17:29 +0200
+
+linux-2.6 (2.6.25-7) unstable; urgency=high
+
+  * Add stable release 2.6.25.10:
+    - TTY: fix for tty operations bugs (CVE-2008-2812)
+    - sched: fix cpu hotplug
+    - IB/mthca: Clear ICM pages before handing to FW
+    - DRM: enable bus mastering on i915 at resume time
+    - x86: shift bits the right way in native_read_tscp
+    - x86_64 ptrace: fix sys32_ptrace task_struct leak (CVE-2008-3077)
+    - ptrace GET/SET FPXREGS broken
+    - futexes: fix fault handling in futex_lock_pi
+    - x86: fix cpu hotplug crash
+  * Add stable release 2.6.25.11:
+    - x86: fix ldt limit for 64 bit
+
+ -- maximilian attems <maks@debian.org>  Mon, 14 Jul 2008 10:58:14 +0200
+
+linux-2.6 (2.6.25-6) unstable; urgency=high
+
+  [ maximilian attems ]
+  * Add stable release 2.6.25.7:
+    - double-free of inode on alloc_file() failure exit in create_write_pipe()
+    - m68k: Add ext2_find_{first,next}_bit() for ext4
+    - bluetooth: fix locking bug in the rfcomm socket cleanup handling
+    - serial: fix enable_irq_wake/disable_irq_wake imbalance in serial_core.c
+    - bttv: Fix a deadlock in the bttv driver (closes: #487594)
+    - forcedeth: msi interrupts
+    - CPUFREQ: Fix format string bug.
+    - mmc: wbsd: initialize tasklets before requesting interrupt
+    - ecryptfs: fix missed mutex_unlock
+    - mac80211: send association event on IBSS create
+    - bluetooth: rfcomm_dev_state_change deadlock fix
+    - sunhv: Fix locking in non-paged I/O case.
+    - cassini: Only use chip checksum for ipv4 packets.
+    - ipwireless: Fix blocked sending
+    - net: Fix call to ->change_rx_flags(dev, IFF_MULTICAST) in
+      dev_change_flags()
+    - fbdev: export symbol fb_mode_option
+    - ipsec: Use the correct ip_local_out function
+    - tcp: fix skb vs fack_count out-of-sync condition
+    - tcp FRTO: Fix fallback to conventional recovery
+    - tcp FRTO: SACK variant is errorneously used with NewReno
+    - tcp FRTO: work-around inorder receivers
+    - tcp: Fix inconsistency source (CA_Open only when !tcp_left_out(tp))
+    - l2tp: avoid skb truesize bug if headroom is increased
+    - l2tp: Fix possible WARN_ON from socket code when UDP socket is closed
+    - l2tp: Fix possible oops if transmitting or receiving when tunnel goes down
+    - ax25: Fix NULL pointer dereference and lockup.
+    - sound: emu10k1 - fix system hang with Audigy2 ZS Notebook PCMCIA card
+    - tcp: Allow send-limited cwnd to grow up to max_burst when gso disabled
+    - tcp: Limit cwnd growth when deferring for GSO
+    - af_key: Fix selector family initialization.
+    - hgafb: resource management fix
+    - cifs: fix oops on mount when CONFIG_CIFS_DFS_UPCALL is enabled
+    - b43: Fix controller restart crash
+    - ssb: Fix context assertion in ssb_pcicore_dev_irqvecs_enable
+    - eCryptfs: protect crypt_stat->flags in ecryptfs_open()
+    - cciss: add new hardware support
+    - ecryptfs: add missing lock around notify_change
+    - ecryptfs: clean up (un)lock_parent
+    - Add 'rd' alias to new brd ramdisk driver
+    - net_sched: cls_api: fix return value for non-existant classifiers
+    - vlan: Correctly handle device notifications for layered VLAN devices
+    - IB/umem: Avoid sign problems when demoting npages to integer
+    - x86: fix recursive dependencies
+    - can: Fix copy_from_user() results interpretation
+    - Kconfig: introduce ARCH_DEFCONFIG to DEFCONFIG_LIST
+    - tcp: TCP connection times out if ICMP frag needed is delayed
+    - ALSA: hda - Fix resume of auto-config mode with Realtek codecs
+    - netlink: Fix nla_parse_nested_compat() to call nla_parse() directly
+  * Add stable release 2.6.25.9:
+    - Add return value to reserve_bootmem_node()
+    - x86: use BOOTMEM_EXCLUSIVE on 32-bit
+    - sctp: Make sure N * sizeof(union sctp_addr) does not overflow.
+    - hwmon: (lm85) Fix function RANGE_TO_REG()
+    - hwmon: (adt7473) Initialize max_duty_at_overheat before use
+    - x86: set PAE PHYSICAL_MASK_SHIFT to 44 bits.
+    - Reinstate ZERO_PAGE optimization in 'get_user_pages()' and fix XIP
+    - watchdog: hpwdt: fix use of inline assembly
+    - Fix ZERO_PAGE breakage with vmware
+    - atl1: relax eeprom mac address error check
+
+  [ Martin Michlmayr]
+  * [arm/orion5x] Enable INPUT_EVDEV and KEYBOARD_GPIO.
+
+  [ Steve Langasek ]
+  * Enable CONFIG_CIFS_EXPERIMENTAL and CONFIG_CIFS_UPCALL, required for
+    CIFS mounts to be able to use Kerberos authentication.  Closes: #480663.
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.25.8:
+    - x86: disable mwait for AMD family 10H/11H CPUs
+    - x86: remove mwait capability C-state check
+    - nf_conntrack_h323: fix memory leak in module initialization error path
+    - nf_conntrack_h323: fix module unload crash
+    - nf_conntrack: fix ctnetlink related crash in nf_nat_setup_info()
+    - SCSI: sr: fix corrupt CD data after media change and delay
+    - ACPICA: Ignore ACPI table signature for Load() operator
+    - scsi_host regression: fix scsi host leak
+    - b43: Fix possible NULL pointer dereference in DMA code
+    - b43: Fix noise calculation WARN_ON
+    - virtio_net: Fix skb->csum_start computation
+    - opti621: remove DMA support
+    - opti621: disable read prefetch
+    - Fix tty speed handling on 8250
+    - x86-64: Fix "bytes left to copy" return value for copy_from_user()
+   * Fix alpha build due too inconsistent kallsyms data.
+
+ -- maximilian attems <maks@debian.org>  Fri, 27 Jun 2008 00:33:53 +0200
+
+linux-2.6 (2.6.25-5) unstable; urgency=low
+
+  [ maximilian attems ]
+  [ Bastian Blank ]
+  * Reenable VServer images.
+
+  [ maximilian attems ]
+  * Add stable release 2.6.25.5:
+    - asn1: additional sanity checking during BER decoding (CVE-2008-1673)
+  * Add stable release 2.6.25.6:
+    - atl1: fix 4G memory corruption bug
+    - capabilities: remain source compatible with 32-bit raw legacy capability
+      support.
+    - usb-serial: Use ftdi_sio driver for RATOC REX-USB60F
+    - cpufreq: fix null object access on Transmeta CPU
+    - Smack: fuse mount hang fix
+    - cgroups: remove node_ prefix_from ns subsystem
+    - XFS: Fix memory corruption with small buffer reads
+    - x86: don't read maxlvt before checking if APIC is mapped
+    - USB: option: add new Dell 5520 HSDPA variant
+    - md: do not compute parity unless it is on a failed drive
+    - md: fix uninitialized use of mddev->recovery_wait
+    - md: fix prexor vs sync_request race
+    - HID: split Numlock emulation quirk from HID_QUIRK_APPLE_HAS_FN.
+    - USB: do not handle device 1410:5010 in 'option' driver
+    - USB: unusual_devs: Add support for GI 0401 SD-Card interface
+    - USB: add Telstra NextG CDMA id to option driver
+    - USB: fix build errors in ohci-omap.c and ohci-sm501.c
+    - USB: add TELIT HDSPA UC864-E modem to option driver
+    - memory_hotplug: always initialize pageblock bitmap
+    - x86: fix bad pmd ffff810000207xxx(9090909090909090)
+    - USB: add Zoom Telephonics Model 3095F V.92 USB Mini External modem to
+      cdc-acm
+    - x86: prevent PGE flush from interruption/preemption
+    - IPoIB: Test for NULL broadcast object in ipiob_mcast_join_finish()
+    - i386: fix asm constraint in do_IRQ()
+    - i2c-nforce2: Disable the second SMBus channel on the DFI Lanparty NF4
+      Expert
+    - i2c/max6875: Really prevent 24RF08 corruption
+    - brk: make sys_brk() honor COMPAT_BRK when computing lower bound
+    - Revert "PCI: remove default PCI expansion ROM memory allocation"
+    - PS3: gelic: fix memory leak
+    - eCryptfs: remove unnecessary page decrypt call
+    - netfilter: nf_conntrack_expect: fix error path unwind in
+      nf_conntrack_expect_init()
+    - netfilter: xt_connlimit: fix accouning when receive RST packet in
+      ESTABLISHED state
+    - netfilter: nf_conntrack_ipv6: fix inconsistent lock state in
+      nf_ct_frag6_gather()
+    - POWERPC Bolt in SLB entry for kernel stack on secondary cpus
+    - netfilter: xt_iprange: module aliases for xt_iprange
+    - x86: user_regset_view table fix for ia32 on 64-bit
+    - x86: if we cannot calibrate the TSC, we panic.
+    - CIFS: Fix UNC path prefix on QueryUnixPathInfo to have correct slash
+    - x86, fpu: fix CONFIG_PREEMPT=y corruption of application's FPU stack
+    - libata: force hardreset if link is in powersave mode
+    - x86: fix setup of cyc2ns in tsc_64.c
+    - x86: distangle user disabled TSC from unstable
+    - x86: disable TSC for sched_clock() when calibration failed
+    - pagemap: fix bug in add_to_pagemap, require aligned-length reads of
+      /proc/pid/pagemap
+    - ext3/4: fix uninitialized bs in ext3/4_xattr_set_handle()
+    - proc: calculate the correct /proc/<pid> link count
+    - CPUFREQ: Make acpi-cpufreq more robust against BIOS freq changes behind
+      our back.
+    - USB: remove PICDEM FS USB demo (04d8:000c) device from ldusb
+    - types.h: don't expose struct ustat to userspace
+
+  [ Bastian Blank ]
+  * Ignore ABI change in internal XFS symbol.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 12 Jun 2008 08:47:11 +0200
+
+linux-2.6 (2.6.25-4) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Fix arm Kconfig logic disabling random drivers. (closes: #481410)
+  * Add stable release 2.6.25.4:
+    - OHCI: fix regression upon awakening from hibernation
+    - V4L/DVB (7473): PATCH for various Dibcom based devices
+    - {nfnetlink, ip, ip6}_queue: fix skb_over_panic when enlarging packets
+    - dccp: return -EINVAL on invalid feature length
+    - md: fix raid5 'repair' operations
+    - sparc: Fix SA_ONSTACK signal handling.
+    - sparc: Fix fork/clone/vfork system call restart.
+    - sparc64: Stop creating dummy root PCI host controller devices.
+    - sparc64: Fix wedged irq regression.
+    - SPARC64: Fix args to 64-bit sys_semctl() via sys_ipc().
+    - serial: Fix sparc driver name strings.
+    - sparc: Fix ptrace() detach.
+    - sparc: Fix mremap address range validation.
+    - sparc: Fix debugger syscall restart interactions.
+    - sparc32: Don't twiddle PT_DTRACE in exec.
+    - r8169: fix oops in r8169_get_mac_version
+    - SCSI: aha152x: Fix oops on module removal
+    - SCSI: aha152x: fix init suspiciously returned 1, it should follow
+      0/-E convention
+    - sch_htb: remove from event queue in htb_parent_to_leaf()
+    - i2c-piix4: Blacklist two mainboards
+    - SCSI: qla1280: Fix queue depth problem
+    - ipvs: fix oops in backup for fwmark conn templates
+    - USB: airprime: unlock mutex instead of trying to lock it again
+    - rtc: rtc_time_to_tm: use unsigned arithmetic
+    - SCSI: libiscsi regression in 2.6.25: fix nop timer handling
+    - SCSI: libiscsi regression in 2.6.25: fix setting of recv timer
+    - can: Fix can_send() handling on dev_queue_xmit() failures
+    - macvlan: Fix memleak on device removal/crash on module removal
+    - nf_conntrack: padding breaks conntrack hash on ARM
+    - sparc: sunzilog uart order
+    - r8169: fix past rtl_chip_info array size for unknown chipsets
+    - x86: use defconfigs from x86/configs/*
+    - vt: fix canonical input in UTF-8 mode
+    - ata_piix: verify SIDPR access before enabling it
+    - serial: access after NULL check in uart_flush_buffer()
+    - x86: sysfs cpu?/topology is empty in 2.6.25 (32-bit Intel system)
+    - XFRM: AUDIT: Fix flowlabel text format ambibuity.
+  * Update userspace merged HZ alpha fixed version.
+  * Backport netfilter: Move linux/types.h inclusions outside of #ifdef
+    __KERNEL__. (closes: #479899)
+  * types.h: don't expose struct ustat to userspace. (closes: #429064)
+ 
+  [ Bastian Blank ]
+  * Fix ABI changes from: ipvs: fix oops in backup for fwmark conn templates
+
+ -- maximilian attems <maks@debian.org>  Tue, 27 May 2008 11:46:11 +0200
+
+linux-2.6 (2.6.25-3) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.25.3:
+    - sit: Add missing kfree_skb() on pskb_may_pull() failure.
+    - sparc: Fix mmap VA span checking.
+    - CRYPTO: eseqiv: Fix off-by-one encryption
+    - CRYPTO: authenc: Fix async crypto crash in crypto_authenc_genicv()
+    - CRYPTO: cryptd: Correct kzalloc error test
+    - CRYPTO: api: Fix scatterwalk_sg_chain
+    - x86 PCI: call dmi_check_pciprobe()
+    - b43: Fix some TX/RX locking issues
+    - kprobes/arm: fix decoding of arithmetic immediate instructions
+    - kprobes/arm: fix cache flush address for instruction stub
+    - b43: Fix dual-PHY devices
+    - POWERPC: mpc5200: Fix unterminated of_device_id table
+    - reiserfs: Unpack tails on quota files
+    - sched: fix hrtick_start_fair and CPU-Hotplug
+    - vfs: fix permission checking in sys_utimensat
+    - md: fix use after free when removing rdev via sysfs
+    - mm: fix usemap initialization
+    - 2.6.25 regression: powertop says 120K wakeups/sec
+
+  [ maximilian attems ]
+  * Redisable old dup prism54 driver.
+  * Reenable accidentaly disabled SIS190. (closes: #478773)
+  * Add lmkl patch to unbreak HZ userspace aka perl5.10 build fix.
+    (closes: #480130)
+
+  [ Martin Michlmayr ]
+  * [armel] Disable some SCSI drives (that are disabled on arm) so the
+    ramdisk will fit in flash on NSLU2 (closes: #480310).
+
+ -- maximilian attems <maks@debian.org>  Wed, 14 May 2008 11:16:56 +0200
+
+linux-2.6 (2.6.25-2) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add stable release 2.6.25.1:
+    - Fix dnotify/close race (CVE-2008-1375)
+    - V4L: Fix VIDIOCGAP corruption in ivtv
+    - USB: log an error message when USB enumeration fails
+    - USB: OHCI: fix bug in controller resume
+    - SCSI: qla2xxx: Correct regression in relogin code.
+    - rose: Socket lock was not released before returning to user space
+    - x86, pci: fix off-by-one errors in some pirq warnings
+    - hrtimer: timeout too long when using HRTIMER_CB_SOFTIRQ
+    - RDMA/nes: Fix adapter reset after PXE boot
+    - rtc-pcf8583 build fix
+    - JFFS2: Fix free space leak with in-band cleanmarkers
+    - SELinux: no BUG_ON(!ss_initialized) in selinux_clone_mnt_opts
+    - tehuti: check register size (CVE-2008-1675)
+    - IPSEC: Fix catch-22 with algorithm IDs above 31
+    - alpha: unbreak OSF/1 (a.out) binaries
+    - tehuti: move ioctl perm check closer to function start (CVE-2008-1675)
+    - aio: io_getevents() should return if io_destroy() is invoked
+    - mm: fix possible off-by-one in walk_pte_range()
+    - TCP: Increase the max_burst threshold from 3 to tp->reordering.
+    - ssb: Fix all-ones boardflags
+    - cgroup: fix a race condition in manipulating tsk->cg_list
+    - drivers/net/tehuti: use proper capability check for raw IO access
+    - tg3: 5701 DMA corruption fix
+    - V4L: tea5761: bugzilla #10462: tea5761 autodetection code were broken
+    - b43: Workaround invalid bluetooth settings
+    - b43: Add more btcoexist workarounds
+    - b43: Workaround DMA quirks
+    - dm snapshot: fix chunksize sector conversion
+    - x86: Fix 32-bit x86 MSI-X allocation leakage
+    - RTNETLINK: Fix bogus ASSERT_RTNL warning
+    - net: Fix wrong interpretation of some copy_to_user() results.
+    - dz: test after postfix decrement fails in dz_console_putchar()
+    - RDMA/nes: Free IRQ before killing tasklet
+    - S2io: Fix memory leak during free_tx_buffers
+    - S2io: Version update for memory leak fix during free_tx_buffers
+    - USB: Add HP hs2300 Broadband Wireless Module to sierra.c
+    - V4L: cx88: enable radio GPIO correctly
+    - hrtimer: raise softirq unlocked to avoid circular lock dependency
+    - tcp: tcp_probe buffer overflow and incorrect return value
+  * [ide] Add upstream piix patch for asus eee pc. (closes: #479217)
+
+  [ Christian T. Steigies ]
+  * [m68k] Add patches for 2.6.25.
+  * [m68k] Disable EXT4DEV_FS for now.
+  * [m68k] Enable SCSI_MAC_ESP for mac.
+ 
+  [ Ian Campbell ]
+  * [x86]: Enable Xen guest support in all i386 flavours.
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.25.2:
+    - fix SMP ordering hole in fcntl_setlk() (CVE-2008-1669)
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 08 May 2008 14:46:48 +0200
+
+linux-2.6 (2.6.25-1) unstable; urgency=low
+
+  * New upstream release (closes: #456799, #468440, #475161, #475134, #475441)
+    - Add oabi shim for fstatat64 (closes: #462677)
+
+  [ maximilian attems ]
+  * topconfig set NOZOMI, CRYPTO_SEQIV, CRYPTO_CTR, CRYPTO_GCM, CRYPTO_CCM,
+    CRYPTO_SALSA20, CRYPTO_LZO, CRYPTO_DEV_HIFN_795X, USB_SI470X,
+    USB_STKWEBCAM, VIDEO_PVRUSB2_ONAIR_USB2, VIDEO_PVRUSB2_ONAIR_CREATOR,
+    VIDEO_EM28XX_ALSA, CRYPTO_DEV_HIFN_795X_RNG, PCF8575, TPS65010, RTL8180,
+    ENC28J60, R6040, CAN, NETFILTER_XT_MATCH_OWNER, MAC80211_RC_DEFAULT_PI,
+    NETFILTER_XT_TARGET_RATEEST, NETFILTER_XT_TARGET_TCPOPTSTRIP,
+    NETFILTER_XT_MATCH_IPRANGE, NETFILTER_XT_MATCH_RATEEST, SND_OXYGEN,
+    SND_HIFIER, SND_VIRTUOSO, USB_NET_RNDIS_WLAN, USB_ANNOUNCE_NEW_DEVICES,
+    USB_SERIAL_IUU, NET_CLS_FLOW, INFINIBAND_NES, RTC_DRV_R9701,
+    RTC_DRV_DS1511, MEMSTICK, SENSORS_W83L786NG, SENSORS_ADS7828, IPWIRELESS,
+    RISCOM8, IGB, UTS_NS, IPC_NS, IPV6_ROUTE_INFO, ENCLOSURE_SERVICES,
+    SCSI_ENCLOSURE, SENSORS_ADT7473, SCSI_MVSAS, REALTEK_PHY, RTC_DRV_S35390A,
+    MEMSTICK_JMICRON_38X, IWL4965_HT.
+  * [amd64] Enable CRYPTO_SALSA20_X86_64, EDAC_I3000, EFI, EFI_VARS, I8K,
+    PARAVIRT_GUEST, PARAVIRT, VIRTIO_PCI, VIRTIO_BALLOON, SPARSEMEM_VMEMMAP.
+  * [amd64, i386]: Enable LEDS_CLEVO_MAIL, INPUT_APANEL, ACER_WMI,
+    THINKPAD_ACPI_HOTKEY_POLL, HP_WATCHDOG, THINKPAD_ACPI_VIDEO,
+    VIRTION_CONSOLE, ACPI_WMI, IO_DELAY_0X80.
+  * topconfig disable PARPORT_PC_FIFO due to instabilities.
+    (closes: #366165, #388309, #406056, #407816, #453911)
+  * [amd64, i386]: Enable SONYPI_COMPAT for better sony laptop support.
+  * topconfig: Enable HID_FF for some HID devices. (closes: #441348)
+  * topconfig: Enable IPV6_ROUTER_PREF for multi-homed net. (closes: #449247)
+  * topconfig: Set UTF8 as default encoding. (closes: #417324)
+  * Tighten yaird dependency. (closes: #403171)
+  * Configs general cleanup, centralize USB_NET, disable IRDA_DEBUG.
+  * postinst: Nuke confusing postinst message. (closes: #465512)
+  * [sparc]: Enable SCSI_SCAN_ASYNC.
+  * [i386]: Enable TC1100_WMI, SND_SIS7019, CRYPTO_SALSA20_586.
+  * topconfig: Centralize old IEEE80211 stack options. (closes: #470558)
+  * control.source.in: Newer standard version without changes.
+  * copyright: adapt to latest lintian recommendation.
+  * input: Add 4 additional exports for modular speakup and braille support.
+  * firewire: Add firewire-git.patch for latest firewire tree features.
+  * 686: Set USB_PERSIST for eee pc suspend support. (closes: #468213)
+  * topconfig disable PATA_SIS as sis5513 enabled. (closes: #475525)
+  * [xen]: Support direct load of bzImage under Xen. (closes: #474509)
+    Thanks Ian Campbell <ijc@hellion.org.uk> for patches.
+  * [xen]: Module autoprobing support for frontend drivers.
+  * [arm]: Don't ovverride topconfig SENSORS_W83792D setting.
+    (closes: #477745)
+
+  [ Martin Michlmayr ]
+  * [arm/armel] Add a kernel for Orion based devices, such as the QNAP
+    TS-109/TS-209.
+  * [mips(el)/sb1*] Enable SB1250_MAC (thanks Thomas Bogendoerfer).
+  * [mipsel/r5k-cobalt] Enable DUMMY_CONSOLE since this might
+    fix the debian-installer startup hang on Qube 2700.
+  * [arm/footbridge] Disable KEYS and SECURITY for smaller d-i image.
+  * [arm/footbridge] Build NFS as a module to make the image smaller.
+  * [mips/r5k-ip32] Don't build in NFS.
+  * [mips/r5k-ip32] Use the generic config options for NFS, which will
+    enable NFSv4. (closes: #471007)
+  * [mips/r5k-ip32] Enable R8169, requested by Giuseppe Sacco.
+  * [arm/iop32x] Enable MACH_EM7210. (closes: #473136)
+  * [arm/orion] Add patch to set the MAC address on QNAP TS-109/TS-209
+    (Lennert Buytenhek).
+  * [arm/orion] Add support for Buffalo Linkstation Pro/Live (Byron Bradley).
+  * [arm/orion] Fix hang when Write Allocate is enabled (Lennert Buytenhek).
+  * [arm/orion] Add support for QNAP TS-409 (Sylver Bruneau).
+  * [arm/orion] Add preliminary support for HP mv2120.
+
+  [ Daniel Baumann ]
+  * Added patch from unionfs upstream to export release_open_intent symbol.
+
+  [ Gordon Farquharson ]
+  * [arm/ixp4xx] Use GPIO LED driver as opposed to ixp4xx LED driver.
+  * [arm/ixp4xx] Fix ixp4xx-beeper module so that udev loads it
+    automatically.
+  * [arm/iop32x] Enable support for the GLAN Tank flash chip (M29W400DB).
+  * [arm/iop32x] Do not build the ARTOP PATA driver (PATA_ARTOP).
+  * [arm/iop32x] Register the F75375 device in the GLAN Tank platform code.
+  * Prevent physmap from calling request_module() too early.
+  * [arm/ixp4xx] Fix used_sram_bitmap corruption in qmgr_release_queue().
+
+  [ Aurelien Jarno ]
+  * [mips/mipsel] Enable CONFIG_NO_HZ, CONFIG_HIGH_RES_TIMERS for dynticks
+    and true high-resolution timers on 4kc-malta and 5kc-malta flavours.
+  * [i386, amd64] Set modular VIRTIO, VIRTIO_RING, VIRTIO_BLK, VIRTIO_NET.
+
+  [ Bastian Blank ]
+  * Remove binary only firmwares for:
+    - Broadcom NetXtremeII 10Gb support
+  * Disable now broken drivers:
+    - Broadcom NetXtremeII 10Gb support
+  * Fix broken drivers:
+    - Broadcom NetXtremeII support
+  * [powerpc] Use new wrapper install support.
+  * [s390] Enable DM_MULTIPATH_EMC.
+  * Enable AF_RXRPC, RXKAD, PRINTK_TIME, DEBUG_KERNEL, SCHED_DEBUG,
+    TIMER_STATS, DEBUG_FS.
+  * Disable R3964, USB_GADGET.
+  * [hppa] Enable several filesystems.
+  * Make NLS modular.
+  * [i386/486] Make ext2 modular.
+  * [alpha,amd64,i386] Make ATM modular.
+  * [powerpc/powerpc64] Support PA Semi based plattforms. (closes: #463200)
+  * Follow upstream change for default TCP congestion control.
+    (closes: #477589)
+
+  [ Steve Langasek ]
+  * topconfig: Enable CONFIG_CIFS_WEAK_PW_HASH, required for compatibility
+    with legacy (pre-NTLM) fileservers.
+
+  [ Christian Perrier ]
+  * Debconf template rewrite + mark them as translatable.
+    Thanks to Justin B Rye <jbr@edlug.org.uk> for review.
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 25 Apr 2008 16:27:23 +0200
+
+linux-2.6 (2.6.24-6) unstable; urgency=high
+
+  [ Martin Michlmayr ]
+  * [armel] Fix FTBFS on armel by enabling CONFIG_USB_USBNET=m in
+    armel/config, as it was done for arm/config already.
+  * [armel] Add oabi shim for fstatat64 (Riku Voipio)
+
+  [ Gordon Farquharson ]
+  * [arm/iop32x] Do not build the ARTOP PATA driver (PATA_ARTOP).
+  * [arm/iop32x] Enable MTD_CMDLINE_PARTS.
+
+  [ Kyle McMartin ]
+  * [hppa] fix pdc_console panic at boot (closes: #476292).
+  * [hppa] properly flush user signal tramps
+  * [hppa] special case futex cmpxchg on kernel space NULL (closes: 476285).
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 18 Apr 2008 19:41:30 +0200
+
+linux-2.6 (2.6.24-5) unstable; urgency=low
+
+  [ Gordon Farquharson ]
+  * [arm] Enable asix driver (USB_NET_AX8817X).
+  * [arm] Enable CONFIG_USB_CATC, CONFIG_USB_KAWETH, CONFIG_USB_PEGASUS,
+          and CONFIG_USB_RTL8150.
+  * [arm/ixp4xx] Update Ethernet driver (closes: #471062).
+  * [arm/ixp4xx] Add HSS driver.
+
+  [ Bastian Blank ]
+  * [s390/s390-tape]: Override localversion correctly.
+  * Add stable release 2.6.24.3:
+    - x86_64: CPA, fix cache attribute inconsistency bug
+    - bonding: fix NULL pointer deref in startup processing
+    - POWERPC: Revert chrp_pci_fixup_vt8231_ata devinit to fix libata on pegasos
+    - PCMCIA: Fix station address detection in smc
+    - SCSI: gdth: scan for scsi devices
+    - USB: fix pm counter leak in usblp
+    - S390: Fix futex_atomic_cmpxchg_std inline assembly.
+    - genirq: do not leave interupts enabled on free_irq
+    - hrtimer: catch expired CLOCK_REALTIME timers early
+    - hrtimer: check relative timeouts for overflow
+    - SLUB: Deal with annoying gcc warning on kfree()
+    - hrtimer: fix *rmtp/restarts handling in compat_sys_nanosleep()
+    - hrtimer: fix *rmtp handling in hrtimer_nanosleep()
+    - Disable G5 NAP mode during SMU commands on U3
+    - Be more robust about bad arguments in get_user_pages()
+    - AUDIT: Increase skb->truesize in audit_expand
+    - BLUETOOTH: Add conn add/del workqueues to avoid connection fail.
+    - INET: Prevent out-of-sync truesize on ip_fragment slow path
+    - INET_DIAG: Fix inet_diag_lock_handler error path.
+    - IPCOMP: Fetch nexthdr before ipch is destroyed
+    - IPCOMP: Fix reception of incompressible packets
+    - IPV4: fib: fix route replacement, fib_info is shared
+    - IPV4: fib_trie: apply fixes from fib_hash
+    - PKT_SCHED: ematch: oops from uninitialized variable (resend)
+    - SELinux: Fix double free in selinux_netlbl_sock_setsid()
+    - TC: oops in em_meta
+    - TCP: Fix a bug in strategy_allowed_congestion_control
+    - SCSI: sd: handle bad lba in sense information
+    - Fix dl2k constants
+    - XFS: Fix oops in xfs_file_readdir()
+    - hugetlb: add locking for overcommit sysctl
+    - inotify: fix check for one-shot watches before destroying them
+    - NFS: Fix a potential file corruption issue when writing
+    - NETFILTER: nf_conntrack_tcp: conntrack reopening fix
+    - SPARC/SPARC64: Fix usage of .section .sched.text in assembler code.
+  * Add stable release 2.6.24.4:
+    - S390 futex: let futex_atomic_cmpxchg_pt survive early functional tests.
+    - slab: NUMA slab allocator migration bugfix
+    - relay: fix subbuf_splice_actor() adding too many pages
+    - BLUETOOTH: Fix bugs in previous conn add/del workqueue changes.
+    - SCSI advansys: Fix bug in AdvLoadMicrocode
+    - async_tx: avoid the async xor_zero_sum path when src_cnt > device->max_xor
+    - aio: bad AIO race in aio_complete() leads to process hang
+    - jbd: correctly unescape journal data blocks
+    - jbd2: correctly unescape journal data blocks
+    - zisofs: fix readpage() outside i_size
+    - NETFILTER: nfnetlink_log: fix computation of netlink skb size
+    - NETFILTER: nfnetlink_queue: fix computation of allocated size for netlink skb
+    - NETFILTER: xt_time: fix failure to match on Sundays
+    - sched_nr_migrate wrong mode bits
+    - nfsd: fix oops on access from high-numbered ports
+    - sched: fix race in schedule()
+    - SCSI: mpt fusion: don't oops if NumPhys==0
+    - SCSI: gdth: fix to internal commands execution
+    - SCSI: gdth: bugfix for the at-exit problems
+    - Fix default compose table initialization
+    - x86: don't use P6_NOPs if compiling with CONFIG_X86_GENERIC
+    - SCSI: fix BUG when sum(scatterlist) > bufflen
+    - USB: ehci: handle large bulk URBs correctly (again)
+    - USB: ftdi_sio - really enable EM1010PC
+    - USB: ftdi_sio: Workaround for broken Matrix Orbital serial port
+    - VT notifier fix for VT switch
+    - eCryptfs: make ecryptfs_prepare_write decrypt the page
+    - ioat: fix 'ack' handling, driver must ensure that 'ack' is zero
+    - macb: Fix speed setting
+    - x86: move out tick_nohz_stop_sched_tick() call from the loop
+    - atmel_spi: fix clock polarity
+    - b43: Backport bcm4311 fix
+    - arcmsr: fix IRQs disabled warning spew
+    - e1000e: Fix CRC stripping in hardware context bug
+    - PCI x86: always use conf1 to access config space below 256 bytes
+    - moduleparam: fix alpha, ia64 and ppc64 compile failures
+    - pata_hpt*, pata_serverworks: fix UDMA masking
+    - SCSI advansys: fix overrun_buf aligned bug
+    - NETFILTER: fix ebtable targets return
+    - NETFILTER: Fix incorrect use of skb_make_writable
+    - NETFILTER: nfnetlink_queue: fix SKB_LINEAR_ASSERT when mangling packet data
+    - spi: pxa2xx_spi clock polarity fix
+    - ufs: fix parenthesisation in ufs_set_fs_state()
+    - hugetlb: ensure we do not reference a surplus page after handing it to buddy
+    - file capabilities: simplify signal check
+    - futex: runtime enable pi and robust functionality
+    - futex: fix init order
+    - ARM pxa: fix clock lookup to find specific device clocks
+    - x86: replace LOCK_PREFIX in futex.h
+    - SCSI aic94xx: fix REQ_TASK_ABORT and REQ_DEVICE_RESET
+    - SCSI gdth: don't call pci_free_consistent under spinlock
+    - SCSI ips: fix data buffer accessors conversion bug
+    - usb-storage: don't access beyond the end of the sg buffer
+    - fuse: fix permission checking
+    - CRYPTO xts: Use proper alignment
+    - CRYPTO xcbc: Fix crash with IPsec
+    - SCSI ips: handle scsi_add_host() failure, and other err cleanups
+    - x86: adjust enable_NMI_through_LVT0()
+    - drivers: fix dma_get_required_mask
+    - iov_iter_advance() fix
+    - x86: Clear DF before calling signal handler (closes: #469058)
+    - ub: fix up the conversion to sg_init_table()
+    - MIPS: Mark all but i8259 interrupts as no-probe.
+    - IRQ_NOPROBE helper functions
+    - IPCOMP: Disable BH on output when using shared tfm
+    - IPCONFIG: The kernel gets no IP from some DHCP servers
+    - IPV4: Remove IP_TOS setting privilege checks.
+    - IPV6: dst_entry leak in ip4ip6_err.
+    - IPV6: Fix IPsec datagram fragmentation
+    - NET: Fix race in dev_close(). (Bug 9750)
+    - NET: Messed multicast lists after dev_mc_sync/unsync (closes: #466719)
+    - NIU: Bump driver version and release date.
+    - NIU: Fix BMAC alternate MAC address indexing.
+    - NIU: More BMAC alt MAC address fixes.
+    - TCP: Improve ipv4 established hash function.
+    - SPARC: Fix link errors with gcc-4.3
+    - SPARC64: Loosen checks in exception table handling.
+
+  [ Martin Michlmayr ]
+  * [mips/r4k-ip22] Enable BLK_DEV_LOOP and BLK_DEV_CRYPTOLOOP.
+  * [mips/r5k-ip32] Enable BLK_DEV_LOOP and BLK_DEV_CRYPTOLOOP.
+  * [mips/r4k-ip22] Enable PPP, PPPOE and SLIP.
+  * [mips/r5k-ip32] Enable PPP, PPPOE and SLIP.
+  * Don't check the section size when we're cross compiling.
+
+  [ dann frazier ]
+  * Remove cap_task_kill (closes: #463669)
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 27 Mar 2008 12:40:16 +0100
+
+linux-2.6 (2.6.24-4) unstable; urgency=low
+
+  * Add stable release 2.6.24.1:
+    - splice: missing user pointer access verification (CVE-2008-0009/10)
+    - drm: the drm really should call pci_set_master..
+    - Driver core: Revert "Fix Firmware class name collision"
+    - fix writev regression: pan hanging unkillable and un-straceable
+    - sched: fix high wake up latencies with FAIR_USER_SCHED
+    - sched: let +nice tasks have smaller impact
+    - b43: Reject new firmware early
+    - selinux: fix labeling of /proc/net inodes
+    - b43legacy: fix DMA slot resource leakage
+    - b43legacy: drop packets we are not able to encrypt
+    - b43legacy: fix suspend/resume
+    - b43legacy: fix PIO crash
+    - b43: Fix dma-slot resource leakage
+    - b43: Drop packets we are not able to encrypt
+    - b43: Fix suspend/resume
+    - sky2: fix for WOL on some devices
+    - sky2: restore multicast addresses after recovery
+    - x86: restore correct module name for apm
+    - ACPI: update ACPI blacklist
+    - PCI: Fix fakephp deadlock
+    - sys_remap_file_pages: fix ->vm_file accounting
+    - lockdep: annotate epoll
+    - forcedeth: mac address mcp77/79
+    - USB: Fix usb_serial_driver structure for Kobil cardreader driver.
+    - USB: handle idVendor of 0x0000
+    - USB: fix usbtest halt check on big endian systems
+    - USB: storage: Add unusual_dev for HP r707
+    - USB: Variant of the Dell Wireless 5520 driver
+    - USB: use GFP_NOIO in reset path
+    - USB: ftdi driver - add support for optical probe device
+    - USB: pl2303: add support for RATOC REX-USB60F
+    - USB: remove duplicate entry in Option driver and Pl2303 driver for Huawei modem
+    - USB: sierra: add support for Onda H600/Zte MF330 datacard to USB Driver for Sierra Wireless
+    - USB: ftdi-sio: Patch to add vendor/device id for ATK_16IC CCD
+    - USB: ftdi_sio - enabling multiple ELV devices, adding EM1010PC
+    - USB: sierra driver - add devices
+    - USB: Adding YC Cable USB Serial device to pl2303
+    - USB: Sierra - Add support for Aircard 881U
+    - USB: add support for 4348:5523 WinChipHead USB->RS 232 adapter
+    - USB: CP2101 New Device IDs
+    - usb gadget: fix fsl_usb2_udc potential OOPS
+    - USB: keyspan: Fix oops
+    - vm audit: add VM_DONTEXPAND to mmap for drivers that need it (CVE-2008-0007)
+    - slab: fix bootstrap on memoryless node
+    - DVB: cx23885: add missing subsystem ID for Hauppauge HVR1800 Retail
+
+  [ Martin Michlmayr ]
+  * [arm/ixp4xx] Enble ATA_OVER_ETH, requested by Nicola Fankhauser.
+  * [arm/iop32x] Enble ATA_OVER_ETH.
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.24.2:
+    - splice: fix user pointer access in get_iovec_page_array()
+    (CVE-2008-0600, closes: #464945)
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 11 Feb 2008 12:29:23 +0100
+
+linux-2.6 (2.6.24-3) unstable; urgency=low
+
+  [ maximilian attems ]
+  * [scsi]: hptiop: add more adapter models and fixes.
+  * [amd64, i386]: Reenable ACPI_PROCFS_POWER. (closes: #463253)
+
+  [ Gordon Farquharson ]
+  * [arm/ixp4xx] Update Ethernet driver so that it can be loaded by udev
+    automatically.
+
+  [ Martin Michlmayr ]
+  * [mips/r5k-ip32] Enable R8169, requested by Giuseppe Sacco. (Closes:
+    #463705)
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 06 Feb 2008 13:05:18 +0100
+
+linux-2.6 (2.6.24-2) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Fix broken merge of flavour specific settings.
+    - [i386]: Recommends are fixed.
+    - [s390/s390-tape]: Built as small image again.
+
+  [ maximilian attems ]
+  * Disable old dup prism54 driver.
+  * Stable queue: slab: fix bootstrap on memoryless node.
+
+  [ Aurelien Jarno ]
+  * [arm]: Remove options that are present in topconfig from config.versatile.
+  * [arm]: Turn off B44 since it fails to compile on armel.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 31 Jan 2008 17:37:00 +0100
+
+linux-2.6 (2.6.24-1) unstable; urgency=low
+
+  * New upstream release
+    (closes: #461639)
+
+  [ Martin Michlmayr ]
+  * Don't build the AdvanSys driver on ARM since it fails to compile.
+  * Disable ATH5K on ARM since it fails to compile.
+  * [arm/iop32x] Activate DMADEVICES.
+  * [mips/mipsel] Turn off CONFIG_NIU since it fails to compile.
+
+  [ maximilian attems ]
+  * [amd64, i386]: Enable ACPI_SYSFS_POWER and disable ACPI_PROCFS_POWER.
+  * [fw] Sync with latest git-ieee1394 for sbp2 fixes.
+
+  [ Bastian Blank ]
+  * Kill reboot warning from old templates.
+  * Fix strange default value for link_in_boot. (closes: #425056)
+  * [powerpc/powerpc]: Enable Efika support.
+  * [powerpc]: Lower mkvmlinuz to the state of a bootloader.
+  * [powerpc]: Remove ppc and m68k include dirs from headers.
+  * Remove versions from relations fullfilled in stable.
+
+  [ Aurelien Jarno ]
+  * [arm]: Update versatile config.
+
+  [ Gordon Farquharson ]
+  * [arm/ixp4xx] Change the ixp4xx network driver from the driver
+    written by Christian Hohnstaedt to the driver written by Krzysztof
+    Hasala which has partially been accepted upstream.
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 26 Jan 2008 11:35:11 +0100
+
+linux-2.6 (2.6.24~rc8-1~experimental.1) experimental; urgency=low
+
+  * New upstream release
+    (closes: #454776, #458142, #457992, #458899, #426124, #459732, #455566).
+
+  [ maximilian attems ]
+  * New upstream release, rebase dfsg stuff plus drivers-atm.patch,
+    scripts-kconfig-reportoldconfig.patch.
+  * [amd64, powerpc] Set HIGH_RES_TIMERS and NO_HZ (closes: #458312).
+  * topconfig set NETFILTER_XT_MATCH_TIME, NET_ACT_NAT, KSDAZZLE_DONGLE,
+    KS959_DONGLE, NET_9P_FD, IP1000, VETH, IXGBE, NIU, TEHUTI, LIBERTAS_CS,
+    LIBERTAS_SDIO, RT2X00, SENSORS_ADT7470, SENSORS_I5K_AMB, SENSORS_F71882FG,
+    SENSORS_FSCHMD, SENSORS_IBMPEX, CRYPTO_XTS, CRYPTO_SEED, CRYPTO_AUTHENC,
+    DVB_S5H1409, DVB_TUNER_MT2131, INET_LRO, MMC_RICOH_MMC, MMC_SPI,
+    RTC_DRV_DS1374, VIDEO_CX23885, VIDEO_FB_IVTV, USB_SERIAL_CH341,
+    SCSI_SRP_TGT_ATTRS, ADM8211, MTD_INTEL_VR_NOR, MTD_ALAUDA,
+    MTD_ONENAND_2X_PROGRAM, MTD_ONENAND_SIM, DM_MULTIPATH_HP, FUJITSU_LAPTOP,
+    QUOTA_NETLINK_INTERFACE, DM_UEVENT, SCSI_FC_TGT_ATTRS, SSB, BT_HCIUART_LL,
+    BT_HCIBTSDIO, MTD_OOPS, CGROUPS, MDIO_BITBANG, HIDRAW, P54, SDIO_UART,
+    NETCONSOLE_DYNAMIC, SECURITY_FILE_CAPABILITIES.
+  * Disable smbfs in topconfig, not supported upstream, use cifs.
+  * Disable bcm43xx, deprecated by upstream. Enable B43 (needs v4 firmware)
+    and B43LEGACY (needs v3 firmware).
+  * [i386]: Set SND_SC6000, EDAC_I3000, EDAC_I5000, SBC7240_WDT,
+    NET_9P_VIRTIO, FB_GEODE_LX, VIRTIO_NET, VIRTIO_BLK.
+  * Set USB_EHCI_TT_NEWSCHED fills USB 2.0 bandwith better. (closes: #454797)
+  * postrm: Nuke initramfs sha1sum on linux-image removal. (closes: #420245)
+  * Unifiy BSD_PROCESS_ACCT settings across configs. (closes: #455892)
+  * Reenable DABUSB as firmware is BSD licensed.
+  * [hppa]: Disable OCFS2, due build trouble.
+  * topconfig: Enable delay accounting TASKSTATS. (closes: #433204)
+  * Add git-ieee1394.patch for latest firewire fixes.
+  * [i386] Enable PARAVIRT_GUEST. (closes: #457562)
+  * [amd64, i386] Enable CPU_IDLE for software-controlled idle pm.
+  * [amd64, i386] Enable IT8712F_WDT, FB_EFI.
+  * Add and enable at76.patch wireless driver for Atmel USB cards.
+  * Add and enable ath5k.patch wireless driver for Atheros 5xxx cards.
+  * Unify VLAN_8021Q setting, needed also on r5k-cobalt.
+  * Double max SERIAL_8250_NR_UARTS to 32. (closes: #440807)
+  * topconfig: Enable AUDITSYSCALL for better SELinux support.
+
+  [ Bastian Blank ]
+  * [amd64, i386]: Set kernel architecture to x86.
+  * [i386]: Remove linux-libc-dev arch override.
+
+  [ Martin Michlmayr ]
+  * [mipsel/r5k-cobalt] Enable the new LEDs driver for Cobalt RaQ.
+  * [arm/iop32x] Re-enable USB_NET and PPP, thanks Daniel Hess (closes:
+    #456416).
+  * [arm/iop32x] Enable BSD_PROCESS_ACCT and POSIX_MQUEUE (closes: #455892).
+  * [mips] Disable AdvanSys SCSI since it doesn't compile.
+  * [arm/ixp4xx] Enable IP_ADVANCED_ROUTER, requested by Oliver Urbann.
+  * [arm/iop32x] Enable IP_ADVANCED_ROUTER.
+
+  [ dann frazier ]
+  * [ia64]: Enable BLK_CPQ_DA
+
+  [ Frederik Schüler ]
+  * Add GFS2 locking symbols export patch.
+
+  [ Aurelien Jarno ]
+  * [mips/mipsel] Remove QEMU flavour, as the Malta platform is now correctly
+    emulated in QEMU.
+
+  [ Christian T. Steigies ]
+  * [m68k]: Update patches from linux-m68k CVS
+  * [m68k]: Enable building for bvme6000, mvme147, and mvme16x again
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 18 Jan 2008 12:23:26 +0100
+
+linux-2.6 (2.6.23-2) unstable; urgency=low
+
+  [ dann frazier ]
+  * [ia64]: Enable BLK_CPQ_DA
+
+  [ Gordon Farquharson ]
+  * [arm/iop32x] Use the new i2c framework to load rtc-rs5c372 for the
+    GLAN Tank.
+
+  [ Frederik Schüler ]
+  * Export gfs2 locking symbols required to build gfs1 module.
+
+  [ maximilian attems ]
+  * [ppc] Reenable PMAC_BACKLIGHT.
+  * [sparc] Add davem get_cpu() SunFire boot patch. (closes: #440720)
+  * Add stable release 2.6.23.10:
+    - IPV4: Remove bogus ifdef mess in arp_process
+    - KVM: x86 emulator: Use emulator_write_emulated and not emulator_write_std
+    - KVM: SVM: Fix FPU leak while emulating clts
+    - revert "dpt_i2o: convert to SCSI hotplug model"
+    - KVM: x86 emulator: fix access registers for instructions with ModR/M
+      byte and Mod = 3
+    - KVM: x86 emulator: invd instruction
+    - KVM: SVM: Intercept the 'invd' and 'wbinvd' instructions
+    - KVM: Skip pio instruction when it is emulated, not executed
+    - KVM: VMX: Force vm86 mode if setting flags during real mode
+    - forcedeth: new mcp79 pci ids
+    - forcedeth boot delay fix
+    - PFKEY: Sending an SADB_GET responds with an SADB_GET
+    - rd: fix data corruption on memory pressure.
+    - create /sys/.../power when CONFIG_PM is set
+    - USB: fix up EHCI startup synchronization
+    - RXRPC: Add missing select on CRYPTO
+    - KVM: VMX: Reset mmu context when entering real mode
+    - NET: random : secure_tcp_sequence_number should not assume
+      CONFIG_KTIME_SCALAR
+    - NET: Corrects a bug in ip_rt_acct_read()
+    - NETFILTER: Fix NULL pointer dereference in nf_nat_move_storage()
+    - netfilter: Fix kernel panic with REDIRECT target.
+    - IPV6: Restore IPv6 when MTU is big enough
+    - UNIX: EOF on non-blocking SOCK_SEQPACKET
+    - x86 setup: add a near jump to serialize %cr0 on 386/486
+    - Fix synchronize_irq races with IRQ handler
+    - CRYPTO api: Fix potential race in crypto_remove_spawn
+    - TCP: Fix TCP header misalignment
+    - tmpfs: restore missing clear_highpage (CVE-2007-6417)
+    - TCP: MTUprobe: fix potential sk_send_head corruption
+    - NETFILTER: fix forgotten module release in xt_CONNMARK and xt_CONNSECMARK
+    - fb_ddc: fix DDC lines quirk
+    - VLAN: Fix nested VLAN transmit bug
+    - I4L: fix isdn_ioctl memory overrun vulnerability (CVE-2007-6151)
+    - isdn: avoid copying overly-long strings
+    - nf_nat: fix memset error
+    - esp_scsi: fix reset cleanup spinlock recursion
+    - libertas: properly account for queue commands
+    - KVM: Fix hang on uniprocessor
+    - USB: make the microtek driver and HAL cooperate
+    - TEXTSEARCH: Do not allow zero length patterns in the textsearch
+      infrastructure
+    - XFRM: Fix leak of expired xfrm_states
+    - NETFILTER: xt_TCPMSS: remove network triggerable WARN_ON
+    - BRIDGE: Lost call to br_fdb_fini() in br_init() error path
+    - DECNET: dn_nl_deladdr() almost always returns no error
+    - BRIDGE: Properly dereference the br_should_route_hook
+    - PKT_SCHED: Check subqueue status before calling hard_start_xmit
+    - Freezer: Fix APM emulation breakage
+    - XFS: Make xfsbufd threads freezable
+    - TCP: Problem bug with sysctl_tcp_congestion_control function
+    - wait_task_stopped(): pass correct exit_code to wait_noreap_copyout()
+    - KVM: x86 emulator: implement 'movnti mem, reg'
+    - TCP: illinois: Incorrect beta usage
+    - futex: fix for futex_wait signal stack corruption
+    - libata: kill spurious NCQ completion detection
+    - hrtimers: avoid overflow for large relative timeouts (CVE-2007-5966)
+    - Input: ALPS - add support for model found in Dell Vostro 1400
+      (closes: #448818)
+    - PNP: increase the maximum number of resources
+    - sched: some proc entries are missed in sched_domain sys_ctl debug code
+    - ATM: [he] initialize lock and tasklet earlier
+  * Add stable release 2.6.23.11:
+    - BRIDGE: Section fix.
+    - Revert "Freezer: Fix APM emulation breakage"
+  * Backport fix for CVE-2007-5938
+    - iwlwifi: fix possible NULL dereference in iwl_set_rate()
+  * Add stable release 2.6.23.12:
+    - Revert "PNP: increase the maximum number of resources"
+  * VM/Security: add security hook to do_brk (CVE-2007-6434)
+  * security: protect from stack expantion into low vm addresses
+  * [hppa]: Disable OCFS2, due build trouble.
+
+  [ Aurelien Jarno ]
+  * [arm/versatile] Disable ACENIC and MYRI10GE as they are useless on this
+    platform.
+  * Add em28xx-dv100.patch to add support for Pinnacle Dazzle DVC 100.
+
+  [ Bastian Blank ]
+  * Fix abi change in 2.6.23.10.
+
+ -- maximilian attems <maks@debian.org>  Fri, 21 Dec 2007 11:47:55 +0100
+
+linux-2.6 (2.6.23-1) unstable; urgency=low
+
+  * New upstream release (closes: #447682).
+    - r8169: fix confusion between hardware and IP header alignment
+      (closes: #452069).
+
+  [ maximilian attems ]
+  * [ppc] Enable for powerpc config the ams (Apple Motion Sensor).
+    (closes: #426210)
+  * Add to linux-doc the missing toplevel text files.
+    (closes: #360876, #438697)
+  * Set CONFIG_BLK_DEV_IO_TRACE for blktrace(8) support. (closes: #418442)
+  * ipw2200: Enable IPW2200_RADIOTAP and IPW2200_PROMISCUOUS for optional
+    rtap interface. (closes: #432555)
+  * Enable in topconfig NF_CT_PROTO_UDPLITE, NETFILTER_XT_TARGET_TRACE,
+    NETFILTER_XT_MATCH_CONNLIMIT, NETFILTER_XT_MATCH_U32, SENSORS_ABITUGURU3,
+    SENSORS_LM93, SENSORS_DME1737, SENSORS_THMC50, DVB_USB_AF9005,
+    DVB_USB_AF9005_REMOTE, CRC7, I2C_TAOS_EVM, DS1682, SENSORS_TSL2550,
+    SPI_LM70_LLP, SPI_TLE62X0, W1_SLAVE_DS2760, TUNER_TEA5761, NET_9P,
+    DM_MULTIPATH_RDAC, NET_SCH_RR, EEPROM_93CX6, PPPOL2TP, CRYPTO_HW, UIO,
+    UIO_CIF, SND_CS5530, RTL8187, PC300TOO, TCG_TIS, SCSI_SAS_ATA,
+    PATA_MARVELL.
+  * [i386] Enable lguest.
+  * [amd64, i386] Enable VIDEO_OUTPUT_CONTROL, NETDEVICES_MULTIQUEUE.
+  * linux-image bugscript add cmdline.
+  * [amd64, i386, ia64]: Enable DMIID, ACPI_PROC_EVENT.
+  * Enable TCG_TPM various userspace accesses it. (closes: #439020)
+  * Add and enable IWLWIFI.
+  * Add git-ieee1394.patch for latest firewire fixes.
+  * [ipv6] Enable IPV6_MULTIPLE_TABLES, IPV6_SUBTREES. (closes: #441226)
+  * Add and enable E1000E.
+  * Add stable release 2.6.23.1:
+    - libata: sata_mv: more S/G fixes
+
+  [ Martin Michlmayr ]
+  * [mips] Add a bcm1480 PCI build fix.
+  * Update Riku Voipio's Fintek F75375/SP driver to the latest version.
+  * [arm/iop32x] Set the fan on Thecus N2100 to full speed (Riku Voipio).
+  * [arm/iop32x] Remove the IPv6 and filesystem info from the config file
+    so we will get the values from the main config file.  This should
+    enable NFSv4 and ip6tables support requested by Wouter Verhelst.
+  * [arm/iop32x] Remove even more options to receive the default options.
+  * [arm/ixp4xx] Remove a lot of options to receive the default options.
+  * [mips/r4k-ip22] Remove a lot of options to receive the default options.
+    This will enable ISCSI requested by Martin Zobel-Helas.
+  * [mips/r5k-ip32] Remove a lot of options to receive the default options.
+    This will enable PCI Ethernet devices requested by Giuseppe Sacco.
+  * [mipsel/r5k-cobalt] Remove a lot of options to receive the default
+    options.
+  * [mipsel/r5k-cobalt] Enable the modern Cobalt LEDs driver.
+  * [arm/iop32x] Enable Intel IOP ADMA support.
+  * [arm] Mark BCM43XX as broken on ARM.
+  * [mips/r4k-ip22] Disable EARLY PRINTK because it breaks serial console.
+  * [mips] Add some IP22 fixes from Thomas Bogendoerfer:
+    - Fix broken EISA interrupt setup by switching to generic i8259
+    - Fix broken eeprom access by using __raw_readl/__raw_writel
+
+  [ Bastian Blank ]
+  * Add unpriviledged only Xen support.
+  * [i386] Drop k7 images.
+  * Drop maybe IETF document. (closes: #423040)
+  * Drop drivers because of binary only firmwares:
+    - DABUSB driver
+    - COPS LocalTalk PC support
+    - Digi Intl. RightSwitch SE-X support
+    - 3Com 3C359 Token Link Velocity XL adapter support
+    - SMC ISA/MCA adapter support
+    - EMI 6|2m USB Audio interface support
+    - EMI 2|6 USB Audio interface support
+    - Computone IntelliPort Plus serial support
+  * Remove binary only firmwares for:
+    - Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support
+    - Broadcom Tigon3 support
+    - USB Keyspan USA-xxx Serial Driver
+    - Korg 1212 IO
+    - ESS Allegro/Maestro3
+    - Yamaha YMF724/740/744/754
+    - Technotrend/Hauppauge Nova-USB devices
+    - YAM driver for AX.25
+    - MyriCOM Gigabit Ethernet support
+    - PTI Qlogic, ISP Driver
+    - Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x
+    - Madge Ambassador (Collage PCI 155 Server)
+    - PCA-200E support
+    - SBA-200E support
+    - Broadcom NetXtremeII support
+  * Disable now broken drivers:
+    - Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support
+    - USB Keyspan USA-xxx Serial Driver
+    - Technotrend/Hauppauge Nova-USB devices
+    - YAM driver for AX.25
+    - MyriCOM Gigabit Ethernet support
+    - PTI Qlogic, ISP Driver
+    - Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x
+    - Madge Ambassador (Collage PCI 155 Server)
+    - PCA-200E support
+    - SBA-200E support
+    - Broadcom NetXtremeII support
+  * Add -common to common header package names.
+  * Drop provides from common header packages.
+  * Update plain image type.
+  * Put only a config dump into linux-support.
+
+  [ Aurelien Jarno ]
+  * [mips, mipsel] Add a 64-bit image (5kc-malta) for the MIPS Malta board.
+    (closes: #435677)
+    [sparc] Enable r8169 module on sparc64 and sparc64-smp flavours (closes:
+    #431977)
+
+  [ Frederik Schüler ]
+  * Move all PATA options into the global config file, exept PATA_ARTOP
+    (arm/ixp4xx) and PATA_MPC52xx (powerpc).
+  * Move new global options into the global config file
+  * Clean up new amd64 options
+
+  [ dann frazier ]
+  * [ia64] Re-enable various unintentionally disabled config options
+  * Enable hugetlbfs on i386, amd64, sparc64 and powerpc64. Closes: #450939
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.23.2:
+    - BLOCK: Fix bad sharing of tag busy list on queues with shared tag maps
+    - fix tmpfs BUG and AOP_WRITEPAGE_ACTIVATE
+    - Fix compat futex hangs. (closes: #433187)
+    - sched: keep utime/stime monotonic
+    - fix the softlockup watchdog to actually work
+    - splice: fix double kunmap() in vmsplice copy path
+    - writeback: don't propagate AOP_WRITEPAGE_ACTIVATE
+    - SLUB: Fix memory leak by not reusing cpu_slab
+    - HOWTO: update ja_JP/HOWTO with latest changes
+    - fix param_sysfs_builtin name length check
+    - param_sysfs_builtin memchr argument fix
+    - Remove broken ptrace() special-case code from file mapping
+    - locks: fix possible infinite loop in posix deadlock detection
+    - lockdep: fix mismatched lockdep_depth/curr_chain_hash
+  * Add stable release 2.6.23.3:
+    - revert "x86_64: allocate sparsemem memmap above 4G"
+    - x86: fix TSC clock source calibration error
+    - x86 setup: sizeof() is unsigned, unbreak comparisons
+    - x86 setup: handle boot loaders which set up the stack incorrectly
+    - x86: fix global_flush_tlb() bug
+    - xfs: eagerly remove vmap mappings to avoid upsetting Xen
+    - xen: fix incorrect vcpu_register_vcpu_info hypercall argument
+    - xen: deal with stale cr3 values when unpinning pagetables
+    - xen: add batch completion callbacks
+    - UML - kill subprocesses on exit
+    - UML - stop using libc asm/user.h
+    - UML - Fix kernel vs libc symbols clash
+    - UML - Stop using libc asm/page.h
+    - POWERPC: Make sure to of_node_get() the result of pci_device_to_OF_node()
+    - POWERPC: Fix handling of stfiwx math emulation
+    - MIPS: R1: Fix hazard barriers to make kernels work on R2 also.
+    - MIPS: MT: Fix bug in multithreaded kernels.
+    - Fix sparc64 MAP_FIXED handling of framebuffer mmaps
+    - Fix sparc64 niagara optimized RAID xor asm
+  * Add stable release 2.6.23.4:
+    - mac80211: make ieee802_11_parse_elems return void
+    - mac80211: only honor IW_SCAN_THIS_ESSID in STA, IBSS, and AP modes
+    - mac80211: honor IW_SCAN_THIS_ESSID in siwscan ioctl
+    - mac80211: store SSID in sta_bss_list
+    - mac80211: store channel info in sta_bss_list
+    - mac80211: reorder association debug output
+    - ieee80211: fix TKIP QoS bug
+    - NETFILTER: nf_conntrack_tcp: fix connection reopening
+    - Fix netlink timeouts.
+    - Fix crypto_alloc_comp() error checking.
+    - Fix SET_VLAN_INGRESS_PRIORITY_CMD error return.
+    - Fix VLAN address syncing.
+    - Fix endianness bug in U32 classifier.
+    - Fix TEQL oops.
+    - Fix error returns in sys_socketpair()
+    - softmac: fix wext MLME request reason code endianness
+    - Fix kernel_accept() return handling.
+    - TCP: Fix size calculation in sk_stream_alloc_pskb
+    - Fix SKB_WITH_OVERHEAD calculations.
+    - Fix 9P protocol build
+    - Fix advertised packet scheduler timer resolution
+    - Add get_unaligned to ieee80211_get_radiotap_len
+    - mac80211: Improve sanity checks on injected packets
+    - mac80211: filter locally-originated multicast frames
+  * Add stable release 2.6.23.5:
+    - zd1211rw, fix oops when ejecting install media
+    - rtl8187: Fix more frag bit checking, rts duration calc
+    - ipw2100: send WEXT scan events
+    - zd1201: avoid null ptr access of skb->dev
+    - sky2: fix power settings on Yukon XL
+    - sky2: ethtool register reserved area blackout
+    - sky2: status ring race fix
+    - skge: XM PHY handling fixes
+    - Fix L2TP oopses.
+    - TG3: Fix performance regression on 5705.
+    - forcedeth: add MCP77 device IDs
+    - forcedeth msi bugfix
+    - ehea: 64K page kernel support fix
+    - libertas: fix endianness breakage
+    - libertas: more endianness breakage
+  * Add stable release 2.6.23.6:
+    - ACPI: suspend: Wrong order of GPE restore.
+    - ACPI: sleep: Fix GPE suspend cleanup
+    - libata: backport ATA_FLAG_NO_SRST and ATA_FLAG_ASSUME_ATA, part 2
+    - libata: backport ATA_FLAG_NO_SRST and ATA_FLAG_ASSUME_ATA
+    - libata: add HTS542525K9SA00 to NCQ blacklist
+    - radeon: set the address to access the GART table on the CPU side correctly
+    - Char: moxa, fix and optimise empty timer
+    - Char: rocket, fix dynamic_dev tty
+    - hptiop: avoid buffer overflow when returning sense data
+    - ide: Fix cs5535 driver accessing beyond array boundary
+    - ide: Fix siimage driver accessing beyond array boundary
+    - ide: Add ide_get_paired_drive() helper
+    - ide: fix serverworks.c UDMA regression
+    - i4l: fix random freezes with AVM B1 drivers
+    - i4l: Fix random hard freeze with AVM c4 card
+    - ALSA: hda-codec - Add array terminator for dmic in STAC codec
+    - USB: usbserial - fix potential deadlock between write() and IRQ
+    - USB: add URB_FREE_BUFFER to permissible flags
+    - USB: mutual exclusion for EHCI init and port resets
+    - usb-gadget-ether: prevent oops caused by error interrupt race
+    - USB: remove USB_QUIRK_NO_AUTOSUSPEND
+    - MSI: Use correct data offset for 32-bit MSI in read_msi_msg()
+    - md: raid5: fix clearing of biofill operations
+    - md: fix an unsigned compare to allow creation of bitmaps with v1.0 metadata
+    - dm: fix thaw_bdev
+    - dm delay: fix status
+    - libata: sync NCQ blacklist with upstream
+    - ALSA: hdsp - Fix zero division
+    - ALSA: emu10k1 - Fix memory corruption
+    - ALSA: Fix build error without CONFIG_HAS_DMA
+    - ALSA: fix selector unit bug affecting some USB speakerphones
+    - ALSA: hda-codec - Avoid zero NID in line_out_pins[] of STAC codecs
+    - IB/mthca: Use mmiowb() to avoid firmware commands getting jumbled up
+    - IB/uverbs: Fix checking of userspace object ownership
+    - hwmon/lm87: Disable VID when it should be
+    - hwmon/lm87: Fix a division by zero
+    - hwmon/w83627hf: Don't assume bank 0
+    - hwmon/w83627hf: Fix setting fan min right after driver load
+    - i915: fix vbl swap allocation size.
+    - POWERPC: Fix platinumfb framebuffer
+  * Add stable release 2.6.23.7:
+    - NFS: Fix a writeback race...
+    - ocfs2: fix write() performance regression
+    - minixfs: limit minixfs printks on corrupted dir i_size (CVE-2006-6058)
+  * Add stable release 2.6.23.8:
+    - wait_task_stopped: Check p->exit_state instead of TASK_TRACED (CVE-2007-5500)
+    - TCP: Make sure write_queue_from does not begin with NULL ptr (CVE-2007-5501)
+  * Add stable release 2.6.23.9:
+    - ipw2200: batch non-user-requested scan result notifications
+    - USB: Nikon D40X unusual_devs entry
+    - USB: unusual_devs modification for Nikon D200
+    - softlockup: use cpu_clock() instead of sched_clock()
+    - softlockup watchdog fixes and cleanups
+    - x86: fix freeze in x86_64 RTC update code in time_64.c
+    - ntp: fix typo that makes sync_cmos_clock erratic
+    - x86: return correct error code from child_rip in x86_64 entry.S
+    - x86: NX bit handling in change_page_attr()
+    - x86: mark read_crX() asm code as volatile
+    - x86: fix off-by-one in find_next_zero_string
+    - i386: avoid temporarily inconsistent pte-s
+    - libcrc32c: keep intermediate crc state in cpu order
+    - geode: Fix not inplace encryption
+    - Fix divide-by-zero in the 2.6.23 scheduler code
+    - ACPI: VIDEO: Adjust current level to closest available one.
+    - libata: sata_sis: use correct S/G table size
+    - sata_sis: fix SCR read breakage
+    - reiserfs: don't drop PG_dirty when releasing sub-page-sized dirty file
+    - x86: disable preemption in delay_tsc()
+    - dmaengine: fix broken device refcounting
+    - nfsd4: recheck for secure ports in fh_verify
+    - knfsd: fix spurious EINVAL errors on first access of new filesystem
+    - raid5: fix unending write sequence
+    - oProfile: oops when profile_pc() returns ~0LU
+    - drivers/video/ps3fb: fix memset size error
+    - i2c/eeprom: Hide Sony Vaio serial numbers
+    - i2c/eeprom: Recognize VGN as a valid Sony Vaio name prefix
+    - i2c-pasemi: Fix NACK detection
+
+ -- maximilian attems <maks@debian.org>  Fri, 30 Nov 2007 11:40:09 +0100
+
+linux-2.6 (2.6.22-6) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * [mips] Add IP22 (SGI Indy) patches from Thomas Bogendoerfer:
+    - Disable EARLY PRINTK because it breaks serial.
+    - fix wrong argument order.
+    - wrong check for second HPC.  Closes: #448488
+
+  [ maximilian attems ]
+  * Add stable release 2.6.22.11 - minus ipv6 abi breaker:
+    - libertas: fix endianness breakage
+    - libertas: more endianness breakage
+    - Fix ROSE module unload oops.
+    - Add get_unaligned to ieee80211_get_radiotap_len
+    - Fix ipv6 redirect processing, leads to TAHI failures.
+    - i915: fix vbl swap allocation size.
+    - Fix ESP host instance numbering.
+    - Fix TCP MD5 on big-endian.
+    - Fix zero length socket write() semantics.
+    - Fix sys_ipc() SEMCTL on sparc64.
+    - Fix TCP initial sequence number selection.
+    - lockdep: fix mismatched lockdep_depth/curr_chain_hash
+    - V4L: ivtv: fix udma yuv bug
+    - Fix TCP's ->fastpath_cnt_hit handling.
+    - hwmon/lm87: Fix a division by zero
+    - hwmon/lm87: Disable VID when it should be
+    - hwmon/w83627hf: Fix setting fan min right after driver load
+    - hwmon/w83627hf: Don't assume bank 0
+    - netdrvr: natsemi: Fix device removal bug
+    - Fix ieee80211 handling of bogus hdrlength field
+    - mac80211: filter locally-originated multicast frames
+    - POWERPC: Fix handling of stfiwx math emulation
+    - dm9601: Fix receive MTU
+    - firewire: fix unloading of fw-ohci while devices are attached
+    - Fix cls_u32 error return handling.
+    - ACPI: disable lower idle C-states across suspend/resume
+  * Add stable release 2.6.22.12-rc1:
+    - genirq: cleanup mismerge artifact
+    - genirq: suppress resend of level interrupts
+    - genirq: mark io_apic level interrupts to avoid resend
+    - IB/uverbs: Fix checking of userspace object ownership
+    - minixfs: limit minixfs printks on corrupted dir i_size (CVE-2006-6058)
+    - param_sysfs_builtin memchr argument fix
+    - x86: fix global_flush_tlb() bug
+    - dm snapshot: fix invalidation deadlock
+    - Revert "x86_64: allocate sparsemem memmap above 4G"
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.2.0.5.
+    - Ignore symbols from never to be merged patch.
+
+ -- maximilian attems <maks@debian.org>  Sun,  4 Nov 2007 17:35:51 +0100
+
+linux-2.6 (2.6.22-5) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add stable release 2.6.22.6:
+    - USB: allow retry on descriptor fetch errors
+    - PCI: lets kill the 'PCI hidden behind bridge' message
+    - Netfilter: Missing Kbuild entry for netfilter
+    - Fix soft-fp underflow handling.
+    - SPARC64: Fix sparc64 task stack traces.
+    - TCP: Do not autobind ports for TCP sockets
+    - DCCP: Fix DCCP GFP_KERNEL allocation in atomic context
+    - NET: Share correct feature code between bridging and bonding
+    - SNAP: Fix SNAP protocol header accesses.
+    - NET: Fix missing rcu unlock in __sock_create()
+    - IPv6: Invalid semicolon after if statement
+    - TCP: Fix TCP rate-halving on bidirectional flows.
+    - TCP: Fix TCP handling of SACK in bidirectional flows.
+    - uml: fix previous request size limit fix
+    - usb: add PRODUCT, TYPE to usb-interface events
+    - PPP: Fix PPP buffer sizing.
+    - ocfs2: Fix bad source start calculation during kernel writes
+    - signalfd: fix interaction with posix-timers
+    - signalfd: make it group-wide, fix posix-timers scheduling
+    - USB: fix DoS in pwc USB video driver
+    - sky2: don't clear phy power bits
+    - PCI: disable MSI on RS690
+    - PCI: disable MSI on RD580
+    - PCI: disable MSI on RX790
+    - IPV6: Fix kernel panic while send SCTP data with IP fragments
+    - i386: fix lazy mode vmalloc synchronization for paravirt
+  * Set abi to 3.
+  * Add stable release 2.6.22.7: (CVE-2007-4573)
+    - x86_64: Zero extend all registers after ptrace in 32bit entry path.
+  * Add stable release 2.6.22.8: (CVE-2007-4571)
+    - Convert snd-page-alloc proc file to use seq_file
+  * Add stable release 2.6.22.9:
+    - 3w-9xxx: Fix dma mask setting
+    - Fix pktgen src_mac handling.
+    - nfs: fix oops re sysctls and V4 support
+    - DVB: get_dvb_firmware: update script for new location of tda10046 firmware
+    - afs: mntput called before dput
+    - disable sys_timerfd()
+    - Fix "Fix DAC960 driver on machines which don't support 64-bit DMA"
+    - futex_compat: fix list traversal bugs
+    - MTD: Initialise s_flags in get_sb_mtd_aux()
+    - Fix sparc64 v100 platform booting.
+    - Fix IPV6 DAD handling
+    - ext34: ensure do_split leaves enough free space in both blocks
+    - dir_index: error out instead of BUG on corrupt dx dirs
+    - Fix oops in vlan and bridging code
+    - V4L: ivtv: fix VIDIOC_S_FBUF: new OSD values were never set
+    - crypto: blkcipher_get_spot() handling of buffer at end of page
+    - Fix datagram recvmsg NULL iov handling regression.
+    - Handle snd_una in tcp_cwnd_down()
+    - Fix TCP DSACK cwnd handling
+    - JFFS2: fix write deadlock regression
+    - hwmon: End of I/O region off-by-one
+    - Fix debug regression in video/pwc
+    - splice: fix direct splice error handling
+    - Fix race with shared tag queue maps
+    - Fix ipv6 source address handling.
+    - POWERPC: Flush registers to proper task context
+    - bcm43xx: Fix cancellation of work queue crashes
+    - Fix DAC960 driver on machines which don't support 64-bit DMA
+    - DVB: get_dvb_firmware: update script for new location of sp8870 firmware
+    - USB: fix linked list insertion bugfix for usb core
+    - Correctly close old nfsd/lockd sockets.
+    - Fix IPSEC AH4 options handling
+    - setpgid(child) fails if the child was forked by sub-thread
+    - sigqueue_free: fix the race with collect_signal()
+    - Fix decnet device address listing.
+    - Fix inet_diag OOPS.
+    - Leases can be hidden by flocks
+    - kconfig: oldconfig shall not set symbols if it does not need to
+    - MTD: Makefile fix for mtdsuper
+    - firewire: fw-ohci: ignore failure of pci_set_power_state
+      (fix suspend regression)
+    - ieee1394: ohci1394: fix initialization if built non-modular
+    - Fix device address listing for ipv4.
+    - Fix tc_ematch kbuild
+    - V4L: cx88: Avoid a NULL pointer dereference during mpeg_open()
+    - DVB: b2c2-flexcop: fix Airstar HD5000 tuning regression
+    - fix realtek phy id in forcedeth
+    - rpc: fix garbage in printk in svc_tcp_accept()
+    - Fix IPV6 append OOPS.
+    - Fix ipv6 double-sock-release with MSG_CONFIRM
+    - ACPI: Validate XSDT, use RSDT if XSDT fails
+  * Update vserver patch to 2.2.0.4.
+  * Add stable release 2.6.22.10:
+    - i386: Use global flag to disable broken local apic timer on AMD CPUs.
+    - Fix timer_stats printout of events/sec
+    - libata: update drive blacklists
+    - i2c-algo-bit: Read block data bugfix
+    - scsi_transport_spi: fix domain validation failure from incorrect width
+      setting
+    - Fix SMP poweroff hangs
+    - Fix ppp_mppe kernel stack usage.
+    - sky2: reduce impact of watchdog timer
+    - sky2: fix VLAN receive processing
+    - sky2: fix transmit state on resume
+    - SELinux: clear parent death signal on SID transitions
+    - NLM: Fix a circular lock dependency in lockd
+    - NLM: Fix a memory leak in nlmsvc_testlock
+
+  [ Martin Michlmayr ]
+  * [mips] Add a fix so qemu NE2000 will work again.
+  * [mipsel/r5k-cobalt] Enable MTD.
+  * [mips] Backport "Fix CONFIG_BUILD_ELF64 kernels with symbols in
+    CKSEG0" to fix crash on boot on IP32 (SGI O2).  Closes: #444104.
+
+  [ Steve Langasek ]
+  * Set CONFIG_MATHEMU=y on alpha, which is required for proper fp math on
+    at least ev4-ev56 systems.  Closes: #411813.
+  * linux-image packages need to depend on a newer version of coreutils,
+    because of the use of readlink -q -m inherited from kernel-package.
+    Closes: #413311.
+
+  [ Bastian Blank ]
+  * Fix tainted check in bug scripts.
+
+  [ dann frazier ]
+  * [ia64] Re-enable various unintentionally disabled config options
+
+ -- Maximilian Attems <maks@debian.org>  Thu, 11 Oct 2007 13:31:38 +0000
+
+linux-2.6 (2.6.22-4) unstable; urgency=low
+
+  [ dann frazier ]
+  * [hppa] Use generic compat_sys_getdents (closes: #431773)
+
+  [ Martin Michlmayr ]
+  * [powerpc] Fix PS/2 keyboard detection on Pegasos (closes: #435378).
+
+  [ Emanuele Rocca ]
+  * [sparc] Add patch to fix PCI config space accesses on sun4u.
+  * [sparc] Disable CONFIG_SCSI_SCAN_ASYNC.
+
+  [ maximilian attems ]
+  * Add stable release 2.6.22.2:
+    - usb-serial: Fix edgeport regression on non-EPiC devices
+    - Missing header include in ipt_iprange.h
+    - drivers/video/macmodes.c:mac_find_mode() mustn't be __devinit
+    - Fix ipv6 tunnel endianness bug.
+    - aacraid: fix security hole
+    - USB: cdc-acm: fix sysfs attribute registration bug
+    - USB: fix warning caused by autosuspend counter going negative
+    - Fix sparc32 memset()
+    - Fix leak on /proc/lockdep_stats
+    - Fix leaks on /proc/{*/sched, sched_debug, timer_list, timer_stats}
+    - futex: pass nr_wake2 to futex_wake_op
+    - md: handle writes to broken raid10 arrays gracefully
+    - forcedeth bug fix: cicada phy
+    - forcedeth bug fix: vitesse phy
+    - forcedeth bug fix: realtek phy
+    - ACPI: dock: fix opps after dock driver fails to initialize
+    - pcmcia: give socket time to power down
+    - drm/i915: Fix i965 secured batchbuffer usage (CVE-2007-3851)
+    - Fix console write locking in sparc drivers.
+    - Sparc64 bootup assembler bug
+    - IPV6: /proc/net/anycast6 unbalanced inet6_dev refcnt
+    - make timerfd return a u64 and fix the __put_user
+    - Fix error queue socket lookup in ipv6
+    - Input: lifebook - fix an oops on Panasonic CF-18
+    - readahead: MIN_RA_PAGES/MAX_RA_PAGES macros
+    - V4L: Add check for valid control ID to v4l2_ctrl_next
+    - V4L: ivtv: fix broken VBI output support
+    - V4L: ivtv: fix DMA timeout when capturing VBI + another stream
+    - V4L: ivtv: Add locking to ensure stream setup is atomic
+    - V4L: wm8775/wm8739: Fix memory leak when unloading module
+    - do not limit locked memory when RLIMIT_MEMLOCK is RLIM_INFINITY
+    - Include serial_reg.h with userspace headers (closes: #433755)
+    - TCP FRTO retransmit bug fix
+    - Fix rfkill IRQ flags.
+    - nfsd: fix possible read-ahead cache and export table corruption
+    - nfsd: fix possible oops on re-insertion of rpcsec_gss modules
+    - jbd commit: fix transaction dropping
+    - jbd2 commit: fix transaction dropping
+    - softmac: Fix ESSID problem
+    - uml: limit request size on COWed devices
+    - UML: exports for hostfs
+    - splice: fix double page unlock
+    - cfq-iosched: fix async queue behaviour
+    - cr_backlight_probe() allocates too little storage for struct cr_panel
+    - sx: switch subven and subid values
+    - hugetlb: fix race in alloc_fresh_huge_page()
+    - KVM: SVM: Reliably detect if SVM was disabled by BIOS
+    - dm io: fix another panic on large request
+    - md: raid10: fix use-after-free of bio
+    - fs: 9p/conv.c error path fix
+    - Fix sparc32 udelay() rounding errors.
+    - sony-laptop: fix bug in event handling
+    - eCryptfs: ecryptfs_setattr() bugfix
+    - Hangup TTY before releasing rfcomm_dev
+    - dm io: fix panic on large request
+    - dm raid1: fix status
+    - dm snapshot: permit invalid activation
+    - "ext4_ext_put_in_cache" uses __u32 to receive physical block number
+    - destroy_workqueue() can livelock
+    - USB: fix for ftdi_sio quirk handling
+    - Fix TC deadlock.
+    - Fix IPCOMP crashes.
+    - gen estimator timer unload race
+    - Netfilter: Fix logging regression
+    - Fix user struct leakage with locked IPC shem segment
+    - Fix reported task file values in sense data
+    - gen estimator deadlock fix
+    - Netpoll leak
+    - dm: disable barriers
+    - firewire: fw-sbp2: set correct maximum payload (fixes CardBus adapters)
+    - fw-ohci: fix "scheduling while atomic"
+    - firewire: fix memory leak of fw_request instances
+    - ieee1394: revert "sbp2: enforce 32bit DMA mapping"
+    - libata: add FUJITSU MHV2080BH to NCQ blacklist
+    - i386: HPET, check if the counter works
+    - CPU online file permission
+    - acpi-cpufreq: Proper ReadModifyWrite of PERF_CTL MSR
+    - Keep rfcomm_dev on the list until it is freed
+    - SCTP scope_id handling fix
+    - Fix ipv6 link down handling.
+    - Fix TCP IPV6 MD5 bug.
+    - sysfs: release mutex when kmalloc() failed in sysfs_open_file().
+    - nf_conntrack: don't track locally generated special ICMP error
+  * Bump abi due to firewire, ivtv and xrfm changes.
+  * Add stable release 2.6.22.3:
+    - fix oops in __audit_signal_info()
+    - direct-io: fix error-path crashes
+    - powerpc: Fix size check for hugetlbfs
+    - stifb: detect cards in double buffer mode more reliably
+    - pata_atiixp: add SB700 PCI ID
+    - PPC: Revert "[POWERPC] Add 'mdio' to bus scan id list for platforms
+      with QE UEC"
+    - random: fix bound check ordering (CVE-2007-3105)
+    - softmac: Fix deadlock of wx_set_essid with assoc work
+    - PPC: Revert "[POWERPC] Don't complain if size-cells == 0 in prom_parse()"
+    - ata_piix: update map 10b for ich8m
+    - CPUFREQ: ondemand: fix tickless accounting and software coordination bug
+    - CPUFREQ: ondemand: add a check to avoid negative load calculation
+  * Add stable release 2.6.22.4:
+    - Reset current->pdeath_signal on SUID binary execution (CVE-2007-3848)
+  * Add stable release 2.6.22.5:
+    - x86_64: Check for .cfi_rel_offset in CFI probe
+    - x86_64: Change PMDS invocation to single macro
+    - i386: Handle P6s without performance counters in nmi watchdog
+    - revert "x86, serial: convert legacy COM ports to platform devices"
+    - ACPICA: Fixed possible corruption of global GPE list
+    - ACPICA: Clear reserved fields for incoming ACPI 1.0 FADTs
+    - i386: Fix double fault handler
+    - JFFS2 locking regression fix.
+    - r8169: avoid needless NAPI poll scheduling
+    - Linux 2.6.22.5
+    - AVR32: Fix atomic_add_unless() and atomic_sub_unless()
+    - i386: allow debuggers to access the vsyscall page with compat vDSO
+    - hwmon: (smsc47m1) restore missing name attribute
+    - hwmon: fix w83781d temp sensor type setting
+    - Hibernation: do not try to mark invalid PFNs as nosave
+    - sky2: restore workarounds for lost interrupts
+    - sky2: carrier management
+    - sky2: check for more work before leaving NAPI
+    - sky2: check drop truncated packets
+    - forcedeth: fix random hang in forcedeth driver when using netconsole
+    - libata: add ATI SB700 device IDs to AHCI driver
+
+  [ dann frazier ]
+  * [ia64] Restore config cleanup now that its safe to break the ABI
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.2.0.3.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 30 Aug 2007 20:19:44 +0200
+
+linux-2.6 (2.6.22-3) unstable; urgency=low
+
+  [ dann frazier ]
+  * [ia64] Config cleanup in 2.6.22-2 broke the ABI; revert most of it
+    for now (everything but the efivars and sym53c8xx modules)
+
+  [ Martin Michlmayr ]
+  * [mipsel/r5k-cobalt] Fix a typo in the config file.
+  * [mipsel/4kc-malta] Update the config file, thanks Aurelien Jarno.
+  * [mipsel] Add patch from Yoichi Yuasa to fix IDE on Cobalt.
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 29 Jul 2007 13:47:38 +0200
+
+linux-2.6 (2.6.22-2) unstable; urgency=low
+
+  [ Steve Langasek ]
+  * [alpha] request_irq-retval.patch: capture the return value of all
+    request_irq() calls in sys_titan.c to suppress the warning (and
+    build failure with -Werror); failures still aren't being handled, but
+    there's nothing that needs to be done -- or nothing that can be done
+    -- if these requests fail anyway.
+
+  [ Christian T. Steigies ]
+  * Add module.lds to kernel headers (closes: #396220)
+  * Enable INPUT_UINPUT on mac
+  * Add 2.6.22 patches from linux-m68k CVS
+
+  [ maximilian attems ]
+  * Add stable release 2.6.22.1:
+    - nf_conntrack_h323: add checking of out-of-range on choices' index values
+      (CVE-2007-3642)
+
+  [ dann frazier ]
+  * [ia64] Re-enable various config options which were unintentionally
+    disabled somewhere between 2.6.21 and 2.6.22
+  * [ia64] Re-enable vserver flavour - this was somehow lost when 2.6.22
+    was merged from trunk to the sid branch
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.2.0.3-rc1.
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 23 Jul 2007 09:38:01 +0200
+
+linux-2.6 (2.6.22-1) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Drop asfs options.
+  * Drop linux-libc-headers references.
+  * Update vserver patch to 2.2.0-rc5.
+
+  [ maximilian attems ]
+  * Fullfils policy 3.7.2.2.
+  * Add Sempron to the k7 image description (closes: #384737)
+    Thanks Robert Millan <rmh@aybabtu.com>.
+  * [powerpc] Enable CONFIG_ADB_PMU_LED.
+  * [hppa] Disable a bunch of topconfig enabled fb devices. Thanks Frank
+    Lichtenheld <djpig@debian.org> for build fix.
+
+  [ Christian T. Steigies ]
+  * Add module.lds to kernel headers
+  * Enable INPUT_UINPUT on mac
+  * Add 2.6.22 patches from linux-m68k CVS
+
+  [ dann frazier ]
+  * Enable vserver flavour for ia64 (closes: #423232)
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 15 Jul 2007 15:03:40 +0200
+
+linux-2.6 (2.6.22~rc5-1~experimental.1) experimental; urgency=low
+
+  [ Bastian Blank ]
+  * [powerpc]: Disable prep.
+  * [powerpc]: Disable apm emulation.
+  * Drop inactive members from Uploaders.
+
+  [ maximilian attems ]
+  * Cleanup configs of old unused variables.
+  * Enable TCP_CONG_YEAH, TCP_CONG_ILLINOIS, NF_CONNTRACK_SANE, DM_DELAY,
+    GIGASET_M101, SATA_INIC162X, VIDEO_IVTV, USB_ZR364XX, INFINIBAND_CXGB3,
+    MLX4_INFINIBAND, SPI_AT25, MFD_SM501, DVB_USB_M920X, DVB_USB_GL861,
+    DVB_USB_AU6610, DVB_USB_OPERA1, SENSORS_AD7418, SENSORS_ADM1029,
+    SENSORS_F75375S, SENSORS_CORETEMP, SENSORS_MAX6650, SENSORS_APPLESMC,
+    I2C_SIMTEC, I2C_TINY_USB, SC92031, LIBERTAS_USB, RFKILL, RFKILL_INPUT,
+    MTD_UBI, SND_USB_CAIAQ, SND_USB_CAIAQ_INPUT, USB_BERRY_CHARGE,
+    RTC_DRV_MAX6900, SUNRPC_BIND34, SND_PORTMAN2X4, FB_VT8623, FUSION_LAN,
+    DISPLAY_SUPPORT, FB_ARK, FB_SM501
+    and disable SCSI_ESP_CORE, SPI_SPIDEV, CRYPT_CRYPTD, SYSV68_PARTITION,
+    MOUSE_PS2_TOUCHKIT, INPUT_POLLDEV in topconfig.
+  * [amd64, i386]: Take care of the renaming acpi-ibm to thinkpad-acpi.
+    Enable KINGSUN_DONGLE, AF_RXRPC, RXKAD, MTD_NAND_PLATFORM, BLINK, PHANTOM,
+    BACKLIGHT_PROGEAR, FB_HECUBA, FB_LE80578, FB_CARILLO_RANCH.
+    Disable OSS_OBSOLETE.
+  * Enable WLAN_PRE80211 and WLAN_80211 on all archs with NET_RADIO enabled.
+  * Fix RTC_INTF_{DEV,SYSFS,PROC}=y where enabled modular.
+  * Enable new wirless stack mac80211 and improved wireless conf api.
+  * Enable new USB Touchscreen Driver on all configs with touchscreens.
+  * Enable the newly added crypto algorythm: fcrypt, pcbc and camellia.
+  * Unify CONFIG_TR to toplevel config, also enable new drivers 3C359
+    and SMCTR.
+  * Enable the moved USB tablets config options where wacom is enabled.
+  * [i386] Enable driver for Crystalfontz 128x64 2-color LCD.
+  * [amd64] Enable KS0108 LCD controller.
+  * Enable the new firewire stack labeled to be more simple and robust.
+  * [i386] Enable VMI paravirtualized interface.
+  * [powerpc] Enable fb for IBM GXT4500P adaptor.
+  * [amd64] Enable timerstats too.
+
+  [ Martin Michlmayr ]
+  * mipsel/r5k-cobalt: Use the new RTC system.
+
+  [ dann frazier ]
+  * Add Xen licensing info to the copyright file. (closes: #368912)
+
+  [ Gordon Farquharson ]
+  * arm: Mark CHELSIO_T3, NETXEN_NIC, BCM43XX, VIDEO_BT848,
+    DVB_B2C2_FLEXCOP, and DVB_BUDGET as broken on ARM.
+  * arm/ixp4xx: Add support for the new generic I2C GPIO driver on the
+    NSLU2 and the NAS100D. Thanks to Michael-Luke Jones and Rod Whitby.
+  * arm/ixp4xx: Update Artop PATA support patch for the NAS 100d.
+
+  [ Christian T. Steigies ]
+  * m68k: Disable already included patches (611, 618, 630)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 19 Jun 2007 17:49:52 +0200
+
+linux-2.6 (2.6.21-6) unstable; urgency=low
+
+  * Add stable release 2.6.21.6:
+    - nf_conntrack_h323: add checking of out-of-range on choices' index values
+      (CVE-2007-3642)
+  * Update vserver patch to 2.2.0.
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 10 Jul 2007 18:36:17 +0200
+
+linux-2.6 (2.6.21-5) unstable; urgency=low
+
+  [ Christian T. Steigies ]
+  * [m68k] Add atari isa and scsi fixes
+
+  [ maximilian attems ]
+  * Add stable release 2.6.21.4:
+    - cpuset: prevent information leak in cpuset_tasks_read (CVE-2007-2875)
+    - random: fix error in entropy extraction (CVE-2007-2453 1 of 2)
+    - random: fix seeding with zero entropy (CVE-2007-2453 2 of 2)
+    - NETFILTER: {ip, nf}_conntrack_sctp: fix remotely triggerable NULL ptr
+      dereference (CVE-2007-2876)
+  * Add stable release 2.6.21.5:
+    - acpi: fix potential call to a freed memory section.
+    - USB: set the correct Interrupt interval in usb_bulk_msg
+    - i386: Fix K8/core2 oprofile on multiple CPUs
+    - ntfs_init_locked_inode(): fix array indexing
+    - ALSA: wm8750 typo fix
+    - neofb: Fix pseudo_palette array overrun in neofb_setcolreg
+    - e1000: disable polling before registering netdevice
+    - timer statistics: fix race
+    - x86: fix oprofile double free
+    - ALSA: usb-audio: explicitly match Logitech QuickCam
+    - zd1211rw: Add AL2230S RF support
+    - IPV4: Correct rp_filter help text.
+    - Fix AF_UNIX OOPS
+    - ICMP: Fix icmp_errors_use_inbound_ifaddr sysctl
+    - NET: Fix BMSR_100{HALF,FULL}2 defines in linux/mii.h
+    - SPARC64: Fix _PAGE_EXEC_4U check in sun4u I-TLB miss handler.
+    - SPARC64: Don't be picky about virtual-dma values on sun4v.
+    - SPARC64: Fix two bugs wrt. kernel 4MB TSB.
+    - cciss: fix pci_driver.shutdown while device is still active
+    - fix compat console unimap regression
+    - timer stats: speedups
+    - SPARC: Linux always started with 9600 8N1
+    - pci_ids: update patch for Intel ICH9M
+    - PCI: quirk disable MSI on via vt3351
+    - UML - Improve host PTRACE_SYSEMU check
+    - NET: parse ip:port strings correctly in in4_pton
+    - Char: cyclades, fix deadlock
+    - IPSEC: Fix panic when using inter address familiy IPsec on loopback.
+    - TCP: Use default 32768-61000 outgoing port range in all cases.
+    - TG3: Fix link problem on Dell's onboard 5906.
+    - fuse: fix mknod of regular file
+    - md: Avoid overflow in raid0 calculation with large components.
+    - md: Don't write more than is required of the last page of a bitmap
+    - make freezeable workqueues singlethread
+    - tty: fix leakage of -ERESTARTSYS to userland
+    - V4L/DVB (5593): Budget-ci: Fix tuning for TDM 1316 (160..200 MHz)
+    - Input: i8042 - fix AUX port detection with some chips
+    - SCSI: aacraid: Correct sa platform support.
+      (Was: [Bug 8469] Bad EIP value on pentium3 SMP kernel-2.6.21.1)
+    - BLUETOOTH: Fix locking in hci_sock_dev_event().
+    - hpt366: don't check enablebits for HPT36x
+    - ieee1394: eth1394: bring back a parent device
+    - NET: Fix race condition about network device name allocation.
+    - ALSA: hda-intel - Probe additional slots only if necessary
+    - ALSA: hda-intel - Fix detection of audio codec on Toshiba A100
+    - ahci: disable 64bit dma on sb600
+    - i386: HPET, check if the counter works
+    - Ignore bogus ACPI info for offline CPUs
+    - NOHZ: Rate limit the local softirq pending warning output
+    - Prevent going idle with softirq pending
+    - Work around Dell E520 BIOS reboot bug
+    - NET: "wrong timeout value" in sk_wait_data() v2
+    - IPV6 ROUTE: No longer handle ::/0 specially.
+    - x86_64: allocate sparsemem memmap above 4G
+  * Bump ABI to 2.
+
+  [ Bastian Blank ]
+  * Back out ABI fixing changes.
+  * Update vserver patch to 2.2.0-rc3.
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 22 Jun 2007 12:39:47 +0200
+
+linux-2.6 (2.6.21-4) unstable; urgency=low
+
+  * [powerpc] Fix mkvmlinuz support.
+  * [s390] Add exception handler for diagnose 224.
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 26 May 2007 14:08:44 +0200
+
+linux-2.6 (2.6.21-3) unstable; urgency=low
+
+  [ Gordon Farquharson ]
+  * arm/ixp4xx: Add patch to set NSLU2 timer frequency.
+
+  [ maximilian attems ]
+  * sparc64: enable USB_SERIAL. (closes: #412740)
+  * Apply stable 2.6.21.1.
+  * Add stable release 2.6.21.2:
+    - slob: fix page order calculation on not 4KB page
+    - libata-sff: Undo bug introduced with pci_iomap changes
+    - kbuild: fixdep segfault on pathological string-o-death
+    - IPMI: fix SI address space settings
+    - IPV6: Reverse sense of promisc tests in ip6_mc_input
+    - iop: fix iop_getttimeoffset
+    - iop13xx: fix i/o address translation
+    - arm: fix handling of svc mode undefined instructions
+    - CPUFREQ: powernow-k7: fix MHz rounding issue with perflib
+    - CPUFREQ: Support rev H AMD64s in powernow-k8
+    - CPUFREQ: Correct revision mask for powernow-k8
+    - JFS: Fix race waking up jfsIO kernel thread
+    - IPV6: Send ICMPv6 error on scope violations.
+    - SPARC64: Add missing cpus_empty() check in hypervisor xcall handling.
+    - SPARC64: Fix recursion in PROM tree building.
+    - SERIAL SUNHV: Add an ID string.
+    - SPARC64: Bump PROMINTR_MAX to 32.
+    - SPARC64: Be more resiliant with PCI I/O space regs.
+    - oom: fix constraint deadlock
+    - fix for bugzilla 8426: massive slowdown on SCSI CD/DVD drive connected to
+      mptspi driver
+    - x86_64 : Fix vgettimeofday()
+    - IPV6: Fix slab corruption running ip6sic
+    - IPSEC: Check validity of direction in xfrm_policy_byid
+    - CRYPTO: api: Read module pointer before freeing algorithm
+    - NET_SCHED: prio qdisc boundary condition
+    - reiserfs: suppress lockdep warning
+    - USB HID: hiddev - fix race between hiddev_send_event() and
+      hiddev_release()
+    - NETFILTER: {ip,nf}_nat_proto_gre: do not modify/corrupt GREv0 packets
+      through NAT
+    - fix leaky resv_huge_pages when cpuset is in use
+    - ACPI: Fix 2.6.21 boot regression on P4/HT
+    - TG3: Fix TSO bugs.
+    - TG3: Remove reset during MAC address changes.
+    - TG3: Update version and reldate.
+    - BNX2: Fix TSO problem with small MSS.
+    - BNX2: Block MII access when ifdown.
+    - BNX2: Save PCI state during suspend.
+    - BNX2: Update version and reldate.
+    - sis900: Allocate rx replacement buffer before rx operation
+    - knfsd: Avoid use of unitialised variables on error path when nfs exports.
+    - knfsd: rpc: fix server-side wrapping of krb5i replies
+    - md: Avoid a possibility that a read error can wrongly propagate through
+    - md/raid1 to a filesystem.
+    - fat: fix VFAT compat ioctls on 64-bit systems
+    - NETFILTER: {ip,nf}_conntrack: fix use-after-free in helper destroy
+      callback invocation
+    - ppp: Fix ppp_deflate issues with recent zlib_inflate changes
+    - NETPOLL: Fix TX queue overflow in trapped mode.
+    - NETPOLL: Remove CONFIG_NETPOLL_RX
+    - cxacru: Fix infinite loop when trying to cancel polling task
+    - TCP: zero out rx_opt in tcp_disconnect()
+    - ipv6: track device renames in snmp6
+    - skge: default WOL should be magic only (rev2)
+    - skge: allow WOL except for known broken chips
+    - sky2: allow 88E8056
+    - sky2: 88e8071 support not ready
+    - skge: crash on shutdown/suspend
+    - sky2: fix oops on shutdown
+    - udf: decrement correct link count in udf_rmdir
+    - ALSA: hda-codec - Fix resume of STAC92xx codecs
+    - sata_via: add missing PM hooks
+    - driver-core: don't free devt_attr till the device is released
+    - pci-quirks: disable MSI on RS400-200 and RS480
+    - highres/dyntick: prevent xtime lock contention
+    - clocksource: fix resume logic
+    - smc911x: fix compilation breakage wjen debug is on
+    - SCTP: Fix sctp_getsockopt_local_addrs_old() to use local storage.
+    - SCTP: Correctly copy addresses in sctp_copy_laddrs
+    - SCTP: Prevent OOPS if hmac modules didn't load
+    - IPV6: Do no rely on skb->dst before it is assigned.
+    - IPV6 ROUTE: Assign rt6i_idev for ip6_{prohibit,blk_hole}_entry.
+
+  [ Christian T. Steigies ]
+  * m68k: enable ATARI_SCSI and ATARI_ROM_ISA
+
+  [ Bastian Blank ]
+  * Fix linux/version.h in linux-libc-dev.
+  * Make it possible to specifiy special CFLAGS.
+  * [hppa] Reenable.
+  * [hppa] Workaround hppa64 failure.
+  * [hppa] Fix debugging in lws syscalls.
+  * Fix abi change.
+  * Add stable release 2.6.21.3:
+    - [PATCH] GEODE-AES: Allow in-place operations [CVE-2007-2451]
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 25 May 2007 10:57:48 +0200
+
+linux-2.6 (2.6.21-2) unstable; urgency=low
+
+  [ Christian T. Steigies ]
+  * m68k: fix atari scc patch
+  * m68k: install compressed vmlinuz images so the post-inst script can find it
+
+  [ Steve Langasek ]
+  * [alpha] isa-mapping-support.patch: add isa_page_to_bus and
+    isa_bus_to_virt defines to complement the existing isa_virt_to_bus
+    define; untested, but these should all be straightforward on alpha and
+    defining them is certainly a better option for getting user feedback
+    than disabling the affected drivers.
+
+  [ Bastian Blank ]
+  * [powerpc] Readd mkvmlinuz support. (closes: #419033)
+  * [sparc]: Disable sparc32 image.
+  * [hppa]: Temporary disable all images.
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 18 May 2007 19:52:36 +0200
+
+linux-2.6 (2.6.21-1) unstable; urgency=low
+
+  [ maximilian attems ]
+  * New upstream release see http://kernelnewbies.org/Linux_2_6_21
+    (closes: #423874)
+  * Disable CONFIG_IP_ROUTE_MULTIPATH_CACHED in topconfig.
+  * Enable CONFIG_IP6_NF_MATCH_MH, CONFIG_CHELSIO_T3, CONFIG_USB_NET_DM9601,
+    CONFIG_NETFILTER_XT_TARGET_TCPMSS, CONFIG_RTC_DRV_CMOS,
+    CONFIG_ASUS_LAPTOP, CONFIG_SONY_LAPTOP, CONFIG_DVB_TUNER_QT1010,
+    CONFIG_USB_IOWARRIOR, CONFIG_ATL1 in topconfig.
+  * [i386] Enable CONFIG_ACPI_BAY, CONFIG_X86_LONGHAUL, CONFIG_BLK_DEV_DELKIN,
+    CONFIG_BLK_DEV_IT8213, CONFIG_BLK_DEV_TC86C001, CONFIG_INPUT_ATLAS_BTNS,
+    CONFIG_SENSORS_ADM1029, CONFIG_FB_SVGALIB, CONFIG_FB_S3,
+    CONFIG_USB_KC2190, CONFIG_KS0108.
+  * Add stable release 2.6.21.1:
+    - IPV4: Fix OOPS'er added to netlink fib.
+    - IPV6: Fix for RT0 header ipv6 change.
+  * [i386] Enable CONFIG_NO_HZ, CONFIG_HIGH_RES_TIMERS for dynticks and true
+    high-resolution timers.
+  * [i386] Enable CONFIG_TIMER_STATS to collect stats about kernel/userspace
+    timer aka power usage (see powertop). (closes: #423694)
+  * [i386] Disable obsolete CONFIG_IRQBALANCE due to bad timer behaviour.
+
+  [ Martin Michlmayr ]
+  * Add armel (arm with EABI) support.  Thanks, Lennert Buytenhek and
+    Joey Hess.  (closes: #410853)
+  * Mark CHELSIO_T3 as broken on ARM.
+  * Take arch/arm/tools/mach-types from current git to fix build failure
+    because MACH_TYPE_EP80219 is not defined.
+  * mips/sb1: Don't build CONFIG_ATA into the kernel.
+  * mips/sb1: Unset CONFIG_USB_{KBD,MOUSE} since the generic HID is used.
+  * arm/iop32x: Don't build CONFIG_ATA into the kernel.
+  * arm/ixp4xx: Enable more SATA drivers.
+  * arm/ixp4xx: Enable PATA_ARTOP which is needed by the nas100d.
+  * arm/ixp4xx: Set CONFIG_USB_EHCI_TT_NEWSCHED.
+  * mips/4kc-malta: Add an image for the MIPS Malta board.  Thanks,
+    Aurelien Jarno. (closes: #421377)
+
+  [ Emanuele Rocca ]
+  * sparc: Enable CONFIG_SCSI_QLOGIC_1280. (closes: #423177)
+
+  [ Christian T. Steigies ]
+  * Add m68k patches for 2.6.21
+  * Add type: plain to [image] in arch/m68k/defines to fix missing
+    Modules.symvers problem
+
+  [ Steve Langasek ]
+  * Revert change to disable image building on alpha.
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.2.0-rc1.
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 16 May 2007 13:46:38 +0200
+
+linux-2.6 (2.6.20-3) unstable; urgency=low
+
+  [ Gordon Farquharson ]
+  * arm: Mark CONFIG_MTD_NAND_CAFE and CONFIG_NETXEN_NIC as broken to
+    fix FTBFS.
+
+  [ Bastian Blank ]
+  * Disable new pata drivers. (closes: #419458)
+  * Disable pata in ata_piix.
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 24 Apr 2007 09:54:44 +0200
+
+linux-2.6 (2.6.20-2) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Rename linux-libc-headers into linux-libc-dev.
+  * [mips] Drop sb1250 uart support.
+  * [alpha] Temporary disable alpha images.
+  * Add stable release 2.6.20.7:
+    - Linux 2.6.20.7
+    - Update libata drive blacklist to the latest from 2.6.21
+    - fix page leak during core dump
+    - revert "retries in ext4_prepare_write() violate ordering requirements"
+    - revert "retries in ext3_prepare_write() violate ordering requirements"
+    - libata: Clear tf before doing request sense (take 3)
+    - fix lba48 bug in libata fill_result_tf()
+    - ahci.c: walkaround for SB600 SATA internal error issue
+    - libata bugfix: preserve LBA bit for HDIO_DRIVE_TASK
+    - softmac: avoid assert in ieee80211softmac_wx_get_rate
+    - knfsd: allow nfsd READDIR to return 64bit cookies
+    - Fix TCP slow_start_after_idle sysctl
+    - Fix tcindex classifier ABI borkage...
+    - Fix IPSEC replay window handling
+    - Fix TCP receiver side SWS handling.
+    - Fix scsi sense handling
+    - Fix length validation in rawv6_sendmsg()
+    - NETFILTER: ipt_CLUSTERIP: fix oops in checkentry function
+    - 8139too: RTNL and flush_scheduled_work deadlock
+    - Fix calculation for size of filemap_attr array in md/bitmap.
+    - HID: Do not discard truncated input reports
+    - DVB: pluto2: fix incorrect TSCR register setting
+    - DVB: tda10086: fix DiSEqC message length
+    - sky2: phy workarounds for Yukon EC-U A1
+    - sky2: turn on clocks when doing resume
+    - sky2: turn carrier off when down
+    - skge: turn carrier off when down
+    - sky2: reliable recovery
+    - i386: fix file_read_actor() and pipe_read() for original i386 systems
+    - kbuild: fix dependency generation
+
+  [ dann frazier ]
+  * [hppa] Add parisc arch patch from Kyle McMartin
+  * [hppa] Enable CONFIG_TULIP_MMIO (closes: #332962)
+  * [hppa] Disable ni52 driver, it doesn't build (and wouldn't work if it did)
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 15 Apr 2007 16:04:16 +0200
+
+linux-2.6 (2.6.20-1) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * mipsel: Drop DECstation support (both r3k-kn02 and r4k-kn04).
+  * arm: Drop RiscPC (rpc) support.
+  * arm: Update configs for 2.6.19-rc6.
+  * arm: source drivers/ata/Kconfig so SATA can be enabled on ARM.
+  * arm/footbridge: Unset SATA.
+  * arm/s3c2410: Drop this flavour since no such device is supported
+    in debian-installer and the ARM build resources are limited.
+
+  [ Sven Luther ]
+  * [powerpc] Added Genesi Efika support patch
+
+  [ Bastian Blank ]
+  * Remove legacy pty support. (closes: #338404)
+  * Enable new scsi parts.
+  * powerpc: Enable ibmvscsis.
+  * Add stable release 2.6.20.1:
+    - Linux 2.6.20.1
+    - [PATCH] Fix a free-wrong-pointer bug in nfs/acl server (CVE-2007-0772)
+  * Add stable release 2.6.20.2:
+    - Linux 2.6.20.2
+    - IPV6: Handle np->opt being NULL in ipv6_getsockopt_sticky() [CVE-2007-1000]
+    - x86-64: survive having no irq mapping for a vector
+    - Fix buffer overflow in Omnikey CardMan 4040 driver (CVE-2007-0005)
+    - TCP: Fix minisock tcp_create_openreq_child() typo.
+    - gfs2: fix locking mistake
+    - ATA: convert GSI to irq on ia64
+    - pktcdvd: Correctly set cmd_len field in pkt_generic_packet
+    - video/aty/mach64_ct.c: fix bogus delay loop
+    - revert "drivers/net/tulip/dmfe: support basic carrier detection"
+    - throttle_vm_writeout(): don't loop on GFP_NOFS and GFP_NOIO allocations
+    - fix section mismatch warning in lockdep
+    - ueagle-atm.c needs sched.h
+    - kvm: Fix asm constraint for lldt instruction
+    - lockdep: forward declare struct task_struct
+    - Char: specialix, isr have 2 params
+    - buffer: memorder fix
+    - kernel/time/clocksource.c needs struct task_struct on m68k
+    - m32r: build fix for processors without ISA_DSP_LEVEL2
+    - hugetlb: preserve hugetlb pte dirty state
+    - enable mouse button 2+3 emulation for x86 macs
+    - v9fs_vfs_mkdir(): fix a double free
+    - ufs: restore back support of openstep
+    - Fix MTRR compat ioctl
+    - kexec: Fix CONFIG_SMP=n compilation V2 (ia64)
+    - NLM: Fix double free in __nlm_async_call
+    - RPM: fix double free in portmapper code
+    - Revert "[PATCH] LOG2: Alter get_order() so that it can make use of ilog2() on a constant"
+    - Backport of psmouse suspend/shutdown cleanups
+    - USB: usbnet driver bugfix
+    - sched: fix SMT scheduler bug
+    - tty_io: fix race in master pty close/slave pty close path
+    - forcedeth: disable msix
+    - export blk_recount_segments
+    - Fix reference counting (memory leak) problem in __nfulnl_send() and callers related to packet queueing.
+    - Fix anycast procfs device leak
+    - Don't add anycast reference to device multiple times
+    - Fix TCP MD5 locking.
+    - Fix %100 cpu spinning on sparc64
+    - Fix skb data reallocation handling in IPSEC
+    - Fix xfrm_add_sa_expire() return value
+    - Fix interrupt probing on E450 sparc64 systems
+    - HID: fix possible double-free on error path in hid parser
+    - POWERPC: Fix performance monitor exception
+    - libata: add missing CONFIG_PM in LLDs
+    - libata: add missing PM callbacks
+    - bcm43xx: Fix assertion failures in interrupt handler
+    - mmc: Power quirk for ENE controllers
+    - UML - Fix 2.6.20 hang
+    - fix umask when noACL kernel meets extN tuned for ACLs
+    - sata_sil: ignore and clear spurious IRQs while executing commands by polling
+    - swsusp: Fix possible oops in userland interface
+    - Fix posix-cpu-timer breakage caused by stale p->last_ran value
+    - V4L: cx88-blackbird: allow usage of 376836 and 262144 sized firmware images
+    - V4L: fix cx25840 firmware loading
+    - DVB: digitv: open nxt6000 i2c_gate for TDED4 tuner handling
+    - DVB: cxusb: fix firmware patch for big endian systems
+    - V4L: pvrusb2: Handle larger cx2341x firmware images
+    - V4L: pvrusb2: Fix video corruption on stream start
+    - dvbdev: fix illegal re-usage of fileoperations struct
+    - md: Fix raid10 recovery problem.
+    - bcm43xx: fix for 4309
+    - i386: Fix broken CONFIG_COMPAT_VDSO on i386
+    - x86: Don't require the vDSO for handling a.out signals
+    - x86_64: Fix wrong gcc check in bitops.h
+    - sky2: transmit timeout deadlock
+    - sky2: dont flush good pause frames
+    - Fix oops in xfrm_audit_log()
+    - Prevent pseudo garbage in SYN's advertized window
+    - Fix IPX module unload
+    - Clear TCP segmentation offload state in ipt_REJECT
+    - Fix atmarp.h for userspace
+    - UHCI: fix port resume problem
+    - Fix recently introduced problem with shutting down a busy NFS server.
+    - Avoid using nfsd process pools on SMP machines.
+    - EHCI: turn off remote wakeup during shutdown
+    - IPV6: HASHTABLES: Use appropriate seed for caluculating ehash index.
+    - MTD: Fatal regression in drivers/mtd/redboot.c in 2.6.20
+    - Kconfig: FAULT_INJECTION can be selected only if LOCKDEP is enabled.
+    - USB HID: Fix USB vendor and product IDs endianness for USB HID devices
+    - Fix null pointer dereference in appledisplay driver
+    - ieee1394: fix host device registering when nodemgr disabled
+    - ieee1394: video1394: DMA fix
+    - Fix compile error for e500 core based processors
+    - md: Avoid possible BUG_ON in md bitmap handling.
+    - Fix allocation failure handling in multicast
+    - Fix TCP FIN handling
+    - Fix ATM initcall ordering.
+    - Fix various bugs with aligned reads in RAID5.
+    - hda-intel - Don't try to probe invalid codecs
+    - usbaudio - Fix Oops with unconventional sample rates
+    - usbaudio - Fix Oops with broken usb descriptors
+    - USB: fix concurrent buffer access in the hub driver
+    - Missing critical phys_to_virt in lib/swiotlb.c
+    - AGP: intel-agp bugfix
+    - bcm43xx: Fix for oops on ampdu status
+    - bcm43xx: Fix for oops on resume
+    - ide: fix drive side 80c cable check
+    - Keys: Fix key serial number collision handling
+    - knfsd: Fix a race in closing NFSd connections.
+    - pata_amd: fix an obvious bug in cable detection
+    - prism54: correct assignment of DOT1XENABLE in WE-19 codepaths
+    - rtc-pcf8563: detect polarity of century bit automatically
+    - x86_64: fix 2.6.18 regression - PTRACE_OLDSETOPTIONS should be accepted
+    - ocfs2: ocfs2_link() journal credits update
+  * Update xen patch to changeset 48670 from fedora 2.6.20 branch.
+  * Support xen versions 3.0.4-1 and 3.0.3-1.
+
+  [ Rod Whitby ]
+  * arm/ixp4xx: Enable PATA_ARTOP for the nas100d and dsmg600.
+  * arm/ixp4xx: Enable RTC for the nas100d
+  * Add nas100d Ethernet MAC setup support.
+  * Add temporary hack to get Artop PATA support going on the nas100d.
+
+  [ maximilian attems ]
+  * i386: Enable kvm.
+  * Add stable release 2.6.20.3:
+    - Fix sparc64 device register probing
+    - Fix bug 7994 sleeping function called from invalid context
+    - Fix timewait jiffies
+    - Fix UDP header pointer after pskb_trim_rcsum()
+    - Fix compat_getsockopt
+    - bcm43xx: Fix problem with >1 GB RAM
+    - nfnetlink_log: fix NULL pointer dereference
+    - nfnetlink_log: fix possible NULL pointer dereference
+    - conntrack: fix {nf, ip}_ct_iterate_cleanup endless loops
+    - nf_conntrack/nf_nat: fix incorrect config ifdefs
+    - tcp conntrack: accept SYN|URG as valid
+    - nfnetlink_log: fix reference leak
+    - nfnetlink_log: fix use after free
+    - nf_conntrack: fix incorrect classification of IPv6 fragments as
+      ESTABLISHED
+    - nfnetlink_log: zero-terminate prefix
+    - nfnetlink_log: fix crash on bridged packet
+    - Fix callback bug in connector
+    - fix for bugzilla #7544 (keyspan USB-to-serial converter)
+    - ip6_route_me_harder should take into account mark
+  * Add myself to uploaders field, entry got lost after 2.6.16-2
+  * Add stable release 2.6.20.4:
+    - fix deadlock in audit_log_task_context()
+    - EHCI: add delay to bus_resume before accessing ports
+    - Copy over mac_len when cloning an skb
+    - fix read past end of array in md/linear.c
+    - oom fix: prevent oom from killing a process with children/sibling unkillable
+    - Fix sparc64 hugepage bugs
+    - Fix page allocation debugging on sparc64
+    - Fix niagara memory corruption
+    - Input: i8042 - really suppress ACK/NAK during panic blink
+    - Input: i8042 - fix AUX IRQ delivery check
+    - Input: i8042 - another attempt to fix AUX delivery checks
+    - Fix rtm_to_ifaddr() error return.
+    - r8169: fix a race between PCI probe and dev_open
+    - futex: PI state locking fix
+    - adjust legacy IDE resource setting (v2)
+    - UML - arch_prctl should set thread fs
+    - gdth: fix oops in gdth_copy_cmd()
+    - Fix extraneous IPSEC larval SA creation
+    - IA64: fix NULL pointer in ia64/irq_chip-mask/unmask function
+    - st: fix Tape dies if wrong block size used, bug 7919
+    - Fix ipv6 flow label inheritance
+    - NETFILTER: nfnetlink_log: fix reference counting
+    - mm: fix madvise infinine loop
+    - Fix another NULL pointer deref in ipv6_sockglue.c
+    - NetLabel: Verify sensitivity level has a valid CIPSO mapping
+    - Fix GFP_KERNEL with preemption disabled in fib_trie
+    - IrDA: irttp_dup spin_lock initialisation
+    - hda-intel - Fix codec probe with ATI controllers
+    - hrtimer: prevent overrun DoS in hrtimer_forward()
+    - fix MTIME_SEC_MAX on 32-bit
+    - nfs: nfs_getattr() can't call nfs_sync_mapping_range() for non-regular files
+    - dio: invalidate clean pages before dio write
+    - initialise pi_lock if CONFIG_RT_MUTEXES=N
+  * Add stable release 2.6.20.5:
+    - FRA_{DST,SRC} are le16 for decnet
+    - CIFS: reset mode when client notices that ATTR_READONLY is no longer set
+    - ide: clear bmdma status in ide_intr() for ICHx controllers (revised #4)
+    - ide: remove clearing bmdma status from cdrom_decode_status() (rev #4)
+    - NET: Fix sock_attach_fd() failure in sys_accept()
+    - DCCP: Fix exploitable hole in DCCP socket options
+    - ide: revert "ide: fix drive side 80c cable check, take 2" for now
+    - generic_serial: fix decoding of baud rate
+    - IPV6: Fix ipv6 round-robin locking.
+    - VIDEO: Fix FFB DAC revision probing
+    - PPP: Fix PPP skb leak
+    - V4L: msp_attach must return 0 if no msp3400 was found.
+    - CRYPTO: api: scatterwalk_copychunks() fails to advance through scatterlist
+    - APPLETALK: Fix a remotely triggerable crash (CVE-2007-1357)
+    - UML - fix epoll
+    - UML - host VDSO fix
+    - UML - Fix static linking
+    - UML - use correct register file size everywhere
+    - libata: sata_mv: don't touch reserved bits in EDMA config register
+    - libata: sata_mv: Fix 50xx irq mask
+    - libata bugfix: HDIO_DRIVE_TASK
+    - V4L: Fix SECAM handling on saa7115
+    - DVB: fix nxt200x rf input switching
+    - SPARC: Fix sparc builds with gcc-4.2.x
+    - V4L: saa7146: Fix allocation of clipping memory
+    - uml: fix unreasonably long udelay
+    - NET: Fix packet classidier NULL pointer OOPS
+    - NET_SCHED: Fix ingress qdisc locking.
+    - sata_nv: delay on switching between NCQ and non-NCQ commands
+    - dvb-core: fix several locking related problems
+    - ieee1394: dv1394: fix CardBus card ejection
+    - CIFS: Allow reset of file to ATTR_NORMAL when archive bit not set
+    - jmicron: make ide jmicron driver play nice with libata ones
+    - libata: clear TF before IDENTIFYing
+    - NET: Fix FIB rules compatability
+    - DVB: isl6421: don't reference freed memory
+    - V4L: radio: Fix error in Kbuild file
+    - i2o: block IO errors on i2o disk
+  * Add stable release 2.6.20.6:
+    - CRYPTO api: Use the right value when advancing scatterwalk_copychunks
+    - uml: fix static linking for real
+
+  [ Gordon Farquharson ]
+  * Disable broken config options on ARM.
+
+  [ Frederik Schüler ]
+  * Disable NAPI on forcedeth, it is broken.
+
+  [ dann frazier ]
+  * Hardcode the output of the scripts under arch/ia64/scripts as executed
+    in an etch environment so that we can build out of tree modules correctly
+    (re-add; patch seems to have been dropped during a merge.)
+    See: #392592
+  * Allow '.' and '+' in the target dist field of the changelog. dpkg has
+    supported this since 1.13.20, see #361171.
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 09 Apr 2007 19:21:52 +0200
+
+linux-2.6 (2.6.18.dfsg.1-10) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add patches out of stable queue 2.6.18
+    - [amd64] Don't leak NT bit into next task (CVE-2006-5755)
+    - IB/srp: Fix FMR mapping for 32-bit kernels and addresses above 4G
+    - SCSI: add missing cdb clearing in scsi_execute()
+  * Xen postinst: Use takeover for update-initramfs. Makes postinst idempotent.
+    On creation it should always overwrite. (closes: #401183)
+  * Hand-picked from stable release 2.6.16.38:
+    - i2c-viapro: Add support for the VT8237A and VT8251
+    - PCI: irq: irq and pci_ids patch for Intel ICH9
+    - i2c-i801: SMBus patch for Intel ICH9
+    - fix the UML compilation
+    - drm: allow detection of new VIA chipsets
+    - drm: Add the P4VM800PRO PCI ID.
+    - rio: typo in bitwise AND expression.
+    - i2c-mv64xxx: Fix random oops at boot
+    - i2c: fix broken ds1337 initialization
+    - [SUNKBD]: Fix sunkbd_enable(sunkbd, 0); obvious.
+    - Call init_timer() for ISDN PPP CCP reset state timer (CVE-2006-5749)
+    - V4L: cx88: Fix leadtek_eeprom tagging
+    - SPI/MTD: mtd_dataflash oops prevention
+    - grow_buffers() infinite loop fix (CVE-2006-5757/CVE-2006-6060)
+    - corrupted cramfs filesystems cause kernel oops (CVE-2006-5823)
+    - ext2: skip pages past number of blocks in ext2_find_entry
+      (CVE-2006-6054)
+    - handle ext3 directory corruption better (CVE-2006-6053)
+    - hfs_fill_super returns success even if no root inode (CVE-2006-6056)
+      backout previous fix, was not complete.
+    - Fix for shmem_truncate_range() BUG_ON()
+    - ebtables: check struct type before computing gap
+    - [IPV4/IPV6]: Fix inet{,6} device initialization order.
+    - [IPV6] Fix joining all-node multicast group.
+    - [SOUND] Sparc CS4231: Use 64 for period_bytes_min
+  * [PKTGEN]: Convert to kthread API. Thanks David Miller for patch.
+  * [IDE] Add driver for Jmicron  JMB36x devices by Alan Cox.
+    Enable jmicron on i386 and amd64 archs.
+  * Hand-picked from stable release 2.6.16.39:
+    - atiixp: hang fix
+    - V4L/DVB: Flexcop-usb: fix debug printk
+    - V4L/DVB: Fix uninitialised variable in dvb_frontend_swzigzag
+    - read_zero_pagealigned() locking fix
+    - adfs: fix filename handling
+    - sparc32: add offset in pci_map_sg()
+    - cdrom: set default timeout to 7 seconds
+    - [SCSI] qla1280 command timeout
+    - [SCSI] qla1280 bus reset typo
+    - [Bluetooth] Check if DLC is still attached to the TTY
+    - [Bluetooth] Fix uninitialized return value for RFCOMM sendmsg()
+    - [Bluetooth] Return EINPROGRESS for non-blocking socket calls
+    - [Bluetooth] Handle command complete event for exit periodic inquiry
+    - [Bluetooth] Fix compat ioctl for BNEP, CMTP and HIDP
+    - [Bluetooth] Add locking for bt_proto array manipulation
+    - i386: fix CPU hotplug with 2GB VMSPLIT
+
+  [ dann frazier ]
+  * Fix raid1 recovery (closes: #406181)
+
+  [ Jurij Smakov ]
+  * Add dtlb-prot-bug-niagara.patch by David Miller, fixing the bug in the
+    Niagara's DTLB-PROT trap.
+
+  [ Bastian Blank ]
+  * i386: Add amd64 image. (closes: #379090)
+
+ -- Bastian Blank <waldi@debian.org>  Fri,  2 Feb 2007 12:50:35 +0100
+
+linux-2.6 (2.6.18.dfsg.1-9) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * arm/iop32x: Enable CONFIG_IP_NF_CONNTRACK_EVENTS and _NETLINK.
+  * arm/ixp4xx: Enable some more I2C sensor modules.
+  * arm/ixp4xx: Enable CONFIG_USB_NET_RNDIS_HOST.
+  * arm/footbridge: Enable CONFIG_NATSEMI.
+  * Revert mm/msync patches because they cause filesystem corruption
+    (closes: #401006, #401980, #402707) ...
+  * ... and add an alternative msync patch from Hugh Dickins that
+    doesn't depend on the mm changes (closes: #394392).
+  * mips: provide pci_get_legacy_ide_irq needed by some IDE drivers
+    (see #404950).
+  * arm: Implement flush_anon_page(), which is needed for FUSE
+    (closes: #402876) and possibly dm-crypt/LUKS (see #403426).
+  * arm: Turn off PCI burst on the Cyber2010, otherwise X11 on
+    Netwinder will crash.
+  * arm/iop32x: Enable CONFIG_IEEE80211_SOFTMAC and drivers based
+    on it.
+  * arm/ixp4xx: Upgrade to version 0.3.1 of the IXP4xx NPE Ethernet
+    driver.  This version fixes stuck connections, e.g. with scp and
+    NFS (closes: #404447).
+  * arm/ixp4xx: Enable CONFIG_VIDEO_CPIA_USB.
+  * arm/ixp4xx: Enable CONFIG_ISCSI_TCP.
+  * arm/iop32x: Likewise.
+
+  [ Bastian Blank ]
+  * Bump ABI to 4.
+  * Update vserver patch to 2.0.2.2-rc9. (closes: #402743, #403790)
+  * Update xen patch to changeset 36186 from Fedora 2.6.18 branch.
+  * i386/xen: Build only the pae version. (closes: #390862)
+  * hppa: Override host type when necessary.
+  * Fix tg3 reset. (closes: #405085)
+
+  [ dann frazier ]
+  * Fix potential fragmentation attacks in ip6_tables (CVE-2006-4572)
+  * Backport a number of fixes for the cciss driver
+    - Fix a bug with 1TB disks caused by converting total_size to an int
+    - Claim devices that are of the HP RAID class and have a valid cciss sig
+    - Make NR_CMDS a per-controller define - most can do 1024 commands, but
+      the E200 family can only support 128
+    - Change the SSID on the E500 as a workaround for a firmware bug
+    - Disable prefetch on the P600 controller. An ASIC bug may result in
+      prefetching beyond the end of physical memory
+    - Increase blk_queue_max_sectors from 512 to 2048 to increase performance
+    - Map out more memor for the PCI config table, required to reach offset
+      0x214 to disable DMA on the P600
+    - Set a default raid level on a volume that either does not support
+      reading the geometry or reports an invalid geometry for whatever reason
+      to avoid problems with buggy firmware
+    - Revert change that replaed XFER_READ/XFER_WRITE macros with
+      h->cciss_read/h->cciss_write that caused command timeouts on older
+      controllers on ia32 (closes: #402787)
+  * Fix mincore hang (CVE-2006-4814)
+  * ia64: turn on IOC4 modules for SGI Altix systems. Thanks to Stephane Larose
+    for suggesting this.
+  * Add versioned build dep on findutils to make sure the system find command
+    supports the -execdir action (closes: #405150)
+  * Hardcode the output of the scripts under arch/ia64/scripts as executed
+    in an etch environment so that we can build out of tree modules correctly
+    (closes: #392592)
+  * Update unusual_devs entry for ipod to fix an eject issue (closes: #406124)
+  * Re-add verify_pmtmr_rate, resolving problems seen on older K6 ASUS
+    boards where the ACPI PM timer runs too fast (closes: #394753)
+  * Avoid condition where /proc/swaps header may not be printed
+    (closes: #292318)
+  * [hppa] disable XFS until it works (closes: #350482)
+
+  [ Norbert Tretkowski ]
+  * libata: handle 0xff status properly. (closes: #391867)
+  * alpha: enabled CONFIG_SCSI_ARCMSR. (closes: #401187)
+  * removed BROKEN_ON_SMP dependency from I2C_ELEKTOR. (closes: #402253)
+
+  [ Christian T. Steigies ]
+  * m68k/atari: enable keyboard, mouse and fb drivers
+  * m68k/atari: fixes for ethernec and video driver by Michael Schmitz
+  * m68k/atari: fixes for scsi driver by Michael Schmitz
+  * m68k/mac: fixes for mace and cuda driver by Finn Thain
+  * m68k/atari: fixes for ide driver by Michael Schmitz
+  * m68k/atari: fixes for ide driver by Michael Schmitz
+  * m68k/atari: fixes for ethernec and atakeyb driver by Michael Schmitz, build ethernec as module
+  * m68k/mac: fixes for mace and adb driver by Finn Thain
+
+  [ maximilian attems ]
+  * Add stable release 2.6.18.6:
+    - EBTABLES: Fix wraparounds in ebt_entries verification.
+    - EBTABLES: Verify that ebt_entries have zero ->distinguisher.
+    - EBTABLES: Deal with the worst-case behaviour in loop checks.
+    - EBTABLES: Prevent wraparounds in checks for entry components' sizes.
+    - skip data conversion in compat_sys_mount when data_page is NULL
+    - bonding: incorrect bonding state reported via ioctl
+    - x86-64: Mark rdtsc as sync only for netburst, not for core2
+      (closes: #406767)
+    - dm crypt: Fix data corruption with dm-crypt over RAID5 (closes: #402812)
+    - forcedeth: Disable INTx when enabling MSI in forcedeth
+    - PKT_SCHED act_gact: division by zero
+    - XFRM: Use output device disable_xfrm for forwarded packets
+    - IPSEC: Fix inetpeer leak in ipv4 xfrm dst entries.
+    - V4L: Fix broken TUNER_LG_NTSC_TAPE radio support
+    - m32r: make userspace headers platform-independent
+    - IrDA: Incorrect TTP header reservation
+    - SUNHME: Fix for sunhme failures on x86
+    - Bluetooth: Add packet size checks for CAPI messages (CVE-2006-6106)
+    - softmac: remove netif_tx_disable when scanning
+    - DVB: lgdt330x: fix signal / lock status detection bug
+    - dm snapshot: fix freeing pending exception
+    - NET_SCHED: policer: restore compatibility with old iproute binaries
+    - NETFILTER: ip_tables: revision support for compat code
+    - ARM: Add sys_*at syscalls
+    - ieee1394: ohci1394: add PPC_PMAC platform code to driver probe
+    - softirq: remove BUG_ONs which can incorrectly trigger
+  * Hand-picked from stable release 2.6.16.30:
+    - [PPPOE]: Advertise PPPoE MTU
+  * Hand-picked from stable release 2.6.16.31:
+    - [NETFILTER]: Fix ip6_tables extension header bypass bug (CVE-2006-4572)
+    - fix RARP ic_servaddr breakage
+  * Hand-picked from stable release 2.6.16.32:
+    - drivers/telephony/ixj: fix an array overrun
+    - flush D-cache in failure path
+  * Hand-picked from stable release 2.6.16.33:
+    - Add new PHY to sis900 supported list
+    - ipmi_si_intf.c: fix "&& 0xff" typos
+    - drivers/scsi/psi240i.c: fix an array overrun
+  * Hand-picked from stable release 2.6.16.34:
+    - [IPX]: Annotate and fix IPX checksum
+    - [IGMP]: Fix IGMPV3_EXP() normalization bit shift value.
+  * Hand-picked from stable release 2.6.16.35:
+    - sgiioc4: Disable module unload
+    - Fix a masking bug in the 6pack driver.
+    - drivers/usb/input/ati_remote.c: fix cut'n'paste error
+    - proper flags type of spin_lock_irqsave()
+  * Hand-picked from stable release 2.6.16.37:
+    - [CRYPTO] sha512: Fix sha384 block size
+    - [SCSI] gdth: Fix && typos
+    - Fix SUNRPC wakeup/execute race condition
+  * Enable DEBUG_FS for usbmon in generic config. Don't disable it on alpha,
+    amd64, hppa and ia64. (closes: 378542)
+  * Backport a number of upstream fixes for the r8169 driver, needed for
+    network performance (closes: 388870, 400524)
+    - r8169: more alignment for the 0x8168
+    - r8169: phy program update
+    - r8169: more magic during initialization of the hardware
+    - r8169: perform a PHY reset before any other operation at boot time
+    - r8169: Fix iteration variable sign
+    - r8169: remove extraneous Cmd{Tx/Rx}Enb write
+  * sound: hda: detect ALC883 on MSI K9A Platinum motherboards (MS-7280)
+    patch from Leonard Norrgard <leonard.norrgard@refactor.fi>
+  * tulip: Add i386 specific patch to remove duplicate pci ids.
+    Thanks Jurij Smakov <jurij@wooyd.org> (closes: #334104, #405203)
+  * amd64, i386: Disable SK98LIN as SKGE is the modern capable driver.
+    (closes: 405196)
+  * Backout net-bcm43xx_netdev_watchdog.patch and push 2.6.18.2 fix.
+    (closes: 402475)
+
+  [ Jurij Smakov ]
+  * Add bugfix/sparc/isa-dev-no-reg.patch to make sure that
+    isa_dev_get_resource() can deal with devices which do not have a 'reg'
+    PROM property. Failure to handle such devices properly resulted in an
+    oops during boot on Netra X1. Thanks to Richard Mortimer for debugging
+    and patch. (closes: #404216)
+  * Add bugfix/sparc/ehci-hub-contol-alignment.patch to prevent unaligned
+    memory accesses in ehci-hub-control() by adding an alignment attribute
+    to the tbuf array declaration. Thanks to David Miller for the patch.
+
+  [ Sven Luther ]
+  * [powerpc] Enable CONFIG_PMAC_BACKLIGHT_LEGACY (Closes: #407671).
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 24 Jan 2007 13:21:51 +0100
+
+linux-2.6 (2.6.18-8) unstable; urgency=low
+
+  * Fix relations in the generated control file. (closes: #400544)
+  * Add stable release 2.6.18.4:
+    - bridge: fix possible overflow in get_fdb_entries (CVE-2006-5751)
+  * Add stable release 2.6.18.5:
+    - pcmcia: fix 'rmmod pcmcia' with unbound devices
+    - BLUETOOTH: Fix unaligned access in hci_send_to_sock.
+    - alpha: Fix ALPHA_EV56 dependencies typo
+    - TG3: Add missing unlock in tg3_open() error path.
+    - softmac: fix a slab corruption in WEP restricted key association
+    - AGP: Allocate AGP pages with GFP_DMA32 by default
+    - V4L: Do not enable VIDEO_V4L2 unconditionally
+    - bcm43xx: Drain TX status before starting IRQs
+    - fuse: fix Oops in lookup
+    - UDP: Make udp_encap_rcv use pskb_may_pull
+    - NETFILTER: Missing check for CAP_NET_ADMIN in iptables compat layer
+    - NETFILTER: ip_tables: compat error way cleanup
+    - NETFILTER: ip_tables: fix module refcount leaks in compat error paths
+    - NETFILTER: Missed and reordered checks in {arp,ip,ip6}_tables
+    - NETFILTER: arp_tables: missing unregistration on module unload
+    - NETFILTER: Kconfig: fix xt_physdev dependencies
+    - NETFILTER: xt_CONNSECMARK: fix Kconfig dependencies
+    - NETFILTER: H.323 conntrack: fix crash with CONFIG_IP_NF_CT_ACCT
+    - IA64: bte_unaligned_copy() transfers one extra cache line.
+    - x86 microcode: don't check the size
+    - scsi: clear garbage after CDBs on SG_IO
+    - IPV6: Fix address/interface handling in UDP and DCCP, according to the scoping architecture.
+  * Revert abi changing patch from 2.6.18.5.
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 10 Dec 2006 17:51:53 +0100
+
+linux-2.6 (2.6.18-7) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Emit conflict lines for initramfs generators. (closes: #400305)
+  * Update vserver patch to 2.0.2.2-rc8.
+  * s390: Add patch to fix posix types.
+
+  [ Martin Michlmayr ]
+  * r8169: Add an option to ignore parity errors.
+  * r8169: Ignore parity errors on the Thecus N2100.
+  * rtc: Add patch from Riku Voipio to get RS5C372 going on the N2100.
+  * arm/iop32x: Build RS5C372 support into the kernel.
+
+  [ maximilian attems ]
+  * hfs: Fix up error handling in HFS. (MOKB-14-11-2006)
+  * sata: Avoid null pointer dereference in SATA Promise.
+  * cifs: Set CIFS preferred IO size.
+
+  [ Jurij Smakov ]
+  * Add bugfix/sunhme-pci-enable.patch, fixing the failure of sunhme
+    driver on x86/PCI hosts due to missing pci_enable_device() and
+    pci_set_master() calls, lost during code refactoring upstream.
+    (closes: #397460)
+
+ -- Bastian Blank <waldi@debian.org>  Mon,  4 Dec 2006 15:20:30 +0100
+
+linux-2.6 (2.6.18-6) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Enable the new ACT modules globally. They were already set for amd64, hppa
+    and mips/mipsel - needed by newer iproute2. (closes: #395882, #398172)
+  * Fix msync() for LSB 3.1 compliance, backport fedora patches from 2.6.19
+   - mm: tracking shared dirty pages
+   - mm: balance dirty pages
+   - mm: optimize the new mprotect() code a bit
+   - mm: small cleanup of install_page()
+   - mm: fixup do_wp_page()
+   - mm: msync() cleanup (closes: #394392)
+  * [amd64,i386] Enable CONFIG_USB_APPLETOUCH=m (closes: #382298)
+  * Add stable release 2.6.18.3:
+    - x86_64: Fix FPU corruption
+    - e1000: Fix regression: garbled stats and irq allocation during swsusp
+    - POWERPC: Make alignment exception always check exception table
+    - usbtouchscreen: use endpoint address from endpoint descriptor
+    - fix via586 irq routing for pirq 5
+    - init_reap_node() initialization fix
+    - CPUFREQ: Make acpi-cpufreq unsticky again.
+    - SPARC64: Fix futex_atomic_cmpxchg_inatomic implementation.
+    - SPARC: Fix missed bump of NR_SYSCALLS.
+    - NET: __alloc_pages() failures reported due to fragmentation
+    - pci: don't try to remove sysfs files before they are setup.
+    - fix UFS superblock alignment issues
+    - NET: Set truesize in pskb_copy
+    - block: Fix bad data direction in SG_IO (closes: #394690)
+    - cpqarray: fix iostat
+    - cciss: fix iostat
+    - Char: isicom, fix close bug
+    - TCP: Don't use highmem in tcp hash size calculation.
+    - S390: user readable uninitialised kernel memory, take 2.
+    - correct keymapping on Powerbook built-in USB ISO keyboards
+    - USB: failure in usblp's error path
+    - Input: psmouse - fix attribute access on 64-bit systems
+    - Fix sys_move_pages when a NULL node list is passed.
+    - CIFS: report rename failure when target file is locked by Windows
+    - CIFS: New POSIX locking code not setting rc properly to zero on successful
+    - Patch for nvidia divide by zero error for 7600 pci-express card
+      (maybe fixes 398258)
+    - ipmi_si_intf.c sets bad class_mask with PCI_DEVICE_CLASS
+
+  [ Steve Langasek ]
+  * [alpha] new titan-video patch, for compatibility with TITAN and similar
+    systems with non-standard VGA hose configs
+  * [alpha] bugfix for srm_env module from upstream (Jan-Benedict Glaw),
+    makes the module compatible with the current /proc interface so that
+    reads no longer return EFAULT.  (closes: #353079)
+  * Bump ABI to 3 for the msync fixes above.
+
+  [ Martin Michlmayr ]
+  * arm: Set CONFIG_BINFMT_MISC=m
+  * arm/ixp4xx: Set CONFIG_ATM=m (and related modules) so CONFIG_USB_ATM has
+    an effect.
+  * arm/iop32x: Likewise.
+  * arm/s3c2410: Unset CONFIG_PM_LEGACY.
+  * arm/versatile: Fix Versatile PCI config byte accesses
+  * arm/ixp4xx: Swap the disk 1 and disk 2 LED definitions so they're right.
+  * mipsel/r5k-cobalt: Unset CONFIG_SCSI_SYM53C8XX_2 because the timeout is
+    just too long.
+  * arm/ixp4xx: Enable more V4L USB devices.
+
+  [ dann frazier ]
+  * Backport various SCTP changesets from 2.6.19, recommended by Vlad Yasevich
+    (closes: #397946)
+  * Add a "Scope of security support" section to README.Debian, recommended
+    by Moritz Muehlenhoff
+
+  [ Thiemo Seufer ]
+  * Enable raid456 for mips/mipsel qemu kernel.
+
+  [ dann frazier ]
+  * The scope of the USR-61S2B unusual_dev entry was tightened, but too
+    strictly. Loosen it to apply to additional devices with a smaller bcd.
+    (closes: #396375)
+
+  [ Sven Luther ]
+  * Added support for TI ez430 development tool ID in ti_usb.
+    Thanks to Oleg Verych for providing the patch.
+
+  [ Christian T. Steigies ]
+  * Added support for Atari EtherNEC, Aranym, video, keyboard, mouse, and serial
+    by Michael Schmitz
+
+  [ Bastian Blank ]
+  * [i386] Reenable AVM isdn card modules. (closes: #386872)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 21 Nov 2006 11:28:09 +0100
+
+linux-2.6 (2.6.18-5) unstable; urgency=low
+
+  [ maximilian attems ]
+  * [s390] readd the fix for "S390: user readable uninitialised kernel memory
+    (CVE-2006-5174)"
+  * [s390] temporarily add patch queued for 2.6.18.3 fixing 32 bit opcodes and
+    instructions.
+
+  [ Thiemo Seufer ]
+  * Fix build failure of hugetlbfs (closes: #397139).
+  * Add kernel configuration for qemu's mips/mipsel emulation, thanks to
+    Aurelien Jarno.
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.0.2.2-rc6.
+  * Update xen parts for vserver. (closes: #397281)
+
+  [ dann frazier ]
+  * [ia64] Move to upstream version of sal-flush-fix patch, which is slightly
+    different than the early version added in 2.6.18-3.
+
+  [ Frederik Schüler ]
+  * [i386] Acticate CONFIG_SX for all flavours. (closes: #391275)
+
+  [ Steve Langasek ]
+  * [alpha] new asm-subarchs patch: tell the compiler that we're
+    deliberately emitting ev56 or ev6 instructions, so that this code
+    will still compile without having to cripple gcc-4.1's checking of
+    whether the correct instruction set is used.  Closes: #397139.
+
+  [ Martin Michlmayr ]
+  * arm/ixp4xx: Enable CONFIG_USB_ATM.
+  * arm/iop32x: Enable CONFIG_PPPOE.
+  * arm/iop32x: Enable CONFIG_USB_ATM.
+
+ -- Bastian Blank <waldi@debian.org>  Wed,  8 Nov 2006 17:15:55 +0100
+
+linux-2.6 (2.6.18-4) unstable; urgency=low
+
+  [ Norbert Tretkowski ]
+  * [alpha] Switched to gcc-4.1.
+
+  [ Jurij Smakov ]
+  * [sparc] Remove sparc64-atyfb-xl-gr.patch, it does more harm than
+    good in 2.6.18.
+  * [sparc] Add bugfix/sparc/compat-alloc-user-space-alignment.patch
+    (thanks to David Miller) to make sure that compat_alloc_user_space()
+    always returns memory aligned on a 8-byte boundary on sparc. This
+    prevents a number of unaligned memory accesses, like the ones in
+    sys_msgrcv() and compat_sys_msgrcv(), triggered every 5 seconds whenever
+    fakeroot is running.
+  * [sparc] Add bugfix/sparc/bus-id-size.patch (thanks to David Miller)
+    to ensure that the size of the strings stored in the bus_id field of
+    struct device never exceeds the amount of memory allocated for them
+    (20 bytes). It fixes the situations in which storing longer device
+    names in this field would cause corruption of adjacent memory regions.
+    (closes: #394697).
+  * [sparc] Add bugfix/sparc/sunblade1k-boot-fix.patch (thanks to David
+    Miller) to fix a boottime crash on SunBlade1000.
+  * [sparc] Add bugfix/sparc/t1k-cpu-lockup.patch (thanks to David Miller)
+    to prevent soft CPU lockup on T1000 servers, which can be triggered from
+    userspace, resulting in denial of service.
+
+  [ Martin Michlmayr ]
+  * arm/iop32x: Fix the interrupt of the 2nd Ethernet slot on N2100.
+  * arm/iop32x: Allow USB and serial to co-exist on N2100.
+  * arm/ixp4xx: Add clocksource for Intel IXP4xx platforms.
+  * arm: Enable CONFIG_AUDIT=y again.
+  * arm/ixp4xx: Add the IXP4xx Ethernet driver.
+  * arm/ixp4xx: Build LED support into the kernel.
+  * Add a driver for Fintek F75375S/SP and F75373.
+  * arm/iop32x: Build F75375S/SP support in.
+  * arm/iop32x: Fix the size of the RedBoot config partition.
+
+  [ maximilian attems ]
+  * Add netpoll leak fix.
+  * Add upstream forcedeth swsusp support.
+  * r8169: PCI ID for Corega Gigabit network card.
+  * r8169: the MMIO region of the 8167 stands behin BAR#1.
+  * r8169: Add upstream fix for infinite loop during hotplug.
+  * Bump build-dependency on kernel-package to 10.063.
+  * r8169: pull revert mac address change support.
+  * bcm43xx: Add full netdev watchout timeout patch. (closes: 392065)
+    Thanks Sjoerd Simons <sjoerd@spring.luon.net> for the testing.
+  * Add stable release 2.6.18.2:
+    - Remove not yet released, revert the included patches.
+    - Keep aboves bcm43xx fix, it's more complete.
+    - Watchdog: sc1200wdt - fix missing pnp_unregister_driver()
+    - fix missing ifdefs in syscall classes hookup for generic targets
+    - JMB 368 PATA detection
+    - usbfs: private mutex for open, release, and remove
+    - sound/pci/au88x0/au88x0.c: ioremap balanced with iounmap
+    - x86-64: Fix C3 timer test
+    - Reintroduce NODES_SPAN_OTHER_NODES for powerpc
+    - ALSA: emu10k1: Fix outl() in snd_emu10k1_resume_regs()
+    - IB/mthca: Use mmiowb after doorbell ring
+    - SCSI: DAC960: PCI id table fixup
+    - ALSA: snd_rtctimer: handle RTC interrupts with a tasklet
+    - JFS: pageno needs to be long
+    - SPARC64: Fix central/FHC bus handling on Ex000 systems.
+    - SPARC64: Fix memory corruption in pci_4u_free_consistent().
+    - SPARC64: Fix PCI memory space root resource on Hummingbird.
+      (closes: #392078)
+    - Fix uninitialised spinlock in via-pmu-backlight code.
+    - SCSI: aic7xxx: pause sequencer before touching SBLKCTL
+    - IPoIB: Rejoin all multicast groups after a port event
+    - ALSA: Dereference after free in snd_hwdep_release()
+    - rtc-max6902: month conversion fix
+    - NET: Fix skb_segment() handling of fully linear SKBs
+    - SCTP: Always linearise packet on input
+    - SCSI: aic7xxx: avoid checking SBLKCTL register for certain cards
+    - IPV6: fix lockup via /proc/net/ip6_flowlabel [CVE-2006-5619]
+    - fix Intel RNG detection
+    - ISDN: check for userspace copy faults
+    - ISDN: fix drivers, by handling errors thrown by ->readstat()
+    - splice: fix pipe_to_file() ->prepare_write() error path
+    - ALSA: Fix bug in snd-usb-usx2y's usX2Y_pcms_lock_check()
+    - ALSA: Repair snd-usb-usx2y for usb 2.6.18
+    - PCI: Remove quirk_via_abnormal_poweroff
+    - Bluetooth: Check if DLC is still attached to the TTY
+    - vmscan: Fix temp_priority race
+    - Use min of two prio settings in calculating distress for reclaim
+    - __div64_32 for 31 bit. Fixes funny clock speed on hercules emulator.
+      (closes: 395247)
+    - DVB: fix dvb_pll_attach for mt352/zl10353 in cx88-dvb, and nxt200x
+    - fuse: fix hang on SMP
+    - md: Fix bug where spares don't always get rebuilt properly when they become live.
+    - md: Fix calculation of ->degraded for multipath and raid10
+    - knfsd: Fix race that can disable NFS server.
+    - md: check bio address after mapping through partitions.
+    - fill_tgid: fix task_struct leak and possible oops
+    - uml: fix processor selection to exclude unsupported processors and features
+    - uml: remove warnings added by previous -stable patch
+    - Fix sfuzz hanging on 2.6.18
+    - SERIAL: Fix resume handling bug
+    - SERIAL: Fix oops when removing suspended serial port
+    - sky2: MSI test race and message
+    - sky2: pause parameter adjustment
+    - sky2: turn off PHY IRQ on shutdown
+    - sky2: accept multicast pause frames
+    - sky2: GMAC pause frame
+    - sky2: 88E803X transmit lockup (2.6.18)
+    - tcp: cubic scaling error
+    - mm: fix a race condition under SMC + COW
+    - ALSA: powermac - Fix Oops when conflicting with aoa driver
+    - ALSA: Fix re-use of va_list
+    - posix-cpu-timers: prevent signal delivery starvation
+    - NFS: nfs_lookup - don't hash dentry when optimising away the lookup
+    - uml: make Uml compile on FC6 kernel headers
+    - Fix potential interrupts during alternative patching
+  * Backport atkbd - supress "too many keys" error message.
+  * [s390] Revert temporarly 2.6.18.1 "S390: user readable uninitialised
+    kernel memory (CVE-2006-5174)" fix as it causes ftfbs
+
+  [ Sven Luther ]
+  * [powerpc] Added exception alignement patch from Benjamin Herrenschmidt.
+
+  [ Frederik Schüler ]
+  * Bump ABI to 2.
+  * Update vserver patch to 2.0.2.2-rc4.
+
+  [ Thiemo Seufer ]
+  * Add patches from linux-mips.org's 2.6.18-stable branch:
+    - bugfix/copy-user-highpage.patch, needed for cache alias handling
+      on mips/mipsel/hppa.
+    - bugfix/mips/syscall-wiring.patch, fixes TLS register access, and
+      n32 rt_sigqueueinfo.
+    - bugfix/mips/sb1-flush-cache-data-page.patch, missing cache flush
+      on SB-1.
+    - bugfix/mips/trylock.patch, fix trylock implementation for R1x000
+      and R3xxx.
+    - bugfix/mips/smp-cpu-bringup.patch, correct initialization of
+      non-contiguous CPU topology.
+    - bugfix/mips/header-exports.patch, clean up userland exports of
+      kernel headers.
+    - bugfix/mips/sb1-interrupt-handler.patch, fix broken interrupt
+      routing on SB-1.
+    - bugfix/mips/cache-alias.patch, fixes #387498 for mips/mipsel.
+    - bugfix/mips/ip22-zilog-console.patch, fix long delays seen with
+      SGI ip22 serial console.
+    - bugfix/mips/signal-handling.patch, fixes a signal handling race
+      condition shown with gdb.
+    - bugfix/mips/sb1-duart-tts.patch, replaces mips-sb1-duart-tts.patch,
+      use standard Linux names for SB-1 consoles.
+    - bugfix/mips/wait-race.patch, correct behaviour of the idle loop.
+    - bugfix/mips/sgi-ioc3.patch, checksumming fix for IOC3 network
+      driver.
+    - features/mips/qemu-kernel.patch, support for the mips/mipsel
+      machine emulated by Qemu.
+    - features/mips/backtrace.patch, reimplementation of stack analysis
+      and backtrace printing, useful for in-kernel debugging.
+    - bugfix/mips/dec-scsi.patch, replaces mips-dec-scsi.patch, fixes DSP
+      SCSI driver for DECstations.
+    - bugfix/mips/dec-serial.patch, replaces mips-dec-serial.patch, fix
+      serial console handling on DECstations.
+
+ -- Frederik Schüler <fs@debian.org>  Sat,  4 Nov 2006 18:45:02 +0100
+
+linux-2.6 (2.6.18-3) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Fix home of patch apply script.
+  * Unify CPUSET option. (closes: #391931)
+  * Support xen version 3.0.3-1.
+  * Add AHCI suspend support.
+  * Add patch to support bindmount without nodev on vserver.
+  * Update fedora xen patch to changeset 36252.
+
+  [ Steve Langasek ]
+  * [alpha] restore alpha-prctl.patch, which keeps disappearing every time
+    there's a kernel upgrade :/
+
+  [ Frederik Schüler ]
+  * Activate CONFIG_NET_CLS_* globaly. (Closes: #389918)
+  * Make CONFIG_EFI_VARS modular on i386. (Closes: #381951)
+  * Activate CONFIG_SCSI_ARCMSR on amd64, powerpc, sparc too.
+  * [vserver] Activate HARDCPU and HARDCPU_IDLE.
+  * [vserver] Upgrade to vs2.0.2.2-rc2.
+
+  [ maximilian attems ]
+  * [mipsel] Disable CONFIG_SECURITY_SECLVL on DECstations too.
+  * Add stable release 2.6.18.1:
+   - add utsrelease.h to the dontdiff file
+   - V4L: copy-paste bug in videodev.c
+   - block layer: elv_iosched_show should get elv_list_lock
+   - NETFILTER: NAT: fix NOTRACK checksum handling
+   - bcm43xx: fix regressions in 2.6.18 (Closes: #392065)
+   - x86-64: Calgary IOMMU: Fix off by one when calculating register space
+     location
+   - ide-generic: jmicron fix
+   - scx200_hrt: fix precedence bug manifesting as 27x clock in 1 MHz mode
+   - invalidate_inode_pages2(): ignore page refcounts
+   - rtc driver rtc-pcf8563 century bit inversed
+   - fbdev: correct buffer size limit in fbmem_read_proc()
+   - mm: bug in set_page_dirty_buffers
+   - TCP: Fix and simplify microsecond rtt sampling
+   - MD: Fix problem where hot-added drives are not resynced.
+   - IPV6: Disable SG for GSO unless we have checksum
+   - PKT_SCHED: cls_basic: Use unsigned int when generating handle
+   - sata_mv: fix oops
+   - [SPARC64]: Kill bogus check from bootmem_init().
+   - IPV6: bh_lock_sock_nested on tcp_v6_rcv
+   - [CPUFREQ] Fix some more CPU hotplug locking.
+   - SPARC64: Fix serious bug in sched_clock() on sparc64
+   - Fix VIDIOC_ENUMSTD bug
+   - load_module: no BUG if module_subsys uninitialized
+   - i386: fix flat mode numa on a real numa system
+   - cpu to node relationship fixup: map cpu to node
+   - cpu to node relationship fixup: acpi_map_cpu2node
+   - backlight: fix oops in __mutex_lock_slowpath during head
+     /sys/class/graphics/fb0/*
+   - do not free non slab allocated per_cpu_pageset
+   - rtc: lockdep fix/workaround
+   - powerpc: Fix ohare IDE irq workaround on old powermacs
+   - sysfs: remove duplicated dput in sysfs_update_file
+   - powerpc: fix building gdb against asm/ptrace.h
+   - Remove offsetof() from user-visible <linux/stddef.h>
+   - Clean up exported headers on CRIS
+   - Fix v850 exported headers
+   - Don't advertise (or allow) headers_{install,check} where inappropriate.
+   - Remove UML header export
+   - Remove ARM26 header export.
+   - Fix H8300 exported headers.
+   - Fix m68knommu exported headers
+   - Fix exported headers for SPARC, SPARC64
+   - Fix 'make headers_check' on m32r
+   - Fix 'make headers_check' on sh64
+   - Fix 'make headers_check' on sh
+   - Fix ARM 'make headers_check'
+   - One line per header in Kbuild files to reduce conflicts
+   - sky2 network driver device ids
+   - sky2: tx pause bug fix
+   - netdrvr: lp486e: fix typo
+   - mv643xx_eth: fix obvious typo, which caused build breakage
+   - zone_reclaim: dynamic slab reclaim
+   - Fix longstanding load balancing bug in the scheduler
+   - jbd: fix commit of ordered data buffers
+   - ALSA: Fix initiailization of user-space controls
+   - USB: Allow compile in g_ether, fix typo
+   - IB/mthca: Fix lid used for sending traps
+   - S390: user readable uninitialised kernel memory (CVE-2006-5174)
+   - zd1211rw: ZD1211B ASIC/FWT, not jointly decoder
+   - V4L: pvrusb2: Limit hor res for 24xxx devices
+   - V4L: pvrusb2: Suppress compiler warning
+   - V4L: pvrusb2: improve 24XXX config option description
+   - V4L: pvrusb2: Solve mutex deadlock
+   - DVB: cx24123: fix PLL divisor setup
+   - V4L: Fix msp343xG handling regression
+   - UML: Fix UML build failure
+   - uml: use DEFCONFIG_LIST to avoid reading host's config
+   - uml: allow using again x86/x86_64 crypto code
+   - NET_SCHED: Fix fallout from dev->qdisc RCU change
+  * Add backported git patch remving BSD secure level - request by the
+    Debian Security Team. (closes: 389282)
+  * [powerpc] Add DAC960-ipr PCI id table fixup.
+  * [powerpc] Fix uninitialised spinlock in via-pmu-backlight code.
+  * Fix serial_cs resume handling.
+  * Fix oops when removing suspended serial port.
+  * Check if DLC is still attached to the TTY.
+  * Add fedora backport of i965 DRM support.
+
+  [ Martin Michlmayr ]
+  * [mips] Apply some patches from linux-mips' linux-2.6.18-stable GIT tree:
+    - The o32 fstatat syscall behaves differently on 32 and 64 bit kernels
+    - fstatat syscall names
+    - BCM1480: Mask pending interrupts against c0_status.im.
+    - Cobalt: Time runs too quickly
+    - Show actual CPU information in /proc/cpuinfo
+    - Workaround for bug in gcc -EB / -EL options
+    - Do not use -msym32 option for modules
+    - Fix O32 personality(2) call with 0xffffffff argument
+    - Use compat_sys_mount
+
+  [ dann frazier ]
+  * [ia64]: Fix booting on HP cell systems, thanks to Troy Heber
+    - Enable CONFIG_HUGETLBFS
+    - bugfix/ia64/sal-flush-fix.patch: delay sal cache flush
+  * bugfix/sky2-receive-FIFO-fix.patch: fix sky2 hangs on some chips
+    Thanks to Stephen Hemminger for the patch. (Closes: #391382)
+  * features/all/drivers/cciss-support-for-gt-2TB-volumes.patch:
+    Add support for > 2TB volumes
+  * bugfix/sym2-dont-claim-raid-devs.patch: Prevent cpqarray/sym2 conflict
+    by telling sym2 not to claim raid devices. (Closes: #391384)
+
+  [ Sven Luther ]
+  * [powerpc] Added AMD74xx driver module to the powerpc64 flavour
+    (Closes: #391861).
+
+  [ Kyle McMartin ]
+  * [hppa] Force CROSS_COMPILE=hppa64-linux-gnu- (closes: #389296)
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 21 Oct 2006 15:59:43 +0200
+
+linux-2.6 (2.6.18-2) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * hppa: Fix compiler dependencies. (closes: #389296)
+  * Make cfq the default io scheduler.
+  * Add arcmsr (Areca) driver.
+  * powerpc/prep: Fix compatibility asm symlink.
+  * m68k: Disable initramfs support.
+
+  [ Kyle McMartin ]
+  * hppa: Add parisc patchset.
+
+  [ Norbert Tretkowski ]
+  * [alpha] Workaround undefined symbols by setting CONFIG_SCSI=y for smp flavour.
+    (closes: #369517)
+
+  [ Christian T. Steiges ]
+  * m68k: Update patches for 2.6.18.
+  * m68k: Re-Add m68k-as and m68k-macro patch which allow building with current binutils.
+  * m68k: disable CONFIG_AUDIT for m68k.
+  * m68k/mac: add m68k-no-backlight and m68k-fbcon patch.
+  * m68k/mac: enable SONIC, disable all ADB but CUDA.
+
+  [ Jurij Smakov ]
+  * Add bugfix/proc-fb-reading.patch to fix the inconsistent behaviour
+    of /proc/fb. (Closes: #388815)
+  * sparc: Enable vserver flavour for sparc64. (Closes: #386656)
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 29 Sep 2006 14:12:19 +0200
+
+linux-2.6 (2.6.18-1) unstable; urgency=low
+
+  The unpruned release
+
+  [ Martin Michlmayr ]
+  * Bump build-dependency on kernel-package to 10.054.
+  * arm/iop32x: Build ext2/3 as modules.
+  * arm/iop32x: Disable CONFIG_EMBEDDED.
+  * mipsel/r5k-cobalt: Enable ISDN.
+  * arm/footbridge: Enable the CIFS module (closes: #274808).
+  * arm/nslu2: Drop flavour since this machine is supported by arm/ixp4xx.
+  * arm: Make get_unaligned() work with const pointers and GCC 4.1.
+  * mipsel/r5k-cobalt: Enable CONFIG_BONDING as a module.
+  * arm/iop32x: Likewise.
+  * arm/ixp4xx: Likewise.
+  * arm: Disable CONFIG_AUDIT for now since it's broken.
+
+  [ Sven Luther ]
+  * [powerpc] Enabled the -prep flavour. (Closes: #359025)
+  * [powerpc] The sisfb framebuffer device is now builtin.
+  * [powerpc] Updated the powerpc serial patch. This fixes the XServe serial
+    port, but at the cost powermac pcmcia serial cards support.
+    Thanks go to Mark Hymers for providing the patch.
+    (Closes: #364637, #375194)
+  * [powerpc] Added patch to fix oldworld/quik booting.
+    Thanks fo to Christian Aichinger for investigating to Benjamin
+    Herrenschmidt for providing the patch. (Closes: #366620, #375035).
+  * [powerpc] Fixes hvc_console caused suspsend-to-disk breakage. Thanks to
+    Andrew Morton for providing the patch. (Closes: #387178)
+  * [powerpc] Disabled mv643xx_eth on powerpc64 flavours, as there never was a
+    Marvell Discovery northbrige for 64bit powerpc cpus.
+
+  [ Frederik Schüler ]
+  * Remove obsolete options from amd64 and i386 configs.
+  * Deactivate EVBUG.
+  * Make PARPORT options global.
+  * [i386] Add class definition for 486 flavour.
+
+  [ maximilian attems ]
+  * Enable CONFIG_PRINTER=m for all powerpc flavours.
+  * Enable the new alsa CONFIG_SND_AOA framework for powerpc.
+  * Add the merged advansys pci table patch.
+
+  [ Bastian Blank ]
+  * hppa: Use gcc-4.1.
+  * Only provide 16 legacy ptys.
+
+  [ Norbert Tretkowski ]
+  * [alpha] Updated configs.
+  * [alpha] Disabled CONFIG_AUDIT, broken.
+  * [alpha] Added vserver flavour.
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 24 Sep 2006 15:55:37 +0200
+
+linux-2.6 (2.6.17-9) unstable; urgency=medium
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.0.2.
+    - Fix possible priviledge escalation in remount code. (CVE-2006-4243)
+
+  [ Frederik Schüler ]
+  * Add stable release 2.5.17.12:
+    - sky2: version 1.6.1
+    - sky2: fix fiber support
+    - sky2: MSI test timing
+    - sky2: use dev_alloc_skb for receive buffers
+    - sky2: clear status IRQ after empty
+    - sky2: accept flow control
+    - dm: Fix deadlock under high i/o load in raid1 setup.
+    - Remove redundant up() in stop_machine()
+    - Missing PCI id update for VIA IDE
+    - PKTGEN: Fix oops when used with balance-tlb bonding
+    - PKTGEN: Make sure skb->{nh,h} are initialized in fill_packet_ipv6() too.
+    - Silent data corruption caused by XPC
+    - uhci-hcd: fix list access bug
+    - binfmt_elf: fix checks for bad address
+    - [s390] bug in futex unqueue_me
+    - fcntl(F_SETSIG) fix
+    - IPV6 OOPS'er triggerable by any user
+    - SCTP: Fix sctp_primitive_ABORT() call in sctp_close().
+    - SPARC64: Fix X server crashes on sparc64
+    - TG3: Disable TSO by default
+    - dm: mirror sector offset fix
+    - dm: fix block device initialisation
+    - dm: add module ref counting
+    - dm: fix mapped device ref counting
+    - dm: add DMF_FREEING
+    - dm: change minor_lock to spinlock
+    - dm: move idr_pre_get
+    - dm: fix idr minor allocation
+    - dm snapshot: unify chunk_size
+    - Have ext2 reject file handles with bad inode numbers early.
+    - Allow per-route window scale limiting
+    - bridge-netfilter: don't overwrite memory outside of skb
+    - fix compilation error on IA64
+    - Fix output framentation of paged-skbs
+    - spectrum_cs: Fix firmware uploading errors
+    - TEXTSEARCH: Fix Boyer Moore initialization bug
+  * Add stable release 2.6.17.13:
+    - lib: add idr_replace
+    - pci_ids.h: add some VIA IDE identifiers
+  * Remove patches merged upstream:
+    - s390-kernel-futex-barrier.patch
+  * Unpatch ia64-mman.h-fix.patch
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 13 Sep 2006 14:54:14 +0200
+
+linux-2.6 (2.6.17-8) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * arm/ixp4xx: Enable CONFIG_W1.
+
+  [ dann frazier ]
+  * sound-pci-hda-mac-mini-quirks.diff, sound-pci-hda-intel-d965.diff
+    sound-pci-hda-mac-mini-intel945.diff:
+    Updates to patch_sigmatel.c to add x86 mac-mini sound support
+    Thanks to Matt Kraai. (closes: #384972)
+
+  [ Kyle McMartin ]
+  * hppa: Re-enable pa8800 fixing patches from James Bottomley.
+    Pulled fresh from parisc-linux git tree.
+  * ia64: Pull in compile-failure fix from Christian Cotte-Barrot.
+    Pulled from linux-ia64 mailing list. Fix is correct.
+  * hppa/alpha/mips: Fix compile-failure due to missing arch_mmap_check. Patch sent
+    upstream to stable@kernel.org.
+
+  [ dann frazier ]
+  * sym2: only claim "Storage" class devices - the cpqarray driver should be
+    used for 5c1510 devices in RAID mode. (closes: #380272)
+
+  [ Bastian Blank ]
+  * Backport change to allow all hypercalls for xen.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 31 Aug 2006 12:12:51 +0200
+
+linux-2.6 (2.6.17-7) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * arm/iop32x: Enable CONFIG_BLK_DEV_OFFBOARD.
+  * arm/iop32x: Unset CONFIG_BLK_DEV_AMD74XX since it fails on ARM
+    with "Unknown symbol pci_get_legacy_ide_irq".
+  * arm/iop32x: Enable a number of MD and DM modules.
+  * arm/iop32x: Enable some more USB network modules.
+  * mipsel/r5k-cobalt: Increase 8250 NR_UARTS and RUNTIME_UARTS to 4.
+  * mipsel/r5k-cobalt: Fix MAC detection problem on Qube 2700.
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.0.2-rc29.
+  * Add stable release 2.6.17.10:
+    - Fix possible UDF deadlock and memory corruption (CVE-2006-4145)
+    - elv_unregister: fix possible crash on module unload
+    - Fix sctp privilege elevation (CVE-2006-3745)
+
+  [ maximilian attems ]
+  * Add RAM range to longclass for -bigmem. (closes: 382799)
+  * Add stable release 2.6.17.9:
+    - powerpc: Clear HID0 attention enable on PPC970 at boot time
+    (CVE-2006-4093)
+  * Add stable release 2.6.17.11:
+    - Fix ipv4 routing locking bug
+    - disable debugging version of write_lock()
+    - PCI: fix ICH6 quirks
+    - 1394: fix for recently added firewire patch that breaks things on ppc
+    - Fix IFLA_ADDRESS handling
+    - Fix BeFS slab corruption
+    - Fix timer race in dst GC code
+    - Have ext3 reject file handles with bad inode numbers early
+    - Kill HASH_HIGHMEM from route cache hash sizing
+    - sys_getppid oopses on debug kernel
+    - IA64: local DoS with corrupted ELFs
+    - tpm: interrupt clear fix
+    - ulog: fix panic on SMP kernels
+    - dm: BUG/OOPS fix
+    - MD: Fix a potential NULL dereference in md/raid1
+    - ip_tables: fix table locking in ipt_do_table
+    - swsusp: Fix swap_type_of
+    - sky2: phy power problem on 88e805x
+    - ipx: header length validation needed
+
+  [ Frederik Schüler ]
+  * Activate CONFIG_R8169_VLAN on amd64. (closes: #383707)
+  * Activate EFI boot support on i386. (closes: #381951)
+
+  [ dann frazier ]
+  * Include module.lds in headers package if it exists. (closes: #342246)
+  * Add Apple MacBook product IDs to usbhid and set
+    CONFIG_USB_HIDINPUT_POWERBOOK=y on i386 and amd64. (closes: #383620)
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 24 Aug 2006 15:54:51 +0000
+
+linux-2.6 (2.6.17-6) unstable; urgency=low
+
+  [ maximilian attems ]
+  * debian/arch/i386/defines: Activate 686-bigmem flavour for enterprise
+  usage.
+  * Add ubuntu pci table patch for scsi drivers advansys and fdomain.
+
+  [ Martin Michlmayr ]
+  * arm/armeb: Use gcc-4.1.
+  * mips/mipsel: Use gcc-4.1.
+  * arm/ixp4xx: Update config based on the NSLU2 config.
+  * arm/s3c2410: Unset CONFIG_DEBUG_INFO.
+  * arm/iop32x: xscale: don't mis-report 80219 as an iop32x
+  * arm/iop32x: Add an MTD map for IOP3xx boards
+  * arm/iop32x: Add support for the Thecus N2100.
+  * arm/iop32x: Add support for the GLAN Tank.
+  * arm/iop32x: Add a flavour for IOP32x based machines.
+
+  [ Bastian Blank ]
+  * Shrink short descriptions.
+  * Make gcc-4.1 the default compiler.
+  * [powerpc]: Use gcc-4.1.
+  * Move latest and transitional packages to linux-latest-2.6.
+
+  [ Frederik Schüler ]
+  * [amd64] Add smp-alternatives backport.
+  * [amd64] Drop smp flavours.
+  * [amd64] Merge k8 and p4 flavours into a generic one, following upstreams
+    advice.
+  * Activate BSD_PROCESS_ACCT_V3.
+  * Add stable release 2.6.17.8:
+    - ALSA: Don't reject O_RDWR at opening PCM OSS
+    - Add stable branch to maintainers file
+    - tty serialize flush_to_ldisc
+    - S390: fix futex_atomic_cmpxchg_inatomic
+    - Fix budget-av compile failure
+    - cond_resched() fix
+    - e1000: add forgotten PCI ID for supported device
+    - ext3: avoid triggering ext3_error on bad NFS file handle
+    - ext3 -nobh option causes oops
+    - Fix race related problem when adding items to and svcrpc auth cache.
+    - ieee1394: sbp2: enable auto spin-up for Maxtor disks
+    - invalidate_bdev() speedup
+    - Sparc64 quad-float emulation fix
+    - VLAN state handling fix
+    - Update frag_list in pskb_trim
+    - UHCI: Fix handling of short last packet
+    - sky2: NAPI bug
+    - i2c: Fix 'ignore' module parameter handling in i2c-core
+    - scx200_acb: Fix the block transactions
+    - scx200_acb: Fix the state machine
+    - H.323 helper: fix possible NULL-ptr dereference
+    - Don't allow chmod() on the /proc/<pid>/ files
+    - PCI: fix issues with extended conf space when MMCONFIG disabled because of e820
+
+  [ Sven Luther ]
+  * [powerpc] Added console=hvsi0 too to CMDLINE to the powerpc64 flavour, for
+    non-virtualized IBM power machines serial console.
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 11 Aug 2006 19:58:06 +0200
+
+linux-2.6 (2.6.17-5) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * [arm/nslu2] Enable CONFIG_USB_EHCI_SPLIT_ISO.  Closes: #378554
+
+  [ maximilian attems ]
+  * Add stable release 2.6.17.7:
+    - BLOCK: Fix bounce limit address check
+    - v4l/dvb: Fix budget-av frontend detection
+    - v4l/dvb: Fix CI on old KNC1 DVBC cards
+    - v4l/dvb: Fix CI interface on PRO KNC1 cards
+    - v4l/dvb: Backport fix to artec USB DVB devices
+    - v4l/dvb: Backport the DISEQC regression fix to 2.6.17.x
+    - v4l/dvb: stradis: dont export MODULE_DEVICE_TABLE
+    - pnp: suppress request_irq() warning
+    - generic_file_buffered_write(): handle zero-length iovec segments
+    - serial 8250: sysrq deadlock fix
+    - Reduce ACPI verbosity on null handle condition
+    - ieee80211: TKIP requires CRC32
+    - Make powernow-k7 work on SMP kernels.
+    - via-velocity: the link is not correctly detected when the device starts
+    - Add missing UFO initialisations
+    - USB serial ftdi_sio: Prevent userspace DoS (CVE-2006-2936)
+    - cdrom: fix bad cgc.buflen assignment
+    - splice: fix problems with sys_tee()
+    - fix fdset leakage
+    - struct file leakage
+    - XFS: corruption fix
+    - v4l/dvb: Kconfig: fix description and dependencies for saa7115 module
+    - dvb-bt8xx: fix frontend detection for DViCO FusionHDTV DVB-T Lite rev 1.2
+    - IB/mthca: restore missing PCI registers after reset
+    - v4l/dvb: Backport the budget driver DISEQC instability fix
+    - Fix IPv4/DECnet routing rule dumping
+    - pdflush: handle resume wakeups
+    - x86_64: Fix modular pc speaker
+    - Fix powernow-k8 SMP kernel on UP hardware bug.
+    - ALSA: RME HDSP - fixed proc interface (missing {})
+    - ALSA: au88x0 - Fix 64bit address of MPU401 MMIO port
+    - ALSA: Fix a deadlock in snd-rtctimer
+    - ALSA: Fix missing array terminators in AD1988 codec support
+    - ALSA: Fix model for HP dc7600
+    - ALSA: Fix mute switch on VAIO laptops with STAC7661
+    - ALSA: fix the SND_FM801_TEA575X dependencies
+    - ALSA: Fix undefined (missing) references in ISA MIRO sound driver
+    - ALSA: Fix workaround for AD1988A rev2 codec
+    - ALSA: hda-intel - Fix race in remove
+    - Suppress irq handler mismatch messages in ALSA ISA drivers
+    - PKT_SCHED: Fix illegal memory dereferences when dumping actions
+    - PKT_SCHED: Return ENOENT if action module is unavailable
+    - PKT_SCHED: Fix error handling while dumping actions
+    - generic_file_buffered_write(): deadlock on vectored write
+    - ethtool: oops in ethtool_set_pauseparam()
+    - memory hotplug: solve config broken: undefined reference to `online_page'
+  * Add budget-av-compile-fix.patch stable compile fix.
+  * Enable in all configs setting SND_FM801_TEA575X SND_FM801_TEA575X_BOOL=y.
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 29 Jul 2006 13:30:06 +0200
+
+linux-2.6 (2.6.17-4) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.17.5:
+    - Fix nasty /proc vulnerability (CVE-2006-3626)
+  * Add stable release 2.6.17.6:
+    - Relax /proc fix a bit
+  * Set section of images to admin.
+
+  [ dann frazier ]
+  * [ia64] Drop the non-SMP flavours; they are not well maintained upstream.
+    Note that the non-SMP flavours have been identical to the SMP builds
+    since 2.6.13-1; this was to avoid having to drop then re-add these
+    flavours if upstream resolved the issue - but that never happened.
+    Note that this is a measurable performance penalty on non-SMP systems.
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 17 Jul 2006 11:08:41 +0200
+
+linux-2.6 (2.6.17-3) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add stable release 2.6.17.2:
+    - ide-io: increase timeout value to allow for slave wakeup
+    - NTFS: Critical bug fix (affects MIPS and possibly others)
+    - Link error when futexes are disabled on 64bit architectures
+    - SCTP: Reset rtt_in_progress for the chunk when processing its sack.
+    - SPARC32: Fix iommu_flush_iotlb end address
+    - ETHTOOL: Fix UFO typo
+    - UML: fix uptime
+    - x86: compile fix for asm-i386/alternatives.h
+    - bcm43xx: init fix for possible Machine Check
+    - SCTP: Fix persistent slowdown in sctp when a gap ack consumes rx buffer.
+    - kbuild: bugfix with initramfs
+    - Input: return correct size when reading modalias attribute
+    - ohci1394: Fix broken suspend/resume in ohci1394
+    - idr: fix race in idr code
+    - USB: Whiteheat: fix firmware spurious errors
+    - libata: minor patch for ATA_DFLAG_PIO
+    - SCTP: Send only 1 window update SACK per message.
+    - PFKEYV2: Fix inconsistent typing in struct sadb_x_kmprivate.
+    - SCTP: Limit association max_retrans setting in setsockopt.
+    - SCTP: Reject sctp packets with broadcast addresses.
+    - IPV6: Sum real space for RTAs.
+    - IPV6 ADDRCONF: Fix default source address selection without
+      CONFIG_IPV6_PRIVACY
+    - IPV6: Fix source address selection.
+  * Add stable release 2.6.17.3:
+    - NETFILTER: SCTP conntrack: fix crash triggered by packet without chunks
+    [CVE-2006-2934]
+  * Deapply merged sparc32-iotlb.patch.
+  * Fix README.Debian: Correct svn location, remove old boot param bswap
+    reference, the asfs patch is in the Debian kernel. Remove reference to
+    AMD 768 erratum 10, it was solved in 2.6.12. Add wording corrections.
+  * Set CONFIG_SERIAL_8250_RN_UARTS=16 for all archs beside mips/m68k unless
+    explicitly set on a specific value. (closes: 377151)
+  * Add stable release 2.6.17.4:
+    - fix prctl privilege escalation and suid_dumpable (CVE-2006-2451)
+
+  [ Sven Luther ]
+  * Re-enabled fs-asfs patch.
+
+  [ Thiemo Seufer ]
+  * [mips,mipsel] Fix sb1 interrupt handlers.
+  * [mips,mipsel] Fix devfs-induced build failure in sb1250 serial driver.
+  * [mips] SGI ip22 RTC was broken, fixed thanks to Julien Blache.
+  * [mips] Fix SGI ip22 serial console, thanks to Julien Blache.
+
+  [ Martin Michlmayr ]
+  * [arm/nslu2] Enable HFS and some other filesystems.
+  * [arm/nslu2] Unset CONFIG_USB_STORAGE_DEBUG.  Closes: #377853.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 13 Jul 2006 13:14:53 +0200
+
+linux-2.6 (2.6.17-2) unstable; urgency=low
+
+  [ Jurij Smakov ]
+  * [sparc] Switch to gcc-4.1 as it produces a working kernel,
+    while gcc-4.0 does not. No ABI bump neccessary, because
+    2.6.17-1 sparc binaries never made it to the archive.
+  * [sparc32] Add sparc32-iotlb.patch to fix DMA errors on sparc32.
+
+  [ Sven Luther ]
+  * [powerpc] Added console=hvc0 default commandline option to powerpc64 flavour.
+  * [powerpc] Fixed mkvmlinuz support, which was missing from -1. (Closes: #375645)
+  * [powerpc] Added PowerBook HID support for last-gen PowerBook keyboards.
+    (Closes: #307327)
+
+  [ Martin Michlmayr ]
+  * [mipsel] Fix compilation error in dz serial driver.
+  * [mipsel] Update configs.
+  * [mipsel] Add a build fix for the Cobalt early console support.
+  * [arm/nslu2] Disable SE Linux support for now so the kernel fits into flash.
+
+  [ Christian T. Steigies ]
+  * [m68k] Update patches for 2.6.17.
+  * [m68k] Add m68k-as and m68k-macro patch which allow building with current binutils.
+  * [m68k] Disable all subarches but amiga and mac for official linux-images.
+
+  [ Kyle McMartin ]
+  * [hppa] Update patchset (2.6.17-pa6) from parisc-linux.org.
+    Which fixes relocation errors in modules with 64-bit kernels, and
+    a softlockup on non-SMP flavours with gettimeofday.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 29 Jun 2006 18:49:35 +0200
+
+linux-2.6 (2.6.17-1) unstable; urgency=low
+
+  [ Frederik Schüler ]
+  * New upstream release.
+  * [amd64] Use gcc 4.1.
+  * [amd64] Drop amd64-generic flavor. We will use amd64-k8 for the
+    installer.
+
+  [ Martin Michlmayr ]
+  * [mips] Update patches for 2.6.17.
+  * [arm] Update configs.
+  * [armeb] Update configs.
+
+  [ Thiemo Seufer ]
+  * [mips] Fix SWARM FPU detection.
+  * [mips] Update configurations.
+
+  [ Kyle McMartin ]
+  * [hppa] Set PDC_CHASSIS_WARN to y.
+  * [hppa] Update patchset (2.6.17-pa2) from parisc-linux.org.
+  * [hppa] Change NR_CPUS to 8 from 32 on both SMP flavours.
+  * [hppa] Set PARISC_PAGE_SIZE to 4K on all platforms.
+
+  [ Bastian Blank ]
+  * [s390] Use gcc 4.1.
+  * [i386] Enable REGPARM.
+  * [i386] Use gcc 4.1.
+  * [powerpc] Disable prep.
+
+  [ dann frazier ]
+  * [ia64] Update configs
+  * [ia64] Use gcc 4.1.
+
+  [ maximilian attems ]
+  * Add stable release 2.6.17.1:
+    - xt_sctp: fix endless loop caused by 0 chunk length (CVE-2006-3085)
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 22 Jun 2006 12:13:15 +0200
+
+linux-2.6 (2.6.16+2.6.17-rc3-0experimental.1) experimental; urgency=low
+
+  [ Frederik Schüler ]
+  * New upstream release candidate.
+  * Switch HZ from 1000 to 250, following upstreams default.
+  * Activate CONFIG_BCM43XX_DEBUG.
+
+  [ maximilian attems ]
+  * Disable broken and known unsecure LSM modules: CONFIG_SECURITY_SECLVL,
+    CONFIG_SECURITY_ROOTPLUG. Upstream plans to remove them for 2.6.18
+
+ -- Frederik Schüler <fs@debian.org>  Sun,  7 May 2006 17:06:29 +0200
+
+linux-2.6.16 (2.6.16-18) unstable; urgency=high
+
+  [ Sven Luther ]
+  * [powerpc] Added console=hvsi0 too to CMDLINE to the powerpc64 flavour,
+    for non-virtualized IBM power machines serial console.
+
+  [ dann frazier ]
+  * fs-ext3-bad-nfs-handle.patch: avoid triggering ext3_error on bad NFS
+    file handle (CVE-2006-3468)
+  * cdrom-bad-cgc.buflen-assign.patch: fix buffer overflow in dvd_read_bca
+  * usb-serial-ftdi_sio-dos.patch: fix userspace DoS in ftdi_sio driver
+
+  [ Bastian Blank ]
+  * Update xen patch to changeset 9762.
+
+ -- Frederik Schüler <fs@debian.org>  Fri, 18 Aug 2006 20:29:17 +0200
+
+linux-2.6.16 (2.6.16-17) unstable; urgency=high
+
+  [ Martin Michlmayr ]
+  * Add stable release 2.6.16.22:
+    - powernow-k8 crash workaround
+    - NTFS: Critical bug fix (affects MIPS and possibly others)
+    - JFS: Fix multiple errors in metapage_releasepage
+    - SPARC64: Fix D-cache corruption in mremap
+    - SPARC64: Respect gfp_t argument to dma_alloc_coherent().
+    - SPARC64: Fix missing fold at end of checksums.
+    - scsi_lib.c: properly count the number of pages in scsi_req_map_sg()
+    - I2O: Bugfixes to get I2O working again
+    - Missed error checking for intent's filp in open_namei().
+    - tmpfs: time granularity fix for [acm]time going backwards
+    - USB: Whiteheat: fix firmware spurious errors
+    - fs/namei.c: Call to file_permission() under a spinlock in do_lookup_path()
+  * Add stable release 2.6.16.23:
+    - revert PARPORT_SERIAL should depend on SERIAL_8250_PCI patch
+    - NETFILTER: SCTP conntrack: fix crash triggered by packet without
+      chunks (CVE-2006-2934)
+  * Add stable release 2.6.16.24:
+    - fix prctl privilege escalation and suid_dumpable (CVE-2006-2451)
+  * Add stable release 2.6.16.25:
+    - Fix nasty /proc vulnerability (CVE-2006-3626)
+  * Relax /proc fix a bit (Linus Torvalds)
+
+  * [arm/nslu2] Unset CONFIG_USB_STORAGE_DEBUG.  Closes: #377853.
+  * [mips] SGI ip22 RTC was broken, fixed thanks to Julien Blache.
+  * [mips] Fix SGI ip22 serial console, thanks to Julien Blache.
+
+  [ Bastian Blank ]
+  * Fix vserver patch.
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 15 Jul 2006 17:18:49 +0200
+
+linux-2.6.16 (2.6.16-16) unstable; urgency=low
+
+  [ Sven Luther ]
+  * [powerpc] Added console=hvc0 default commandline option to powerpc64 flavour.
+  * [powerpc] Now THERM_PM72 and all WINDFARMs are builtin, for better fan control.
+
+  [ Martin Michlmayr ]
+  * [arm/nslu2] Disable SE Linux support for now so the kernel fits into
+    flash.  Closes: #376926.
+
+  [ Bastian Blank ]
+  * [powerpc,powerpc-miboot] Enable OpenFirmware device tree support.
+    (closes: #376012)
+
+ -- Bastian Blank <waldi@debian.org>  Sat,  8 Jul 2006 17:57:57 +0200
+
+linux-2.6.16 (2.6.16-15) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add stable release 2.6.16.18:
+    - NETFILTER: SNMP NAT: fix memory corruption (CVE-2006-2444)
+  * Add stable release 2.6.16.19:
+    - NETFILTER: Fix small information leak in SO_ORIGINAL_DST (CVE-2006-1343)
+  * Add stable release 2.6.16.20:
+    - x86_64: Don't do syscall exit tracing twice
+    - Altix: correct ioc4 port order
+    - Input: psmouse - fix new device detection logic
+    - PowerMac: force only suspend-to-disk to be valid
+    - the latest consensus libata resume fix
+    - Altix: correct ioc3 port order
+    - Cpuset: might sleep checking zones allowed fix
+    - ohci1394, sbp2: fix "scsi_add_device failed" with PL-3507 based devices
+    - sbp2: backport read_capacity workaround for iPod
+    - sbp2: fix check of return value of hpsb_allocate_and_register_addrspace
+    - x86_64: x86_64 add crashdump trigger points
+    - ipw2200: Filter unsupported channels out in ad-hoc mode
+  * Add stable release 2.6.16.21:
+    - check_process_timers: fix possible lockup
+    - run_posix_cpu_timers: remove a bogus BUG_ON() (CVE-2006-2445)
+    - xt_sctp: fix endless loop caused by 0 chunk length (CVE-2006-3085)
+    - powerpc: Fix machine check problem on 32-bit kernels (CVE-2006-2448)
+
+  [ Christian T. Steigies ]
+  * [m68k] Add mac via patch from Finn Thain.
+  * [m68k] Enable INPUT_EVDEV.
+
+  [ Martin Michlmayr ]
+  * [mips/b1-bcm91250a] Enable SMP.
+  * [mips] Add a compile fix for the Maxine fb.
+  * [mipsel] Add a patch that let's you enable serial console on DECstation.
+  * [mipsel] Add a patch to get SCSI working on DECstation.
+  * [mipsel] Handle memory-mapped RTC chips properly.
+  * [mipsel] Add configs for r3k-kn02 and r4k-kn04 DECstation.
+  * [arm] Allow RiscPC machines to boot an initrd (tagged list fix).
+  * [arm/nslu2] Enable many modules.
+  * [arm] Build loop support as a module.
+  * [arm] Use the generic netfilter configuration.
+  * [arm/footbridge] Enable sound.
+
+  [ Kyle McMartin ]
+  * [hppa] Pulled patch from cvs to fix build of kernel/ptrace.c which needs
+    {read,write}_can_lock.
+  * [hppa] Disable CONFIG_DETECT_SOFTLOCKUP to fix boot on pa8800 machines.
+
+  [ Sven Luther ]
+  * [powerpc,prep] Added a new ARCH=ppc PReP flavour, currently mostly a copy
+    of the -powerpc one.
+  * Upgraded mkvmlinuz dependency to mkvmlinuz 21.
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.0.2-rc21.
+  * Bump build-dependency on kernel-package to 10.049.
+
+  [ Jurij Smakov ]
+  * Add dcache-memory-corruption.patch to fix the mremap(), occasionally
+    triggered on sparc in the form of dpkg database corruption. Affects
+    sparc64, mips and generic includes. Thanks to David Miller, original
+    patch is included in 2.6.17.
+    Ref: http://marc.theaimsgroup.com/?l=linux-sparc&m=114920963824047&w=2
+  * Add sparc32-iotlb.patch to fix the DMA errors encountered with latest
+    kernels on sparc32, in particularly HyperSparcs. Thanks to Bob Breuer.
+    Ref: http://marc.theaimsgroup.com/?l=linux-sparc&m=115077649707675&w=2
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 21 Jun 2006 14:09:11 +0200
+
+linux-2.6 (2.6.16-14) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.16.16:
+    - fs/locks.c: Fix lease_init (CVE-2006-1860)
+  * Make i386 xen images recommend libc6-xen.
+  * Update vserver patch to 2.0.2-rc20.
+  * Update xen patch to changeset 9687.
+
+  [ Christian T. Steigies ]
+  * [m68k] Add generic m68k ide fix.
+  * [m68k] Add cross-compile instructions.
+  * [m68k] Enable INPUT_EVDEV for yaird.
+  * [m68k] sun3 general compile and scsi fixes, enable sun3 SCSI again.
+
+  [ dann frazier ]
+  * cs4281 - Fix the check of timeout in probe to deal with variable HZ.
+    (closes: #361197)
+
+  [ Norbert Tretkowski ]
+  * [alpha] Readded patch to support prctl syscall, got lost when upgrading
+    to 2.6.16.
+
+  [ Frederik Schüler ]
+  * Add stable release 2.6.16.17:
+    - SCTP: Validate the parameter length in HB-ACK chunk (CVE-2006-1857)
+    - SCTP: Respect the real chunk length when walking parameters
+      (CVE-2006-1858)
+    - ptrace_attach: fix possible deadlock schenario with irqs
+    - Fix ptrace_attach()/ptrace_traceme()/de_thread() race
+    - page migration: Fix fallback behavior for dirty pages
+    - add migratepage address space op to shmem
+    - Remove cond_resched in gather_stats()
+    - VIA quirk fixup, additional PCI IDs
+    - PCI quirk: VIA IRQ fixup should only run for VIA southbridges
+    - Fix udev device creation
+    - limit request_fn recursion
+    - PCI: correctly allocate return buffers for osc calls
+    - selinux: check for failed kmalloc in security_sid_to_context()
+    - TG3: ethtool always report port is TP.
+    - Netfilter: do_add_counters race, possible oops or info leak
+      (CVE-2006-0039)
+    - scx200_acb: Fix resource name use after free
+    - smbus unhiding kills thermal management
+    - fs/compat.c: fix 'if (a |= b )' typo
+    - smbfs: Fix slab corruption in samba error path
+    - fs/locks.c: Fix sys_flock() race
+    - USB: ub oops in block_uevent
+    - via-rhine: zero pad short packets on Rhine I ethernet cards
+    - md: Avoid oops when attempting to fix read errors on raid10
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 22 May 2006 14:56:11 +0200
+
+linux-2.6 (2.6.16-13) unstable; urgency=low
+
+  [ Frederik Schüler ]
+  * Add stable release 2.6.16.14:
+    - smbfs chroot issue (CVE-2006-1864)
+
+  [ Bastian Blank ]
+  * Don't make headers packages depend on images.
+  * Bump abiname to 2. (closes: #366291)
+  * Update vserver patch to 2.0.2-rc19.
+  * Update xen patch to changeset 9668.
+  * Remove abi fixes.
+  * Add stable release 2.6.16.15:
+    - SCTP: Allow spillover of receive buffer to avoid deadlock. (CVE-2006-2275)
+    - SCTP: Fix panic's when receiving fragmented SCTP control chunks. (CVE-2006-2272)
+    - SCTP: Fix state table entries for chunks received in CLOSED state. (CVE-2006-2271)
+    - SCTP: Prevent possible infinite recursion with multiple bundled DATA. (CVE-2006-2274)
+  * Switch HZ from 1000 to 250.
+
+  [ Christian T. Steigies ]
+  * [m68k] Add patches that allow building images for atari
+  * [m68k] Enable atyfb driver for atari
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 10 May 2006 18:58:44 +0200
+
+linux-2.6 (2.6.16-12) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.16.12:
+    - dm snapshot: fix kcopyd destructor
+    - x86_64: Pass -32 to the assembler when compiling the 32bit vsyscall pages
+    - for_each_possible_cpu
+    - Simplify proc/devices and fix early termination regression
+    - sonypi: correct detection of new ICH7-based laptops
+    - MIPS: Fix tx49_blast_icache32_page_indexed.
+    - NET: e1000: Update truesize with the length of the packet for packet split
+    - i386: fix broken FP exception handling
+    - tipar oops fix
+    - USB: fix array overrun in drivers/usb/serial/option.c
+    - Altix snsc: duplicate kobject fix
+    - Alpha: strncpy() fix
+    - LSM: add missing hook to do_compat_readv_writev()
+    - Fix reiserfs deadlock
+    - make vm86 call audit_syscall_exit
+    - fix saa7129 support in saa7127 module for pvr350 tv out
+    - dm flush queue EINTR
+    - get_dvb_firmware: download nxt2002 firmware from new driver location
+    - cxusb-bluebird: bug-fix: power down corrupts frontend
+    - x86_64: Fix a race in the free_iommu path.
+    - MIPS: Use "R" constraint for cache_op.
+    - MIPS: R2 build fixes for gcc < 3.4.
+    - cs5535_gpio.c: call cdev_del() during module_exit to unmap kobject references and other cleanups
+    - MIPS: Fix branch emulation for floating-point exceptions.
+    - x86/PAE: Fix pte_clear for the >4GB RAM case
+  * Add stable release 2.6.16.13:
+    - NETFILTER: SCTP conntrack: fix infinite loop (CVE-2006-1527)
+  * Remove merged patches.
+  * Rediff xen patch.
+  * Bump build-dependency on kernel-package to 10.047.
+
+  [ Martin Michlmayr ]
+  * [arm] Enable cramfs for ixp4xx and rpc.
+
+ -- Bastian Blank <waldi@debian.org>  Thu,  4 May 2006 11:37:26 +0200
+
+linux-2.6 (2.6.16-11) unstable; urgency=low
+
+  * Update vserver patch to 2.0.2-rc18.
+    - Limit ccaps to root inside a guest (CVE-2006-2110)
+  * Conflict with known broken grub versions. (closes: #361308)
+  * Enable s390 vserver image.
+  * Enable xen and xen-vserver images.
+  * Use localversion for kernel-package images. (closes: #365505)
+
+ -- Bastian Blank <waldi@debian.org>  Mon,  1 May 2006 16:38:45 +0200
+
+linux-2.6 (2.6.16-10) unstable; urgency=low
+
+  [ Norbert Tretkowski ]
+  * [alpha] Added backport of for_each_possible_cpu() to fix alpha build.
+    (closes: #364206)
+  * Add stable release 2.6.16.10:
+    - IPC: access to unmapped vmalloc area in grow_ary()
+    - Add more prevent_tail_call()
+    - alim15x3: ULI M-1573 south Bridge support
+    - apm: fix Armada laptops again
+    - fbdev: Fix return error of fb_write
+    - Fix file lookup without ref
+    - m41t00: fix bitmasks when writing to chip
+    - Open IPMI BT overflow
+    - x86: be careful about tailcall breakage for sys_open[at] too
+    - x86: don't allow tail-calls in sys_ftruncate[64]()
+    - IPV6: XFRM: Fix decoding session with preceding extension header(s).
+    - IPV6: XFRM: Don't use old copy of pointer after pskb_may_pull().
+    - IPV6: Ensure to have hop-by-hop options in our header of &sk_buff.
+    - selinux: Fix MLS compatibility off-by-one bug
+    - PPC: fix oops in alsa powermac driver
+    - MTD_NAND_SHARPSL and MTD_NAND_NANDSIM should be tristate's
+    - i2c-i801: Fix resume when PEC is used
+    - Fix hotplug race during device registration
+    - Fix truesize underflow
+    - efficeon-agp: Add missing memory mask
+    - 3ware 9000 disable local irqs during kmap_atomic
+    - 3ware: kmap_atomic() fix
+
+  [ maximilian attems ]
+  * Add stable release 2.6.16.11:
+    -  Don't allow a backslash in a path component (CVE-2006-1863)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 25 Apr 2006 13:56:19 +0200
+
+linux-2.6 (2.6.16-9) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add stable release 2.6.16.8:
+    - ip_route_input panic fix (CVE-2006-1525)
+  * Add stable release 2.6.16.9:
+    - i386/x86-64: Fix x87 information leak between processes (CVE-2006-1056)
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.0.2-rc17.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 20 Apr 2006 15:37:28 +0200
+
+linux-2.6 (2.6.16-8) unstable; urgency=low
+
+  * Fix ABI-breakage introduced in -7. (closes: #363032)
+  * Add stable release 2.6.16.6:
+    - ext3: Fix missed mutex unlock
+    - RLIMIT_CPU: fix handling of a zero limit
+    - alpha: SMP boot fixes
+    - m32r: security fix of {get, put}_user macros
+    - m32r: Fix cpu_possible_map and cpu_present_map initialization for SMP kernel
+    - shmat: stop mprotect from giving write permission to a readonly attachment (CVE-2006-1524)
+    - powerpc: fix incorrect SA_ONSTACK behaviour for 64-bit processes
+    - MPBL0010 driver sysfs permissions wide open
+    - cciss: bug fix for crash when running hpacucli
+    - fuse: fix oops in fuse_send_readpages()
+    - Fix utime(2) in the case that no times parameter was passed in.
+    - Fix buddy list race that could lead to page lru list corruptions
+    - NETFILTER: Fix fragmentation issues with bridge netfilter
+    - USB: remove __init from usb_console_setup
+    - Fix suspend with traced tasks
+    - isd200: limit to BLK_DEV_IDE
+    - edac_752x needs CONFIG_HOTPLUG
+    - fix non-leader exec under ptrace
+    - sky2: bad memory reference on dual port cards
+    - atm: clip causes unregister hang
+    - powerpc: iSeries needs slb_initialize to be called
+    - Fix block device symlink name
+    - Incorrect signature sent on SMB Read
+  * Add stable release 2.6.16.7:
+    - fix MADV_REMOVE vulnerability (CVE-2006-1524 for real this time)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 18 Apr 2006 16:22:31 +0200
+
+linux-2.6 (2.6.16-7) unstable; urgency=low
+
+  [ Frederik Schüler ]
+  * Add stable release 2.6.16.3:
+    - Keys: Fix oops when adding key to non-keyring (CVE-2006-1522)
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.16.4:
+    - RCU signal handling (CVE-2006-1523)
+
+  [ Sven Luther ]
+  * [powerpc] Transitioned mkvmlinuz support patch to the 2.6.16 ARCH=powerpc
+    tree. PReP is broken in 2.6.16 though.
+
+  [ maximilian attems ]
+  * Add stable release 2.6.16.5:
+   - x86_64: Clean up execve
+   - x86_64: When user could have changed RIP always force IRET (CVE-2006-0744)
+  * Disable CONFIG_SECCOMP (adds useless overhead on context-switch) -
+    thanks to fs for checking abi.
+
+  [ Christian T. Steigies ]
+  * [m68k] update m68k patch and config to 2.6.16, temporarily disable atari
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 15 Apr 2006 13:56:05 +0200
+
+linux-2.6 (2.6.16-6) unstable; urgency=medium
+
+  [ Bastian Blank ]
+  * Provide version infos in support package and don't longer rely on the
+    changelog.
+  * [amd64/i386] Enable cpu hotplug support.
+
+  [ maximilian attems ]
+  * Add stable release 2.6.16.2:
+    - PCMCIA_SPECTRUM must select FW_LOADER
+    - drivers/net/wireless/ipw2200.c: fix an array overun
+    - AIRO{,_CS} <-> CRYPTO fixes
+    - tlclk: fix handling of device major
+    - fbcon: Fix big-endian bogosity in slow_imageblit()
+    - Fix NULL pointer dereference in node_read_numastat()
+    - USB: EHCI full speed ISO bugfixes
+    - Mark longhaul driver as broken.
+    - fib_trie.c node freeing fix
+    - USB: Fix irda-usb use after use
+    - sysfs: zero terminate sysfs write buffers (CVE-2006-1055)
+    - USB: usbcore: usb_set_configuration oops (NULL ptr dereference)
+    - pcmcia: permit single-character-identifiers
+    - hostap: Fix EAPOL frame encryption
+    - wrong error path in dup_fd() leading to oopses in RCU
+    - {ip, nf}_conntrack_netlink: fix expectation notifier unregistration
+    - isicom must select FW_LOADER
+    - knfsd: Correct reserved reply space for read requests.
+    - Fix module refcount leak in __set_personality()
+    - sbp2: fix spinlock recursion
+    - powerpc: make ISA floppies work again
+    - opti9x - Fix compile without CONFIG_PNP
+    - Add default entry for CTL Travel Master U553W
+    - Fix the p4-clockmod N60 errata workaround.
+    - kdump proc vmcore size oveflow fix
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 10 Apr 2006 16:09:51 +0200
+
+linux-2.6 (2.6.16-5) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Provide real dependency packages for module building.
+    - Add linux-headers-$version-$abiname-all and
+      linux-headers-$version-$abiname-all-$arch.
+  * Rename support package to linux-support-$version-$abiname.
+  * Fix module package output.
+  * Include .kernelrelease in headers packages. (closes: #359813)
+  * Disable Cumana partition support completely. (closes: #359207)
+  * Update vserver patch to 2.0.2-rc15.
+
+  [ dann frazier ]
+  * [ia64] initramfs-tools works now, no longer restrict initramfs-generators
+
+ -- Bastian Blank <waldi@debian.org>  Mon,  3 Apr 2006 14:00:08 +0200
+
+linux-2.6 (2.6.16-4) unstable; urgency=medium
+
+  [ Martin Michlmayr ]
+  * [arm/armeb] Update nslu2 config.
+  * Add stable release 2.6.16.1:
+    - Fix speedstep-smi assembly bug in speedstep_smi_ownership
+    - DMI: fix DMI onboard device discovery
+    - cciss: fix use-after-free in cciss_init_one
+    - DM: Fix bug: BIO_RW_BARRIER requests to md/raid1 hang.
+    - fix scheduler deadlock
+    - proc: fix duplicate line in /proc/devices
+    - rtc.h broke strace(1) builds
+    - dm: bio split bvec fix
+    - v9fs: assign dentry ops to negative dentries
+    - i810fb_cursor(): use GFP_ATOMIC
+    - NET: Ensure device name passed to SO_BINDTODEVICE is NULL terminated.
+    - XFS writeout fix
+    - sysfs: fix a kobject leak in sysfs_add_link on the error path
+    - get_cpu_sysdev() signedness fix
+    - firmware: fix BUG: in fw_realloc_buffer
+    - sysfs: sysfs_remove_dir() needs to invalidate the dentry
+    - TCP: Do not use inet->id of global tcp_socket when sending RST (CVE-2006-1242)
+    - 2.6.xx: sata_mv: another critical fix
+    - Kconfig: VIDEO_DECODER must select FW_LOADER
+    - V4L/DVB (3324): Fix Samsung tuner frequency ranges
+    - sata_mv: fix irq port status usage
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 28 Mar 2006 17:19:10 +0200
+
+linux-2.6 (2.6.16-3) unstable; urgency=low
+
+  [ Frederik Schüler ]
+  * [amd64] Add asm-i386 to the linux-headers packages.
+
+  [ Jonas Smedegaard ]
+  * Tighten yaird dependency to at least 0.0.12-8 (supporting Linux
+    2.6.16 uppercase hex in Kconfig and new IDE sysfs naming, and VIA
+    IDE on powerpc).
+
+  [ Martin Michlmayr ]
+  * [arm/armeb] Enable CONFIG_NFSD on NSLU2 again.  Closes: #358709.
+  * [arm/footbridge] CONFIG_NE2K_PCI should be a module, not built-in.
+  * [arm/footbridge] Enable CONFIG_BLK_DEV_IDECD=m since the CATS can
+    have a CD-ROM drive.
+  * [mips/sb1*] Use ttyS rather than duart as the name for the serial
+    console since the latter causes problems with debian-installer.
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.0.2-rc14.
+    - Fix sendfile. (closes: #358391, #358752)
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 27 Mar 2006 16:08:20 +0200
+
+linux-2.6 (2.6.16-2) unstable; urgency=low
+
+  [ dann frazier ]
+  * [ia64] Set unconfigured options:
+      CONFIG_PNP_DEBUG=n and CONFIG_NET_SB1000=m
+  * [hppa] Update config for 2.6.16
+
+  [ Martin Michlmayr ]
+  * [mips/mipsel] Put something in the generic config file because diff
+    will otherwise remove the empty file, causing the build to fail.
+  * [mipsel/r5k-cobalt] Set CONFIG_PACKET=y.
+  * [arm] Set CONFIG_MACLIST=y for ixp4xx because nas100d needs it.
+
+  [ Frederik Schüler ]
+  * Add Maximilian Attems to uploaders list.
+
+ -- Martin Michlmayr <tbm@cyrius.com>  Wed, 22 Mar 2006 15:15:14 +0000
+
+linux-2.6 (2.6.16-1) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * New upstream release.
+  * Default to initramfs-tools 0.55 or higher on s390.
+
+  [ maximilian attems ]
+  * Default to initramfs-tools on arm and armeb.
+
+  [ Martin Michlmayr ]
+  * [mips/mipsel] Add an image for the Broadcom BCM91480B evaluation board
+    (aka "BigSur").
+  * [arm, armeb] Enable the netconsole module.
+  * [mipsel/cobalt] Enable the netconsole module.
+  * [mips] SB1: Fix interrupt disable hazard (Ralf Baechle).
+  * [mips] SB1: Support for 1480 ethernet (Broadcom).
+  * [mips] SB1: Support for NAPI (Tom Rix).
+  * [mips] SB1: DUART support (Broadcom).
+  * [mips] Work around bad code generation for <asm/io.h> (Ralf Baechle).
+  * [mips] Fix VINO drivers when using a 64-bit kernel (Mikael Nousiainen).
+  * [arm/armeb] Update configs for 2.6.16.
+  * [mips/mipsel] Update configs for 2.6.16.
+  * [arm/armeb] Enable the SMB module on NSLU2.
+  * [mipsel] Enable parallel port modules for Cobalt since there are PCI
+    cards that can be used in a Qube.
+  * [mipsel] Enable the JFS module on Cobalt.
+
+  [ dann frazier ]
+  * [ia64] use yaird on ia64 until #357414 is fixed
+  * [ia64] Update configs for 2.6.16
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 21 Mar 2006 16:12:16 +0100
+
+linux-2.6 (2.6.15+2.6.16-rc5-0experimental.1) experimental; urgency=low
+
+  [ Frederik Schüler ]
+  * New upstream release candidate.
+
+  [ Martin Michlmayr ]
+  * Add initial mips/mipsel 2.6 kernels.
+  * Important changes compared to the 2.4 kernels:
+    - Drop the XXS1500 flavour since there's little interest in it.
+    - Drop the LASAT flavour since these machines never went into
+      production.
+    - Drop the IP22 R5K (Indy, Indigo2) flavour since the IP22 R4K
+      image now also works on machines with a R5K CPU.
+    - Add an image for SGI IP32 (O2).
+    - Rename the sb1-swarm-bn flavour to sb1-bcm91250a.
+    - Enable PCI network (and other) modules on Cobalt.  Closes: #315895.
+  * Add various MIPS related patches:
+    - Fix iomap compilation on machines without COW.
+    - Improve gettimeofday on MIPS.
+    - Fix an oops on IP22 zerilog (serial console).
+    - Improve IDE probing so it won't take so long on Cobalt.
+    - Probe for IDE disks on SWARM.
+    - Test whether there's a scache (fixes Cobalt crash).
+    - Add Tulip fixes for Cobalt.
+  * Fix a typo in the description of the linux-doc-* package,
+    thanks Justin Pryzby.  Closes: #343424.
+  * [arm] Enable nfs and nfsd modules.
+  * [arm/footbride] Suggest nwutil (Netwinder utilities).
+
+ -- Frederik Schüler <fs@debian.org>  Thu,  9 Mar 2006 14:13:17 +0000
+
+linux-2.6 (2.6.15+2.6.16-rc4-0experimental.1) experimental; urgency=low
+
+  [ Frederik Schüler ]
+  * New upstream release.
+  * Activate CONFIG_DVB_AV7110_OSD on alpha amd64 and ia64.
+    Closes: #353292
+  * Globally enable NAPI on all network card drivers which support it.
+
+  [ maximilian attems ]
+  * Drop fdutils from i386 and amd64 Suggests.
+  * Swap lilo and grub Suggests for i386 and amd64.
+
+  [ Jurij Smakov ]
+  * Make sure that LOCALVERSION environment variable is not
+    passed to a shell while invoking make-kpkg, since it
+    appends it to the version string, breaking the build.
+    Closes: #349472
+  * [sparc32] Re-enable the building of sparc32 images.
+  * [sparc64] Re-add (partial) sparc64-atyf-xl-gr.patch, since it
+    was only partially applied upstream, so the problem (garbled
+    screen output on SunBlade 100) is still present. Thanks to
+    Luis Ortiz for pointing it out.
+  * Bump the build-dep on kernel-package to 10.035, which fixes
+    the problem with building documentation packages.
+
+  [ Martin Michlmayr ]
+  * [sparc] Add sys_newfstatat -> sys_fstatat64 fix from git.
+  * [arm] Update configs for 2.6.16-rc3.
+  * [armeb] Update configs for 2.6.16-rc3.
+  * [arm/armeb] Fix compilation error on NSLU2 due to recent flash
+    changes.
+  * [arm/armeb] Fix a compilation error in the IXP4xx beeper support
+    (Alessandro Zummo).
+
+  [ Norbert Tretkowski ]
+  * [alpha] Update arch/alpha/config* for 2.6.16-rc3.
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 24 Feb 2006 16:02:11 +0000
+
+linux-2.6 (2.6.15-8) unstable; urgency=high
+
+  [ maximilian attems ]
+  * Add stable Release 2.6.15.5:
+    - Fix deadlock in br_stp_disable_bridge
+    - Fix a severe bug
+    - i386: Move phys_proc_id/early intel workaround to correct function
+    - ramfs: update dir mtime and ctime
+    - sys_mbind sanity checking
+    - Fix s390 build failure.
+    - Revert skb_copy_datagram_iovec() recursion elimination.
+    - s390: add #ifdef __KERNEL__ to asm-s390/setup.h
+    - netfilter missing symbol has_bridge_parent
+    - hugetlbfs mmap ENOMEM failure
+    - IB/mthca: max_inline_data handling tweaks
+    - it87: Fix oops on removal
+    - hwmon it87: Probe i2c 0x2d only
+    - reiserfs: disable automatic enabling of reiserfs inode attributes
+    - Fix snd-usb-audio in 32-bit compat environment
+    - dm: missing bdput/thaw_bdev at removal
+    - dm: free minor after unlink gendisk
+    - gbefb: IP32 gbefb depth change fix
+    - shmdt cannot detach not-alined shm segment cleanly.
+    - Address autoconfiguration does not work after device down/up cycle
+    - gbefb: Set default of FB_GBE_MEM to 4 MB
+    - XFS ftruncate() bug could expose stale data (CVE-2006-0554)
+    - sys_signal: initialize ->sa_mask
+    - do_sigaction: cleanup ->sa_mask manipulation
+    - fix zap_thread's ptrace related problems
+    - fix deadlock in ext2
+    - cfi: init wait queue in chip struct
+    - sd: fix memory corruption with broken mode page headers
+    - sbp2: fix another deadlock after disconnection
+    - skge: speed setting
+    - skge: fix NAPI/irq race
+    - skge: genesis phy initialization fix
+    - skge: fix SMP race
+    - x86_64: Check for bad elf entry address (CVE-2006-0741)
+    - alsa: fix bogus snd_device_free() in opl3-oss.c
+    - ppc32: Put cache flush routines back into .relocate_code section
+    - sys32_signal() forgets to initialize ->sa_mask
+    - Normal user can panic NFS client with direct I/O (CVE-2006-0555)
+  * Deactivate merged duplicates: s390-klibc-buildfix.patch,
+    powerpc-relocate_code.patch.
+  * Add stable Release 2.6.15.6:
+    - Don't reset rskq_defer_accept in reqsk_queue_alloc
+    - fs/nfs/direct.c compile fix
+    - mempolicy.c compile fix, make sure BITS_PER_BYTE is defined
+    - [IA64] die_if_kernel() can return (CVE-2006-0742)
+
+  [ Sven Luther ]
+  * [powerpc] Disabled CONFIG_IEEE1394_SBP2_PHYS_DMA, which was broken on
+    powerpc64, as it used the long deprecated bus_to_virt symbol.
+    (Closes: #330225)
+  * [powerpc] Fixed gettimeofday breakage causing clock drift.
+
+ -- Bastian Blank <waldi@debian.org>  Mon,  6 Mar 2006 11:06:28 +0100
+
+linux-2.6 (2.6.15-7) unstable; urgency=low
+
+  [ Norbert Tretkowski ]
+  * [alpha] Disabled CONFIG_ALPHA_LEGACY_START_ADDRESS for -alpha-generic and
+    -alpha-smp flavours, and introduced a new -alpha-legacy flavour for MILO
+    based machines, which has CONFIG_ALPHA_LEGACY_START_ADDRESS enabled.
+    (closes: #352186)
+  * [alpha] Added new patch to support prctl syscall. (closes: #349765)
+  * [i386] Renamed kernel-image-2.6-486 to kernel-image-2.6-386, it's meant for
+    transition only, and kernel-image-2.6-386 is the package name in sarge.
+
+  [ Jurij Smakov ]
+  * Bump build-dependency on kernel-package to 10.035, which is fixed
+    to build the documentation packages again.
+    Closes: #352000, #348332
+
+  [ Frederik Schüler ]
+  * Activate CONFIG_DVB_AV7110_OSD on alpha amd64 and ia64.
+    Closes: #353292
+  * Deactivate CONFIG_FB_ATY_XL_INIT on all architectures: it is broken and
+    already removed in 2.6.16-rc.
+    Closes: #353310
+
+  [ Christian T. Steigies ]
+  * [m68k] build in cirrusfb driver
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 21 Feb 2006 17:35:21 +0000
+
+linux-2.6 (2.6.15-6) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Moved the mkvmlinuz support patch modification to a -1 version of the
+    patch.
+
+  [ maximilian attems ]
+  * Add stable treee 2.6.15.4
+    - PCMCIA=m, HOSTAP_CS=y is not a legal configuration
+    - Input: iforce - do not return ENOMEM upon successful allocation
+    - x86_64: Let impossible CPUs point to reference per cpu data
+    - x86_64: Clear more state when ignoring empty node in SRAT parsing
+    - x86_64: Dont record local apic ids when they are disabled in MADT
+    - Fix keyctl usage of strnlen_user()
+    - Kill compat_sys_clock_settime sign extension stub.
+    - Input: grip - fix crash when accessing device
+    - Input: db9 - fix possible crash with Saturn gamepads
+    - Input: iforce - fix detection of USB devices
+    - Fixed hardware RX checksum handling
+    - SCSI: turn off ordered flush barriers
+    - Input: mousedev - fix memory leak
+    - seclvl settime fix
+    - fix regression in xfs_buf_rele
+    - md: remove slashes from disk names when creation dev names in sysfs
+    - d_instantiate_unique / NFS inode leakage
+    - dm-crypt: zero key before freeing it
+    - bridge: netfilter races on device removal
+    - bridge: fix RCU race on device removal
+    - SELinux: fix size-128 slab leak
+    - __cmpxchg() must really always be inlined
+    - emu10k1 - Fix the confliction of 'Front' control
+    - Input: sidewinder - fix an oops
+  * Deactivate merged alpha-cmpxchg-inline.patch, sparc64-clock-settime.patch.
+
+  [ Christian T. Steigies ]
+  * [m68k] Add fix for m68k/buddha IDE and m68k/mac SCSI driver
+  * [m68k] Patch by Peter Krummrich to stop flickering pixels with PicassoII
+  * [m68k] make Amiga keyboard usable again, patch by Roman Zippel
+  * [m68k] prevent wd33c93 SCSI driver from crashing the kernel, patch by Roman Zippel
+  * [m68k] remove SBCs from VME descriptions (closes: #351924)
+
+ -- Frederik Schüler <fs@debian.org>  Fri, 10 Feb 2006 15:33:21 +0000
+
+linux-2.6 (2.6.15-5) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * Add a fix for the input support for the ixp4xx beeper driver from
+    2.6.16-rc2.
+  * Add stable tree 2.6.15.3:
+    - Fix extra dst release when ip_options_echo fails (CVE-2006-0454)
+
+  [ Sven Luther ]
+  * [powerpc] Removed -o root -g root option to mkvmlinuz support patch.
+    (Closes: #351412)
+
+ -- Sven Luther <luther@debian.org>  Tue,  7 Feb 2006 19:23:14 +0000
+
+linux-2.6 (2.6.15-4) unstable; urgency=low
+
+  [ Jurij Smakov ]
+  * [sparc64] Add sparc64-clock-settime.patch to fix the incorrect
+    handling of the clock_settime syscall arguments, which resulted
+    in a hang when trying to set the date using 'date -s'. Patch
+    by David Miller is applied upstream. Thanks to Ludovic Courtes
+    and Frans Pop for reporting and testing.
+    Ref: http://marc.theaimsgroup.com/?t=113861017400002&r=1&w=2
+
+  [ Christian T. Steigies ]
+  * [m68k] update m68k patch and config to 2.6.15
+  * [m68k] SCSI drivers need to be built in until ramdisk generator tools
+    supports loading scsi modules
+  * [m68k] ISCSI and IDE-TAPE don't compile, disabled
+  * [m68k] set CC_OPTIMIZE_FOR_SIZE=n
+  * [m68k] added vmeints patch which fixes building for vme
+
+  [ maximilian attems ]
+  * Use initramfs-tools for ia64 - fixed klibc.
+  * Add stable tree 2.6.15.2:
+    - Fix double decrement of mqueue_mnt->mnt_count in sys_mq_open
+    - (CVE-2005-3356)
+    - Mask off GFP flags before swiotlb_alloc_coherent
+    - usb-audio: don't use empty packets at start of playback
+    - Make second arg to skb_reserved() signed.
+    - Input: HID - fix an oops in PID initialization code
+    - Fix oops in ufs_fill_super at mount time
+    - Kill blk_attempt_remerge()
+    - Fix i2o_scsi oops on abort
+    - Fix mkiss locking bug
+    - Fix timekeeping on sparc64 ultra-IIe machines
+    - Someone broke reiserfs v3 mount options and this fixes it
+  * Deactivate sparc64-jumping-time.patch, amd64-pppd-fix.patch incl in aboves.
+  * Add s390-klibc-buildfix.patch, regression due to header file changes.
+
+  [ Steve Langasek ]
+  * [alpha] set __attribute__((always_inline)) on __cmpxchg(), to avoid
+    wrong optimizations with -Os (Closes: #347556).
+
+  [ Martin Michlmayr ]
+  * Add input support for the ixp4xx beeper driver (Alessandro Zummo).
+  * [arm] Add NSLU2 specific portion of ixp4xx beeper driver (Alessandro Zummo).
+  * [arm/nslu2] Build PPP as a module.
+  * [arm/nslu2] Enable wireless.
+  * [arm/nslu2] Enable most USB modules.
+  * [arm/nslu2] Enable ALSA and USB sound modules.
+  * [arm/nslu2] Set 4 MB as the size of the initrd in the kernel cmd line.
+  * [arm/footbridge] Set CONFIG_BLK_DEV_RAM_SIZE to 8192.
+  * [armeb] Add support for big-endian ARM.
+  * [armeb/nslu2] Use the nslu2 config from arm.
+
+  [ Frederik Schüler ]
+  * [amd64] Add amd64-pppd-fix.patch to fix kernel panic when using pppd.
+    (Closes: #347711)
+  * Add 64bit-vidiocswin-ioctl-fix.patch to fix VIDIOCSWIN ioctl on 64bit
+    kernel 32bit userland setups. (Closes: #349338)
+
+  [ Sven Luther ]
+  * [powerpc] Adapted apus config file to be more modular and in sync with the
+    other powerpc configs. Scsi drivers are disabled as they don't build
+    cleanly though (need some esp stuff).
+  * [powerpc] Default to initramfs-tools as initramfs generator, as klibc
+    build is fixed now.
+
+  [ Bastian Blank ]
+  * [powerpc] Fix dependencies of image packages.
+
+ -- maximilian attems <maks@sternwelten.at>  Wed,  1 Feb 2006 11:34:20 +0100
+
+linux-2.6 (2.6.15-3) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * [arm] Update configs for 2.6.15; closes: #347998.
+  * [arm] Activate tmpfs.
+  * [arm] Allow modules to be unloaded.
+  * [arm] Enable CONFIG_INPUT_EVDEV since yaird needs this module in
+    order to generate initrds.
+  * [arm/footbridge] Activate IDEPCI so SL82C105 will really be
+    compiled in.
+  * [arm/footbridge] Activate the right network drivers (Tulip and
+    NE2K).
+  * [arm/footbridge] Enable more framebuffer drivers.
+  * debian/patches/arm-fix-dc21285.patch: Fix compilation of DC21285
+    flash driver.
+  * [arm/footbridge] Enable MTD and the DC21285 flash driver.
+  * [arm/footbridge] Enable RAID and LVM modules.
+  * [arm/footbridge] Enable USB modules.
+  * [arm/nslu2] Add an image for Network Storage Link for USB 2.0 Disk
+    Drives.
+  * debian/patches/arm-memory-h-page-shift.patch: Fix error "PAGE_SHIFT
+    undeclared" (Rod Whitby).
+  * debian/patches/mtdpart-redboot-fis-byteswap.patch: recognise a foreign
+    endian RedBoot partition table (John Bowler).
+  * debian/patches/maclist.patch: Add support for the maclist interface
+    (John Bowler).
+  * debian/patches/arm-nslu2-maclist.patch: Add NSLU2 maclist support
+    (John Bowler).
+  * [arm/nslu2] Activate maclist.
+
+  [ maximilian attems ]
+  * Add stable tree 2.6.15.1:
+    - arch/sparc64/Kconfig: fix HUGETLB_PAGE_SIZE_64K dependencies
+    - moxa serial: add proper capability check
+    - fix /sys/class/net/<if>/wireless without dev->get_wireless_stats
+    - Don't match tcp/udp source/destination port for IP fragments
+    - Fix sys_fstat64() entry in 64-bit syscall table.
+    - UFS: inode->i_sem is not released in error path
+    - netlink oops fix due to incorrect error code
+    - Fix onboard video on SPARC Blade 100 for 2.6.{13,14,15}
+    - Fix DoS in netlink_rcv_skb() (CVE-2006-0035)
+    - fix workqueue oops during cpu offline
+    - Fix crash in ip_nat_pptp (CVE-2006-0036)
+    - Fix another crash in ip_nat_pptp (CVE-2006-0037)
+    - ppc32: Re-add embed_config.c to ml300/ep405
+    - Fix ptrace/strace
+    - vgacon: fix doublescan mode
+    - BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()
+    - skge: handle out of memory on ring changes
+  * Drop merged patch:
+    - sparc64-atyfb-xl-gr-final.patch
+
+  [ Simon Horman ]
+  * Fix booting on PReP machines
+    (Closes: #348040)
+    powerpc-relocate_code.patch
+
+ -- Simon Horman <horms@verge.net.au>  Tue, 17 Jan 2006 18:01:17 +0900
+
+linux-2.6 (2.6.15-2) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Default to initramfs-tools as initramfs generator for amd64, hppa, i386,
+    alpha and sparc. More archs will be added once klibc matures.
+    (Closes: #346141, #343147, #341524, #346305)
+  * Backport alsa patch for opl3 - Fix the unreleased resources.
+    (Closes: #346273)
+  * Readd buslogic-pci-id-table.patch.
+
+  [ dann frazier ]
+  * [ia64] Update config for 2.6.15.
+
+  [ Frederik Schüler ]
+  * Make CONFIG_IPW2100 a per-architecture option and deactivate it on all
+    architectures but i386. (Closes: #344515)
+
+  [ Sven Luther ]
+  * Removed spurious file from powerpc-apus patch. (Closes: #346159)
+
+  [ Norbert Tretkowski ]
+  * Backport the generic irq framework for alpha. (closes: #339080)
+
+  [ Bastian Blank ]
+  * Remove pre-sarge conflict with hotplug.
+  * Fix hppa diff to apply.
+  * Make the latest packages depend on the corect version of the real images.
+    (closes: #346366)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 10 Jan 2006 16:54:21 +0100
+
+linux-2.6 (2.6.15-1) unstable; urgency=low
+
+  [ Sven Luther ]
+  * New upstream release.
+  * [powerpc] Now use ARCH=powerpc for 64bit powerpc flavours, 32bit still
+    stays with ARCH=ppc for now.
+  * [powerpc] Readded PReP Motorola PowerStack II Utah IDE interrupt
+    (Closes: #345424)
+  * [powerpc] Fixed apus patch.
+  * Added make-kpkg --arch option support to gencontrol.py.
+  * Added debian/bin/kconfig.ml to process config file snipplet, so we can
+    preserve the pre 2.6.15 ordering of config file snipplets. Upto 2.6.15
+    the kernel Kconfig magic apparently kept the later occuring config options,
+    but it seems that this is no more the case. Instead of catting the config
+    files together, not use the kconfig.ml script to read in the files from
+    more generic to more specific, and keep only the more specific.
+
+  [ Bastian Blank ]
+  * [s390] Update configs.
+
+  [ Kyle McMartin ]
+  * [hppa] Snag latest hppa.diff from cvs.parisc-linux.org.
+  * [hppa] Update configs for 2.6.15.
+  * [hppa] Change parisc kernel names to something less ambiguous.
+
+  [ dann frazier ]
+  * [ia64] Update ia64 configs
+
+  [ maximilian attems ]
+  * Drop modular-ide.patch, nacked by ide upstream.  Prevents udev to load
+    ide-generic and those successfull boots with initramfs-tools.
+  * Disable CONFIG_USB_BANDWIDTH, causes major trouble for alsa usb cards.
+
+  [ Norbert Tretkowski ]
+  * [alpha] Removed conflict with initramfs-tools, thanks vorlon for finding
+    the klibc bug!
+
+  [ Jonas Smedegaard ]
+  * Adjust short description of transitional package kernel-image-2.6-
+    486 to mention 2.6 (not 2.6.12).
+  * Clean duplicate Kconfig options.
+
+  [ Frederik Schüler ]
+  * Add updated version of drivers-scsi-megaraid_splitup.patch.
+  * Deactivate CONFIG_IDE_TASK_IOCTL on alpha and ia64 and make it a global
+    option.
+  * Make CONFIG_VIDEO_SAA7134 a global option.
+  * New option CONFIG_CC_OPTIMIZE_FOR_SIZE set per-arch.
+  * Rename i386 368 flavour to 486.
+  * Add myself to uploaders.
+  * Readdition of qla2xxx drivers, as firmware license has been fixed.
+  * Make CONFIG_PACKET, PACKET_MM and UNIX builtin on all architectures:
+    statically linked has better performance then modules due to TLB issue.
+  * clean up debian-patches dir: remove all obsolete patches:
+    - alpha-compile-fix.patch: obsolete
+    - amd64-int3-fix.patch: fixed since 2.6.12
+    - net-ipconntrack-nat-fix.patch: merged upstream after 2.6.14 release
+    - net-nf_queue-oops.patch: merged upstream after 2.6.14 release
+    - qla2xxx-removed.patch: obsolete
+  * Drop M386 support remains from the i386 386 flavour: built with M486 
+    from now on.
+
+  [ Martin Michlmayr ]
+  * [arm] Don't define "compiler" since GCC 4.x is the default now anyway.
+  * [arm] Add descriptions for "class" and "longclass".
+  * [arm] Compile CONFIG_BLK_DEV_SL82C105 support into the kernel on
+    Footbridge.
+  * [arm] Compile ext3 support into the kernel on Footbridge.
+  * [arm] Turn on CONFIG_SERIAL_8250 support on Footbridge.
+
+  [ Jurij Smakov ]
+  * [sparc] Correct the patch for the atyfb framebuffer driver
+    (sparc64-atyfb-xl-gr.patch) to finally fix the console and X
+    image defects on Blade 100/150. The new patch is named
+    sparc64-atyfb-xl-gr-final.patch to avoid the confusion.
+    Thanks to Luis F. Ortiz for fixing the patch and Luigi Gangitano
+    for testing it out.
+  * Drop tty-locking-fixes9.patch, which was preventing the oops during
+    shutdown on some sparc machines with serial console. Proper fix has
+    been incorporated upstream.
+  
+  [ Simon Horman ]
+  * Enable MKISS globally (closes: #340215)
+  * Add recommends libc6-i686 to 686 and k7 image packages
+    (closes: #278729)
+  * Enable OBSOLETE_OSS_USB_DRIVER and USB_AUDIO
+    as alsa snd-usb-audio still isn't quite there.
+    I expect this to be re-disabled at some stage,
+    possibly soon if it proves to be a source of bugs.
+    (closes: #340388)
+
+ -- Sven Luther <luther@debian.org>  Tue,  3 Jan 2006 06:48:07 +0000
+
+linux-2.6 (2.6.14-7) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add stable tree 2.6.14.5 fixes:
+    - setting ACLs on readonly mounted NFS filesystems (CVE-2005-3623)
+    - Fix bridge-nf ipv6 length check
+    - Perform SA switchover immediately.
+    - Input: fix an OOPS in HID driver
+    - Fix hardware checksum modification
+    - kernel/params.c: fix sysfs access with CONFIG_MODULES=n
+    - Fix RTNLGRP definitions in rtnetlink.h
+    - Fix CTA_PROTO_NUM attribute size in ctnetlink
+    - Fix unbalanced read_unlock_bh in ctnetlink
+    - Fix NAT init order
+    - Fix incorrect dependency for IP6_NF_TARGET_NFQUEUE
+    - dpt_i2o fix for deadlock condition
+    - SCSI: fix transfer direction in sd (kernel panic when ejecting iPod)
+    - SCSI: fix transfer direction in scsi_lib and st
+    - Fix hardware rx csum errors
+    - Fix route lifetime.
+    - apci: fix NULL deref in video/lcd/brightness
+  * Disable CONFIG_USB_BANDWIDTH, causes major trouble on alsa usb cards.
+    (Closes: #344939)
+
+ -- maximilian attems <maks@sternwelten.at>  Tue, 27 Dec 2005 20:50:28 +0100
+
+linux-2.6 (2.6.14-6) unstable; urgency=low
+
+  [ Kyle McMartin ]
+  * Change parisc kernel names to something less ambiguous.
+
+  [ maximilian attems ]
+  * Drop modular-ide.patch, nacked by ide upstream.  Prevents udev to load
+    ide-generic and those successfull boots with initramfs-tools.
+  * Add stable tree 2.6.14.4 with the following fixes:
+    - drivers/scsi/dpt_i2o.c: fix a user-after-free
+    - drivers/message/i2o/pci.c: fix a use-after-free
+    - drivers/infiniband/core/mad.c: fix a use-after-free
+    - DVB: BUDGET CI card depends on STV0297 demodulator
+    - setkeys needs root
+    - Fix listxattr() for generic security attributes
+    - AGPGART: Fix serverworks TLB flush.
+    - Fix crash when ptrace poking hugepage areas
+    - I8K: fix /proc reporting of blank service tags
+    - i82365: release all resources if no devices are found
+    - bonding: fix feature consolidation
+    - libata: locking rewrite (== fix)
+    - cciss: bug fix for BIG_PASS_THRU
+    - ALSA: nm256: reset workaround for Latitude CSx
+    - cciss: bug fix for hpacucli
+    - V4L/DVB: Fix analog NTSC for Thomson DTT 761X hybrid tuner
+    - BRIDGE: recompute features when adding a new device
+    - 32bit integer overflow in invalidate_inode_pages2()
+    - USB: Adapt microtek driver to new scsi features
+    - ide-floppy: software eject not working with LS-120 drive
+    - Add try_to_freeze to kauditd
+    - V4L/DVB (3135) Fix tuner init for Pinnacle PCTV Stereo
+    - NETLINK: Fix processing of fib_lookup netlink messages
+    - ACPI: fix HP nx8220 boot hang regression
+
+  [ Norbert Tretkowski ]
+  * [alpha] Removed conflict with initramfs-tools, thanks vorlon for finding
+    the klibc bug!
+
+  [ Frederik Schüler ]
+  * Add updated drivers-scsi-megaraid_splitup.patch. (Closes: #317258)
+  * Add ppc64-thermal-overtemp.patch to fix a thermal control bug in G5
+    machines. (Closes: #343980)
+  * Unpatch the following patches which are included in 2.6.14.4:
+    - setkeys-needs-root-1.patch
+    - setkeys-needs-root-2.patch
+    - mm-invalidate_inode_pages2-overflow.patch
+    - net-bonding-consolidation-fix.patch
+
+ -- Frederik Schüler <fs@debian.org>  Tue, 20 Dec 2005 18:50:41 +0000
+
+linux-2.6 (2.6.14-5) unstable; urgency=low
+
+  [ dann frazier ]
+  * ia64-new-assembler-fix.patch
+    Fix ia64 builds with newer assembler (Closes: #341257)
+
+  [ Sven Luther ]
+  * [powerpc] incremented ramdisk size to 24576 from 8192, needed by the
+    graphical installer, maybe we can bring this to 16384 later.
+
+  [ Simon Horman ]
+  * Add recommends libc6-i686 to 686 and k7 image packages
+    (closes: #278729)
+  * Enable OBSOLETE_OSS_USB_DRIVER and USB_AUDIO
+    as alsa snd-usb-audio still isn't quite there.
+    I expect this to be re-disabled at some stage,
+    possibly soon if it proves to be a source of bugs.
+    (closes: #340388)
+
+  [ dann frazier ]
+  * buslogic-pci-id-table.patch
+    add a pci device id table to fix initramfs-tools discovery.
+    (closes #342057)
+  * fix feature consolidation in bonding driver.  (closes #340068)
+
+ -- dann frazier <dannf@debian.org>  Thu,  8 Dec 2005 10:59:31 -0700
+
+linux-2.6 (2.6.14-4) unstable; urgency=low
+
+  [ dann frazier ]
+  * setkeys-needs-root-1.patch, setkeys-needs-root-2.patch:
+    [SECURITY] Require root privilege to write the current
+    function key string entry of other user's terminals.
+    See CVE-2005-3257 (Closes: #334113)
+
+  [ Simon Horman ]
+  * Enable MKISS globally (closes: #340215)
+  * mm-invalidate_inode_pages2-overflow.patch
+    [SECURITY] 32bit integer overflow in invalidate_inode_pages2() (local DoS)
+  * ctnetlink-check-if-protoinfo-is-present.patch
+    [SECURITY] ctnetlink: check if protoinfo is present (local DoS)
+  * ctnetlink-fix-oops-when-no-icmp-id-info-in-message.patch
+    [SECURITY] ctnetlink: Fix oops when no ICMP ID info in message (local DoS)
+
+  [ Sven Luther ]
+  * Re-added powerpc/apus patch, now that Roman Zippel merged it in.
+  * Let's create asm-(ppc|ppc64) -> asm-powerpc symlink farm.  (Closes: #340571)
+
+  [ maximilian attems ]
+  * Add 2.6.14.3 patch - features changelog:
+    - isdn/hardware/eicon/os_4bri.c: correct the xdiLoadFile() signature
+    - x86_64/i386: Compute correct MTRR mask on early Noconas
+    - PPTP helper: Fix endianness bug in GRE key / CallID NAT
+    - nf_queue: Fix Ooops when no queue handler registered
+    - ctnetlink: check if protoinfo is present
+    - ip_conntrack: fix ftp/irc/tftp helpers on ports >= 32768
+    - VFS: Fix memory leak with file leases
+    - hwmon: Fix lm78 VID conversion
+    - hwmon: Fix missing it87 fan div init
+    - ppc64 memory model depends on NUMA
+    - Generic HDLC WAN drivers - disable netif_carrier_off()
+    - ctnetlink: Fix oops when no ICMP ID info in message
+    - Don't auto-reap traced children
+    - packet writing oops fix
+    - PPTP helper: fix PNS-PAC expectation call id
+    - NAT: Fix module refcount dropping too far
+    - Fix soft lockup with ALSA rtc-timer
+    - Fix calculation of AH length during filling ancillary data.
+    - ip_conntrack TCP: Accept SYN+PUSH like SYN
+    - refcount leak of proto when ctnetlink dumping tuple
+    - Fix memory management error during setting up new advapi sockopts.
+    - Fix sending extension headers before and including routing header.
+    - hwmon: Fix missing boundary check when setting W83627THF in0 limits
+  * Remove ctnetlink-check-if-protoinfo-is-present.patch,
+    net-nf_queue-oops.patch - already included in 2.6.14.3.
+
+  [ Frederik Schüler ]
+  * Make CONFIG_PACKET, PACKET_MM and UNIX builtin on all architectures:
+    statically linked has better performance then modules due to TLB issue.
+  * Add myself to uploaders.
+
+ -- Frederik Schüler <fs@debian.org>  Sat, 26 Nov 2005 13:18:41 +0100
+
+linux-2.6 (2.6.14-3) unstable; urgency=low
+
+  [ Norbert Tretkowski ]
+  * [alpha] Switch to gcc 4.0.
+  * [alpha] Conflict with initramfs-tools, klibc is broken on alpha.
+  * [alpha] Enabled CONFIG_KOBJECT_UEVENT in arch/alphaconfig to fix trouble
+    with latest udev, thanks to Uwe Schindler for reporting. (closes: #338911)
+  * Bumped ABI revision:
+    + ABI changes on sparc and alpha because of compiler switch.
+    + 2.6.14.1 changes ABI of procfs.
+
+  [ Sven Luther ]
+  * Set default TCP congestion algorithm to NewReno + BIC (Closes: #337089)
+
+  [ maximilian attems ]
+  * Reenable CONFIG_SOFTWARE_SUSPEND on i386 and ppc, resume=/dev/<other device>
+    must be set by boot loader. (Closes: #267600)
+  * Set CONFIG_USB_SUSPEND on i386. Usefull for suspend to ram and apm suspend.
+  * Add 2.6.14.1 patch:
+    - Al Viro: CVE-2005-2709 sysctl unregistration oops
+  * Add 2.6.14.2 patch:
+    - airo.c/airo_cs.c: correct prototypes
+    - fix XFS_QUOTA for modular XFS (closes: #337072)
+    - USB: always export interface information for modalias
+    - NET: Fix zero-size datagram reception
+    - fix alpha breakage
+    - Oops on suspend after on-the-fly switch to anticipatory i/o scheduler
+    - ipvs: fix connection leak if expire_nodest_conn=1
+    - Fix ptrace self-attach rule
+    - fix signal->live leak in copy_process()
+    - fix de_thread() vs send_group_sigqueue() race
+    - prism54 : Fix frame length
+    - tcp: BIC max increment too large
+  * Remove alpha compile fix as contained in 2.6.14.2
+  * Readd CONFIG_XFS_QUOTA=y.
+  * Disable ACPI cutoff year on i386, was set to 2001.
+    No need for acpi=force on boot.
+
+  [ Jurij Smakov ]
+  * Fix the install-image script to correctly include all the necessary
+    stuff in scripts. (Closes: #336424)
+  * Enable CONFIG_SND_ALI5451 on sparc.
+  * Switch sparc to gcc-4.0. Thanks to Norbert for making sure it successfully
+    builds a working kernel now.
+  * Apply patch to fix ATI framebuffer output corruption on SunBlade 100
+    (sparc64-atyfb-xl-gr.patch). Thanks to Luigi Gangitano. (Closes: #321200)
+  * Disable CONFIG_PARPORT_PC_FIFO on sparc, since it causes a hang whenever
+    something is sent to the parallel port device. Thanks to Attilla
+    (boera at rdslink.ro) for pointing that out.
+
+  [ Simon Horman ]
+  * [386, AMD64] Set CONFIG_FRAMEBUFFER_CONSOLE=y instead of m.
+    As vesadb now built into the kernel, after finally dropping the
+    debian-specific patch to make it modular, make fbcons builtin too, else
+    all sorts of weird stuff happens which is hard for the inird builders to
+    automatically compenste for. (Closes: #336450)
+  * Redisable CONFIG_SOFTWARE_SUSPEND on ppc/miboot as it required
+    CONFIG_PM to compile.
+  * [NETFILTER] nf_queue: Fix Ooops when no queue handler registered
+    This is a regression introduced in 2.6.14.
+    net-nf_queue-oops.patch. (Closes: #337713)
+  * Make manuals with defconfig, as is required for kernel-package 10.008
+
+  [ dann frazier ]
+  * net-ipconntrack-nat-fix.patch - fix compilation of
+    ip_conntrack_helper_pptp.c when NAT is disabled. (Closes: #336431)
+
+  [ Christian T. Steigies ]
+  * update m68k.diff to 2.6.14
+  * add m68k-*vme* patches
+  * disable macsonic driver until the dma patch is fixed
+  * disable IEEE80211 drivers for all of m68k
+
+  [ Frederik Schüler ]
+  * activate CONFIG_SECURITY_NETWORK to fix SElinux operation.
+    (Closes: #338543)
+
+ -- Norbert Tretkowski <nobse@debian.org>  Mon, 14 Nov 2005 10:23:05 +0100
+
+linux-2.6 (2.6.14-2) unstable; urgency=low
+
+  [ Simon Horman ]
+  * [SECURITY] Avoid 'names_cache' memory leak with CONFIG_AUDITSYSCALL
+    This fix, included as part of the 2.6.13.4 patch in
+    2.6.13+2.6.14-rc4-0experimental.1 is CVE-2005-3181
+  * Fix genearation of .extraversion, again (closes: #333842)
+  * Add missing kernel-arch and kernel-header-dirs to defines
+    so headers get included. (closes: #336521)
+    N.B: I only filled in arches where other's hadn't done so alread.
+         Please fix if its wrong.
+  * Allow powerpc64 to compile with AUDIT enabled but
+    AUDITSYSCALL disabled. powerpc64-audit_sysctl-build.patch
+
+  [ dann frazier ]
+  * Update hppa.diff to 2.6.14-pa0
+
+  [ Norbert Tretkowski ]
+  * [alpha] New patch to include compiler.h in barrier.h, barrier() is used in
+    non-SMP case.
+  * [alpha] Added kernel-header-dirs and kernel-arch to debian/arch/alpha/defines
+    to include asm-alpha in linux-headers package.
+  * Added myself to Uploaders.
+
+  [ Frederik Schüler ]
+  * [amd64] use DISCONTIGMEM instead of SPARSEMEM on amd64-k8-smp flavour to
+    fix bootup kernel panic.
+  * [amd64] include asm-x86_64 in linux-headers package.
+  * Deactivate AUDITSYSCALL globally, it slows down the kernel and is not
+    needed for selinux at all.
+
+ -- Simon Horman <horms@debian.org>  Tue,  1 Nov 2005 15:27:40 +0900
+
+linux-2.6 (2.6.14-1) unstable; urgency=low
+
+  [ Sven Luther ]
+  * New upstream release.
+
+  [ Norbert Tretkowski ]
+  * [alpha] Update arch/alpha/config* for 2.6.14.
+
+  [ Simon Horman ]
+  * Fix misformatting of long description of
+    linux-patch-debian-linux-patch-debian-X.Y.Z.
+    templates/control.main.in
+    (closes: #335088)
+  * Make sure version is seeded in apply and unapply scripts.
+    Actually changed in some earlier, post 2.6.12, release,
+    but the changelog seems to be missing.
+    (closes: #324583)
+
+  [ dann frazier ]
+  * [ia64] Disable the CONFIG_IA64_SGI_SN_XP module.  This forces
+    CONFIG_GENERIC_ALLOCATOR and CONFIG_IA64_UNCACHED_ALLOCATOR to y, which
+    appears to break on zx1 systems.
+
+ -- Simon Horman <horms@debian.org>  Fri, 28 Oct 2005 16:26:03 +0900
+
+linux-2.6 (2.6.13+2.6.14-rc5-0experimental.1) experimental; urgency=low
+
+  [ Sven Luther ]
+  * Upgraded to 2.6.14-rc5.
+
+  [ Jonas Smedegaard ]
+  * Quote variables in debian/rules.real and postinstall (making it
+    safer to run with weird characters in path of build environment).
+
+  [ Bastian Blank ]
+  * Add some missing files from scripts to headers packages.
+  * Add new patch powerpc-build-links.patch: Emit relative symlinks in
+    arch/ppc{,64}/include.
+  * Include arch/*/include into headers package.
+
+ -- Sven Luther <luther@debian.org>  Tue, 25 Oct 2005 03:56:11 +0000
+
+linux-2.6 (2.6.13+2.6.14-rc4-0experimental.1) experimental; urgency=low
+
+  [ Sven Luther ]
+  * Upgraded to 2.6.14-rc4.
+
+  [ Simon Horman ]
+  * Fix genearation of .extraversion (closes: #333842)
+
+  [ dann frazier ]
+  * Enhance the linux-source description to explain the types of patches
+    Debian adds to it.  (closes: #258043)
+  * Correct linux-patch-debian description.  It replaces the
+    kernel-patch-debian packages, not the kernel-source packages.
+
+  [ Jonas Smedegaard ]
+  * Fix building from within a very long dir (all patches was applied at
+    once - exhausting shell commandline, now applied one by one).
+  * Add Simon Horman, Sven Luther and myself as Uploaders.
+
+  [ Bastian Blank ]
+  * Use list of revisions in patch scripts.
+  * Use correct names for tarball and scripts.
+
+  [ Jurij Smakov ]
+  * [i386] Set the CONFIG_HPET_EMULATE_RTC option to make the clock
+    work properly on certain Dell machines. This required setting the
+    CONFIG_RTC option to 'y' instead of 'm'. (closes: #309909)
+    [i386] Enable VIDEO_CX88 and VIDEO_CX88_DVB (both set to 'm') by
+    popular demand. (closes: #330916)
+
+  [ Norbert Tretkowski ]
+  * [alpha] Update arch/alpha/config for 2.6.13.
+
+  [ Kyle McMartin ]
+  * [hppa] Oops. Fix linux-headers not including asm-parisc by adding
+    headers_dirs = parisc to Makefile.inc.
+
+  [ maximilian attems ]
+  * Set CONFIG_FB_VESA=y for i386 and amd64 configs. (closes: #333003)
+
+  [ Sven Luther ]
+  * [powerpc] Fixed apus build, now use mkvmlinuz too to generate the vmlinuz
+    kernel.
+  * Fixed control.image.in to depend on :
+      initramfs-tools | yaird | linux-ramdisk-tool
+    where linux-ramdisk-tools is the virtual package provided by all
+    initrd/initramfs generating tools.
+
+  [ Frederik Schüler ]
+  * deactivate FB_RIVA on all architectures.
+  * deactivate BLK_DEV_IDESCSI on all architectures.
+  * Added patch-2.6.13.4:
+    - [SECURITY] key: plug request_key_auth memleak 
+      See CAN-2005-3119
+    - [SECURITY] Fix drm 'debug' sysfs permissions
+      See CAN-2005-3179
+    - [SECURITY] Avoid 'names_cache' memory leak with CONFIG_AUDITSYSCALL
+    - [SPARC64] Fix userland FPU state corruption.
+    - BIC coding bug in Linux 2.6.13
+    - [SECURITY] orinoco: Information leakage due to incorrect padding 
+      See CAN-2005-3180
+    - ieee1394/sbp2: fixes for hot-unplug and module unloading
+
+  [ Christian T. Steigies ]
+  * disable CONFIG_EXT2_FS_XIP for m68k like on all(?) other arches
+  * deactivate OKTAGON_SCSI for amiga/m68k until it can be compiled again
+  * deactivate CONFIG_KEYBOARD_HIL_OLD, CONFIG_KEYBOARD_HIL, CONFIG_MOUSE_HIL,
+    CONFIG_HIL_MLC, and CONFIG_HP_SDC for hp/m68k
+  * update m68k.diff for 2.6.13
+  * split out patches that do not intefere with other arches to
+    patches-debian/m68k-*
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 21 Oct 2005 12:17:47 +0000
+
+linux-2.6 (2.6.13-1) experimental; urgency=low
+
+  * New upstream release "git booost":
+    - new arch xtensa
+    - kexec/kdump
+    - execute-in-place
+    - inotify (closes: #304387)
+    - time-sharing cfq I/O scheduler
+    - manual driver binding
+    - voluntary preemption
+    - user-space I/O initiation for InfiniBand
+    - new speedy DES (crypto) implementation
+    - uml "almost-skas" mode support
+    - 250 HZ default (closes: #320366)
+    - fixes all over (alsa, archs, ide, input, ntfs, scsi, swsusp, usb, ..)
+    - orinoco driver updates (closes: #291684)
+    - md, dm updates (closes: #317787)
+
+  [ Frederik Schüler ]
+  * [amd64] Added class and longclass descriptions for amd64 flavours.
+  * [amd64] add amd64-tlb-flush-sigsegv-fix.patch: disable tlb flush
+    filtering on smp systems to workaround processor errata.
+  * backport kernel-api-documentation-generation-fix.diff from git to fix
+    documentation build.
+  * Added patch-2.6.13.1:
+    - raw_sendmsg DoS (CAN-2005-2492)
+    - 32bit sendmsg() flaw (CAN-2005-2490)
+    - Reassembly trim not clearing CHECKSUM_HW
+    - Use SA_SHIRQ in sparc specific code.
+    - Fix boundary check in standard multi-block cipher processors
+    - 2.6.13 breaks libpcap (and tcpdump)
+    - x86: pci_assign_unassigned_resources() update
+    - Fix PCI ROM mapping
+    - aacraid: 2.6.13 aacraid bad BUG_ON fix
+    - Kconfig: saa7134-dvb must select tda1004x
+
+  [ Simon Horman ]
+  * Disable BSDv3 accounting on hppa and alpha, it was already
+    disabled on all other architectures. Also unify BSD accounting
+    config into top level config, rather than per flavour configs.
+  * [SECURITY] The seq_file memory leak fix included in 2.6.12-6
+    as part of upstream's 2.6.12.6 patchset is now CAN-2005-2800.
+
+  [ Jurij Smakov, Simon Horman ]
+  * Ensure that only one kernel-manual/linux-manual package can
+    be installed at a time to avoid file conflicts. (closes: #320042)
+
+  [ Bastian Blank ]
+  * Move audit, preempt and security settings to core config file.
+  * Fix powerpc configuration.
+  * Add debian version information to kernel version string.
+  * Drop coreutils | fileutils dependencies.
+  * Drop modular-vesafb patch. (closes: #222374, #289810)
+
+  [ Christian T. Steigies ]
+  * update m68k.diff for linux-2.6.13
+  * add m68k-42_dma.patch and m68k-sonic.patch that will be in upstream 2.6.14
+    (which makes sun3 build fail, needs fixing)
+
+  [ maximilian attems ]
+  * Drop drivers-add-scsi_changer.patch (merged)
+  * Drop drivers-ide-dma-blacklist-toshiba.patch (merged)
+  * Drop drivers-ide-__devinit.patch (merged)
+  * Added patch-2.6.13.2:
+    - USB: ftdi_sio: custom baud rate fix
+    - Fix up more strange byte writes to the PCI_ROM_ADDRESS config word
+    - Fix MPOL_F_VERIFY
+    - jfs: jfs_delete_inode must call clear_inode
+    - Fix DHCP + MASQUERADE problem
+    - Sun HME: enable and map PCI ROM properly
+    - Sun GEM ethernet: enable and map PCI ROM properly
+    - hpt366: write the full 4 bytes of ROM address, not just low 1 byte
+    - forcedeth: Initialize link settings in every nv_open()
+    - Lost sockfd_put() in routing_ioctl()
+    - lost fput in 32bit ioctl on x86-64
+  * Added patch-2.6.13.3:
+    - Fix fs/exec.c:788 (de_thread()) BUG_ON
+    - Don't over-clamp window in tcp_clamp_window()
+    - fix IPv6 per-socket multicast filtering in exact-match case
+    - yenta oops fix
+    - ipvs: ip_vs_ftp breaks connections using persistence
+    - uml - Fix x86_64 page leak
+    - skge: set mac address oops with bonding
+    - tcp: set default congestion control correctly for incoming connections
+
+  [ Sven Luther ]
+  * [powerpc] Added hotplug support to the mv643xx_eth driver :
+      powerpc-mv643xx-hotplug-support.patch
+    thanks go to Nicolas Det for providing the patch.
+  * [powerpc] Modified a couple of configuration options for the powerpc64
+    flavour, fixes and enhances Apple G5 support (Closes: #323724, #328324)
+  * [powerpc] Added powerpc-miboot flavour to use exclusively with oldworld
+    powermac miboot floppies for debian-installer.
+  * [powerpc] Checked upgraded version of the apus patches, separated them in
+    a part which is safe to apply, and one which needs checking, and is thus
+    not applied yet.
+
+  [ Kyle McMartin ]
+  * [hppa] Update hppa.diff to 2.6.13-pa4.
+  * [hppa] Add space register fix to pacache.S to hppa.diff.
+
+  [ dann frazier ]
+  * Add a note to README.Debian that explains where users can find the .config
+    files used to generate the linux-image packages.  Closes: #316809
+  * [ia64] Workaround #325070 until upstream works out an acceptable solution.
+    This bug breaks module loading on non-SMP ia64 kernels.  The workaround
+    is to temporarily use an SMP config for the non-SMP kernels.  (Note that
+    John Wright is running benchmarks to determine the overhead of running
+    an SMP kernel on UP systems to help decide if this should be a
+    permanent change).
+  * [ia64] Update arch/ia64/config for 2.6.13
+
+ -- Simon Horman <horms@debian.org>  Thu,  6 Oct 2005 15:45:21 +0900
+
+linux-2.6 (2.6.12-6) unstable; urgency=high
+
+  [ Andres Salomon, Bastian Blank ]
+  * Change ATM and Classical-IP-over-ATM to be modular, instead of being
+    statically included. (closes: #323143)
+
+  [ Sven Luther ]
+  * [powerpc] powerpc-pmac-sound-check.patch: Added pmac-sound sanity check.
+  * [powerpc] powerpc-apus.patch:
+    Added preliminary apus patch to package, not applied to kernel tree yet.
+
+  [ Simon Horman ]
+  * Unset CC_OPTIMIZE_FOR_SIZE in i386 config,
+    it breaks iproute's (and other netlink users) ability
+    to set routes. (closes: #322723)
+  * Added 2.6.12.6
+    - [SECURITY: CAN-2005-2555] Restrict socket policy loading to
+      CAP_NET_ADMIN.
+    - [SECURITY] Fix DST leak in icmp_push_reply().  Possible remote
+      DoS?
+    - [SECURITY] NPTL signal delivery deadlock fix; possible local
+      DoS.
+    - fix gl_skb/skb type error in genelink driver in usbnet
+    - [SECURITY] fix a memory leak in devices seq_file implementation;
+      local DoS.
+    - [SECURITY] Fix SKB leak in ip6_input_finish(); local DoS.
+
+  [ Andres Salomon ]
+  * [hppa] enable discontiguous memory support for 32bit hppa images, so
+    they build.
+
+ -- Andres Salomon <dilinger@debian.org>  Tue, 06 Sep 2005 10:14:35 -0400
+
+linux-2.6 (2.6.12-5) unstable; urgency=low
+
+  * Change ARM to use GCC 3.3 to avoid FTBFS errors with GCC 4
+   (dann frazier)
+
+  * Remove spurious double quote character from ia64 package descriptions.
+    (dann frazier)
+
+  * Add transitional meta packages (kernel-image-2.6-*) for ia64.
+    (dann frazier)
+
+  * Change fuzz factor to 1, stricter patch appliance. (Maximilian Attems)
+
+  * Enabled CONFIG_THERM_PM72 on powerpc64 flavour. (Sven Luther)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 16 Aug 2005 21:43:31 +0200
+
+linux-2.6 (2.6.12-4) unstable; urgency=low
+
+  * Supply correct subarch values for the powerpc images.
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 15 Aug 2005 21:06:18 +0200
+
+linux-2.6 (2.6.12-3) unstable; urgency=low
+
+  * Added reference to old kernel-* package names to make
+    transition a little more obvious to end users.
+    A Dan Jacobson special. (Simon Horman) Closes: #321167
+
+  * By the time this makes it into the archive, it will
+    be handling kernel-image-2.6-* packages. (Simon Horman)
+    Closes: #321867
+
+  * Link palinfo statically on ia64. (dann frazier) (Closes: #321885)
+
+  * [hppa] :
+    - Add hppa arch specific patch.
+    - Build-Depend on binutils-hppa64 and gcc-4.0-hppa64.
+    (Kyle McMartin)
+
+  * Fix permissions in source tarball. (Bastian Blank) (Closes: #322409)
+
+  * Enable the CONFIG_IP_ADVANCED_ROUTER and related options on
+    sparc64 to sync with other architectures. (Jurij Smakov)
+    Closes: #321236
+
+  * Include all executables as well as *.sh and *.pl files found in
+    scripts directory in the headers package. (Bastian Blank)
+    Closes: #322612, #322680, #322765
+
+  * Include m68k headers into the arch-common headers package on
+    powerpc and make sure that all the directories are linked to
+    properly from the flavour-specific headers packages. (Jurij Smakov)
+    Closes: #322610
+
+  * [powerpc] Enabled the powerpc64 flavour, now that we have a real biarch
+    toolchain in sid. Many thanks go to GOTO Masanori and Matthias Klose as
+    well as any other who worked on the biarch toolchain to make this happen.
+
+  * Added 2.6.12.5 (Simon Horman)
+    - Fix BUG() is triggered by a call to set_mempolicy() with a negativ
+      first argument.
+    - [amd64] Fix a SRAT handling on systems with dual cores.
+    - [amd64] SMP timing problem
+    - [security] Zlib fixes See CAN-2005-2458, CAN-2005-2459
+      http://sources.redhat.com/ml/bug-gnu-utils/1999-06/msg00183.html
+      http://bugs.gentoo.org/show_bug.cgi
+    - Add zlib deflateBound()
+    - [security] Fix error during session join. See CAN-2005-2098
+    - [security] Fix keyring destructor. See CAN-2005-2099
+    - Module per-cpu alignment cannot always be met
+      http://www.ussg.iu.edu/hypermail/linux/kernel/0409.0/0768.html
+    Closes: #323039
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 15 Aug 2005 16:42:05 +0200
+
+linux-2.6 (2.6.12-2) unstable; urgency=low
+
+  * The Kernel Team offers its condolences to the family of Jens Schmalzing
+    (jensen@debian), who died Saturday, July 30, 2005 in a tragic accident in
+    Munich.  Jens was a member of the Kernel Team, and was instrumental in
+    taking the powerpc kernel package to 2.6, as well as maintaining MOL
+    and its kernel modules.
+
+  * Add @longclass@ variable to control file autogeneration. (Andres Salomon)
+
+  * Bump build-depends on kernel-package to a fixed version (>= 9.005).
+    (Jurij Smakov, Sven Luther) (closes: #319657, #320422, #321625)
+
+  * Change default ramdisk size for sparc to 16,384K to accomodate a fatter
+    d-i initrd for netboot installs.
+    (Joshua Kwan)
+
+  * Don't build-depend on console-tools on s390. (Bastian Blank)
+
+  * Add ARM support. (Vincent Sanders)
+
+  * Add ia64 descriptions. (dann frazier)
+
+  * Strip down the scripts dir in the headers packages. (Bastian Blank)
+
+  * Add m68k support. (Christian T. Steigies)
+
+  * Added 2.6.12.4 (Frederik Schüler)
+    - Fix powernow oops on dual-core athlon
+    - Fix early vlan adding leads to not functional device
+    - sys_get_thread_area does not clear the returned argument
+    - bio_clone fix
+    - Fix possible overflow of sock->sk_policy (CAN-2005-2456)
+      (closes: #321401)
+    - Wait until all references to ip_conntrack_untracked are dropped on
+      unload
+    - Fix potential memory corruption in NAT code (aka memory NAT)
+    - Fix deadlock in ip6_queue
+    - Fix signedness issues in net/core/filter.c
+    - x86_64 memleak from malicious 32bit elf program
+    - rocket.c: Fix ldisc ref count handling
+    - kbuild: build TAGS problem with O=
+
+  * Enable CONFIG_6PACK=m for all archs (Andres Salomon)
+    (closes: #319646)
+
+  * Overhaul the generation of the control file. Now it is handled
+    by debian/bin/gencontrol.py. The debian/control target in rules
+    also fails now, since we don't want the control file generated
+    during build. Arch-specific Depends and suggests are now generated
+    correctly. (Bastian Blank) (Closes: #319896)
+
+  * [powerpc] Fixed typo which made asm-ppc and asm-ppc64 not being included
+    in the header package. (Sven Luther) (Closes: #320817)
+
+  * Added list of flavours built to common header package. (Sven Luther)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 09 Aug 2005 11:12:40 +0200
+ 
+linux-2.6 (2.6.12-1) unstable; urgency=low
+
+  * New upstream release:
+    - "git rocks"
+    - address space randomization
+    - conversion of ide driver code to the device model
+    - restored Philips webcam driver
+    - new Broadcom bcm5706 gigabit driver
+    - new resource limits for the audio community
+    - Multipath device mapper
+    - Intel HD Audio alsa driver
+    - fixes + arch updates..
+    - readdition of tg3 driver, as firmware license has been fixed
+
+  * Dropped the following patches:
+    - patch-2.6.11.*.patch (merged)
+    - powerpc-ppc64-ibmvscsi.patch (Christoph didn't like it, and it failed
+      to build anyways) (Sven Luther)
+    - doc-post_halloween.patch (unless someone can come up w/ a valid
+      reason for carrying around rapidly bitrotting documentation...)
+      (Andres Salomon)
+    - sparc32-hypersparc-srmmu.patch (dropped until sparc32 is working
+      again, and we can figure out whether it's necessary)
+    - fix-alpha-ext3-oops.patch (no longer needed, fixed by compiler)
+    - x86-i486_emu.patch (buggy and insecure 80486 instruction emulation
+      for 80386; we're no longer supporting this) (closes: #250468)
+    - amd64-outs.patch (according to
+      http://www.ussg.iu.edu/hypermail/linux/kernel/0502.3/1095.html, this
+      is unnecessary for us) (Andres Salomon)
+    - sparc64-rtc-mostek.patch (merged)
+    - sparc64-compat-nanoseconds.patch (merged) 
+    - sparc64-sunsu-init-2.6.11.patch (merged)
+    - sunsab-uart-update-timeout.patch (merged)
+    - alpha-read-trylock.patch (different version got merged)
+    - powerpc-prep-motorola-irq-fix.patch (merged)
+    - drivers-media-video-saa7134-update.patch (merged)
+    - drivers-media-video-saa7134-update-2.patch (merged)
+    - drivers-media-video-pll-lib.patch (merged)
+    - drivers-media-video-pll-lib-2.patch (merged)
+    - drivers-media-video-tuner-update-1.patch (merged)
+    - drivers-media-video-tuner-update-2.patch (merged)
+    - drivers-media-video-v4l-mpeg-support.patch (merged)
+    - drivers-media-video-mt352-update.patch (merged)
+    - arch-ppc64-hugepage-aio-panic.patch (merged)
+    - drivers-input-serio-nmouse.patch (merged)
+    - sparc64-sb1500-clock-2.6.patch (merged)
+    - docbook-allow-preprocessor-directives-... (merged)
+    - docbook-fix-function-parameter-descriptin-in-fbmem.patch (merged)
+    - docbook-move-kernel-doc-comment-next-to-function.patch (merged)
+    - powerpc-therm-adt746x-new-i2c-fix.patch (merged)
+    - powerpc-mv643xx-enet.patch (merged)
+    - powerpc-mv643xx-eth-pegasos.patch (merged)
+    - powerpc-pmac-agp-sleep.patch (merged)
+    - drivers-input-serio-8042-resume.patch (merged)
+  
+  * Premiere of the common-source kernel package
+    (Jurij Smakov, Andres Salomon)
+    - build all architectures out of kernel source package
+    - rename source and binary packages
+    - create a common config for different architectures, and management
+      tools to allow for easier modification of config options
+    - drop default configs, autogenerate them instead; requires
+      kernel-package >= 9.002.
+
+  * Add 2.6.12.1 (Maximilian Attems)
+    - Clean up subthread exec (CAN-2005-1913)
+    - ia64 ptrace + sigrestore_context (CAN-2005-1761)
+
+  * Add 2.6.12.2 (Frederik Schüler)
+    - Fix two socket hashing bugs.
+    -  ACPI: Make sure we call acpi_register_gsi() even for default PCI
+       interrupt assignment
+    - Add "memory" clobbers to the x86 inline asm of strncmp and friends
+    - e1000: fix spinlock bug
+    - fix remap_pte_range BUG
+    - Fix typo in drivers/pci/pci-driver.c
+
+  * Add 2.6.12.3 (Joshua Kwan)
+    - Fix semaphore handling in __unregister_chrdev
+    - Fix TT mode in UML.
+    - Check for a null return in tty_ldisc_ref.
+    - v4l: cx88 hue offset fix
+    - Fix 8139cp breakage that occurs with tpm driver.
+    - Fix the 6pack driver in SMP environments.
+    - Switch to spinlocks in the shaper driver.
+    - ppc32: stop misusing NTP's time_offset value
+    - netfilter: go back to dropping conntrack references manually
+    - ACPI: don't accept 0 as a PCI IRQ.
+
+  * Enable CONFIG_SCSI_INITIO. (Maximilian Attems) (closes: #318121)
+
+  * [powerpc] :
+    - Added powerpc-mkvmlinuz-support patch which allows, together with
+      kernel-package 9.0002 to add mkvmlinuz support to hand built packages.
+    - Removed powerpc-ppc64-ibmvscsi.patch, FTBFS, and Christoph doesn't like
+      it and thinks it is not needed.
+    - Disabled swim3 on powerpc-smp, FTBFS.
+    - Disabled software-suspend on powerpc-smp, FTBFS, amd64/i386 only smp code.
+    - Rediffed and readded the G4 L2 hardware flush assist patch from Jacob Pan.
+    (Sven Luther)
+    
+  * [sparc]
+    - Drop sparc32 flavour for now. sparc32 kernel is currently in the
+      category "too buggy for us to support". In spite of numerous efforts
+      I still see occasional random filesystem corruptions in my tests.
+      That does NOT mean that we are dropping sparc32 support, we will
+      work with upstream trying to solve these problems for the next
+      kernel release. Those interested in helping/testing are encouraged
+      to subscribe to debian-sparc mailing list.
+      (Jurij Smakov)
+
+  * [alpha]
+    - Renamed resulting binary packages for alpha, kernel-image-x.y.z-generic
+      wasn't a generic kernel, it was a generic kernel for alpha machines, so
+      we're now using linux-image-x.y.z-alpha-generic (and of course, the same
+      change for the smp kernel-image). This change was postponed after the
+      sarge release. (closes: #260003)
+    (Norbert Tretkowski)
+
+  * [amd64]
+    - Now using the default compiler (gcc-4.0), thus we get rid of the 
+      annoying MAKEFLAGS="CC=gcc-3.4" make-kpkg... invocation for third-party 
+      modules.
+      This release lacks 64bit kernels for i386 userland; support will be
+      added in a later release as soon as the toolchain has stabilized again.
+      (Frederik Schüler)
+
+ -- Andres Salomon <dilinger@debian.org>  Wed, 20 Jul 2005 17:16:04 -0400
+
--- linux-2.6-2.6.30.orig/debian/config.defines.dump
+++ linux-2.6-2.6.30/debian/config.defines.dump
@@ -0,0 +1,575 @@
+[('abi',)]
+abiname: 'bpo.2'
+
+[('base',)]
+arches: ['alpha', 'amd64', 'arm', 'armel', 'hppa', 'i386', 'ia64', 'm68k', 'mips', 'mipsel', 'powerpc', 's390', 'sparc']
+featuresets: ['none', 'openvz', 'vserver', 'xen']
+compiler: 'gcc-4.3'
+
+[('base', None, 'openvz')]
+enabled: False
+
+[('base', None, 'vserver')]
+enabled: False
+
+[('base', None, 'xen')]
+enabled: False
+
+[('base', 'alpha')]
+kernel-arch: 'alpha'
+featuresets: ['none']
+
+[('base', 'alpha', None, 'alpha-generic')]
+class: 'Alpha'
+
+[('base', 'alpha', None, 'alpha-legacy')]
+class: 'Alpha Legacy'
+
+[('base', 'alpha', None, 'alpha-smp')]
+class: 'Alpha SMP'
+
+[('base', 'alpha', 'none')]
+implicit-flavour: True
+flavours: ['alpha-generic', 'alpha-smp', 'alpha-legacy']
+
+[('base', 'amd64')]
+kernel-arch: 'x86'
+featuresets: ['none', 'openvz', 'vserver', 'xen']
+
+[('base', 'amd64', None, 'amd64')]
+longclass: 'all 64bit single- and multiprocessor AMD and Intel'
+class: 'AMD64'
+
+[('base', 'amd64', 'none')]
+implicit-flavour: True
+flavours: ['amd64']
+
+[('base', 'amd64', 'openvz')]
+flavours: ['amd64']
+
+[('base', 'amd64', 'vserver')]
+flavours: ['amd64']
+
+[('base', 'amd64', 'xen')]
+flavours: ['amd64']
+
+[('base', 'arm')]
+kernel-arch: 'arm'
+featuresets: ['none']
+
+[('base', 'arm', None, 'footbridge')]
+longclass: 'Footbridge based (CATS, Netwinder)'
+class: 'Footbridge'
+
+[('base', 'arm', None, 'iop32x')]
+longclass: 'IOP32x based (Thecus N2100, etc)'
+class: 'IOP32x'
+
+[('base', 'arm', None, 'ixp4xx')]
+longclass: 'IXP4xx based (Linksys NSLU2, etc)'
+class: 'IXP4xx'
+
+[('base', 'arm', None, 'orion5x')]
+longclass: 'Orion 5181, 5182 and 5281 based (QNAP TS-109/TS-209, etc)'
+class: 'Orion'
+
+[('base', 'arm', None, 'versatile')]
+longclass: 'Versatile (PB, AB, Qemu)'
+class: 'Versatile'
+
+[('base', 'arm', 'none')]
+implicit-flavour: True
+flavours: ['footbridge', 'iop32x', 'ixp4xx', 'orion5x']
+
+[('base', 'armel')]
+kernel-arch: 'arm'
+featuresets: ['none']
+
+[('base', 'armel', None, 'iop32x')]
+longclass: 'IOP32x based (Thecus N2100, etc)'
+class: 'IOP32x'
+
+[('base', 'armel', None, 'ixp4xx')]
+longclass: 'IXP4xx based (Linksys NSLU2, etc)'
+class: 'IXP4xx'
+
+[('base', 'armel', None, 'kirkwood')]
+longclass: 'Marvell Kirkwood based (SheevaPlug, QNAP TS-119/TS-219, etc)'
+class: 'Marvell Kirkwood'
+
+[('base', 'armel', None, 'orion5x')]
+longclass: 'Orion 5181, 5182 and 5281 based (QNAP TS-109/TS-209, etc)'
+class: 'Orion'
+
+[('base', 'armel', None, 'versatile')]
+longclass: 'Versatile (PB, AB, Qemu)'
+class: 'Versatile'
+
+[('base', 'armel', 'none')]
+implicit-flavour: True
+flavours: ['iop32x', 'ixp4xx', 'kirkwood', 'orion5x', 'versatile']
+
+[('base', 'hppa')]
+kernel-arch: 'parisc'
+featuresets: ['none']
+
+[('base', 'hppa', None, 'parisc')]
+class: '32-bit PA-RISC'
+
+[('base', 'hppa', None, 'parisc-smp')]
+class: 'multiprocessor 32-bit PA-RISC'
+
+[('base', 'hppa', None, 'parisc64')]
+class: '64-bit PA-RISC'
+cflags: '-fno-cse-follow-jumps'
+override-host-type: 'hppa64-linux-gnu'
+
+[('base', 'hppa', None, 'parisc64-smp')]
+class: 'multiprocessor 64-bit PA-RISC'
+cflags: '-fno-cse-follow-jumps'
+override-host-type: 'hppa64-linux-gnu'
+
+[('base', 'hppa', 'none')]
+implicit-flavour: True
+flavours: ['parisc', 'parisc-smp', 'parisc64', 'parisc64-smp']
+
+[('base', 'i386')]
+kernel-arch: 'x86'
+featuresets: ['none', 'openvz', 'vserver', 'xen']
+
+[('base', 'i386', None, '486')]
+longclass: 'x86 and compatible'
+class: 'x86'
+
+[('base', 'i386', None, '686')]
+longclass: 'Pentium Pro/Celeron/Pentium II/Pentium III/Pentium 4'
+class: 'PPro/Celeron/PII/PIII/P4'
+
+[('base', 'i386', None, '686-bigmem')]
+longclass: 'Pentium Pro/Celeron/Pentium II/Pentium III/Pentium 4 with 4-64G RAM'
+class: 'PPro/Celeron/PII/PIII/P4'
+
+[('base', 'i386', None, 'amd64')]
+longclass: 'all 64bit single- and multiprocessor AMD and Intel'
+class: 'AMD64'
+
+[('base', 'i386', 'none')]
+implicit-flavour: True
+flavours: ['486', '686', '686-bigmem', 'amd64']
+
+[('base', 'i386', 'openvz')]
+flavours: ['686']
+
+[('base', 'i386', 'vserver')]
+flavours: ['686', '686-bigmem']
+
+[('base', 'i386', 'xen')]
+flavours: ['686']
+
+[('base', 'i386', 'xen', '686')]
+longclass: 'i686 and compatible'
+class: 'i686'
+
+[('base', 'ia64')]
+kernel-arch: 'ia64'
+featuresets: ['none', 'vserver']
+
+[('base', 'ia64', None, 'itanium')]
+class: 'Itanium'
+
+[('base', 'ia64', None, 'mckinley')]
+class: 'Itanium II'
+
+[('base', 'ia64', 'none')]
+implicit-flavour: True
+flavours: ['itanium', 'mckinley']
+
+[('base', 'ia64', 'vserver')]
+flavours: ['itanium', 'mckinley']
+
+[('base', 'm68k')]
+kernel-arch: 'm68k'
+featuresets: ['none']
+
+[('base', 'm68k', None, 'amiga')]
+class: 'Amiga'
+
+[('base', 'm68k', None, 'atari')]
+class: 'Atari'
+
+[('base', 'm68k', None, 'bvme6000')]
+class: 'BVM BVME4000 and BVME6000'
+
+[('base', 'm68k', None, 'hp')]
+class: 'HP'
+
+[('base', 'm68k', None, 'mac')]
+class: 'Macintosh'
+
+[('base', 'm68k', None, 'mvme147')]
+class: 'Motorola MVME147'
+
+[('base', 'm68k', None, 'mvme16x')]
+class: 'Motorola MVME162/6/7, MVME172/7'
+
+[('base', 'm68k', None, 'q40')]
+class: 'Q40 and Q60'
+
+[('base', 'm68k', None, 'sun3')]
+class: 'sun3'
+
+[('base', 'm68k', 'none')]
+implicit-flavour: True
+flavours: ['amiga', 'atari', 'bvme6000', 'mac', 'mvme147', 'mvme16x']
+
+[('base', 'mips')]
+kernel-arch: 'mips'
+featuresets: ['none']
+
+[('base', 'mips', None, '4kc-malta')]
+longclass: 'MIPS Malta board'
+class: 'MIPS Malta'
+
+[('base', 'mips', None, '5kc-malta')]
+longclass: 'MIPS Malta board (64-bit)'
+class: 'MIPS Malta (64-bit)'
+
+[('base', 'mips', None, 'r4k-ip22')]
+longclass: 'SGI IP22 (Indy, Indigo2)'
+class: 'SGI IP22'
+
+[('base', 'mips', None, 'r5k-ip32')]
+longclass: 'SGI IP32 (O2)'
+class: 'SGI IP32'
+
+[('base', 'mips', None, 'sb1-bcm91250a')]
+longclass: 'Broadcom BCM91250A (aka SWARM)'
+class: 'BCM91250A'
+
+[('base', 'mips', None, 'sb1a-bcm91480b')]
+longclass: 'Broadcom BCM91480B (aka BigSur)'
+class: 'BCM91480B'
+
+[('base', 'mips', 'none')]
+implicit-flavour: True
+flavours: ['r4k-ip22', 'r5k-ip32', 'sb1-bcm91250a', 'sb1a-bcm91480b', '4kc-malta', '5kc-malta']
+
+[('base', 'mipsel')]
+kernel-arch: 'mips'
+featuresets: ['none']
+
+[('base', 'mipsel', None, '4kc-malta')]
+longclass: 'MIPS Malta board'
+class: 'MIPS Malta'
+
+[('base', 'mipsel', None, '5kc-malta')]
+longclass: 'MIPS Malta board (64-bit)'
+class: 'MIPS Malta (64-bit)'
+
+[('base', 'mipsel', None, 'r5k-cobalt')]
+longclass: 'Cobalt (Qube, RaQ, Qube2, RaQ2)'
+class: 'Cobalt'
+
+[('base', 'mipsel', None, 'sb1-bcm91250a')]
+longclass: 'Broadcom BCM91250A (aka SWARM)'
+class: 'BCM91250A'
+
+[('base', 'mipsel', None, 'sb1a-bcm91480b')]
+longclass: 'Broadcom BCM91480B (aka BigSur)'
+class: 'BCM91480B'
+
+[('base', 'mipsel', 'none')]
+implicit-flavour: True
+flavours: ['r5k-cobalt', 'sb1-bcm91250a', 'sb1a-bcm91480b', '4kc-malta', '5kc-malta']
+
+[('base', 'powerpc')]
+kernel-arch: 'powerpc'
+featuresets: ['none', 'vserver']
+
+[('base', 'powerpc', None, 'powerpc')]
+class: 'uniprocessor 32-bit PowerPC'
+
+[('base', 'powerpc', None, 'powerpc-smp')]
+class: 'multiprocessor 32-bit PowerPC'
+
+[('base', 'powerpc', None, 'powerpc64')]
+class: '64-bit PowerPC'
+
+[('base', 'powerpc', 'none')]
+implicit-flavour: True
+flavours: ['powerpc', 'powerpc-smp', 'powerpc64']
+
+[('base', 'powerpc', 'vserver')]
+flavours: ['powerpc', 'powerpc64']
+
+[('base', 's390')]
+kernel-arch: 's390'
+featuresets: ['none', 'vserver']
+
+[('base', 's390', None, 's390')]
+class: 'IBM S/390'
+
+[('base', 's390', None, 's390-tape')]
+modules: False
+class: 'IBM S/390'
+
+[('base', 's390', None, 's390x')]
+class: 'IBM zSeries'
+
+[('base', 's390', None, 's390x-tape')]
+modules: False
+class: 'IBM zSeries'
+
+[('base', 's390', 'none')]
+implicit-flavour: True
+flavours: ['s390x', 's390x-tape']
+
+[('base', 's390', 'vserver')]
+flavours: ['s390x']
+
+[('base', 'sparc')]
+kernel-arch: 'sparc'
+featuresets: ['none', 'vserver']
+
+[('base', 'sparc', None, 'sparc32')]
+class: 'uniprocessor sparc32 (sun4m)'
+
+[('base', 'sparc', None, 'sparc64')]
+class: 'uniprocessor 64-bit UltraSPARC'
+
+[('base', 'sparc', None, 'sparc64-smp')]
+class: 'multiprocessor 64-bit UltraSPARC'
+
+[('base', 'sparc', 'none')]
+implicit-flavour: True
+flavours: ['sparc64', 'sparc64-smp']
+
+[('base', 'sparc', 'vserver')]
+flavours: ['sparc64']
+
+[('build', 'arm', None, 'iop32x')]
+image-file: 'arch/arm/boot/zImage'
+
+[('build', 'arm', None, 'ixp4xx')]
+image-file: 'arch/arm/boot/zImage'
+
+[('build', 'arm', None, 'orion5x')]
+image-file: 'arch/arm/boot/zImage'
+
+[('build', 'armel', None, 'iop32x')]
+image-file: 'arch/arm/boot/zImage'
+
+[('build', 'armel', None, 'ixp4xx')]
+image-file: 'arch/arm/boot/zImage'
+
+[('build', 'armel', None, 'kirkwood')]
+image-file: 'arch/arm/boot/zImage'
+
+[('build', 'armel', None, 'orion5x')]
+image-file: 'arch/arm/boot/zImage'
+
+[('commands-image-initramfs-generators',)]
+yaird: 'mkinitrd.yaird'
+initramfs-tools: 'update-initramfs'
+
+[('image',)]
+desc-long-part-xen: 'This kernel also runs on a Xen hypervisor.\nIt supports only unpriviledged (domU) operation.'
+initramfs-generators: ['initramfs-tools', 'yaird', 'initramfs-fallback']
+type: 'plain'
+
+[('image', None, 'openvz')]
+desc-parts: ['openvz']
+depends: 'vzctl'
+desc-short-part-openvz: 'OpenVZ support'
+desc-long-part-openvz: 'This kernel includes support for OpenVZ container-based virtualization.'
+
+[('image', None, 'vserver')]
+desc-parts: ['vserver']
+desc-long-part-vserver: 'This kernel includes support for Linux-VServer virtualization.'
+recommends: 'util-vserver'
+desc-short-part-vserver: 'Linux-VServer support'
+
+[('image', None, 'xen')]
+desc-parts: ['xenold']
+desc-short-part-xenold: 'oldstyle Xen support'
+desc-long-part-xenold: 'This kernel only runs on a Xen hypervisor.\nIt supports both priviledged (dom0) and unpriviledged (domU) operation.'
+
+[('image', 'alpha')]
+suggests: 'aboot, fdutils'
+
+[('image', 'amd64')]
+suggests: 'grub | lilo'
+configs: ['kernelarch-x86/config', 'amd64/config']
+
+[('image', 'amd64', None, 'amd64')]
+desc-parts: ['xen']
+configs: ['kernelarch-x86/config-arch-64', 'amd64/config.amd64']
+
+[('image', 'amd64', 'xen')]
+suggests: 'grub'
+initramfs-generators: ['initramfs-tools']
+type: 'plain-xen'
+
+[('image', 'arm')]
+suggests: 'fdutils'
+
+[('image', 'arm', None, 'footbridge')]
+suggests: 'nwutil'
+
+[('image', 'arm', None, 'iop32x')]
+check-size: '1441784'
+
+[('image', 'arm', None, 'ixp4xx')]
+check-size: '1441760'
+
+[('image', 'arm', None, 'orion5x')]
+check-size: '1572792'
+recommends: 'uboot-mkimage'
+
+[('image', 'armel')]
+suggests: 'fdutils'
+
+[('image', 'armel', None, 'iop32x')]
+check-size: '1441784'
+configs: ['arm/config.iop32x']
+
+[('image', 'armel', None, 'ixp4xx')]
+check-size: '1441760'
+configs: ['arm/config.ixp4xx']
+
+[('image', 'armel', None, 'kirkwood')]
+check-size: '2097080'
+recommends: 'uboot-mkimage'
+
+[('image', 'armel', None, 'orion5x')]
+check-size: '1572792'
+configs: ['arm/config.orion5x']
+recommends: 'uboot-mkimage'
+
+[('image', 'armel', None, 'versatile')]
+configs: ['arm/config.versatile']
+
+[('image', 'hppa')]
+suggests: 'palo'
+
+[('image', 'i386')]
+suggests: 'grub | lilo'
+configs: ['kernelarch-x86/config', 'i386/config']
+
+[('image', 'i386', None, '486')]
+configs: ['kernelarch-x86/config-arch-32']
+
+[('image', 'i386', None, '686')]
+configs: ['kernelarch-x86/config-arch-32']
+recommends: 'libc6-i686'
+
+[('image', 'i386', None, '686-bigmem')]
+desc-parts: ['xen']
+configs: ['kernelarch-x86/config-arch-32']
+recommends: 'libc6-i686'
+
+[('image', 'i386', None, 'amd64')]
+desc-parts: ['xen']
+configs: ['kernelarch-x86/config-arch-64', 'amd64/config', 'amd64/config.amd64']
+recommends: 'libc6-i686'
+
+[('image', 'i386', 'openvz', '686')]
+desc-parts: ['xen']
+configs: ['i386/config.686-bigmem']
+
+[('image', 'i386', 'vserver')]
+recommends: 'util-vserver, libc6-i686'
+
+[('image', 'i386', 'xen')]
+suggests: 'grub'
+initramfs-generators: ['initramfs-tools']
+type: 'plain-xen'
+
+[('image', 'i386', 'xen', '686')]
+configs: ['i386/config.686-bigmem', 'i386/xen/config']
+recommends: 'libc6-xen'
+
+[('image', 'ia64')]
+suggests: 'elilo, fdutils'
+
+[('image', 'm68k')]
+suggests: 'vmelilo, fdutils'
+initramfs: False
+
+[('image', 'mips')]
+initramfs: False
+
+[('image', 'mipsel')]
+initramfs: False
+
+[('image', 'powerpc')]
+suggests: 'mkvmlinuz'
+
+[('image', 'powerpc', None, 'powerpc-smp')]
+configs: ['powerpc/config.powerpc', 'powerpc/config.powerpc-smp']
+
+[('image', 'powerpc', 'vserver', 'powerpc')]
+configs: ['powerpc/config.powerpc-smp']
+
+[('image', 'powerpc', 'vserver', 'powerpc64')]
+configs: ['powerpc/config.powerpc64']
+
+[('image', 's390')]
+desc-short-part-tape: 'IPL from tape'
+desc-long-part-tape: 'This kernel has support to IPL (boot) from a tape.'
+desc-long-part-reader: 'This kernel has support to IPL (boot) from a VM reader or DASD device.'
+suggests: 's390-tools'
+
+[('image', 's390', None, 's390')]
+desc-parts: ['reader']
+
+[('image', 's390', None, 's390-tape')]
+desc-parts: ['tape']
+override-localversion: 's390'
+type: 'plain-s390-tape'
+initramfs: False
+
+[('image', 's390', None, 's390x')]
+desc-parts: ['reader']
+
+[('image', 's390', None, 's390x-tape')]
+desc-parts: ['tape']
+override-localversion: 's390x'
+type: 'plain-s390-tape'
+initramfs: False
+
+[('image', 'sparc')]
+suggests: 'silo, fdutils'
+
+[('image', 'sparc', None, 'sparc32')]
+image-postproc: 'sparc32-image-postproc'
+
+[('image', 'sparc', 'vserver')]
+recommends: 'util-vserver, libc6-sparc64'
+
+[('image', 'sparc', 'vserver', 'sparc64')]
+configs: ['sparc/config.sparc64-smp']
+
+[('relations',)]
+util-vserver: 'util-vserver (>= 0.30.215)'
+initramfs-fallback: 'linux-initramfs-tool'
+yaird: 'yaird (>= 0.0.13)'
+gcc-4.3: 'gcc-4.3'
+initramfs-tools: 'initramfs-tools (>= 0.55)'
+
+[('relations', 'hppa')]
+gcc-4.3: 'gcc-4.3, binutils-hppa64, gcc-4.3-hppa64'
+
+[('version',)]
+abiname: '-bpo.2'
+source: '2.6.30-8~bpo50+2'
+
+[('xen',)]
+versions: ['3.2-1']
+
+[('xen', 'amd64', 'xen')]
+flavours: ['amd64']
+
+[('xen', 'i386', 'xen')]
+flavours: ['i386', 'amd64']
+
--- linux-2.6-2.6.30.orig/debian/rules
+++ linux-2.6-2.6.30/debian/rules
@@ -0,0 +1,99 @@
+#!/usr/bin/make -f
+#
+# Generally nothing needs to be modified below this line
+#
+SHELL    := sh -e
+DEB_HOST_ARCH  := $(shell dpkg-architecture -qDEB_HOST_ARCH)
+DEB_BUILD_ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH)
+SOURCE   := $(shell dpkg-parsechangelog | sed -ne 's,^Source: *\(.*\)$$,\1,p')
+VERSION_DEBIAN := $(shell dpkg-parsechangelog | sed -ne 's,^Version: *\(.*\)$$,\1,p')
+VERSION  := $(shell echo "$(VERSION_DEBIAN)" | sed -e 's,-[^-]*$$,,')
+VERSION_DEBIAN_BINNMU := $(shell echo "$(VERSION_DEBIAN)" | sed -ne 's,.*\+b\(.*\)$$,\1,p')
+
+include debian/rules.defs
+
+source: debian/control $(STAMPS_DIR)/source-base
+$(STAMPS_DIR)/source-base: $(BUILD_DIR) $(STAMPS_DIR)
+	dh_testdir
+	$(MAKE) -f debian/rules.gen source_$(DEB_HOST_ARCH)
+	touch $@
+
+source-all: debian/control $(BUILD_DIR) $(STAMPS_DIR)
+	dh_testdir
+	$(MAKE) -f debian/rules.gen source
+
+setup: debian/control $(STAMPS_DIR)/setup-base
+$(STAMPS_DIR)/setup-base: $(STAMPS_DIR)/source-base
+	dh_testdir
+	$(MAKE) -f debian/rules.gen setup_$(DEB_HOST_ARCH)
+	touch $@
+
+build: debian/control $(STAMPS_DIR)/build-base
+$(STAMPS_DIR)/build-base: $(STAMPS_DIR)/setup-base
+	dh_testdir
+	$(MAKE) -f debian/rules.gen build_$(DEB_HOST_ARCH)
+	touch $@
+
+$(BUILD_DIR) $(STAMPS_DIR):
+	@[ -d $@ ] || mkdir $@
+
+DIR_ORIG = ../orig/$(SOURCE)-$(VERSION)
+TAR_ORIG_NAME = $(SOURCE)_$(VERSION).orig.tar.gz
+TAR_ORIG = $(firstword $(wildcard ../$(TAR_ORIG_NAME)) $(wildcard ../orig/$(TAR_ORIG_NAME)))
+
+orig: $(DIR_ORIG)
+	rsync --delete --exclude debian --exclude .svk --exclude .svn --link-dest=$(DIR_ORIG)/ -a $(DIR_ORIG)/ .
+
+$(DIR_ORIG):
+ifeq ($(TAR_ORIG),)
+	$(error Cannot find orig tarball $(TAR_ORIG_NAME))
+else
+	mkdir -p ../orig
+	tar -C ../orig -xzf $(TAR_ORIG)
+endif
+
+maintainerclean:
+	rm -f debian/config.defines.dump debian/control debian/control.md5sum debian/rules.gen debian/bin/patch.* debian/linux-*
+	rm -rf $(filter-out debian .svk .svn, $(wildcard * .[^.]*))
+
+clean: debian/control
+	dh_testdir
+	rm -rf $(BUILD_DIR) $(STAMPS_DIR) debian/lib/python/debian_linux/*.pyc
+	dh_clean
+
+binary-indep: $(STAMPS_DIR)/source-base
+	dh_testdir
+	$(MAKE) -f debian/rules.gen binary-indep
+
+binary-arch: $(STAMPS_DIR)/build-base
+	dh_testdir
+	$(MAKE) -f debian/rules.gen binary-arch_$(DEB_HOST_ARCH)
+
+binary:	binary-indep binary-arch
+
+CONTROL_FILES = debian/changelog $(wildcard debian/templates/*.in)
+CONTROL_FILES += debian/config/defines $(wildcard debian/config/*/defines) $(wildcard debian/config/*/*/defines)
+debian/control debian/rules.gen: debian/bin/gencontrol.py $(CONTROL_FILES)
+ifeq ($(wildcard debian/control.md5sum),)
+	$(MAKE) -f debian/rules debian/control-real
+else ifeq ($(VERSION_DEBIAN_BINNMU),)
+	md5sum --check debian/control.md5sum --status || \
+		$(MAKE) -f debian/rules debian/control-real
+else
+	grep -v debian/changelog debian/control.md5sum | md5sum --check - --status || \
+		$(MAKE) -f debian/rules debian/control-real
+endif
+
+debian/control-real: debian/bin/gencontrol.py $(CONTROL_FILES)
+	chmod +x $<
+	$<
+	md5sum $^ > debian/control.md5sum
+	@echo
+	@echo This target is made to fail intentionally, to make sure
+	@echo that it is NEVER run during the automated build. Please
+	@echo ignore the following error, the debian/control file has
+	@echo been generated SUCCESSFULLY.
+	@echo
+	exit 1
+
+.PHONY: clean build setup binary-indep binary-arch binary
--- linux-2.6-2.6.30.orig/debian/rules.real
+++ linux-2.6-2.6.30/debian/rules.real
@@ -0,0 +1,455 @@
+#
+# This Makefile executes the unpack/build/binary targets for a single
+# subarch, which is passed in the subarch variable. Empty subarch
+# variable means that we are building for an arch without the subarch.
+# Additionally, variables version, abiname and ltver are
+# expected to be available (need to be exported from the parent process).
+#
+SHELL  := bash -e
+DEB_HOST_ARCH     := $(shell dpkg-architecture -a'$(ARCH)' -qDEB_HOST_ARCH)
+DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -a'$(ARCH)' -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_ARCH    := $(shell dpkg-architecture -a'$(ARCH)' -qDEB_BUILD_ARCH)
+UPLOADER  := $(shell dpkg-parsechangelog | sed -ne 's,^Maintainer: .[^<]*<\([^>]*\)>,\1,p')
+
+export PYTHONPATH = $(CURDIR)/debian/lib/python
+export DH_OPTIONS
+export DEB_HOST_ARCH DEB_HOST_GNU_TYPE DEB_BUILD_ARCH
+
+include debian/rules.defs
+
+ifdef DEBIAN_KERNEL_JOBS
+  JOBS_ARG = -j$(DEBIAN_KERNEL_JOBS)
+endif
+
+setup_env := env -u ABINAME -u ARCH -u FEATURESET -u FLAVOUR -u VERSION -u LOCALVERSION
+setup_env += DISTRIBUTION_OFFICIAL_BUILD=1 DISTRIBUTION_UPLOADER=$(UPLOADER) DISTRIBUTION_VERSION="$(SOURCEVERSION)"
+
+MAKE_CLEAN = $(setup_env) $(MAKE)
+MAKE_SELF := $(MAKE) -f debian/rules.real $(MAKEOVERRIDES)
+MAKEOVERRIDES =
+
+#
+# Targets
+#
+binary-arch-arch: install-headers_$(ARCH)
+binary-arch-arch: install-libc-dev_$(ARCH)
+binary-arch-featureset: install-headers_$(ARCH)_$(FEATURESET)
+binary-arch-flavour: install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
+ifeq ($(MODULES),True)
+  binary-arch-flavour: install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+endif
+
+binary-indep: install-doc
+binary-indep: install-manual
+binary-indep: install-patch
+binary-indep: install-source
+binary-indep: install-support
+binary-indep: install-tree
+
+build: $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
+
+setup-flavour: $(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+
+source-arch: $(STAMPS_DIR)/source
+source-featureset: $(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET)
+
+$(BUILD_DIR)/config.$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(KCONFIG)
+	python debian/bin/kconfig.py '$@' $(KCONFIG)
+
+$(BUILD_DIR)/linux-source-$(UPSTREAMVERSION).tar.bz2: SOURCE_DIR=$(BUILD_DIR)/source
+$(BUILD_DIR)/linux-source-$(UPSTREAMVERSION).tar.bz2: DIR = $(BUILD_DIR)/linux-source-$(UPSTREAMVERSION)
+$(BUILD_DIR)/linux-source-$(UPSTREAMVERSION).tar.bz2: $(STAMPS_DIR)/source
+	rm -rf '$@' '$(DIR)'
+	cp -al '$(SOURCE_DIR)' '$(DIR)'
+	chmod -R u+rw,go=rX '$(DIR)'
+	cd '$(BUILD_DIR)'; tar -cjf 'linux-source-$(UPSTREAMVERSION).tar.bz2' 'linux-source-$(UPSTREAMVERSION)'
+	rm -rf '$(DIR)'
+
+define patch_cmd
+cd '$(DIR)'; python '$(CURDIR)/debian/bin/patch.apply' --overwrite-home='$(CURDIR)/debian/patches'
+endef
+
+$(STAMPS_DIR)/source: SOURCE_FILES = $(filter-out debian, $(wildcard * .[^.]*))
+$(STAMPS_DIR)/source: DIR = $(BUILD_DIR)/source
+$(STAMPS_DIR)/source:
+	rm -rf '$(DIR)'
+	mkdir -p '$(DIR)' $(STAMPS_DIR)
+	cp -al $(SOURCE_FILES) '$(DIR)'
+	$(patch_cmd)
+	touch '$@'
+
+$(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET): SOURCE_DIR=$(BUILD_DIR)/source
+$(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET): DIR=$(BUILD_DIR)/source_$(ARCH)_$(FEATURESET)
+$(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET): $(STAMPS_DIR)/source
+	rm -rf '$(DIR)'
+	cp -al '$(SOURCE_DIR)' '$(DIR)'
+	$(patch_cmd) -a $(ARCH) -f $(FEATURESET)
+	touch '$@'
+
+$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): CONFIG=$(BUILD_DIR)/config.$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): SOURCE_DIR=$(BUILD_DIR)/source_$(ARCH)_$(FEATURESET)
+$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DIR=$(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(BUILD_DIR)/config.$(ARCH)_$(FEATURESET)_$(FLAVOUR) $(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET)
+	rm -rf '$(DIR)'
+	mkdir '$(DIR)'
+	cp '$(CONFIG)' '$(DIR)/.config'
+	echo '$(ABINAME)$(LOCALVERSION_IMAGE)' > '$(DIR)/localversion'
+	echo 'override ARCH = $(KERNEL_ARCH)' >> '$(DIR)/.kernelvariables'
+	echo 'CCACHE = ccache' >> '$(DIR)/.kernelvariables'
+	echo 'CC = $$(if $$(DEBIAN_KERNEL_USE_CCACHE),$$(CCACHE)) $$(CROSS_COMPILE)$(COMPILER)' >> '$(DIR)/.kernelvariables'
+# TODO: Should we set CROSS_COMPILE always?
+ifdef OVERRIDE_HOST_TYPE
+	echo 'override CROSS_COMPILE = $(OVERRIDE_HOST_TYPE)-' >> '$(DIR)/.kernelvariables'
+else
+	echo 'ifneq ($$(DEB_BUILD_ARCH),$$(DEB_HOST_ARCH))' >> '$(DIR)/.kernelvariables'
+	echo 'override CROSS_COMPILE = $$(DEB_HOST_GNU_TYPE)-' >> '$(DIR)/.kernelvariables'
+	echo 'endif' >> '$(DIR)/.kernelvariables'
+endif
+ifdef CFLAGS
+	echo 'CFLAGS += $(CFLAGS)'  >> '$(DIR)/.kernelvariables'
+endif
+	+$(MAKE_CLEAN) -C '$(SOURCE_DIR)' O='$(CURDIR)/$(DIR)' reportoldconfig
+	+$(MAKE_CLEAN) -C '$(SOURCE_DIR)' O='$(CURDIR)/$(DIR)' $(JOBS_ARG) prepare
+	touch '$@'
+
+$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): DIR=$(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): $(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+
+$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-s390-tape: BUILD_TARGET = image
+
+$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain \
+$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-s390-tape \
+$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-xen:
+	+$(MAKE_CLEAN) -C '$(DIR)' $(JOBS_ARG) $(BUILD_TARGET)
+	python debian/bin/buildcheck.py $(DIR) $(ARCH) $(FEATURESET) $(FLAVOUR)
+	touch '$@'
+
+$(STAMPS_DIR)/build-doc: SOURCE_DIR=$(BUILD_DIR)/source
+$(STAMPS_DIR)/build-doc: DIR=$(BUILD_DIR)/build-doc
+$(STAMPS_DIR)/build-doc: $(STAMPS_DIR)/source
+	rm -rf $(DIR)
+	mkdir $(DIR)
+	+$(MAKE_CLEAN) -C $(SOURCE_DIR) O='$(CURDIR)/$(DIR)' $(JOBS_ARG) xmldocs
+	+$(MAKE_CLEAN) -C $(SOURCE_DIR) O='$(CURDIR)/$(DIR)' $(JOBS_ARG) htmldocs mandocs
+	touch '$@'
+
+install-base:
+	dh_installchangelogs
+	dh_installdocs
+	dh_strip
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_shlibdeps
+	dh_gencontrol -- $(GENCONTROL_ARGS)
+	dh_md5sums
+	dh_builddeb
+
+install-doc: PACKAGE_NAME = linux-doc-$(VERSION)
+install-doc: DIR = $(BUILD_DIR)/build-doc
+install-doc: SOURCE_DIR = $(BUILD_DIR)/source
+install-doc: PACKAGE_DIR = debian/$(PACKAGE_NAME)
+install-doc: OUT_DIR = $(PACKAGE_DIR)/usr/share/doc/$(PACKAGE_NAME)
+install-doc: DH_OPTIONS = -p$(PACKAGE_NAME)
+install-doc: $(STAMPS_DIR)/build-doc
+	dh_prep
+	mkdir -p $(OUT_DIR)
+	cp -a $(addprefix $(SOURCE_DIR)/, CREDITS MAINTAINERS README REPORTING-BUGS Documentation) $(OUT_DIR)
+	rm -rf $(OUT_DIR)/Documentation/DocBook
+	cd $(DIR)/Documentation/DocBook; \
+	find * -name '*.html' -print \
+	| \
+	cpio -pd --preserve-modification-time '$(CURDIR)/$(OUT_DIR)/html'
+	gzip -9qfr $(OUT_DIR)/Documentation
+	+$(MAKE_SELF) install-base
+
+install-manual: PACKAGE_NAME = linux-manual-$(VERSION)
+install-manual: DIR=$(BUILD_DIR)/build-doc
+install-manual: DH_OPTIONS = -p$(PACKAGE_NAME)
+install-manual: $(STAMPS_DIR)/build-doc
+	dh_prep
+	find $(DIR)/Documentation/DocBook/man/ -name '*.9' | xargs dh_installman
+	+$(MAKE_SELF) install-base
+
+install-dummy:
+	dh_testdir
+	dh_testroot
+	dh_prep
+	+$(MAKE_SELF) install-base
+
+install-headers_$(ARCH): PACKAGE_NAMES = linux-headers-$(UPSTREAMVERSION)$(ABINAME)-all linux-headers-$(UPSTREAMVERSION)$(ABINAME)-all-$(ARCH)
+install-headers_$(ARCH): DH_OPTIONS = $(foreach p, $(PACKAGE_NAMES), -p$(p))
+install-headers_$(ARCH):
+	dh_testdir
+	dh_testroot
+	+$(MAKE_SELF) install-base GENCONTROL_ARGS='-Vkernel:Arch=$(ARCH)'
+
+install-headers_$(ARCH)_$(FEATURESET): PACKAGE_NAME = linux-headers-$(UPSTREAMVERSION)$(ABINAME)-common$(LOCALVERSION_HEADERS)
+install-headers_$(ARCH)_$(FEATURESET): PACKAGE_NAME_KBUILD = linux-kbuild-$(VERSION)
+install-headers_$(ARCH)_$(FEATURESET): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-headers_$(ARCH)_$(FEATURESET): BASE_DIR = /usr/src/$(PACKAGE_NAME)
+install-headers_$(ARCH)_$(FEATURESET): SOURCE_DIR = $(BUILD_DIR)/source_$(ARCH)_$(FEATURESET)
+install-headers_$(ARCH)_$(FEATURESET): DIR = debian/$(PACKAGE_NAME)/$(BASE_DIR)
+install-headers_$(ARCH)_$(FEATURESET): $(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET)
+	dh_testdir
+	dh_testroot
+	dh_prep
+
+	cd $(SOURCE_DIR); \
+	( \
+	  echo Makefile; \
+	  find arch/$(KERNEL_ARCH) -maxdepth 1 -name 'Makefile*' -print; \
+	  find arch/$(KERNEL_ARCH) -name 'module.lds' -print; \
+	  find $$(find arch/$(KERNEL_ARCH) -name include -type d -print) -print; \
+	  find include -name 'asm*' -prune -o -print; \
+	  find include/asm-generic -print; \
+	) \
+	| \
+	cpio -pd --preserve-modification-time '$(CURDIR)/$(DIR)'
+
+	ln -s ../$(PACKAGE_NAME_KBUILD)/{Kbuild,scripts} $(DIR)
+
+	+$(MAKE_SELF) install-base
+
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): REAL_VERSION = $(UPSTREAMVERSION)$(ABINAME)$(LOCALVERSION)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME = linux-headers-$(REAL_VERSION)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME_COMMON = linux-headers-$(UPSTREAMVERSION)$(ABINAME)-common$(LOCALVERSION_HEADERS)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME_KBUILD = linux-kbuild-$(VERSION)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): BASE_DIR = /usr/src/$(PACKAGE_NAME)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): BASE_DIR_COMMON = /usr/src/$(PACKAGE_NAME_COMMON)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): SOURCE_DIR = $(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): REF_DIR = $(BUILD_DIR)/source_$(ARCH)_$(FEATURESET)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_DIR = debian/$(PACKAGE_NAME)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DIR = $(PACKAGE_DIR)/$(BASE_DIR)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
+	dh_testdir
+	dh_testroot
+	dh_prep
+
+	mkdir -p $(DIR)/arch/$(KERNEL_ARCH)/kernel
+	cp -a $(SOURCE_DIR)/{.config,.kernel*,Module.symvers,include} $(DIR)
+	cp -a $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/kernel/asm-offsets.s $(DIR)/arch/$(KERNEL_ARCH)/kernel
+
+ifeq ($(ARCH),powerpc)
+	if [ -f $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/lib/crtsavres.o ]; then \
+		mkdir $(DIR)/arch/$(KERNEL_ARCH)/lib; \
+		cp -a $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/lib/crtsavres.o $(DIR)/arch/$(KERNEL_ARCH)/lib; \
+	fi
+endif
+
+	@echo 'VERSION = 2' > $(DIR)/Makefile
+	@echo 'PATCHLEVEL = 6' >> $(DIR)/Makefile
+
+	@echo 'MAKEARGS := -C $(BASE_DIR_COMMON) O=$(BASE_DIR)' >> $(DIR)/Makefile
+	@echo 'MAKEFLAGS += --no-print-directory' >> $(DIR)/Makefile
+
+	@echo '.PHONY: all $$(MAKECMDGOALS)' >> $(DIR)/Makefile
+	@echo 'cmd := $$(filter-out all Makefile,$$(MAKECMDGOALS))' >> $(DIR)/Makefile
+	@echo 'all:' >> $(DIR)/Makefile
+	@echo '	@$$(MAKE) $$(MAKEARGS) $$(cmd)' >> $(DIR)/Makefile
+	@echo 'Makefile:;' >> $(DIR)/Makefile
+	@echo '$$(cmd) %/: all' >> $(DIR)/Makefile
+	@echo '	@:' >> $(DIR)/Makefile
+
+	ln -s ../$(PACKAGE_NAME_KBUILD)/scripts $(DIR)
+
+	mkdir -p $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)
+	ln -s /usr/src/$(PACKAGE_NAME) $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/build
+	ln -s /usr/src/$(PACKAGE_NAME_COMMON) $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/source
+
+	+$(MAKE_SELF) install-base
+
+install-libc-dev_$(ARCH): PACKAGE_NAME = linux-libc-dev
+install-libc-dev_$(ARCH): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-libc-dev_$(ARCH): SOURCE_DIR = $(BUILD_DIR)/source
+install-libc-dev_$(ARCH): DIR = $(BUILD_DIR)/build-libc-dev
+install-libc-dev_$(ARCH): OUT_DIR = debian/$(PACKAGE_NAME)/usr
+install-libc-dev_$(ARCH):
+	dh_testdir
+	dh_testroot
+	dh_prep
+	rm -rf '$(DIR)'
+	mkdir $(DIR)
+	+$(MAKE_CLEAN) -C $(SOURCE_DIR) O='$(CURDIR)/$(DIR)' headers_check ARCH=$(LIBC_DEV_ARCH)
+	+$(MAKE_CLEAN) -C $(SOURCE_DIR) O='$(CURDIR)/$(DIR)' headers_install ARCH=$(LIBC_DEV_ARCH) INSTALL_HDR_PATH='$(CURDIR)'/$(OUT_DIR)
+	+$(MAKE_SELF) install-base
+
+install-support: PACKAGE_NAME = linux-support-$(UPSTREAMVERSION)$(ABINAME)
+install-support: DH_OPTIONS = -p$(PACKAGE_NAME)
+install-support: PACKAGE_DIR = debian/$(PACKAGE_NAME)
+install-support: PACKAGE_ROOT = /usr/src/$(PACKAGE_NAME)
+install-support:
+	dh_testdir
+	dh_testroot
+	dh_prep
+	dh_installdirs $(PACKAGE_ROOT)/lib/python/debian_linux $(PACKAGE_ROOT)/modules
+	cp debian/config.defines.dump $(PACKAGE_DIR)$(PACKAGE_ROOT)
+	cp debian/lib/python/debian_linux/*.py $(PACKAGE_DIR)$(PACKAGE_ROOT)/lib/python/debian_linux
+	cp debian/modules/* $(PACKAGE_DIR)$(PACKAGE_ROOT)/modules
+	chmod a+x $(PACKAGE_DIR)$(PACKAGE_ROOT)/modules/gencontrol.py
+	dh_pycentral /usr/src/$(PACKAGE_NAME)/lib/python
+	+$(MAKE_SELF) install-base
+
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): REAL_VERSION = $(UPSTREAMVERSION)$(ABINAME)$(LOCALVERSION)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): PACKAGE_NAME = linux-image-$(REAL_VERSION)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): PACKAGE_DIR = debian/$(PACKAGE_NAME)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): INSTALL_DIR = $(PACKAGE_DIR)/boot
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): DIR = $(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
+
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain:
+	dh_testdir
+	dh_testroot
+	dh_prep
+	dh_installdirs 'boot'
+	+$(MAKE_SELF) \
+	  install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_image \
+	  DIR='$(DIR)' PACKAGE_DIR='$(PACKAGE_DIR)' INSTALL_DIR='$(INSTALL_DIR)' REAL_VERSION='$(REAL_VERSION)'
+ifeq ($(MODULES),True)
+	+$(MAKE_CLEAN) -C $(DIR) modules_install INSTALL_MOD_PATH='$(CURDIR)'/$(PACKAGE_DIR)
+	cp $(DIR)/.config $(PACKAGE_DIR)/boot/config-$(REAL_VERSION)
+	cp $(DIR)/System.map $(PACKAGE_DIR)/boot/System.map-$(REAL_VERSION)
+	rm $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/{build,source,modules.*}
+	# TODO: Move somewhere else
+	rm $(PACKAGE_DIR)/lib/firmware -rf
+endif
+	+$(MAKE_SELF) \
+	  install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_templates \
+	  PACKAGE_DIR='$(PACKAGE_DIR)' REAL_VERSION='$(REAL_VERSION)'
+	+$(MAKE_SELF) \
+	  install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_bug \
+	  PACKAGE_DIR='$(PACKAGE_DIR)' PACKAGE_NAME='$(PACKAGE_NAME)' REAL_VERSION='$(REAL_VERSION)'
+	+$(MAKE_SELF) install-base
+
+install-image_arm_$(FEATURESET)_$(FLAVOUR)_plain_image \
+install-image_armel_$(FEATURESET)_$(FLAVOUR)_plain_image \
+install-image_sparc_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/arch/$(KERNEL_ARCH)/boot/zImage' $(INSTALL_DIR)/vmlinuz-$(REAL_VERSION)
+
+install-image_amd64_$(FEATURESET)_$(FLAVOUR)_plain_image \
+install-image_i386_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/arch/$(KERNEL_ARCH)/boot/bzImage' $(INSTALL_DIR)/vmlinuz-$(REAL_VERSION)
+
+install-image_alpha_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/arch/$(KERNEL_ARCH)/boot/vmlinux.gz' $(INSTALL_DIR)/vmlinuz-$(REAL_VERSION)
+
+install-image_ia64_$(FEATURESET)_$(FLAVOUR)_plain_image \
+install-image_m68k_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/vmlinux.gz' $(INSTALL_DIR)/vmlinuz-$(REAL_VERSION)
+
+install-image_hppa_$(FEATURESET)_$(FLAVOUR)_plain_image \
+install-image_mips_$(FEATURESET)_$(FLAVOUR)_plain_image \
+install-image_mipsel_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/vmlinux' $(INSTALL_DIR)/vmlinux-$(REAL_VERSION)
+
+install-image_powerpc_$(FEATURESET)_$(FLAVOUR)_plain_image: WRAPPER_INSTALL_DIR = '$(CURDIR)'/$(PACKAGE_DIR)/usr/lib/linux-image-$(REAL_VERSION)
+install-image_powerpc_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/vmlinux' $(INSTALL_DIR)/vmlinux-$(REAL_VERSION)
+	+$(MAKE_CLEAN) -C '$(DIR)' bootwrapper_install \
+	  WRAPPER_OBJDIR='$(WRAPPER_INSTALL_DIR)' \
+	  WRAPPER_DTSDIR='$(WRAPPER_INSTALL_DIR)'/dts \
+	  WRAPPER_BINDIR='$(WRAPPER_INSTALL_DIR)'
+
+install-image_s390_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/arch/s390/boot/image' $(INSTALL_DIR)/vmlinuz-$(REAL_VERSION)
+
+ifneq ($(INITRAMFS),False)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_templates: ARG_INITRD = YES
+endif
+
+install-image_hppa_$(FEATURESET)_$(FLAVOUR)_plain_templates \
+install-image_mips_$(FEATURESET)_$(FLAVOUR)_plain_templates \
+install-image_mipsel_$(FEATURESET)_$(FLAVOUR)_plain_templates \
+install-image_powerpc_$(FEATURESET)_$(FLAVOUR)_plain_templates: ARG_KIMAGE = vmlinux
+
+install-image_mips_$(FEATURESET)_r4k-ip22_plain_templates: ARG_BOOTLOADER = arcboot
+install-image_mips_$(FEATURESET)_r5k-ip32_plain_templates: ARG_BOOTLOADER = arcboot
+install-image_s390_$(FEATURESET)_$(FLAVOUR)_plain_templates: ARG_BOOTLOADER = zipl
+
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_templates:
+	install -d $(PACKAGE_DIR)/DEBIAN
+	for i in $(wildcard debian/templates/temp.image.plain/*); do \
+	  sed \
+	    -e 's,=D,/boot,g' \
+	    -e 's/=OF/YES/g' \
+	    -e 's/=ST/linux/g' \
+	    -e 's@=A@$(DEB_HOST_ARCH)@g' \
+	    -e 's@=B@$(KERNEL_ARCH)@g' \
+	    -e 's/=IB//g' \
+	    -e 's/=I/$(ARG_INITRD)/g' \
+	    -e 's/=K/$(ARG_KIMAGE)/g' \
+	    -e 's/=L/$(ARG_BOOTLOADER)/g' \
+	    -e 's@=MK@$(INITRD_CMD)@g' \
+	    -e 's/=V/$(REAL_VERSION)/g' \
+	    -e 's/=M//g' \
+	    -e 's/=MD//g' \
+	    -e 's/=R//g' \
+	    -e 's/=S//g' \
+	    $$i > $(PACKAGE_DIR)/DEBIAN/$$(basename $$i); \
+	done
+	chmod 755 $(PACKAGE_DIR)/DEBIAN/{config,{pre,post}*}
+	chmod 644 $(PACKAGE_DIR)/DEBIAN/templates
+
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_bug:
+	dh_installdirs usr/share/bug/$(PACKAGE_NAME)
+	dh_install debian/templates/image.plain.bug/* usr/share/bug/$(PACKAGE_NAME)
+	chmod 755 $(PACKAGE_DIR)/usr/share/bug/$(PACKAGE_NAME)/script
+	echo "RELEASE='$(REAL_VERSION)'" > $(PACKAGE_DIR)/usr/share/bug/$(PACKAGE_NAME)/info
+
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-s390-tape:
+	dh_testdir
+	dh_testroot
+	dh_prep
+	dh_installdirs 'boot'
+	install -m644 '$(DIR)/arch/s390/boot/image' $(PACKAGE_DIR)/boot/vmlinuz-$(REAL_VERSION)
+	+$(MAKE_SELF) install-base
+
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-xen: MODULES_PACKAGE_NAME = linux-modules-$(REAL_VERSION)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-xen: MODULES_PACKAGE_DIR = debian/$(MODULES_PACKAGE_NAME)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-xen: DH_OPTIONS =
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-xen:
+	dh_testdir
+	dh_testroot
+	dh_prep
+	dh_installdirs -p$(PACKAGE_NAME) boot 'var/lib/$(PACKAGE_NAME)'
+	dh_installdirs -p$(MODULES_PACKAGE_NAME) boot
+	cp '$(DIR)'/arch/$(KERNEL_ARCH)/boot/vmlinuz $(INSTALL_DIR)/vmlinuz-$(REAL_VERSION)
+	+$(MAKE_CLEAN) -C $(DIR) modules_install INSTALL_MOD_PATH='$(CURDIR)'/$(MODULES_PACKAGE_DIR)
+	cp $(DIR)/.config $(MODULES_PACKAGE_DIR)/boot/config-$(REAL_VERSION)
+	cp $(DIR)/System.map $(MODULES_PACKAGE_DIR)/boot/System.map-$(REAL_VERSION)
+	rm $(MODULES_PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/{build,source}
+	dh_installmodules -p$(MODULES_PACKAGE_NAME)
+	for i in $(XEN_VERSIONS); do echo $$i; done > $(PACKAGE_DIR)/var/lib/$(PACKAGE_NAME)/xen-versions
+	install -d $(PACKAGE_DIR)/DEBIAN
+	echo /var/lib/$(PACKAGE_NAME)/xen-versions >> $(PACKAGE_DIR)/DEBIAN/conffiles
+	+$(MAKE_SELF) install-base DH_OPTIONS='-p$(PACKAGE_NAME) -p$(MODULES_PACKAGE_NAME)'
+
+install-patch: PACKAGE = linux-patch-debian-$(VERSION)
+install-patch: pbase := /usr/src/kernel-patches/all/$(UPSTREAMVERSION)
+install-patch: pfull := debian/$(PACKAGE)$(pbase)
+install-patch: DH_OPTIONS = -p$(PACKAGE)
+install-patch:
+	dh_testdir
+	dh_testroot
+	dh_prep
+	dh_installdirs $(DH_OPTIONS) '$(pbase)/apply' '$(pbase)/debian' '$(pbase)/unpatch'
+	dh_install $(DH_OPTIONS) debian/patches/* '$(pbase)/debian'
+	install debian/bin/patch.apply '$(pfull)/apply/debian'
+	install debian/templates/patch.unpatch '$(pfull)/unpatch/debian'
+	find '$(pfull)/debian' ! -path '*/series/*' -type f -execdir bzip2 '{}' ';' -execdir chmod 644 '{}.bz2' ';'
+	+$(MAKE_SELF) install-base DH_OPTIONS='$(DH_OPTIONS)'
+
+install-source: DH_OPTIONS = -plinux-source-$(VERSION)
+install-source: $(BUILD_DIR)/linux-source-$(UPSTREAMVERSION).tar.bz2
+	dh_testdir
+	dh_testroot
+	dh_install $(DH_OPTIONS) '$<' /usr/src
+	+$(MAKE_SELF) install-base DH_OPTIONS='$(DH_OPTIONS)'
+
+install-tree: DH_OPTIONS = -plinux-tree-$(VERSION)
+install-tree:
+	+$(MAKE_SELF) install-dummy DH_OPTIONS='$(DH_OPTIONS)'
+
+# vim: filetype=make
--- linux-2.6-2.6.30.orig/debian/control.md5sum
+++ linux-2.6-2.6.30/debian/control.md5sum
@@ -0,0 +1,48 @@
+f2fa5341cb2e385d57218910c9b0ce6b  debian/bin/gencontrol.py
+fcd79f2a35590c2632de6bdfc290c492  debian/changelog
+a7fce16056bed535af9419ca4ff700f8  debian/templates/control.headers.arch.in
+4360172797de60fea4681d641a46e139  debian/templates/control.headers.featureset.in
+05f7ae2c60c6c50068834f68f13cdd0f  debian/templates/control.headers.in
+572906e923931f527d10b1ecfbf3838a  debian/templates/control.image.type-kernel-package.in
+93c09af20b70d8cf678b8601fb6a1ac5  debian/templates/control.image.type-modulesextra.in
+d075b0117c76a9de00dc052cb36601bb  debian/templates/control.image.type-modulesinline.in
+e8830773f0867cfc02b682b2ca6dfd4e  debian/templates/control.image.type-plain.in
+231980b29e6728acc6935a587d88e499  debian/templates/control.image.type-standalone.in
+c68b53c933e7e2e21b1afd04f021b80a  debian/templates/control.libc-dev.in
+82c1ffacac5e1554c454704f2fd96f89  debian/templates/control.main.in
+28b0448d88a5c3c4bea186e4379dbf21  debian/templates/control.source.in
+72fb03e6b8fafe549e81566a32a6bab3  debian/templates/control.support.in
+69f468874158eb86df66d4d7ae9136ef  debian/templates/control.tree.in
+5082a9458b2b6830085ddf5a0e271613  debian/templates/control.xen-linux-system.in
+e78ef4f93e1efb9c4d89b6367d9c3a30  debian/templates/image.xen.postinst.in
+1cb81b60bfe6b79fd6613ae102fe7217  debian/templates/image.xen.postrm.in
+3ad85bca8ade992de90953d5c846c9e9  debian/templates/image.xen.prerm.in
+24489dcda33a5a959cf8c6c43815aac1  debian/templates/patch.apply.in
+11d86300d186c44feb80d9be2ab94f64  debian/config/defines
+cd26f6e430e31fce8183894c9d673958  debian/config/alpha/defines
+05bf39e2727268351c809949086a9752  debian/config/amd64/defines
+0e4a6d51d8a847fb2b8682916477f1e1  debian/config/arm/defines
+04e92b1e30614ca9a1d0b8fd52aa7436  debian/config/armel/defines
+b3dfb56c9c8544283d8fcecab0f053f3  debian/config/featureset-openvz/defines
+e2d04fbf4973469d23610c1b6d0f67c1  debian/config/featureset-vserver/defines
+b4af04ce6a5ad1b7dfb3698e0a31d82f  debian/config/featureset-xen/defines
+199a78b7b2d9d65813879beb97a36616  debian/config/hppa/defines
+6ce2cb210ae8fa10aa9d638bf4cb459c  debian/config/i386/defines
+bf71896bbbb9171286dba77c3c90be3f  debian/config/ia64/defines
+87dfb28524776eccd4ff996c0525c24a  debian/config/m68k/defines
+1eed1d85f14a62f2a19fca5252cc4499  debian/config/mips/defines
+cd8f707f723b3867373717102bbbd1c3  debian/config/mipsel/defines
+f1cbac7a7516b392bb700adb56fd34fe  debian/config/powerpc/defines
+8e5342ce2cf935c00d0063a523fbbe8c  debian/config/s390/defines
+2ac7b5be2e4c8669a8cc219f45af5297  debian/config/sparc/defines
+610d1efc57fd488bf79930a8eb2e4b47  debian/config/alpha/vserver/defines
+46721fa264c40a0daa399e47fa9d30e5  debian/config/amd64/openvz/defines
+46721fa264c40a0daa399e47fa9d30e5  debian/config/amd64/vserver/defines
+626d9265630dc8a696dff917d24528bf  debian/config/amd64/xen/defines
+9ce63dd692a451939f7c3dedb0da6ad3  debian/config/i386/openvz/defines
+016170a8674efb47a71f8a4e539affc2  debian/config/i386/vserver/defines
+ec5ad864eb6219807aed5892fccb1e04  debian/config/i386/xen/defines
+ce862f2fd6224847ead1860fe13c0034  debian/config/ia64/vserver/defines
+b101542c5fee8434db513161755e1baf  debian/config/powerpc/vserver/defines
+209b62be5394ff27d63a9fbc6fd90f76  debian/config/s390/vserver/defines
+2a3c4734b82c742bf215d809d8cbc0fe  debian/config/sparc/vserver/defines
--- linux-2.6-2.6.30.orig/debian/copyright
+++ linux-2.6-2.6.30/debian/copyright
@@ -0,0 +1,48 @@
+This is the Debian GNU/Linux prepackaged version of the Linux kernel.
+
+It was downloaded from http://ftp.kernel.org/pub/linux/kernel/.
+
+Copyright:
+
+   Copyright (C) 1991-2009 Linus Torwalds
+   and many others
+
+License:
+
+   This package is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
+
+   This package is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this package; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+
+On Debian systems, the complete text of the GNU General Public License version
+2 can be found in `/usr/share/common-licenses/GPL-2'.
+
+License for the Xen interface headers:
+
+   Permission is hereby granted, free of charge, to any person obtaining a copy
+   of this software and associated documentation files (the "Software"), to
+   deal in the Software without restriction, including without limitation the
+   rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+   sell copies of the Software, and to permit persons to whom the Software is
+   furnished to do so, subject to the following conditions:
+
+   The above copyright notice and this permission notice shall be included in
+   all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+The Debian packaging is licensed under the GPL, see above.
--- linux-2.6-2.6.30.orig/debian/README.Debian
+++ linux-2.6-2.6.30/debian/README.Debian
@@ -0,0 +1,55 @@
+linux-2.6 for DEBIAN
+------------------------
+
+Patches
+-------
+Debian applies small changes to the kernel source. These are split up into
+separated patches addressing individual problems. Each of the patch files
+contains a description and mentions the author. The patches can be found
+at http://svn.debian.org/wsvn/kernel/dists/trunk/linux-2.6/debian/patches/.
+
+Config Files
+------------
+The .config files used to build the various linux-image files are dynamically
+generated during the linux-2.6 package build.  See the source package for
+details.  Each linux-image-* package provides the complete .config file that
+was used to generate it.  This file is installed in /boot.
+
+Scope of security support
+-------------------------
+Security support is provided not only for the binary builds, but also
+for the full source package, allowing for locally customized kernels.
+However, kernel options that are not enabled in official Debian builds are
+given a lower priority for security support. Options marked as BROKEN
+or EXPERIMENTAL are of very low priority, and should not be enabled in
+customized builds for a security-sensitive environment.
+
+Rebuilding Adaptec AIC7xxx/79xx firmware
+----------------------------------------
+You can rebuild the firmware for the Adaptec AIC7xxx/79xx SCSI Adapters. To
+do so you need to set AIC7XXX_BUILD_FIRMWARE/AIC79XX_BUILD_FIRMWARE config
+options.  Note that this requires to have the development packages for
+berkelydb (libdb4.2-dev) installed.
+
+PS/2 Mice
+---------
+If your PS/2 mouse does not work, make sure that the modules psmouse and
+mousedev are loaded.
+
+Non-free bits removed
+---------------------
+* Keyspan firmware, driver disabled
+  . drivers/usb/serial/ksyspan_{mpr,usa*}_fw.h
+* Emagic EMI 2|6 usb audio interface firmware loader
+  . drivers/usb/misc/emi62_fw_*.h
+
+Firmware removed
+----------------
+* SMC Token Ring firmware, driver disabled:
+  . drivers/net/tokenring/smctr_firmware.h
+* ACENIC firwmare, driver disabled:
+  . drivers/net/acenic_firmware.h
+* DGRS firmware, driver disabled:
+  . drivers/net/dgrs_firmware.c
+* DAB firmware, driver disabled:
+  . drivers/usb/media/dabfirmware.h
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/fix-hifn_795X-divdi3.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/fix-hifn_795X-divdi3.patch
@@ -0,0 +1,54 @@
+On Tue, Feb 26, 2008 at 01:21:00PM +0100, Martin Michlmayr wrote:
+> With 2.6.25-rc3 and a config file with
+> 
+> CONFIG_CRYPTO_DEV_HIFN_795X=m
+> CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+> 
+> I get the following build error on at least ARM and MIPS:
+> 
+>   Building modules, stage 2.
+>   MODPOST 759 modules
+> ERROR: "__divdi3" [drivers/crypto/hifn_795x.ko] undefined!
+
+Fix below.
+
+> Martin Michlmayr
+
+cu
+Adrian
+
+
+<--  snip  -->
+
+
+Using ndelay() with a 64bit variable as parameter can result in build 
+errors like the following on some 32bit systems when it results in a 
+64bit division:
+
+<--  snip  -->
+
+ ...
+  MODPOST 759 modules
+ERROR: "__divdi3" [drivers/crypto/hifn_795x.ko] undefined!
+
+<--  snip  -->
+
+Reported by Martin Michlmayr.
+
+Signed-off-by: Adrian Bunk <bunk@kernel.org>
+
+---
+
+40b45041ddc587c20b872a86a6a36952c28b02c7 diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c
+index 3110bf7..b1541c6 100644
+--- a/drivers/crypto/hifn_795x.c
++++ b/drivers/crypto/hifn_795x.c
+@@ -807,7 +807,7 @@ static int hifn_rng_data_present(struct hwrng *rng, int wait)
+ 		return 1;
+ 	if (!wait)
+ 		return 0;
+-	ndelay(nsec);
++	ndelay((u32)nsec);
+ 	return 1;
+ }
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/parisc/ensure-broadcast-tlb-purge-runs-single-threaded.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/parisc/ensure-broadcast-tlb-purge-runs-single-threaded.patch
@@ -0,0 +1,164 @@
+commit e82a3b75127188f20c7780bec580e148beb29da7
+Author: Helge Deller <deller@gmx.de>
+Date:   Tue Jun 16 20:51:48 2009 +0000
+
+    parisc: ensure broadcast tlb purge runs single threaded
+    
+    The TLB flushing functions on hppa, which causes PxTLB broadcasts on the system
+    bus, needs to be protected by irq-safe spinlocks to avoid irq handlers to deadlock
+    the kernel. The deadlocks only happened during I/O intensive loads and triggered
+    pretty seldom, which is why this bug went so long unnoticed.
+    
+    Signed-off-by: Helge Deller <deller@gmx.de>
+    [edited to use spin_lock_irqsave on UP as well since we'd been locking there
+     all this time anyway, --kyle]
+    Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
+
+diff --git a/arch/parisc/include/asm/tlbflush.h b/arch/parisc/include/asm/tlbflush.h
+index 1f6fd4f..8f1a810 100644
+--- a/arch/parisc/include/asm/tlbflush.h
++++ b/arch/parisc/include/asm/tlbflush.h
+@@ -12,14 +12,12 @@
+  * N class systems, only one PxTLB inter processor broadcast can be
+  * active at any one time on the Merced bus.  This tlb purge
+  * synchronisation is fairly lightweight and harmless so we activate
+- * it on all SMP systems not just the N class.  We also need to have
+- * preemption disabled on uniprocessor machines, and spin_lock does that
+- * nicely.
++ * it on all systems not just the N class.
+  */
+ extern spinlock_t pa_tlb_lock;
+ 
+-#define purge_tlb_start(x) spin_lock(&pa_tlb_lock)
+-#define purge_tlb_end(x) spin_unlock(&pa_tlb_lock)
++#define purge_tlb_start(flags)	spin_lock_irqsave(&pa_tlb_lock, flags)
++#define purge_tlb_end(flags)	spin_unlock_irqrestore(&pa_tlb_lock, flags)
+ 
+ extern void flush_tlb_all(void);
+ extern void flush_tlb_all_local(void *);
+@@ -63,14 +61,16 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
+ static inline void flush_tlb_page(struct vm_area_struct *vma,
+ 	unsigned long addr)
+ {
++	unsigned long flags;
++
+ 	/* For one page, it's not worth testing the split_tlb variable */
+ 
+ 	mb();
+ 	mtsp(vma->vm_mm->context,1);
+-	purge_tlb_start();
++	purge_tlb_start(flags);
+ 	pdtlb(addr);
+ 	pitlb(addr);
+-	purge_tlb_end();
++	purge_tlb_end(flags);
+ }
+ 
+ void __flush_tlb_range(unsigned long sid,
+diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
+index f34082d..b6ed34d 100644
+--- a/arch/parisc/kernel/cache.c
++++ b/arch/parisc/kernel/cache.c
+@@ -397,12 +397,13 @@ EXPORT_SYMBOL(flush_kernel_icache_range_asm);
+ 
+ void clear_user_page_asm(void *page, unsigned long vaddr)
+ {
++	unsigned long flags;
+ 	/* This function is implemented in assembly in pacache.S */
+ 	extern void __clear_user_page_asm(void *page, unsigned long vaddr);
+ 
+-	purge_tlb_start();
++	purge_tlb_start(flags);
+ 	__clear_user_page_asm(page, vaddr);
+-	purge_tlb_end();
++	purge_tlb_end(flags);
+ }
+ 
+ #define FLUSH_THRESHOLD 0x80000 /* 0.5MB */
+@@ -443,20 +444,24 @@ extern void clear_user_page_asm(void *page, unsigned long vaddr);
+ 
+ void clear_user_page(void *page, unsigned long vaddr, struct page *pg)
+ {
++	unsigned long flags;
++
+ 	purge_kernel_dcache_page((unsigned long)page);
+-	purge_tlb_start();
++	purge_tlb_start(flags);
+ 	pdtlb_kernel(page);
+-	purge_tlb_end();
++	purge_tlb_end(flags);
+ 	clear_user_page_asm(page, vaddr);
+ }
+ EXPORT_SYMBOL(clear_user_page);
+ 
+ void flush_kernel_dcache_page_addr(void *addr)
+ {
++	unsigned long flags;
++
+ 	flush_kernel_dcache_page_asm(addr);
+-	purge_tlb_start();
++	purge_tlb_start(flags);
+ 	pdtlb_kernel(addr);
+-	purge_tlb_end();
++	purge_tlb_end(flags);
+ }
+ EXPORT_SYMBOL(flush_kernel_dcache_page_addr);
+ 
+@@ -489,8 +494,10 @@ void __flush_tlb_range(unsigned long sid, unsigned long start,
+ 	if (npages >= 512)  /* 2MB of space: arbitrary, should be tuned */
+ 		flush_tlb_all();
+ 	else {
++		unsigned long flags;
++
+ 		mtsp(sid, 1);
+-		purge_tlb_start();
++		purge_tlb_start(flags);
+ 		if (split_tlb) {
+ 			while (npages--) {
+ 				pdtlb(start);
+@@ -503,7 +510,7 @@ void __flush_tlb_range(unsigned long sid, unsigned long start,
+ 				start += PAGE_SIZE;
+ 			}
+ 		}
+-		purge_tlb_end();
++		purge_tlb_end(flags);
+ 	}
+ }
+ 
+diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c
+index 7d927ea..c07f618 100644
+--- a/arch/parisc/kernel/pci-dma.c
++++ b/arch/parisc/kernel/pci-dma.c
+@@ -90,12 +90,14 @@ static inline int map_pte_uncached(pte_t * pte,
+ 	if (end > PMD_SIZE)
+ 		end = PMD_SIZE;
+ 	do {
++		unsigned long flags;
++
+ 		if (!pte_none(*pte))
+ 			printk(KERN_ERR "map_pte_uncached: page already exists\n");
+ 		set_pte(pte, __mk_pte(*paddr_ptr, PAGE_KERNEL_UNC));
+-		purge_tlb_start();
++		purge_tlb_start(flags);
+ 		pdtlb_kernel(orig_vaddr);
+-		purge_tlb_end();
++		purge_tlb_end(flags);
+ 		vaddr += PAGE_SIZE;
+ 		orig_vaddr += PAGE_SIZE;
+ 		(*paddr_ptr) += PAGE_SIZE;
+@@ -168,11 +170,13 @@ static inline void unmap_uncached_pte(pmd_t * pmd, unsigned long vaddr,
+ 	if (end > PMD_SIZE)
+ 		end = PMD_SIZE;
+ 	do {
++		unsigned long flags;
+ 		pte_t page = *pte;
++
+ 		pte_clear(&init_mm, vaddr, pte);
+-		purge_tlb_start();
++		purge_tlb_start(flags);
+ 		pdtlb_kernel(orig_vaddr);
+-		purge_tlb_end();
++		purge_tlb_end(flags);
+ 		vaddr += PAGE_SIZE;
+ 		orig_vaddr += PAGE_SIZE;
+ 		pte++;
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/parisc/fix-ldcw-inline-assembler.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/parisc/fix-ldcw-inline-assembler.patch
@@ -0,0 +1,38 @@
+commit 7d17e2763129ea307702fcdc91f6e9d114b65c2d
+Author: Helge Deller <deller@gmx.de>
+Date:   Thu Apr 30 21:39:45 2009 +0000
+
+    parisc: fix ldcw inline assembler
+    
+    There are two reasons to expose the memory *a in the asm:
+    
+    1) To prevent the compiler from discarding a preceeding write to *a, and
+    2) to prevent it from caching *a in a register over the asm.
+    
+    The change has had a few days testing with a SMP build of 2.6.22.19
+    running on a rp3440.
+    
+    This patch is about the correctness of the __ldcw() macro itself.
+    The use of the macro should be confined to small inline functions
+    to try to limit the effect of clobbering memory on GCC's optimization
+    of loads and stores.
+    
+    Signed-off-by: Dave Anglin <dave.anglin@nrc-cnrc.gc.ca>
+    Signed-off-by: Helge Deller <deller@gmx.de>
+    Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
+
+diff --git a/arch/parisc/include/asm/system.h b/arch/parisc/include/asm/system.h
+index ee80c92..d91357b 100644
+--- a/arch/parisc/include/asm/system.h
++++ b/arch/parisc/include/asm/system.h
+@@ -168,8 +168,8 @@ static inline void set_eiem(unsigned long val)
+ /* LDCW, the only atomic read-write operation PA-RISC has. *sigh*.  */
+ #define __ldcw(a) ({						\
+ 	unsigned __ret;						\
+-	__asm__ __volatile__(__LDCW " 0(%1),%0"			\
+-		: "=r" (__ret) : "r" (a));			\
++	__asm__ __volatile__(__LDCW " 0(%2),%0"			\
++		: "=r" (__ret), "+m" (*(a)) : "r" (a));		\
+ 	__ret;							\
+ })
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/parisc/isa-eeprom-fix-loff_t-usage.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/parisc/isa-eeprom-fix-loff_t-usage.patch
@@ -0,0 +1,28 @@
+commit 6b4dbcd86a9d464057fcc7abe4d0574093071fcc
+Author: Michael Buesch <mb@bu3sch.de>
+Date:   Mon Jul 20 22:58:44 2009 +0000
+
+    parisc: isa-eeprom - Fix loff_t usage
+    
+    loff_t is a signed type. If userspace passes a negative ppos, the "count"
+    range check is weakened. "count"s bigger than HPEE_MAX_LENGTH will pass the check.
+    Also, if ppos is negative, the readb(eisa_eeprom_addr + *ppos) will poke in random
+    memory.
+    
+    Signed-off-by: Michael Buesch <mb@bu3sch.de>
+    Cc: stable@kernel.org
+    Signed-off-by: Helge Deller <deller@gmx.de>
+
+diff --git a/drivers/parisc/eisa_eeprom.c b/drivers/parisc/eisa_eeprom.c
+index 685d94e..8c0b26e 100644
+--- a/drivers/parisc/eisa_eeprom.c
++++ b/drivers/parisc/eisa_eeprom.c
+@@ -55,7 +55,7 @@ static ssize_t eisa_eeprom_read(struct file * file,
+ 	ssize_t ret;
+ 	int i;
+ 	
+-	if (*ppos >= HPEE_MAX_LENGTH)
++	if (*ppos < 0 || *ppos >= HPEE_MAX_LENGTH)
+ 		return 0;
+ 	
+ 	count = *ppos + count < HPEE_MAX_LENGTH ? count : HPEE_MAX_LENGTH - *ppos;
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/mips/ip22-no-early-printk.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/mips/ip22-no-early-printk.patch
@@ -0,0 +1,22 @@
+Subject: Turn off EARLY_PRINTK on IP22 to make the system boot
+
+Thomas Bogendoerfer: current kernels are not working on that machine
+due to some bad interaction between CONFIG_EARLY_PRINTK and
+overwritten prom memory during early boot (this bug is on my
+todo list.
+
+In the meantime, turn off CONFIG_EARLY_PRINTK on IP22.
+
+Debian bug #507557
+
+--- a/arch/mips/Kconfig	2009-09-22 09:22:46.000000000 +0000
++++ b/arch/mips/Kconfig	2009-09-22 09:22:59.000000000 +0000
+@@ -336,7 +336,6 @@
+ 	select SWAP_IO_SPACE
+ 	select SYS_HAS_CPU_R4X00
+ 	select SYS_HAS_CPU_R5000
+-	select SYS_HAS_EARLY_PRINTK
+ 	select SYS_SUPPORTS_32BIT_KERNEL
+ 	select SYS_SUPPORTS_64BIT_KERNEL
+ 	select SYS_SUPPORTS_BIG_ENDIAN
+
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/mips/fix-ndelay-build-error.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/mips/fix-ndelay-build-error.patch
@@ -0,0 +1,33 @@
+From: Atsushi Nemoto <nemoto@toshiba-tops.co.jp>
+Date: Tue, 9 Jun 2009 02:12:48 +0000 (+0900)
+Subject: MIPS: Fix __ndelay build error and add 'ull' suffix for 32-bit kernel
+X-Git-Tag: linux-2.6.30~2
+X-Git-Url: http://www.linux-mips.org/git?p=linux.git;a=commitdiff_plain;h=60bd2aaf47ba20fd99901b8bcd2bebffe37b166d
+
+MIPS: Fix __ndelay build error and add 'ull' suffix for 32-bit kernel
+
+Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
+Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
+---
+
+diff --git a/arch/mips/lib/delay.c b/arch/mips/lib/delay.c
+index f69c6b5..6b3b1de 100644
+--- a/arch/mips/lib/delay.c
++++ b/arch/mips/lib/delay.c
+@@ -43,7 +43,7 @@ void __udelay(unsigned long us)
+ {
+ 	unsigned int lpj = current_cpu_data.udelay_val;
+ 
+-	__delay((us * 0x000010c7 * HZ * lpj) >> 32);
++	__delay((us * 0x000010c7ull * HZ * lpj) >> 32);
+ }
+ EXPORT_SYMBOL(__udelay);
+ 
+@@ -51,6 +51,6 @@ void __ndelay(unsigned long ns)
+ {
+ 	unsigned int lpj = current_cpu_data.udelay_val;
+ 
+-	__delay((us * 0x00000005 * HZ * lpj) >> 32);
++	__delay((ns * 0x00000005ull * HZ * lpj) >> 32);
+ }
+ EXPORT_SYMBOL(__ndelay);
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/mips/disable-werror.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/mips/disable-werror.patch
@@ -0,0 +1,15 @@
+
+workaround this bug:
+
+cc1: warnings being treated as errors
+arch/mips/kernel/../../../fs/binfmt_elf.c: In function ‘vma_dump_size’:
+arch/mips/kernel/../../../fs/binfmt_elf.c:1202: warning: ‘word’ may be used uninitialized in this function
+
+
+--- a/arch/mips/kernel/Makefile	2009-02-16 11:25:13.000000000 +0000
++++ b/arch/mips/kernel/Makefile	2009-02-16 11:25:23.000000000 +0000
+@@ -89,4 +89,3 @@
+ 
+ obj-$(CONFIG_HAVE_STD_PC_SERIAL_PORT)	+= 8250-platform.o
+ 
+-EXTRA_CFLAGS += -Werror
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/mips/disable-advansys.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/mips/disable-advansys.patch
@@ -0,0 +1,19 @@
+Florian Lohoff <flo@rfc822.org> reports the following build failure on IP32:
+
+  MODPOST 552 modules
+ERROR: "free_dma" [drivers/scsi/advansys.ko] undefined!
+make[5]: *** [__modpost] Error 1
+
+But report:
+http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg12773.html
+
+--- a/drivers/scsi/Kconfig	2007-12-27 19:16:18.000000000 +0000
++++ b/drivers/scsi/Kconfig	2007-12-27 19:16:58.000000000 +0000
+@@ -523,6 +523,7 @@
+ 	tristate "AdvanSys SCSI support"
+ 	depends on SCSI && VIRT_TO_BUS
+ 	depends on ISA || EISA || PCI
++	depends on (!MIPS && !ARM) || BROKEN
+ 	help
+ 	  This is a driver for all SCSI host adapters manufactured by
+ 	  AdvanSys. It is documented in the kernel source in
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/x86/arch-kernel-cpu-amd-pci-access.diff
+++ linux-2.6-2.6.30/debian/patches/bugfix/x86/arch-kernel-cpu-amd-pci-access.diff
@@ -0,0 +1,13 @@
+diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
+index d869b3b..61a592e 100644
+--- a/arch/x86/kernel/cpu/amd.c
++++ b/arch/x86/kernel/cpu/amd.c
+@@ -356,7 +356,7 @@ static void __cpuinit early_init_amd(struct cpuinfo_x86 *c)
+ #endif
+ #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_PCI)
+ 	/* check CPU config space for extended APIC ID */
+-	if (c->x86 >= 0xf) {
++	if (cpu_has_apic && c->x86 >= 0xf) {
+ 		unsigned int val;
+ 		val = read_pci_config(0, 24, 0, 0x68);
+ 		if ((val & ((1 << 17) | (1 << 18))) == ((1 << 17) | (1 << 18)))
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/x86/x86-pat-allow-isa-memory-uncacheable-mapping.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/x86/x86-pat-allow-isa-memory-uncacheable-mapping.patch
@@ -0,0 +1,85 @@
+From 1adcaafe7414c5731f758b158aa0525057225deb Mon Sep 17 00:00:00 2001
+From: Suresh Siddha <suresh.b.siddha@intel.com>
+Date: Mon, 17 Aug 2009 13:23:50 -0700
+Subject: [PATCH] x86, pat: Allow ISA memory range uncacheable mapping requests
+
+Max Vozeler reported:
+>  Bug 13877 -  bogl-term broken with CONFIG_X86_PAT=y, works with =n
+>
+>  strace of bogl-term:
+>  814   mmap2(NULL, 65536, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0)
+>				 = -1 EAGAIN (Resource temporarily unavailable)
+>  814   write(2, "bogl: mmaping /dev/fb0: Resource temporarily unavailable\n",
+>	       57) = 57
+
+PAT code maps the ISA memory range as WB in the PAT attribute, so that
+fixed range MTRR registers define the actual memory type (UC/WC/WT etc).
+
+But the upper level is_new_memtype_allowed() API checks are failing,
+as the request here is for UC and the return tracked type is WB (Tracked type is
+WB as MTRR type for this legacy range potentially will be different for each
+4k page).
+
+Fix is_new_memtype_allowed() by always succeeding the ISA address range
+checks, as the null PAT (WB) and def MTRR fixed range register settings
+satisfy the memory type needs of the applications that map the ISA address
+range.
+
+Reported-and-Tested-by: Max Vozeler <xam@debian.org>
+Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
+Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
+Signed-off-by: H. Peter Anvin <hpa@zytor.com>
+---
+ arch/x86/include/asm/pgtable.h |   12 ++++++++++--
+ arch/x86/mm/pat.c              |    3 ++-
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
+index 3cc06e3..1674807 100644
+--- a/arch/x86/include/asm/pgtable.h
++++ b/arch/x86/include/asm/pgtable.h
+@@ -2,6 +2,7 @@
+ #define _ASM_X86_PGTABLE_H
+ 
+ #include <asm/page.h>
++#include <asm/e820.h>
+ 
+ #include <asm/pgtable_types.h>
+ 
+@@ -269,10 +270,17 @@ static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
+ 
+ #define canon_pgprot(p) __pgprot(massage_pgprot(p))
+ 
+-static inline int is_new_memtype_allowed(unsigned long flags,
+-						unsigned long new_flags)
++static inline int is_new_memtype_allowed(u64 paddr, unsigned long size,
++					 unsigned long flags,
++					 unsigned long new_flags)
+ {
+ 	/*
++	 * PAT type is always WB for ISA. So no need to check.
++	 */
++	if (is_ISA_range(paddr, paddr + size - 1))
++		return 1;
++
++	/*
+ 	 * Certain new memtypes are not allowed with certain
+ 	 * requested memtype:
+ 	 * - request is uncached, return cannot be write-back
+diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
+index e6718bb..352aa9e 100644
+--- a/arch/x86/mm/pat.c
++++ b/arch/x86/mm/pat.c
+@@ -623,7 +623,8 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot,
+ 		return ret;
+ 
+ 	if (flags != want_flags) {
+-		if (strict_prot || !is_new_memtype_allowed(want_flags, flags)) {
++		if (strict_prot ||
++		    !is_new_memtype_allowed(paddr, size, want_flags, flags)) {
+ 			free_memtype(paddr, paddr + size);
+ 			printk(KERN_ERR "%s:%d map pfn expected mapping type %s"
+ 				" for %Lx-%Lx, got %s\n",
+-- 
+1.6.3.3
+
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/x86/fix-alternatives-on-486.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/x86/fix-alternatives-on-486.patch
@@ -0,0 +1,80 @@
+Subject: [PATCH v2] x86: Fix code patching for paravirt-alternatives on 486
+From: Ben Hutchings <ben@decadent.org.uk>
+To: x86@kernel.org
+Cc: "H. Peter Anvin" <hpa@zytor.com>, linux-kernel@vger.kernel.org
+Date: Thu, 10 Sep 2009 02:53:51 +0100
+
+As reported in <http://bugs.debian.org/511703> and
+<http://bugs.debian.org/515982>, kernels with paravirt-alternatives
+enabled crash in text_poke_early() on at least some 486-class
+processors.
+
+The problem is that text_poke_early() itself uses inline functions
+affected by paravirt-alternatives and so will modify instructions that
+have already been prefetched.  Pentium and later processors will
+invalidate the prefetched instructions in this case, but 486-class
+processors do not.
+
+Change sync_core() to limit prefetching on 486-class (and 386-class)
+processors, and move the call to sync_core() above the call to the
+modifiable local_irq_restore().
+
+Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+---
+Second try, incorporating the jmp into sync_core().
+
+Also not signed as I know git has trouble with MIME.
+
+Ben.
+
+ arch/x86/include/asm/processor.h |   16 +++++++++++++---
+ arch/x86/kernel/alternative.c    |    2 +-
+ 2 files changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
+index c776826..2db56c5 100644
+--- a/arch/x86/include/asm/processor.h
++++ b/arch/x86/include/asm/processor.h
+@@ -703,13 +703,23 @@ static inline void cpu_relax(void)
+ 	rep_nop();
+ }
+ 
+-/* Stop speculative execution: */
++/* Stop speculative execution and prefetching of modified code. */
+ static inline void sync_core(void)
+ {
+ 	int tmp;
+ 
+-	asm volatile("cpuid" : "=a" (tmp) : "0" (1)
+-		     : "ebx", "ecx", "edx", "memory");
++#if defined(CONFIG_M386) || defined(CONFIG_M486)
++	if (boot_cpu_data.x86 < 5)
++		/* There is no speculative execution.
++		 * jmp is a barrier to prefetching. */
++		asm volatile("jmp 1f\n1:\n" ::: "memory");
++	else
++#endif
++		/* cpuid is a barrier to speculative execution.
++		 * Prefetched instructions are automatically
++		 * invalidated when modified. */
++		asm volatile("cpuid" : "=a" (tmp) : "0" (1)
++			     : "ebx", "ecx", "edx", "memory");
+ }
+ 
+ static inline void __monitor(const void *eax, unsigned long ecx,
+diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
+index 4869351..de7353c 100644
+--- a/arch/x86/kernel/alternative.c
++++ b/arch/x86/kernel/alternative.c
+@@ -498,8 +498,8 @@ static void *__init_or_module text_poke_early(void *addr, const void *opcode,
+ 	unsigned long flags;
+ 	local_irq_save(flags);
+ 	memcpy(addr, opcode, len);
+-	local_irq_restore(flags);
+ 	sync_core();
++	local_irq_restore(flags);
+ 	/* Could also do a CLFLUSH here to speed up CPU recovery; but
+ 	   that causes hangs on some VIA CPUs. */
+ 	return addr;
+-- 
+1.6.3.3
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/x86/fix-i8xx-agp-flush.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/x86/fix-i8xx-agp-flush.patch
@@ -0,0 +1,113 @@
+From: Eric Anholt <eric@anholt.net>
+Date: Fri, 11 Sep 2009 00:48:48 +0000 (-0700)
+Subject: agp/intel: Fix the pre-9xx chipset flush.
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fanholt%2Fdrm-intel.git;a=commitdiff_plain;h=e517a5e97080bbe52857bd0d7df9b66602d53c4d;hp=8082400327d8d2ca54254b593644942bed0edd25
+
+agp/intel: Fix the pre-9xx chipset flush.
+
+Ever since we enabled GEM, the pre-9xx chipsets (particularly 865) have had
+serious stability issues.  Back in May a wbinvd was added to the DRM to
+work around much of the problem.  Some failure remained -- easily visible
+by dragging a window around on an X -retro desktop, or by looking at bugzilla.
+
+The chipset flush was on the right track -- hitting the right amount of
+memory, and it appears to be the only way to flush on these chipsets, but the
+flush page was mapped uncached.  As a result, the writes trying to clear the
+writeback cache ended up bypassing the cache, and not flushing anything!  The
+wbinvd would flush out other writeback data and often cause the data we wanted
+to get flushed, but not always.  By removing the setting of the page to UC
+and instead just clflushing the data we write to try to flush it, we get the
+desired behavior with no wbinvd.
+
+This exports clflush_cache_range(), which was laying around and happened to
+basically match the code I was otherwise going to copy from the DRM.
+
+Signed-off-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Brice Goglin <Brice.Goglin@ens-lyon.org>
+Cc: stable@kernel.org
+---
+
+diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
+index 7e600c1..5866b28 100644
+--- a/arch/x86/mm/pageattr.c
++++ b/arch/x86/mm/pageattr.c
+@@ -143,6 +143,7 @@ void clflush_cache_range(void *vaddr, unsigned int size)
+ 
+ 	mb();
+ }
++EXPORT_SYMBOL_GPL(clflush_cache_range);
+ 
+ static void __cpa_flush_all(void *arg)
+ {
+diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
+index c172917..e8dc75f 100644
+--- a/drivers/char/agp/intel-agp.c
++++ b/drivers/char/agp/intel-agp.c
+@@ -682,23 +682,39 @@ static void intel_i830_setup_flush(void)
+ 	if (!intel_private.i8xx_page)
+ 		return;
+ 
+-	/* make page uncached */
+-	map_page_into_agp(intel_private.i8xx_page);
+-
+ 	intel_private.i8xx_flush_page = kmap(intel_private.i8xx_page);
+ 	if (!intel_private.i8xx_flush_page)
+ 		intel_i830_fini_flush();
+ }
+ 
++static void
++do_wbinvd(void *null)
++{
++	wbinvd();
++}
++
++/* The chipset_flush interface needs to get data that has already been
++ * flushed out of the CPU all the way out to main memory, because the GPU
++ * doesn't snoop those buffers.
++ *
++ * The 8xx series doesn't have the same lovely interface for flushing the
++ * chipset write buffers that the later chips do. According to the 865
++ * specs, it's 64 octwords, or 1KB.  So, to get those previous things in
++ * that buffer out, we just fill 1KB and clflush it out, on the assumption
++ * that it'll push whatever was in there out.  It appears to work.
++ */
+ static void intel_i830_chipset_flush(struct agp_bridge_data *bridge)
+ {
+ 	unsigned int *pg = intel_private.i8xx_flush_page;
+-	int i;
+ 
+-	for (i = 0; i < 256; i += 2)
+-		*(pg + i) = i;
++	memset(pg, 0, 1024);
+ 
+-	wmb();
++	if (cpu_has_clflush) {
++		clflush_cache_range(pg, 1024);
++	} else {
++		if (on_each_cpu(do_wbinvd, NULL, 1) != 0)
++			printk(KERN_ERR "Timed out waiting for cache flush.\n");
++	}
+ }
+ 
+ /* The intel i830 automatically initializes the agp aperture during POST.
+diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
+index f3758f9..30ea4b6 100644
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -2511,16 +2511,6 @@ i915_gem_clflush_object(struct drm_gem_object *obj)
+ 	if (obj_priv->pages == NULL)
+ 		return;
+ 
+-	/* XXX: The 865 in particular appears to be weird in how it handles
+-	 * cache flushing.  We haven't figured it out, but the
+-	 * clflush+agp_chipset_flush doesn't appear to successfully get the
+-	 * data visible to the PGU, while wbinvd + agp_chipset_flush does.
+-	 */
+-	if (IS_I865G(obj->dev)) {
+-		wbinvd();
+-		return;
+-	}
+-
+ 	drm_clflush_pages(obj_priv->pages, obj->size / PAGE_SIZE);
+ }
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/powerpc/lpar-console.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/powerpc/lpar-console.patch
@@ -0,0 +1,39 @@
+diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c
+index 9235c46..8a20452 100644
+--- a/arch/powerpc/platforms/pseries/lpar.c
++++ b/arch/powerpc/platforms/pseries/lpar.c
+@@ -204,6 +204,7 @@ void __init find_udbg_vterm(void)
+ 	struct device_node *stdout_node;
+ 	const u32 *termno;
+ 	const char *name;
++	int add_console;
+ 
+ 	/* find the boot console from /chosen/stdout */
+ 	if (!of_chosen)
+@@ -219,6 +220,8 @@ void __init find_udbg_vterm(void)
+ 		printk(KERN_WARNING "stdout node missing 'name' property!\n");
+ 		goto out;
+ 	}
++	/* The user has requested a console so this is already set up. */
++	add_console = !strstr(cmd_line, "console=");
+ 
+ 	/* Check if it's a virtual terminal */
+ 	if (strncmp(name, "vty", 3) != 0)
+@@ -232,13 +235,15 @@ void __init find_udbg_vterm(void)
+ 		udbg_putc = udbg_putcLP;
+ 		udbg_getc = udbg_getcLP;
+ 		udbg_getc_poll = udbg_getc_pollLP;
+-		add_preferred_console("hvc", termno[0] & 0xff, NULL);
++		if (add_console)
++			add_preferred_console("hvc", termno[0] & 0xff, NULL);
+ 	} else if (of_device_is_compatible(stdout_node, "hvterm-protocol")) {
+ 		vtermno = termno[0];
+ 		udbg_putc = udbg_hvsi_putc;
+ 		udbg_getc = udbg_hvsi_getc;
+ 		udbg_getc_poll = udbg_hvsi_getc_poll;
+-		add_preferred_console("hvsi", termno[0] & 0xff, NULL);
++		if (add_console)
++			add_preferred_console("hvsi", termno[0] & 0xff, NULL);
+ 	}
+ out:
+ 	of_node_put(stdout_node);
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/powerpc/mm-mol.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/powerpc/mm-mol.patch
@@ -0,0 +1,12 @@
+diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
+index c6b1aa3..455fb38 100644
+--- a/arch/powerpc/kernel/ppc_ksyms.c
++++ b/arch/powerpc/kernel/ppc_ksyms.c
+@@ -189,6 +189,7 @@ EXPORT_SYMBOL(set_context);
+ extern long mol_trampoline;
+ EXPORT_SYMBOL(mol_trampoline); /* For MOL */
+ EXPORT_SYMBOL(flush_hash_pages); /* For MOL */
++EXPORT_SYMBOL(handle_mm_fault); /* For MOL */
+ #ifdef CONFIG_SMP
+ extern int mmu_hash_lock;
+ EXPORT_SYMBOL(mmu_hash_lock); /* For MOL */
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/sparc/drivers_net-broken.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/sparc/drivers_net-broken.patch
@@ -0,0 +1,13 @@
+diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
+index 8aa8dd0..f3b61ce 100644
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -2484,7 +2484,7 @@ config MYRI10GE
+ 
+ config NETXEN_NIC
+ 	tristate "NetXen Multi port (1/10) Gigabit Ethernet NIC"
+-	depends on PCI
++	depends on PCI && (!SPARC32 || BROKEN)
+ 	help
+ 	  This enables the support for NetXen's Gigabit Ethernet card.
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/sparc/arch-zimage-target.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/sparc/arch-zimage-target.patch
@@ -0,0 +1,25 @@
+diff -urpN linux-source-2.6.29.orig/arch/sparc/boot/Makefile linux-source-2.6.29/arch/sparc/boot/Makefile
+--- linux-source-2.6.29.orig/arch/sparc/boot/Makefile	2009-03-23 17:12:14.000000000 -0600
++++ linux-source-2.6.29/arch/sparc/boot/Makefile	2009-05-15 16:14:09.000000000 -0600
+@@ -79,6 +79,9 @@ $(obj)/image: vmlinux FORCE
+ 	$(call if_changed,strip)
+ 	@echo '  kernel: $@ is ready'
+ 
++$(obj)/zImage: $(obj)/image
++	$(call if_changed,gzip)
++
+ $(obj)/tftpboot.img: vmlinux $(obj)/piggyback_64 System.map $(ROOT_IMG) FORCE
+ 	$(call if_changed,elftoaout)
+ 	$(call if_changed,piggy)
+diff -urpN linux-source-2.6.29.orig/arch/sparc/Makefile linux-source-2.6.29/arch/sparc/Makefile
+--- linux-source-2.6.29.orig/arch/sparc/Makefile	2009-03-23 17:12:14.000000000 -0600
++++ linux-source-2.6.29/arch/sparc/Makefile	2009-05-15 16:14:44.000000000 -0600
+@@ -91,6 +91,8 @@ endif
+ 
+ boot := arch/sparc/boot
+ 
++all: zImage
++
+ image zImage tftpboot.img vmlinux.aout: vmlinux
+ 	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/drivers-scsi-qla1280-request-firmware-unlocked.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/drivers-scsi-qla1280-request-firmware-unlocked.patch
@@ -0,0 +1,35 @@
+commit 480c1e36532fc2783834d9582a11fbf1d493af42
+Author: Ben Hutchings <ben@decadent.org.uk>
+Date:   Sun Aug 16 03:42:24 2009 +0100
+
+    qla1280: Drop host_lock while requesting firmware
+    
+    request_firmware() may sleep and it appears to be safe to release the
+    spinlock here.
+
+diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c
+index 5defe5e..97cbf12 100644
+--- a/drivers/scsi/qla1280.c
++++ b/drivers/scsi/qla1280.c
+@@ -1642,8 +1642,10 @@ qla1280_load_firmware_pio(struct scsi_qla_host *ha)
+ 	uint16_t mb[MAILBOX_REGISTER_COUNT], i;
+ 	int err;
+ 
++	spin_unlock_irq(ha->host->host_lock);
+ 	err = request_firmware(&fw, ql1280_board_tbl[ha->devnum].fwname,
+ 			       &ha->pdev->dev);
++	spin_lock_irq(ha->host->host_lock);
+ 	if (err) {
+ 		printk(KERN_ERR "Failed to load image \"%s\" err %d\n",
+ 		       ql1280_board_tbl[ha->devnum].fwname, err);
+@@ -1701,8 +1703,10 @@ qla1280_load_firmware_dma(struct scsi_qla_host *ha)
+ 		return -ENOMEM;
+ #endif
+ 
++	spin_unlock_irq(ha->host->host_lock);
+ 	err = request_firmware(&fw, ql1280_board_tbl[ha->devnum].fwname,
+ 			       &ha->pdev->dev);
++	spin_lock_irq(ha->host->host_lock);
+ 	if (err) {
+ 		printk(KERN_ERR "Failed to load image \"%s\" err %d\n",
+ 		       ql1280_board_tbl[ha->devnum].fwname, err);
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/fix-proc-uptime-idle-time.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/fix-proc-uptime-idle-time.patch
@@ -0,0 +1,42 @@
+From 27bf8712477db47c891e6198000c985631cd18de Mon Sep 17 00:00:00 2001
+From: Michael Abbott <michael.abbott@diamond.ac.uk>
+Date: Mon, 22 Jun 2009 12:19:25 +0200
+Subject: [PATCH] [PATCH] Fix idle time field in /proc/uptime
+
+Git commit 79741dd changes idle cputime accounting, but unfortunately
+the /proc/uptime file hasn't caught up.  Here the idle time calculation
+from /proc/stat is copied over.
+
+Signed-off-by: Michael Abbott <michael.abbott@diamond.ac.uk>
+Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
+---
+ fs/proc/uptime.c |    7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+diff --git a/fs/proc/uptime.c b/fs/proc/uptime.c
+index 0c10a0b..766b1d4 100644
+--- a/fs/proc/uptime.c
++++ b/fs/proc/uptime.c
+@@ -4,13 +4,18 @@
+ #include <linux/sched.h>
+ #include <linux/seq_file.h>
+ #include <linux/time.h>
++#include <linux/kernel_stat.h>
+ #include <asm/cputime.h>
+ 
+ static int uptime_proc_show(struct seq_file *m, void *v)
+ {
+ 	struct timespec uptime;
+ 	struct timespec idle;
+-	cputime_t idletime = cputime_add(init_task.utime, init_task.stime);
++	int i;
++	cputime_t idletime = cputime_zero;
++
++	for_each_possible_cpu(i)
++		idletime = cputime64_add(idletime, kstat_cpu(i).cpustat.idle);
+ 
+ 	do_posix_clock_monotonic_gettime(&uptime);
+ 	monotonic_to_bootbased(&uptime);
+-- 
+1.6.3.3
+
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/make-sock_sendpage-use-kernel_sendpage.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/make-sock_sendpage-use-kernel_sendpage.patch
@@ -0,0 +1,34 @@
+commit e694958388c50148389b0e9b9e9e8945cf0f1b98
+Author: Linus Torvalds <torvalds@linux-foundation.org>
+Date:   Thu Aug 13 08:28:36 2009 -0700
+
+    Make sock_sendpage() use kernel_sendpage()
+    
+    kernel_sendpage() does the proper default case handling for when the
+    socket doesn't have a native sendpage implementation.
+    
+    Now, arguably this might be something that we could instead solve by
+    just specifying that all protocols should do it themselves at the
+    protocol level, but we really only care about the common protocols.
+    Does anybody really care about sendpage on something like Appletalk? Not
+    likely.
+    
+    Acked-by: David S. Miller <davem@davemloft.net>
+    Acked-by: Julien TINNES <julien@cr0.org>
+    Acked-by: Tavis Ormandy <taviso@sdf.lonestar.org>
+    Cc: stable@kernel.org
+    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+
+diff --git a/net/socket.c b/net/socket.c
+index 791d71a..6d47165 100644
+--- a/net/socket.c
++++ b/net/socket.c
+@@ -736,7 +736,7 @@ static ssize_t sock_sendpage(struct file *file, struct page *page,
+ 	if (more)
+ 		flags |= MSG_MORE;
+ 
+-	return sock->ops->sendpage(sock, page, offset, size, flags);
++	return kernel_sendpage(sock, page, offset, size, flags);
+ }
+ 
+ static ssize_t sock_splice_read(struct file *file, loff_t *ppos,
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/0001-xfs-fix-freeing-memory-in-xfs_getbmap.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/0001-xfs-fix-freeing-memory-in-xfs_getbmap.patch
@@ -0,0 +1,32 @@
+From 7747a0b0af5976ba3828796b4f7a7adc3bb76dbd Mon Sep 17 00:00:00 2001
+From: Felix Blyakher <felixb@sgi.com>
+Date: Thu, 11 Jun 2009 17:07:28 -0500
+Subject: [PATCH] xfs: fix freeing memory in xfs_getbmap()
+
+Regression from commit 28e211700a81b0a934b6c7a4b8e7dda843634d2f.
+Need to free temporary buffer allocated in xfs_getbmap().
+
+Signed-off-by: Felix Blyakher <felixb@sgi.com>
+Signed-off-by: Hedi Berriche <hedi@sgi.com>
+Reported-by: Justin Piszcz <jpiszcz@lucidpixels.com>
+Reviewed-by: Eric Sandeen <sandeen@sandeen.net>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+---
+ fs/xfs/xfs_bmap.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
+index 4b0f6ef..7928b99 100644
+--- a/fs/xfs/xfs_bmap.c
++++ b/fs/xfs/xfs_bmap.c
+@@ -6086,6 +6086,7 @@ xfs_getbmap(
+ 			break;
+ 	}
+ 
++	kmem_free(out);
+ 	return error;
+ }
+ 
+-- 
+1.6.3.1
+
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/personality-fix-PER_CLEAR_ON_SETID.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/personality-fix-PER_CLEAR_ON_SETID.patch
@@ -0,0 +1,52 @@
+commit f9fabcb58a6d26d6efde842d1703ac7cfa9427b6
+Author: Julien Tinnes <jt@cr0.org>
+Date:   Fri Jun 26 20:27:40 2009 +0200
+
+    personality: fix PER_CLEAR_ON_SETID
+    
+    We have found that the current PER_CLEAR_ON_SETID mask on Linux doesn't
+    include neither ADDR_COMPAT_LAYOUT, nor MMAP_PAGE_ZERO.
+    
+    The current mask is READ_IMPLIES_EXEC|ADDR_NO_RANDOMIZE.
+    
+    We believe it is important to add MMAP_PAGE_ZERO, because by using this
+    personality it is possible to have the first page mapped inside a
+    process running as setuid root.  This could be used in those scenarios:
+    
+     - Exploiting a NULL pointer dereference issue in a setuid root binary
+     - Bypassing the mmap_min_addr restrictions of the Linux kernel: by
+       running a setuid binary that would drop privileges before giving us
+       control back (for instance by loading a user-supplied library), we
+       could get the first page mapped in a process we control.  By further
+       using mremap and mprotect on this mapping, we can then completely
+       bypass the mmap_min_addr restrictions.
+    
+    Less importantly, we believe ADDR_COMPAT_LAYOUT should also be added
+    since on x86 32bits it will in practice disable most of the address
+    space layout randomization (only the stack will remain randomized).
+    
+    Signed-off-by: Julien Tinnes <jt@cr0.org>
+    Signed-off-by: Tavis Ormandy <taviso@sdf.lonestar.org>
+    Cc: stable@kernel.org
+    Acked-by: Christoph Hellwig <hch@infradead.org>
+    Acked-by: Kees Cook <kees@ubuntu.com>
+    Acked-by: Eugene Teo <eugene@redhat.com>
+    [ Shortened lines and fixed whitespace as per Christophs' suggestion ]
+    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+
+diff --git a/include/linux/personality.h b/include/linux/personality.h
+index a84e9ff..1261208 100644
+--- a/include/linux/personality.h
++++ b/include/linux/personality.h
+@@ -40,7 +40,10 @@ enum {
+  * Security-relevant compatibility flags that must be
+  * cleared upon setuid or setgid exec:
+  */
+-#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC|ADDR_NO_RANDOMIZE)
++#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC  | \
++			    ADDR_NO_RANDOMIZE  | \
++			    ADDR_COMPAT_LAYOUT | \
++			    MMAP_PAGE_ZERO)
+ 
+ /*
+  * Personality types.
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/drivers-gpu-drm-r128-ioctl-add-init-test.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/drivers-gpu-drm-r128-ioctl-add-init-test.patch
@@ -0,0 +1,227 @@
+From aa735263241c7ae1ce9d3b6fd957b02819468f99 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sat, 15 Aug 2009 19:22:39 +0100
+Subject: [PATCH] r128: Add test for initialisation to all ioctls that require it
+
+Almost all r128's private ioctls require that the CCE state has
+already been initialised.  However, most do not test that this has
+been done, and will proceed to dereference a null pointer.  This may
+result in a security vulnerability, since some ioctls are
+unprivileged.
+
+This adds a macro for the common initialisation test and changes all
+ioctl implementations that require prior initialisation to use that
+macro.
+
+Also, r128_do_init_cce() does not test that the CCE state has not
+been initialised already.  Repeated initialisation may lead to a crash
+or resource leak.  This adds that test.
+---
+ drivers/gpu/drm/r128/r128_cce.c   |   18 ++++++++++++++----
+ drivers/gpu/drm/r128/r128_drv.h   |    8 ++++++++
+ drivers/gpu/drm/r128/r128_state.c |   36 +++++++++++++++++++-----------------
+ 3 files changed, 41 insertions(+), 21 deletions(-)
+
+diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c
+index c75fd35..ebf9f63 100644
+--- a/drivers/gpu/drm/r128/r128_cce.c
++++ b/drivers/gpu/drm/r128/r128_cce.c
+@@ -353,6 +353,11 @@ static int r128_do_init_cce(struct drm_device * dev, drm_r128_init_t * init)
+ 
+ 	DRM_DEBUG("\n");
+ 
++	if (dev->dev_private) {
++		DRM_DEBUG("called when already initialized\n");
++		return -EINVAL;
++	}
++
+ 	dev_priv = drm_alloc(sizeof(drm_r128_private_t), DRM_MEM_DRIVER);
+ 	if (dev_priv == NULL)
+ 		return -ENOMEM;
+@@ -649,6 +654,8 @@ int r128_cce_start(struct drm_device *dev, void *data, struct drm_file *file_pri
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
++
+ 	if (dev_priv->cce_running || dev_priv->cce_mode == R128_PM4_NONPM4) {
+ 		DRM_DEBUG("while CCE running\n");
+ 		return 0;
+@@ -671,6 +678,8 @@ int r128_cce_stop(struct drm_device *dev, void *data, struct drm_file *file_priv
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
++
+ 	/* Flush any pending CCE commands.  This ensures any outstanding
+ 	 * commands are exectuted by the engine before we turn it off.
+ 	 */
+@@ -708,10 +717,7 @@ int r128_cce_reset(struct drm_device *dev, void *data, struct drm_file *file_pri
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
+-	if (!dev_priv) {
+-		DRM_DEBUG("called before init done\n");
+-		return -EINVAL;
+-	}
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
+ 
+ 	r128_do_cce_reset(dev_priv);
+ 
+@@ -728,6 +734,8 @@ int r128_cce_idle(struct drm_device *dev, void *data, struct drm_file *file_priv
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
++
+ 	if (dev_priv->cce_running) {
+ 		r128_do_cce_flush(dev_priv);
+ 	}
+@@ -741,6 +749,8 @@ int r128_engine_reset(struct drm_device *dev, void *data, struct drm_file *file_
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
++	DEV_INIT_TEST_WITH_RETURN(dev->dev_private);
++
+ 	return r128_do_engine_reset(dev);
+ }
+ 
+diff --git a/drivers/gpu/drm/r128/r128_drv.h b/drivers/gpu/drm/r128/r128_drv.h
+index 797a26c..3c60829 100644
+--- a/drivers/gpu/drm/r128/r128_drv.h
++++ b/drivers/gpu/drm/r128/r128_drv.h
+@@ -422,6 +422,14 @@ static __inline__ void r128_update_ring_snapshot(drm_r128_private_t * dev_priv)
+  * Misc helper macros
+  */
+ 
++#define DEV_INIT_TEST_WITH_RETURN(_dev_priv)				\
++do {									\
++	if (!_dev_priv) {						\
++		DRM_ERROR("called with no initialization\n");		\
++		return -EINVAL;						\
++	}								\
++} while (0)
++
+ #define RING_SPACE_TEST_WITH_RETURN( dev_priv )				\
+ do {									\
+ 	drm_r128_ring_buffer_t *ring = &dev_priv->ring; int i;		\
+diff --git a/drivers/gpu/drm/r128/r128_state.c b/drivers/gpu/drm/r128/r128_state.c
+index 026a48c..af2665c 100644
+--- a/drivers/gpu/drm/r128/r128_state.c
++++ b/drivers/gpu/drm/r128/r128_state.c
+@@ -1244,14 +1244,18 @@ static void r128_cce_dispatch_stipple(struct drm_device * dev, u32 * stipple)
+ static int r128_cce_clear(struct drm_device *dev, void *data, struct drm_file *file_priv)
+ {
+ 	drm_r128_private_t *dev_priv = dev->dev_private;
+-	drm_r128_sarea_t *sarea_priv = dev_priv->sarea_priv;
++	drm_r128_sarea_t *sarea_priv;
+ 	drm_r128_clear_t *clear = data;
+ 	DRM_DEBUG("\n");
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
++
+ 	RING_SPACE_TEST_WITH_RETURN(dev_priv);
+ 
++	sarea_priv = dev_priv->sarea_priv;
++
+ 	if (sarea_priv->nbox > R128_NR_SAREA_CLIPRECTS)
+ 		sarea_priv->nbox = R128_NR_SAREA_CLIPRECTS;
+ 
+@@ -1312,6 +1316,8 @@ static int r128_cce_flip(struct drm_device *dev, void *data, struct drm_file *fi
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
++
+ 	RING_SPACE_TEST_WITH_RETURN(dev_priv);
+ 
+ 	if (!dev_priv->page_flipping)
+@@ -1331,6 +1337,8 @@ static int r128_cce_swap(struct drm_device *dev, void *data, struct drm_file *fi
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
++
+ 	RING_SPACE_TEST_WITH_RETURN(dev_priv);
+ 
+ 	if (sarea_priv->nbox > R128_NR_SAREA_CLIPRECTS)
+@@ -1354,10 +1362,7 @@ static int r128_cce_vertex(struct drm_device *dev, void *data, struct drm_file *
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
+-	if (!dev_priv) {
+-		DRM_ERROR("called with no initialization\n");
+-		return -EINVAL;
+-	}
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
+ 
+ 	DRM_DEBUG("pid=%d index=%d count=%d discard=%d\n",
+ 		  DRM_CURRENTPID, vertex->idx, vertex->count, vertex->discard);
+@@ -1410,10 +1415,7 @@ static int r128_cce_indices(struct drm_device *dev, void *data, struct drm_file
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
+-	if (!dev_priv) {
+-		DRM_ERROR("called with no initialization\n");
+-		return -EINVAL;
+-	}
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
+ 
+ 	DRM_DEBUG("pid=%d buf=%d s=%d e=%d d=%d\n", DRM_CURRENTPID,
+ 		  elts->idx, elts->start, elts->end, elts->discard);
+@@ -1476,6 +1478,8 @@ static int r128_cce_blit(struct drm_device *dev, void *data, struct drm_file *fi
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
++
+ 	DRM_DEBUG("pid=%d index=%d\n", DRM_CURRENTPID, blit->idx);
+ 
+ 	if (blit->idx < 0 || blit->idx >= dma->buf_count) {
+@@ -1501,6 +1505,8 @@ static int r128_cce_depth(struct drm_device *dev, void *data, struct drm_file *f
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
++
+ 	RING_SPACE_TEST_WITH_RETURN(dev_priv);
+ 
+ 	ret = -EINVAL;
+@@ -1531,6 +1537,8 @@ static int r128_cce_stipple(struct drm_device *dev, void *data, struct drm_file
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
++
+ 	if (DRM_COPY_FROM_USER(&mask, stipple->mask, 32 * sizeof(u32)))
+ 		return -EFAULT;
+ 
+@@ -1555,10 +1563,7 @@ static int r128_cce_indirect(struct drm_device *dev, void *data, struct drm_file
+ 
+ 	LOCK_TEST_WITH_RETURN(dev, file_priv);
+ 
+-	if (!dev_priv) {
+-		DRM_ERROR("called with no initialization\n");
+-		return -EINVAL;
+-	}
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
+ 
+ 	DRM_DEBUG("idx=%d s=%d e=%d d=%d\n",
+ 		  indirect->idx, indirect->start, indirect->end,
+@@ -1620,10 +1625,7 @@ static int r128_getparam(struct drm_device *dev, void *data, struct drm_file *fi
+ 	drm_r128_getparam_t *param = data;
+ 	int value;
+ 
+-	if (!dev_priv) {
+-		DRM_ERROR("called with no initialization\n");
+-		return -EINVAL;
+-	}
++	DEV_INIT_TEST_WITH_RETURN(dev_priv);
+ 
+ 	DRM_DEBUG("pid=%d\n", DRM_CURRENTPID);
+ 
+-- 
+1.6.3.3
+
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/drivers-net-intel-fix-initial-link-state.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/drivers-net-intel-fix-initial-link-state.patch
@@ -0,0 +1,312 @@
+From eb62efd287fe6e12d18083287e38e4a811c28256 Mon Sep 17 00:00:00 2001
+From: Jesse Brandeburg <jesse.brandeburg@intel.com>
+Date: Fri, 17 Apr 2009 20:44:36 +0000
+Subject: [PATCH] e1000: init link state correctly
+
+As reported by Andrew Lutomirski <amluto@gmail.com>
+
+All the intel wired ethernet drivers were calling netif_carrier_off
+and netif_stop_queue (or variants) before calling register_netdevice
+
+This is incorrect behavior as was pointed out by davem, and causes
+ifconfig and friends to report a strange state before first link
+after the driver was loaded.
+
+This apparently confused *some* versions of networkmanager.
+
+Andy tested this for e1000e and confirmed it was working for him.
+
+Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
+Reported-by: Andrew Lutomirski <amluto@gmail.com>
+Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/e1000/e1000_main.c |    9 +++++----
+ 1 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
+index ef12931..9bdcf4d 100644
+--- a/drivers/net/e1000/e1000_main.c
++++ b/drivers/net/e1000/e1000_main.c
+@@ -1234,15 +1234,14 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
+ 	    !e1000_check_mng_mode(hw))
+ 		e1000_get_hw_control(adapter);
+ 
+-	/* tell the stack to leave us alone until e1000_open() is called */
+-	netif_carrier_off(netdev);
+-	netif_stop_queue(netdev);
+-
+ 	strcpy(netdev->name, "eth%d");
+ 	err = register_netdev(netdev);
+ 	if (err)
+ 		goto err_register;
+ 
++	/* carrier off reporting is important to ethtool even BEFORE open */
++	netif_carrier_off(netdev);
++
+ 	DPRINTK(PROBE, INFO, "Intel(R) PRO/1000 Network Connection\n");
+ 
+ 	cards_found++;
+@@ -1441,6 +1440,8 @@ static int e1000_open(struct net_device *netdev)
+ 	if (test_bit(__E1000_TESTING, &adapter->flags))
+ 		return -EBUSY;
+ 
++	netif_carrier_off(netdev);
++
+ 	/* allocate transmit descriptors */
+ 	err = e1000_setup_all_tx_resources(adapter);
+ 	if (err)
+-- 
+1.6.3.3
+
+From 9c563d20671e5fbe3045fd79c18b306ccb77b0b6 Mon Sep 17 00:00:00 2001
+From: Jesse Brandeburg <jesse.brandeburg@intel.com>
+Date: Fri, 17 Apr 2009 20:44:34 +0000
+Subject: [PATCH] e1000e: indicate link down at load
+
+As reported by Andrew Lutomirski <amluto@gmail.com>
+
+All the intel wired ethernet drivers were calling netif_carrier_off
+and netif_stop_queue (or variants) before calling register_netdevice
+
+This is incorrect behavior as was pointed out by davem, and causes
+ifconfig and friends to report a strange state before first link
+after the driver was loaded, since without a netif_carrier_off, the stack
+assumes carrier_on, but before register_netdev, netlink messages are not
+sent out telling link state.
+
+This apparently confused *some* versions of networkmanager.
+
+Andy tested this for e1000e and confirmed it was working for him.
+
+see thread: http://marc.info/?l=linux-netdev&m=123946479705636&w=2
+
+Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
+Tested-by: Andy Lutomirski <amluto@gmail.com>
+Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/e1000e/netdev.c |    9 +++++----
+ 1 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
+index 1693ed1..c0ff550 100644
+--- a/drivers/net/e1000e/netdev.c
++++ b/drivers/net/e1000e/netdev.c
+@@ -3072,6 +3072,8 @@ static int e1000_open(struct net_device *netdev)
+ 	if (test_bit(__E1000_TESTING, &adapter->state))
+ 		return -EBUSY;
+ 
++	netif_carrier_off(netdev);
++
+ 	/* allocate transmit descriptors */
+ 	err = e1000e_setup_tx_resources(adapter);
+ 	if (err)
+@@ -5037,15 +5039,14 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
+ 	if (!(adapter->flags & FLAG_HAS_AMT))
+ 		e1000_get_hw_control(adapter);
+ 
+-	/* tell the stack to leave us alone until e1000_open() is called */
+-	netif_carrier_off(netdev);
+-	netif_tx_stop_all_queues(netdev);
+-
+ 	strcpy(netdev->name, "eth%d");
+ 	err = register_netdev(netdev);
+ 	if (err)
+ 		goto err_register;
+ 
++	/* carrier off reporting is important to ethtool even BEFORE open */
++	netif_carrier_off(netdev);
++
+ 	e1000_print_device_info(adapter);
+ 
+ 	return 0;
+-- 
+1.6.3.3
+
+From b168dfc51604ec293db16dc4d558043585578a2d Mon Sep 17 00:00:00 2001
+From: Jesse Brandeburg <jesse.brandeburg@intel.com>
+Date: Fri, 17 Apr 2009 20:44:32 +0000
+Subject: [PATCH] igb: fix link down inital state
+
+As reported by Andrew Lutomirski <amluto@gmail.com>
+
+All the intel wired ethernet drivers were calling netif_carrier_off
+and netif_stop_queue (or variants) before calling register_netdevice
+
+This is incorrect behavior as was pointed out by davem, and causes
+ifconfig and friends to report a strange state before first link
+after the driver was loaded, since without a netif_carrier_off, the stack
+assumes carrier_on, but before register_netdev, netlink messages are not
+sent out telling link state.
+
+This apparently confused *some* versions of networkmanager.
+
+Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
+Reported-by: Andrew Lutomirski <amluto@gmail.com>
+Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/igb/igb_main.c |    9 +++++----
+ 1 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
+index 08c8014..ceaa585 100644
+--- a/drivers/net/igb/igb_main.c
++++ b/drivers/net/igb/igb_main.c
+@@ -1442,15 +1442,14 @@ static int __devinit igb_probe(struct pci_dev *pdev,
+ 	 * driver. */
+ 	igb_get_hw_control(adapter);
+ 
+-	/* tell the stack to leave us alone until igb_open() is called */
+-	netif_carrier_off(netdev);
+-	netif_tx_stop_all_queues(netdev);
+-
+ 	strcpy(netdev->name, "eth%d");
+ 	err = register_netdev(netdev);
+ 	if (err)
+ 		goto err_register;
+ 
++	/* carrier off reporting is important to ethtool even BEFORE open */
++	netif_carrier_off(netdev);
++
+ #ifdef CONFIG_IGB_DCA
+ 	if (dca_add_requester(&pdev->dev) == 0) {
+ 		adapter->flags |= IGB_FLAG_DCA_ENABLED;
+@@ -1699,6 +1698,8 @@ static int igb_open(struct net_device *netdev)
+ 	if (test_bit(__IGB_TESTING, &adapter->state))
+ 		return -EBUSY;
+ 
++	netif_carrier_off(netdev);
++
+ 	/* allocate transmit descriptors */
+ 	err = igb_setup_all_tx_resources(adapter);
+ 	if (err)
+-- 
+1.6.3.3
+
+From 3a6d1bc4163fee27c312184d5f1a9cc1e110d300 Mon Sep 17 00:00:00 2001
+From: Jesse Brandeburg <jesse.brandeburg@intel.com>
+Date: Fri, 17 Apr 2009 20:44:29 +0000
+Subject: [PATCH] ixgb: fix link down initial state
+
+As reported by Andrew Lutomirski <amluto@gmail.com>
+
+All the intel wired ethernet drivers were calling netif_carrier_off
+and netif_stop_queue (or variants) before calling register_netdevice
+
+This is incorrect behavior as was pointed out by davem, and causes
+ifconfig and friends to report a strange state before first link
+after the driver was loaded, since without a netif_carrier_off, the stack
+assumes carrier_on, but before register_netdev, netlink messages are not
+sent out telling link state.
+
+This apparently confused *some* versions of networkmanager.
+
+in addition this driver appeared to need a netif_start_queue at
+the end of open.
+
+Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
+Reported-by: Andrew Lutomirski <amluto@gmail.com>
+Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/ixgb/ixgb_main.c |    8 +++++---
+ 1 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
+index 4a0826b..ff741ca 100644
+--- a/drivers/net/ixgb/ixgb_main.c
++++ b/drivers/net/ixgb/ixgb_main.c
+@@ -471,10 +471,8 @@ ixgb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
+ 	if (err)
+ 		goto err_register;
+ 
+-	/* we're going to reset, so assume we have no link for now */
+-
++	/* carrier off reporting is important to ethtool even BEFORE open */
+ 	netif_carrier_off(netdev);
+-	netif_stop_queue(netdev);
+ 
+ 	DPRINTK(PROBE, INFO, "Intel(R) PRO/10GbE Network Connection\n");
+ 	ixgb_check_options(adapter);
+@@ -592,6 +590,8 @@ ixgb_open(struct net_device *netdev)
+ 	if (err)
+ 		goto err_setup_tx;
+ 
++	netif_carrier_off(netdev);
++
+ 	/* allocate receive descriptors */
+ 
+ 	err = ixgb_setup_rx_resources(adapter);
+@@ -602,6 +602,8 @@ ixgb_open(struct net_device *netdev)
+ 	if (err)
+ 		goto err_up;
+ 
++	netif_start_queue(netdev);
++
+ 	return 0;
+ 
+ err_up:
+-- 
+1.6.3.3
+
+From 5438646724c34c2180664a57f862a1da8dd21db1 Mon Sep 17 00:00:00 2001
+From: Jesse Brandeburg <jesse.brandeburg@intel.com>
+Date: Fri, 17 Apr 2009 20:44:27 +0000
+Subject: [PATCH] ixgbe: fix link down initial state
+
+As reported by Andrew Lutomirski <amluto@gmail.com>
+
+All the intel wired ethernet drivers were calling netif_carrier_off
+and netif_stop_queue (or variants) before calling register_netdevice
+
+This is incorrect behavior as was pointed out by davem, and causes
+ifconfig and friends to report a strange state before first link
+after the driver was loaded, since without a netif_carrier_off, the stack
+assumes carrier_on, but before register_netdev, netlink messages are not
+sent out telling link state.
+
+This apparently confused *some* versions of networkmanager.
+
+Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
+Reported-by: Andrew Lutomirski <amluto@gmail.com>
+Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/ixgbe/ixgbe_main.c |    7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
+index 0d9a3ac..d5d9589 100644
+--- a/drivers/net/ixgbe/ixgbe_main.c
++++ b/drivers/net/ixgbe/ixgbe_main.c
+@@ -3459,6 +3459,8 @@ static int ixgbe_open(struct net_device *netdev)
+ 	if (test_bit(__IXGBE_TESTING, &adapter->state))
+ 		return -EBUSY;
+ 
++	netif_carrier_off(netdev);
++
+ 	/* allocate transmit descriptors */
+ 	err = ixgbe_setup_all_tx_resources(adapter);
+ 	if (err)
+@@ -4772,13 +4774,14 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
+ 	/* reset the hardware with the new settings */
+ 	hw->mac.ops.start_hw(hw);
+ 
+-	netif_carrier_off(netdev);
+-
+ 	strcpy(netdev->name, "eth%d");
+ 	err = register_netdev(netdev);
+ 	if (err)
+ 		goto err_register;
+ 
++	/* carrier off reporting is important to ethtool even BEFORE open */
++	netif_carrier_off(netdev);
++
+ #ifdef CONFIG_IXGBE_DCA
+ 	if (dca_add_requester(&pdev->dev) == 0) {
+ 		adapter->flags |= IXGBE_FLAG_DCA_ENABLED;
+-- 
+1.6.3.3
+
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/drivers-net-sfc-fix-initial-link-state.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/drivers-net-sfc-fix-initial-link-state.patch
@@ -0,0 +1,72 @@
+From aed0628dae0c26b47d40d65f942abe30279b52a5 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <bhutchings@solarflare.com>
+Date: Wed, 26 Aug 2009 08:16:27 +0000
+Subject: [PATCH] sfc: Fix ordering of device registration and initial netif_carrier_off()
+
+We must call netif_carrier_off() after the device is registered, not
+before, to set the operational state and user-space IFF_RUNNING flag
+correctly.
+
+Since we don't want observers to see an intermediate state, open-code
+register_netdev() and add efx_update_name() and netif_carrier_off()
+into the locked region.
+
+Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/sfc/efx.c |   26 +++++++++++++++++---------
+ 1 files changed, 17 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c
+index 343e8da..d4dc920 100644
+--- a/drivers/net/sfc/efx.c
++++ b/drivers/net/sfc/efx.c
+@@ -1614,21 +1614,24 @@ static int efx_register_netdev(struct efx_nic *efx)
+ 	SET_NETDEV_DEV(net_dev, &efx->pci_dev->dev);
+ 	SET_ETHTOOL_OPS(net_dev, &efx_ethtool_ops);
+ 
+-	/* Always start with carrier off; PHY events will detect the link */
+-	netif_carrier_off(efx->net_dev);
+-
+ 	/* Clear MAC statistics */
+ 	efx->mac_op->update_stats(efx);
+ 	memset(&efx->mac_stats, 0, sizeof(efx->mac_stats));
+ 
+-	rc = register_netdev(net_dev);
+-	if (rc) {
+-		EFX_ERR(efx, "could not register net dev\n");
+-		return rc;
+-	}
+-
+ 	rtnl_lock();
++
++	rc = dev_alloc_name(net_dev, net_dev->name);
++	if (rc < 0)
++		goto fail_locked;
+ 	efx_update_name(efx);
++
++	rc = register_netdevice(net_dev);
++	if (rc)
++		goto fail_locked;
++
++	/* Always start with carrier off; PHY events will detect the link */
++	netif_carrier_off(efx->net_dev);
++
+ 	rtnl_unlock();
+ 
+ 	rc = device_create_file(&efx->pci_dev->dev, &dev_attr_phy_type);
+@@ -1639,6 +1642,11 @@ static int efx_register_netdev(struct efx_nic *efx)
+ 
+ 	return 0;
+ 
++fail_locked:
++	rtnl_unlock();
++	EFX_ERR(efx, "could not register net dev\n");
++	return rc;
++
+ fail_registered:
+ 	unregister_netdev(net_dev);
+ 	return rc;
+-- 
+1.6.3.3
+
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/do_sigaltstack-small-cleanups.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/do_sigaltstack-small-cleanups.patch
@@ -0,0 +1,35 @@
+commit 0dd8486b5cfe8048e0613334659d9252ecd1b08a
+Author: Linus Torvalds <torvalds@linux-foundation.org>
+Date:   Sat Aug 1 11:18:56 2009 -0700
+
+    do_sigaltstack: small cleanups
+    
+    The previous commit ("do_sigaltstack: avoid copying 'stack_t' as a
+    structure to user space") fixed a real bug.  This one just cleans up the
+    copy from user space to that gcc can generate better code for it (and so
+    that it looks the same as the later copy back to user space).
+    
+    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+
+Adjusted to apply to Debian's 2.6.30 by dann frazier <dannf@debian.org>
+
+diff -urpN linux-source-2.6.30.orig/kernel/signal.c linux-source-2.6.30/kernel/signal.c
+--- linux-source-2.6.30.orig/kernel/signal.c	2009-08-14 18:04:08.000000000 -0600
++++ linux-source-2.6.30/kernel/signal.c	2009-08-14 18:05:13.000000000 -0600
+@@ -2424,10 +2424,12 @@ do_sigaltstack (const stack_t __user *us
+ 		int ss_flags;
+ 
+ 		error = -EFAULT;
+-		if (!access_ok(VERIFY_READ, uss, sizeof(*uss))
+-		    || __get_user(ss_sp, &uss->ss_sp)
+-		    || __get_user(ss_flags, &uss->ss_flags)
+-		    || __get_user(ss_size, &uss->ss_size))
++		if (!access_ok(VERIFY_READ, uss, sizeof(*uss)))
++			goto out;
++		error = __get_user(ss_sp, &uss->ss_sp) |
++			__get_user(ss_flags, &uss->ss_flags) |
++			__get_user(ss_size, &uss->ss_size);
++		if (error)
+ 			goto out;
+ 
+ 		error = -EPERM;
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/mac80211-fix-two-remote-exploits.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/mac80211-fix-two-remote-exploits.patch
@@ -0,0 +1,60 @@
+commit 4253119acf412fd686ef4bd8749b5a4d70ea3a51
+Author: Johannes Berg <johannes@sipsolutions.net>
+Date:   Fri Nov 20 09:15:51 2009 +0100
+
+    mac80211: fix two remote exploits
+    
+    Lennert Buytenhek noticed a remotely triggerable problem
+    in mac80211, which is due to some code shuffling I did
+    that ended up changing the order in which things were
+    done -- this was in
+    
+      commit d75636ef9c1af224f1097941879d5a8db7cd04e5
+      Author: Johannes Berg <johannes@sipsolutions.net>
+      Date:   Tue Feb 10 21:25:53 2009 +0100
+    
+        mac80211: RX aggregation: clean up stop session
+    
+    The problem is that the BUG_ON moved before the various
+    checks, and as such can be triggered.
+    
+    As the comment indicates, the BUG_ON can be removed since
+    the ampdu_action callback must already exist when the
+    state is OPERATIONAL.
+    
+    A similar code path leads to a WARN_ON in
+    ieee80211_stop_tx_ba_session, which can also be removed.
+    
+    Cc: stable@kernel.org [2.6.29+]
+    Cc: Lennert Buytenhek <buytenh@marvell.com>
+    Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
+    Signed-off-by: John W. Linville <linville@tuxdriver.com>
+
+diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c
+index bc064d7..ce8e0e7 100644
+--- a/net/mac80211/agg-rx.c
++++ b/net/mac80211/agg-rx.c
+@@ -85,10 +85,6 @@ void ieee80211_sta_stop_rx_ba_session(struct ieee80211_sub_if_data *sdata, u8 *r
+ 	struct ieee80211_local *local = sdata->local;
+ 	struct sta_info *sta;
+ 
+-	/* stop HW Rx aggregation. ampdu_action existence
+-	 * already verified in session init so we add the BUG_ON */
+-	BUG_ON(!local->ops->ampdu_action);
+-
+ 	rcu_read_lock();
+ 
+ 	sta = sta_info_get(local, ra);
+diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
+index 206fd82..63224d1 100644
+--- a/net/mac80211/agg-tx.c
++++ b/net/mac80211/agg-tx.c
+@@ -545,7 +545,7 @@ int ieee80211_stop_tx_ba_session(struct ieee80211_hw *hw,
+ 	struct sta_info *sta;
+ 	int ret = 0;
+ 
+-	if (WARN_ON(!local->ops->ampdu_action))
++	if (!local->ops->ampdu_action)
+ 		return -EINVAL;
+ 
+ 	if (tid >= STA_TID_NUM)
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/posix-timers-fix-oops-in-clock-nanosleep-with-CLOCK_MONOTONIC_RAW.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/posix-timers-fix-oops-in-clock-nanosleep-with-CLOCK_MONOTONIC_RAW.patch
@@ -0,0 +1,43 @@
+commit 70d715fd0597f18528f389b5ac59102263067744
+Author: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
+Date:   Mon Aug 3 11:48:19 2009 +0900
+
+    posix-timers: Fix oops in clock_nanosleep() with CLOCK_MONOTONIC_RAW
+    
+    Prevent calling do_nanosleep() with clockid
+    CLOCK_MONOTONIC_RAW, it may cause oops, such as NULL pointer
+    dereference.
+    
+    Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
+    Cc: Andrew Morton <akpm@linux-foundation.org>
+    Cc: Thomas Gleixner <tglx@linutronix.de>
+    Cc: John Stultz <johnstul@us.ibm.com>
+    Cc: <stable@kernel.org>
+    LKML-Reference: <4A764FF3.50607@ct.jp.nec.com>
+    Signed-off-by: Ingo Molnar <mingo@elte.hu>
+
+diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
+index 052ec4d..d089d05 100644
+--- a/kernel/posix-timers.c
++++ b/kernel/posix-timers.c
+@@ -202,6 +202,12 @@ static int no_timer_create(struct k_itimer *new_timer)
+ 	return -EOPNOTSUPP;
+ }
+ 
++static int no_nsleep(const clockid_t which_clock, int flags,
++		     struct timespec *tsave, struct timespec __user *rmtp)
++{
++	return -EOPNOTSUPP;
++}
++
+ /*
+  * Return nonzero if we know a priori this clockid_t value is bogus.
+  */
+@@ -254,6 +260,7 @@ static __init int init_posix_timers(void)
+ 		.clock_get = posix_get_monotonic_raw,
+ 		.clock_set = do_posix_clock_nosettime,
+ 		.timer_create = no_timer_create,
++		.nsleep = no_nsleep,
+ 	};
+ 
+ 	register_posix_clock(CLOCK_REALTIME, &clock_realtime);
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/flat-fix-uninitialized-ptr-with-shared-libs.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/flat-fix-uninitialized-ptr-with-shared-libs.patch
@@ -0,0 +1,49 @@
+commit 3440625d78711bee41a84cf29c3d8c579b522666
+Author: Linus Torvalds <torvalds@linux-foundation.org>
+Date:   Thu Aug 6 15:09:34 2009 -0700
+
+    flat: fix uninitialized ptr with shared libs
+    
+    The new credentials code broke load_flat_shared_library() as it now uses
+    an uninitialized cred pointer.
+    
+    Reported-by: Bernd Schmidt <bernds_cb1@t-online.de>
+    Tested-by: Bernd Schmidt <bernds_cb1@t-online.de>
+    Cc: Mike Frysinger <vapier@gentoo.org>
+    Cc: David Howells <dhowells@redhat.com>
+    Cc: <stable@kernel.org>
+    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+
+diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
+index 697f6b5..e92f229 100644
+--- a/fs/binfmt_flat.c
++++ b/fs/binfmt_flat.c
+@@ -828,15 +828,22 @@ static int load_flat_shared_library(int id, struct lib_info *libs)
+ 	if (IS_ERR(bprm.file))
+ 		return res;
+ 
++	bprm.cred = prepare_exec_creds();
++	res = -ENOMEM;
++	if (!bprm.cred)
++		goto out;
++
+ 	res = prepare_binprm(&bprm);
+ 
+ 	if (res <= (unsigned long)-4096)
+ 		res = load_flat_file(&bprm, libs, id, NULL);
+-	if (bprm.file) {
+-		allow_write_access(bprm.file);
+-		fput(bprm.file);
+-		bprm.file = NULL;
+-	}
++
++	abort_creds(bprm.cred);
++
++out:
++	allow_write_access(bprm.file);
++	fput(bprm.file);
++
+ 	return(res);
+ }
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/mac80211-fix-spurious-delBA-handling.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/mac80211-fix-spurious-delBA-handling.patch
@@ -0,0 +1,177 @@
+commit 827d42c9ac91ddd728e4f4a31fefb906ef2ceff7
+Author: Johannes Berg <johannes@sipsolutions.net>
+Date:   Sun Nov 22 12:28:41 2009 +0100
+
+    mac80211: fix spurious delBA handling
+    
+    Lennert Buytenhek noticed that delBA handling in mac80211
+    was broken and has remotely triggerable problems, some of
+    which are due to some code shuffling I did that ended up
+    changing the order in which things were done -- this was
+    
+      commit d75636ef9c1af224f1097941879d5a8db7cd04e5
+      Author: Johannes Berg <johannes@sipsolutions.net>
+      Date:   Tue Feb 10 21:25:53 2009 +0100
+    
+        mac80211: RX aggregation: clean up stop session
+    
+    and other parts were already present in the original
+    
+      commit d92684e66091c0f0101819619b315b4bb8b5bcc5
+      Author: Ron Rindjunsky <ron.rindjunsky@intel.com>
+      Date:   Mon Jan 28 14:07:22 2008 +0200
+    
+          mac80211: A-MPDU Tx add delBA from recipient support
+    
+    The first problem is that I moved a BUG_ON before various
+    checks -- thereby making it possible to hit. As the comment
+    indicates, the BUG_ON can be removed since the ampdu_action
+    callback must already exist when the state is != IDLE.
+    
+    The second problem isn't easily exploitable but there's a
+    race condition due to unconditionally setting the state to
+    OPERATIONAL when a delBA frame is received, even when no
+    aggregation session was ever initiated. All the drivers
+    accept stopping the session even then, but that opens a
+    race window where crashes could happen before the driver
+    accepts it. Right now, a WARN_ON may happen with non-HT
+    drivers, while the race opens only for HT drivers.
+    
+    For this case, there are two things necessary to fix it:
+     1) don't process spurious delBA frames, and be more careful
+        about the session state; don't drop the lock
+    
+     2) HT drivers need to be prepared to handle a session stop
+        even before the session was really started -- this is
+        true for all drivers (that support aggregation) but
+        iwlwifi which can be fixed easily. The other HT drivers
+        (ath9k and ar9170) are behaving properly already.
+    
+    Reported-by: Lennert Buytenhek <buytenh@marvell.com>
+    Cc: stable@kernel.org
+    Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
+    Signed-off-by: John W. Linville <linville@tuxdriver.com>
+
+diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c
+index fb9bcfa..b7e196e 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-tx.c
++++ b/drivers/net/wireless/iwlwifi/iwl-tx.c
+@@ -1277,8 +1277,16 @@ int iwl_tx_agg_stop(struct iwl_priv *priv , const u8 *ra, u16 tid)
+ 		return -ENXIO;
+ 	}
+ 
++	if (priv->stations[sta_id].tid[tid].agg.state ==
++				IWL_EMPTYING_HW_QUEUE_ADDBA) {
++		IWL_DEBUG_HT(priv, "AGG stop before setup done\n");
++		ieee80211_stop_tx_ba_cb_irqsafe(priv->hw, ra, tid);
++		priv->stations[sta_id].tid[tid].agg.state = IWL_AGG_OFF;
++		return 0;
++	}
++
+ 	if (priv->stations[sta_id].tid[tid].agg.state != IWL_AGG_ON)
+-		IWL_WARN(priv, "Stopping AGG while state not IWL_AGG_ON\n");
++		IWL_WARN(priv, "Stopping AGG while state not ON or starting\n");
+ 
+ 	tid_data = &priv->stations[sta_id].tid[tid];
+ 	ssn = (tid_data->seq_number & IEEE80211_SCTL_SEQ) >> 4;
+diff --git a/include/net/mac80211.h b/include/net/mac80211.h
+index c75b960..998c30f 100644
+--- a/include/net/mac80211.h
++++ b/include/net/mac80211.h
+@@ -1283,6 +1283,12 @@ enum ieee80211_filter_flags {
+  *
+  * These flags are used with the ampdu_action() callback in
+  * &struct ieee80211_ops to indicate which action is needed.
++ *
++ * Note that drivers MUST be able to deal with a TX aggregation
++ * session being stopped even before they OK'ed starting it by
++ * calling ieee80211_start_tx_ba_cb(_irqsafe), because the peer
++ * might receive the addBA frame and send a delBA right away!
++ *
+  * @IEEE80211_AMPDU_RX_START: start Rx aggregation
+  * @IEEE80211_AMPDU_RX_STOP: stop Rx aggregation
+  * @IEEE80211_AMPDU_TX_START: start Tx aggregation
+diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
+index 63224d1..89e238b 100644
+--- a/net/mac80211/agg-tx.c
++++ b/net/mac80211/agg-tx.c
+@@ -123,13 +123,18 @@ void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u1
+ 	ieee80211_tx_skb(sdata, skb, 0);
+ }
+ 
+-static int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
+-					   enum ieee80211_back_parties initiator)
++int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
++				    enum ieee80211_back_parties initiator)
+ {
+ 	struct ieee80211_local *local = sta->local;
+ 	int ret;
+ 	u8 *state;
+ 
++#ifdef CONFIG_MAC80211_HT_DEBUG
++	printk(KERN_DEBUG "Tx BA session stop requested for %pM tid %u\n",
++	       sta->sta.addr, tid);
++#endif /* CONFIG_MAC80211_HT_DEBUG */
++
+ 	state = &sta->ampdu_mlme.tid_state_tx[tid];
+ 
+ 	if (*state == HT_AGG_STATE_OPERATIONAL)
+@@ -143,7 +148,6 @@ static int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
+ 
+ 	/* HW shall not deny going back to legacy */
+ 	if (WARN_ON(ret)) {
+-		*state = HT_AGG_STATE_OPERATIONAL;
+ 		/*
+ 		 * We may have pending packets get stuck in this case...
+ 		 * Not bothering with a workaround for now.
+@@ -525,11 +529,6 @@ int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
+ 		goto unlock;
+ 	}
+ 
+-#ifdef CONFIG_MAC80211_HT_DEBUG
+-	printk(KERN_DEBUG "Tx BA session stop requested for %pM tid %u\n",
+-	       sta->sta.addr, tid);
+-#endif /* CONFIG_MAC80211_HT_DEBUG */
+-
+ 	ret = ___ieee80211_stop_tx_ba_session(sta, tid, initiator);
+ 
+  unlock:
+diff --git a/net/mac80211/ht.c b/net/mac80211/ht.c
+index 48ef1a2..cdc58e6 100644
+--- a/net/mac80211/ht.c
++++ b/net/mac80211/ht.c
+@@ -141,7 +141,6 @@ void ieee80211_process_delba(struct ieee80211_sub_if_data *sdata,
+ 			     struct sta_info *sta,
+ 			     struct ieee80211_mgmt *mgmt, size_t len)
+ {
+-	struct ieee80211_local *local = sdata->local;
+ 	u16 tid, params;
+ 	u16 initiator;
+ 
+@@ -161,10 +160,9 @@ void ieee80211_process_delba(struct ieee80211_sub_if_data *sdata,
+ 						 WLAN_BACK_INITIATOR, 0);
+ 	else { /* WLAN_BACK_RECIPIENT */
+ 		spin_lock_bh(&sta->lock);
+-		sta->ampdu_mlme.tid_state_tx[tid] =
+-				HT_AGG_STATE_OPERATIONAL;
++		if (sta->ampdu_mlme.tid_state_tx[tid] & HT_ADDBA_REQUESTED_MSK)
++			___ieee80211_stop_tx_ba_session(sta, tid,
++							WLAN_BACK_RECIPIENT);
+ 		spin_unlock_bh(&sta->lock);
+-		ieee80211_stop_tx_ba_session(&local->hw, sta->sta.addr, tid,
+-					     WLAN_BACK_RECIPIENT);
+ 	}
+ }
+diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
+index a910bf1..10d316e 100644
+--- a/net/mac80211/ieee80211_i.h
++++ b/net/mac80211/ieee80211_i.h
+@@ -1091,6 +1091,8 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
+ 
+ int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
+ 				   enum ieee80211_back_parties initiator);
++int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
++				    enum ieee80211_back_parties initiator);
+ 
+ /* Spectrum management */
+ void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata,
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/add-fno-delete-null-pointer-checks-to-cflags.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/add-fno-delete-null-pointer-checks-to-cflags.patch
@@ -0,0 +1,57 @@
+commit a3ca86aea507904148870946d599e07a340b39bf
+Author: Eugene Teo <eteo@redhat.com>
+Date:   Wed Jul 15 14:59:10 2009 +0800
+
+    Add '-fno-delete-null-pointer-checks' to gcc CFLAGS
+    
+    Turning on this flag could prevent the compiler from optimising away
+    some "useless" checks for null pointers.  Such bugs can sometimes become
+    exploitable at compile time because of the -O2 optimisation.
+    
+    See http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Optimize-Options.html
+    
+    An example that clearly shows this 'problem' is commit 6bf67672.
+    
+     static void __devexit agnx_pci_remove(struct pci_dev *pdev)
+     {
+         struct ieee80211_hw *dev = pci_get_drvdata(pdev);
+    -    struct agnx_priv *priv = dev->priv;
+    +    struct agnx_priv *priv;
+         AGNX_TRACE;
+    
+         if (!dev)
+             return;
+    +    priv = dev->priv;
+    
+    By reverting this patch, and compile it with and without
+    -fno-delete-null-pointer-checks flag, we can see that the check for dev
+    is compiled away.
+    
+        call    printk  #
+    -   testq   %r12, %r12  # dev
+    -   je  .L94    #,
+        movq    %r12, %rdi  # dev,
+    
+    Clearly the 'fix' is to stop using dev before it is tested, but building
+    with -fno-delete-null-pointer-checks flag at least makes it harder to
+    abuse.
+    
+    Signed-off-by: Eugene Teo <eugeneteo@kernel.sg>
+    Acked-by: Eric Paris <eparis@redhat.com>
+    Acked-by: Wang Cong <amwang@redhat.com>
+    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+
+Backported to Debian's 2.6.30 by dann frazier <dannf@debian.org>
+
+--- linux-source-2.6.30.orig/Makefile	2009-07-07 09:13:25.000000000 -0600
++++ linux-source-2.6.30/Makefile	2009-07-16 23:57:06.000000000 -0600
+@@ -352,7 +352,8 @@
+ 
+ KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
+ 		   -fno-strict-aliasing -fno-common \
+-		   -Werror-implicit-function-declaration
++		   -Werror-implicit-function-declaration \
++		   -fno-delete-null-pointer-checks
+ KBUILD_AFLAGS   := -D__ASSEMBLY__
+ 
+ # Read KERNELRELEASE from include/config/kernel.release (if it exists)
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/tun-tap-fix-crash-on-open-and-poll.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/tun-tap-fix-crash-on-open-and-poll.patch
@@ -0,0 +1,41 @@
+commit 3c8a9c63d5fd738c261bd0ceece04d9c8357ca13
+Author: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
+Date:   Sun Jul 5 19:48:35 2009 +0000
+
+    tun/tap: Fix crashes if open() /dev/net/tun and then poll() it.
+    
+    Fix NULL pointer dereference in tun_chr_pool() introduced by commit
+    33dccbb050bbe35b88ca8cf1228dcf3e4d4b3554 ("tun: Limit amount of queued
+    packets per device") and triggered by this code:
+    
+    	int fd;
+    	struct pollfd pfd;
+    	fd = open("/dev/net/tun", O_RDWR);
+    	pfd.fd = fd;
+    	pfd.events = POLLIN | POLLOUT;
+    	poll(&pfd, 1, 0);
+    
+    Reported-by: Eugene Kapun <abacabadabacaba@gmail.com>
+    Signed-off-by: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
+    Signed-off-by: David S. Miller <davem@davemloft.net>
+
+diff --git a/drivers/net/tun.c b/drivers/net/tun.c
+index b393536..027f7ab 100644
+--- a/drivers/net/tun.c
++++ b/drivers/net/tun.c
+@@ -486,12 +486,14 @@ static unsigned int tun_chr_poll(struct file *file, poll_table * wait)
+ {
+ 	struct tun_file *tfile = file->private_data;
+ 	struct tun_struct *tun = __tun_get(tfile);
+-	struct sock *sk = tun->sk;
++	struct sock *sk;
+ 	unsigned int mask = 0;
+ 
+ 	if (!tun)
+ 		return POLLERR;
+ 
++	sk = tun->sk;
++
+ 	DBG(KERN_INFO "%s: tun_chr_poll\n", tun->dev->name);
+ 
+ 	poll_wait(file, &tun->socket.wait, wait);
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/do_sigaltstack-avoid-copying-stack_t-as-a-structure-to-userspace.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/do_sigaltstack-avoid-copying-stack_t-as-a-structure-to-userspace.patch
@@ -0,0 +1,61 @@
+commit 0083fc2c50e6c5127c2802ad323adf8143ab7856
+Author: Linus Torvalds <torvalds@linux-foundation.org>
+Date:   Sat Aug 1 10:34:56 2009 -0700
+
+    do_sigaltstack: avoid copying 'stack_t' as a structure to user space
+    
+    Ulrich Drepper correctly points out that there is generally padding in
+    the structure on 64-bit hosts, and that copying the structure from
+    kernel to user space can leak information from the kernel stack in those
+    padding bytes.
+    
+    Avoid the whole issue by just copying the three members one by one
+    instead, which also means that the function also can avoid the need for
+    a stack frame.  This also happens to match how we copy the new structure
+    from user space, so it all even makes sense.
+    
+    [ The obvious solution of adding a memset() generates horrid code, gcc
+      does really stupid things. ]
+    
+    Reported-by: Ulrich Drepper <drepper@redhat.com>
+    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+
+Adjusted to apply to Debian's 2.6.30 by dann frazier <dannf@debian.org>
+
+diff -urpN linux-source-2.6.30.orig/kernel/signal.c linux-source-2.6.30/kernel/signal.c
+--- linux-source-2.6.30.orig/kernel/signal.c	2009-08-14 18:03:20.000000000 -0600
++++ linux-source-2.6.30/kernel/signal.c	2009-08-14 18:04:08.000000000 -0600
+@@ -2414,11 +2414,9 @@ do_sigaltstack (const stack_t __user *us
+ 	stack_t oss;
+ 	int error;
+ 
+-	if (uoss) {
+-		oss.ss_sp = (void __user *) current->sas_ss_sp;
+-		oss.ss_size = current->sas_ss_size;
+-		oss.ss_flags = sas_ss_flags(sp);
+-	}
++	oss.ss_sp = (void __user *) current->sas_ss_sp;
++	oss.ss_size = current->sas_ss_size;
++	oss.ss_flags = sas_ss_flags(sp);
+ 
+ 	if (uss) {
+ 		void __user *ss_sp;
+@@ -2461,13 +2459,16 @@ do_sigaltstack (const stack_t __user *us
+ 		current->sas_ss_size = ss_size;
+ 	}
+ 
++	error = 0;
+ 	if (uoss) {
+ 		error = -EFAULT;
+-		if (copy_to_user(uoss, &oss, sizeof(oss)))
++		if (!access_ok(VERIFY_WRITE, uoss, sizeof(*uoss)))
+ 			goto out;
++		error = __put_user(oss.ss_sp, &uoss->ss_sp) |
++			__put_user(oss.ss_size, &uoss->ss_size) |
++			__put_user(oss.ss_flags, &uoss->ss_flags);
+ 	}
+ 
+-	error = 0;
+ out:
+ 	return error;
+ }
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/ipv4-missing-container_of-change.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/ipv4-missing-container_of-change.patch
@@ -0,0 +1,34 @@
+commit bbf31bf18d34caa87dd01f08bf713635593697f2
+Author: David Ford <david@blue-labs.org>
+Date:   Sun Nov 29 23:02:22 2009 -0800
+
+    ipv4: additional update of dev_net(dev) to struct *net in ip_fragment.c, NULL ptr OOPS
+    
+    ipv4 ip_frag_reasm(), fully replace 'dev_net(dev)' with 'net', defined
+    previously patched into 2.6.29.
+    
+    Between 2.6.28.10 and 2.6.29, net/ipv4/ip_fragment.c was patched,
+    changing from dev_net(dev) to container_of(...).  Unfortunately the goto
+    section (out_fail) on oversized packets inside ip_frag_reasm() didn't
+    get touched up as well.  Oversized IP packets cause a NULL pointer
+    dereference and immediate hang.
+    
+    I discovered this running openvasd and my previous email on this is
+    titled:  NULL pointer dereference at 2.6.32-rc8:net/ipv4/ip_fragment.c:566
+    
+    Signed-off-by: David Ford <david@blue-labs.org>
+    Signed-off-by: David S. Miller <davem@davemloft.net>
+
+diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
+index 575f9bd..d3fe10b 100644
+--- a/net/ipv4/ip_fragment.c
++++ b/net/ipv4/ip_fragment.c
+@@ -563,7 +563,7 @@ out_oversize:
+ 		printk(KERN_INFO "Oversized IP packet from %pI4.\n",
+ 			&qp->saddr);
+ out_fail:
+-	IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_REASMFAILS);
++	IP_INC_STATS_BH(net, IPSTATS_MIB_REASMFAILS);
+ 	return err;
+ }
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/alpha-fix-percpu-build-breakage.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/alpha-fix-percpu-build-breakage.patch
@@ -0,0 +1,95 @@
+Message-Id: <200906280107.n5S17MVD011837@imap1.linux-foundation.org>
+To: mm-commits@vger.kernel.org
+Cc: tj@kernel.org, ink@jurassic.park.msu.ru, max@stro.at,
+	rth@twiddle.net
+From: akpm@linux-foundation.org
+Date: Sat, 27 Jun 2009 18:07:22 -0700
+Subject: alpha: fix percpu build breakage
+
+
+
+alpha percpu access requires custom SHIFT_PERCPU_PTR() definition for
+modules to work around addressing range limitation.  This is done via
+generating inline assembly using C preprocessing which forces the
+assembler to generate external reference.  This happens behind the
+compiler's back and makes the compiler think that static percpu variables
+in modules are unused.
+
+This used to be worked around by using __unused attribute for percpu
+variables which prevent the compiler from omitting the variable; however,
+recent declare/definition attribute unification change broke this as
+__used can't be used for declaration.  Also, in the process,
+PER_CPU_ATTRIBUTES definition in alpha percpu.h got broken.
+
+This patch adds PER_CPU_DEF_ATTRIBUTES which is only used for definitions
+and make alpha use it to add __used for percpu variables in modules.  This
+also fixes the PER_CPU_ATTRIBUTES double definition bug.
+
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Cc: maximilian attems <max@stro.at>
+Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
+Cc: Richard Henderson <rth@twiddle.net>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+---
+
+ arch/alpha/include/asm/percpu.h |    6 +++---
+ include/asm-generic/percpu.h    |    4 ++++
+ include/linux/percpu-defs.h     |    3 ++-
+ 3 files changed, 9 insertions(+), 4 deletions(-)
+
+diff -puN arch/alpha/include/asm/percpu.h~alpha-fix-percpu-build-breakage arch/alpha/include/asm/percpu.h
+--- a/arch/alpha/include/asm/percpu.h~alpha-fix-percpu-build-breakage
++++ a/arch/alpha/include/asm/percpu.h
+@@ -30,7 +30,7 @@ extern unsigned long __per_cpu_offset[NR
+ 
+ #ifndef MODULE
+ #define SHIFT_PERCPU_PTR(var, offset) RELOC_HIDE(&per_cpu_var(var), (offset))
+-#define PER_CPU_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
+ #else
+ /*
+  * To calculate addresses of locally defined variables, GCC uses 32-bit
+@@ -49,7 +49,7 @@ extern unsigned long __per_cpu_offset[NR
+ 		: "=&r"(__ptr), "=&r"(tmp_gp));		\
+ 	(typeof(&per_cpu_var(var)))(__ptr + (offset)); })
+ 
+-#define PER_CPU_ATTRIBUTES	__used
++#define PER_CPU_DEF_ATTRIBUTES	__used
+ 
+ #endif /* MODULE */
+ 
+@@ -71,7 +71,7 @@ extern unsigned long __per_cpu_offset[NR
+ #define __get_cpu_var(var)		per_cpu_var(var)
+ #define __raw_get_cpu_var(var)		per_cpu_var(var)
+ 
+-#define PER_CPU_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
+ 
+ #endif /* SMP */
+ 
+diff -puN include/asm-generic/percpu.h~alpha-fix-percpu-build-breakage include/asm-generic/percpu.h
+--- a/include/asm-generic/percpu.h~alpha-fix-percpu-build-breakage
++++ a/include/asm-generic/percpu.h
+@@ -97,4 +97,8 @@ extern void setup_per_cpu_areas(void);
+ #define PER_CPU_ATTRIBUTES
+ #endif
+ 
++#ifndef PER_CPU_DEF_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
++#endif
++
+ #endif /* _ASM_GENERIC_PERCPU_H_ */
+diff -puN include/linux/percpu-defs.h~alpha-fix-percpu-build-breakage include/linux/percpu-defs.h
+--- a/include/linux/percpu-defs.h~alpha-fix-percpu-build-breakage
++++ a/include/linux/percpu-defs.h
+@@ -24,7 +24,8 @@
+ 
+ #define DEFINE_PER_CPU_SECTION(type, name, section)			\
+ 	__attribute__((__section__(PER_CPU_BASE_SECTION section)))	\
+-	PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
++	PER_CPU_ATTRIBUTES PER_CPU_DEF_ATTRIBUTES			\
++	__typeof__(type) per_cpu__##name
+ 
+ /*
+  * Variant on the per-CPU variable declaration/definition theme used for
+_
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/wireless-regulatory-default-EU.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/wireless-regulatory-default-EU.patch
@@ -0,0 +1,13 @@
+diff --git a/net/wireless/reg.c b/net/wireless/reg.c
+index 855bff4..5969480 100644
+--- a/net/wireless/reg.c
++++ b/net/wireless/reg.c
+@@ -29,7 +29,7 @@
+ #include <net/wireless.h>
+ #include "core.h"
+ 
+-static char *ieee80211_regdom = "US";
++static char *ieee80211_regdom = "EU";
+ module_param(ieee80211_regdom, charp, 0444);
+ MODULE_PARM_DESC(ieee80211_regdom, "IEEE 802.11 regulatory domain code");
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/block-fix-sg-sg_dxfer_to_from_dev-regression.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/block-fix-sg-sg_dxfer_to_from_dev-regression.patch
@@ -0,0 +1,143 @@
+From ecb554a846f8e9d2a58f6d6c118168a63ac065aa Mon Sep 17 00:00:00 2001
+From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
+Date: Thu, 9 Jul 2009 14:46:53 +0200
+Subject: block: fix sg SG_DXFER_TO_FROM_DEV regression
+
+From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
+
+commit ecb554a846f8e9d2a58f6d6c118168a63ac065aa upstream.
+
+I overlooked SG_DXFER_TO_FROM_DEV support when I converted sg to use
+the block layer mapping API (2.6.28).
+
+Douglas Gilbert explained SG_DXFER_TO_FROM_DEV:
+
+http://www.spinics.net/lists/linux-scsi/msg37135.html
+
+=
+The semantics of SG_DXFER_TO_FROM_DEV were:
+   - copy user space buffer to kernel (LLD) buffer
+   - do SCSI command which is assumed to be of the DATA_IN
+     (data from device) variety. This would overwrite
+     some or all of the kernel buffer
+   - copy kernel (LLD) buffer back to the user space.
+
+The idea was to detect short reads by filling the original
+user space buffer with some marker bytes ("0xec" it would
+seem in this report). The "resid" value is a better way
+of detecting short reads but that was only added this century
+and requires co-operation from the LLD.
+=
+
+This patch changes the block layer mapping API to support this
+semantics. This simply adds another field to struct rq_map_data and
+enables __bio_copy_iov() to copy data from user space even with READ
+requests.
+
+It's better to add the flags field and kills null_mapped and the new
+from_user fields in struct rq_map_data but that approach makes it
+difficult to send this patch to stable trees because st and osst
+drivers use struct rq_map_data (they were converted to use the block
+layer in 2.6.29 and 2.6.30). Well, I should clean up the block layer
+mapping API.
+
+zhou sf reported this regiression and tested this patch:
+
+http://www.spinics.net/lists/linux-scsi/msg37128.html
+http://www.spinics.net/lists/linux-scsi/msg37168.html
+
+Reported-by: zhou sf <sxzzsf@gmail.com>
+Tested-by: zhou sf <sxzzsf@gmail.com>
+Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
+Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/sg.c      |    4 ++++
+ fs/bio.c               |   22 ++++++++++++----------
+ include/linux/blkdev.h |    1 +
+ 3 files changed, 17 insertions(+), 10 deletions(-)
+
+--- a/drivers/scsi/sg.c
++++ b/drivers/scsi/sg.c
+@@ -1656,6 +1656,10 @@ static int sg_start_req(Sg_request *srp,
+ 		md->nr_entries = req_schp->k_use_sg;
+ 		md->offset = 0;
+ 		md->null_mapped = hp->dxferp ? 0 : 1;
++		if (dxfer_dir == SG_DXFER_TO_FROM_DEV)
++			md->from_user = 1;
++		else
++			md->from_user = 0;
+ 	}
+ 
+ 	if (iov_count) {
+--- a/fs/bio.c
++++ b/fs/bio.c
+@@ -706,14 +706,13 @@ static struct bio_map_data *bio_alloc_ma
+ }
+ 
+ static int __bio_copy_iov(struct bio *bio, struct bio_vec *iovecs,
+-			  struct sg_iovec *iov, int iov_count, int uncopy,
+-			  int do_free_page)
++			  struct sg_iovec *iov, int iov_count,
++			  int to_user, int from_user, int do_free_page)
+ {
+ 	int ret = 0, i;
+ 	struct bio_vec *bvec;
+ 	int iov_idx = 0;
+ 	unsigned int iov_off = 0;
+-	int read = bio_data_dir(bio) == READ;
+ 
+ 	__bio_for_each_segment(bvec, bio, i, 0) {
+ 		char *bv_addr = page_address(bvec->bv_page);
+@@ -728,13 +727,14 @@ static int __bio_copy_iov(struct bio *bi
+ 			iov_addr = iov[iov_idx].iov_base + iov_off;
+ 
+ 			if (!ret) {
+-				if (!read && !uncopy)
+-					ret = copy_from_user(bv_addr, iov_addr,
+-							     bytes);
+-				if (read && uncopy)
++				if (to_user)
+ 					ret = copy_to_user(iov_addr, bv_addr,
+ 							   bytes);
+ 
++				if (from_user)
++					ret = copy_from_user(bv_addr, iov_addr,
++							     bytes);
++
+ 				if (ret)
+ 					ret = -EFAULT;
+ 			}
+@@ -771,7 +771,8 @@ int bio_uncopy_user(struct bio *bio)
+ 
+ 	if (!bio_flagged(bio, BIO_NULL_MAPPED))
+ 		ret = __bio_copy_iov(bio, bmd->iovecs, bmd->sgvecs,
+-				     bmd->nr_sgvecs, 1, bmd->is_our_pages);
++				     bmd->nr_sgvecs, bio_data_dir(bio) == READ,
++				     0, bmd->is_our_pages);
+ 	bio_free_map_data(bmd);
+ 	bio_put(bio);
+ 	return ret;
+@@ -876,8 +877,9 @@ struct bio *bio_copy_user_iov(struct req
+ 	/*
+ 	 * success
+ 	 */
+-	if (!write_to_vm && (!map_data || !map_data->null_mapped)) {
+-		ret = __bio_copy_iov(bio, bio->bi_io_vec, iov, iov_count, 0, 0);
++	if ((!write_to_vm && (!map_data || !map_data->null_mapped)) ||
++	    (map_data && map_data->from_user)) {
++		ret = __bio_copy_iov(bio, bio->bi_io_vec, iov, iov_count, 0, 1, 0);
+ 		if (ret)
+ 			goto cleanup;
+ 	}
+--- a/include/linux/blkdev.h
++++ b/include/linux/blkdev.h
+@@ -723,6 +723,7 @@ struct rq_map_data {
+ 	int nr_entries;
+ 	unsigned long offset;
+ 	int null_mapped;
++	int from_user;
+ };
+ 
+ struct req_iterator {
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/sched_rt-fix-overload-bug-on-rt-group-scheduling.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/sched_rt-fix-overload-bug-on-rt-group-scheduling.patch
@@ -0,0 +1,96 @@
+From a1ba4d8ba9f06a397e97cbd67a93ee306860b40a Mon Sep 17 00:00:00 2001
+From: Peter Zijlstra <peterz@infradead.org>
+Date: Wed, 1 Apr 2009 18:40:15 +0200
+Subject: sched_rt: Fix overload bug on rt group scheduling
+
+From: Peter Zijlstra <peterz@infradead.org>
+
+commit a1ba4d8ba9f06a397e97cbd67a93ee306860b40a upstream.
+
+Fixes an easily triggerable BUG() when setting process affinities.
+
+Make sure to count the number of migratable tasks in the same place:
+the root rt_rq. Otherwise the number doesn't make sense and we'll hit
+the BUG in set_cpus_allowed_rt().
+
+Also, make sure we only count tasks, not groups (this is probably
+already taken care of by the fact that rt_se->nr_cpus_allowed will be 0
+for groups, but be more explicit)
+
+Tested-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
+Acked-by: Gregory Haskins <ghaskins@novell.com>
+LKML-Reference: <1247067476.9777.57.camel@twins>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/sched.c    |    1 +
+ kernel/sched_rt.c |   18 +++++++++++++++++-
+ 2 files changed, 18 insertions(+), 1 deletion(-)
+
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -497,6 +497,7 @@ struct rt_rq {
+ #endif
+ #ifdef CONFIG_SMP
+ 	unsigned long rt_nr_migratory;
++	unsigned long rt_nr_total;
+ 	int overloaded;
+ 	struct plist_head pushable_tasks;
+ #endif
+--- a/kernel/sched_rt.c
++++ b/kernel/sched_rt.c
+@@ -10,6 +10,8 @@ static inline struct task_struct *rt_tas
+ 
+ #ifdef CONFIG_RT_GROUP_SCHED
+ 
++#define rt_entity_is_task(rt_se) (!(rt_se)->my_q)
++
+ static inline struct rq *rq_of_rt_rq(struct rt_rq *rt_rq)
+ {
+ 	return rt_rq->rq;
+@@ -22,6 +24,8 @@ static inline struct rt_rq *rt_rq_of_se(
+ 
+ #else /* CONFIG_RT_GROUP_SCHED */
+ 
++#define rt_entity_is_task(rt_se) (1)
++
+ static inline struct rq *rq_of_rt_rq(struct rt_rq *rt_rq)
+ {
+ 	return container_of(rt_rq, struct rq, rt);
+@@ -73,7 +77,7 @@ static inline void rt_clear_overload(str
+ 
+ static void update_rt_migration(struct rt_rq *rt_rq)
+ {
+-	if (rt_rq->rt_nr_migratory && (rt_rq->rt_nr_running > 1)) {
++	if (rt_rq->rt_nr_migratory && rt_rq->rt_nr_total > 1) {
+ 		if (!rt_rq->overloaded) {
+ 			rt_set_overload(rq_of_rt_rq(rt_rq));
+ 			rt_rq->overloaded = 1;
+@@ -86,6 +90,12 @@ static void update_rt_migration(struct r
+ 
+ static void inc_rt_migration(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq)
+ {
++	if (!rt_entity_is_task(rt_se))
++		return;
++
++	rt_rq = &rq_of_rt_rq(rt_rq)->rt;
++
++	rt_rq->rt_nr_total++;
+ 	if (rt_se->nr_cpus_allowed > 1)
+ 		rt_rq->rt_nr_migratory++;
+ 
+@@ -94,6 +104,12 @@ static void inc_rt_migration(struct sche
+ 
+ static void dec_rt_migration(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq)
+ {
++	if (!rt_entity_is_task(rt_se))
++		return;
++
++	rt_rq = &rq_of_rt_rq(rt_rq)->rt;
++
++	rt_rq->rt_nr_total--;
+ 	if (rt_se->nr_cpus_allowed > 1)
+ 		rt_rq->rt_nr_migratory--;
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/stable/2.6.30.7.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/stable/2.6.30.7.patch
@@ -0,0 +1,956 @@
+diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/pgtable_64.h
+index b049abf..0ff92fa 100644
+--- a/arch/sparc/include/asm/pgtable_64.h
++++ b/arch/sparc/include/asm/pgtable_64.h
+@@ -726,11 +726,17 @@ extern unsigned long pte_file(pte_t);
+ extern pte_t pgoff_to_pte(unsigned long);
+ #define PTE_FILE_MAX_BITS	(64UL - PAGE_SHIFT - 1UL)
+ 
+-extern unsigned long *sparc64_valid_addr_bitmap;
++extern unsigned long sparc64_valid_addr_bitmap[];
+ 
+ /* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
+-#define kern_addr_valid(addr)	\
+-	(test_bit(__pa((unsigned long)(addr))>>22, sparc64_valid_addr_bitmap))
++static inline bool kern_addr_valid(unsigned long addr)
++{
++	unsigned long paddr = __pa(addr);
++
++	if ((paddr >> 41UL) != 0UL)
++		return false;
++	return test_bit(paddr >> 22, sparc64_valid_addr_bitmap);
++}
+ 
+ extern int page_in_phys_avail(unsigned long paddr);
+ 
+diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
+index 5deabe9..bed910a 100644
+--- a/arch/sparc/kernel/irq_64.c
++++ b/arch/sparc/kernel/irq_64.c
+@@ -902,7 +902,7 @@ void notrace init_irqwork_curcpu(void)
+  * Therefore you cannot make any OBP calls, not even prom_printf,
+  * from these two routines.
+  */
+-static void __cpuinit register_one_mondo(unsigned long paddr, unsigned long type, unsigned long qmask)
++static void __cpuinit notrace register_one_mondo(unsigned long paddr, unsigned long type, unsigned long qmask)
+ {
+ 	unsigned long num_entries = (qmask + 1) / 64;
+ 	unsigned long status;
+diff --git a/arch/sparc/kernel/ktlb.S b/arch/sparc/kernel/ktlb.S
+index cef8def..3ea6e8c 100644
+--- a/arch/sparc/kernel/ktlb.S
++++ b/arch/sparc/kernel/ktlb.S
+@@ -151,12 +151,46 @@ kvmap_dtlb_4v:
+ 	 * Must preserve %g1 and %g6 (TAG).
+ 	 */
+ kvmap_dtlb_tsb4m_miss:
+-	sethi		%hi(kpte_linear_bitmap), %g2
+-	or		%g2, %lo(kpte_linear_bitmap), %g2
++	/* Clear the PAGE_OFFSET top virtual bits, shift
++	 * down to get PFN, and make sure PFN is in range.
++	 */
++	sllx		%g4, 21, %g5
+ 
+-	/* Clear the PAGE_OFFSET top virtual bits, then shift
+-	 * down to get a 256MB physical address index.
++	/* Check to see if we know about valid memory at the 4MB
++	 * chunk this physical address will reside within.
+ 	 */
++	srlx		%g5, 21 + 41, %g2
++	brnz,pn		%g2, kvmap_dtlb_longpath
++	 nop
++
++	/* This unconditional branch and delay-slot nop gets patched
++	 * by the sethi sequence once the bitmap is properly setup.
++	 */
++	.globl		valid_addr_bitmap_insn
++valid_addr_bitmap_insn:
++	ba,pt		%xcc, 2f
++	 nop
++	.subsection	2
++	.globl		valid_addr_bitmap_patch
++valid_addr_bitmap_patch:
++	sethi		%hi(sparc64_valid_addr_bitmap), %g7
++	or		%g7, %lo(sparc64_valid_addr_bitmap), %g7
++	.previous
++
++	srlx		%g5, 21 + 22, %g2
++	srlx		%g2, 6, %g5
++	and		%g2, 63, %g2
++	sllx		%g5, 3, %g5
++	ldx		[%g7 + %g5], %g5
++	mov		1, %g7
++	sllx		%g7, %g2, %g7
++	andcc		%g5, %g7, %g0
++	be,pn		%xcc, kvmap_dtlb_longpath
++
++2:	 sethi		%hi(kpte_linear_bitmap), %g2
++	or		%g2, %lo(kpte_linear_bitmap), %g2
++
++	/* Get the 256MB physical address index. */
+ 	sllx		%g4, 21, %g5
+ 	mov		1, %g7
+ 	srlx		%g5, 21 + 28, %g5
+diff --git a/arch/sparc/kernel/nmi.c b/arch/sparc/kernel/nmi.c
+index 2c0cc72..b75bf50 100644
+--- a/arch/sparc/kernel/nmi.c
++++ b/arch/sparc/kernel/nmi.c
+@@ -103,7 +103,7 @@ notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs)
+ 	}
+ 	if (!touched && __get_cpu_var(last_irq_sum) == sum) {
+ 		local_inc(&__get_cpu_var(alert_counter));
+-		if (local_read(&__get_cpu_var(alert_counter)) == 5 * nmi_hz)
++		if (local_read(&__get_cpu_var(alert_counter)) == 30 * nmi_hz)
+ 			die_nmi("BUG: NMI Watchdog detected LOCKUP",
+ 				regs, panic_on_timeout);
+ 	} else {
+diff --git a/arch/sparc/kernel/sys32.S b/arch/sparc/kernel/sys32.S
+index f061c4d..de8e9b5 100644
+--- a/arch/sparc/kernel/sys32.S
++++ b/arch/sparc/kernel/sys32.S
+@@ -134,7 +134,7 @@ SIGN1(sys32_getpeername, sys_getpeername, %o0)
+ SIGN1(sys32_getsockname, sys_getsockname, %o0)
+ SIGN2(sys32_ioprio_get, sys_ioprio_get, %o0, %o1)
+ SIGN3(sys32_ioprio_set, sys_ioprio_set, %o0, %o1, %o2)
+-SIGN2(sys32_splice, sys_splice, %o0, %o1)
++SIGN2(sys32_splice, sys_splice, %o0, %o2)
+ SIGN2(sys32_sync_file_range, compat_sync_file_range, %o0, %o5)
+ SIGN2(sys32_tee, sys_tee, %o0, %o1)
+ SIGN1(sys32_vmsplice, compat_sys_vmsplice, %o0)
+diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
+index f26a352..397a99d 100644
+--- a/arch/sparc/mm/init_64.c
++++ b/arch/sparc/mm/init_64.c
+@@ -145,7 +145,8 @@ static void __init read_obp_memory(const char *property,
+ 	     cmp_p64, NULL);
+ }
+ 
+-unsigned long *sparc64_valid_addr_bitmap __read_mostly;
++unsigned long sparc64_valid_addr_bitmap[VALID_ADDR_BITMAP_BYTES /
++					sizeof(unsigned long)];
+ EXPORT_SYMBOL(sparc64_valid_addr_bitmap);
+ 
+ /* Kernel physical address base and size in bytes.  */
+@@ -1876,7 +1877,7 @@ static int pavail_rescan_ents __initdata;
+  * memory list again, and make sure it provides at least as much
+  * memory as 'pavail' does.
+  */
+-static void __init setup_valid_addr_bitmap_from_pavail(void)
++static void __init setup_valid_addr_bitmap_from_pavail(unsigned long *bitmap)
+ {
+ 	int i;
+ 
+@@ -1899,8 +1900,7 @@ static void __init setup_valid_addr_bitmap_from_pavail(void)
+ 
+ 				if (new_start <= old_start &&
+ 				    new_end >= (old_start + PAGE_SIZE)) {
+-					set_bit(old_start >> 22,
+-						sparc64_valid_addr_bitmap);
++					set_bit(old_start >> 22, bitmap);
+ 					goto do_next_page;
+ 				}
+ 			}
+@@ -1921,20 +1921,21 @@ static void __init setup_valid_addr_bitmap_from_pavail(void)
+ 	}
+ }
+ 
++static void __init patch_tlb_miss_handler_bitmap(void)
++{
++	extern unsigned int valid_addr_bitmap_insn[];
++	extern unsigned int valid_addr_bitmap_patch[];
++
++	valid_addr_bitmap_insn[1] = valid_addr_bitmap_patch[1];
++	mb();
++	valid_addr_bitmap_insn[0] = valid_addr_bitmap_patch[0];
++	flushi(&valid_addr_bitmap_insn[0]);
++}
++
+ void __init mem_init(void)
+ {
+ 	unsigned long codepages, datapages, initpages;
+ 	unsigned long addr, last;
+-	int i;
+-
+-	i = last_valid_pfn >> ((22 - PAGE_SHIFT) + 6);
+-	i += 1;
+-	sparc64_valid_addr_bitmap = (unsigned long *) alloc_bootmem(i << 3);
+-	if (sparc64_valid_addr_bitmap == NULL) {
+-		prom_printf("mem_init: Cannot alloc valid_addr_bitmap.\n");
+-		prom_halt();
+-	}
+-	memset(sparc64_valid_addr_bitmap, 0, i << 3);
+ 
+ 	addr = PAGE_OFFSET + kern_base;
+ 	last = PAGE_ALIGN(kern_size) + addr;
+@@ -1943,15 +1944,19 @@ void __init mem_init(void)
+ 		addr += PAGE_SIZE;
+ 	}
+ 
+-	setup_valid_addr_bitmap_from_pavail();
++	setup_valid_addr_bitmap_from_pavail(sparc64_valid_addr_bitmap);
++	patch_tlb_miss_handler_bitmap();
+ 
+ 	high_memory = __va(last_valid_pfn << PAGE_SHIFT);
+ 
+ #ifdef CONFIG_NEED_MULTIPLE_NODES
+-	for_each_online_node(i) {
+-		if (NODE_DATA(i)->node_spanned_pages != 0) {
+-			totalram_pages +=
+-				free_all_bootmem_node(NODE_DATA(i));
++	{
++		int i;
++		for_each_online_node(i) {
++			if (NODE_DATA(i)->node_spanned_pages != 0) {
++				totalram_pages +=
++					free_all_bootmem_node(NODE_DATA(i));
++			}
+ 		}
+ 	}
+ #else
+diff --git a/arch/sparc/mm/init_64.h b/arch/sparc/mm/init_64.h
+index 1606387..c2f772d 100644
+--- a/arch/sparc/mm/init_64.h
++++ b/arch/sparc/mm/init_64.h
+@@ -5,10 +5,13 @@
+  * marked non-static so that assembler code can get at them.
+  */
+ 
+-#define MAX_PHYS_ADDRESS	(1UL << 42UL)
+-#define KPTE_BITMAP_CHUNK_SZ	(256UL * 1024UL * 1024UL)
++#define MAX_PHYS_ADDRESS	(1UL << 41UL)
++#define KPTE_BITMAP_CHUNK_SZ		(256UL * 1024UL * 1024UL)
+ #define KPTE_BITMAP_BYTES	\
+ 	((MAX_PHYS_ADDRESS / KPTE_BITMAP_CHUNK_SZ) / 8)
++#define VALID_ADDR_BITMAP_CHUNK_SZ	(4UL * 1024UL * 1024UL)
++#define VALID_ADDR_BITMAP_BYTES	\
++	((MAX_PHYS_ADDRESS / VALID_ADDR_BITMAP_CHUNK_SZ) / 8)
+ 
+ extern unsigned long kern_linear_pte_xor[2];
+ extern unsigned long kpte_linear_bitmap[KPTE_BITMAP_BYTES / sizeof(unsigned long)];
+diff --git a/arch/sparc/prom/misc_64.c b/arch/sparc/prom/misc_64.c
+index eedffb4..39fc6af 100644
+--- a/arch/sparc/prom/misc_64.c
++++ b/arch/sparc/prom/misc_64.c
+@@ -88,7 +88,7 @@ void prom_cmdline(void)
+ /* Drop into the prom, but completely terminate the program.
+  * No chance of continuing.
+  */
+-void prom_halt(void)
++void notrace prom_halt(void)
+ {
+ #ifdef CONFIG_SUN_LDOMS
+ 	if (ldom_domaining_enabled)
+diff --git a/arch/sparc/prom/printf.c b/arch/sparc/prom/printf.c
+index 660943e..ca86926 100644
+--- a/arch/sparc/prom/printf.c
++++ b/arch/sparc/prom/printf.c
+@@ -14,14 +14,14 @@
+  */
+ 
+ #include <linux/kernel.h>
++#include <linux/compiler.h>
+ 
+ #include <asm/openprom.h>
+ #include <asm/oplib.h>
+ 
+ static char ppbuf[1024];
+ 
+-void
+-prom_write(const char *buf, unsigned int n)
++void notrace prom_write(const char *buf, unsigned int n)
+ {
+ 	char ch;
+ 
+@@ -33,8 +33,7 @@ prom_write(const char *buf, unsigned int n)
+ 	}
+ }
+ 
+-void
+-prom_printf(const char *fmt, ...)
++void notrace prom_printf(const char *fmt, ...)
+ {
+ 	va_list args;
+ 	int i;
+diff --git a/drivers/md/dm-exception-store.c b/drivers/md/dm-exception-store.c
+index 14ce11e..0083296 100644
+--- a/drivers/md/dm-exception-store.c
++++ b/drivers/md/dm-exception-store.c
+@@ -171,6 +171,14 @@ static int set_chunk_size(struct dm_exception_store *store,
+ 	 */
+ 	chunk_size_ulong = round_up(chunk_size_ulong, PAGE_SIZE >> 9);
+ 
++	return dm_exception_store_set_chunk_size(store, chunk_size_ulong,
++						 error);
++}
++
++int dm_exception_store_set_chunk_size(struct dm_exception_store *store,
++				      unsigned long chunk_size_ulong,
++				      char **error)
++{
+ 	/* Check chunk_size is a power of 2 */
+ 	if (!is_power_of_2(chunk_size_ulong)) {
+ 		*error = "Chunk size is not a power of 2";
+@@ -183,6 +191,11 @@ static int set_chunk_size(struct dm_exception_store *store,
+ 		return -EINVAL;
+ 	}
+ 
++	if (chunk_size_ulong > INT_MAX >> SECTOR_SHIFT) {
++		*error = "Chunk size is too high";
++		return -EINVAL;
++	}
++
+ 	store->chunk_size = chunk_size_ulong;
+ 	store->chunk_mask = chunk_size_ulong - 1;
+ 	store->chunk_shift = ffs(chunk_size_ulong) - 1;
+diff --git a/drivers/md/dm-exception-store.h b/drivers/md/dm-exception-store.h
+index 96a796b..43658dd 100644
+--- a/drivers/md/dm-exception-store.h
++++ b/drivers/md/dm-exception-store.h
+@@ -168,6 +168,10 @@ static inline chunk_t sector_to_chunk(struct dm_exception_store *store,
+ int dm_exception_store_type_register(struct dm_exception_store_type *type);
+ int dm_exception_store_type_unregister(struct dm_exception_store_type *type);
+ 
++int dm_exception_store_set_chunk_size(struct dm_exception_store *store,
++				      unsigned long chunk_size_ulong,
++				      char **error);
++
+ int dm_exception_store_create(struct dm_target *ti, int argc, char **argv,
+ 			      unsigned *args_used,
+ 			      struct dm_exception_store **store);
+diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c
+index d8d31b8..a2cf5cf 100644
+--- a/drivers/md/dm-raid1.c
++++ b/drivers/md/dm-raid1.c
+@@ -648,7 +648,13 @@ static void do_writes(struct mirror_set *ms, struct bio_list *writes)
+ 	 */
+ 	dm_rh_inc_pending(ms->rh, &sync);
+ 	dm_rh_inc_pending(ms->rh, &nosync);
+-	ms->log_failure = dm_rh_flush(ms->rh) ? 1 : 0;
++
++	/*
++	 * If the flush fails on a previous call and succeeds here,
++	 * we must not reset the log_failure variable.  We need
++	 * userspace interaction to do that.
++	 */
++	ms->log_failure = dm_rh_flush(ms->rh) ? 1 : ms->log_failure;
+ 
+ 	/*
+ 	 * Dispatch io.
+diff --git a/drivers/md/dm-snap-persistent.c b/drivers/md/dm-snap-persistent.c
+index e75c6dd..aa02fe5 100644
+--- a/drivers/md/dm-snap-persistent.c
++++ b/drivers/md/dm-snap-persistent.c
+@@ -106,6 +106,13 @@ struct pstore {
+ 	void *zero_area;
+ 
+ 	/*
++	 * An area used for header. The header can be written
++	 * concurrently with metadata (when invalidating the snapshot),
++	 * so it needs a separate buffer.
++	 */
++	void *header_area;
++
++	/*
+ 	 * Used to keep track of which metadata area the data in
+ 	 * 'chunk' refers to.
+ 	 */
+@@ -148,16 +155,27 @@ static int alloc_area(struct pstore *ps)
+ 	 */
+ 	ps->area = vmalloc(len);
+ 	if (!ps->area)
+-		return r;
++		goto err_area;
+ 
+ 	ps->zero_area = vmalloc(len);
+-	if (!ps->zero_area) {
+-		vfree(ps->area);
+-		return r;
+-	}
++	if (!ps->zero_area)
++		goto err_zero_area;
+ 	memset(ps->zero_area, 0, len);
+ 
++	ps->header_area = vmalloc(len);
++	if (!ps->header_area)
++		goto err_header_area;
++
+ 	return 0;
++
++err_header_area:
++	vfree(ps->zero_area);
++
++err_zero_area:
++	vfree(ps->area);
++
++err_area:
++	return r;
+ }
+ 
+ static void free_area(struct pstore *ps)
+@@ -169,6 +187,10 @@ static void free_area(struct pstore *ps)
+ 	if (ps->zero_area)
+ 		vfree(ps->zero_area);
+ 	ps->zero_area = NULL;
++
++	if (ps->header_area)
++		vfree(ps->header_area);
++	ps->header_area = NULL;
+ }
+ 
+ struct mdata_req {
+@@ -188,7 +210,8 @@ static void do_metadata(struct work_struct *work)
+ /*
+  * Read or write a chunk aligned and sized block of data from a device.
+  */
+-static int chunk_io(struct pstore *ps, chunk_t chunk, int rw, int metadata)
++static int chunk_io(struct pstore *ps, void *area, chunk_t chunk, int rw,
++		    int metadata)
+ {
+ 	struct dm_io_region where = {
+ 		.bdev = ps->store->cow->bdev,
+@@ -198,7 +221,7 @@ static int chunk_io(struct pstore *ps, chunk_t chunk, int rw, int metadata)
+ 	struct dm_io_request io_req = {
+ 		.bi_rw = rw,
+ 		.mem.type = DM_IO_VMA,
+-		.mem.ptr.vma = ps->area,
++		.mem.ptr.vma = area,
+ 		.client = ps->io_client,
+ 		.notify.fn = NULL,
+ 	};
+@@ -240,7 +263,7 @@ static int area_io(struct pstore *ps, int rw)
+ 
+ 	chunk = area_location(ps, ps->current_area);
+ 
+-	r = chunk_io(ps, chunk, rw, 0);
++	r = chunk_io(ps, ps->area, chunk, rw, 0);
+ 	if (r)
+ 		return r;
+ 
+@@ -254,20 +277,7 @@ static void zero_memory_area(struct pstore *ps)
+ 
+ static int zero_disk_area(struct pstore *ps, chunk_t area)
+ {
+-	struct dm_io_region where = {
+-		.bdev = ps->store->cow->bdev,
+-		.sector = ps->store->chunk_size * area_location(ps, area),
+-		.count = ps->store->chunk_size,
+-	};
+-	struct dm_io_request io_req = {
+-		.bi_rw = WRITE,
+-		.mem.type = DM_IO_VMA,
+-		.mem.ptr.vma = ps->zero_area,
+-		.client = ps->io_client,
+-		.notify.fn = NULL,
+-	};
+-
+-	return dm_io(&io_req, 1, &where, NULL);
++	return chunk_io(ps, ps->zero_area, area_location(ps, area), WRITE, 0);
+ }
+ 
+ static int read_header(struct pstore *ps, int *new_snapshot)
+@@ -276,6 +286,7 @@ static int read_header(struct pstore *ps, int *new_snapshot)
+ 	struct disk_header *dh;
+ 	chunk_t chunk_size;
+ 	int chunk_size_supplied = 1;
++	char *chunk_err;
+ 
+ 	/*
+ 	 * Use default chunk size (or hardsect_size, if larger) if none supplied
+@@ -297,11 +308,11 @@ static int read_header(struct pstore *ps, int *new_snapshot)
+ 	if (r)
+ 		return r;
+ 
+-	r = chunk_io(ps, 0, READ, 1);
++	r = chunk_io(ps, ps->header_area, 0, READ, 1);
+ 	if (r)
+ 		goto bad;
+ 
+-	dh = (struct disk_header *) ps->area;
++	dh = ps->header_area;
+ 
+ 	if (le32_to_cpu(dh->magic) == 0) {
+ 		*new_snapshot = 1;
+@@ -319,20 +330,25 @@ static int read_header(struct pstore *ps, int *new_snapshot)
+ 	ps->version = le32_to_cpu(dh->version);
+ 	chunk_size = le32_to_cpu(dh->chunk_size);
+ 
+-	if (!chunk_size_supplied || ps->store->chunk_size == chunk_size)
++	if (ps->store->chunk_size == chunk_size)
+ 		return 0;
+ 
+-	DMWARN("chunk size %llu in device metadata overrides "
+-	       "table chunk size of %llu.",
+-	       (unsigned long long)chunk_size,
+-	       (unsigned long long)ps->store->chunk_size);
++	if (chunk_size_supplied)
++		DMWARN("chunk size %llu in device metadata overrides "
++		       "table chunk size of %llu.",
++		       (unsigned long long)chunk_size,
++		       (unsigned long long)ps->store->chunk_size);
+ 
+ 	/* We had a bogus chunk_size. Fix stuff up. */
+ 	free_area(ps);
+ 
+-	ps->store->chunk_size = chunk_size;
+-	ps->store->chunk_mask = chunk_size - 1;
+-	ps->store->chunk_shift = ffs(chunk_size) - 1;
++	r = dm_exception_store_set_chunk_size(ps->store, chunk_size,
++					      &chunk_err);
++	if (r) {
++		DMERR("invalid on-disk chunk size %llu: %s.",
++		      (unsigned long long)chunk_size, chunk_err);
++		return r;
++	}
+ 
+ 	r = dm_io_client_resize(sectors_to_pages(ps->store->chunk_size),
+ 				ps->io_client);
+@@ -351,15 +367,15 @@ static int write_header(struct pstore *ps)
+ {
+ 	struct disk_header *dh;
+ 
+-	memset(ps->area, 0, ps->store->chunk_size << SECTOR_SHIFT);
++	memset(ps->header_area, 0, ps->store->chunk_size << SECTOR_SHIFT);
+ 
+-	dh = (struct disk_header *) ps->area;
++	dh = ps->header_area;
+ 	dh->magic = cpu_to_le32(SNAP_MAGIC);
+ 	dh->valid = cpu_to_le32(ps->valid);
+ 	dh->version = cpu_to_le32(ps->version);
+ 	dh->chunk_size = cpu_to_le32(ps->store->chunk_size);
+ 
+-	return chunk_io(ps, 0, WRITE, 1);
++	return chunk_io(ps, ps->header_area, 0, WRITE, 1);
+ }
+ 
+ /*
+@@ -679,6 +695,8 @@ static int persistent_ctr(struct dm_exception_store *store,
+ 	ps->valid = 1;
+ 	ps->version = SNAPSHOT_DISK_VERSION;
+ 	ps->area = NULL;
++	ps->zero_area = NULL;
++	ps->header_area = NULL;
+ 	ps->next_free = 2;	/* skipping the header and first area */
+ 	ps->current_committed = 0;
+ 
+diff --git a/drivers/net/e100.c b/drivers/net/e100.c
+index 014dfb6..53e8252 100644
+--- a/drivers/net/e100.c
++++ b/drivers/net/e100.c
+@@ -1764,7 +1764,7 @@ static int e100_rx_indicate(struct nic *nic, struct rx *rx,
+ 				nic->ru_running = RU_SUSPENDED;
+ 		pci_dma_sync_single_for_device(nic->pdev, rx->dma_addr,
+ 					       sizeof(struct rfd),
+-					       PCI_DMA_BIDIRECTIONAL);
++					       PCI_DMA_FROMDEVICE);
+ 		return -ENODATA;
+ 	}
+ 
+diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c
+index 8ee9142..ae898f7 100644
+--- a/drivers/net/ppp_generic.c
++++ b/drivers/net/ppp_generic.c
+@@ -1383,7 +1383,7 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_buff *skb)
+ 
+ 	/* create a	fragment for each channel */
+ 	bits = B;
+-	while (nfree > 0 &&	len	> 0) {
++	while (len	> 0) {
+ 		list = list->next;
+ 		if (list ==	&ppp->channels)	{
+ 			i =	0;
+@@ -1430,29 +1430,31 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_buff *skb)
+ 		*otherwise divide it according to the speed
+ 		*of the channel we are going to transmit on
+ 		*/
+-		if (pch->speed == 0) {
+-			flen = totlen/nfree	;
+-			if (nbigger > 0) {
+-				flen++;
+-				nbigger--;
+-			}
+-		} else {
+-			flen = (((totfree - nzero)*(totlen + hdrlen*totfree)) /
+-				((totspeed*totfree)/pch->speed)) - hdrlen;
+-			if (nbigger > 0) {
+-				flen += ((totfree - nzero)*pch->speed)/totspeed;
+-				nbigger -= ((totfree - nzero)*pch->speed)/
++		if (nfree > 0) {
++			if (pch->speed == 0) {
++				flen = totlen/nfree	;
++				if (nbigger > 0) {
++					flen++;
++					nbigger--;
++				}
++			} else {
++				flen = (((totfree - nzero)*(totlen + hdrlen*totfree)) /
++					((totspeed*totfree)/pch->speed)) - hdrlen;
++				if (nbigger > 0) {
++					flen += ((totfree - nzero)*pch->speed)/totspeed;
++					nbigger -= ((totfree - nzero)*pch->speed)/
+ 							totspeed;
++				}
+ 			}
++			nfree--;
+ 		}
+-		nfree--;
+ 
+ 		/*
+ 		 *check	if we are on the last channel or
+ 		 *we exceded the lenght	of the data	to
+ 		 *fragment
+ 		 */
+-		if ((nfree == 0) || (flen > len))
++		if ((nfree <= 0) || (flen > len))
+ 			flen = len;
+ 		/*
+ 		 *it is not worth to tx on slow channels:
+@@ -1466,7 +1468,7 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_buff *skb)
+ 			continue;
+ 		}
+ 
+-		mtu	= pch->chan->mtu + 2 - hdrlen;
++		mtu	= pch->chan->mtu - hdrlen;
+ 		if (mtu	< 4)
+ 			mtu	= 4;
+ 		if (flen > mtu)
+diff --git a/drivers/net/pppol2tp.c b/drivers/net/pppol2tp.c
+index 5b07dd8..72be141 100644
+--- a/drivers/net/pppol2tp.c
++++ b/drivers/net/pppol2tp.c
+@@ -2682,6 +2682,7 @@ out_unregister_pppol2tp_proto:
+ static void __exit pppol2tp_exit(void)
+ {
+ 	unregister_pppox_proto(PX_PROTO_OL2TP);
++	unregister_pernet_gen_device(pppol2tp_net_id, &pppol2tp_net_ops);
+ 	proto_unregister(&pppol2tp_sk_proto);
+ }
+ 
+diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
+index b497daa..bba9bb0 100644
+--- a/drivers/pci/iov.c
++++ b/drivers/pci/iov.c
+@@ -595,6 +595,29 @@ int pci_iov_resource_bar(struct pci_dev *dev, int resno,
+ }
+ 
+ /**
++ * pci_sriov_resource_alignment - get resource alignment for VF BAR
++ * @dev: the PCI device
++ * @resno: the resource number
++ *
++ * Returns the alignment of the VF BAR found in the SR-IOV capability.
++ * This is not the same as the resource size which is defined as
++ * the VF BAR size multiplied by the number of VFs.  The alignment
++ * is just the VF BAR size.
++ */
++int pci_sriov_resource_alignment(struct pci_dev *dev, int resno)
++{
++	struct resource tmp;
++	enum pci_bar_type type;
++	int reg = pci_iov_resource_bar(dev, resno, &type);
++
++	if (!reg)
++		return 0;
++
++	 __pci_read_base(dev, type, &tmp, reg);
++	return resource_alignment(&tmp);
++}
++
++/**
+  * pci_restore_iov_state - restore the state of the IOV capability
+  * @dev: the PCI device
+  */
+diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
+index d03f6b9..04d126b 100644
+--- a/drivers/pci/pci.h
++++ b/drivers/pci/pci.h
+@@ -234,6 +234,7 @@ extern int pci_iov_init(struct pci_dev *dev);
+ extern void pci_iov_release(struct pci_dev *dev);
+ extern int pci_iov_resource_bar(struct pci_dev *dev, int resno,
+ 				enum pci_bar_type *type);
++extern int pci_sriov_resource_alignment(struct pci_dev *dev, int resno);
+ extern void pci_restore_iov_state(struct pci_dev *dev);
+ extern int pci_iov_bus_range(struct pci_bus *bus);
+ #else
+@@ -259,4 +260,16 @@ static inline int pci_iov_bus_range(struct pci_bus *bus)
+ }
+ #endif /* CONFIG_PCI_IOV */
+ 
++static inline int pci_resource_alignment(struct pci_dev *dev,
++					 struct resource *res)
++{
++#ifdef CONFIG_PCI_IOV
++	int resno = res - dev->resource;
++
++	if (resno >= PCI_IOV_RESOURCES && resno <= PCI_IOV_RESOURCE_END)
++		return pci_sriov_resource_alignment(dev, resno);
++#endif
++	return resource_alignment(res);
++}
++
+ #endif /* DRIVERS_PCI_H */
+diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
+index a00f854..e693948 100644
+--- a/drivers/pci/setup-bus.c
++++ b/drivers/pci/setup-bus.c
+@@ -25,7 +25,7 @@
+ #include <linux/ioport.h>
+ #include <linux/cache.h>
+ #include <linux/slab.h>
+-
++#include "pci.h"
+ 
+ static void pbus_assign_resources_sorted(const struct pci_bus *bus)
+ {
+@@ -355,7 +355,7 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask, unsigned long
+ 				continue;
+ 			r_size = resource_size(r);
+ 			/* For bridges size != alignment */
+-			align = resource_alignment(r);
++			align = pci_resource_alignment(dev, r);
+ 			order = __ffs(align) - 20;
+ 			if (order > 11) {
+ 				dev_warn(&dev->dev, "BAR %d bad alignment %llx: "
+diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c
+index 3039fcb..cfec5f3 100644
+--- a/drivers/pci/setup-res.c
++++ b/drivers/pci/setup-res.c
+@@ -145,7 +145,7 @@ int pci_assign_resource(struct pci_dev *dev, int resno)
+ 	size = resource_size(res);
+ 	min = (res->flags & IORESOURCE_IO) ? PCIBIOS_MIN_IO : PCIBIOS_MIN_MEM;
+ 
+-	align = resource_alignment(res);
++	align = pci_resource_alignment(dev, res);
+ 	if (!align) {
+ 		dev_info(&dev->dev, "BAR %d: can't allocate resource (bogus "
+ 			"alignment) %pR flags %#lx\n",
+@@ -236,7 +236,7 @@ void pdev_sort_resources(struct pci_dev *dev, struct resource_list *head)
+ 		if (!(r->flags) || r->parent)
+ 			continue;
+ 
+-		r_align = resource_alignment(r);
++		r_align = pci_resource_alignment(dev, r);
+ 		if (!r_align) {
+ 			dev_warn(&dev->dev, "BAR %d: bogus alignment "
+ 				"%pR flags %#lx\n",
+@@ -248,7 +248,7 @@ void pdev_sort_resources(struct pci_dev *dev, struct resource_list *head)
+ 			struct resource_list *ln = list->next;
+ 
+ 			if (ln)
+-				align = resource_alignment(ln->res);
++				align = pci_resource_alignment(ln->dev, ln->res);
+ 
+ 			if (r_align > align) {
+ 				tmp = kmalloc(sizeof(*tmp), GFP_KERNEL);
+diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
+index 8404423..d8e1d15 100644
+--- a/drivers/scsi/sd.c
++++ b/drivers/scsi/sd.c
+@@ -1902,24 +1902,6 @@ static void sd_probe_async(void *data, async_cookie_t cookie)
+ 	index = sdkp->index;
+ 	dev = &sdp->sdev_gendev;
+ 
+-	if (!sdp->request_queue->rq_timeout) {
+-		if (sdp->type != TYPE_MOD)
+-			blk_queue_rq_timeout(sdp->request_queue, SD_TIMEOUT);
+-		else
+-			blk_queue_rq_timeout(sdp->request_queue,
+-					     SD_MOD_TIMEOUT);
+-	}
+-
+-	device_initialize(&sdkp->dev);
+-	sdkp->dev.parent = &sdp->sdev_gendev;
+-	sdkp->dev.class = &sd_disk_class;
+-	dev_set_name(&sdkp->dev, dev_name(&sdp->sdev_gendev));
+-
+-	if (device_add(&sdkp->dev))
+-		goto out_free_index;
+-
+-	get_device(&sdp->sdev_gendev);
+-
+ 	if (index < SD_MAX_DISKS) {
+ 		gd->major = sd_major((index & 0xf0) >> 4);
+ 		gd->first_minor = ((index & 0xf) << 4) | (index & 0xfff00);
+@@ -1954,11 +1936,6 @@ static void sd_probe_async(void *data, async_cookie_t cookie)
+ 
+ 	sd_printk(KERN_NOTICE, sdkp, "Attached SCSI %sdisk\n",
+ 		  sdp->removable ? "removable " : "");
+-
+-	return;
+-
+- out_free_index:
+-	ida_remove(&sd_index_ida, index);
+ }
+ 
+ /**
+@@ -2026,6 +2003,24 @@ static int sd_probe(struct device *dev)
+ 	sdkp->openers = 0;
+ 	sdkp->previous_state = 1;
+ 
++	if (!sdp->request_queue->rq_timeout) {
++		if (sdp->type != TYPE_MOD)
++			blk_queue_rq_timeout(sdp->request_queue, SD_TIMEOUT);
++		else
++			blk_queue_rq_timeout(sdp->request_queue,
++					     SD_MOD_TIMEOUT);
++	}
++
++	device_initialize(&sdkp->dev);
++	sdkp->dev.parent = &sdp->sdev_gendev;
++	sdkp->dev.class = &sd_disk_class;
++	dev_set_name(&sdkp->dev, dev_name(&sdp->sdev_gendev));
++
++	if (device_add(&sdkp->dev))
++		goto out_free_index;
++
++	get_device(&sdp->sdev_gendev);
++
+ 	async_schedule(sd_probe_async, sdkp);
+ 
+ 	return 0;
+@@ -2055,8 +2050,10 @@ static int sd_probe(struct device *dev)
+  **/
+ static int sd_remove(struct device *dev)
+ {
+-	struct scsi_disk *sdkp = dev_get_drvdata(dev);
++	struct scsi_disk *sdkp;
+ 
++	async_synchronize_full();
++	sdkp = dev_get_drvdata(dev);
+ 	device_del(&sdkp->dev);
+ 	del_gendisk(sdkp->disk);
+ 	sd_shutdown(dev);
+diff --git a/fs/jffs2/wbuf.c b/fs/jffs2/wbuf.c
+index d9a721e..5ef7bac 100644
+--- a/fs/jffs2/wbuf.c
++++ b/fs/jffs2/wbuf.c
+@@ -1268,10 +1268,20 @@ int jffs2_nor_wbuf_flash_setup(struct jffs2_sb_info *c) {
+ 	if (!c->wbuf)
+ 		return -ENOMEM;
+ 
++#ifdef CONFIG_JFFS2_FS_WBUF_VERIFY
++	c->wbuf_verify = kmalloc(c->wbuf_pagesize, GFP_KERNEL);
++	if (!c->wbuf_verify) {
++		kfree(c->wbuf);
++		return -ENOMEM;
++	}
++#endif
+ 	return 0;
+ }
+ 
+ void jffs2_nor_wbuf_flash_cleanup(struct jffs2_sb_info *c) {
++#ifdef CONFIG_JFFS2_FS_WBUF_VERIFY
++	kfree(c->wbuf_verify);
++#endif
+ 	kfree(c->wbuf);
+ }
+ 
+diff --git a/fs/nilfs2/btnode.c b/fs/nilfs2/btnode.c
+index 4cc07b2..b55f31c 100644
+--- a/fs/nilfs2/btnode.c
++++ b/fs/nilfs2/btnode.c
+@@ -206,6 +206,7 @@ int nilfs_btnode_prepare_change_key(struct address_space *btnc,
+ 		 * We cannot call radix_tree_preload for the kernels older
+ 		 * than 2.6.23, because it is not exported for modules.
+ 		 */
++retry:
+ 		err = radix_tree_preload(GFP_NOFS & ~__GFP_HIGHMEM);
+ 		if (err)
+ 			goto failed_unlock;
+@@ -216,7 +217,6 @@ int nilfs_btnode_prepare_change_key(struct address_space *btnc,
+ 				       (unsigned long long)oldkey,
+ 				       (unsigned long long)newkey);
+ 
+-retry:
+ 		spin_lock_irq(&btnc->tree_lock);
+ 		err = radix_tree_insert(&btnc->page_tree, newkey, obh->b_page);
+ 		spin_unlock_irq(&btnc->tree_lock);
+diff --git a/mm/slub.c b/mm/slub.c
+index 253016d..0b95a6c 100644
+--- a/mm/slub.c
++++ b/mm/slub.c
+@@ -2490,8 +2490,6 @@ static inline int kmem_cache_close(struct kmem_cache *s)
+  */
+ void kmem_cache_destroy(struct kmem_cache *s)
+ {
+-	if (s->flags & SLAB_DESTROY_BY_RCU)
+-		rcu_barrier();
+ 	down_write(&slub_lock);
+ 	s->refcount--;
+ 	if (!s->refcount) {
+@@ -2502,6 +2500,8 @@ void kmem_cache_destroy(struct kmem_cache *s)
+ 				"still has objects.\n", s->name, __func__);
+ 			dump_stack();
+ 		}
++		if (s->flags & SLAB_DESTROY_BY_RCU)
++			rcu_barrier();
+ 		sysfs_slab_remove(s);
+ 	} else
+ 		up_write(&slub_lock);
+diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
+index e3bebd3..33a3314 100644
+--- a/net/core/net_namespace.c
++++ b/net/core/net_namespace.c
+@@ -498,7 +498,7 @@ int net_assign_generic(struct net *net, int id, void *data)
+ 	 */
+ 
+ 	ng->len = id;
+-	memcpy(&ng->ptr, &old_ng->ptr, old_ng->len);
++	memcpy(&ng->ptr, &old_ng->ptr, old_ng->len * sizeof(void*));
+ 
+ 	rcu_assign_pointer(net->gen, ng);
+ 	call_rcu(&old_ng->rcu, net_generic_release);
+diff --git a/net/dccp/proto.c b/net/dccp/proto.c
+index 314a1b5..8e1da25 100644
+--- a/net/dccp/proto.c
++++ b/net/dccp/proto.c
+@@ -1159,6 +1159,7 @@ static void __exit dccp_fini(void)
+ 	kmem_cache_destroy(dccp_hashinfo.bind_bucket_cachep);
+ 	dccp_ackvec_exit();
+ 	dccp_sysctl_exit();
++	percpu_counter_destroy(&dccp_orphan_count);
+ }
+ 
+ module_init(dccp_init);
+diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
+index e62510d..3491c93 100644
+--- a/net/ipv4/ip_gre.c
++++ b/net/ipv4/ip_gre.c
+@@ -952,7 +952,7 @@ static int ipgre_tunnel_bind_dev(struct net_device *dev)
+ 			addend += 4;
+ 	}
+ 	dev->needed_headroom = addend + hlen;
+-	mtu -= dev->hard_header_len - addend;
++	mtu -= dev->hard_header_len + addend;
+ 
+ 	if (mtu < 68)
+ 		mtu = 68;
+diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c
+index 312251d..9a8936e 100644
+--- a/sound/pci/oxygen/oxygen_lib.c
++++ b/sound/pci/oxygen/oxygen_lib.c
+@@ -260,6 +260,9 @@ oxygen_search_pci_id(struct oxygen *chip, const struct pci_device_id ids[])
+ 	 * chip didn't if the first EEPROM word was overwritten.
+ 	 */
+ 	subdevice = oxygen_read_eeprom(chip, 2);
++	/* use default ID if EEPROM is missing */
++	if (subdevice == 0xffff)
++		subdevice = 0x8788;
+ 	/*
+ 	 * We use only the subsystem device ID for searching because it is
+ 	 * unique even without the subsystem vendor ID, which may have been
+diff --git a/sound/pci/oxygen/oxygen_pcm.c b/sound/pci/oxygen/oxygen_pcm.c
+index c262049..8c6829b 100644
+--- a/sound/pci/oxygen/oxygen_pcm.c
++++ b/sound/pci/oxygen/oxygen_pcm.c
+@@ -469,9 +469,11 @@ static int oxygen_multich_hw_params(struct snd_pcm_substream *substream,
+ 	oxygen_write16_masked(chip, OXYGEN_I2S_MULTICH_FORMAT,
+ 			      oxygen_rate(hw_params) |
+ 			      chip->model.dac_i2s_format |
++			      oxygen_i2s_mclk(hw_params) |
+ 			      oxygen_i2s_bits(hw_params),
+ 			      OXYGEN_I2S_RATE_MASK |
+ 			      OXYGEN_I2S_FORMAT_MASK |
++			      OXYGEN_I2S_MCLK_MASK |
+ 			      OXYGEN_I2S_BITS_MASK);
+ 	oxygen_update_dac_routing(chip);
+ 	oxygen_update_spdif_source(chip);
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/stable/2.6.30.2.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/stable/2.6.30.2.patch
@@ -0,0 +1,786 @@
+diff --git a/Makefile b/Makefile
+index f8a0893..ab8cda6 100644
+--- a/Makefile
++++ b/Makefile
+@@ -351,7 +351,8 @@ KBUILD_CPPFLAGS := -D__KERNEL__
+ 
+ KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
+ 		   -fno-strict-aliasing -fno-common \
+-		   -Werror-implicit-function-declaration
++		   -Werror-implicit-function-declaration \
++		   -fno-delete-null-pointer-checks
+ KBUILD_AFLAGS   := -D__ASSEMBLY__
+ 
+ # Read KERNELRELEASE from include/config/kernel.release (if it exists)
+@@ -573,7 +574,7 @@ KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
+ KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
+ 
+ # disable invalid "can't wrap" optimizations for signed / pointers
+-KBUILD_CFLAGS	+= $(call cc-option,-fwrapv)
++KBUILD_CFLAGS	+= $(call cc-option,-fno-strict-overflow)
+ 
+ # revert to pre-gcc-4.4 behaviour of .eh_frame
+ KBUILD_CFLAGS	+= $(call cc-option,-fno-dwarf2-cfi-asm)
+diff --git a/arch/alpha/include/asm/percpu.h b/arch/alpha/include/asm/percpu.h
+index 06c5c7a..b663f1f 100644
+--- a/arch/alpha/include/asm/percpu.h
++++ b/arch/alpha/include/asm/percpu.h
+@@ -30,7 +30,7 @@ extern unsigned long __per_cpu_offset[NR_CPUS];
+ 
+ #ifndef MODULE
+ #define SHIFT_PERCPU_PTR(var, offset) RELOC_HIDE(&per_cpu_var(var), (offset))
+-#define PER_CPU_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
+ #else
+ /*
+  * To calculate addresses of locally defined variables, GCC uses 32-bit
+@@ -49,7 +49,7 @@ extern unsigned long __per_cpu_offset[NR_CPUS];
+ 		: "=&r"(__ptr), "=&r"(tmp_gp));		\
+ 	(typeof(&per_cpu_var(var)))(__ptr + (offset)); })
+ 
+-#define PER_CPU_ATTRIBUTES	__used
++#define PER_CPU_DEF_ATTRIBUTES	__used
+ 
+ #endif /* MODULE */
+ 
+@@ -71,7 +71,7 @@ extern unsigned long __per_cpu_offset[NR_CPUS];
+ #define __get_cpu_var(var)		per_cpu_var(var)
+ #define __raw_get_cpu_var(var)		per_cpu_var(var)
+ 
+-#define PER_CPU_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
+ 
+ #endif /* SMP */
+ 
+diff --git a/arch/blackfin/kernel/irqchip.c b/arch/blackfin/kernel/irqchip.c
+index 401bd32..6ab0532 100644
+--- a/arch/blackfin/kernel/irqchip.c
++++ b/arch/blackfin/kernel/irqchip.c
+@@ -38,14 +38,6 @@
+ #include <asm/pda.h>
+ 
+ static atomic_t irq_err_count;
+-static spinlock_t irq_controller_lock;
+-
+-/*
+- * Dummy mask/unmask handler
+- */
+-void dummy_mask_unmask_irq(unsigned int irq)
+-{
+-}
+ 
+ void ack_bad_irq(unsigned int irq)
+ {
+@@ -53,21 +45,9 @@ void ack_bad_irq(unsigned int irq)
+ 	printk(KERN_ERR "IRQ: spurious interrupt %d\n", irq);
+ }
+ 
+-static struct irq_chip bad_chip = {
+-	.ack = dummy_mask_unmask_irq,
+-	.mask = dummy_mask_unmask_irq,
+-	.unmask = dummy_mask_unmask_irq,
+-};
+-
+ static struct irq_desc bad_irq_desc = {
+-	.status = IRQ_DISABLED,
+-	.chip = &bad_chip,
+ 	.handle_irq = handle_bad_irq,
+-	.depth = 1,
+ 	.lock = __SPIN_LOCK_UNLOCKED(irq_desc->lock),
+-#ifdef CONFIG_SMP
+-	.affinity = CPU_MASK_ALL
+-#endif
+ };
+ 
+ #ifdef CONFIG_CPUMASK_OFFSTACK
+@@ -117,21 +97,13 @@ __attribute__((l1_text))
+ #endif
+ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
+ {
+-	struct pt_regs *old_regs;
+-	struct irq_desc *desc = irq_desc + irq;
+ #ifndef CONFIG_IPIPE
+ 	unsigned short pending, other_ints;
+ #endif
+-	old_regs = set_irq_regs(regs);
+-
+-	/*
+-	 * Some hardware gives randomly wrong interrupts.  Rather
+-	 * than crashing, do something sensible.
+-	 */
+-	if (irq >= NR_IRQS)
+-		desc = &bad_irq_desc;
++	struct pt_regs *old_regs = set_irq_regs(regs);
+ 
+ 	irq_enter();
++
+ #ifdef CONFIG_DEBUG_STACKOVERFLOW
+ 	/* Debugging check for stack overflow: is there less than STACK_WARN free? */
+ 	{
+@@ -147,7 +119,15 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
+ 		}
+ 	}
+ #endif
+-	generic_handle_irq(irq);
++
++	/*
++	 * Some hardware gives randomly wrong interrupts.  Rather
++	 * than crashing, do something sensible.
++	 */
++	if (irq >= NR_IRQS)
++		handle_bad_irq(irq, &bad_irq_desc);
++	else
++		generic_handle_irq(irq);
+ 
+ #ifndef CONFIG_IPIPE
+ 	/*
+@@ -171,14 +151,6 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
+ 
+ void __init init_IRQ(void)
+ {
+-	struct irq_desc *desc;
+-	int irq;
+-
+-	spin_lock_init(&irq_controller_lock);
+-	for (irq = 0, desc = irq_desc; irq < NR_IRQS; irq++, desc++) {
+-		*desc = bad_irq_desc;
+-	}
+-
+ 	init_arch_irq();
+ 
+ #ifdef CONFIG_DEBUG_BFIN_HWTRACE_EXPAND
+diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c
+index a58687b..b550bae 100644
+--- a/arch/blackfin/kernel/setup.c
++++ b/arch/blackfin/kernel/setup.c
+@@ -831,7 +831,8 @@ void __init setup_arch(char **cmdline_p)
+     defined(CONFIG_BF538) || defined(CONFIG_BF539)
+ 	_bfin_swrst = bfin_read_SWRST();
+ #else
+-	_bfin_swrst = bfin_read_SYSCR();
++	/* Clear boot mode field */
++	_bfin_swrst = bfin_read_SYSCR() & ~0xf;
+ #endif
+ 
+ #ifdef CONFIG_DEBUG_DOUBLEFAULT_PRINT
+diff --git a/arch/blackfin/mach-common/head.S b/arch/blackfin/mach-common/head.S
+index 698d4c0..7e5143c 100644
+--- a/arch/blackfin/mach-common/head.S
++++ b/arch/blackfin/mach-common/head.S
+@@ -126,25 +126,25 @@ ENTRY(__start)
+ 	 * below
+ 	 */
+ 	GET_PDA(p0, r0);
+-	r7 = [p0 + PDA_RETX];
++	r6 = [p0 + PDA_RETX];
+ 	p1.l = _init_saved_retx;
+ 	p1.h = _init_saved_retx;
+-	[p1] = r7;
++	[p1] = r6;
+ 
+-	r7 = [p0 + PDA_DCPLB];
++	r6 = [p0 + PDA_DCPLB];
+ 	p1.l = _init_saved_dcplb_fault_addr;
+ 	p1.h = _init_saved_dcplb_fault_addr;
+-	[p1] = r7;
++	[p1] = r6;
+ 
+-	r7 = [p0 + PDA_ICPLB];
++	r6 = [p0 + PDA_ICPLB];
+ 	p1.l = _init_saved_icplb_fault_addr;
+ 	p1.h = _init_saved_icplb_fault_addr;
+-	[p1] = r7;
++	[p1] = r6;
+ 
+-	r7 = [p0 + PDA_SEQSTAT];
++	r6 = [p0 + PDA_SEQSTAT];
+ 	p1.l = _init_saved_seqstat;
+ 	p1.h = _init_saved_seqstat;
+-	[p1] = r7;
++	[p1] = r6;
+ #endif
+ 
+ 	/* Initialize stack pointer */
+diff --git a/arch/blackfin/mach-common/smp.c b/arch/blackfin/mach-common/smp.c
+index 93eab61..66fb780 100644
+--- a/arch/blackfin/mach-common/smp.c
++++ b/arch/blackfin/mach-common/smp.c
+@@ -139,7 +139,7 @@ static void ipi_call_function(unsigned int cpu, struct ipi_message *msg)
+ 
+ static irqreturn_t ipi_handler(int irq, void *dev_instance)
+ {
+-	struct ipi_message *msg, *mg;
++	struct ipi_message *msg;
+ 	struct ipi_message_queue *msg_queue;
+ 	unsigned int cpu = smp_processor_id();
+ 
+@@ -149,7 +149,8 @@ static irqreturn_t ipi_handler(int irq, void *dev_instance)
+ 	msg_queue->count++;
+ 
+ 	spin_lock(&msg_queue->lock);
+-	list_for_each_entry_safe(msg, mg, &msg_queue->head, list) {
++	while (!list_empty(&msg_queue->head)) {
++		msg = list_entry(msg_queue->head.next, typeof(*msg), list);
+ 		list_del(&msg->list);
+ 		switch (msg->type) {
+ 		case BFIN_IPI_RESCHEDULE:
+@@ -216,7 +217,7 @@ int smp_call_function(void (*func)(void *info), void *info, int wait)
+ 	for_each_cpu_mask(cpu, callmap) {
+ 		msg_queue = &per_cpu(ipi_msg_queue, cpu);
+ 		spin_lock_irqsave(&msg_queue->lock, flags);
+-		list_add(&msg->list, &msg_queue->head);
++		list_add_tail(&msg->list, &msg_queue->head);
+ 		spin_unlock_irqrestore(&msg_queue->lock, flags);
+ 		platform_send_ipi_cpu(cpu);
+ 	}
+@@ -256,7 +257,7 @@ int smp_call_function_single(int cpuid, void (*func) (void *info), void *info,
+ 
+ 	msg_queue = &per_cpu(ipi_msg_queue, cpu);
+ 	spin_lock_irqsave(&msg_queue->lock, flags);
+-	list_add(&msg->list, &msg_queue->head);
++	list_add_tail(&msg->list, &msg_queue->head);
+ 	spin_unlock_irqrestore(&msg_queue->lock, flags);
+ 	platform_send_ipi_cpu(cpu);
+ 
+@@ -287,7 +288,7 @@ void smp_send_reschedule(int cpu)
+ 
+ 	msg_queue = &per_cpu(ipi_msg_queue, cpu);
+ 	spin_lock_irqsave(&msg_queue->lock, flags);
+-	list_add(&msg->list, &msg_queue->head);
++	list_add_tail(&msg->list, &msg_queue->head);
+ 	spin_unlock_irqrestore(&msg_queue->lock, flags);
+ 	platform_send_ipi_cpu(cpu);
+ 
+@@ -315,7 +316,7 @@ void smp_send_stop(void)
+ 	for_each_cpu_mask(cpu, callmap) {
+ 		msg_queue = &per_cpu(ipi_msg_queue, cpu);
+ 		spin_lock_irqsave(&msg_queue->lock, flags);
+-		list_add(&msg->list, &msg_queue->head);
++		list_add_tail(&msg->list, &msg_queue->head);
+ 		spin_unlock_irqrestore(&msg_queue->lock, flags);
+ 		platform_send_ipi_cpu(cpu);
+ 	}
+diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
+index b51a1e8..abbc09b 100644
+--- a/arch/x86/include/asm/pci.h
++++ b/arch/x86/include/asm/pci.h
+@@ -91,7 +91,7 @@ extern void pci_iommu_alloc(void);
+ 
+ #define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys)
+ 
+-#if defined(CONFIG_X86_64) || defined(CONFIG_DMA_API_DEBUG)
++#if defined(CONFIG_X86_64) || defined(CONFIG_DMAR) || defined(CONFIG_DMA_API_DEBUG)
+ 
+ #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)       \
+ 	        dma_addr_t ADDR_NAME;
+diff --git a/block/blk-core.c b/block/blk-core.c
+index c89883b..a59f180 100644
+--- a/block/blk-core.c
++++ b/block/blk-core.c
+@@ -1158,6 +1158,11 @@ static int __make_request(struct request_queue *q, struct bio *bio)
+ 
+ 	nr_sectors = bio_sectors(bio);
+ 
++	if (bio_barrier(bio) && bio_has_data(bio) &&
++	    (q->next_ordered == QUEUE_ORDERED_NONE)) {
++		bio_endio(bio, -EOPNOTSUPP);
++		return 0;
++	}
+ 	/*
+ 	 * low level driver can indicate that it wants pages above a
+ 	 * certain limit bounced to low memory (ie for highmem, or even
+@@ -1461,11 +1466,6 @@ static inline void __generic_make_request(struct bio *bio)
+ 			err = -EOPNOTSUPP;
+ 			goto end_io;
+ 		}
+-		if (bio_barrier(bio) && bio_has_data(bio) &&
+-		    (q->next_ordered == QUEUE_ORDERED_NONE)) {
+-			err = -EOPNOTSUPP;
+-			goto end_io;
+-		}
+ 
+ 		ret = q->make_request_fn(q, bio);
+ 	} while (ret);
+diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
+index 1300df6..39e1b58 100644
+--- a/drivers/block/floppy.c
++++ b/drivers/block/floppy.c
+@@ -3327,7 +3327,10 @@ static inline int set_geometry(unsigned int cmd, struct floppy_struct *g,
+ 		if (!capable(CAP_SYS_ADMIN))
+ 			return -EPERM;
+ 		mutex_lock(&open_lock);
+-		LOCK_FDC(drive, 1);
++		if (lock_fdc(drive, 1)) {
++			mutex_unlock(&open_lock);
++			return -EINTR;
++		}
+ 		floppy_type[type] = *g;
+ 		floppy_type[type].name = "user format";
+ 		for (cnt = type << 2; cnt < (type << 2) + 4; cnt++)
+diff --git a/drivers/md/md.c b/drivers/md/md.c
+index 641b211..eb1b73f 100644
+--- a/drivers/md/md.c
++++ b/drivers/md/md.c
+@@ -3589,7 +3589,8 @@ suspend_lo_store(mddev_t *mddev, const char *buf, size_t len)
+ 	char *e;
+ 	unsigned long long new = simple_strtoull(buf, &e, 10);
+ 
+-	if (mddev->pers->quiesce == NULL)
++	if (mddev->pers == NULL ||
++	    mddev->pers->quiesce == NULL)
+ 		return -EINVAL;
+ 	if (buf == e || (*e && *e != '\n'))
+ 		return -EINVAL;
+@@ -3617,7 +3618,8 @@ suspend_hi_store(mddev_t *mddev, const char *buf, size_t len)
+ 	char *e;
+ 	unsigned long long new = simple_strtoull(buf, &e, 10);
+ 
+-	if (mddev->pers->quiesce == NULL)
++	if (mddev->pers == NULL ||
++	    mddev->pers->quiesce == NULL)
+ 		return -EINVAL;
+ 	if (buf == e || (*e && *e != '\n'))
+ 		return -EINVAL;
+@@ -3876,6 +3878,8 @@ static int md_alloc(dev_t dev, char *name)
+ 			if (mddev2->gendisk &&
+ 			    strcmp(mddev2->gendisk->disk_name, name) == 0) {
+ 				spin_unlock(&all_mddevs_lock);
++				mutex_unlock(&disks_mutex);
++				mddev_put(mddev);
+ 				return -EEXIST;
+ 			}
+ 		spin_unlock(&all_mddevs_lock);
+diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
+index c0434e0..1f98ea4 100644
+--- a/drivers/md/raid5.c
++++ b/drivers/md/raid5.c
+@@ -3703,7 +3703,8 @@ static int make_request(struct request_queue *q, struct bio * bi)
+ 			/* FIXME what if we get a false positive because these
+ 			 * are being updated.
+ 			 */
+-			if (logical_sector >= mddev->suspend_lo &&
++			if (bio_data_dir(bi) == WRITE &&
++			    logical_sector >= mddev->suspend_lo &&
+ 			    logical_sector < mddev->suspend_hi) {
+ 				release_stripe(sh);
+ 				schedule();
+diff --git a/drivers/net/tun.c b/drivers/net/tun.c
+index 1be6a6b..8289292 100644
+--- a/drivers/net/tun.c
++++ b/drivers/net/tun.c
+@@ -486,12 +486,14 @@ static unsigned int tun_chr_poll(struct file *file, poll_table * wait)
+ {
+ 	struct tun_file *tfile = file->private_data;
+ 	struct tun_struct *tun = __tun_get(tfile);
+-	struct sock *sk = tun->sk;
++	struct sock *sk;
+ 	unsigned int mask = 0;
+ 
+ 	if (!tun)
+ 		return POLLERR;
+ 
++	sk = tun->sk;
++
+ 	DBG(KERN_INFO "%s: tun_chr_poll\n", tun->dev->name);
+ 
+ 	poll_wait(file, &tun->socket.wait, wait);
+diff --git a/drivers/pci/iova.c b/drivers/pci/iova.c
+index 2287116..46dd440 100644
+--- a/drivers/pci/iova.c
++++ b/drivers/pci/iova.c
+@@ -1,9 +1,19 @@
+ /*
+- * Copyright (c) 2006, Intel Corporation.
++ * Copyright © 2006-2009, Intel Corporation.
+  *
+- * This file is released under the GPLv2.
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms and conditions of the GNU General Public License,
++ * version 2, as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
++ * more details.
++ *
++ * You should have received a copy of the GNU General Public License along with
++ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
++ * Place - Suite 330, Boston, MA 02111-1307 USA.
+  *
+- * Copyright (C) 2006-2008 Intel Corporation
+  * Author: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
+  */
+ 
+@@ -123,7 +133,15 @@ move_left:
+ 	/* Insert the new_iova into domain rbtree by holding writer lock */
+ 	/* Add new node and rebalance tree. */
+ 	{
+-		struct rb_node **entry = &((prev)), *parent = NULL;
++		struct rb_node **entry, *parent = NULL;
++
++		/* If we have 'prev', it's a valid place to start the
++		   insertion. Otherwise, start from the root. */
++		if (prev)
++			entry = &prev;
++		else
++			entry = &iovad->rbroot.rb_node;
++
+ 		/* Figure out where to put new node */
+ 		while (*entry) {
+ 			struct iova *this = container_of(*entry,
+diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
+index ba76b68..eb40335 100644
+--- a/fs/fuse/dev.c
++++ b/fs/fuse/dev.c
+@@ -904,7 +904,7 @@ static ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov,
+ 			       unsigned long nr_segs, loff_t pos)
+ {
+ 	int err;
+-	unsigned nbytes = iov_length(iov, nr_segs);
++	size_t nbytes = iov_length(iov, nr_segs);
+ 	struct fuse_req *req;
+ 	struct fuse_out_header oh;
+ 	struct fuse_copy_state cs;
+diff --git a/fs/fuse/file.c b/fs/fuse/file.c
+index 06f30e9..053ff1c 100644
+--- a/fs/fuse/file.c
++++ b/fs/fuse/file.c
+@@ -1867,7 +1867,7 @@ static unsigned fuse_file_poll(struct file *file, poll_table *wait)
+ 
+ 	req = fuse_get_req(fc);
+ 	if (IS_ERR(req))
+-		return PTR_ERR(req);
++		return POLLERR;
+ 
+ 	req->in.h.opcode = FUSE_POLL;
+ 	req->in.h.nodeid = get_node_id(inode);
+diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h
+index d7d50d7..aa00800 100644
+--- a/include/asm-generic/percpu.h
++++ b/include/asm-generic/percpu.h
+@@ -97,4 +97,8 @@ extern void setup_per_cpu_areas(void);
+ #define PER_CPU_ATTRIBUTES
+ #endif
+ 
++#ifndef PER_CPU_DEF_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
++#endif
++
+ #endif /* _ASM_GENERIC_PERCPU_H_ */
+diff --git a/include/linux/mm.h b/include/linux/mm.h
+index bff1f0d..0c21af6 100644
+--- a/include/linux/mm.h
++++ b/include/linux/mm.h
+@@ -580,12 +580,10 @@ static inline void set_page_links(struct page *page, enum zone_type zone,
+  */
+ static inline unsigned long round_hint_to_min(unsigned long hint)
+ {
+-#ifdef CONFIG_SECURITY
+ 	hint &= PAGE_MASK;
+ 	if (((void *)hint != NULL) &&
+ 	    (hint < mmap_min_addr))
+ 		return PAGE_ALIGN(mmap_min_addr);
+-#endif
+ 	return hint;
+ }
+ 
+diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h
+index 8f921d7..68438e1 100644
+--- a/include/linux/percpu-defs.h
++++ b/include/linux/percpu-defs.h
+@@ -24,7 +24,8 @@
+ 
+ #define DEFINE_PER_CPU_SECTION(type, name, section)			\
+ 	__attribute__((__section__(PER_CPU_BASE_SECTION section)))	\
+-	PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
++	PER_CPU_ATTRIBUTES PER_CPU_DEF_ATTRIBUTES			\
++	__typeof__(type) per_cpu__##name
+ 
+ /*
+  * Variant on the per-CPU variable declaration/definition theme used for
+diff --git a/include/linux/personality.h b/include/linux/personality.h
+index a84e9ff..1261208 100644
+--- a/include/linux/personality.h
++++ b/include/linux/personality.h
+@@ -40,7 +40,10 @@ enum {
+  * Security-relevant compatibility flags that must be
+  * cleared upon setuid or setgid exec:
+  */
+-#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC|ADDR_NO_RANDOMIZE)
++#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC  | \
++			    ADDR_NO_RANDOMIZE  | \
++			    ADDR_COMPAT_LAYOUT | \
++			    MMAP_PAGE_ZERO)
+ 
+ /*
+  * Personality types.
+diff --git a/include/linux/security.h b/include/linux/security.h
+index d5fd616..5eff459 100644
+--- a/include/linux/security.h
++++ b/include/linux/security.h
+@@ -2197,6 +2197,8 @@ static inline int security_file_mmap(struct file *file, unsigned long reqprot,
+ 				     unsigned long addr,
+ 				     unsigned long addr_only)
+ {
++	if ((addr < mmap_min_addr) && !capable(CAP_SYS_RAWIO))
++		return -EACCES;
+ 	return 0;
+ }
+ 
+diff --git a/kernel/futex.c b/kernel/futex.c
+index d546b2d..4d973bd 100644
+--- a/kernel/futex.c
++++ b/kernel/futex.c
+@@ -241,6 +241,7 @@ again:
+ 	if (err < 0)
+ 		return err;
+ 
++	page = compound_head(page);
+ 	lock_page(page);
+ 	if (!page->mapping) {
+ 		unlock_page(page);
+@@ -278,6 +279,25 @@ void put_futex_key(int fshared, union futex_key *key)
+ 	drop_futex_key_refs(key);
+ }
+ 
++/*
++ * fault_in_user_writeable - fault in user address and verify RW access
++ * @uaddr:	pointer to faulting user space address
++ *
++ * Slow path to fixup the fault we just took in the atomic write
++ * access to @uaddr.
++ *
++ * We have no generic implementation of a non destructive write to the
++ * user address. We know that we faulted in the atomic pagefault
++ * disabled section so we can as well avoid the #PF overhead by
++ * calling get_user_pages() right away.
++ */
++static int fault_in_user_writeable(u32 __user *uaddr)
++{
++	int ret = get_user_pages(current, current->mm, (unsigned long)uaddr,
++				 1, 1, 0, NULL, NULL);
++	return ret < 0 ? ret : 0;
++}
++
+ static u32 cmpxchg_futex_value_locked(u32 __user *uaddr, u32 uval, u32 newval)
+ {
+ 	u32 curval;
+@@ -739,7 +759,6 @@ retry:
+ retry_private:
+ 	op_ret = futex_atomic_op_inuser(op, uaddr2);
+ 	if (unlikely(op_ret < 0)) {
+-		u32 dummy;
+ 
+ 		double_unlock_hb(hb1, hb2);
+ 
+@@ -757,7 +776,7 @@ retry_private:
+ 			goto out_put_keys;
+ 		}
+ 
+-		ret = get_user(dummy, uaddr2);
++		ret = fault_in_user_writeable(uaddr2);
+ 		if (ret)
+ 			goto out_put_keys;
+ 
+@@ -1097,7 +1116,7 @@ retry:
+ handle_fault:
+ 	spin_unlock(q->lock_ptr);
+ 
+-	ret = get_user(uval, uaddr);
++	ret = fault_in_user_writeable(uaddr);
+ 
+ 	spin_lock(q->lock_ptr);
+ 
+@@ -1552,16 +1571,9 @@ out:
+ 	return ret;
+ 
+ uaddr_faulted:
+-	/*
+-	 * We have to r/w  *(int __user *)uaddr, and we have to modify it
+-	 * atomically.  Therefore, if we continue to fault after get_user()
+-	 * below, we need to handle the fault ourselves, while still holding
+-	 * the mmap_sem.  This can occur if the uaddr is under contention as
+-	 * we have to drop the mmap_sem in order to call get_user().
+-	 */
+ 	queue_unlock(&q, hb);
+ 
+-	ret = get_user(uval, uaddr);
++	ret = fault_in_user_writeable(uaddr);
+ 	if (ret)
+ 		goto out_put_key;
+ 
+@@ -1657,17 +1669,10 @@ out:
+ 	return ret;
+ 
+ pi_faulted:
+-	/*
+-	 * We have to r/w  *(int __user *)uaddr, and we have to modify it
+-	 * atomically.  Therefore, if we continue to fault after get_user()
+-	 * below, we need to handle the fault ourselves, while still holding
+-	 * the mmap_sem.  This can occur if the uaddr is under contention as
+-	 * we have to drop the mmap_sem in order to call get_user().
+-	 */
+ 	spin_unlock(&hb->lock);
+ 	put_futex_key(fshared, &key);
+ 
+-	ret = get_user(uval, uaddr);
++	ret = fault_in_user_writeable(uaddr);
+ 	if (!ret)
+ 		goto retry;
+ 
+diff --git a/kernel/resource.c b/kernel/resource.c
+index ac5f3a3..78b0872 100644
+--- a/kernel/resource.c
++++ b/kernel/resource.c
+@@ -787,7 +787,7 @@ static int __init reserve_setup(char *str)
+ 	static struct resource reserve[MAXRESERVE];
+ 
+ 	for (;;) {
+-		int io_start, io_num;
++		unsigned int io_start, io_num;
+ 		int x = reserved;
+ 
+ 		if (get_option (&str, &io_start) != 2)
+diff --git a/kernel/sysctl.c b/kernel/sysctl.c
+index b2970d5..e5bfcc7 100644
+--- a/kernel/sysctl.c
++++ b/kernel/sysctl.c
+@@ -1225,7 +1225,6 @@ static struct ctl_table vm_table[] = {
+ 		.strategy	= &sysctl_jiffies,
+ 	},
+ #endif
+-#ifdef CONFIG_SECURITY
+ 	{
+ 		.ctl_name	= CTL_UNNUMBERED,
+ 		.procname	= "mmap_min_addr",
+@@ -1234,7 +1233,6 @@ static struct ctl_table vm_table[] = {
+ 		.mode		= 0644,
+ 		.proc_handler	= &proc_doulongvec_minmax,
+ 	},
+-#endif
+ #ifdef CONFIG_NUMA
+ 	{
+ 		.ctl_name	= CTL_UNNUMBERED,
+diff --git a/lib/dma-debug.c b/lib/dma-debug.c
+index 2b16536..6a4e3d4 100644
+--- a/lib/dma-debug.c
++++ b/lib/dma-debug.c
+@@ -599,7 +599,7 @@ static inline bool overlap(void *addr, u64 size, void *start, void *end)
+ 
+ 	return ((addr >= start && addr < end) ||
+ 		(addr2 >= start && addr2 < end) ||
+-		((addr < start) && (addr2 >= end)));
++		((addr < start) && (addr2 > end)));
+ }
+ 
+ static void check_for_illegal_area(struct device *dev, void *addr, u64 size)
+diff --git a/mm/Kconfig b/mm/Kconfig
+index c2b57d8..71830ba 100644
+--- a/mm/Kconfig
++++ b/mm/Kconfig
+@@ -226,6 +226,25 @@ config HAVE_MLOCKED_PAGE_BIT
+ config MMU_NOTIFIER
+ 	bool
+ 
++config DEFAULT_MMAP_MIN_ADDR
++        int "Low address space to protect from user allocation"
++        default 4096
++        help
++	  This is the portion of low virtual memory which should be protected
++	  from userspace allocation.  Keeping a user from writing to low pages
++	  can help reduce the impact of kernel NULL pointer bugs.
++
++	  For most ia64, ppc64 and x86 users with lots of address space
++	  a value of 65536 is reasonable and should cause no problems.
++	  On arm and other archs it should not be higher than 32768.
++	  Programs which use vm86 functionality would either need additional
++	  permissions from either the LSM or the capabilities module or have
++	  this protection disabled.
++
++	  This value can be changed after boot using the
++	  /proc/sys/vm/mmap_min_addr tunable.
++
++
+ config NOMMU_INITIAL_TRIM_EXCESS
+ 	int "Turn on mmap() excess space trimming before booting"
+ 	depends on !MMU
+diff --git a/mm/mmap.c b/mm/mmap.c
+index 6b7b1a9..2b43fa1 100644
+--- a/mm/mmap.c
++++ b/mm/mmap.c
+@@ -87,6 +87,9 @@ int sysctl_overcommit_ratio = 50;	/* default is 50% */
+ int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT;
+ struct percpu_counter vm_committed_as;
+ 
++/* amount of vm to protect from userspace access */
++unsigned long mmap_min_addr = CONFIG_DEFAULT_MMAP_MIN_ADDR;
++
+ /*
+  * Check that a process has enough memory to allocate a new virtual
+  * mapping. 0 means there is enough memory for the allocation to
+diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
+index f11931c..9c22032 100644
+--- a/net/ipv4/arp.c
++++ b/net/ipv4/arp.c
+@@ -801,11 +801,8 @@ static int arp_process(struct sk_buff *skb)
+  *  cache.
+  */
+ 
+-	/*
+-	 *  Special case: IPv4 duplicate address detection packet (RFC2131)
+-	 *  and Gratuitous ARP/ARP Announce. (RFC3927, Section 2.4)
+-	 */
+-	if (sip == 0 || tip == sip) {
++	/* Special case: IPv4 duplicate address detection packet (RFC2131) */
++	if (sip == 0) {
+ 		if (arp->ar_op == htons(ARPOP_REQUEST) &&
+ 		    inet_addr_type(net, tip) == RTN_LOCAL &&
+ 		    !arp_ignore(in_dev, sip, tip))
+diff --git a/security/Kconfig b/security/Kconfig
+index bb24477..d23c839 100644
+--- a/security/Kconfig
++++ b/security/Kconfig
+@@ -110,28 +110,8 @@ config SECURITY_ROOTPLUG
+ 
+ 	  See <http://www.linuxjournal.com/article.php?sid=6279> for
+ 	  more information about this module.
+-	  
+-	  If you are unsure how to answer this question, answer N.
+-
+-config SECURITY_DEFAULT_MMAP_MIN_ADDR
+-        int "Low address space to protect from user allocation"
+-        depends on SECURITY
+-        default 0
+-        help
+-	  This is the portion of low virtual memory which should be protected
+-	  from userspace allocation.  Keeping a user from writing to low pages
+-	  can help reduce the impact of kernel NULL pointer bugs.
+-
+-	  For most ia64, ppc64 and x86 users with lots of address space
+-	  a value of 65536 is reasonable and should cause no problems.
+-	  On arm and other archs it should not be higher than 32768.
+-	  Programs which use vm86 functionality would either need additional
+-	  permissions from either the LSM or the capabilities module or have
+-	  this protection disabled.
+-
+-	  This value can be changed after boot using the
+-	  /proc/sys/vm/mmap_min_addr tunable.
+ 
++	  If you are unsure how to answer this question, answer N.
+ 
+ source security/selinux/Kconfig
+ source security/smack/Kconfig
+diff --git a/security/security.c b/security/security.c
+index 5284255..dc7674f 100644
+--- a/security/security.c
++++ b/security/security.c
+@@ -26,9 +26,6 @@ extern void security_fixup_ops(struct security_operations *ops);
+ 
+ struct security_operations *security_ops;	/* Initialized to NULL */
+ 
+-/* amount of vm to protect from userspace access */
+-unsigned long mmap_min_addr = CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR;
+-
+ static inline int verify(struct security_operations *ops)
+ {
+ 	/* verify the security_operations structure exists */
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/stable/2.6.30.1.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/stable/2.6.30.1.patch
@@ -0,0 +1,5247 @@
+diff --git a/Documentation/sysctl/vm.txt b/Documentation/sysctl/vm.txt
+index c302ddf..5236573 100644
+--- a/Documentation/sysctl/vm.txt
++++ b/Documentation/sysctl/vm.txt
+@@ -314,10 +314,14 @@ min_unmapped_ratio:
+ 
+ This is available only on NUMA kernels.
+ 
+-A percentage of the total pages in each zone.  Zone reclaim will only
+-occur if more than this percentage of pages are file backed and unmapped.
+-This is to insure that a minimal amount of local pages is still available for
+-file I/O even if the node is overallocated.
++This is a percentage of the total pages in each zone. Zone reclaim will
++only occur if more than this percentage of pages are in a state that
++zone_reclaim_mode allows to be reclaimed.
++
++If zone_reclaim_mode has the value 4 OR'd, then the percentage is compared
++against all file-backed unmapped pages including swapcache pages and tmpfs
++files. Otherwise, only unmapped pages backed by normal files but not tmpfs
++files and similar are considered.
+ 
+ The default is 1 percent.
+ 
+diff --git a/Makefile b/Makefile
+index 03373bb..f8a0893 100644
+diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
+index bb7d695..1a711ea 100644
+--- a/arch/arm/include/asm/cacheflush.h
++++ b/arch/arm/include/asm/cacheflush.h
+@@ -429,6 +429,14 @@ static inline void flush_anon_page(struct vm_area_struct *vma,
+ 		__flush_anon_page(vma, page, vmaddr);
+ }
+ 
++#define ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE
++static inline void flush_kernel_dcache_page(struct page *page)
++{
++	/* highmem pages are always flushed upon kunmap already */
++	if ((cache_is_vivt() || cache_is_vipt_aliasing()) && !PageHighMem(page))
++		__cpuc_flush_dcache_page(page_address(page));
++}
++
+ #define flush_dcache_mmap_lock(mapping) \
+ 	spin_lock_irq(&(mapping)->tree_lock)
+ #define flush_dcache_mmap_unlock(mapping) \
+diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S
+index caba996..eb0566e 100644
+--- a/arch/x86/crypto/aesni-intel_asm.S
++++ b/arch/x86/crypto/aesni-intel_asm.S
+@@ -845,7 +845,7 @@ ENTRY(aesni_cbc_enc)
+  */
+ ENTRY(aesni_cbc_dec)
+ 	cmp $16, LEN
+-	jb .Lcbc_dec_ret
++	jb .Lcbc_dec_just_ret
+ 	mov 480(KEYP), KLEN
+ 	add $240, KEYP
+ 	movups (IVP), IV
+@@ -891,6 +891,7 @@ ENTRY(aesni_cbc_dec)
+ 	add $16, OUTP
+ 	cmp $16, LEN
+ 	jge .Lcbc_dec_loop1
+-	movups IV, (IVP)
+ .Lcbc_dec_ret:
++	movups IV, (IVP)
++.Lcbc_dec_just_ret:
+ 	ret
+diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
+index 42f2f83..9b2c049 100644
+--- a/arch/x86/include/asm/apic.h
++++ b/arch/x86/include/asm/apic.h
+@@ -410,7 +410,7 @@ static inline unsigned default_get_apic_id(unsigned long x)
+ {
+ 	unsigned int ver = GET_APIC_VERSION(apic_read(APIC_LVR));
+ 
+-	if (APIC_XAPIC(ver))
++	if (APIC_XAPIC(ver) || boot_cpu_has(X86_FEATURE_EXTD_APICID))
+ 		return (x >> 24) & 0xFF;
+ 	else
+ 		return (x >> 24) & 0x0F;
+diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
+index bb83b1c..78dee4f 100644
+--- a/arch/x86/include/asm/cpufeature.h
++++ b/arch/x86/include/asm/cpufeature.h
+@@ -94,6 +94,7 @@
+ #define X86_FEATURE_TSC_RELIABLE (3*32+23) /* TSC is known to be reliable */
+ #define X86_FEATURE_NONSTOP_TSC	(3*32+24) /* TSC does not stop in C states */
+ #define X86_FEATURE_CLFLUSH_MONITOR (3*32+25) /* "" clflush reqd with monitor */
++#define X86_FEATURE_EXTD_APICID	(3*32+26) /* has extended APICID (8 bits) */
+ 
+ /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
+ #define X86_FEATURE_XMM3	(4*32+ 0) /* "pni" SSE-3 */
+diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
+index f0faf58..a93d1cc 100644
+--- a/arch/x86/include/asm/kvm_host.h
++++ b/arch/x86/include/asm/kvm_host.h
+@@ -371,6 +371,8 @@ struct kvm_vcpu_arch {
+ 	unsigned long dr6;
+ 	unsigned long dr7;
+ 	unsigned long eff_db[KVM_NR_DB_REGS];
++
++	u32 exit_reason;
+ };
+ 
+ struct kvm_mem_alias {
+diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h
+index 4f8c199..5c70378 100644
+--- a/arch/x86/include/asm/mce.h
++++ b/arch/x86/include/asm/mce.h
+@@ -153,5 +153,7 @@ extern void mcheck_init(struct cpuinfo_x86 *c);
+ 
+ extern void (*mce_threshold_vector)(void);
+ 
++extern void (*machine_check_vector)(struct pt_regs *, long error_code);
++
+ #endif /* __KERNEL__ */
+ #endif /* _ASM_X86_MCE_H */
+diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
+index 9b0e61b..bddd44f 100644
+--- a/arch/x86/include/asm/uv/uv_bau.h
++++ b/arch/x86/include/asm/uv/uv_bau.h
+@@ -37,7 +37,7 @@
+ #define UV_CPUS_PER_ACT_STATUS		32
+ #define UV_ACT_STATUS_MASK		0x3
+ #define UV_ACT_STATUS_SIZE		2
+-#define UV_ACTIVATION_DESCRIPTOR_SIZE	32
++#define UV_ADP_SIZE			32
+ #define UV_DISTRIBUTION_SIZE		256
+ #define UV_SW_ACK_NPENDING		8
+ #define UV_NET_ENDPOINT_INTD		0x38
+diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h
+index d3a98ea..341070f 100644
+--- a/arch/x86/include/asm/uv/uv_hub.h
++++ b/arch/x86/include/asm/uv/uv_hub.h
+@@ -133,6 +133,7 @@ struct uv_scir_s {
+ struct uv_hub_info_s {
+ 	unsigned long		global_mmr_base;
+ 	unsigned long		gpa_mask;
++	unsigned int		gnode_extra;
+ 	unsigned long		gnode_upper;
+ 	unsigned long		lowmem_remap_top;
+ 	unsigned long		lowmem_remap_base;
+@@ -159,7 +160,8 @@ DECLARE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
+  * 		p -  PNODE (local part of nsids, right shifted 1)
+  */
+ #define UV_NASID_TO_PNODE(n)		(((n) >> 1) & uv_hub_info->pnode_mask)
+-#define UV_PNODE_TO_NASID(p)		(((p) << 1) | uv_hub_info->gnode_upper)
++#define UV_PNODE_TO_GNODE(p)		((p) |uv_hub_info->gnode_extra)
++#define UV_PNODE_TO_NASID(p)		(UV_PNODE_TO_GNODE(p) << 1)
+ 
+ #define UV_LOCAL_MMR_BASE		0xf4000000UL
+ #define UV_GLOBAL_MMR32_BASE		0xf8000000UL
+@@ -173,7 +175,7 @@ DECLARE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
+ #define UV_GLOBAL_MMR32_PNODE_BITS(p)	((p) << (UV_GLOBAL_MMR32_PNODE_SHIFT))
+ 
+ #define UV_GLOBAL_MMR64_PNODE_BITS(p)					\
+-	((unsigned long)(p) << UV_GLOBAL_MMR64_PNODE_SHIFT)
++	((unsigned long)(UV_PNODE_TO_GNODE(p)) << UV_GLOBAL_MMR64_PNODE_SHIFT)
+ 
+ #define UV_APIC_PNODE_SHIFT	6
+ 
+diff --git a/arch/x86/include/asm/vmx.h b/arch/x86/include/asm/vmx.h
+index 498f944..11be5ad 100644
+--- a/arch/x86/include/asm/vmx.h
++++ b/arch/x86/include/asm/vmx.h
+@@ -247,6 +247,7 @@ enum vmcs_field {
+ #define EXIT_REASON_MSR_READ            31
+ #define EXIT_REASON_MSR_WRITE           32
+ #define EXIT_REASON_MWAIT_INSTRUCTION   36
++#define EXIT_REASON_MCE_DURING_VMENTRY	 41
+ #define EXIT_REASON_TPR_BELOW_THRESHOLD 43
+ #define EXIT_REASON_APIC_ACCESS         44
+ #define EXIT_REASON_EPT_VIOLATION       48
+diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
+index 2bda693..39f2af4 100644
+--- a/arch/x86/kernel/apic/x2apic_uv_x.c
++++ b/arch/x86/kernel/apic/x2apic_uv_x.c
+@@ -562,7 +562,7 @@ void __init uv_system_init(void)
+ 	union uvh_node_id_u node_id;
+ 	unsigned long gnode_upper, lowmem_redir_base, lowmem_redir_size;
+ 	int bytes, nid, cpu, lcpu, pnode, blade, i, j, m_val, n_val;
+-	int max_pnode = 0;
++	int gnode_extra, max_pnode = 0;
+ 	unsigned long mmr_base, present, paddr;
+ 	unsigned short pnode_mask;
+ 
+@@ -574,6 +574,13 @@ void __init uv_system_init(void)
+ 	mmr_base =
+ 	    uv_read_local_mmr(UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR) &
+ 	    ~UV_MMR_ENABLE;
++	pnode_mask = (1 << n_val) - 1;
++	node_id.v = uv_read_local_mmr(UVH_NODE_ID);
++	gnode_extra = (node_id.s.node_id & ~((1 << n_val) - 1)) >> 1;
++	gnode_upper = ((unsigned long)gnode_extra  << m_val);
++	printk(KERN_DEBUG "UV: N %d, M %d, gnode_upper 0x%lx, gnode_extra 0x%x\n",
++			n_val, m_val, gnode_upper, gnode_extra);
++
+ 	printk(KERN_DEBUG "UV: global MMR base 0x%lx\n", mmr_base);
+ 
+ 	for(i = 0; i < UVH_NODE_PRESENT_TABLE_DEPTH; i++)
+@@ -607,11 +614,6 @@ void __init uv_system_init(void)
+ 		}
+ 	}
+ 
+-	pnode_mask = (1 << n_val) - 1;
+-	node_id.v = uv_read_local_mmr(UVH_NODE_ID);
+-	gnode_upper = (((unsigned long)node_id.s.node_id) &
+-		       ~((1 << n_val) - 1)) << m_val;
+-
+ 	uv_bios_init();
+ 	uv_bios_get_sn_info(0, &uv_type, &sn_partition_id,
+ 			    &sn_coherency_id, &sn_region_size);
+@@ -634,6 +636,7 @@ void __init uv_system_init(void)
+ 		uv_cpu_hub_info(cpu)->pnode_mask = pnode_mask;
+ 		uv_cpu_hub_info(cpu)->gpa_mask = (1 << (m_val + n_val)) - 1;
+ 		uv_cpu_hub_info(cpu)->gnode_upper = gnode_upper;
++		uv_cpu_hub_info(cpu)->gnode_extra = gnode_extra;
+ 		uv_cpu_hub_info(cpu)->global_mmr_base = mmr_base;
+ 		uv_cpu_hub_info(cpu)->coherency_domain_number = sn_coherency_id;
+ 		uv_cpu_hub_info(cpu)->scir.offset = SCIR_LOCAL_MMR_BASE + lcpu;
+diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
+index 7e4a459..d869b3b 100644
+--- a/arch/x86/kernel/cpu/amd.c
++++ b/arch/x86/kernel/cpu/amd.c
+@@ -6,6 +6,7 @@
+ #include <asm/processor.h>
+ #include <asm/apic.h>
+ #include <asm/cpu.h>
++#include <asm/pci-direct.h>
+ 
+ #ifdef CONFIG_X86_64
+ # include <asm/numa_64.h>
+@@ -257,13 +258,15 @@ static void __cpuinit amd_detect_cmp(struct cpuinfo_x86 *c)
+ {
+ #ifdef CONFIG_X86_HT
+ 	unsigned bits;
++	int cpu = smp_processor_id();
+ 
+ 	bits = c->x86_coreid_bits;
+-
+ 	/* Low order bits define the core id (index of core in socket) */
+ 	c->cpu_core_id = c->initial_apicid & ((1 << bits)-1);
+ 	/* Convert the initial APIC ID into the socket ID */
+ 	c->phys_proc_id = c->initial_apicid >> bits;
++	/* use socket ID also for last level cache */
++	per_cpu(cpu_llc_id, cpu) = c->phys_proc_id;
+ #endif
+ }
+ 
+@@ -351,6 +354,15 @@ static void __cpuinit early_init_amd(struct cpuinfo_x86 *c)
+ 		    (c->x86_model == 8 && c->x86_mask >= 8))
+ 			set_cpu_cap(c, X86_FEATURE_K6_MTRR);
+ #endif
++#if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_PCI)
++	/* check CPU config space for extended APIC ID */
++	if (c->x86 >= 0xf) {
++		unsigned int val;
++		val = read_pci_config(0, 24, 0, 0x68);
++		if ((val & ((1 << 17) | (1 << 18))) == ((1 << 17) | (1 << 18)))
++			set_cpu_cap(c, X86_FEATURE_EXTD_APICID);
++	}
++#endif
+ }
+ 
+ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
+diff --git a/arch/x86/kernel/cpu/mcheck/mce_32.c b/arch/x86/kernel/cpu/mcheck/mce_32.c
+index 3552119..07b523c 100644
+--- a/arch/x86/kernel/cpu/mcheck/mce_32.c
++++ b/arch/x86/kernel/cpu/mcheck/mce_32.c
+@@ -29,6 +29,7 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code)
+ 
+ /* Call the installed machine check handler for this CPU setup. */
+ void (*machine_check_vector)(struct pt_regs *, long error_code) = unexpected_machine_check;
++EXPORT_SYMBOL_GPL(machine_check_vector);
+ 
+ /* This has to be run for each processor */
+ void mcheck_init(struct cpuinfo_x86 *c)
+diff --git a/arch/x86/kernel/cpu/mcheck/mce_64.c b/arch/x86/kernel/cpu/mcheck/mce_64.c
+index 09dd1d4..289cc48 100644
+--- a/arch/x86/kernel/cpu/mcheck/mce_64.c
++++ b/arch/x86/kernel/cpu/mcheck/mce_64.c
+@@ -420,6 +420,7 @@ void do_machine_check(struct pt_regs * regs, long error_code)
+  out2:
+ 	atomic_dec(&mce_entry);
+ }
++EXPORT_SYMBOL_GPL(do_machine_check);
+ 
+ #ifdef CONFIG_X86_MCE_INTEL
+ /***
+diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
+index 81408b9..dedc2bd 100644
+--- a/arch/x86/kernel/hpet.c
++++ b/arch/x86/kernel/hpet.c
+@@ -510,7 +510,8 @@ static int hpet_setup_irq(struct hpet_dev *dev)
+ {
+ 
+ 	if (request_irq(dev->irq, hpet_interrupt_handler,
+-			IRQF_DISABLED|IRQF_NOBALANCING, dev->name, dev))
++			IRQF_TIMER | IRQF_DISABLED | IRQF_NOBALANCING,
++			dev->name, dev))
+ 		return -1;
+ 
+ 	disable_irq(dev->irq);
+diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c
+index b284b58..3065b40 100644
+--- a/arch/x86/kernel/pci-gart_64.c
++++ b/arch/x86/kernel/pci-gart_64.c
+@@ -688,8 +688,6 @@ static __init int init_k8_gatt(struct agp_kern_info *info)
+ 
+ 	agp_gatt_table = gatt;
+ 
+-	enable_gart_translations();
+-
+ 	error = sysdev_class_register(&gart_sysdev_class);
+ 	if (!error)
+ 		error = sysdev_register(&device_gart);
+@@ -847,6 +845,14 @@ void __init gart_iommu_init(void)
+ 	wbinvd();
+ 
+ 	/*
++	 * Now all caches are flushed and we can safely enable
++	 * GART hardware.  Doing it early leaves the possibility
++	 * of stale cache entries that can lead to GART PTE
++	 * errors.
++	 */
++	enable_gart_translations();
++
++	/*
+ 	 * Try to workaround a bug (thanks to BenH):
+ 	 * Set unmapped entries to a scratch page instead of 0.
+ 	 * Any prefetches that hit unmapped entries won't get an bus abort
+diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
+index 667188e..d2d1ce8 100644
+--- a/arch/x86/kernel/reboot.c
++++ b/arch/x86/kernel/reboot.c
+@@ -192,6 +192,15 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
+ 			DMI_MATCH(DMI_BOARD_NAME, "0KP561"),
+ 		},
+ 	},
++	{   /* Handle problems with rebooting on Dell Optiplex 360 with 0T656F */
++		.callback = set_bios_reboot,
++		.ident = "Dell OptiPlex 360",
++		.matches = {
++			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
++			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 360"),
++			DMI_MATCH(DMI_BOARD_NAME, "0T656F"),
++		},
++	},
+ 	{	/* Handle problems with rebooting on Dell 2400's */
+ 		.callback = set_bios_reboot,
+ 		.ident = "Dell PowerEdge 2400",
+diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
+index b415843..0acc6a7 100644
+--- a/arch/x86/kernel/setup.c
++++ b/arch/x86/kernel/setup.c
+@@ -293,15 +293,13 @@ static void __init reserve_brk(void)
+ 
+ #ifdef CONFIG_BLK_DEV_INITRD
+ 
+-#ifdef CONFIG_X86_32
+-
+ #define MAX_MAP_CHUNK	(NR_FIX_BTMAPS << PAGE_SHIFT)
+ static void __init relocate_initrd(void)
+ {
+ 
+ 	u64 ramdisk_image = boot_params.hdr.ramdisk_image;
+ 	u64 ramdisk_size  = boot_params.hdr.ramdisk_size;
+-	u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT;
++	u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;
+ 	u64 ramdisk_here;
+ 	unsigned long slop, clen, mapaddr;
+ 	char *p, *q;
+@@ -357,14 +355,13 @@ static void __init relocate_initrd(void)
+ 		ramdisk_image, ramdisk_image + ramdisk_size - 1,
+ 		ramdisk_here, ramdisk_here + ramdisk_size - 1);
+ }
+-#endif
+ 
+ static void __init reserve_initrd(void)
+ {
+ 	u64 ramdisk_image = boot_params.hdr.ramdisk_image;
+ 	u64 ramdisk_size  = boot_params.hdr.ramdisk_size;
+ 	u64 ramdisk_end   = ramdisk_image + ramdisk_size;
+-	u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT;
++	u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;
+ 
+ 	if (!boot_params.hdr.type_of_loader ||
+ 	    !ramdisk_image || !ramdisk_size)
+@@ -394,14 +391,8 @@ static void __init reserve_initrd(void)
+ 		return;
+ 	}
+ 
+-#ifdef CONFIG_X86_32
+ 	relocate_initrd();
+-#else
+-	printk(KERN_ERR "initrd extends beyond end of memory "
+-	       "(0x%08llx > 0x%08llx)\ndisabling initrd\n",
+-	       ramdisk_end, end_of_lowmem);
+-	initrd_start = 0;
+-#endif
++
+ 	free_early(ramdisk_image, ramdisk_end);
+ }
+ #else
+diff --git a/arch/x86/kernel/tlb_uv.c b/arch/x86/kernel/tlb_uv.c
+index 8c7b03b..8ccabb8 100644
+--- a/arch/x86/kernel/tlb_uv.c
++++ b/arch/x86/kernel/tlb_uv.c
+@@ -711,25 +711,31 @@ uv_activation_descriptor_init(int node, int pnode)
+ 	unsigned long pa;
+ 	unsigned long m;
+ 	unsigned long n;
+-	unsigned long mmr_image;
+ 	struct bau_desc *adp;
+ 	struct bau_desc *ad2;
+ 
+-	adp = (struct bau_desc *)kmalloc_node(16384, GFP_KERNEL, node);
++	/*
++	 * each bau_desc is 64 bytes; there are 8 (UV_ITEMS_PER_DESCRIPTOR)
++	 * per cpu; and up to 32 (UV_ADP_SIZE) cpu's per blade
++	 */
++	adp = (struct bau_desc *)kmalloc_node(sizeof(struct bau_desc)*
++		UV_ADP_SIZE*UV_ITEMS_PER_DESCRIPTOR, GFP_KERNEL, node);
+ 	BUG_ON(!adp);
+ 
+ 	pa = uv_gpa(adp); /* need the real nasid*/
+ 	n = pa >> uv_nshift;
+ 	m = pa & uv_mmask;
+ 
+-	mmr_image = uv_read_global_mmr64(pnode, UVH_LB_BAU_SB_DESCRIPTOR_BASE);
+-	if (mmr_image) {
+-		uv_write_global_mmr64(pnode, (unsigned long)
+-				      UVH_LB_BAU_SB_DESCRIPTOR_BASE,
+-				      (n << UV_DESC_BASE_PNODE_SHIFT | m));
+-	}
++	uv_write_global_mmr64(pnode, UVH_LB_BAU_SB_DESCRIPTOR_BASE,
++			      (n << UV_DESC_BASE_PNODE_SHIFT | m));
+ 
+-	for (i = 0, ad2 = adp; i < UV_ACTIVATION_DESCRIPTOR_SIZE; i++, ad2++) {
++	/*
++	 * initializing all 8 (UV_ITEMS_PER_DESCRIPTOR) descriptors for each
++	 * cpu even though we only use the first one; one descriptor can
++	 * describe a broadcast to 256 nodes.
++	 */
++	for (i = 0, ad2 = adp; i < (UV_ADP_SIZE*UV_ITEMS_PER_DESCRIPTOR);
++		i++, ad2++) {
+ 		memset(ad2, 0, sizeof(struct bau_desc));
+ 		ad2->header.sw_ack_flag = 1;
+ 		/*
+diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
+index d57de05..cf8611d 100644
+--- a/arch/x86/kernel/tsc.c
++++ b/arch/x86/kernel/tsc.c
+@@ -710,7 +710,16 @@ static cycle_t read_tsc(struct clocksource *cs)
+ #ifdef CONFIG_X86_64
+ static cycle_t __vsyscall_fn vread_tsc(void)
+ {
+-	cycle_t ret = (cycle_t)vget_cycles();
++	cycle_t ret;
++
++	/*
++	 * Surround the RDTSC by barriers, to make sure it's not
++	 * speculated to outside the seqlock critical section and
++	 * does not cause time warps:
++	 */
++	rdtsc_barrier();
++	ret = (cycle_t)vget_cycles();
++	rdtsc_barrier();
+ 
+ 	return ret >= __vsyscall_gtod_data.clock.cycle_last ?
+ 		ret : __vsyscall_gtod_data.clock.cycle_last;
+diff --git a/arch/x86/kernel/vm86_32.c b/arch/x86/kernel/vm86_32.c
+index d7ac84e..6a17769 100644
+--- a/arch/x86/kernel/vm86_32.c
++++ b/arch/x86/kernel/vm86_32.c
+@@ -287,10 +287,9 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk
+ 	info->regs.pt.ds = 0;
+ 	info->regs.pt.es = 0;
+ 	info->regs.pt.fs = 0;
+-
+-/* we are clearing gs later just before "jmp resume_userspace",
+- * because it is not saved/restored.
+- */
++#ifndef CONFIG_X86_32_LAZY_GS
++	info->regs.pt.gs = 0;
++#endif
+ 
+ /*
+  * The flags register is also special: we cannot trust that the user
+@@ -343,7 +342,9 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk
+ 	__asm__ __volatile__(
+ 		"movl %0,%%esp\n\t"
+ 		"movl %1,%%ebp\n\t"
++#ifdef CONFIG_X86_32_LAZY_GS
+ 		"mov  %2, %%gs\n\t"
++#endif
+ 		"jmp resume_userspace"
+ 		: /* no outputs */
+ 		:"r" (&info->regs), "r" (task_thread_info(tsk)), "r" (0));
+diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
+index 44153af..25ee06a 100644
+--- a/arch/x86/kernel/vsyscall_64.c
++++ b/arch/x86/kernel/vsyscall_64.c
+@@ -132,15 +132,7 @@ static __always_inline void do_vgettimeofday(struct timeval * tv)
+ 			return;
+ 		}
+ 
+-		/*
+-		 * Surround the RDTSC by barriers, to make sure it's not
+-		 * speculated to outside the seqlock critical section and
+-		 * does not cause time warps:
+-		 */
+-		rdtsc_barrier();
+ 		now = vread();
+-		rdtsc_barrier();
+-
+ 		base = __vsyscall_gtod_data.clock.cycle_last;
+ 		mask = __vsyscall_gtod_data.clock.mask;
+ 		mult = __vsyscall_gtod_data.clock.mult;
+diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
+index bb48133..fa0adcd 100644
+--- a/arch/x86/kvm/vmx.c
++++ b/arch/x86/kvm/vmx.c
+@@ -32,6 +32,7 @@
+ #include <asm/desc.h>
+ #include <asm/vmx.h>
+ #include <asm/virtext.h>
++#include <asm/mce.h>
+ 
+ #define __ex(x) __kvm_handle_fault_on_reboot(x)
+ 
+@@ -97,6 +98,8 @@ struct vcpu_vmx {
+ 	int soft_vnmi_blocked;
+ 	ktime_t entry_time;
+ 	s64 vnmi_blocked_time;
++
++	u32 exit_reason;
+ };
+ 
+ static inline struct vcpu_vmx *to_vmx(struct kvm_vcpu *vcpu)
+@@ -478,7 +481,7 @@ static void update_exception_bitmap(struct kvm_vcpu *vcpu)
+ {
+ 	u32 eb;
+ 
+-	eb = (1u << PF_VECTOR) | (1u << UD_VECTOR);
++	eb = (1u << PF_VECTOR) | (1u << UD_VECTOR) | (1u << MC_VECTOR);
+ 	if (!vcpu->fpu_active)
+ 		eb |= 1u << NM_VECTOR;
+ 	if (vcpu->guest_debug & KVM_GUESTDBG_ENABLE) {
+@@ -2585,6 +2588,35 @@ static int handle_rmode_exception(struct kvm_vcpu *vcpu,
+ 	return 0;
+ }
+ 
++/*
++ * Trigger machine check on the host. We assume all the MSRs are already set up
++ * by the CPU and that we still run on the same CPU as the MCE occurred on.
++ * We pass a fake environment to the machine check handler because we want
++ * the guest to be always treated like user space, no matter what context
++ * it used internally.
++ */
++static void kvm_machine_check(void)
++{
++#ifdef CONFIG_X86_MCE
++	struct pt_regs regs = {
++		.cs = 3, /* Fake ring 3 no matter what the guest ran on */
++		.flags = X86_EFLAGS_IF,
++	};
++
++#ifdef CONFIG_X86_64
++	do_machine_check(&regs, 0);
++#else
++	machine_check_vector(&regs, 0);
++#endif
++#endif
++}
++
++static int handle_machine_check(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
++{
++	/* already handled by vcpu_run */
++	return 1;
++}
++
+ static int handle_exception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+ {
+ 	struct vcpu_vmx *vmx = to_vmx(vcpu);
+@@ -2596,6 +2628,10 @@ static int handle_exception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+ 	vect_info = vmx->idt_vectoring_info;
+ 	intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
+ 
++	ex_no = intr_info & INTR_INFO_VECTOR_MASK;
++	if (ex_no == MC_VECTOR)
++		return handle_machine_check(vcpu, kvm_run);
++
+ 	if ((vect_info & VECTORING_INFO_VALID_MASK) &&
+ 						!is_page_fault(intr_info))
+ 		printk(KERN_ERR "%s: unexpected, vectoring info 0x%x "
+@@ -2648,7 +2684,6 @@ static int handle_exception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+ 		return 1;
+ 	}
+ 
+-	ex_no = intr_info & INTR_INFO_VECTOR_MASK;
+ 	switch (ex_no) {
+ 	case DB_VECTOR:
+ 		dr6 = vmcs_readl(EXIT_QUALIFICATION);
+@@ -2978,6 +3013,12 @@ static int handle_vmcall(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+ 	return 1;
+ }
+ 
++static int handle_vmx_insn(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
++{
++	kvm_queue_exception(vcpu, UD_VECTOR);
++	return 1;
++}
++
+ static int handle_invlpg(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+ {
+ 	u64 exit_qualification = vmcs_read64(EXIT_QUALIFICATION);
+@@ -3145,11 +3186,21 @@ static int (*kvm_vmx_exit_handlers[])(struct kvm_vcpu *vcpu,
+ 	[EXIT_REASON_HLT]                     = handle_halt,
+ 	[EXIT_REASON_INVLPG]		      = handle_invlpg,
+ 	[EXIT_REASON_VMCALL]                  = handle_vmcall,
++	[EXIT_REASON_VMCLEAR]	              = handle_vmx_insn,
++	[EXIT_REASON_VMLAUNCH]                = handle_vmx_insn,
++	[EXIT_REASON_VMPTRLD]                 = handle_vmx_insn,
++	[EXIT_REASON_VMPTRST]                 = handle_vmx_insn,
++	[EXIT_REASON_VMREAD]                  = handle_vmx_insn,
++	[EXIT_REASON_VMRESUME]                = handle_vmx_insn,
++	[EXIT_REASON_VMWRITE]                 = handle_vmx_insn,
++	[EXIT_REASON_VMOFF]                   = handle_vmx_insn,
++	[EXIT_REASON_VMON]                    = handle_vmx_insn,
+ 	[EXIT_REASON_TPR_BELOW_THRESHOLD]     = handle_tpr_below_threshold,
+ 	[EXIT_REASON_APIC_ACCESS]             = handle_apic_access,
+ 	[EXIT_REASON_WBINVD]                  = handle_wbinvd,
+ 	[EXIT_REASON_TASK_SWITCH]             = handle_task_switch,
+ 	[EXIT_REASON_EPT_VIOLATION]	      = handle_ept_violation,
++	[EXIT_REASON_MCE_DURING_VMENTRY]      = handle_machine_check,
+ };
+ 
+ static const int kvm_vmx_max_exit_handlers =
+@@ -3161,8 +3212,8 @@ static const int kvm_vmx_max_exit_handlers =
+  */
+ static int kvm_handle_exit(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
+ {
+-	u32 exit_reason = vmcs_read32(VM_EXIT_REASON);
+ 	struct vcpu_vmx *vmx = to_vmx(vcpu);
++	u32 exit_reason = vmx->exit_reason;
+ 	u32 vectoring_info = vmx->idt_vectoring_info;
+ 
+ 	KVMTRACE_3D(VMEXIT, vcpu, exit_reason, (u32)kvm_rip_read(vcpu),
+@@ -3512,6 +3563,13 @@ static void vmx_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+ 
+ 	intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
+ 
++	vmx->exit_reason = vmcs_read32(VM_EXIT_REASON);
++
++	/* Handle machine checks before interrupts are enabled */
++	if ((vmx->exit_reason == EXIT_REASON_MCE_DURING_VMENTRY) ||
++		(intr_info & INTR_INFO_VECTOR_MASK) == MC_VECTOR)
++		kvm_machine_check();
++
+ 	/* We need to handle NMIs before interrupts are enabled */
+ 	if ((intr_info & INTR_INFO_INTR_TYPE_MASK) == INTR_TYPE_NMI_INTR &&
+ 	    (intr_info & INTR_INFO_VALID_MASK)) {
+diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
+index 3944e91..ee4714b 100644
+--- a/arch/x86/kvm/x86.c
++++ b/arch/x86/kvm/x86.c
+@@ -634,10 +634,12 @@ static void kvm_write_guest_time(struct kvm_vcpu *v)
+ 	if ((!vcpu->time_page))
+ 		return;
+ 
++	preempt_disable();
+ 	if (unlikely(vcpu->hv_clock_tsc_khz != __get_cpu_var(cpu_tsc_khz))) {
+ 		kvm_set_time_scale(__get_cpu_var(cpu_tsc_khz), &vcpu->hv_clock);
+ 		vcpu->hv_clock_tsc_khz = __get_cpu_var(cpu_tsc_khz);
+ 	}
++	preempt_enable();
+ 
+ 	/* Keep irq disabled to prevent changes to the clock */
+ 	local_irq_save(flags);
+@@ -3934,7 +3936,13 @@ int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu,
+ 
+ 	vcpu->arch.cr2 = sregs->cr2;
+ 	mmu_reset_needed |= vcpu->arch.cr3 != sregs->cr3;
+-	vcpu->arch.cr3 = sregs->cr3;
++
++	down_read(&vcpu->kvm->slots_lock);
++	if (gfn_to_memslot(vcpu->kvm, sregs->cr3 >> PAGE_SHIFT))
++		vcpu->arch.cr3 = sregs->cr3;
++	else
++		set_bit(KVM_REQ_TRIPLE_FAULT, &vcpu->requests);
++	up_read(&vcpu->kvm->slots_lock);
+ 
+ 	kvm_set_cr8(vcpu, sregs->cr8);
+ 
+diff --git a/arch/x86/mm/memtest.c b/arch/x86/mm/memtest.c
+index 605c8be..c0bedcd 100644
+--- a/arch/x86/mm/memtest.c
++++ b/arch/x86/mm/memtest.c
+@@ -40,23 +40,23 @@ static void __init reserve_bad_mem(u64 pattern, u64 start_bad, u64 end_bad)
+ 
+ static void __init memtest(u64 pattern, u64 start_phys, u64 size)
+ {
+-	u64 i, count;
+-	u64 *start;
++	u64 *p;
++	void *start, *end;
+ 	u64 start_bad, last_bad;
+ 	u64 start_phys_aligned;
+ 	size_t incr;
+ 
+ 	incr = sizeof(pattern);
+ 	start_phys_aligned = ALIGN(start_phys, incr);
+-	count = (size - (start_phys_aligned - start_phys))/incr;
+ 	start = __va(start_phys_aligned);
++	end = start + size - (start_phys_aligned - start_phys);
+ 	start_bad = 0;
+ 	last_bad = 0;
+ 
+-	for (i = 0; i < count; i++)
+-		start[i] = pattern;
+-	for (i = 0; i < count; i++, start++, start_phys_aligned += incr) {
+-		if (*start == pattern)
++	for (p = start; p < end; p++)
++		*p = pattern;
++	for (p = start; p < end; p++, start_phys_aligned += incr) {
++		if (*p == pattern)
+ 			continue;
+ 		if (start_phys_aligned == last_bad + incr) {
+ 			last_bad += incr;
+diff --git a/drivers/char/epca.c b/drivers/char/epca.c
+index af7c13c..bcd07cb 100644
+--- a/drivers/char/epca.c
++++ b/drivers/char/epca.c
+@@ -1518,7 +1518,7 @@ static void doevent(int crd)
+ 		if (event & MODEMCHG_IND) {
+ 			/* A modem signal change has been indicated */
+ 			ch->imodem = mstat;
+-			if (test_bit(ASYNC_CHECK_CD, &ch->port.flags)) {
++			if (test_bit(ASYNCB_CHECK_CD, &ch->port.flags)) {
+ 				/* We are now receiving dcd */
+ 				if (mstat & ch->dcd)
+ 					wake_up_interruptible(&ch->port.open_wait);
+@@ -1765,9 +1765,9 @@ static void epcaparam(struct tty_struct *tty, struct channel *ch)
+ 		 * that the driver will wait on carrier detect.
+ 		 */
+ 		if (ts->c_cflag & CLOCAL)
+-			clear_bit(ASYNC_CHECK_CD, &ch->port.flags);
++			clear_bit(ASYNCB_CHECK_CD, &ch->port.flags);
+ 		else
+-			set_bit(ASYNC_CHECK_CD, &ch->port.flags);
++			set_bit(ASYNCB_CHECK_CD, &ch->port.flags);
+ 		mval = ch->m_dtr | ch->m_rts;
+ 	} /* End CBAUD not detected */
+ 	iflag = termios2digi_i(ch, ts->c_iflag);
+@@ -2244,7 +2244,8 @@ static void do_softint(struct work_struct *work)
+ 			if (test_and_clear_bit(EPCA_EVENT_HANGUP, &ch->event)) {
+ 				tty_hangup(tty);
+ 				wake_up_interruptible(&ch->port.open_wait);
+-				clear_bit(ASYNC_NORMAL_ACTIVE, &ch->port.flags);
++				clear_bit(ASYNCB_NORMAL_ACTIVE,
++						&ch->port.flags);
+ 			}
+ 		}
+ 		tty_kref_put(tty);
+diff --git a/drivers/char/moxa.c b/drivers/char/moxa.c
+index 4a4cab7..a57ab11 100644
+--- a/drivers/char/moxa.c
++++ b/drivers/char/moxa.c
+@@ -1184,6 +1184,11 @@ static int moxa_open(struct tty_struct *tty, struct file *filp)
+ 		return -ENODEV;
+ 	}
+ 
++	if (port % MAX_PORTS_PER_BOARD >= brd->numPorts) {
++		retval = -ENODEV;
++		goto out_unlock;
++	}
++
+ 	ch = &brd->ports[port % MAX_PORTS_PER_BOARD];
+ 	ch->port.count++;
+ 	tty->driver_data = ch;
+@@ -1208,8 +1213,8 @@ static int moxa_open(struct tty_struct *tty, struct file *filp)
+ 				moxa_close_port(tty);
+ 	} else
+ 		ch->port.flags |= ASYNC_NORMAL_ACTIVE;
++out_unlock:
+ 	mutex_unlock(&moxa_openlock);
+-
+ 	return retval;
+ }
+ 
+diff --git a/drivers/char/n_r3964.c b/drivers/char/n_r3964.c
+index d2e93e3..2e99158 100644
+--- a/drivers/char/n_r3964.c
++++ b/drivers/char/n_r3964.c
+@@ -1062,7 +1062,7 @@ static ssize_t r3964_read(struct tty_struct *tty, struct file *file,
+ 	struct r3964_client_info *pClient;
+ 	struct r3964_message *pMsg;
+ 	struct r3964_client_message theMsg;
+-	int count;
++	int ret;
+ 
+ 	TRACE_L("read()");
+ 
+@@ -1074,8 +1074,8 @@ static ssize_t r3964_read(struct tty_struct *tty, struct file *file,
+ 		if (pMsg == NULL) {
+ 			/* no messages available. */
+ 			if (file->f_flags & O_NONBLOCK) {
+-				unlock_kernel();
+-				return -EAGAIN;
++				ret = -EAGAIN;
++				goto unlock;
+ 			}
+ 			/* block until there is a message: */
+ 			wait_event_interruptible(pInfo->read_wait,
+@@ -1085,29 +1085,31 @@ static ssize_t r3964_read(struct tty_struct *tty, struct file *file,
+ 		/* If we still haven't got a message, we must have been signalled */
+ 
+ 		if (!pMsg) {
+-			unlock_kernel();
+-			return -EINTR;
++			ret = -EINTR;
++			goto unlock;
+ 		}
+ 
+ 		/* deliver msg to client process: */
+ 		theMsg.msg_id = pMsg->msg_id;
+ 		theMsg.arg = pMsg->arg;
+ 		theMsg.error_code = pMsg->error_code;
+-		count = sizeof(struct r3964_client_message);
++		ret = sizeof(struct r3964_client_message);
+ 
+ 		kfree(pMsg);
+ 		TRACE_M("r3964_read - msg kfree %p", pMsg);
+ 
+-		if (copy_to_user(buf, &theMsg, count)) {
+-			unlock_kernel();
+-			return -EFAULT;
++		if (copy_to_user(buf, &theMsg, ret)) {
++			ret = -EFAULT;
++			goto unlock;
+ 		}
+ 
+-		TRACE_PS("read - return %d", count);
+-		return count;
++		TRACE_PS("read - return %d", ret);
++		goto unlock;
+ 	}
++	ret = -EPERM;
++unlock:
+ 	unlock_kernel();
+-	return -EPERM;
++	return ret;
+ }
+ 
+ static ssize_t r3964_write(struct tty_struct *tty, struct file *file,
+diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c
+index dbb9125..881934c 100644
+--- a/drivers/char/pcmcia/cm4000_cs.c
++++ b/drivers/char/pcmcia/cm4000_cs.c
+@@ -1575,7 +1575,8 @@ static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+ 		clear_bit(LOCK_IO, &dev->flags);
+ 		wake_up_interruptible(&dev->ioq);
+ 
+-		return 0;
++		rc = 0;
++		break;
+ 	case CM_IOCSPTS:
+ 		{
+ 			struct ptsreq krnptsreq;
+diff --git a/drivers/char/rocket.c b/drivers/char/rocket.c
+index f59fc5c..3fa7234 100644
+--- a/drivers/char/rocket.c
++++ b/drivers/char/rocket.c
+@@ -934,7 +934,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp)
+ 	/*
+ 	 * Info->count is now 1; so it's safe to sleep now.
+ 	 */
+-	if (!test_bit(ASYNC_INITIALIZED, &port->flags)) {
++	if (!test_bit(ASYNCB_INITIALIZED, &port->flags)) {
+ 		cp = &info->channel;
+ 		sSetRxTrigger(cp, TRIG_1);
+ 		if (sGetChanStatus(cp) & CD_ACT)
+@@ -958,7 +958,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp)
+ 		sEnRxFIFO(cp);
+ 		sEnTransmit(cp);
+ 
+-		set_bit(ASYNC_INITIALIZED, &info->port.flags);
++		set_bit(ASYNCB_INITIALIZED, &info->port.flags);
+ 
+ 		/*
+ 		 * Set up the tty->alt_speed kludge
+@@ -1641,7 +1641,7 @@ static int rp_write(struct tty_struct *tty,
+ 	/*  Write remaining data into the port's xmit_buf */
+ 	while (1) {
+ 		/* Hung up ? */
+-		if (!test_bit(ASYNC_NORMAL_ACTIVE, &info->port.flags))
++		if (!test_bit(ASYNCB_NORMAL_ACTIVE, &info->port.flags))
+ 			goto end;
+ 		c = min(count, XMIT_BUF_SIZE - info->xmit_cnt - 1);
+ 		c = min(c, XMIT_BUF_SIZE - info->xmit_head);
+diff --git a/drivers/char/vt_ioctl.c b/drivers/char/vt_ioctl.c
+index e6ce632..7539bed 100644
+--- a/drivers/char/vt_ioctl.c
++++ b/drivers/char/vt_ioctl.c
+@@ -396,7 +396,8 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
+ 	kbd = kbd_table + console;
+ 	switch (cmd) {
+ 	case TIOCLINUX:
+-		return tioclinux(tty, arg);
++		ret = tioclinux(tty, arg);
++		break;
+ 	case KIOCSOUND:
+ 		if (!perm)
+ 			goto eperm;
+diff --git a/drivers/firmware/memmap.c b/drivers/firmware/memmap.c
+index 05aa2d4..d5ea8a6 100644
+--- a/drivers/firmware/memmap.c
++++ b/drivers/firmware/memmap.c
+@@ -31,8 +31,12 @@
+  * information is necessary as for the resource tree.
+  */
+ struct firmware_map_entry {
+-	resource_size_t		start;	/* start of the memory range */
+-	resource_size_t		end;	/* end of the memory range (incl.) */
++	/*
++	 * start and end must be u64 rather than resource_size_t, because e820
++	 * resources can lie at addresses above 4G.
++	 */
++	u64			start;	/* start of the memory range */
++	u64			end;	/* end of the memory range (incl.) */
+ 	const char		*type;	/* type of the memory range */
+ 	struct list_head	list;	/* entry for the linked list */
+ 	struct kobject		kobj;   /* kobject for each entry */
+@@ -101,7 +105,7 @@ static LIST_HEAD(map_entries);
+  * Common implementation of firmware_map_add() and firmware_map_add_early()
+  * which expects a pre-allocated struct firmware_map_entry.
+  **/
+-static int firmware_map_add_entry(resource_size_t start, resource_size_t end,
++static int firmware_map_add_entry(u64 start, u64 end,
+ 				  const char *type,
+ 				  struct firmware_map_entry *entry)
+ {
+@@ -132,8 +136,7 @@ static int firmware_map_add_entry(resource_size_t start, resource_size_t end,
+  *
+  * Returns 0 on success, or -ENOMEM if no memory could be allocated.
+  **/
+-int firmware_map_add(resource_size_t start, resource_size_t end,
+-		     const char *type)
++int firmware_map_add(u64 start, u64 end, const char *type)
+ {
+ 	struct firmware_map_entry *entry;
+ 
+@@ -157,8 +160,7 @@ int firmware_map_add(resource_size_t start, resource_size_t end,
+  *
+  * Returns 0 on success, or -ENOMEM if no memory could be allocated.
+  **/
+-int __init firmware_map_add_early(resource_size_t start, resource_size_t end,
+-				  const char *type)
++int __init firmware_map_add_early(u64 start, u64 end, const char *type)
+ {
+ 	struct firmware_map_entry *entry;
+ 
+diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
+index 98560e1..e3cb402 100644
+--- a/drivers/gpu/drm/i915/i915_drv.c
++++ b/drivers/gpu/drm/i915/i915_drv.c
+@@ -67,8 +67,6 @@ static int i915_suspend(struct drm_device *dev, pm_message_t state)
+ 
+ 	pci_save_state(dev->pdev);
+ 
+-	i915_save_state(dev);
+-
+ 	/* If KMS is active, we do the leavevt stuff here */
+ 	if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+ 		if (i915_gem_idle(dev))
+@@ -77,6 +75,8 @@ static int i915_suspend(struct drm_device *dev, pm_message_t state)
+ 		drm_irq_uninstall(dev);
+ 	}
+ 
++	i915_save_state(dev);
++
+ 	intel_opregion_free(dev, 1);
+ 
+ 	if (state.event == PM_EVENT_SUSPEND) {
+diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
+index 925eb9e..6368f57 100644
+--- a/drivers/ide/ide-cd.c
++++ b/drivers/ide/ide-cd.c
+@@ -758,7 +758,7 @@ out_end:
+ 				rq->errors = -EIO;
+ 		}
+ 
+-		if (uptodate == 0)
++		if (uptodate == 0 && rq->bio)
+ 			ide_cd_error_cmd(drive, cmd);
+ 
+ 		/* make sure it's fully ended */
+diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
+index 20724ae..c4a0264 100644
+--- a/drivers/infiniband/hw/mlx4/qp.c
++++ b/drivers/infiniband/hw/mlx4/qp.c
+@@ -1585,12 +1585,16 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
+ 				break;
+ 
+ 			case IB_WR_LOCAL_INV:
++				ctrl->srcrb_flags |=
++					cpu_to_be32(MLX4_WQE_CTRL_STRONG_ORDER);
+ 				set_local_inv_seg(wqe, wr->ex.invalidate_rkey);
+ 				wqe  += sizeof (struct mlx4_wqe_local_inval_seg);
+ 				size += sizeof (struct mlx4_wqe_local_inval_seg) / 16;
+ 				break;
+ 
+ 			case IB_WR_FAST_REG_MR:
++				ctrl->srcrb_flags |=
++					cpu_to_be32(MLX4_WQE_CTRL_STRONG_ORDER);
+ 				set_fmr_seg(wqe, wr);
+ 				wqe  += sizeof (struct mlx4_wqe_fmr_seg);
+ 				size += sizeof (struct mlx4_wqe_fmr_seg) / 16;
+diff --git a/drivers/isdn/hisax/hfc_pci.c b/drivers/isdn/hisax/hfc_pci.c
+index f126566..3d337d9 100644
+--- a/drivers/isdn/hisax/hfc_pci.c
++++ b/drivers/isdn/hisax/hfc_pci.c
+@@ -82,8 +82,9 @@ release_io_hfcpci(struct IsdnCardState *cs)
+ 	Write_hfc(cs, HFCPCI_INT_M2, cs->hw.hfcpci.int_m2);
+ 	pci_write_config_word(cs->hw.hfcpci.dev, PCI_COMMAND, 0);	/* disable memory mapped ports + busmaster */
+ 	del_timer(&cs->hw.hfcpci.timer);
+-	kfree(cs->hw.hfcpci.share_start);
+-	cs->hw.hfcpci.share_start = NULL;
++	pci_free_consistent(cs->hw.hfcpci.dev, 0x8000,
++		cs->hw.hfcpci.fifos, cs->hw.hfcpci.dma);
++	cs->hw.hfcpci.fifos = NULL;
+ 	iounmap((void *)cs->hw.hfcpci.pci_io);
+ }
+ 
+@@ -1663,8 +1664,19 @@ setup_hfcpci(struct IsdnCard *card)
+ 					     dev_hfcpci);
+ 		i++;
+ 		if (tmp_hfcpci) {
++			dma_addr_t	dma_mask = DMA_BIT_MASK(32) & ~0x7fffUL;
+ 			if (pci_enable_device(tmp_hfcpci))
+ 				continue;
++			if (pci_set_dma_mask(tmp_hfcpci, dma_mask)) {
++				printk(KERN_WARNING
++					"HiSax hfc_pci: No suitable DMA available.\n");
++				continue;
++			}
++			if (pci_set_consistent_dma_mask(tmp_hfcpci, dma_mask)) {
++				printk(KERN_WARNING
++					"HiSax hfc_pci: No suitable consistent DMA available.\n");
++				continue;
++			}
+ 			pci_set_master(tmp_hfcpci);
+ 			if ((card->para[0]) && (card->para[0] != (tmp_hfcpci->resource[ 0].start & PCI_BASE_ADDRESS_IO_MASK)))
+ 				continue;
+@@ -1693,22 +1705,29 @@ setup_hfcpci(struct IsdnCard *card)
+ 		printk(KERN_WARNING "HFC-PCI: No IO-Mem for PCI card found\n");
+ 		return (0);
+ 	}
++
+ 	/* Allocate memory for FIFOS */
+-	/* Because the HFC-PCI needs a 32K physical alignment, we */
+-	/* need to allocate the double mem and align the address */
+-	if (!(cs->hw.hfcpci.share_start = kmalloc(65536, GFP_KERNEL))) {
+-		printk(KERN_WARNING "HFC-PCI: Error allocating memory for FIFO!\n");
++	cs->hw.hfcpci.fifos = pci_alloc_consistent(cs->hw.hfcpci.dev,
++					0x8000, &cs->hw.hfcpci.dma);
++	if (!cs->hw.hfcpci.fifos) {
++		printk(KERN_WARNING "HFC-PCI: Error allocating FIFO memory!\n");
++		return 0;
++	}
++	if (cs->hw.hfcpci.dma & 0x7fff) {
++		printk(KERN_WARNING
++		    "HFC-PCI: Error DMA memory not on 32K boundary (%lx)\n",
++		    (u_long)cs->hw.hfcpci.dma);
++		pci_free_consistent(cs->hw.hfcpci.dev, 0x8000,
++			cs->hw.hfcpci.fifos, cs->hw.hfcpci.dma);
+ 		return 0;
+ 	}
+-	cs->hw.hfcpci.fifos = (void *)
+-	    (((ulong) cs->hw.hfcpci.share_start) & ~0x7FFF) + 0x8000;
+-	pci_write_config_dword(cs->hw.hfcpci.dev, 0x80, (u_int) virt_to_bus(cs->hw.hfcpci.fifos));
++	pci_write_config_dword(cs->hw.hfcpci.dev, 0x80, (u32)cs->hw.hfcpci.dma);
+ 	cs->hw.hfcpci.pci_io = ioremap((ulong) cs->hw.hfcpci.pci_io, 256);
+ 	printk(KERN_INFO
+-	       "HFC-PCI: defined at mem %p fifo %p(%#x) IRQ %d HZ %d\n",
++	       "HFC-PCI: defined at mem %p fifo %p(%lx) IRQ %d HZ %d\n",
+ 	       cs->hw.hfcpci.pci_io,
+ 	       cs->hw.hfcpci.fifos,
+-	       (u_int) virt_to_bus(cs->hw.hfcpci.fifos),
++	       (u_long)cs->hw.hfcpci.dma,
+ 	       cs->irq, HZ);
+ 
+ 	spin_lock_irqsave(&cs->lock, flags);
+diff --git a/drivers/isdn/hisax/hisax.h b/drivers/isdn/hisax/hisax.h
+index f852704..0685c19 100644
+--- a/drivers/isdn/hisax/hisax.h
++++ b/drivers/isdn/hisax/hisax.h
+@@ -703,7 +703,7 @@ struct hfcPCI_hw {
+         int nt_timer;
+         struct pci_dev *dev;
+         unsigned char *pci_io; /* start of PCI IO memory */
+-        void *share_start; /* shared memory for Fifos start */
++	dma_addr_t dma; /* dma handle for Fifos */
+         void *fifos; /* FIFO memory */ 
+         int last_bfifo_cnt[2]; /* marker saving last b-fifo frame count */
+ 	struct timer_list timer;
+diff --git a/drivers/md/dm-exception-store.c b/drivers/md/dm-exception-store.c
+index a2e26c2..14ce11e 100644
+--- a/drivers/md/dm-exception-store.c
++++ b/drivers/md/dm-exception-store.c
+@@ -195,7 +195,7 @@ int dm_exception_store_create(struct dm_target *ti, int argc, char **argv,
+ 			      struct dm_exception_store **store)
+ {
+ 	int r = 0;
+-	struct dm_exception_store_type *type;
++	struct dm_exception_store_type *type = NULL;
+ 	struct dm_exception_store *tmp_store;
+ 	char persistent;
+ 
+@@ -211,12 +211,15 @@ int dm_exception_store_create(struct dm_target *ti, int argc, char **argv,
+ 	}
+ 
+ 	persistent = toupper(*argv[1]);
+-	if (persistent != 'P' && persistent != 'N') {
++	if (persistent == 'P')
++		type = get_type("P");
++	else if (persistent == 'N')
++		type = get_type("N");
++	else {
+ 		ti->error = "Persistent flag is not P or N";
+ 		return -EINVAL;
+ 	}
+ 
+-	type = get_type(argv[1]);
+ 	if (!type) {
+ 		ti->error = "Exception store type not recognised";
+ 		r = -EINVAL;
+diff --git a/drivers/md/dm-exception-store.h b/drivers/md/dm-exception-store.h
+index 0a2e6e7..96a796b 100644
+--- a/drivers/md/dm-exception-store.h
++++ b/drivers/md/dm-exception-store.h
+@@ -156,7 +156,7 @@ static inline void dm_consecutive_chunk_count_inc(struct dm_snap_exception *e)
+  */
+ static inline sector_t get_dev_size(struct block_device *bdev)
+ {
+-	return bdev->bd_inode->i_size >> SECTOR_SHIFT;
++	return i_size_read(bdev->bd_inode) >> SECTOR_SHIFT;
+ }
+ 
+ static inline chunk_t sector_to_chunk(struct dm_exception_store *store,
+diff --git a/drivers/md/dm-log.c b/drivers/md/dm-log.c
+index be233bc..5eaa954 100644
+--- a/drivers/md/dm-log.c
++++ b/drivers/md/dm-log.c
+@@ -415,7 +415,7 @@ static int create_log_context(struct dm_dirty_log *log, struct dm_target *ti,
+ 		buf_size = dm_round_up((LOG_OFFSET << SECTOR_SHIFT) +
+ 				       bitset_size, ti->limits.hardsect_size);
+ 
+-		if (buf_size > dev->bdev->bd_inode->i_size) {
++		if (buf_size > i_size_read(dev->bdev->bd_inode)) {
+ 			DMWARN("log device %s too small: need %llu bytes",
+ 				dev->name, (unsigned long long)buf_size);
+ 			kfree(lc);
+diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
+index 6a386ab..3a8f827 100644
+--- a/drivers/md/dm-mpath.c
++++ b/drivers/md/dm-mpath.c
+@@ -553,6 +553,12 @@ static int parse_path_selector(struct arg_set *as, struct priority_group *pg,
+ 		return -EINVAL;
+ 	}
+ 
++	if (ps_argc > as->argc) {
++		dm_put_path_selector(pst);
++		ti->error = "not enough arguments for path selector";
++		return -EINVAL;
++	}
++
+ 	r = pst->create(&pg->ps, ps_argc, as->argv);
+ 	if (r) {
+ 		dm_put_path_selector(pst);
+@@ -699,6 +705,11 @@ static int parse_hw_handler(struct arg_set *as, struct multipath *m)
+ 	if (!hw_argc)
+ 		return 0;
+ 
++	if (hw_argc > as->argc) {
++		ti->error = "not enough arguments for hardware handler";
++		return -EINVAL;
++	}
++
+ 	m->hw_handler_name = kstrdup(shift(as), GFP_KERNEL);
+ 	request_module("scsi_dh_%s", m->hw_handler_name);
+ 	if (scsi_dh_handler_exist(m->hw_handler_name) == 0) {
+@@ -836,6 +847,7 @@ static void multipath_dtr(struct dm_target *ti)
+ 
+ 	flush_workqueue(kmpath_handlerd);
+ 	flush_workqueue(kmultipathd);
++	flush_scheduled_work();
+ 	free_multipath(m);
+ }
+ 
+diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
+index 429b50b..c5c4a0d 100644
+--- a/drivers/md/dm-table.c
++++ b/drivers/md/dm-table.c
+@@ -387,7 +387,8 @@ static void close_dev(struct dm_dev_internal *d, struct mapped_device *md)
+ static int check_device_area(struct dm_dev_internal *dd, sector_t start,
+ 			     sector_t len)
+ {
+-	sector_t dev_size = dd->dm_dev.bdev->bd_inode->i_size >> SECTOR_SHIFT;
++	sector_t dev_size = i_size_read(dd->dm_dev.bdev->bd_inode) >>
++			    SECTOR_SHIFT;
+ 
+ 	if (!dev_size)
+ 		return 1;
+diff --git a/drivers/md/dm.c b/drivers/md/dm.c
+index 424f7b0..add49c1 100644
+--- a/drivers/md/dm.c
++++ b/drivers/md/dm.c
+@@ -1780,6 +1780,10 @@ struct mapped_device *dm_get_from_kobject(struct kobject *kobj)
+ 	if (&md->kobj != kobj)
+ 		return NULL;
+ 
++	if (test_bit(DMF_FREEING, &md->flags) ||
++	    test_bit(DMF_DELETING, &md->flags))
++		return NULL;
++
+ 	dm_get(md);
+ 	return md;
+ }
+diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
+index bb37fb1..c0434e0 100644
+--- a/drivers/md/raid5.c
++++ b/drivers/md/raid5.c
+@@ -3696,6 +3696,7 @@ static int make_request(struct request_queue *q, struct bio * bi)
+ 				spin_unlock_irq(&conf->device_lock);
+ 				if (must_retry) {
+ 					release_stripe(sh);
++					schedule();
+ 					goto retry;
+ 				}
+ 			}
+diff --git a/drivers/media/dvb/frontends/lgdt3305.c b/drivers/media/dvb/frontends/lgdt3305.c
+index d92d055..fde8c59 100644
+--- a/drivers/media/dvb/frontends/lgdt3305.c
++++ b/drivers/media/dvb/frontends/lgdt3305.c
+@@ -19,6 +19,7 @@
+  *
+  */
+ 
++#include <asm/div64.h>
+ #include <linux/dvb/frontend.h>
+ #include "dvb_math.h"
+ #include "lgdt3305.h"
+@@ -496,27 +497,15 @@ static int lgdt3305_set_if(struct lgdt3305_state *state,
+ 
+ 	nco = if_freq_khz / 10;
+ 
+-#define LGDT3305_64BIT_DIVISION_ENABLED 0
+-	/* FIXME: 64bit division disabled to avoid linking error:
+-	 * WARNING: "__udivdi3" [lgdt3305.ko] undefined!
+-	 */
+ 	switch (param->u.vsb.modulation) {
+ 	case VSB_8:
+-#if LGDT3305_64BIT_DIVISION_ENABLED
+ 		nco <<= 24;
+-		nco /= 625;
+-#else
+-		nco *= ((1 << 24) / 625);
+-#endif
++		do_div(nco, 625);
+ 		break;
+ 	case QAM_64:
+ 	case QAM_256:
+-#if LGDT3305_64BIT_DIVISION_ENABLED
+ 		nco <<= 28;
+-		nco /= 625;
+-#else
+-		nco *= ((1 << 28) / 625);
+-#endif
++		do_div(nco, 625);
+ 		break;
+ 	default:
+ 		return -EINVAL;
+diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
+index 3f1a035..448c306 100644
+--- a/drivers/media/video/Makefile
++++ b/drivers/media/video/Makefile
+@@ -12,6 +12,8 @@ omap2cam-objs	:=	omap24xxcam.o omap24xxcam-dma.o
+ 
+ videodev-objs	:=	v4l2-dev.o v4l2-ioctl.o v4l2-device.o
+ 
++# V4L2 core modules
++
+ obj-$(CONFIG_VIDEO_DEV) += videodev.o v4l2-int-device.o
+ ifeq ($(CONFIG_COMPAT),y)
+   obj-$(CONFIG_VIDEO_DEV) += v4l2-compat-ioctl32.o
+@@ -23,21 +25,15 @@ ifeq ($(CONFIG_VIDEO_V4L1_COMPAT),y)
+   obj-$(CONFIG_VIDEO_DEV) += v4l1-compat.o
+ endif
+ 
+-obj-$(CONFIG_VIDEO_TUNER) += tuner.o
++# All i2c modules must come first:
+ 
+-obj-$(CONFIG_VIDEO_BT848) += bt8xx/
+-obj-$(CONFIG_VIDEO_IR_I2C)  += ir-kbd-i2c.o
++obj-$(CONFIG_VIDEO_TUNER) += tuner.o
+ obj-$(CONFIG_VIDEO_TVAUDIO) += tvaudio.o
+ obj-$(CONFIG_VIDEO_TDA7432) += tda7432.o
+ obj-$(CONFIG_VIDEO_TDA9875) += tda9875.o
+-
+ obj-$(CONFIG_VIDEO_SAA6588) += saa6588.o
+ obj-$(CONFIG_VIDEO_SAA5246A) += saa5246a.o
+ obj-$(CONFIG_VIDEO_SAA5249) += saa5249.o
+-obj-$(CONFIG_VIDEO_CQCAM) += c-qcam.o
+-obj-$(CONFIG_VIDEO_BWQCAM) += bw-qcam.o
+-obj-$(CONFIG_VIDEO_W9966) += w9966.o
+-
+ obj-$(CONFIG_VIDEO_TDA9840) += tda9840.o
+ obj-$(CONFIG_VIDEO_TEA6415C) += tea6415c.o
+ obj-$(CONFIG_VIDEO_TEA6420) += tea6420.o
+@@ -54,11 +50,40 @@ obj-$(CONFIG_VIDEO_BT819) += bt819.o
+ obj-$(CONFIG_VIDEO_BT856) += bt856.o
+ obj-$(CONFIG_VIDEO_BT866) += bt866.o
+ obj-$(CONFIG_VIDEO_KS0127) += ks0127.o
++obj-$(CONFIG_VIDEO_VINO) += indycam.o
++obj-$(CONFIG_VIDEO_TVP5150) += tvp5150.o
++obj-$(CONFIG_VIDEO_TVP514X) += tvp514x.o
++obj-$(CONFIG_VIDEO_MSP3400) += msp3400.o
++obj-$(CONFIG_VIDEO_CS5345) += cs5345.o
++obj-$(CONFIG_VIDEO_CS53L32A) += cs53l32a.o
++obj-$(CONFIG_VIDEO_M52790) += m52790.o
++obj-$(CONFIG_VIDEO_TLV320AIC23B) += tlv320aic23b.o
++obj-$(CONFIG_VIDEO_WM8775) += wm8775.o
++obj-$(CONFIG_VIDEO_WM8739) += wm8739.o
++obj-$(CONFIG_VIDEO_VP27SMPX) += vp27smpx.o
++obj-$(CONFIG_VIDEO_CX25840) += cx25840/
++obj-$(CONFIG_VIDEO_UPD64031A) += upd64031a.o
++obj-$(CONFIG_VIDEO_UPD64083) += upd64083.o
++obj-$(CONFIG_VIDEO_OV7670) 	+= ov7670.o
++obj-$(CONFIG_VIDEO_TCM825X) += tcm825x.o
++obj-$(CONFIG_VIDEO_TVEEPROM) += tveeprom.o
+ 
+-obj-$(CONFIG_VIDEO_ZORAN) += zoran/
++obj-$(CONFIG_SOC_CAMERA_MT9M001)	+= mt9m001.o
++obj-$(CONFIG_SOC_CAMERA_MT9M111)	+= mt9m111.o
++obj-$(CONFIG_SOC_CAMERA_MT9T031)	+= mt9t031.o
++obj-$(CONFIG_SOC_CAMERA_MT9V022)	+= mt9v022.o
++obj-$(CONFIG_SOC_CAMERA_OV772X)		+= ov772x.o
++obj-$(CONFIG_SOC_CAMERA_TW9910)		+= tw9910.o
+ 
++# And now the v4l2 drivers:
++
++obj-$(CONFIG_VIDEO_BT848) += bt8xx/
++obj-$(CONFIG_VIDEO_ZORAN) += zoran/
++obj-$(CONFIG_VIDEO_CQCAM) += c-qcam.o
++obj-$(CONFIG_VIDEO_BWQCAM) += bw-qcam.o
++obj-$(CONFIG_VIDEO_W9966) += w9966.o
+ obj-$(CONFIG_VIDEO_PMS) += pms.o
+-obj-$(CONFIG_VIDEO_VINO) += vino.o indycam.o
++obj-$(CONFIG_VIDEO_VINO) += vino.o
+ obj-$(CONFIG_VIDEO_STRADIS) += stradis.o
+ obj-$(CONFIG_VIDEO_CPIA) += cpia.o
+ obj-$(CONFIG_VIDEO_CPIA_PP) += cpia_pp.o
+@@ -69,17 +94,7 @@ obj-$(CONFIG_VIDEO_CX88) += cx88/
+ obj-$(CONFIG_VIDEO_EM28XX) += em28xx/
+ obj-$(CONFIG_VIDEO_CX231XX) += cx231xx/
+ obj-$(CONFIG_VIDEO_USBVISION) += usbvision/
+-obj-$(CONFIG_VIDEO_TVP5150) += tvp5150.o
+-obj-$(CONFIG_VIDEO_TVP514X) += tvp514x.o
+ obj-$(CONFIG_VIDEO_PVRUSB2) += pvrusb2/
+-obj-$(CONFIG_VIDEO_MSP3400) += msp3400.o
+-obj-$(CONFIG_VIDEO_CS5345) += cs5345.o
+-obj-$(CONFIG_VIDEO_CS53L32A) += cs53l32a.o
+-obj-$(CONFIG_VIDEO_M52790) += m52790.o
+-obj-$(CONFIG_VIDEO_TLV320AIC23B) += tlv320aic23b.o
+-obj-$(CONFIG_VIDEO_WM8775) += wm8775.o
+-obj-$(CONFIG_VIDEO_WM8739) += wm8739.o
+-obj-$(CONFIG_VIDEO_VP27SMPX) += vp27smpx.o
+ obj-$(CONFIG_VIDEO_OVCAMCHIP) += ovcamchip/
+ obj-$(CONFIG_VIDEO_CPIA2) += cpia2/
+ obj-$(CONFIG_VIDEO_MXB) += mxb.o
+@@ -92,19 +107,12 @@ obj-$(CONFIG_VIDEOBUF_DMA_CONTIG) += videobuf-dma-contig.o
+ obj-$(CONFIG_VIDEOBUF_VMALLOC) += videobuf-vmalloc.o
+ obj-$(CONFIG_VIDEOBUF_DVB) += videobuf-dvb.o
+ obj-$(CONFIG_VIDEO_BTCX)  += btcx-risc.o
+-obj-$(CONFIG_VIDEO_TVEEPROM) += tveeprom.o
+ 
+ obj-$(CONFIG_VIDEO_M32R_AR_M64278) += arv.o
+ 
+-obj-$(CONFIG_VIDEO_CX25840) += cx25840/
+-obj-$(CONFIG_VIDEO_UPD64031A) += upd64031a.o
+-obj-$(CONFIG_VIDEO_UPD64083) += upd64083.o
+ obj-$(CONFIG_VIDEO_CX2341X) += cx2341x.o
+ 
+ obj-$(CONFIG_VIDEO_CAFE_CCIC) += cafe_ccic.o
+-obj-$(CONFIG_VIDEO_OV7670) 	+= ov7670.o
+-
+-obj-$(CONFIG_VIDEO_TCM825X) += tcm825x.o
+ 
+ obj-$(CONFIG_USB_DABUSB)        += dabusb.o
+ obj-$(CONFIG_USB_OV511)         += ov511.o
+@@ -134,24 +142,21 @@ obj-$(CONFIG_VIDEO_CX18) += cx18/
+ obj-$(CONFIG_VIDEO_VIVI) += vivi.o
+ obj-$(CONFIG_VIDEO_CX23885) += cx23885/
+ 
++obj-$(CONFIG_VIDEO_OMAP2)		+= omap2cam.o
++obj-$(CONFIG_SOC_CAMERA)		+= soc_camera.o
++obj-$(CONFIG_SOC_CAMERA_PLATFORM)	+= soc_camera_platform.o
++# soc-camera host drivers have to be linked after camera drivers
+ obj-$(CONFIG_VIDEO_MX1)			+= mx1_camera.o
+ obj-$(CONFIG_VIDEO_MX3)			+= mx3_camera.o
+ obj-$(CONFIG_VIDEO_PXA27x)		+= pxa_camera.o
+ obj-$(CONFIG_VIDEO_SH_MOBILE_CEU)	+= sh_mobile_ceu_camera.o
+-obj-$(CONFIG_VIDEO_OMAP2)		+= omap2cam.o
+-obj-$(CONFIG_SOC_CAMERA)		+= soc_camera.o
+-obj-$(CONFIG_SOC_CAMERA_MT9M001)	+= mt9m001.o
+-obj-$(CONFIG_SOC_CAMERA_MT9M111)	+= mt9m111.o
+-obj-$(CONFIG_SOC_CAMERA_MT9T031)	+= mt9t031.o
+-obj-$(CONFIG_SOC_CAMERA_MT9V022)	+= mt9v022.o
+-obj-$(CONFIG_SOC_CAMERA_OV772X)		+= ov772x.o
+-obj-$(CONFIG_SOC_CAMERA_PLATFORM)	+= soc_camera_platform.o
+-obj-$(CONFIG_SOC_CAMERA_TW9910)		+= tw9910.o
+ 
+ obj-$(CONFIG_VIDEO_AU0828) += au0828/
+ 
+ obj-$(CONFIG_USB_VIDEO_CLASS)	+= uvc/
+ 
++obj-$(CONFIG_VIDEO_IR_I2C)  += ir-kbd-i2c.o
++
+ EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
+ EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
+ EXTRA_CFLAGS += -Idrivers/media/common/tuners
+diff --git a/drivers/media/video/cx18/cx18-controls.c b/drivers/media/video/cx18/cx18-controls.c
+index 82fc2f9..3783b49 100644
+--- a/drivers/media/video/cx18/cx18-controls.c
++++ b/drivers/media/video/cx18/cx18-controls.c
+@@ -61,6 +61,8 @@ int cx18_queryctrl(struct file *file, void *fh, struct v4l2_queryctrl *qctrl)
+ 
+ 	switch (qctrl->id) {
+ 	/* Standard V4L2 controls */
++	case V4L2_CID_USER_CLASS:
++		return v4l2_ctrl_query_fill(qctrl, 0, 0, 0, 0);
+ 	case V4L2_CID_BRIGHTNESS:
+ 	case V4L2_CID_HUE:
+ 	case V4L2_CID_SATURATION:
+diff --git a/drivers/media/video/cx2341x.c b/drivers/media/video/cx2341x.c
+index 8ded529..4c8e958 100644
+--- a/drivers/media/video/cx2341x.c
++++ b/drivers/media/video/cx2341x.c
+@@ -500,6 +500,8 @@ int cx2341x_ctrl_query(const struct cx2341x_mpeg_params *params,
+ 	int err;
+ 
+ 	switch (qctrl->id) {
++	case V4L2_CID_MPEG_CLASS:
++		return v4l2_ctrl_query_fill(qctrl, 0, 0, 0, 0);
+ 	case V4L2_CID_MPEG_STREAM_TYPE:
+ 		return v4l2_ctrl_query_fill(qctrl,
+ 				V4L2_MPEG_STREAM_TYPE_MPEG2_PS,
+diff --git a/drivers/media/video/ivtv/ivtv-controls.c b/drivers/media/video/ivtv/ivtv-controls.c
+index 84995bc..a3b77ed 100644
+--- a/drivers/media/video/ivtv/ivtv-controls.c
++++ b/drivers/media/video/ivtv/ivtv-controls.c
+@@ -60,6 +60,8 @@ int ivtv_queryctrl(struct file *file, void *fh, struct v4l2_queryctrl *qctrl)
+ 
+ 	switch (qctrl->id) {
+ 	/* Standard V4L2 controls */
++	case V4L2_CID_USER_CLASS:
++		return v4l2_ctrl_query_fill(qctrl, 0, 0, 0, 0);
+ 	case V4L2_CID_BRIGHTNESS:
+ 	case V4L2_CID_HUE:
+ 	case V4L2_CID_SATURATION:
+diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+index add3395..c5563cf 100644
+--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
++++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+@@ -1978,6 +1978,34 @@ static unsigned int pvr2_copy_i2c_addr_list(
+ }
+ 
+ 
++static void pvr2_hdw_cx25840_vbi_hack(struct pvr2_hdw *hdw)
++{
++	/*
++	  Mike Isely <isely@pobox.com> 19-Nov-2006 - This bit of nuttiness
++	  for cx25840 causes that module to correctly set up its video
++	  scaling.  This is really a problem in the cx25840 module itself,
++	  but we work around it here.  The problem has not been seen in
++	  ivtv because there VBI is supported and set up.  We don't do VBI
++	  here (at least not yet) and thus we never attempted to even set
++	  it up.
++	*/
++	struct v4l2_format fmt;
++	if (hdw->decoder_client_id != PVR2_CLIENT_ID_CX25840) {
++		/* We're not using a cx25840 so don't enable the hack */
++		return;
++	}
++
++	pvr2_trace(PVR2_TRACE_INIT,
++		   "Module ID %u:"
++		   " Executing cx25840 VBI hack",
++		   hdw->decoder_client_id);
++	memset(&fmt, 0, sizeof(fmt));
++	fmt.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
++	v4l2_device_call_all(&hdw->v4l2_dev, hdw->decoder_client_id,
++			     video, s_fmt, &fmt);
++}
++
++
+ static int pvr2_hdw_load_subdev(struct pvr2_hdw *hdw,
+ 				const struct pvr2_device_client_desc *cd)
+ {
+@@ -2069,30 +2097,6 @@ static int pvr2_hdw_load_subdev(struct pvr2_hdw *hdw,
+ 	/* client-specific setup... */
+ 	switch (mid) {
+ 	case PVR2_CLIENT_ID_CX25840:
+-		hdw->decoder_client_id = mid;
+-		{
+-			/*
+-			  Mike Isely <isely@pobox.com> 19-Nov-2006 - This
+-			  bit of nuttiness for cx25840 causes that module
+-			  to correctly set up its video scaling.  This is
+-			  really a problem in the cx25840 module itself,
+-			  but we work around it here.  The problem has not
+-			  been seen in ivtv because there VBI is supported
+-			  and set up.  We don't do VBI here (at least not
+-			  yet) and thus we never attempted to even set it
+-			  up.
+-			*/
+-			struct v4l2_format fmt;
+-			pvr2_trace(PVR2_TRACE_INIT,
+-				   "Module ID %u:"
+-				   " Executing cx25840 VBI hack",
+-				   mid);
+-			memset(&fmt, 0, sizeof(fmt));
+-			fmt.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
+-			v4l2_device_call_all(&hdw->v4l2_dev, mid,
+-					     video, s_fmt, &fmt);
+-		}
+-		break;
+ 	case PVR2_CLIENT_ID_SAA7115:
+ 		hdw->decoder_client_id = mid;
+ 		break;
+@@ -2193,6 +2197,8 @@ static void pvr2_hdw_setup_low(struct pvr2_hdw *hdw)
+ 		cptr->info->set_value(cptr,~0,cptr->info->default_value);
+ 	}
+ 
++	pvr2_hdw_cx25840_vbi_hack(hdw);
++
+ 	/* Set up special default values for the television and radio
+ 	   frequencies here.  It's not really important what these defaults
+ 	   are, but I set them to something usable in the Chicago area just
+@@ -2944,6 +2950,7 @@ static void pvr2_subdev_update(struct pvr2_hdw *hdw)
+ 			vs = hdw->std_mask_cur;
+ 			v4l2_device_call_all(&hdw->v4l2_dev, 0,
+ 					     core, s_std, vs);
++			pvr2_hdw_cx25840_vbi_hack(hdw);
+ 		}
+ 		hdw->tuner_signal_stale = !0;
+ 		hdw->cropcap_stale = !0;
+@@ -4066,6 +4073,7 @@ int pvr2_hdw_cmd_decoder_reset(struct pvr2_hdw *hdw)
+ 	if (hdw->decoder_client_id) {
+ 		v4l2_device_call_all(&hdw->v4l2_dev, hdw->decoder_client_id,
+ 				     core, reset, 0);
++		pvr2_hdw_cx25840_vbi_hack(hdw);
+ 		return 0;
+ 	}
+ 	pvr2_trace(PVR2_TRACE_INIT,
+diff --git a/drivers/media/video/saa7134/Makefile b/drivers/media/video/saa7134/Makefile
+index 3dbaa19..604158a 100644
+--- a/drivers/media/video/saa7134/Makefile
++++ b/drivers/media/video/saa7134/Makefile
+@@ -3,8 +3,7 @@ saa7134-objs :=	saa7134-cards.o saa7134-core.o saa7134-i2c.o	\
+ 		saa7134-ts.o saa7134-tvaudio.o saa7134-vbi.o    \
+ 		saa7134-video.o saa7134-input.o
+ 
+-obj-$(CONFIG_VIDEO_SAA7134) +=  saa7134.o saa7134-empress.o \
+-				saa6752hs.o
++obj-$(CONFIG_VIDEO_SAA7134) +=  saa6752hs.o saa7134.o saa7134-empress.o
+ 
+ obj-$(CONFIG_VIDEO_SAA7134_ALSA) += saa7134-alsa.o
+ 
+diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c
+index d287315..cd95093 100644
+--- a/drivers/net/bonding/bond_sysfs.c
++++ b/drivers/net/bonding/bond_sysfs.c
+@@ -1538,6 +1538,7 @@ int bond_create_sysfs(void)
+ 			printk(KERN_ERR
+ 			       "network device named %s already exists in sysfs",
+ 			       class_attr_bonding_masters.attr.name);
++		ret = 0;
+ 	}
+ 
+ 	return ret;
+diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
+index ca82f19..42055a5 100644
+--- a/drivers/net/e1000e/netdev.c
++++ b/drivers/net/e1000e/netdev.c
+@@ -1996,7 +1996,7 @@ static int e1000_clean(struct napi_struct *napi, int budget)
+ 	struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, napi);
+ 	struct e1000_hw *hw = &adapter->hw;
+ 	struct net_device *poll_dev = adapter->netdev;
+-	int tx_cleaned = 0, work_done = 0;
++	int tx_cleaned = 1, work_done = 0;
+ 
+ 	adapter = netdev_priv(poll_dev);
+ 
+diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
+index 6bb5af3..305e0d1 100644
+--- a/drivers/net/mv643xx_eth.c
++++ b/drivers/net/mv643xx_eth.c
+@@ -1751,12 +1751,12 @@ static void mv643xx_eth_program_unicast_filter(struct net_device *dev)
+ 
+ 	uc_addr_set(mp, dev->dev_addr);
+ 
+-	port_config = rdlp(mp, PORT_CONFIG);
++	port_config = rdlp(mp, PORT_CONFIG) & ~UNICAST_PROMISCUOUS_MODE;
++
+ 	nibbles = uc_addr_filter_mask(dev);
+ 	if (!nibbles) {
+ 		port_config |= UNICAST_PROMISCUOUS_MODE;
+-		wrlp(mp, PORT_CONFIG, port_config);
+-		return;
++		nibbles = 0xffff;
+ 	}
+ 
+ 	for (i = 0; i < 16; i += 4) {
+@@ -1777,7 +1777,6 @@ static void mv643xx_eth_program_unicast_filter(struct net_device *dev)
+ 		wrl(mp, off, v);
+ 	}
+ 
+-	port_config &= ~UNICAST_PROMISCUOUS_MODE;
+ 	wrlp(mp, PORT_CONFIG, port_config);
+ }
+ 
+diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
+index a2ff9cb..6714a9d 100644
+--- a/drivers/net/sky2.c
++++ b/drivers/net/sky2.c
+@@ -4365,6 +4365,22 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
+ 		goto err_out;
+ 	}
+ 
++	/* Get configuration information
++	 * Note: only regular PCI config access once to test for HW issues
++	 *       other PCI access through shared memory for speed and to
++	 *	 avoid MMCONFIG problems.
++	 */
++	err = pci_read_config_dword(pdev, PCI_DEV_REG2, &reg);
++	if (err) {
++		dev_err(&pdev->dev, "PCI read config failed\n");
++		goto err_out;
++	}
++
++	if (~reg == 0) {
++		dev_err(&pdev->dev, "PCI configuration read error\n");
++		goto err_out;
++	}
++
+ 	err = pci_request_regions(pdev, DRV_NAME);
+ 	if (err) {
+ 		dev_err(&pdev->dev, "cannot obtain PCI resources\n");
+@@ -4390,21 +4406,6 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
+ 		}
+ 	}
+ 
+-	/* Get configuration information
+-	 * Note: only regular PCI config access once to test for HW issues
+-	 *       other PCI access through shared memory for speed and to
+-	 *	 avoid MMCONFIG problems.
+-	 */
+-	err = pci_read_config_dword(pdev, PCI_DEV_REG2, &reg);
+-	if (err) {
+-		dev_err(&pdev->dev, "PCI read config failed\n");
+-		goto err_out_free_regions;
+-	}
+-
+-	/* size of available VPD, only impact sysfs */
+-	err = pci_vpd_truncate(pdev, 1ul << (((reg & PCI_VPD_ROM_SZ) >> 14) + 8));
+-	if (err)
+-		dev_warn(&pdev->dev, "Can't set VPD size\n");
+ 
+ #ifdef __BIG_ENDIAN
+ 	/* The sk98lin vendor driver uses hardware byte swapping but
+diff --git a/drivers/net/tun.c b/drivers/net/tun.c
+index 735bf41..1be6a6b 100644
+--- a/drivers/net/tun.c
++++ b/drivers/net/tun.c
+@@ -1275,21 +1275,22 @@ static int tun_chr_open(struct inode *inode, struct file * file)
+ static int tun_chr_close(struct inode *inode, struct file *file)
+ {
+ 	struct tun_file *tfile = file->private_data;
+-	struct tun_struct *tun = __tun_get(tfile);
++	struct tun_struct *tun;
+ 
+ 
++	rtnl_lock();
++	tun = __tun_get(tfile);
+ 	if (tun) {
+ 		DBG(KERN_INFO "%s: tun_chr_close\n", tun->dev->name);
+ 
+-		rtnl_lock();
+ 		__tun_detach(tun);
+ 
+ 		/* If desireable, unregister the netdevice. */
+ 		if (!(tun->flags & TUN_PERSIST))
+ 			unregister_netdevice(tun->dev);
+ 
+-		rtnl_unlock();
+ 	}
++	rtnl_unlock();
+ 
+ 	tun = tfile->tun;
+ 	if (tun)
+diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c
+index 2138535..73acbd2 100644
+--- a/drivers/net/usb/pegasus.c
++++ b/drivers/net/usb/pegasus.c
+@@ -297,7 +297,7 @@ static int update_eth_regs_async(pegasus_t * pegasus)
+ 
+ 	pegasus->dr.bRequestType = PEGASUS_REQT_WRITE;
+ 	pegasus->dr.bRequest = PEGASUS_REQ_SET_REGS;
+-	pegasus->dr.wValue = 0;
++	pegasus->dr.wValue = cpu_to_le16(0);
+ 	pegasus->dr.wIndex = cpu_to_le16(EthCtrl0);
+ 	pegasus->dr.wLength = cpu_to_le16(3);
+ 	pegasus->ctrl_urb->transfer_buffer_length = 3;
+@@ -446,11 +446,12 @@ static int write_eprom_word(pegasus_t * pegasus, __u8 index, __u16 data)
+ 	int i;
+ 	__u8 tmp, d[4] = { 0x3f, 0, 0, EPROM_WRITE };
+ 	int ret;
++	__le16 le_data = cpu_to_le16(data);
+ 
+ 	set_registers(pegasus, EpromOffset, 4, d);
+ 	enable_eprom_write(pegasus);
+ 	set_register(pegasus, EpromOffset, index);
+-	set_registers(pegasus, EpromData, 2, &data);
++	set_registers(pegasus, EpromData, 2, &le_data);
+ 	set_register(pegasus, EpromCtrl, EPROM_WRITE);
+ 
+ 	for (i = 0; i < REG_TIMEOUT; i++) {
+@@ -923,29 +924,32 @@ static struct net_device_stats *pegasus_netdev_stats(struct net_device *dev)
+ 
+ static inline void disable_net_traffic(pegasus_t * pegasus)
+ {
+-	int tmp = 0;
++	__le16 tmp = cpu_to_le16(0);
+ 
+-	set_registers(pegasus, EthCtrl0, 2, &tmp);
++	set_registers(pegasus, EthCtrl0, sizeof(tmp), &tmp);
+ }
+ 
+ static inline void get_interrupt_interval(pegasus_t * pegasus)
+ {
+-	__u8 data[2];
++	u16 data;
++	u8 interval;
+ 
+-	read_eprom_word(pegasus, 4, (__u16 *) data);
++	read_eprom_word(pegasus, 4, &data);
++	interval = data >> 8;
+ 	if (pegasus->usb->speed != USB_SPEED_HIGH) {
+-		if (data[1] < 0x80) {
++		if (interval < 0x80) {
+ 			if (netif_msg_timer(pegasus))
+ 				dev_info(&pegasus->intf->dev, "intr interval "
+ 					"changed from %ums to %ums\n",
+-					data[1], 0x80);
+-			data[1] = 0x80;
++					interval, 0x80);
++			interval = 0x80;
++			data = (data & 0x00FF) | ((u16)interval << 8);
+ #ifdef PEGASUS_WRITE_EEPROM
+-			write_eprom_word(pegasus, 4, *(__u16 *) data);
++			write_eprom_word(pegasus, 4, data);
+ #endif
+ 		}
+ 	}
+-	pegasus->intr_interval = data[1];
++	pegasus->intr_interval = interval;
+ }
+ 
+ static void set_carrier(struct net_device *net)
+@@ -1299,7 +1303,8 @@ static int pegasus_blacklisted(struct usb_device *udev)
+ 	/* Special quirk to keep the driver from handling the Belkin Bluetooth
+ 	 * dongle which happens to have the same ID.
+ 	 */
+-	if ((udd->idVendor == VENDOR_BELKIN && udd->idProduct == 0x0121) &&
++	if ((udd->idVendor == cpu_to_le16(VENDOR_BELKIN)) &&
++	    (udd->idProduct == cpu_to_le16(0x0121)) &&
+ 	    (udd->bDeviceClass == USB_CLASS_WIRELESS_CONTROLLER) &&
+ 	    (udd->bDeviceProtocol == 1))
+ 		return 1;
+diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
+index 754a4b1..b2816ad 100644
+--- a/drivers/net/via-velocity.c
++++ b/drivers/net/via-velocity.c
+@@ -1845,7 +1845,7 @@ static void velocity_free_tx_buf(struct velocity_info *vptr, struct velocity_td_
+ 	 */
+ 	if (tdinfo->skb_dma) {
+ 
+-		pktlen = (skb->len > ETH_ZLEN ? : ETH_ZLEN);
++		pktlen = max_t(unsigned int, skb->len, ETH_ZLEN);
+ 		for (i = 0; i < tdinfo->nskb_dma; i++) {
+ #ifdef VELOCITY_ZERO_COPY_SUPPORT
+ 			pci_unmap_single(vptr->pdev, tdinfo->skb_dma[i], le16_to_cpu(td->tdesc1.len), PCI_DMA_TODEVICE);
+diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
+index 32df27a..409f022 100644
+--- a/drivers/net/wireless/ath5k/base.c
++++ b/drivers/net/wireless/ath5k/base.c
+@@ -685,6 +685,13 @@ ath5k_pci_resume(struct pci_dev *pdev)
+ 	if (err)
+ 		return err;
+ 
++	/*
++	 * Suspend/Resume resets the PCI configuration space, so we have to
++	 * re-disable the RETRY_TIMEOUT register (0x41) to keep
++	 * PCI Tx retries from interfering with C3 CPU state
++	 */
++	pci_write_config_byte(pdev, 0x41, 0);
++
+ 	err = request_irq(pdev->irq, ath5k_intr, IRQF_SHARED, "ath", sc);
+ 	if (err) {
+ 		ATH5K_ERR(sc, "request_irq failed\n");
+diff --git a/drivers/net/wireless/ath9k/calib.c b/drivers/net/wireless/ath9k/calib.c
+index e2d62e9..2117074 100644
+--- a/drivers/net/wireless/ath9k/calib.c
++++ b/drivers/net/wireless/ath9k/calib.c
+@@ -284,8 +284,8 @@ static bool ath9k_hw_iscal_supported(struct ath_hw *ah,
+ 		return true;
+ 	case ADC_GAIN_CAL:
+ 	case ADC_DC_CAL:
+-		if (conf->channel->band == IEEE80211_BAND_5GHZ &&
+-		  conf_is_ht20(conf))
++		if (!(conf->channel->band == IEEE80211_BAND_2GHZ &&
++		      conf_is_ht20(conf)))
+ 			return true;
+ 		break;
+ 	}
+@@ -883,7 +883,7 @@ bool ath9k_hw_calibrate(struct ath_hw *ah, struct ath9k_channel *chan,
+ static bool ar9285_clc(struct ath_hw *ah, struct ath9k_channel *chan)
+ {
+ 	REG_SET_BIT(ah, AR_PHY_CL_CAL_CTL, AR_PHY_CL_CAL_ENABLE);
+-	if (chan->channelFlags & CHANNEL_HT20) {
++	if (IS_CHAN_HT20(chan)) {
+ 		REG_SET_BIT(ah, AR_PHY_CL_CAL_CTL, AR_PHY_PARALLEL_CAL_ENABLE);
+ 		REG_SET_BIT(ah, AR_PHY_TURBO, AR_PHY_FC_DYN2040_EN);
+ 		REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL,
+@@ -919,83 +919,66 @@ static bool ar9285_clc(struct ath_hw *ah, struct ath9k_channel *chan)
+ 	return true;
+ }
+ 
+-bool ath9k_hw_init_cal(struct ath_hw *ah,
+-		       struct ath9k_channel *chan)
++bool ath9k_hw_init_cal(struct ath_hw *ah, struct ath9k_channel *chan)
+ {
+ 	if (AR_SREV_9285(ah) && AR_SREV_9285_12_OR_LATER(ah)) {
+ 		if (!ar9285_clc(ah, chan))
+ 			return false;
+-	} else if (AR_SREV_9280_10_OR_LATER(ah)) {
+-		REG_CLR_BIT(ah, AR_PHY_ADC_CTL, AR_PHY_ADC_CTL_OFF_PWDADC);
+-		REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_FLTR_CAL);
+-		REG_CLR_BIT(ah, AR_PHY_CL_CAL_CTL, AR_PHY_CL_CAL_ENABLE);
++	} else {
++		if (AR_SREV_9280_10_OR_LATER(ah)) {
++			REG_CLR_BIT(ah, AR_PHY_ADC_CTL, AR_PHY_ADC_CTL_OFF_PWDADC);
++			REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_FLTR_CAL);
++		}
+ 
+-		/* Kick off the cal */
++		/* Calibrate the AGC */
+ 		REG_WRITE(ah, AR_PHY_AGC_CONTROL,
+-				REG_READ(ah, AR_PHY_AGC_CONTROL) |
+-				AR_PHY_AGC_CONTROL_CAL);
++			  REG_READ(ah, AR_PHY_AGC_CONTROL) |
++			  AR_PHY_AGC_CONTROL_CAL);
+ 
+-		if (!ath9k_hw_wait(ah, AR_PHY_AGC_CONTROL,
+-					AR_PHY_AGC_CONTROL_CAL, 0,
+-					AH_WAIT_TIMEOUT)) {
++		/* Poll for offset calibration complete */
++		if (!ath9k_hw_wait(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_CAL,
++				   0, AH_WAIT_TIMEOUT)) {
+ 			DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
+ 				"offset calibration failed to complete in 1ms; "
+ 				"noisy environment?\n");
+ 			return false;
+ 		}
+ 
+-		REG_CLR_BIT(ah, AR_PHY_ADC_CTL, AR_PHY_ADC_CTL_OFF_PWDADC);
+-		REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_FLTR_CAL);
+-		REG_SET_BIT(ah, AR_PHY_CL_CAL_CTL, AR_PHY_CL_CAL_ENABLE);
+-	}
+-
+-	/* Calibrate the AGC */
+-	REG_WRITE(ah, AR_PHY_AGC_CONTROL,
+-			REG_READ(ah, AR_PHY_AGC_CONTROL) |
+-			AR_PHY_AGC_CONTROL_CAL);
+-
+-	if (!ath9k_hw_wait(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_CAL,
+-				0, AH_WAIT_TIMEOUT)) {
+-		DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
+-			"offset calibration failed to complete in 1ms; "
+-			"noisy environment?\n");
+-		return false;
+-	}
+-
+-	if (AR_SREV_9280_10_OR_LATER(ah)) {
+-		REG_SET_BIT(ah, AR_PHY_ADC_CTL, AR_PHY_ADC_CTL_OFF_PWDADC);
+-		REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_FLTR_CAL);
++		if (AR_SREV_9280_10_OR_LATER(ah)) {
++			REG_SET_BIT(ah, AR_PHY_ADC_CTL, AR_PHY_ADC_CTL_OFF_PWDADC);
++			REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_FLTR_CAL);
++		}
+ 	}
+ 
+ 	/* Do PA Calibration */
+ 	if (AR_SREV_9285(ah) && AR_SREV_9285_11_OR_LATER(ah))
+ 		ath9k_hw_9285_pa_cal(ah);
+ 
+-	/* Do NF Calibration */
++	/* Do NF Calibration after DC offset and other calibrations */
+ 	REG_WRITE(ah, AR_PHY_AGC_CONTROL,
+-			REG_READ(ah, AR_PHY_AGC_CONTROL) |
+-			AR_PHY_AGC_CONTROL_NF);
++		  REG_READ(ah, AR_PHY_AGC_CONTROL) | AR_PHY_AGC_CONTROL_NF);
+ 
+ 	ah->cal_list = ah->cal_list_last = ah->cal_list_curr = NULL;
+ 
++	/* Enable IQ, ADC Gain and ADC DC offset CALs */
+ 	if (AR_SREV_9100(ah) || AR_SREV_9160_10_OR_LATER(ah)) {
+ 		if (ath9k_hw_iscal_supported(ah, ADC_GAIN_CAL)) {
+ 			INIT_CAL(&ah->adcgain_caldata);
+ 			INSERT_CAL(ah, &ah->adcgain_caldata);
+ 			DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
+-					"enabling ADC Gain Calibration.\n");
++				"enabling ADC Gain Calibration.\n");
+ 		}
+ 		if (ath9k_hw_iscal_supported(ah, ADC_DC_CAL)) {
+ 			INIT_CAL(&ah->adcdc_caldata);
+ 			INSERT_CAL(ah, &ah->adcdc_caldata);
+ 			DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
+-					"enabling ADC DC Calibration.\n");
++				"enabling ADC DC Calibration.\n");
+ 		}
+ 		if (ath9k_hw_iscal_supported(ah, IQ_MISMATCH_CAL)) {
+ 			INIT_CAL(&ah->iq_caldata);
+ 			INSERT_CAL(ah, &ah->iq_caldata);
+ 			DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
+-					"enabling IQ Calibration.\n");
++				"enabling IQ Calibration.\n");
+ 		}
+ 
+ 		ah->cal_list_curr = ah->cal_list;
+diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c
+index 13d4e67..bb5312f 100644
+--- a/drivers/net/wireless/ath9k/main.c
++++ b/drivers/net/wireless/ath9k/main.c
+@@ -408,6 +408,18 @@ set_timer:
+ 	mod_timer(&sc->ani.timer, jiffies + msecs_to_jiffies(cal_interval));
+ }
+ 
++static void ath_start_ani(struct ath_softc *sc)
++{
++	unsigned long timestamp = jiffies_to_msecs(jiffies);
++
++	sc->ani.longcal_timer = timestamp;
++	sc->ani.shortcal_timer = timestamp;
++	sc->ani.checkani_timer = timestamp;
++
++	mod_timer(&sc->ani.timer,
++		  jiffies + msecs_to_jiffies(ATH_ANI_POLLINTERVAL));
++}
++
+ /*
+  * Update tx/rx chainmask. For legacy association,
+  * hard code chainmask to 1x1, for 11n association, use
+@@ -920,9 +932,7 @@ static void ath9k_bss_assoc_info(struct ath_softc *sc,
+ 		sc->nodestats.ns_avgtxrssi = ATH_RSSI_DUMMY_MARKER;
+ 		sc->nodestats.ns_avgtxrate = ATH_RATE_DUMMY_MARKER;
+ 
+-		/* Start ANI */
+-		mod_timer(&sc->ani.timer,
+-			  jiffies + msecs_to_jiffies(ATH_ANI_POLLINTERVAL));
++		ath_start_ani(sc);
+ 	} else {
+ 		DPRINTF(sc, ATH_DBG_CONFIG, "Bss Info DISSOC\n");
+ 		sc->curaid = 0;
+@@ -1416,7 +1426,8 @@ static int ath_init(u16 devid, struct ath_softc *sc)
+ 	for (i = 0; i < sc->keymax; i++)
+ 		ath9k_hw_keyreset(ah, (u16) i);
+ 
+-	if (ath9k_regd_init(sc->sc_ah))
++	error = ath9k_regd_init(sc->sc_ah);
++	if (error)
+ 		goto bad;
+ 
+ 	/* default to MONITOR mode */
+@@ -2270,12 +2281,8 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
+ 
+ 	ath9k_hw_set_interrupts(sc->sc_ah, sc->imask);
+ 
+-	if (conf->type == NL80211_IFTYPE_AP) {
+-		/* TODO: is this a suitable place to start ANI for AP mode? */
+-		/* Start ANI */
+-		mod_timer(&sc->ani.timer,
+-			  jiffies + msecs_to_jiffies(ATH_ANI_POLLINTERVAL));
+-	}
++	if (conf->type == NL80211_IFTYPE_AP)
++		ath_start_ani(sc);
+ 
+ out:
+ 	mutex_unlock(&sc->mutex);
+@@ -2771,6 +2778,7 @@ static void ath9k_sw_scan_complete(struct ieee80211_hw *hw)
+ 	mutex_lock(&sc->mutex);
+ 	aphy->state = ATH_WIPHY_ACTIVE;
+ 	sc->sc_flags &= ~SC_OP_SCANNING;
++	sc->sc_flags |= SC_OP_FULL_RESET;
+ 	mutex_unlock(&sc->mutex);
+ }
+ 
+diff --git a/drivers/net/wireless/ath9k/pci.c b/drivers/net/wireless/ath9k/pci.c
+index 168411d..4affb49 100644
+--- a/drivers/net/wireless/ath9k/pci.c
++++ b/drivers/net/wireless/ath9k/pci.c
+@@ -87,6 +87,7 @@ static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+ 	struct ath_softc *sc;
+ 	struct ieee80211_hw *hw;
+ 	u8 csz;
++	u32 val;
+ 	int ret = 0;
+ 	struct ath_hw *ah;
+ 
+@@ -133,6 +134,14 @@ static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+ 
+ 	pci_set_master(pdev);
+ 
++	/*
++	 * Disable the RETRY_TIMEOUT register (0x41) to keep
++	 * PCI Tx retries from interfering with C3 CPU state.
++	 */
++	pci_read_config_dword(pdev, 0x40, &val);
++	if ((val & 0x0000ff00) != 0)
++		pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
++
+ 	ret = pci_request_region(pdev, 0, "ath9k");
+ 	if (ret) {
+ 		dev_err(&pdev->dev, "PCI memory region reserve error\n");
+@@ -244,12 +253,21 @@ static int ath_pci_resume(struct pci_dev *pdev)
+ 	struct ieee80211_hw *hw = pci_get_drvdata(pdev);
+ 	struct ath_wiphy *aphy = hw->priv;
+ 	struct ath_softc *sc = aphy->sc;
++	u32 val;
+ 	int err;
+ 
+ 	err = pci_enable_device(pdev);
+ 	if (err)
+ 		return err;
+ 	pci_restore_state(pdev);
++	/*
++	 * Suspend/Resume resets the PCI configuration space, so we have to
++	 * re-disable the RETRY_TIMEOUT register (0x41) to keep
++	 * PCI Tx retries from interfering with C3 CPU state
++	 */
++	pci_read_config_dword(pdev, 0x40, &val);
++	if ((val & 0x0000ff00) != 0)
++		pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
+ 
+ 	/* Enable LED */
+ 	ath9k_hw_cfg_output(sc->sc_ah, ATH_LED_PIN,
+diff --git a/drivers/net/wireless/ath9k/regd.c b/drivers/net/wireless/ath9k/regd.c
+index 4ca6251..5256d24 100644
+--- a/drivers/net/wireless/ath9k/regd.c
++++ b/drivers/net/wireless/ath9k/regd.c
+@@ -439,7 +439,7 @@ int ath9k_regd_init(struct ath_hw *ah)
+ 	u16 regdmn;
+ 
+ 	if (!ath9k_regd_is_eeprom_valid(ah)) {
+-		DPRINTF(ah->ah_sc, ATH_DBG_REGULATORY,
++		DPRINTF(ah->ah_sc, ATH_DBG_FATAL,
+ 			"Invalid EEPROM contents\n");
+ 		return -EINVAL;
+ 	}
+diff --git a/drivers/net/wireless/ath9k/xmit.c b/drivers/net/wireless/ath9k/xmit.c
+index 689bdbf..c92f442 100644
+--- a/drivers/net/wireless/ath9k/xmit.c
++++ b/drivers/net/wireless/ath9k/xmit.c
+@@ -1573,8 +1573,9 @@ static int ath_tx_setup_buffer(struct ieee80211_hw *hw, struct ath_buf *bf,
+ 					   skb->len, DMA_TO_DEVICE);
+ 	if (unlikely(dma_mapping_error(sc->dev, bf->bf_dmacontext))) {
+ 		bf->bf_mpdu = NULL;
+-		DPRINTF(sc, ATH_DBG_CONFIG,
+-			"dma_mapping_error() on TX\n");
++		kfree(tx_info_priv);
++		tx_info->rate_driver_data[0] = NULL;
++		DPRINTF(sc, ATH_DBG_FATAL, "dma_mapping_error() on TX\n");
+ 		return -ENOMEM;
+ 	}
+ 
+diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
+index 4e63cc9..3d3c9c0 100644
+--- a/drivers/parport/parport_pc.c
++++ b/drivers/parport/parport_pc.c
+@@ -1413,11 +1413,13 @@ static void __devinit decode_smsc(int efer, int key, int devid, int devrev)
+ 
+ static void __devinit winbond_check(int io, int key)
+ {
+-	int devid,devrev,oldid,x_devid,x_devrev,x_oldid;
++	int origval, devid, devrev, oldid, x_devid, x_devrev, x_oldid;
+ 
+ 	if (!request_region(io, 3, __func__))
+ 		return;
+ 
++	origval = inb(io); /* Save original value */
++
+ 	/* First probe without key */
+ 	outb(0x20,io);
+ 	x_devid=inb(io+1);
+@@ -1437,6 +1439,8 @@ static void __devinit winbond_check(int io, int key)
+ 	oldid=inb(io+1);
+ 	outb(0xaa,io);    /* Magic Seal */
+ 
++	outb(origval, io); /* in case we poked some entirely different hardware */
++
+ 	if ((x_devid == devid) && (x_devrev == devrev) && (x_oldid == oldid))
+ 		goto out; /* protection against false positives */
+ 
+@@ -1447,11 +1451,15 @@ out:
+ 
+ static void __devinit winbond_check2(int io,int key)
+ {
+-        int devid,devrev,oldid,x_devid,x_devrev,x_oldid;
++	int origval[3], devid, devrev, oldid, x_devid, x_devrev, x_oldid;
+ 
+ 	if (!request_region(io, 3, __func__))
+ 		return;
+ 
++	origval[0] = inb(io); /* Save original values */
++	origval[1] = inb(io + 1);
++	origval[2] = inb(io + 2);
++
+ 	/* First probe without the key */
+ 	outb(0x20,io+2);
+ 	x_devid=inb(io+2);
+@@ -1470,6 +1478,10 @@ static void __devinit winbond_check2(int io,int key)
+         oldid=inb(io+2);
+         outb(0xaa,io);    /* Magic Seal */
+ 
++	outb(origval[0], io); /* in case we poked some entirely different hardware */
++	outb(origval[1], io + 1);
++	outb(origval[2], io + 2);
++
+ 	if ((x_devid == devid) && (x_devrev == devrev) && (x_oldid == oldid))
+ 		goto out; /* protection against false positives */
+ 
+@@ -1480,11 +1492,13 @@ out:
+ 
+ static void __devinit smsc_check(int io, int key)
+ {
+-        int id,rev,oldid,oldrev,x_id,x_rev,x_oldid,x_oldrev;
++	int origval, id, rev, oldid, oldrev, x_id, x_rev, x_oldid, x_oldrev;
+ 
+ 	if (!request_region(io, 3, __func__))
+ 		return;
+ 
++	origval = inb(io); /* Save original value */
++
+ 	/* First probe without the key */
+ 	outb(0x0d,io);
+ 	x_oldid=inb(io+1);
+@@ -1508,6 +1522,8 @@ static void __devinit smsc_check(int io, int key)
+ 	rev=inb(io+1);
+         outb(0xaa,io);    /* Magic Seal */
+ 
++	outb(origval, io); /* in case we poked some entirely different hardware */
++
+ 	if ((x_id == id) && (x_oldrev == oldrev) &&
+ 	    (x_oldid == oldid) && (x_rev == rev))
+ 		goto out; /* protection against false positives */
+@@ -1544,11 +1560,12 @@ static void __devinit detect_and_report_smsc (void)
+ static void __devinit detect_and_report_it87(void)
+ {
+ 	u16 dev;
+-	u8 r;
++	u8 origval, r;
+ 	if (verbose_probing)
+ 		printk(KERN_DEBUG "IT8705 Super-IO detection, now testing port 2E ...\n");
+-	if (!request_region(0x2e, 1, __func__))
++	if (!request_region(0x2e, 2, __func__))
+ 		return;
++	origval = inb(0x2e);		/* Save original value */
+ 	outb(0x87, 0x2e);
+ 	outb(0x01, 0x2e);
+ 	outb(0x55, 0x2e);
+@@ -1568,8 +1585,10 @@ static void __devinit detect_and_report_it87(void)
+ 		outb(r | 8, 0x2F);
+ 		outb(0x02, 0x2E);	/* Lock */
+ 		outb(0x02, 0x2F);
++	} else {
++		outb(origval, 0x2e);	/* Oops, sorry to disturb */
+ 	}
+-	release_region(0x2e, 1);
++	release_region(0x2e, 2);
+ }
+ #endif /* CONFIG_PARPORT_PC_SUPERIO */
+ 
+@@ -2193,6 +2212,9 @@ struct parport *parport_pc_probe_port(unsigned long int base,
+ 		if (IS_ERR(pdev))
+ 			return NULL;
+ 		dev = &pdev->dev;
++
++		dev->coherent_dma_mask = DMA_BIT_MASK(24);
++		dev->dma_mask = &dev->coherent_dma_mask;
+ 	}
+ 
+ 	ops = kmalloc(sizeof(struct parport_operations), GFP_KERNEL);
+diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
+index 1a91bf9..440f4fb 100644
+--- a/drivers/pci/pci.c
++++ b/drivers/pci/pci.c
+@@ -480,6 +480,8 @@ static int pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state)
+ 		pmcsr &= ~PCI_PM_CTRL_STATE_MASK;
+ 		pmcsr |= state;
+ 		break;
++	case PCI_D3hot:
++	case PCI_D3cold:
+ 	case PCI_UNKNOWN: /* Boot-up */
+ 		if ((pmcsr & PCI_PM_CTRL_STATE_MASK) == PCI_D3hot
+ 		 && !(pmcsr & PCI_PM_CTRL_NO_SOFT_RESET))
+@@ -1282,15 +1284,14 @@ pci_power_t pci_target_state(struct pci_dev *dev)
+ 		default:
+ 			target_state = state;
+ 		}
++	} else if (!dev->pm_cap) {
++		target_state = PCI_D0;
+ 	} else if (device_may_wakeup(&dev->dev)) {
+ 		/*
+ 		 * Find the deepest state from which the device can generate
+ 		 * wake-up events, make it the target state and enable device
+ 		 * to generate PME#.
+ 		 */
+-		if (!dev->pm_cap)
+-			return PCI_POWER_ERROR;
+-
+ 		if (dev->pme_support) {
+ 			while (target_state
+ 			      && !(dev->pme_support & (1 << target_state)))
+diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
+index b0367f1..777b2c7 100644
+--- a/drivers/pci/pcie/aspm.c
++++ b/drivers/pci/pcie/aspm.c
+@@ -638,6 +638,10 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev)
+ 	if (pdev->pcie_type != PCI_EXP_TYPE_ROOT_PORT &&
+ 		pdev->pcie_type != PCI_EXP_TYPE_DOWNSTREAM)
+ 		return;
++	/* VIA has a strange chipset, root port is under a bridge */
++	if (pdev->pcie_type == PCI_EXP_TYPE_ROOT_PORT &&
++		pdev->bus->self)
++		return;
+ 	down_read(&pci_bus_sem);
+ 	if (list_empty(&pdev->subordinate->devices))
+ 		goto out;
+diff --git a/drivers/scsi/qla2xxx/qla_dbg.c b/drivers/scsi/qla2xxx/qla_dbg.c
+index 34760f8..00856ba 100644
+--- a/drivers/scsi/qla2xxx/qla_dbg.c
++++ b/drivers/scsi/qla2xxx/qla_dbg.c
+@@ -218,7 +218,7 @@ qla24xx_soft_reset(struct qla_hw_data *ha)
+ 
+ static int
+ qla2xxx_dump_ram(struct qla_hw_data *ha, uint32_t addr, uint16_t *ram,
+-    uint16_t ram_words, void **nxt)
++    uint32_t ram_words, void **nxt)
+ {
+ 	int rval;
+ 	uint32_t cnt, stat, timer, words, idx;
+diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.c b/drivers/scsi/sym53c8xx_2/sym_hipd.c
+index ffa70d1..e9e1865 100644
+--- a/drivers/scsi/sym53c8xx_2/sym_hipd.c
++++ b/drivers/scsi/sym53c8xx_2/sym_hipd.c
+@@ -2312,8 +2312,9 @@ static void sym_int_par (struct sym_hcb *np, u_short sist)
+ 	int phase	= cmd & 7;
+ 	struct sym_ccb *cp	= sym_ccb_from_dsa(np, dsa);
+ 
+-	printf("%s: SCSI parity error detected: SCR1=%d DBC=%x SBCL=%x\n",
+-		sym_name(np), hsts, dbc, sbcl);
++	if (printk_ratelimit())
++		printf("%s: SCSI parity error detected: SCR1=%d DBC=%x SBCL=%x\n",
++			sym_name(np), hsts, dbc, sbcl);
+ 
+ 	/*
+ 	 *  Check that the chip is connected to the SCSI BUS.
+diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c
+index d86123e..a543acf 100644
+--- a/drivers/serial/bfin_5xx.c
++++ b/drivers/serial/bfin_5xx.c
+@@ -38,6 +38,10 @@
+ #include <asm/cacheflush.h>
+ #endif
+ 
++#ifdef CONFIG_SERIAL_BFIN_MODULE
++# undef CONFIG_EARLY_PRINTK
++#endif
++
+ /* UART name and device definitions */
+ #define BFIN_SERIAL_NAME	"ttyBF"
+ #define BFIN_SERIAL_MAJOR	204
+@@ -1058,6 +1062,7 @@ static void __init bfin_serial_init_ports(void)
+ 	bfin_serial_hw_init();
+ 
+ 	for (i = 0; i < nr_active_ports; i++) {
++		spin_lock_init(&bfin_serial_ports[i].port.lock);
+ 		bfin_serial_ports[i].port.uartclk   = get_sclk();
+ 		bfin_serial_ports[i].port.fifosize  = BFIN_UART_TX_FIFO_SIZE;
+ 		bfin_serial_ports[i].port.ops       = &bfin_serial_pops;
+diff --git a/drivers/spi/spi_mpc83xx.c b/drivers/spi/spi_mpc83xx.c
+index f4573a9..a32ccb4 100644
+--- a/drivers/spi/spi_mpc83xx.c
++++ b/drivers/spi/spi_mpc83xx.c
+@@ -711,12 +711,12 @@ static int of_mpc83xx_spi_get_chipselects(struct device *dev)
+ 		return 0;
+ 	}
+ 
+-	pinfo->gpios = kmalloc(ngpios * sizeof(pinfo->gpios), GFP_KERNEL);
++	pinfo->gpios = kmalloc(ngpios * sizeof(*pinfo->gpios), GFP_KERNEL);
+ 	if (!pinfo->gpios)
+ 		return -ENOMEM;
+-	memset(pinfo->gpios, -1, ngpios * sizeof(pinfo->gpios));
++	memset(pinfo->gpios, -1, ngpios * sizeof(*pinfo->gpios));
+ 
+-	pinfo->alow_flags = kzalloc(ngpios * sizeof(pinfo->alow_flags),
++	pinfo->alow_flags = kzalloc(ngpios * sizeof(*pinfo->alow_flags),
+ 				    GFP_KERNEL);
+ 	if (!pinfo->alow_flags) {
+ 		ret = -ENOMEM;
+diff --git a/drivers/staging/uc2322/aten2011.c b/drivers/staging/uc2322/aten2011.c
+index 9c62f78..39d0926 100644
+--- a/drivers/staging/uc2322/aten2011.c
++++ b/drivers/staging/uc2322/aten2011.c
+@@ -2336,7 +2336,7 @@ static int ATEN2011_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void ATEN2011_shutdown(struct usb_serial *serial)
++static void ATEN2011_release(struct usb_serial *serial)
+ {
+ 	int i;
+ 	struct ATENINTL_port *ATEN2011_port;
+@@ -2382,7 +2382,7 @@ static struct usb_serial_driver aten_serial_driver = {
+ 	.tiocmget =		ATEN2011_tiocmget,
+ 	.tiocmset =		ATEN2011_tiocmset,
+ 	.attach =		ATEN2011_startup,
+-	.shutdown =		ATEN2011_shutdown,
++	.release =		ATEN2011_release,
+ 	.read_bulk_callback =	ATEN2011_bulk_in_callback,
+ 	.read_int_callback =	ATEN2011_interrupt_callback,
+ };
+diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c
+index c40a9b2..3703789 100644
+--- a/drivers/usb/class/usbtmc.c
++++ b/drivers/usb/class/usbtmc.c
+@@ -927,21 +927,27 @@ static long usbtmc_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+ 	switch (cmd) {
+ 	case USBTMC_IOCTL_CLEAR_OUT_HALT:
+ 		retval = usbtmc_ioctl_clear_out_halt(data);
++		break;
+ 
+ 	case USBTMC_IOCTL_CLEAR_IN_HALT:
+ 		retval = usbtmc_ioctl_clear_in_halt(data);
++		break;
+ 
+ 	case USBTMC_IOCTL_INDICATOR_PULSE:
+ 		retval = usbtmc_ioctl_indicator_pulse(data);
++		break;
+ 
+ 	case USBTMC_IOCTL_CLEAR:
+ 		retval = usbtmc_ioctl_clear(data);
++		break;
+ 
+ 	case USBTMC_IOCTL_ABORT_BULK_OUT:
+ 		retval = usbtmc_ioctl_abort_bulk_out(data);
++		break;
+ 
+ 	case USBTMC_IOCTL_ABORT_BULK_IN:
+ 		retval = usbtmc_ioctl_abort_bulk_in(data);
++		break;
+ 	}
+ 
+ 	mutex_unlock(&data->io_mutex);
+diff --git a/drivers/usb/serial/aircable.c b/drivers/usb/serial/aircable.c
+index 6d106e7..2cbfab3 100644
+--- a/drivers/usb/serial/aircable.c
++++ b/drivers/usb/serial/aircable.c
+@@ -364,7 +364,7 @@ static int aircable_attach(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void aircable_shutdown(struct usb_serial *serial)
++static void aircable_release(struct usb_serial *serial)
+ {
+ 
+ 	struct usb_serial_port *port = serial->port[0];
+@@ -375,7 +375,6 @@ static void aircable_shutdown(struct usb_serial *serial)
+ 	if (priv) {
+ 		serial_buf_free(priv->tx_buf);
+ 		serial_buf_free(priv->rx_buf);
+-		usb_set_serial_port_data(port, NULL);
+ 		kfree(priv);
+ 	}
+ }
+@@ -601,7 +600,7 @@ static struct usb_serial_driver aircable_device = {
+ 	.num_ports =		1,
+ 	.attach =		aircable_attach,
+ 	.probe =		aircable_probe,
+-	.shutdown =		aircable_shutdown,
++	.release =		aircable_release,
+ 	.write =		aircable_write,
+ 	.write_room =		aircable_write_room,
+ 	.write_bulk_callback =	aircable_write_bulk_callback,
+diff --git a/drivers/usb/serial/belkin_sa.c b/drivers/usb/serial/belkin_sa.c
+index b7eacad..9637228 100644
+--- a/drivers/usb/serial/belkin_sa.c
++++ b/drivers/usb/serial/belkin_sa.c
+@@ -90,7 +90,7 @@ static int debug;
+ 
+ /* function prototypes for a Belkin USB Serial Adapter F5U103 */
+ static int  belkin_sa_startup(struct usb_serial *serial);
+-static void belkin_sa_shutdown(struct usb_serial *serial);
++static void belkin_sa_release(struct usb_serial *serial);
+ static int  belkin_sa_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void belkin_sa_close(struct tty_struct *tty,
+@@ -143,7 +143,7 @@ static struct usb_serial_driver belkin_device = {
+ 	.tiocmget =		belkin_sa_tiocmget,
+ 	.tiocmset =		belkin_sa_tiocmset,
+ 	.attach =		belkin_sa_startup,
+-	.shutdown =		belkin_sa_shutdown,
++	.release =		belkin_sa_release,
+ };
+ 
+ 
+@@ -198,14 +198,13 @@ static int belkin_sa_startup(struct usb_serial *serial)
+ }
+ 
+ 
+-static void belkin_sa_shutdown(struct usb_serial *serial)
++static void belkin_sa_release(struct usb_serial *serial)
+ {
+ 	struct belkin_sa_private *priv;
+ 	int i;
+ 
+ 	dbg("%s", __func__);
+ 
+-	/* stop reads and writes on all ports */
+ 	for (i = 0; i < serial->num_ports; ++i) {
+ 		/* My special items, the standard routines free my urbs */
+ 		priv = usb_get_serial_port_data(serial->port[i]);
+diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
+index e8d5133..cf5093f 100644
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -51,7 +51,7 @@ static int cp2101_tiocmset_port(struct usb_serial_port *port, struct file *,
+ 		unsigned int, unsigned int);
+ static void cp2101_break_ctl(struct tty_struct *, int);
+ static int cp2101_startup(struct usb_serial *);
+-static void cp2101_shutdown(struct usb_serial *);
++static void cp2101_disconnect(struct usb_serial *);
+ 
+ static int debug;
+ 
+@@ -131,7 +131,7 @@ static struct usb_serial_driver cp2101_device = {
+ 	.tiocmget 		= cp2101_tiocmget,
+ 	.tiocmset		= cp2101_tiocmset,
+ 	.attach			= cp2101_startup,
+-	.shutdown		= cp2101_shutdown,
++	.disconnect		= cp2101_disconnect,
+ };
+ 
+ /* Config request types */
+@@ -773,7 +773,7 @@ static int cp2101_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void cp2101_shutdown(struct usb_serial *serial)
++static void cp2101_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+ 
+diff --git a/drivers/usb/serial/cyberjack.c b/drivers/usb/serial/cyberjack.c
+index dd501bb..49cf9ee 100644
+--- a/drivers/usb/serial/cyberjack.c
++++ b/drivers/usb/serial/cyberjack.c
+@@ -58,7 +58,8 @@ static int debug;
+ 
+ /* Function prototypes */
+ static int cyberjack_startup(struct usb_serial *serial);
+-static void cyberjack_shutdown(struct usb_serial *serial);
++static void cyberjack_disconnect(struct usb_serial *serial);
++static void cyberjack_release(struct usb_serial *serial);
+ static int  cyberjack_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void cyberjack_close(struct tty_struct *tty,
+@@ -95,7 +96,8 @@ static struct usb_serial_driver cyberjack_device = {
+ 	.id_table =		id_table,
+ 	.num_ports =		1,
+ 	.attach =		cyberjack_startup,
+-	.shutdown =		cyberjack_shutdown,
++	.disconnect =		cyberjack_disconnect,
++	.release =		cyberjack_release,
+ 	.open =			cyberjack_open,
+ 	.close =		cyberjack_close,
+ 	.write =		cyberjack_write,
+@@ -149,17 +151,25 @@ static int cyberjack_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void cyberjack_shutdown(struct usb_serial *serial)
++static void cyberjack_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+ 
+ 	dbg("%s", __func__);
+ 
+-	for (i = 0; i < serial->num_ports; ++i) {
++	for (i = 0; i < serial->num_ports; ++i)
+ 		usb_kill_urb(serial->port[i]->interrupt_in_urb);
++}
++
++static void cyberjack_release(struct usb_serial *serial)
++{
++	int i;
++
++	dbg("%s", __func__);
++
++	for (i = 0; i < serial->num_ports; ++i) {
+ 		/* My special items, the standard routines free my urbs */
+ 		kfree(usb_get_serial_port_data(serial->port[i]));
+-		usb_set_serial_port_data(serial->port[i], NULL);
+ 	}
+ }
+ 
+diff --git a/drivers/usb/serial/cypress_m8.c b/drivers/usb/serial/cypress_m8.c
+index e568710..b8e6e4d 100644
+--- a/drivers/usb/serial/cypress_m8.c
++++ b/drivers/usb/serial/cypress_m8.c
+@@ -171,7 +171,7 @@ struct cypress_buf {
+ static int  cypress_earthmate_startup(struct usb_serial *serial);
+ static int  cypress_hidcom_startup(struct usb_serial *serial);
+ static int  cypress_ca42v2_startup(struct usb_serial *serial);
+-static void cypress_shutdown(struct usb_serial *serial);
++static void cypress_release(struct usb_serial *serial);
+ static int  cypress_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void cypress_close(struct tty_struct *tty,
+@@ -215,7 +215,7 @@ static struct usb_serial_driver cypress_earthmate_device = {
+ 	.id_table =			id_table_earthmate,
+ 	.num_ports =			1,
+ 	.attach =			cypress_earthmate_startup,
+-	.shutdown =			cypress_shutdown,
++	.release =			cypress_release,
+ 	.open =				cypress_open,
+ 	.close =			cypress_close,
+ 	.write =			cypress_write,
+@@ -241,7 +241,7 @@ static struct usb_serial_driver cypress_hidcom_device = {
+ 	.id_table =			id_table_cyphidcomrs232,
+ 	.num_ports =			1,
+ 	.attach =			cypress_hidcom_startup,
+-	.shutdown =			cypress_shutdown,
++	.release =			cypress_release,
+ 	.open =				cypress_open,
+ 	.close =			cypress_close,
+ 	.write =			cypress_write,
+@@ -267,7 +267,7 @@ static struct usb_serial_driver cypress_ca42v2_device = {
+ 	.id_table =			id_table_nokiaca42v2,
+ 	.num_ports =			1,
+ 	.attach =			cypress_ca42v2_startup,
+-	.shutdown =			cypress_shutdown,
++	.release =			cypress_release,
+ 	.open =				cypress_open,
+ 	.close =			cypress_close,
+ 	.write =			cypress_write,
+@@ -613,7 +613,7 @@ static int cypress_ca42v2_startup(struct usb_serial *serial)
+ } /* cypress_ca42v2_startup */
+ 
+ 
+-static void cypress_shutdown(struct usb_serial *serial)
++static void cypress_release(struct usb_serial *serial)
+ {
+ 	struct cypress_private *priv;
+ 
+@@ -626,7 +626,6 @@ static void cypress_shutdown(struct usb_serial *serial)
+ 	if (priv) {
+ 		cypress_buf_free(priv->buf);
+ 		kfree(priv);
+-		usb_set_serial_port_data(serial->port[0], NULL);
+ 	}
+ }
+ 
+diff --git a/drivers/usb/serial/digi_acceleport.c b/drivers/usb/serial/digi_acceleport.c
+index 38ba4ea..e9373db 100644
+--- a/drivers/usb/serial/digi_acceleport.c
++++ b/drivers/usb/serial/digi_acceleport.c
+@@ -460,7 +460,8 @@ static void digi_close(struct tty_struct *tty, struct usb_serial_port *port,
+ 	struct file *filp);
+ static int digi_startup_device(struct usb_serial *serial);
+ static int digi_startup(struct usb_serial *serial);
+-static void digi_shutdown(struct usb_serial *serial);
++static void digi_disconnect(struct usb_serial *serial);
++static void digi_release(struct usb_serial *serial);
+ static void digi_read_bulk_callback(struct urb *urb);
+ static int digi_read_inb_callback(struct urb *urb);
+ static int digi_read_oob_callback(struct urb *urb);
+@@ -522,7 +523,8 @@ static struct usb_serial_driver digi_acceleport_2_device = {
+ 	.tiocmget =			digi_tiocmget,
+ 	.tiocmset =			digi_tiocmset,
+ 	.attach =			digi_startup,
+-	.shutdown =			digi_shutdown,
++	.disconnect =			digi_disconnect,
++	.release =			digi_release,
+ };
+ 
+ static struct usb_serial_driver digi_acceleport_4_device = {
+@@ -548,7 +550,8 @@ static struct usb_serial_driver digi_acceleport_4_device = {
+ 	.tiocmget =			digi_tiocmget,
+ 	.tiocmset =			digi_tiocmset,
+ 	.attach =			digi_startup,
+-	.shutdown =			digi_shutdown,
++	.disconnect =			digi_disconnect,
++	.release =			digi_release,
+ };
+ 
+ 
+@@ -1589,16 +1592,23 @@ static int digi_startup(struct usb_serial *serial)
+ }
+ 
+ 
+-static void digi_shutdown(struct usb_serial *serial)
++static void digi_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+-	dbg("digi_shutdown: TOP, in_interrupt()=%ld", in_interrupt());
++	dbg("digi_disconnect: TOP, in_interrupt()=%ld", in_interrupt());
+ 
+ 	/* stop reads and writes on all ports */
+ 	for (i = 0; i < serial->type->num_ports + 1; i++) {
+ 		usb_kill_urb(serial->port[i]->read_urb);
+ 		usb_kill_urb(serial->port[i]->write_urb);
+ 	}
++}
++
++
++static void digi_release(struct usb_serial *serial)
++{
++	int i;
++	dbg("digi_release: TOP, in_interrupt()=%ld", in_interrupt());
+ 
+ 	/* free the private data structures for all ports */
+ 	/* number of regular ports + 1 for the out-of-band port */
+diff --git a/drivers/usb/serial/empeg.c b/drivers/usb/serial/empeg.c
+index c709ec4..b0d678c 100644
+--- a/drivers/usb/serial/empeg.c
++++ b/drivers/usb/serial/empeg.c
+@@ -91,7 +91,6 @@ static int  empeg_chars_in_buffer(struct tty_struct *tty);
+ static void empeg_throttle(struct tty_struct *tty);
+ static void empeg_unthrottle(struct tty_struct *tty);
+ static int  empeg_startup(struct usb_serial *serial);
+-static void empeg_shutdown(struct usb_serial *serial);
+ static void empeg_set_termios(struct tty_struct *tty,
+ 		struct usb_serial_port *port, struct ktermios *old_termios);
+ static void empeg_write_bulk_callback(struct urb *urb);
+@@ -125,7 +124,6 @@ static struct usb_serial_driver empeg_device = {
+ 	.throttle =		empeg_throttle,
+ 	.unthrottle =		empeg_unthrottle,
+ 	.attach =		empeg_startup,
+-	.shutdown =		empeg_shutdown,
+ 	.set_termios =		empeg_set_termios,
+ 	.write =		empeg_write,
+ 	.write_room =		empeg_write_room,
+@@ -429,12 +427,6 @@ static int  empeg_startup(struct usb_serial *serial)
+ }
+ 
+ 
+-static void empeg_shutdown(struct usb_serial *serial)
+-{
+-	dbg("%s", __func__);
+-}
+-
+-
+ static void empeg_set_termios(struct tty_struct *tty,
+ 		struct usb_serial_port *port, struct ktermios *old_termios)
+ {
+diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
+index d9fcdae..9722512 100644
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -714,7 +714,6 @@ static const char *ftdi_chip_name[] = {
+ /* function prototypes for a FTDI serial converter */
+ static int  ftdi_sio_probe(struct usb_serial *serial,
+ 					const struct usb_device_id *id);
+-static void ftdi_shutdown(struct usb_serial *serial);
+ static int  ftdi_sio_port_probe(struct usb_serial_port *port);
+ static int  ftdi_sio_port_remove(struct usb_serial_port *port);
+ static int  ftdi_open(struct tty_struct *tty,
+@@ -770,7 +769,6 @@ static struct usb_serial_driver ftdi_sio_device = {
+ 	.ioctl =		ftdi_ioctl,
+ 	.set_termios =		ftdi_set_termios,
+ 	.break_ctl =		ftdi_break_ctl,
+-	.shutdown =		ftdi_shutdown,
+ };
+ 
+ 
+@@ -1460,18 +1458,6 @@ static int ftdi_mtxorb_hack_setup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-/* ftdi_shutdown is called from usbserial:usb_serial_disconnect
+- *   it is called when the usb device is disconnected
+- *
+- *   usbserial:usb_serial_disconnect
+- *      calls __serial_close for each open of the port
+- *      shutdown is called then (ie ftdi_shutdown)
+- */
+-static void ftdi_shutdown(struct usb_serial *serial)
+-{
+-	dbg("%s", __func__);
+-}
+-
+ static void ftdi_sio_priv_release(struct kref *k)
+ {
+ 	struct ftdi_private *priv = container_of(k, struct ftdi_private, kref);
+diff --git a/drivers/usb/serial/garmin_gps.c b/drivers/usb/serial/garmin_gps.c
+index 586d30f..ed8bd90 100644
+--- a/drivers/usb/serial/garmin_gps.c
++++ b/drivers/usb/serial/garmin_gps.c
+@@ -1528,7 +1528,7 @@ static int garmin_attach(struct usb_serial *serial)
+ }
+ 
+ 
+-static void garmin_shutdown(struct usb_serial *serial)
++static void garmin_disconnect(struct usb_serial *serial)
+ {
+ 	struct usb_serial_port *port = serial->port[0];
+ 	struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
+@@ -1537,8 +1537,17 @@ static void garmin_shutdown(struct usb_serial *serial)
+ 
+ 	usb_kill_urb(port->interrupt_in_urb);
+ 	del_timer_sync(&garmin_data_p->timer);
++}
++
++
++static void garmin_release(struct usb_serial *serial)
++{
++	struct usb_serial_port *port = serial->port[0];
++	struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
++
++	dbg("%s", __func__);
++
+ 	kfree(garmin_data_p);
+-	usb_set_serial_port_data(port, NULL);
+ }
+ 
+ 
+@@ -1557,7 +1566,8 @@ static struct usb_serial_driver garmin_device = {
+ 	.throttle            = garmin_throttle,
+ 	.unthrottle          = garmin_unthrottle,
+ 	.attach              = garmin_attach,
+-	.shutdown            = garmin_shutdown,
++	.disconnect          = garmin_disconnect,
++	.release             = garmin_release,
+ 	.write               = garmin_write,
+ 	.write_room          = garmin_write_room,
+ 	.write_bulk_callback = garmin_write_bulk_callback,
+diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c
+index 4cec990..ef29788 100644
+--- a/drivers/usb/serial/generic.c
++++ b/drivers/usb/serial/generic.c
+@@ -63,7 +63,8 @@ struct usb_serial_driver usb_serial_generic_device = {
+ 	.id_table =		generic_device_ids,
+ 	.usb_driver = 		&generic_driver,
+ 	.num_ports =		1,
+-	.shutdown =		usb_serial_generic_shutdown,
++	.disconnect =		usb_serial_generic_disconnect,
++	.release =		usb_serial_generic_release,
+ 	.throttle =		usb_serial_generic_throttle,
+ 	.unthrottle =		usb_serial_generic_unthrottle,
+ 	.resume =		usb_serial_generic_resume,
+@@ -413,7 +414,7 @@ void usb_serial_generic_unthrottle(struct tty_struct *tty)
+ 	}
+ }
+ 
+-void usb_serial_generic_shutdown(struct usb_serial *serial)
++void usb_serial_generic_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+ 
+@@ -424,3 +425,7 @@ void usb_serial_generic_shutdown(struct usb_serial *serial)
+ 		generic_cleanup(serial->port[i]);
+ }
+ 
++void usb_serial_generic_release(struct usb_serial *serial)
++{
++	dbg("%s", __func__);
++}
+diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
+index fb4a73d..fc509bb 100644
+--- a/drivers/usb/serial/io_edgeport.c
++++ b/drivers/usb/serial/io_edgeport.c
+@@ -225,7 +225,8 @@ static int  edge_tiocmget(struct tty_struct *tty, struct file *file);
+ static int  edge_tiocmset(struct tty_struct *tty, struct file *file,
+ 					unsigned int set, unsigned int clear);
+ static int  edge_startup(struct usb_serial *serial);
+-static void edge_shutdown(struct usb_serial *serial);
++static void edge_disconnect(struct usb_serial *serial);
++static void edge_release(struct usb_serial *serial);
+ 
+ #include "io_tables.h"	/* all of the devices that this driver supports */
+ 
+@@ -3195,21 +3196,16 @@ static int edge_startup(struct usb_serial *serial)
+ 
+ 
+ /****************************************************************************
+- * edge_shutdown
++ * edge_disconnect
+  *	This function is called whenever the device is removed from the usb bus.
+  ****************************************************************************/
+-static void edge_shutdown(struct usb_serial *serial)
++static void edge_disconnect(struct usb_serial *serial)
+ {
+ 	struct edgeport_serial *edge_serial = usb_get_serial_data(serial);
+-	int i;
+ 
+ 	dbg("%s", __func__);
+ 
+ 	/* stop reads and writes on all ports */
+-	for (i = 0; i < serial->num_ports; ++i) {
+-		kfree(usb_get_serial_port_data(serial->port[i]));
+-		usb_set_serial_port_data(serial->port[i],  NULL);
+-	}
+ 	/* free up our endpoint stuff */
+ 	if (edge_serial->is_epic) {
+ 		usb_kill_urb(edge_serial->interrupt_read_urb);
+@@ -3220,9 +3216,24 @@ static void edge_shutdown(struct usb_serial *serial)
+ 		usb_free_urb(edge_serial->read_urb);
+ 		kfree(edge_serial->bulk_in_buffer);
+ 	}
++}
++
++
++/****************************************************************************
++ * edge_release
++ *	This function is called when the device structure is deallocated.
++ ****************************************************************************/
++static void edge_release(struct usb_serial *serial)
++{
++	struct edgeport_serial *edge_serial = usb_get_serial_data(serial);
++	int i;
++
++	dbg("%s", __func__);
++
++	for (i = 0; i < serial->num_ports; ++i)
++		kfree(usb_get_serial_port_data(serial->port[i]));
+ 
+ 	kfree(edge_serial);
+-	usb_set_serial_data(serial, NULL);
+ }
+ 
+ 
+diff --git a/drivers/usb/serial/io_tables.h b/drivers/usb/serial/io_tables.h
+index 7eb9d67..9241d31 100644
+--- a/drivers/usb/serial/io_tables.h
++++ b/drivers/usb/serial/io_tables.h
+@@ -117,7 +117,8 @@ static struct usb_serial_driver edgeport_2port_device = {
+ 	.throttle		= edge_throttle,
+ 	.unthrottle		= edge_unthrottle,
+ 	.attach			= edge_startup,
+-	.shutdown		= edge_shutdown,
++	.disconnect		= edge_disconnect,
++	.release		= edge_release,
+ 	.ioctl			= edge_ioctl,
+ 	.set_termios		= edge_set_termios,
+ 	.tiocmget		= edge_tiocmget,
+@@ -145,7 +146,8 @@ static struct usb_serial_driver edgeport_4port_device = {
+ 	.throttle		= edge_throttle,
+ 	.unthrottle		= edge_unthrottle,
+ 	.attach			= edge_startup,
+-	.shutdown		= edge_shutdown,
++	.disconnect		= edge_disconnect,
++	.release		= edge_release,
+ 	.ioctl			= edge_ioctl,
+ 	.set_termios		= edge_set_termios,
+ 	.tiocmget		= edge_tiocmget,
+@@ -173,7 +175,8 @@ static struct usb_serial_driver edgeport_8port_device = {
+ 	.throttle		= edge_throttle,
+ 	.unthrottle		= edge_unthrottle,
+ 	.attach			= edge_startup,
+-	.shutdown		= edge_shutdown,
++	.disconnect		= edge_disconnect,
++	.release		= edge_release,
+ 	.ioctl			= edge_ioctl,
+ 	.set_termios		= edge_set_termios,
+ 	.tiocmget		= edge_tiocmget,
+@@ -200,7 +203,8 @@ static struct usb_serial_driver epic_device = {
+ 	.throttle		= edge_throttle,
+ 	.unthrottle		= edge_unthrottle,
+ 	.attach			= edge_startup,
+-	.shutdown		= edge_shutdown,
++	.disconnect		= edge_disconnect,
++	.release		= edge_release,
+ 	.ioctl			= edge_ioctl,
+ 	.set_termios		= edge_set_termios,
+ 	.tiocmget		= edge_tiocmget,
+diff --git a/drivers/usb/serial/io_ti.c b/drivers/usb/serial/io_ti.c
+index 513b25e..3139246 100644
+--- a/drivers/usb/serial/io_ti.c
++++ b/drivers/usb/serial/io_ti.c
+@@ -2664,7 +2664,7 @@ cleanup:
+ 	return -ENOMEM;
+ }
+ 
+-static void edge_shutdown(struct usb_serial *serial)
++static void edge_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+ 	struct edgeport_port *edge_port;
+@@ -2674,12 +2674,22 @@ static void edge_shutdown(struct usb_serial *serial)
+ 	for (i = 0; i < serial->num_ports; ++i) {
+ 		edge_port = usb_get_serial_port_data(serial->port[i]);
+ 		edge_remove_sysfs_attrs(edge_port->port);
++	}
++}
++
++static void edge_release(struct usb_serial *serial)
++{
++	int i;
++	struct edgeport_port *edge_port;
++
++	dbg("%s", __func__);
++
++	for (i = 0; i < serial->num_ports; ++i) {
++		edge_port = usb_get_serial_port_data(serial->port[i]);
+ 		edge_buf_free(edge_port->ep_out_buf);
+ 		kfree(edge_port);
+-		usb_set_serial_port_data(serial->port[i], NULL);
+ 	}
+ 	kfree(usb_get_serial_data(serial));
+-	usb_set_serial_data(serial, NULL);
+ }
+ 
+ 
+@@ -2916,7 +2926,8 @@ static struct usb_serial_driver edgeport_1port_device = {
+ 	.throttle		= edge_throttle,
+ 	.unthrottle		= edge_unthrottle,
+ 	.attach			= edge_startup,
+-	.shutdown		= edge_shutdown,
++	.disconnect		= edge_disconnect,
++	.release		= edge_release,
+ 	.port_probe		= edge_create_sysfs_attrs,
+ 	.ioctl			= edge_ioctl,
+ 	.set_termios		= edge_set_termios,
+@@ -2945,7 +2956,8 @@ static struct usb_serial_driver edgeport_2port_device = {
+ 	.throttle		= edge_throttle,
+ 	.unthrottle		= edge_unthrottle,
+ 	.attach			= edge_startup,
+-	.shutdown		= edge_shutdown,
++	.disconnect		= edge_disconnect,
++	.release		= edge_release,
+ 	.port_probe		= edge_create_sysfs_attrs,
+ 	.ioctl			= edge_ioctl,
+ 	.set_termios		= edge_set_termios,
+diff --git a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c
+index cd62825..b70b0a0 100644
+--- a/drivers/usb/serial/ipaq.c
++++ b/drivers/usb/serial/ipaq.c
+@@ -80,7 +80,6 @@ static void ipaq_close(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static int  ipaq_calc_num_ports(struct usb_serial *serial);
+ static int  ipaq_startup(struct usb_serial *serial);
+-static void ipaq_shutdown(struct usb_serial *serial);
+ static int ipaq_write(struct tty_struct *tty, struct usb_serial_port *port,
+ 			const unsigned char *buf, int count);
+ static int ipaq_write_bulk(struct usb_serial_port *port,
+@@ -577,7 +576,6 @@ static struct usb_serial_driver ipaq_device = {
+ 	.close =		ipaq_close,
+ 	.attach =		ipaq_startup,
+ 	.calc_num_ports =	ipaq_calc_num_ports,
+-	.shutdown =		ipaq_shutdown,
+ 	.write =		ipaq_write,
+ 	.write_room =		ipaq_write_room,
+ 	.chars_in_buffer =	ipaq_chars_in_buffer,
+@@ -992,11 +990,6 @@ static int ipaq_startup(struct usb_serial *serial)
+ 	return usb_reset_configuration(serial->dev);
+ }
+ 
+-static void ipaq_shutdown(struct usb_serial *serial)
+-{
+-	dbg("%s", __func__);
+-}
+-
+ static int __init ipaq_init(void)
+ {
+ 	int retval;
+diff --git a/drivers/usb/serial/iuu_phoenix.c b/drivers/usb/serial/iuu_phoenix.c
+index 4473d44..c03015b 100644
+--- a/drivers/usb/serial/iuu_phoenix.c
++++ b/drivers/usb/serial/iuu_phoenix.c
+@@ -122,8 +122,8 @@ static int iuu_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-/* Shutdown function */
+-static void iuu_shutdown(struct usb_serial *serial)
++/* Release function */
++static void iuu_release(struct usb_serial *serial)
+ {
+ 	struct usb_serial_port *port = serial->port[0];
+ 	struct iuu_private *priv = usb_get_serial_port_data(port);
+@@ -1176,7 +1176,7 @@ static struct usb_serial_driver iuu_device = {
+ 	.tiocmget = iuu_tiocmget,
+ 	.tiocmset = iuu_tiocmset,
+ 	.attach = iuu_startup,
+-	.shutdown = iuu_shutdown,
++	.release = iuu_release,
+ };
+ 
+ static int __init iuu_init(void)
+diff --git a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c
+index 00daa8f..8c69c3c 100644
+--- a/drivers/usb/serial/keyspan.c
++++ b/drivers/usb/serial/keyspan.c
+@@ -2682,7 +2682,7 @@ static int keyspan_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void keyspan_shutdown(struct usb_serial *serial)
++static void keyspan_disconnect(struct usb_serial *serial)
+ {
+ 	int				i, j;
+ 	struct usb_serial_port		*port;
+@@ -2722,6 +2722,17 @@ static void keyspan_shutdown(struct usb_serial *serial)
+ 			usb_free_urb(p_priv->out_urbs[j]);
+ 		}
+ 	}
++}
++
++static void keyspan_release(struct usb_serial *serial)
++{
++	int				i;
++	struct usb_serial_port		*port;
++	struct keyspan_serial_private 	*s_priv;
++
++	dbg("%s", __func__);
++
++	s_priv = usb_get_serial_data(serial);
+ 
+ 	/*  dbg("Freeing serial->private."); */
+ 	kfree(s_priv);
+diff --git a/drivers/usb/serial/keyspan.h b/drivers/usb/serial/keyspan.h
+index 38b4582..4961c26 100644
+--- a/drivers/usb/serial/keyspan.h
++++ b/drivers/usb/serial/keyspan.h
+@@ -42,7 +42,8 @@ static void keyspan_close		(struct tty_struct *tty,
+ 					 struct usb_serial_port *port,
+ 					 struct file *filp);
+ static int  keyspan_startup		(struct usb_serial *serial);
+-static void keyspan_shutdown		(struct usb_serial *serial);
++static void keyspan_disconnect		(struct usb_serial *serial);
++static void keyspan_release		(struct usb_serial *serial);
+ static int  keyspan_write_room		(struct tty_struct *tty);
+ 
+ static int  keyspan_write		(struct tty_struct *tty,
+@@ -569,7 +570,8 @@ static struct usb_serial_driver keyspan_1port_device = {
+ 	.tiocmget		= keyspan_tiocmget,
+ 	.tiocmset		= keyspan_tiocmset,
+ 	.attach			= keyspan_startup,
+-	.shutdown		= keyspan_shutdown,
++	.disconnect		= keyspan_disconnect,
++	.release		= keyspan_release,
+ };
+ 
+ static struct usb_serial_driver keyspan_2port_device = {
+@@ -589,7 +591,8 @@ static struct usb_serial_driver keyspan_2port_device = {
+ 	.tiocmget		= keyspan_tiocmget,
+ 	.tiocmset		= keyspan_tiocmset,
+ 	.attach			= keyspan_startup,
+-	.shutdown		= keyspan_shutdown,
++	.disconnect		= keyspan_disconnect,
++	.release		= keyspan_release,
+ };
+ 
+ static struct usb_serial_driver keyspan_4port_device = {
+@@ -609,7 +612,8 @@ static struct usb_serial_driver keyspan_4port_device = {
+ 	.tiocmget		= keyspan_tiocmget,
+ 	.tiocmset		= keyspan_tiocmset,
+ 	.attach			= keyspan_startup,
+-	.shutdown		= keyspan_shutdown,
++	.disconnect		= keyspan_disconnect,
++	.release		= keyspan_release,
+ };
+ 
+ #endif
+diff --git a/drivers/usb/serial/keyspan_pda.c b/drivers/usb/serial/keyspan_pda.c
+index bf1ae24..d2e2b91 100644
+--- a/drivers/usb/serial/keyspan_pda.c
++++ b/drivers/usb/serial/keyspan_pda.c
+@@ -795,7 +795,7 @@ static int keyspan_pda_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void keyspan_pda_shutdown(struct usb_serial *serial)
++static void keyspan_pda_release(struct usb_serial *serial)
+ {
+ 	dbg("%s", __func__);
+ 
+@@ -853,7 +853,7 @@ static struct usb_serial_driver keyspan_pda_device = {
+ 	.tiocmget =		keyspan_pda_tiocmget,
+ 	.tiocmset =		keyspan_pda_tiocmset,
+ 	.attach =		keyspan_pda_startup,
+-	.shutdown =		keyspan_pda_shutdown,
++	.release =		keyspan_pda_release,
+ };
+ 
+ 
+diff --git a/drivers/usb/serial/kl5kusb105.c b/drivers/usb/serial/kl5kusb105.c
+index fcd9082..272a94f 100644
+--- a/drivers/usb/serial/kl5kusb105.c
++++ b/drivers/usb/serial/kl5kusb105.c
+@@ -73,7 +73,8 @@ static int debug;
+  * Function prototypes
+  */
+ static int  klsi_105_startup(struct usb_serial *serial);
+-static void klsi_105_shutdown(struct usb_serial *serial);
++static void klsi_105_disconnect(struct usb_serial *serial);
++static void klsi_105_release(struct usb_serial *serial);
+ static int  klsi_105_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void klsi_105_close(struct tty_struct *tty,
+@@ -132,7 +133,8 @@ static struct usb_serial_driver kl5kusb105d_device = {
+ 	.tiocmget =          klsi_105_tiocmget,
+ 	.tiocmset =          klsi_105_tiocmset,
+ 	.attach =	     klsi_105_startup,
+-	.shutdown =	     klsi_105_shutdown,
++	.disconnect =	     klsi_105_disconnect,
++	.release =	     klsi_105_release,
+ 	.throttle =	     klsi_105_throttle,
+ 	.unthrottle =	     klsi_105_unthrottle,
+ };
+@@ -316,7 +318,7 @@ err_cleanup:
+ } /* klsi_105_startup */
+ 
+ 
+-static void klsi_105_shutdown(struct usb_serial *serial)
++static void klsi_105_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+ 
+@@ -326,33 +328,36 @@ static void klsi_105_shutdown(struct usb_serial *serial)
+ 	for (i = 0; i < serial->num_ports; ++i) {
+ 		struct klsi_105_private *priv =
+ 				usb_get_serial_port_data(serial->port[i]);
+-		unsigned long flags;
+ 
+ 		if (priv) {
+ 			/* kill our write urb pool */
+ 			int j;
+ 			struct urb **write_urbs = priv->write_urb_pool;
+-			spin_lock_irqsave(&priv->lock, flags);
+ 
+ 			for (j = 0; j < NUM_URBS; j++) {
+ 				if (write_urbs[j]) {
+-					/* FIXME - uncomment the following
+-					 * usb_kill_urb call when the host
+-					 * controllers get fixed to set
+-					 * urb->dev = NULL after the urb is
+-					 * finished.  Otherwise this call
+-					 * oopses. */
+-					/* usb_kill_urb(write_urbs[j]); */
+-					kfree(write_urbs[j]->transfer_buffer);
++					usb_kill_urb(write_urbs[j]);
+ 					usb_free_urb(write_urbs[j]);
+ 				}
+ 			}
+-			spin_unlock_irqrestore(&priv->lock, flags);
+-			kfree(priv);
+-			usb_set_serial_port_data(serial->port[i], NULL);
+ 		}
+ 	}
+-} /* klsi_105_shutdown */
++} /* klsi_105_disconnect */
++
++
++static void klsi_105_release(struct usb_serial *serial)
++{
++	int i;
++
++	dbg("%s", __func__);
++
++	for (i = 0; i < serial->num_ports; ++i) {
++		struct klsi_105_private *priv =
++				usb_get_serial_port_data(serial->port[i]);
++
++		kfree(priv);
++	}
++} /* klsi_105_release */
+ 
+ static int  klsi_105_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp)
+diff --git a/drivers/usb/serial/kobil_sct.c b/drivers/usb/serial/kobil_sct.c
+index c148544..d88368c 100644
+--- a/drivers/usb/serial/kobil_sct.c
++++ b/drivers/usb/serial/kobil_sct.c
+@@ -69,7 +69,7 @@ static int debug;
+ 
+ /* Function prototypes */
+ static int  kobil_startup(struct usb_serial *serial);
+-static void kobil_shutdown(struct usb_serial *serial);
++static void kobil_release(struct usb_serial *serial);
+ static int  kobil_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void kobil_close(struct tty_struct *tty, struct usb_serial_port *port,
+@@ -118,7 +118,7 @@ static struct usb_serial_driver kobil_device = {
+ 	.id_table =		id_table,
+ 	.num_ports =		1,
+ 	.attach =		kobil_startup,
+-	.shutdown =		kobil_shutdown,
++	.release =		kobil_release,
+ 	.ioctl =		kobil_ioctl,
+ 	.set_termios =		kobil_set_termios,
+ 	.tiocmget =		kobil_tiocmget,
+@@ -202,17 +202,13 @@ static int kobil_startup(struct usb_serial *serial)
+ }
+ 
+ 
+-static void kobil_shutdown(struct usb_serial *serial)
++static void kobil_release(struct usb_serial *serial)
+ {
+ 	int i;
+ 	dbg("%s - port %d", __func__, serial->port[0]->number);
+ 
+-	for (i = 0; i < serial->num_ports; ++i) {
+-		while (serial->port[i]->port.count > 0)
+-			kobil_close(NULL, serial->port[i], NULL);
++	for (i = 0; i < serial->num_ports; ++i)
+ 		kfree(usb_get_serial_port_data(serial->port[i]));
+-		usb_set_serial_port_data(serial->port[i], NULL);
+-	}
+ }
+ 
+ 
+diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c
+index 82930a7..08ba8e6 100644
+--- a/drivers/usb/serial/mct_u232.c
++++ b/drivers/usb/serial/mct_u232.c
+@@ -92,7 +92,7 @@ static int debug;
+  * Function prototypes
+  */
+ static int  mct_u232_startup(struct usb_serial *serial);
+-static void mct_u232_shutdown(struct usb_serial *serial);
++static void mct_u232_release(struct usb_serial *serial);
+ static int  mct_u232_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void mct_u232_close(struct tty_struct *tty,
+@@ -148,7 +148,7 @@ static struct usb_serial_driver mct_u232_device = {
+ 	.tiocmget =	     mct_u232_tiocmget,
+ 	.tiocmset =	     mct_u232_tiocmset,
+ 	.attach =	     mct_u232_startup,
+-	.shutdown =	     mct_u232_shutdown,
++	.release =	     mct_u232_release,
+ };
+ 
+ 
+@@ -406,7 +406,7 @@ static int mct_u232_startup(struct usb_serial *serial)
+ } /* mct_u232_startup */
+ 
+ 
+-static void mct_u232_shutdown(struct usb_serial *serial)
++static void mct_u232_release(struct usb_serial *serial)
+ {
+ 	struct mct_u232_private *priv;
+ 	int i;
+@@ -416,12 +416,9 @@ static void mct_u232_shutdown(struct usb_serial *serial)
+ 	for (i = 0; i < serial->num_ports; ++i) {
+ 		/* My special items, the standard routines free my urbs */
+ 		priv = usb_get_serial_port_data(serial->port[i]);
+-		if (priv) {
+-			usb_set_serial_port_data(serial->port[i], NULL);
+-			kfree(priv);
+-		}
++		kfree(priv);
+ 	}
+-} /* mct_u232_shutdown */
++} /* mct_u232_release */
+ 
+ static int  mct_u232_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp)
+diff --git a/drivers/usb/serial/mos7720.c b/drivers/usb/serial/mos7720.c
+index 24e3b5d..e0137ec 100644
+--- a/drivers/usb/serial/mos7720.c
++++ b/drivers/usb/serial/mos7720.c
+@@ -1522,19 +1522,16 @@ static int mos7720_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void mos7720_shutdown(struct usb_serial *serial)
++static void mos7720_release(struct usb_serial *serial)
+ {
+ 	int i;
+ 
+ 	/* free private structure allocated for serial port */
+-	for (i = 0; i < serial->num_ports; ++i) {
++	for (i = 0; i < serial->num_ports; ++i)
+ 		kfree(usb_get_serial_port_data(serial->port[i]));
+-		usb_set_serial_port_data(serial->port[i], NULL);
+-	}
+ 
+ 	/* free private structure allocated for serial device */
+ 	kfree(usb_get_serial_data(serial));
+-	usb_set_serial_data(serial, NULL);
+ }
+ 
+ static struct usb_driver usb_driver = {
+@@ -1559,7 +1556,7 @@ static struct usb_serial_driver moschip7720_2port_driver = {
+ 	.throttle		= mos7720_throttle,
+ 	.unthrottle		= mos7720_unthrottle,
+ 	.attach			= mos7720_startup,
+-	.shutdown		= mos7720_shutdown,
++	.release		= mos7720_release,
+ 	.ioctl			= mos7720_ioctl,
+ 	.set_termios		= mos7720_set_termios,
+ 	.write			= mos7720_write,
+diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c
+index 84fb1dc..3d30268 100644
+--- a/drivers/usb/serial/mos7840.c
++++ b/drivers/usb/serial/mos7840.c
+@@ -2673,16 +2673,16 @@ error:
+ }
+ 
+ /****************************************************************************
+- * mos7840_shutdown
++ * mos7840_disconnect
+  *	This function is called whenever the device is removed from the usb bus.
+  ****************************************************************************/
+ 
+-static void mos7840_shutdown(struct usb_serial *serial)
++static void mos7840_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+ 	unsigned long flags;
+ 	struct moschip_port *mos7840_port;
+-	dbg("%s \n", " shutdown :entering..........");
++	dbg("%s \n", " disconnect :entering..........");
+ 
+ 	if (!serial) {
+ 		dbg("%s", "Invalid Handler \n");
+@@ -2702,11 +2702,42 @@ static void mos7840_shutdown(struct usb_serial *serial)
+ 			mos7840_port->zombie = 1;
+ 			spin_unlock_irqrestore(&mos7840_port->pool_lock, flags);
+ 			usb_kill_urb(mos7840_port->control_urb);
++		}
++	}
++
++	dbg("%s", "Thank u :: ");
++
++}
++
++/****************************************************************************
++ * mos7840_release
++ *	This function is called when the usb_serial structure is freed.
++ ****************************************************************************/
++
++static void mos7840_release(struct usb_serial *serial)
++{
++	int i;
++	struct moschip_port *mos7840_port;
++	dbg("%s", " release :entering..........");
++
++	if (!serial) {
++		dbg("%s", "Invalid Handler");
++		return;
++	}
++
++	/* check for the ports to be closed,close the ports and disconnect */
++
++	/* free private structure allocated for serial port  *
++	 * stop reads and writes on all ports                */
++
++	for (i = 0; i < serial->num_ports; ++i) {
++		mos7840_port = mos7840_get_port_private(serial->port[i]);
++		dbg("mos7840_port %d = %p", i, mos7840_port);
++		if (mos7840_port) {
+ 			kfree(mos7840_port->ctrl_buf);
+ 			kfree(mos7840_port->dr);
+ 			kfree(mos7840_port);
+ 		}
+-		mos7840_set_port_private(serial->port[i], NULL);
+ 	}
+ 
+ 	dbg("%s\n", "Thank u :: ");
+@@ -2747,7 +2778,8 @@ static struct usb_serial_driver moschip7840_4port_device = {
+ 	.tiocmget = mos7840_tiocmget,
+ 	.tiocmset = mos7840_tiocmset,
+ 	.attach = mos7840_startup,
+-	.shutdown = mos7840_shutdown,
++	.disconnect = mos7840_disconnect,
++	.release = mos7840_release,
+ 	.read_bulk_callback = mos7840_bulk_in_callback,
+ 	.read_int_callback = mos7840_interrupt_callback,
+ };
+diff --git a/drivers/usb/serial/omninet.c b/drivers/usb/serial/omninet.c
+index df65397..65fb5c6 100644
+--- a/drivers/usb/serial/omninet.c
++++ b/drivers/usb/serial/omninet.c
+@@ -73,7 +73,8 @@ static void omninet_write_bulk_callback(struct urb *urb);
+ static int  omninet_write(struct tty_struct *tty, struct usb_serial_port *port,
+ 				const unsigned char *buf, int count);
+ static int  omninet_write_room(struct tty_struct *tty);
+-static void omninet_shutdown(struct usb_serial *serial);
++static void omninet_disconnect(struct usb_serial *serial);
++static void omninet_release(struct usb_serial *serial);
+ static int omninet_attach(struct usb_serial *serial);
+ 
+ static struct usb_device_id id_table[] = {
+@@ -109,7 +110,8 @@ static struct usb_serial_driver zyxel_omninet_device = {
+ 	.write_room =		omninet_write_room,
+ 	.read_bulk_callback =	omninet_read_bulk_callback,
+ 	.write_bulk_callback =	omninet_write_bulk_callback,
+-	.shutdown =		omninet_shutdown,
++	.disconnect =		omninet_disconnect,
++	.release =		omninet_release,
+ };
+ 
+ 
+@@ -347,13 +349,22 @@ static void omninet_write_bulk_callback(struct urb *urb)
+ }
+ 
+ 
+-static void omninet_shutdown(struct usb_serial *serial)
++static void omninet_disconnect(struct usb_serial *serial)
+ {
+ 	struct usb_serial_port *wport = serial->port[1];
+-	struct usb_serial_port *port = serial->port[0];
++
+ 	dbg("%s", __func__);
+ 
+ 	usb_kill_urb(wport->write_urb);
++}
++
++
++static void omninet_release(struct usb_serial *serial)
++{
++	struct usb_serial_port *port = serial->port[0];
++
++	dbg("%s", __func__);
++
+ 	kfree(usb_get_serial_port_data(port));
+ }
+ 
+diff --git a/drivers/usb/serial/opticon.c b/drivers/usb/serial/opticon.c
+index b500ad1..1e99ae0 100644
+--- a/drivers/usb/serial/opticon.c
++++ b/drivers/usb/serial/opticon.c
+@@ -464,7 +464,7 @@ error:
+ 	return retval;
+ }
+ 
+-static void opticon_shutdown(struct usb_serial *serial)
++static void opticon_disconnect(struct usb_serial *serial)
+ {
+ 	struct opticon_private *priv = usb_get_serial_data(serial);
+ 
+@@ -472,9 +472,16 @@ static void opticon_shutdown(struct usb_serial *serial)
+ 
+ 	usb_kill_urb(priv->bulk_read_urb);
+ 	usb_free_urb(priv->bulk_read_urb);
++}
++
++static void opticon_release(struct usb_serial *serial)
++{
++	struct opticon_private *priv = usb_get_serial_data(serial);
++
++	dbg("%s", __func__);
++
+ 	kfree(priv->bulk_in_buffer);
+ 	kfree(priv);
+-	usb_set_serial_data(serial, NULL);
+ }
+ 
+ static int opticon_suspend(struct usb_interface *intf, pm_message_t message)
+@@ -525,7 +532,8 @@ static struct usb_serial_driver opticon_device = {
+ 	.close =		opticon_close,
+ 	.write =		opticon_write,
+ 	.write_room = 		opticon_write_room,
+-	.shutdown =		opticon_shutdown,
++	.disconnect =		opticon_disconnect,
++	.release =		opticon_release,
+ 	.throttle = 		opticon_throttle,
+ 	.unthrottle =		opticon_unthrottle,
+ 	.ioctl =		opticon_ioctl,
+diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
+index 7817b82..ab3d883 100644
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -48,7 +48,8 @@ static int  option_open(struct tty_struct *tty, struct usb_serial_port *port,
+ static void option_close(struct tty_struct *tty, struct usb_serial_port *port,
+ 							struct file *filp);
+ static int  option_startup(struct usb_serial *serial);
+-static void option_shutdown(struct usb_serial *serial);
++static void option_disconnect(struct usb_serial *serial);
++static void option_release(struct usb_serial *serial);
+ static int  option_write_room(struct tty_struct *tty);
+ 
+ static void option_instat_callback(struct urb *urb);
+@@ -558,7 +559,8 @@ static struct usb_serial_driver option_1port_device = {
+ 	.tiocmget          = option_tiocmget,
+ 	.tiocmset          = option_tiocmset,
+ 	.attach            = option_startup,
+-	.shutdown          = option_shutdown,
++	.disconnect        = option_disconnect,
++	.release           = option_release,
+ 	.read_int_callback = option_instat_callback,
+ 	.suspend           = option_suspend,
+ 	.resume            = option_resume,
+@@ -1129,7 +1131,14 @@ static void stop_read_write_urbs(struct usb_serial *serial)
+ 	}
+ }
+ 
+-static void option_shutdown(struct usb_serial *serial)
++static void option_disconnect(struct usb_serial *serial)
++{
++	dbg("%s", __func__);
++
++	stop_read_write_urbs(serial);
++}
++
++static void option_release(struct usb_serial *serial)
+ {
+ 	int i, j;
+ 	struct usb_serial_port *port;
+@@ -1137,8 +1146,6 @@ static void option_shutdown(struct usb_serial *serial)
+ 
+ 	dbg("%s", __func__);
+ 
+-	stop_read_write_urbs(serial);
+-
+ 	/* Now free them */
+ 	for (i = 0; i < serial->num_ports; ++i) {
+ 		port = serial->port[i];
+diff --git a/drivers/usb/serial/oti6858.c b/drivers/usb/serial/oti6858.c
+index ba551f0..f7388ef 100644
+--- a/drivers/usb/serial/oti6858.c
++++ b/drivers/usb/serial/oti6858.c
+@@ -160,7 +160,7 @@ static int oti6858_tiocmget(struct tty_struct *tty, struct file *file);
+ static int oti6858_tiocmset(struct tty_struct *tty, struct file *file,
+ 				unsigned int set, unsigned int clear);
+ static int oti6858_startup(struct usb_serial *serial);
+-static void oti6858_shutdown(struct usb_serial *serial);
++static void oti6858_release(struct usb_serial *serial);
+ 
+ /* functions operating on buffers */
+ static struct oti6858_buf *oti6858_buf_alloc(unsigned int size);
+@@ -195,7 +195,7 @@ static struct usb_serial_driver oti6858_device = {
+ 	.write_room =		oti6858_write_room,
+ 	.chars_in_buffer =	oti6858_chars_in_buffer,
+ 	.attach =		oti6858_startup,
+-	.shutdown =		oti6858_shutdown,
++	.release =		oti6858_release,
+ };
+ 
+ struct oti6858_private {
+@@ -829,7 +829,7 @@ static int oti6858_ioctl(struct tty_struct *tty, struct file *file,
+ }
+ 
+ 
+-static void oti6858_shutdown(struct usb_serial *serial)
++static void oti6858_release(struct usb_serial *serial)
+ {
+ 	struct oti6858_private *priv;
+ 	int i;
+@@ -841,7 +841,6 @@ static void oti6858_shutdown(struct usb_serial *serial)
+ 		if (priv) {
+ 			oti6858_buf_free(priv->buf);
+ 			kfree(priv);
+-			usb_set_serial_port_data(serial->port[i], NULL);
+ 		}
+ 	}
+ }
+diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
+index 751a533..4cf1ed1 100644
+--- a/drivers/usb/serial/pl2303.c
++++ b/drivers/usb/serial/pl2303.c
+@@ -897,7 +897,7 @@ static void pl2303_break_ctl(struct tty_struct *tty, int break_state)
+ 		dbg("%s - error sending break = %d", __func__, result);
+ }
+ 
+-static void pl2303_shutdown(struct usb_serial *serial)
++static void pl2303_release(struct usb_serial *serial)
+ {
+ 	int i;
+ 	struct pl2303_private *priv;
+@@ -909,7 +909,6 @@ static void pl2303_shutdown(struct usb_serial *serial)
+ 		if (priv) {
+ 			pl2303_buf_free(priv->buf);
+ 			kfree(priv);
+-			usb_set_serial_port_data(serial->port[i], NULL);
+ 		}
+ 	}
+ }
+@@ -1137,7 +1136,7 @@ static struct usb_serial_driver pl2303_device = {
+ 	.write_room =		pl2303_write_room,
+ 	.chars_in_buffer =	pl2303_chars_in_buffer,
+ 	.attach =		pl2303_startup,
+-	.shutdown =		pl2303_shutdown,
++	.release =		pl2303_release,
+ };
+ 
+ static int __init pl2303_init(void)
+diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
+index 913225c..5a26ed8 100644
+--- a/drivers/usb/serial/sierra.c
++++ b/drivers/usb/serial/sierra.c
+@@ -699,7 +699,7 @@ static int sierra_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void sierra_shutdown(struct usb_serial *serial)
++static void sierra_disconnect(struct usb_serial *serial)
+ {
+ 	int i, j;
+ 	struct usb_serial_port *port;
+@@ -718,10 +718,29 @@ static void sierra_shutdown(struct usb_serial *serial)
+ 		for (j = 0; j < N_IN_URB; j++) {
+ 			usb_kill_urb(portdata->in_urbs[j]);
+ 			usb_free_urb(portdata->in_urbs[j]);
+-			kfree(portdata->in_buffer[j]);
+ 		}
++	}
++}
++
++static void sierra_release(struct usb_serial *serial)
++{
++	int i, j;
++	struct usb_serial_port *port;
++	struct sierra_port_private *portdata;
++
++	dev_dbg(&serial->dev->dev, "%s\n", __func__);
++
++	for (i = 0; i < serial->num_ports; ++i) {
++		port = serial->port[i];
++		if (!port)
++			continue;
++		portdata = usb_get_serial_port_data(port);
++		if (!portdata)
++			continue;
++
++		for (j = 0; j < N_IN_URB; j++)
++			kfree(portdata->in_buffer[j]);
+ 		kfree(portdata);
+-		usb_set_serial_port_data(port, NULL);
+ 	}
+ }
+ 
+@@ -743,7 +762,8 @@ static struct usb_serial_driver sierra_device = {
+ 	.tiocmget          = sierra_tiocmget,
+ 	.tiocmset          = sierra_tiocmset,
+ 	.attach            = sierra_startup,
+-	.shutdown          = sierra_shutdown,
++	.disconnect        = sierra_disconnect,
++	.release           = sierra_release,
+ 	.read_int_callback = sierra_instat_callback,
+ };
+ 
+diff --git a/drivers/usb/serial/spcp8x5.c b/drivers/usb/serial/spcp8x5.c
+index 5e7528c..f5403b0 100644
+--- a/drivers/usb/serial/spcp8x5.c
++++ b/drivers/usb/serial/spcp8x5.c
+@@ -356,7 +356,7 @@ cleanup:
+ }
+ 
+ /* call when the device plug out. free all the memory alloced by probe */
+-static void spcp8x5_shutdown(struct usb_serial *serial)
++static void spcp8x5_release(struct usb_serial *serial)
+ {
+ 	int i;
+ 	struct spcp8x5_private *priv;
+@@ -366,7 +366,6 @@ static void spcp8x5_shutdown(struct usb_serial *serial)
+ 		if (priv) {
+ 			free_ringbuf(priv->buf);
+ 			kfree(priv);
+-			usb_set_serial_port_data(serial->port[i] , NULL);
+ 		}
+ 	}
+ }
+@@ -1043,7 +1042,7 @@ static struct usb_serial_driver spcp8x5_device = {
+ 	.write_bulk_callback	= spcp8x5_write_bulk_callback,
+ 	.chars_in_buffer 	= spcp8x5_chars_in_buffer,
+ 	.attach 		= spcp8x5_startup,
+-	.shutdown 		= spcp8x5_shutdown,
++	.release 		= spcp8x5_release,
+ };
+ 
+ static int __init spcp8x5_init(void)
+diff --git a/drivers/usb/serial/symbolserial.c b/drivers/usb/serial/symbolserial.c
+index 69879e4..b7a6bc8 100644
+--- a/drivers/usb/serial/symbolserial.c
++++ b/drivers/usb/serial/symbolserial.c
+@@ -268,7 +268,7 @@ error:
+ 	return retval;
+ }
+ 
+-static void symbol_shutdown(struct usb_serial *serial)
++static void symbol_disconnect(struct usb_serial *serial)
+ {
+ 	struct symbol_private *priv = usb_get_serial_data(serial);
+ 
+@@ -276,9 +276,16 @@ static void symbol_shutdown(struct usb_serial *serial)
+ 
+ 	usb_kill_urb(priv->int_urb);
+ 	usb_free_urb(priv->int_urb);
++}
++
++static void symbol_release(struct usb_serial *serial)
++{
++	struct symbol_private *priv = usb_get_serial_data(serial);
++
++	dbg("%s", __func__);
++
+ 	kfree(priv->int_buffer);
+ 	kfree(priv);
+-	usb_set_serial_data(serial, NULL);
+ }
+ 
+ static struct usb_driver symbol_driver = {
+@@ -300,7 +307,8 @@ static struct usb_serial_driver symbol_device = {
+ 	.attach =		symbol_startup,
+ 	.open =			symbol_open,
+ 	.close =		symbol_close,
+-	.shutdown =		symbol_shutdown,
++	.disconnect =		symbol_disconnect,
++	.release =		symbol_release,
+ 	.throttle = 		symbol_throttle,
+ 	.unthrottle =		symbol_unthrottle,
+ };
+diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
+index 0a64bac..ef5f756 100644
+--- a/drivers/usb/serial/ti_usb_3410_5052.c
++++ b/drivers/usb/serial/ti_usb_3410_5052.c
+@@ -97,7 +97,7 @@ struct ti_device {
+ /* Function Declarations */
+ 
+ static int ti_startup(struct usb_serial *serial);
+-static void ti_shutdown(struct usb_serial *serial);
++static void ti_release(struct usb_serial *serial);
+ static int ti_open(struct tty_struct *tty, struct usb_serial_port *port,
+ 		struct file *file);
+ static void ti_close(struct tty_struct *tty, struct usb_serial_port *port,
+@@ -231,7 +231,7 @@ static struct usb_serial_driver ti_1port_device = {
+ 	.id_table		= ti_id_table_3410,
+ 	.num_ports		= 1,
+ 	.attach			= ti_startup,
+-	.shutdown		= ti_shutdown,
++	.release		= ti_release,
+ 	.open			= ti_open,
+ 	.close			= ti_close,
+ 	.write			= ti_write,
+@@ -259,7 +259,7 @@ static struct usb_serial_driver ti_2port_device = {
+ 	.id_table		= ti_id_table_5052,
+ 	.num_ports		= 2,
+ 	.attach			= ti_startup,
+-	.shutdown		= ti_shutdown,
++	.release		= ti_release,
+ 	.open			= ti_open,
+ 	.close			= ti_close,
+ 	.write			= ti_write,
+@@ -474,7 +474,7 @@ free_tdev:
+ }
+ 
+ 
+-static void ti_shutdown(struct usb_serial *serial)
++static void ti_release(struct usb_serial *serial)
+ {
+ 	int i;
+ 	struct ti_device *tdev = usb_get_serial_data(serial);
+@@ -487,12 +487,10 @@ static void ti_shutdown(struct usb_serial *serial)
+ 		if (tport) {
+ 			ti_buf_free(tport->tp_write_buf);
+ 			kfree(tport);
+-			usb_set_serial_port_data(serial->port[i], NULL);
+ 		}
+ 	}
+ 
+ 	kfree(tdev);
+-	usb_set_serial_data(serial, NULL);
+ }
+ 
+ 
+diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
+index f331e2b..131fc74 100644
+--- a/drivers/usb/serial/usb-serial.c
++++ b/drivers/usb/serial/usb-serial.c
+@@ -141,6 +141,14 @@ static void destroy_serial(struct kref *kref)
+ 	if (serial->minor != SERIAL_TTY_NO_MINOR)
+ 		return_serial(serial);
+ 
++	serial->type->release(serial);
++
++	for (i = 0; i < serial->num_ports; ++i) {
++		port = serial->port[i];
++		if (port)
++			put_device(&port->dev);
++	}
++
+ 	/* If this is a "fake" port, we have to clean it up here, as it will
+ 	 * not get cleaned up in port_release() as it was never registered with
+ 	 * the driver core */
+@@ -148,9 +156,8 @@ static void destroy_serial(struct kref *kref)
+ 		for (i = serial->num_ports;
+ 					i < serial->num_port_pointers; ++i) {
+ 			port = serial->port[i];
+-			if (!port)
+-				continue;
+-			port_free(port);
++			if (port)
++				port_free(port);
+ 		}
+ 	}
+ 
+@@ -1062,10 +1069,6 @@ void usb_serial_disconnect(struct usb_interface *interface)
+ 	serial->disconnected = 1;
+ 	mutex_unlock(&serial->disc_mutex);
+ 
+-	/* Unfortunately, many of the sub-drivers expect the port structures
+-	 * to exist when their shutdown method is called, so we have to go
+-	 * through this awkward two-step unregistration procedure.
+-	 */
+ 	for (i = 0; i < serial->num_ports; ++i) {
+ 		port = serial->port[i];
+ 		if (port) {
+@@ -1079,14 +1082,7 @@ void usb_serial_disconnect(struct usb_interface *interface)
+ 			device_del(&port->dev);
+ 		}
+ 	}
+-	serial->type->shutdown(serial);
+-	for (i = 0; i < serial->num_ports; ++i) {
+-		port = serial->port[i];
+-		if (port) {
+-			put_device(&port->dev);
+-			serial->port[i] = NULL;
+-		}
+-	}
++	serial->type->disconnect(serial);
+ 
+ 	/* let the last holder of this object
+ 	 * cause it to be cleaned up */
+@@ -1262,7 +1258,8 @@ static void fixup_generic(struct usb_serial_driver *device)
+ 	set_to_generic_if_null(device, chars_in_buffer);
+ 	set_to_generic_if_null(device, read_bulk_callback);
+ 	set_to_generic_if_null(device, write_bulk_callback);
+-	set_to_generic_if_null(device, shutdown);
++	set_to_generic_if_null(device, disconnect);
++	set_to_generic_if_null(device, release);
+ }
+ 
+ int usb_serial_register(struct usb_serial_driver *driver)
+diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c
+index 5ac414b..e50f397 100644
+--- a/drivers/usb/serial/visor.c
++++ b/drivers/usb/serial/visor.c
+@@ -48,7 +48,7 @@ static void visor_unthrottle(struct tty_struct *tty);
+ static int  visor_probe(struct usb_serial *serial,
+ 					const struct usb_device_id *id);
+ static int  visor_calc_num_ports(struct usb_serial *serial);
+-static void visor_shutdown(struct usb_serial *serial);
++static void visor_release(struct usb_serial *serial);
+ static void visor_write_bulk_callback(struct urb *urb);
+ static void visor_read_bulk_callback(struct urb *urb);
+ static void visor_read_int_callback(struct urb *urb);
+@@ -203,7 +203,7 @@ static struct usb_serial_driver handspring_device = {
+ 	.attach =		treo_attach,
+ 	.probe =		visor_probe,
+ 	.calc_num_ports =	visor_calc_num_ports,
+-	.shutdown =		visor_shutdown,
++	.release =		visor_release,
+ 	.write =		visor_write,
+ 	.write_room =		visor_write_room,
+ 	.write_bulk_callback =	visor_write_bulk_callback,
+@@ -228,7 +228,7 @@ static struct usb_serial_driver clie_5_device = {
+ 	.attach =		clie_5_attach,
+ 	.probe =		visor_probe,
+ 	.calc_num_ports =	visor_calc_num_ports,
+-	.shutdown =		visor_shutdown,
++	.release =		visor_release,
+ 	.write =		visor_write,
+ 	.write_room =		visor_write_room,
+ 	.write_bulk_callback =	visor_write_bulk_callback,
+@@ -920,7 +920,7 @@ static int clie_5_attach(struct usb_serial *serial)
+ 	return generic_startup(serial);
+ }
+ 
+-static void visor_shutdown(struct usb_serial *serial)
++static void visor_release(struct usb_serial *serial)
+ {
+ 	struct visor_private *priv;
+ 	int i;
+@@ -929,10 +929,7 @@ static void visor_shutdown(struct usb_serial *serial)
+ 
+ 	for (i = 0; i < serial->num_ports; i++) {
+ 		priv = usb_get_serial_port_data(serial->port[i]);
+-		if (priv) {
+-			usb_set_serial_port_data(serial->port[i], NULL);
+-			kfree(priv);
+-		}
++		kfree(priv);
+ 	}
+ }
+ 
+diff --git a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c
+index 5335d32..319ec07 100644
+--- a/drivers/usb/serial/whiteheat.c
++++ b/drivers/usb/serial/whiteheat.c
+@@ -144,7 +144,7 @@ static int  whiteheat_firmware_attach(struct usb_serial *serial);
+ 
+ /* function prototypes for the Connect Tech WhiteHEAT serial converter */
+ static int  whiteheat_attach(struct usb_serial *serial);
+-static void whiteheat_shutdown(struct usb_serial *serial);
++static void whiteheat_release(struct usb_serial *serial);
+ static int  whiteheat_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void whiteheat_close(struct tty_struct *tty,
+@@ -190,7 +190,7 @@ static struct usb_serial_driver whiteheat_device = {
+ 	.id_table =		id_table_std,
+ 	.num_ports =		4,
+ 	.attach =		whiteheat_attach,
+-	.shutdown =		whiteheat_shutdown,
++	.release =		whiteheat_release,
+ 	.open =			whiteheat_open,
+ 	.close =		whiteheat_close,
+ 	.write =		whiteheat_write,
+@@ -618,7 +618,7 @@ no_command_buffer:
+ }
+ 
+ 
+-static void whiteheat_shutdown(struct usb_serial *serial)
++static void whiteheat_release(struct usb_serial *serial)
+ {
+ 	struct usb_serial_port *command_port;
+ 	struct usb_serial_port *port;
+diff --git a/fs/Kconfig b/fs/Kconfig
+index 9f7270f..ab3ccc1 100644
+--- a/fs/Kconfig
++++ b/fs/Kconfig
+@@ -39,6 +39,13 @@ config FS_POSIX_ACL
+ 	bool
+ 	default n
+ 
++source "fs/xfs/Kconfig"
++source "fs/gfs2/Kconfig"
++source "fs/ocfs2/Kconfig"
++source "fs/btrfs/Kconfig"
++
++endif # BLOCK
++
+ config FILE_LOCKING
+ 	bool "Enable POSIX file locking API" if EMBEDDED
+ 	default y
+@@ -47,13 +54,6 @@ config FILE_LOCKING
+           for filesystems like NFS and for the flock() system
+           call. Disabling this option saves about 11k.
+ 
+-source "fs/xfs/Kconfig"
+-source "fs/gfs2/Kconfig"
+-source "fs/ocfs2/Kconfig"
+-source "fs/btrfs/Kconfig"
+-
+-endif # BLOCK
+-
+ source "fs/notify/Kconfig"
+ 
+ source "fs/quota/Kconfig"
+diff --git a/fs/cifs/file.c b/fs/cifs/file.c
+index 302ea15..bd44591 100644
+--- a/fs/cifs/file.c
++++ b/fs/cifs/file.c
+@@ -491,9 +491,9 @@ static int cifs_reopen_file(struct file *file, bool can_flush)
+ 		return -EBADF;
+ 
+ 	xid = GetXid();
+-	mutex_unlock(&pCifsFile->fh_mutex);
++	mutex_lock(&pCifsFile->fh_mutex);
+ 	if (!pCifsFile->invalidHandle) {
+-		mutex_lock(&pCifsFile->fh_mutex);
++		mutex_unlock(&pCifsFile->fh_mutex);
+ 		FreeXid(xid);
+ 		return 0;
+ 	}
+@@ -524,7 +524,7 @@ static int cifs_reopen_file(struct file *file, bool can_flush)
+ 	if (full_path == NULL) {
+ 		rc = -ENOMEM;
+ reopen_error_exit:
+-		mutex_lock(&pCifsFile->fh_mutex);
++		mutex_unlock(&pCifsFile->fh_mutex);
+ 		FreeXid(xid);
+ 		return rc;
+ 	}
+@@ -566,14 +566,14 @@ reopen_error_exit:
+ 			 cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
+ 				CIFS_MOUNT_MAP_SPECIAL_CHR);
+ 	if (rc) {
+-		mutex_lock(&pCifsFile->fh_mutex);
++		mutex_unlock(&pCifsFile->fh_mutex);
+ 		cFYI(1, ("cifs_open returned 0x%x", rc));
+ 		cFYI(1, ("oplock: %d", oplock));
+ 	} else {
+ reopen_success:
+ 		pCifsFile->netfid = netfid;
+ 		pCifsFile->invalidHandle = false;
+-		mutex_lock(&pCifsFile->fh_mutex);
++		mutex_unlock(&pCifsFile->fh_mutex);
+ 		pCifsInode = CIFS_I(inode);
+ 		if (pCifsInode) {
+ 			if (can_flush) {
+diff --git a/fs/eventpoll.c b/fs/eventpoll.c
+index 5458e80..085c5c0 100644
+--- a/fs/eventpoll.c
++++ b/fs/eventpoll.c
+@@ -98,7 +98,7 @@ struct epoll_filefd {
+ struct nested_call_node {
+ 	struct list_head llink;
+ 	void *cookie;
+-	int cpu;
++	void *ctx;
+ };
+ 
+ /*
+@@ -317,17 +317,17 @@ static void ep_nested_calls_init(struct nested_calls *ncalls)
+  * @nproc: Nested call core function pointer.
+  * @priv: Opaque data to be passed to the @nproc callback.
+  * @cookie: Cookie to be used to identify this nested call.
++ * @ctx: This instance context.
+  *
+  * Returns: Returns the code returned by the @nproc callback, or -1 if
+  *          the maximum recursion limit has been exceeded.
+  */
+ static int ep_call_nested(struct nested_calls *ncalls, int max_nests,
+ 			  int (*nproc)(void *, void *, int), void *priv,
+-			  void *cookie)
++			  void *cookie, void *ctx)
+ {
+ 	int error, call_nests = 0;
+ 	unsigned long flags;
+-	int this_cpu = get_cpu();
+ 	struct list_head *lsthead = &ncalls->tasks_call_list;
+ 	struct nested_call_node *tncur;
+ 	struct nested_call_node tnode;
+@@ -340,7 +340,7 @@ static int ep_call_nested(struct nested_calls *ncalls, int max_nests,
+ 	 * very much limited.
+ 	 */
+ 	list_for_each_entry(tncur, lsthead, llink) {
+-		if (tncur->cpu == this_cpu &&
++		if (tncur->ctx == ctx &&
+ 		    (tncur->cookie == cookie || ++call_nests > max_nests)) {
+ 			/*
+ 			 * Ops ... loop detected or maximum nest level reached.
+@@ -352,7 +352,7 @@ static int ep_call_nested(struct nested_calls *ncalls, int max_nests,
+ 	}
+ 
+ 	/* Add the current task and cookie to the list */
+-	tnode.cpu = this_cpu;
++	tnode.ctx = ctx;
+ 	tnode.cookie = cookie;
+ 	list_add(&tnode.llink, lsthead);
+ 
+@@ -364,10 +364,9 @@ static int ep_call_nested(struct nested_calls *ncalls, int max_nests,
+ 	/* Remove the current task from the list */
+ 	spin_lock_irqsave(&ncalls->lock, flags);
+ 	list_del(&tnode.llink);
+- out_unlock:
++out_unlock:
+ 	spin_unlock_irqrestore(&ncalls->lock, flags);
+ 
+-	put_cpu();
+ 	return error;
+ }
+ 
+@@ -408,8 +407,12 @@ static int ep_poll_wakeup_proc(void *priv, void *cookie, int call_nests)
+  */
+ static void ep_poll_safewake(wait_queue_head_t *wq)
+ {
++	int this_cpu = get_cpu();
++
+ 	ep_call_nested(&poll_safewake_ncalls, EP_MAX_NESTS,
+-		       ep_poll_wakeup_proc, NULL, wq);
++		       ep_poll_wakeup_proc, NULL, wq, (void *) (long) this_cpu);
++
++	put_cpu();
+ }
+ 
+ /*
+@@ -663,7 +666,7 @@ static unsigned int ep_eventpoll_poll(struct file *file, poll_table *wait)
+ 	 * could re-enter here.
+ 	 */
+ 	pollflags = ep_call_nested(&poll_readywalk_ncalls, EP_MAX_NESTS,
+-				   ep_poll_readyevents_proc, ep, ep);
++				   ep_poll_readyevents_proc, ep, ep, current);
+ 
+ 	return pollflags != -1 ? pollflags : 0;
+ }
+diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
+index 91013ff..39083e4 100644
+--- a/fs/fs-writeback.c
++++ b/fs/fs-writeback.c
+@@ -289,7 +289,6 @@ __sync_single_inode(struct inode *inode, struct writeback_control *wbc)
+ 	int ret;
+ 
+ 	BUG_ON(inode->i_state & I_SYNC);
+-	WARN_ON(inode->i_state & I_NEW);
+ 
+ 	/* Set I_SYNC, reset I_DIRTY */
+ 	dirty = inode->i_state & I_DIRTY;
+@@ -314,7 +313,6 @@ __sync_single_inode(struct inode *inode, struct writeback_control *wbc)
+ 	}
+ 
+ 	spin_lock(&inode_lock);
+-	WARN_ON(inode->i_state & I_NEW);
+ 	inode->i_state &= ~I_SYNC;
+ 	if (!(inode->i_state & I_FREEING)) {
+ 		if (!(inode->i_state & I_DIRTY) &&
+diff --git a/fs/jfs/jfs_extent.c b/fs/jfs/jfs_extent.c
+index bbbd5f2..41d6045 100644
+--- a/fs/jfs/jfs_extent.c
++++ b/fs/jfs/jfs_extent.c
+@@ -391,6 +391,7 @@ int extHint(struct inode *ip, s64 offset, xad_t * xp)
+ 		}
+ 		XADaddress(xp, xaddr);
+ 		XADlength(xp, xlen);
++		XADoffset(xp, prev);
+ 		/*
+ 		 * only preserve the abnr flag within the xad flags
+ 		 * of the returned hint.
+diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
+index 79ff8d9..1a0f632 100644
+--- a/fs/ocfs2/super.c
++++ b/fs/ocfs2/super.c
+@@ -232,20 +232,24 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len)
+ 			"%10s => Opts: 0x%lX  AtimeQuanta: %u\n", "Mount",
+ 			osb->s_mount_opt, osb->s_atime_quantum);
+ 
+-	out += snprintf(buf + out, len - out,
+-			"%10s => Stack: %s  Name: %*s  Version: %d.%d\n",
+-			"Cluster",
+-			(*osb->osb_cluster_stack == '\0' ?
+-			 "o2cb" : osb->osb_cluster_stack),
+-			cconn->cc_namelen, cconn->cc_name,
+-			cconn->cc_version.pv_major, cconn->cc_version.pv_minor);
++	if (cconn) {
++		out += snprintf(buf + out, len - out,
++				"%10s => Stack: %s  Name: %*s  "
++				"Version: %d.%d\n", "Cluster",
++				(*osb->osb_cluster_stack == '\0' ?
++				 "o2cb" : osb->osb_cluster_stack),
++				cconn->cc_namelen, cconn->cc_name,
++				cconn->cc_version.pv_major,
++				cconn->cc_version.pv_minor);
++	}
+ 
+ 	spin_lock(&osb->dc_task_lock);
+ 	out += snprintf(buf + out, len - out,
+ 			"%10s => Pid: %d  Count: %lu  WakeSeq: %lu  "
+ 			"WorkSeq: %lu\n", "DownCnvt",
+-			task_pid_nr(osb->dc_task), osb->blocked_lock_count,
+-			osb->dc_wake_sequence, osb->dc_work_sequence);
++			(osb->dc_task ?  task_pid_nr(osb->dc_task) : -1),
++			osb->blocked_lock_count, osb->dc_wake_sequence,
++			osb->dc_work_sequence);
+ 	spin_unlock(&osb->dc_task_lock);
+ 
+ 	spin_lock(&osb->osb_lock);
+@@ -265,14 +269,15 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len)
+ 
+ 	out += snprintf(buf + out, len - out,
+ 			"%10s => Pid: %d  Interval: %lu  Needs: %d\n", "Commit",
+-			task_pid_nr(osb->commit_task), osb->osb_commit_interval,
++			(osb->commit_task ? task_pid_nr(osb->commit_task) : -1),
++			osb->osb_commit_interval,
+ 			atomic_read(&osb->needs_checkpoint));
+ 
+ 	out += snprintf(buf + out, len - out,
+-			"%10s => State: %d  NumTxns: %d  TxnId: %lu\n",
++			"%10s => State: %d  TxnId: %lu  NumTxns: %d\n",
+ 			"Journal", osb->journal->j_state,
+-			atomic_read(&osb->journal->j_num_trans),
+-			osb->journal->j_trans_id);
++			osb->journal->j_trans_id,
++			atomic_read(&osb->journal->j_num_trans));
+ 
+ 	out += snprintf(buf + out, len - out,
+ 			"%10s => GlobalAllocs: %d  LocalAllocs: %d  "
+@@ -300,7 +305,6 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len)
+ 
+ 	out += snprintf(buf + out, len - out, "%10s => %3s  %10s\n",
+ 			"Slots", "Num", "RecoGen");
+-
+ 	for (i = 0; i < osb->max_slots; ++i) {
+ 		out += snprintf(buf + out, len - out,
+ 				"%10s  %c %3d  %10d\n",
+diff --git a/fs/ramfs/inode.c b/fs/ramfs/inode.c
+index 3a6b193..0ff7566 100644
+--- a/fs/ramfs/inode.c
++++ b/fs/ramfs/inode.c
+@@ -202,9 +202,12 @@ static int ramfs_parse_options(char *data, struct ramfs_mount_opts *opts)
+ 				return -EINVAL;
+ 			opts->mode = option & S_IALLUGO;
+ 			break;
+-		default:
+-			printk(KERN_ERR "ramfs: bad mount option: %s\n", p);
+-			return -EINVAL;
++		/*
++		 * We might like to report bad mount options here;
++		 * but traditionally ramfs has ignored all mount options,
++		 * and as it is used as a !CONFIG_SHMEM simple substitute
++		 * for tmpfs, better continue to ignore other mount options.
++		 */
+ 		}
+ 	}
+ 
+diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
+index ca7c600..b5cba98 100644
+--- a/fs/xfs/xfs_bmap.c
++++ b/fs/xfs/xfs_bmap.c
+@@ -6085,6 +6085,7 @@ xfs_getbmap(
+ 			break;
+ 	}
+ 
++	kmem_free(out);
+ 	return error;
+ }
+ 
+diff --git a/include/linux/firmware-map.h b/include/linux/firmware-map.h
+index cca686b..875451f 100644
+--- a/include/linux/firmware-map.h
++++ b/include/linux/firmware-map.h
+@@ -24,21 +24,17 @@
+  */
+ #ifdef CONFIG_FIRMWARE_MEMMAP
+ 
+-int firmware_map_add(resource_size_t start, resource_size_t end,
+-		     const char *type);
+-int firmware_map_add_early(resource_size_t start, resource_size_t end,
+-			   const char *type);
++int firmware_map_add(u64 start, u64 end, const char *type);
++int firmware_map_add_early(u64 start, u64 end, const char *type);
+ 
+ #else /* CONFIG_FIRMWARE_MEMMAP */
+ 
+-static inline int firmware_map_add(resource_size_t start, resource_size_t end,
+-				   const char *type)
++static inline int firmware_map_add(u64 start, u64 end, const char *type)
+ {
+ 	return 0;
+ }
+ 
+-static inline int firmware_map_add_early(resource_size_t start,
+-					 resource_size_t end, const char *type)
++static inline int firmware_map_add_early(u64 start, u64 end, const char *type)
+ {
+ 	return 0;
+ }
+diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
+index 894a56e..5eed8fa 100644
+--- a/include/linux/kvm_host.h
++++ b/include/linux/kvm_host.h
+@@ -125,6 +125,7 @@ struct kvm_kernel_irq_routing_entry {
+ struct kvm {
+ 	struct mutex lock; /* protects the vcpus array and APIC accesses */
+ 	spinlock_t mmu_lock;
++	spinlock_t requests_lock;
+ 	struct rw_semaphore slots_lock;
+ 	struct mm_struct *mm; /* userspace tied to this vm */
+ 	int nmemslots;
+diff --git a/include/linux/mlx4/qp.h b/include/linux/mlx4/qp.h
+index bf8f119..9f29d86 100644
+--- a/include/linux/mlx4/qp.h
++++ b/include/linux/mlx4/qp.h
+@@ -165,6 +165,7 @@ enum {
+ 	MLX4_WQE_CTRL_IP_CSUM		= 1 << 4,
+ 	MLX4_WQE_CTRL_TCP_UDP_CSUM	= 1 << 5,
+ 	MLX4_WQE_CTRL_INS_VLAN		= 1 << 6,
++	MLX4_WQE_CTRL_STRONG_ORDER	= 1 << 7,
+ };
+ 
+ struct mlx4_wqe_ctrl_seg {
+diff --git a/include/linux/serial.h b/include/linux/serial.h
+index 9136cc5..e5bb75a 100644
+--- a/include/linux/serial.h
++++ b/include/linux/serial.h
+@@ -96,54 +96,76 @@ struct serial_uart_config {
+ 
+ /*
+  * Definitions for async_struct (and serial_struct) flags field
++ *
++ * Define ASYNCB_* for convenient use with {test,set,clear}_bit.
+  */
+-#define ASYNC_HUP_NOTIFY 0x0001 /* Notify getty on hangups and closes 
+-				   on the callout port */
+-#define ASYNC_FOURPORT  0x0002	/* Set OU1, OUT2 per AST Fourport settings */
+-#define ASYNC_SAK	0x0004	/* Secure Attention Key (Orange book) */
+-#define ASYNC_SPLIT_TERMIOS 0x0008 /* Separate termios for dialin/callout */
+-
+-#define ASYNC_SPD_MASK	0x1030
+-#define ASYNC_SPD_HI	0x0010	/* Use 56000 instead of 38400 bps */
+-
+-#define ASYNC_SPD_VHI	0x0020  /* Use 115200 instead of 38400 bps */
+-#define ASYNC_SPD_CUST	0x0030  /* Use user-specified divisor */
+-
+-#define ASYNC_SKIP_TEST	0x0040 /* Skip UART test during autoconfiguration */
+-#define ASYNC_AUTO_IRQ  0x0080 /* Do automatic IRQ during autoconfiguration */
+-#define ASYNC_SESSION_LOCKOUT 0x0100 /* Lock out cua opens based on session */
+-#define ASYNC_PGRP_LOCKOUT    0x0200 /* Lock out cua opens based on pgrp */
+-#define ASYNC_CALLOUT_NOHUP   0x0400 /* Don't do hangups for cua device */
+-
+-#define ASYNC_HARDPPS_CD	0x0800	/* Call hardpps when CD goes high  */
+-
+-#define ASYNC_SPD_SHI	0x1000	/* Use 230400 instead of 38400 bps */
+-#define ASYNC_SPD_WARP	0x1010	/* Use 460800 instead of 38400 bps */
+-
+-#define ASYNC_LOW_LATENCY 0x2000 /* Request low latency behaviour */
+-
+-#define ASYNC_BUGGY_UART  0x4000 /* This is a buggy UART, skip some safety
+-				  * checks.  Note: can be dangerous! */
+-
+-#define ASYNC_AUTOPROBE	 0x8000 /* Port was autoprobed by PCI or PNP code */
+-
+-#define ASYNC_FLAGS	0x7FFF	/* Possible legal async flags */
+-#define ASYNC_USR_MASK	0x3430	/* Legal flags that non-privileged
+-				 * users can set or reset */
+-
+-/* Internal flags used only by kernel/chr_drv/serial.c */
+-#define ASYNC_INITIALIZED	0x80000000 /* Serial port was initialized */
+-#define ASYNC_NORMAL_ACTIVE	0x20000000 /* Normal device is active */
+-#define ASYNC_BOOT_AUTOCONF	0x10000000 /* Autoconfigure port on bootup */
+-#define ASYNC_CLOSING		0x08000000 /* Serial port is closing */
+-#define ASYNC_CTS_FLOW		0x04000000 /* Do CTS flow control */
+-#define ASYNC_CHECK_CD		0x02000000 /* i.e., CLOCAL */
+-#define ASYNC_SHARE_IRQ		0x01000000 /* for multifunction cards
+-					     --- no longer used */
+-#define ASYNC_CONS_FLOW		0x00800000 /* flow control for console  */
+-
+-#define ASYNC_BOOT_ONLYMCA	0x00400000 /* Probe only if MCA bus */
+-#define ASYNC_INTERNAL_FLAGS	0xFFC00000 /* Internal flags */
++#define ASYNCB_HUP_NOTIFY	 0 /* Notify getty on hangups and closes
++				    * on the callout port */
++#define ASYNCB_FOURPORT		 1 /* Set OU1, OUT2 per AST Fourport settings */
++#define ASYNCB_SAK		 2 /* Secure Attention Key (Orange book) */
++#define ASYNCB_SPLIT_TERMIOS	 3 /* Separate termios for dialin/callout */
++#define ASYNCB_SPD_HI		 4 /* Use 56000 instead of 38400 bps */
++#define ASYNCB_SPD_VHI		 5 /* Use 115200 instead of 38400 bps */
++#define ASYNCB_SKIP_TEST	 6 /* Skip UART test during autoconfiguration */
++#define ASYNCB_AUTO_IRQ		 7 /* Do automatic IRQ during
++				    * autoconfiguration */
++#define ASYNCB_SESSION_LOCKOUT	 8 /* Lock out cua opens based on session */
++#define ASYNCB_PGRP_LOCKOUT	 9 /* Lock out cua opens based on pgrp */
++#define ASYNCB_CALLOUT_NOHUP	10 /* Don't do hangups for cua device */
++#define ASYNCB_HARDPPS_CD	11 /* Call hardpps when CD goes high  */
++#define ASYNCB_SPD_SHI		12 /* Use 230400 instead of 38400 bps */
++#define ASYNCB_LOW_LATENCY	13 /* Request low latency behaviour */
++#define ASYNCB_BUGGY_UART	14 /* This is a buggy UART, skip some safety
++				    * checks.  Note: can be dangerous! */
++#define ASYNCB_AUTOPROBE	15 /* Port was autoprobed by PCI or PNP code */
++#define ASYNCB_LAST_USER	15
++
++/* Internal flags used only by kernel */
++#define ASYNCB_INITIALIZED	31 /* Serial port was initialized */
++#define ASYNCB_NORMAL_ACTIVE	29 /* Normal device is active */
++#define ASYNCB_BOOT_AUTOCONF	28 /* Autoconfigure port on bootup */
++#define ASYNCB_CLOSING		27 /* Serial port is closing */
++#define ASYNCB_CTS_FLOW		26 /* Do CTS flow control */
++#define ASYNCB_CHECK_CD		25 /* i.e., CLOCAL */
++#define ASYNCB_SHARE_IRQ	24 /* for multifunction cards, no longer used */
++#define ASYNCB_CONS_FLOW	23 /* flow control for console  */
++#define ASYNCB_BOOT_ONLYMCA	22 /* Probe only if MCA bus */
++#define ASYNCB_FIRST_KERNEL	22
++
++#define ASYNC_HUP_NOTIFY	(1U << ASYNCB_HUP_NOTIFY)
++#define ASYNC_FOURPORT		(1U << ASYNCB_FOURPORT)
++#define ASYNC_SAK		(1U << ASYNCB_SAK)
++#define ASYNC_SPLIT_TERMIOS	(1U << ASYNCB_SPLIT_TERMIOS)
++#define ASYNC_SPD_HI		(1U << ASYNCB_SPD_HI)
++#define ASYNC_SPD_VHI		(1U << ASYNCB_SPD_VHI)
++#define ASYNC_SKIP_TEST		(1U << ASYNCB_SKIP_TEST)
++#define ASYNC_AUTO_IRQ		(1U << ASYNCB_AUTO_IRQ)
++#define ASYNC_SESSION_LOCKOUT	(1U << ASYNCB_SESSION_LOCKOUT)
++#define ASYNC_PGRP_LOCKOUT	(1U << ASYNCB_PGRP_LOCKOUT)
++#define ASYNC_CALLOUT_NOHUP	(1U << ASYNCB_CALLOUT_NOHUP)
++#define ASYNC_HARDPPS_CD	(1U << ASYNCB_HARDPPS_CD)
++#define ASYNC_SPD_SHI		(1U << ASYNCB_SPD_SHI)
++#define ASYNC_LOW_LATENCY	(1U << ASYNCB_LOW_LATENCY)
++#define ASYNC_BUGGY_UART	(1U << ASYNCB_BUGGY_UART)
++#define ASYNC_AUTOPROBE		(1U << ASYNCB_AUTOPROBE)
++
++#define ASYNC_FLAGS		((1U << ASYNCB_LAST_USER) - 1)
++#define ASYNC_USR_MASK		(ASYNC_SPD_HI|ASYNC_SPD_VHI| \
++		ASYNC_CALLOUT_NOHUP|ASYNC_SPD_SHI|ASYNC_LOW_LATENCY)
++#define ASYNC_SPD_CUST		(ASYNC_SPD_HI|ASYNC_SPD_VHI)
++#define ASYNC_SPD_WARP		(ASYNC_SPD_HI|ASYNC_SPD_SHI)
++#define ASYNC_SPD_MASK		(ASYNC_SPD_HI|ASYNC_SPD_VHI|ASYNC_SPD_SHI)
++
++#define ASYNC_INITIALIZED	(1U << ASYNCB_INITIALIZED)
++#define ASYNC_NORMAL_ACTIVE	(1U << ASYNCB_NORMAL_ACTIVE)
++#define ASYNC_BOOT_AUTOCONF	(1U << ASYNCB_BOOT_AUTOCONF)
++#define ASYNC_CLOSING		(1U << ASYNCB_CLOSING)
++#define ASYNC_CTS_FLOW		(1U << ASYNCB_CTS_FLOW)
++#define ASYNC_CHECK_CD		(1U << ASYNCB_CHECK_CD)
++#define ASYNC_SHARE_IRQ		(1U << ASYNCB_SHARE_IRQ)
++#define ASYNC_CONS_FLOW		(1U << ASYNCB_CONS_FLOW)
++#define ASYNC_BOOT_ONLYMCA	(1U << ASYNCB_BOOT_ONLYMCA)
++#define ASYNC_INTERNAL_FLAGS	(~((1U << ASYNCB_FIRST_KERNEL) - 1))
+ 
+ /*
+  * Multiport serial configuration structure --- external structure
+diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h
+index 625e9e4..6d6c3b8 100644
+--- a/include/linux/usb/serial.h
++++ b/include/linux/usb/serial.h
+@@ -181,8 +181,10 @@ static inline void usb_set_serial_data(struct usb_serial *serial, void *data)
+  *	This will be called when the struct usb_serial structure is fully set
+  *	set up.  Do any local initialization of the device, or any private
+  *	memory structure allocation at this point in time.
+- * @shutdown: pointer to the driver's shutdown function.  This will be
+- *	called when the device is removed from the system.
++ * @disconnect: pointer to the driver's disconnect function.  This will be
++ *	called when the device is unplugged or unbound from the driver.
++ * @release: pointer to the driver's release function.  This will be called
++ *	when the usb_serial data structure is about to be destroyed.
+  * @usb_driver: pointer to the struct usb_driver that controls this
+  *	device.  This is necessary to allow dynamic ids to be added to
+  *	the driver from sysfs.
+@@ -212,7 +214,8 @@ struct usb_serial_driver {
+ 	int (*attach)(struct usb_serial *serial);
+ 	int (*calc_num_ports) (struct usb_serial *serial);
+ 
+-	void (*shutdown)(struct usb_serial *serial);
++	void (*disconnect)(struct usb_serial *serial);
++	void (*release)(struct usb_serial *serial);
+ 
+ 	int (*port_probe)(struct usb_serial_port *port);
+ 	int (*port_remove)(struct usb_serial_port *port);
+@@ -292,7 +295,8 @@ extern void usb_serial_generic_read_bulk_callback(struct urb *urb);
+ extern void usb_serial_generic_write_bulk_callback(struct urb *urb);
+ extern void usb_serial_generic_throttle(struct tty_struct *tty);
+ extern void usb_serial_generic_unthrottle(struct tty_struct *tty);
+-extern void usb_serial_generic_shutdown(struct usb_serial *serial);
++extern void usb_serial_generic_disconnect(struct usb_serial *serial);
++extern void usb_serial_generic_release(struct usb_serial *serial);
+ extern int usb_serial_generic_register(int debug);
+ extern void usb_serial_generic_deregister(void);
+ 
+diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
+index 524cd1b..cfdd3ca 100644
+--- a/include/linux/vmstat.h
++++ b/include/linux/vmstat.h
+@@ -36,6 +36,9 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
+ 		FOR_ALL_ZONES(PGSTEAL),
+ 		FOR_ALL_ZONES(PGSCAN_KSWAPD),
+ 		FOR_ALL_ZONES(PGSCAN_DIRECT),
++#ifdef CONFIG_NUMA
++		PGSCAN_ZONE_RECLAIM_FAILED,
++#endif
+ 		PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL,
+ 		PAGEOUTRUN, ALLOCSTALL, PGROTATED,
+ #ifdef CONFIG_HUGETLB_PAGE
+diff --git a/include/net/x25.h b/include/net/x25.h
+index fc3f03d..2cda040 100644
+--- a/include/net/x25.h
++++ b/include/net/x25.h
+@@ -187,7 +187,7 @@ extern int  x25_addr_ntoa(unsigned char *, struct x25_address *,
+ extern int  x25_addr_aton(unsigned char *, struct x25_address *,
+ 			  struct x25_address *);
+ extern struct sock *x25_find_socket(unsigned int, struct x25_neigh *);
+-extern void x25_destroy_socket(struct sock *);
++extern void x25_destroy_socket_from_timer(struct sock *);
+ extern int  x25_rx_call_request(struct sk_buff *, struct x25_neigh *, unsigned int);
+ extern void x25_kill_by_neigh(struct x25_neigh *);
+ 
+diff --git a/kernel/acct.c b/kernel/acct.c
+index 7afa315..9f33910 100644
+--- a/kernel/acct.c
++++ b/kernel/acct.c
+@@ -215,6 +215,7 @@ static void acct_file_reopen(struct bsd_acct_struct *acct, struct file *file,
+ static int acct_on(char *name)
+ {
+ 	struct file *file;
++	struct vfsmount *mnt;
+ 	int error;
+ 	struct pid_namespace *ns;
+ 	struct bsd_acct_struct *acct = NULL;
+@@ -256,11 +257,12 @@ static int acct_on(char *name)
+ 		acct = NULL;
+ 	}
+ 
+-	mnt_pin(file->f_path.mnt);
++	mnt = file->f_path.mnt;
++	mnt_pin(mnt);
+ 	acct_file_reopen(ns->bacct, file, ns);
+ 	spin_unlock(&acct_lock);
+ 
+-	mntput(file->f_path.mnt); /* it's pinned, now give up active reference */
++	mntput(mnt); /* it's pinned, now give up active reference */
+ 	kfree(acct);
+ 
+ 	return 0;
+diff --git a/kernel/trace/trace_functions.c b/kernel/trace/trace_functions.c
+index c9a0b7d..90f1347 100644
+--- a/kernel/trace/trace_functions.c
++++ b/kernel/trace/trace_functions.c
+@@ -193,9 +193,11 @@ static void tracing_start_function_trace(void)
+ static void tracing_stop_function_trace(void)
+ {
+ 	ftrace_function_enabled = 0;
+-	/* OK if they are not registered */
+-	unregister_ftrace_function(&trace_stack_ops);
+-	unregister_ftrace_function(&trace_ops);
++
++	if (func_flags.val & TRACE_FUNC_OPT_STACK)
++		unregister_ftrace_function(&trace_stack_ops);
++	else
++		unregister_ftrace_function(&trace_ops);
+ }
+ 
+ static int func_set_flag(u32 old_flags, u32 bit, int set)
+diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
+index 6cdcf38..3be4b7c 100644
+--- a/lib/Kconfig.debug
++++ b/lib/Kconfig.debug
+@@ -440,7 +440,7 @@ config LOCKDEP
+ 	bool
+ 	depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
+ 	select STACKTRACE
+-	select FRAME_POINTER if !X86 && !MIPS && !PPC && !ARM_UNWIND && !S390
++	select FRAME_POINTER if !MIPS && !PPC && !ARM_UNWIND && !S390
+ 	select KALLSYMS
+ 	select KALLSYMS_ALL
+ 
+diff --git a/lib/dma-debug.c b/lib/dma-debug.c
+index 69da09a..2b16536 100644
+--- a/lib/dma-debug.c
++++ b/lib/dma-debug.c
+@@ -185,15 +185,50 @@ static void put_hash_bucket(struct hash_bucket *bucket,
+ static struct dma_debug_entry *hash_bucket_find(struct hash_bucket *bucket,
+ 						struct dma_debug_entry *ref)
+ {
+-	struct dma_debug_entry *entry;
++	struct dma_debug_entry *entry, *ret = NULL;
++	int matches = 0, match_lvl, last_lvl = 0;
+ 
+ 	list_for_each_entry(entry, &bucket->list, list) {
+-		if ((entry->dev_addr == ref->dev_addr) &&
+-		    (entry->dev == ref->dev))
++		if ((entry->dev_addr != ref->dev_addr) ||
++		    (entry->dev != ref->dev))
++			continue;
++
++		/*
++		 * Some drivers map the same physical address multiple
++		 * times. Without a hardware IOMMU this results in the
++		 * same device addresses being put into the dma-debug
++		 * hash multiple times too. This can result in false
++		 * positives being reported. Therfore we implement a
++		 * best-fit algorithm here which returns the entry from
++		 * the hash which fits best to the reference value
++		 * instead of the first-fit.
++		 */
++		matches += 1;
++		match_lvl = 0;
++		entry->size      == ref->size      ? ++match_lvl : match_lvl;
++		entry->type      == ref->type      ? ++match_lvl : match_lvl;
++		entry->direction == ref->direction ? ++match_lvl : match_lvl;
++
++		if (match_lvl == 3) {
++			/* perfect-fit - return the result */
+ 			return entry;
++		} else if (match_lvl > last_lvl) {
++			/*
++			 * We found an entry that fits better then the
++			 * previous one
++			 */
++			last_lvl = match_lvl;
++			ret      = entry;
++		}
+ 	}
+ 
+-	return NULL;
++	/*
++	 * If we have multiple matches but no perfect-fit, just return
++	 * NULL.
++	 */
++	ret = (matches == 1) ? ret : NULL;
++
++	return ret;
+ }
+ 
+ /*
+diff --git a/lib/genalloc.c b/lib/genalloc.c
+index f6d276d..eed2bdb 100644
+--- a/lib/genalloc.c
++++ b/lib/genalloc.c
+@@ -85,7 +85,6 @@ void gen_pool_destroy(struct gen_pool *pool)
+ 	int bit, end_bit;
+ 
+ 
+-	write_lock(&pool->lock);
+ 	list_for_each_safe(_chunk, _next_chunk, &pool->chunks) {
+ 		chunk = list_entry(_chunk, struct gen_pool_chunk, next_chunk);
+ 		list_del(&chunk->next_chunk);
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index fe753ec..f820383 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -2812,7 +2812,7 @@ bad:
+ 		if (dzone == zone)
+ 			break;
+ 		kfree(zone_pcp(dzone, cpu));
+-		zone_pcp(dzone, cpu) = NULL;
++		zone_pcp(dzone, cpu) = &boot_pageset[cpu];
+ 	}
+ 	return -ENOMEM;
+ }
+@@ -2827,7 +2827,7 @@ static inline void free_zone_pagesets(int cpu)
+ 		/* Free per_cpu_pageset if it is slab allocated */
+ 		if (pset != &boot_pageset[cpu])
+ 			kfree(pset);
+-		zone_pcp(zone, cpu) = NULL;
++		zone_pcp(zone, cpu) = &boot_pageset[cpu];
+ 	}
+ }
+ 
+@@ -4501,7 +4501,7 @@ int percpu_pagelist_fraction_sysctl_handler(ctl_table *table, int write,
+ 	ret = proc_dointvec_minmax(table, write, file, buffer, length, ppos);
+ 	if (!write || (ret == -EINVAL))
+ 		return ret;
+-	for_each_zone(zone) {
++	for_each_populated_zone(zone) {
+ 		for_each_online_cpu(cpu) {
+ 			unsigned long  high;
+ 			high = zone->present_pages / percpu_pagelist_fraction;
+diff --git a/mm/vmscan.c b/mm/vmscan.c
+index d254306..2500b01 100644
+--- a/mm/vmscan.c
++++ b/mm/vmscan.c
+@@ -2290,6 +2290,48 @@ int sysctl_min_unmapped_ratio = 1;
+  */
+ int sysctl_min_slab_ratio = 5;
+ 
++static inline unsigned long zone_unmapped_file_pages(struct zone *zone)
++{
++	unsigned long file_mapped = zone_page_state(zone, NR_FILE_MAPPED);
++	unsigned long file_lru = zone_page_state(zone, NR_INACTIVE_FILE) +
++		zone_page_state(zone, NR_ACTIVE_FILE);
++
++	/*
++	 * It's possible for there to be more file mapped pages than
++	 * accounted for by the pages on the file LRU lists because
++	 * tmpfs pages accounted for as ANON can also be FILE_MAPPED
++	 */
++	return (file_lru > file_mapped) ? (file_lru - file_mapped) : 0;
++}
++
++/* Work out how many page cache pages we can reclaim in this reclaim_mode */
++static long zone_pagecache_reclaimable(struct zone *zone)
++{
++	long nr_pagecache_reclaimable;
++	long delta = 0;
++
++	/*
++	 * If RECLAIM_SWAP is set, then all file pages are considered
++	 * potentially reclaimable. Otherwise, we have to worry about
++	 * pages like swapcache and zone_unmapped_file_pages() provides
++	 * a better estimate
++	 */
++	if (zone_reclaim_mode & RECLAIM_SWAP)
++		nr_pagecache_reclaimable = zone_page_state(zone, NR_FILE_PAGES);
++	else
++		nr_pagecache_reclaimable = zone_unmapped_file_pages(zone);
++
++	/* If we can't clean pages, remove dirty pages from consideration */
++	if (!(zone_reclaim_mode & RECLAIM_WRITE))
++		delta += zone_page_state(zone, NR_FILE_DIRTY);
++
++	/* Watch for any possible underflows due to delta */
++	if (unlikely(delta > nr_pagecache_reclaimable))
++		delta = nr_pagecache_reclaimable;
++
++	return nr_pagecache_reclaimable - delta;
++}
++
+ /*
+  * Try to free up some pages from this zone through reclaim.
+  */
+@@ -2324,9 +2366,7 @@ static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
+ 	reclaim_state.reclaimed_slab = 0;
+ 	p->reclaim_state = &reclaim_state;
+ 
+-	if (zone_page_state(zone, NR_FILE_PAGES) -
+-		zone_page_state(zone, NR_FILE_MAPPED) >
+-		zone->min_unmapped_pages) {
++	if (zone_pagecache_reclaimable(zone) > zone->min_unmapped_pages) {
+ 		/*
+ 		 * Free memory by calling shrink zone with increasing
+ 		 * priorities until we have enough memory freed.
+@@ -2384,10 +2424,8 @@ int zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
+ 	 * if less than a specified percentage of the zone is used by
+ 	 * unmapped file backed pages.
+ 	 */
+-	if (zone_page_state(zone, NR_FILE_PAGES) -
+-	    zone_page_state(zone, NR_FILE_MAPPED) <= zone->min_unmapped_pages
+-	    && zone_page_state(zone, NR_SLAB_RECLAIMABLE)
+-			<= zone->min_slab_pages)
++	if (zone_pagecache_reclaimable(zone) <= zone->min_unmapped_pages &&
++	    zone_page_state(zone, NR_SLAB_RECLAIMABLE) <= zone->min_slab_pages)
+ 		return 0;
+ 
+ 	if (zone_is_all_unreclaimable(zone))
+@@ -2414,6 +2452,9 @@ int zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
+ 	ret = __zone_reclaim(zone, gfp_mask, order);
+ 	zone_clear_flag(zone, ZONE_RECLAIM_LOCKED);
+ 
++	if (!ret)
++		count_vm_event(PGSCAN_ZONE_RECLAIM_FAILED);
++
+ 	return ret;
+ }
+ #endif
+diff --git a/mm/vmstat.c b/mm/vmstat.c
+index 74d66db..ddb360a 100644
+--- a/mm/vmstat.c
++++ b/mm/vmstat.c
+@@ -675,6 +675,9 @@ static const char * const vmstat_text[] = {
+ 	TEXTS_FOR_ZONES("pgscan_kswapd")
+ 	TEXTS_FOR_ZONES("pgscan_direct")
+ 
++#ifdef CONFIG_NUMA
++	"zone_reclaim_failed",
++#endif
+ 	"pginodesteal",
+ 	"slabs_scanned",
+ 	"kswapd_steal",
+diff --git a/net/ipv4/route.c b/net/ipv4/route.c
+index 28205e5..d777f84 100644
+--- a/net/ipv4/route.c
++++ b/net/ipv4/route.c
+@@ -1081,8 +1081,35 @@ restart:
+ 	now = jiffies;
+ 
+ 	if (!rt_caching(dev_net(rt->u.dst.dev))) {
+-		rt_drop(rt);
+-		return 0;
++		/*
++		 * If we're not caching, just tell the caller we
++		 * were successful and don't touch the route.  The
++		 * caller hold the sole reference to the cache entry, and
++		 * it will be released when the caller is done with it.
++		 * If we drop it here, the callers have no way to resolve routes
++		 * when we're not caching.  Instead, just point *rp at rt, so
++		 * the caller gets a single use out of the route
++		 * Note that we do rt_free on this new route entry, so that
++		 * once its refcount hits zero, we are still able to reap it
++		 * (Thanks Alexey)
++		 * Note also the rt_free uses call_rcu.  We don't actually
++		 * need rcu protection here, this is just our path to get
++		 * on the route gc list.
++		 */
++
++		if (rt->rt_type == RTN_UNICAST || rt->fl.iif == 0) {
++			int err = arp_bind_neighbour(&rt->u.dst);
++			if (err) {
++				if (net_ratelimit())
++					printk(KERN_WARNING
++					    "Neighbour table failure & not caching routes.\n");
++				rt_drop(rt);
++				return err;
++			}
++		}
++
++		rt_free(rt);
++		goto skip_hashing;
+ 	}
+ 
+ 	rthp = &rt_hash_table[hash].chain;
+@@ -1196,7 +1223,8 @@ restart:
+ #if RT_CACHE_DEBUG >= 2
+ 	if (rt->u.dst.rt_next) {
+ 		struct rtable *trt;
+-		printk(KERN_DEBUG "rt_cache @%02x: %pI4", hash, &rt->rt_dst);
++		printk(KERN_DEBUG "rt_cache @%02x: %pI4",
++		       hash, &rt->rt_dst);
+ 		for (trt = rt->u.dst.rt_next; trt; trt = trt->u.dst.rt_next)
+ 			printk(" . %pI4", &trt->rt_dst);
+ 		printk("\n");
+@@ -1210,6 +1238,8 @@ restart:
+ 	rcu_assign_pointer(rt_hash_table[hash].chain, rt);
+ 
+ 	spin_unlock_bh(rt_hash_lock_addr(hash));
++
++skip_hashing:
+ 	*rp = rt;
+ 	return 0;
+ }
+diff --git a/net/mac80211/rc80211_minstrel.c b/net/mac80211/rc80211_minstrel.c
+index d9233ec..2681dfa 100644
+--- a/net/mac80211/rc80211_minstrel.c
++++ b/net/mac80211/rc80211_minstrel.c
+@@ -216,7 +216,7 @@ minstrel_get_next_sample(struct minstrel_sta_info *mi)
+ 	unsigned int sample_ndx;
+ 	sample_ndx = SAMPLE_TBL(mi, mi->sample_idx, mi->sample_column);
+ 	mi->sample_idx++;
+-	if (mi->sample_idx > (mi->n_rates - 2)) {
++	if ((int) mi->sample_idx > (mi->n_rates - 2)) {
+ 		mi->sample_idx = 0;
+ 		mi->sample_column++;
+ 		if (mi->sample_column >= SAMPLE_COLUMNS)
+diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
+index 2456e4e..b759106 100644
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -2385,18 +2385,24 @@ static int nl80211_set_reg(struct sk_buff *skb, struct genl_info *info)
+ 			rem_reg_rules) {
+ 		num_rules++;
+ 		if (num_rules > NL80211_MAX_SUPP_REG_RULES)
+-			goto bad_reg;
++			return -EINVAL;
+ 	}
+ 
+-	if (!reg_is_valid_request(alpha2))
+-		return -EINVAL;
++	mutex_lock(&cfg80211_mutex);
++
++	if (!reg_is_valid_request(alpha2)) {
++		r = -EINVAL;
++		goto bad_reg;
++	}
+ 
+ 	size_of_regd = sizeof(struct ieee80211_regdomain) +
+ 		(num_rules * sizeof(struct ieee80211_reg_rule));
+ 
+ 	rd = kzalloc(size_of_regd, GFP_KERNEL);
+-	if (!rd)
+-		return -ENOMEM;
++	if (!rd) {
++		r = -ENOMEM;
++		goto bad_reg;
++	}
+ 
+ 	rd->n_reg_rules = num_rules;
+ 	rd->alpha2[0] = alpha2[0];
+@@ -2413,20 +2419,24 @@ static int nl80211_set_reg(struct sk_buff *skb, struct genl_info *info)
+ 
+ 		rule_idx++;
+ 
+-		if (rule_idx > NL80211_MAX_SUPP_REG_RULES)
++		if (rule_idx > NL80211_MAX_SUPP_REG_RULES) {
++			r = -EINVAL;
+ 			goto bad_reg;
++		}
+ 	}
+ 
+ 	BUG_ON(rule_idx != num_rules);
+ 
+-	mutex_lock(&cfg80211_mutex);
+ 	r = set_regdom(rd);
++
+ 	mutex_unlock(&cfg80211_mutex);
++
+ 	return r;
+ 
+  bad_reg:
++	mutex_unlock(&cfg80211_mutex);
+ 	kfree(rd);
+-	return -EINVAL;
++	return r;
+ }
+ 
+ static int nl80211_trigger_scan(struct sk_buff *skb, struct genl_info *info)
+diff --git a/net/wireless/reg.c b/net/wireless/reg.c
+index 487cb62..9765bc8 100644
+--- a/net/wireless/reg.c
++++ b/net/wireless/reg.c
+@@ -389,6 +389,8 @@ static int call_crda(const char *alpha2)
+ /* Used by nl80211 before kmalloc'ing our regulatory domain */
+ bool reg_is_valid_request(const char *alpha2)
+ {
++	assert_cfg80211_lock();
++
+ 	if (!last_request)
+ 		return false;
+ 
+@@ -2042,7 +2044,13 @@ static int __set_regdom(const struct ieee80211_regdomain *rd)
+ 	 * the country IE rd with what CRDA believes that country should have
+ 	 */
+ 
+-	BUG_ON(!country_ie_regdomain);
++	/*
++	 * Userspace could have sent two replies with only
++	 * one kernel request. By the second reply we would have
++	 * already processed and consumed the country_ie_regdomain.
++	 */
++	if (!country_ie_regdomain)
++		return -EALREADY;
+ 	BUG_ON(rd == country_ie_regdomain);
+ 
+ 	/*
+diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
+index ed80af8..c51f309 100644
+--- a/net/x25/af_x25.c
++++ b/net/x25/af_x25.c
+@@ -332,14 +332,14 @@ static unsigned int x25_new_lci(struct x25_neigh *nb)
+ /*
+  *	Deferred destroy.
+  */
+-void x25_destroy_socket(struct sock *);
++static void __x25_destroy_socket(struct sock *);
+ 
+ /*
+  *	handler for deferred kills.
+  */
+ static void x25_destroy_timer(unsigned long data)
+ {
+-	x25_destroy_socket((struct sock *)data);
++	x25_destroy_socket_from_timer((struct sock *)data);
+ }
+ 
+ /*
+@@ -349,12 +349,10 @@ static void x25_destroy_timer(unsigned long data)
+  *	will touch it and we are (fairly 8-) ) safe.
+  *	Not static as it's used by the timer
+  */
+-void x25_destroy_socket(struct sock *sk)
++static void __x25_destroy_socket(struct sock *sk)
+ {
+ 	struct sk_buff *skb;
+ 
+-	sock_hold(sk);
+-	lock_sock(sk);
+ 	x25_stop_heartbeat(sk);
+ 	x25_stop_timer(sk);
+ 
+@@ -385,7 +383,22 @@ void x25_destroy_socket(struct sock *sk)
+ 		/* drop last reference so sock_put will free */
+ 		__sock_put(sk);
+ 	}
++}
+ 
++void x25_destroy_socket_from_timer(struct sock *sk)
++{
++	sock_hold(sk);
++	bh_lock_sock(sk);
++	__x25_destroy_socket(sk);
++	bh_unlock_sock(sk);
++	sock_put(sk);
++}
++
++static void x25_destroy_socket(struct sock *sk)
++{
++	sock_hold(sk);
++	lock_sock(sk);
++	__x25_destroy_socket(sk);
+ 	release_sock(sk);
+ 	sock_put(sk);
+ }
+diff --git a/net/x25/x25_timer.c b/net/x25/x25_timer.c
+index d3e3e54..5c5db1a 100644
+--- a/net/x25/x25_timer.c
++++ b/net/x25/x25_timer.c
+@@ -113,7 +113,7 @@ static void x25_heartbeat_expiry(unsigned long param)
+ 			    (sk->sk_state == TCP_LISTEN &&
+ 			     sock_flag(sk, SOCK_DEAD))) {
+ 				bh_unlock_sock(sk);
+-				x25_destroy_socket(sk);
++				x25_destroy_socket_from_timer(sk);
+ 				return;
+ 			}
+ 			break;
+diff --git a/security/integrity/ima/ima_audit.c b/security/integrity/ima/ima_audit.c
+index 1e082bb..97a80fb 100644
+--- a/security/integrity/ima/ima_audit.c
++++ b/security/integrity/ima/ima_audit.c
+@@ -50,7 +50,7 @@ void integrity_audit_msg(int audit_msgno, struct inode *inode,
+ 
+ 	ab = audit_log_start(current->audit_context, GFP_KERNEL, audit_msgno);
+ 	audit_log_format(ab, "integrity: pid=%d uid=%u auid=%u ses=%u",
+-			 current->pid, current->cred->uid,
++			 current->pid, current_cred()->uid,
+ 			 audit_get_loginuid(current),
+ 			 audit_get_sessionid(current));
+ 	audit_log_task_context(ab);
+diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c
+index f4e7266..88407e5 100644
+--- a/security/integrity/ima/ima_main.c
++++ b/security/integrity/ima/ima_main.c
+@@ -128,10 +128,6 @@ static int get_path_measurement(struct ima_iint_cache *iint, struct file *file,
+ {
+ 	int rc = 0;
+ 
+-	if (IS_ERR(file)) {
+-		pr_info("%s dentry_open failed\n", filename);
+-		return rc;
+-	}
+ 	iint->opencount++;
+ 	iint->readcount++;
+ 
+@@ -196,7 +192,14 @@ int ima_path_check(struct path *path, int mask)
+ 		struct dentry *dentry = dget(path->dentry);
+ 		struct vfsmount *mnt = mntget(path->mnt);
+ 
+-		file = dentry_open(dentry, mnt, O_RDONLY, current->cred);
++		file = dentry_open(dentry, mnt, O_RDONLY | O_LARGEFILE,
++				   current_cred());
++		if (IS_ERR(file)) {
++			pr_info("%s dentry_open failed\n", dentry->d_name.name);
++			rc = PTR_ERR(file);
++			file = NULL;
++			goto out;
++		}
+ 		rc = get_path_measurement(iint, file, dentry->d_name.name);
+ 	}
+ out:
+diff --git a/sound/core/seq/seq_midi_event.c b/sound/core/seq/seq_midi_event.c
+index 8284f17..b5d6ea4 100644
+--- a/sound/core/seq/seq_midi_event.c
++++ b/sound/core/seq/seq_midi_event.c
+@@ -504,10 +504,10 @@ static int extra_decode_xrpn(struct snd_midi_event *dev, unsigned char *buf,
+ 	if (dev->nostat && count < 12)
+ 		return -ENOMEM;
+ 	cmd = MIDI_CMD_CONTROL|(ev->data.control.channel & 0x0f);
+-	bytes[0] = ev->data.control.param & 0x007f;
+-	bytes[1] = (ev->data.control.param & 0x3f80) >> 7;
+-	bytes[2] = ev->data.control.value & 0x007f;
+-	bytes[3] = (ev->data.control.value & 0x3f80) >> 7;
++	bytes[0] = (ev->data.control.param & 0x3f80) >> 7;
++	bytes[1] = ev->data.control.param & 0x007f;
++	bytes[2] = (ev->data.control.value & 0x3f80) >> 7;
++	bytes[3] = ev->data.control.value & 0x007f;
+ 	if (cmd != dev->lastcmd && !dev->nostat) {
+ 		if (count < 9)
+ 			return -ENOMEM;
+diff --git a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c
+index de83608..3ee0269 100644
+--- a/sound/isa/cmi8330.c
++++ b/sound/isa/cmi8330.c
+@@ -338,7 +338,7 @@ static int __devinit snd_cmi8330_pnp(int dev, struct snd_cmi8330 *acard,
+ 		return -EBUSY;
+ 
+ 	acard->mpu = pnp_request_card_device(card, id->devs[2].id, NULL);
+-	if (acard->play == NULL)
++	if (acard->mpu == NULL)
+ 		return -EBUSY;
+ 
+ 	pdev = acard->cap;
+diff --git a/sound/pci/ca0106/ca0106_mixer.c b/sound/pci/ca0106/ca0106_mixer.c
+index c111efe..f143f71 100644
+--- a/sound/pci/ca0106/ca0106_mixer.c
++++ b/sound/pci/ca0106/ca0106_mixer.c
+@@ -841,6 +841,9 @@ int __devinit snd_ca0106_mixer(struct snd_ca0106 *emu)
+ 					      snd_ca0106_master_db_scale);
+ 	if (!vmaster)
+ 		return -ENOMEM;
++	err = snd_ctl_add(card, vmaster);
++	if (err < 0)
++		return err;
+ 	add_slaves(card, vmaster, slave_vols);
+ 
+ 	if (emu->details->spi_dac == 1) {
+@@ -848,6 +851,9 @@ int __devinit snd_ca0106_mixer(struct snd_ca0106 *emu)
+ 						      NULL);
+ 		if (!vmaster)
+ 			return -ENOMEM;
++		err = snd_ctl_add(card, vmaster);
++		if (err < 0)
++			return err;
+ 		add_slaves(card, vmaster, slave_sws);
+ 	}
+         return 0;
+diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
+index 0fd258e..f09324a 100644
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -10915,6 +10915,7 @@ static struct snd_pci_quirk alc262_cfg_tbl[] = {
+ 	SND_PCI_QUIRK(0x104d, 0x8203, "Sony UX-90", ALC262_HIPPO),
+ 	SND_PCI_QUIRK(0x104d, 0x820f, "Sony ASSAMD", ALC262_SONY_ASSAMD),
+ 	SND_PCI_QUIRK(0x104d, 0x9016, "Sony VAIO", ALC262_AUTO), /* dig-only */
++	SND_PCI_QUIRK(0x104d, 0x9025, "Sony VAIO Z21MN", ALC262_TOSHIBA_S06),
+ 	SND_PCI_QUIRK_MASK(0x104d, 0xff00, 0x9000, "Sony VAIO",
+ 			   ALC262_SONY_ASSAMD),
+ 	SND_PCI_QUIRK(0x1179, 0x0001, "Toshiba dynabook SS RX1",
+@@ -11122,6 +11123,7 @@ static struct alc_config_preset alc262_presets[] = {
+ 		.capsrc_nids = alc262_dmic_capsrc_nids,
+ 		.dac_nids = alc262_dac_nids,
+ 		.adc_nids = alc262_dmic_adc_nids, /* ADC0 */
++		.num_adc_nids = 1, /* single ADC */
+ 		.dig_out_nid = ALC262_DIGOUT_NID,
+ 		.num_channel_mode = ARRAY_SIZE(alc262_modes),
+ 		.channel_mode = alc262_modes,
+diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
+index 173bebf..8aa5687 100644
+--- a/sound/pci/intel8x0.c
++++ b/sound/pci/intel8x0.c
+@@ -356,8 +356,6 @@ struct ichdev {
+         unsigned int position;
+ 	unsigned int pos_shift;
+ 	unsigned int last_pos;
+-	unsigned long last_pos_jiffies;
+-	unsigned int jiffy_to_bytes;
+         int frags;
+         int lvi;
+         int lvi_frag;
+@@ -844,7 +842,6 @@ static int snd_intel8x0_pcm_trigger(struct snd_pcm_substream *substream, int cmd
+ 	case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
+ 		val = ICH_IOCE | ICH_STARTBM;
+ 		ichdev->last_pos = ichdev->position;
+-		ichdev->last_pos_jiffies = jiffies;
+ 		break;
+ 	case SNDRV_PCM_TRIGGER_SUSPEND:
+ 		ichdev->suspended = 1;
+@@ -1048,7 +1045,6 @@ static int snd_intel8x0_pcm_prepare(struct snd_pcm_substream *substream)
+ 			ichdev->pos_shift = (runtime->sample_bits > 16) ? 2 : 1;
+ 	}
+ 	snd_intel8x0_setup_periods(chip, ichdev);
+-	ichdev->jiffy_to_bytes = (runtime->rate * 4 * ichdev->pos_shift) / HZ;
+ 	return 0;
+ }
+ 
+@@ -1073,19 +1069,23 @@ static snd_pcm_uframes_t snd_intel8x0_pcm_pointer(struct snd_pcm_substream *subs
+ 		    ptr1 == igetword(chip, ichdev->reg_offset + ichdev->roff_picb))
+ 			break;
+ 	} while (timeout--);
++	ptr = ichdev->last_pos;
+ 	if (ptr1 != 0) {
+ 		ptr1 <<= ichdev->pos_shift;
+ 		ptr = ichdev->fragsize1 - ptr1;
+ 		ptr += position;
+-		ichdev->last_pos = ptr;
+-		ichdev->last_pos_jiffies = jiffies;
+-	} else {
+-		ptr1 = jiffies - ichdev->last_pos_jiffies;
+-		if (ptr1)
+-			ptr1 -= 1;
+-		ptr = ichdev->last_pos + ptr1 * ichdev->jiffy_to_bytes;
+-		ptr %= ichdev->size;
++		if (ptr < ichdev->last_pos) {
++			unsigned int pos_base, last_base;
++			pos_base = position / ichdev->fragsize1;
++			last_base = ichdev->last_pos / ichdev->fragsize1;
++			/* another sanity check; ptr1 can go back to full
++			 * before the base position is updated
++			 */
++			if (pos_base == last_base)
++				ptr = ichdev->last_pos;
++		}
+ 	}
++	ichdev->last_pos = ptr;
+ 	spin_unlock(&chip->reg_lock);
+ 	if (ptr >= ichdev->size)
+ 		return 0;
+diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c
+index 8cf571f..39805ce 100644
+--- a/sound/soc/codecs/wm8903.c
++++ b/sound/soc/codecs/wm8903.c
+@@ -1215,22 +1215,18 @@ static struct {
+ 	int div;
+ } bclk_divs[] = {
+ 	{  10,  0 },
+-	{  15,  1 },
+ 	{  20,  2 },
+ 	{  30,  3 },
+ 	{  40,  4 },
+ 	{  50,  5 },
+-	{  55,  6 },
+ 	{  60,  7 },
+ 	{  80,  8 },
+ 	{ 100,  9 },
+-	{ 110, 10 },
+ 	{ 120, 11 },
+ 	{ 160, 12 },
+ 	{ 200, 13 },
+ 	{ 220, 14 },
+ 	{ 240, 15 },
+-	{ 250, 16 },
+ 	{ 300, 17 },
+ 	{ 320, 18 },
+ 	{ 440, 19 },
+diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
+index 4d0dd39..1489829 100644
+--- a/virt/kvm/kvm_main.c
++++ b/virt/kvm/kvm_main.c
+@@ -581,6 +581,7 @@ static bool make_all_cpus_request(struct kvm *kvm, unsigned int req)
+ 		cpumask_clear(cpus);
+ 
+ 	me = get_cpu();
++	spin_lock(&kvm->requests_lock);
+ 	for (i = 0; i < KVM_MAX_VCPUS; ++i) {
+ 		vcpu = kvm->vcpus[i];
+ 		if (!vcpu)
+@@ -597,6 +598,7 @@ static bool make_all_cpus_request(struct kvm *kvm, unsigned int req)
+ 		smp_call_function_many(cpus, ack_flush, NULL, 1);
+ 	else
+ 		called = false;
++	spin_unlock(&kvm->requests_lock);
+ 	put_cpu();
+ 	free_cpumask_var(cpus);
+ 	return called;
+@@ -817,6 +819,7 @@ static struct kvm *kvm_create_vm(void)
+ 	kvm->mm = current->mm;
+ 	atomic_inc(&kvm->mm->mm_count);
+ 	spin_lock_init(&kvm->mmu_lock);
++	spin_lock_init(&kvm->requests_lock);
+ 	kvm_io_bus_init(&kvm->pio_bus);
+ 	mutex_init(&kvm->lock);
+ 	kvm_io_bus_init(&kvm->mmio_bus);
+@@ -919,9 +922,8 @@ int __kvm_set_memory_region(struct kvm *kvm,
+ {
+ 	int r;
+ 	gfn_t base_gfn;
+-	unsigned long npages;
+-	int largepages;
+-	unsigned long i;
++	unsigned long npages, ugfn;
++	unsigned long largepages, i;
+ 	struct kvm_memory_slot *memslot;
+ 	struct kvm_memory_slot old, new;
+ 
+@@ -1010,6 +1012,14 @@ int __kvm_set_memory_region(struct kvm *kvm,
+ 			new.lpage_info[0].write_count = 1;
+ 		if ((base_gfn+npages) % KVM_PAGES_PER_HPAGE)
+ 			new.lpage_info[largepages-1].write_count = 1;
++		ugfn = new.userspace_addr >> PAGE_SHIFT;
++		/*
++		 * If the gfn and userspace address are not aligned wrt each
++		 * other, disable large page support for this slot
++		 */
++		if ((base_gfn ^ ugfn) & (KVM_PAGES_PER_HPAGE - 1))
++			for (i = 0; i < largepages; ++i)
++				new.lpage_info[i].write_count = 1;
+ 	}
+ 
+ 	/* Allocate page dirty bitmap if needed */
+@@ -1020,6 +1030,8 @@ int __kvm_set_memory_region(struct kvm *kvm,
+ 		if (!new.dirty_bitmap)
+ 			goto out_free;
+ 		memset(new.dirty_bitmap, 0, dirty_bytes);
++		if (old.npages)
++			kvm_arch_flush_shadow(kvm);
+ 	}
+ #endif /* not defined CONFIG_S390 */
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/stable/gen-patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/stable/gen-patch
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+
+import os.path, re, sys, textwrap
+
+class Version(object):
+    _rules = ur"^(\d+\.\d+\.\d+)\.(\d+)$"
+    _re = re.compile(_rules)
+
+    def __init__(self, version):
+        self.complete = version
+        match = self._re.match(version)
+        if match is None:
+            raise RuntimeError
+        self.release = match.group(1)
+        self.patch = int(match.group(2))
+
+class GenPatch(object):
+    def __init__(self, path, repo, version):
+        self.path = path
+        self.repo = repo
+        self.version = version
+
+    def __call__(self):
+        base = self.version.complete
+        patch = base + '.patch'
+        log = base + '.log'
+        series = base + '.series'
+
+        if self.version.patch == 1:
+            tag_in = "v%s" % self.version.release
+        else:
+            tag_in = "v%s.%d" % (self.version.release, self.version.patch - 1)
+        tag_out = "v%s" % self.version.complete
+        print tag_in, tag_out
+
+        f = os.popen("cd %s; git diff %s %s > %s" % (self.repo, tag_in, tag_out, os.path.join(self.path, patch)))
+        if f.close() is not None:
+            raise RuntimeError
+
+        f = os.popen("cd %s; git log --oneline --reverse %s..%s^" % (self.repo, tag_in, tag_out))
+        out = file(os.path.join(self.path, log), 'w')
+        out.write("  * Add stable release %s:\n" % self.version.complete)
+        for line in f:
+            line = line.strip()
+            if not line:
+                continue
+            hash, log = line.split(' ', 1)
+            log = textwrap.wrap(log, 74)
+            log = '\n      '.join(log)
+            out.write("    - %s\n" % log)
+        if f.close() is not None:
+            raise RuntimeError
+
+        out = file(os.path.join(self.path, series), 'w')
+        out.write("+ bugfix/all/stable/%s\n" % patch)
+        out.close()
+
+if __name__ == '__main__':
+    path = os.path.realpath(os.path.dirname(sys.argv[0]))
+    repo = sys.argv[1]
+    for i in sys.argv[2:]:
+        GenPatch(path, repo, Version(i))()
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/stable/2.6.30.5.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/stable/2.6.30.5.patch
@@ -0,0 +1,2676 @@
+diff --git a/arch/powerpc/boot/dts/asp834x-redboot.dts b/arch/powerpc/boot/dts/asp834x-redboot.dts
+index 7da84fd..261d10c 100644
+--- a/arch/powerpc/boot/dts/asp834x-redboot.dts
++++ b/arch/powerpc/boot/dts/asp834x-redboot.dts
+@@ -167,7 +167,7 @@
+ 			interrupt-parent = <&ipic>;
+ 			interrupts = <39 0x8>;
+ 			phy_type = "ulpi";
+-			port1;
++			port0;
+ 		};
+ 		/* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
+ 		usb@23000 {
+diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts
+index 1ae38f0..e540d44 100644
+--- a/arch/powerpc/boot/dts/mpc8349emitx.dts
++++ b/arch/powerpc/boot/dts/mpc8349emitx.dts
+@@ -156,7 +156,7 @@
+ 			interrupt-parent = <&ipic>;
+ 			interrupts = <39 0x8>;
+ 			phy_type = "ulpi";
+-			port1;
++			port0;
+ 		};
+ 
+ 		usb@23000 {
+diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts
+index d9f0a23..a667fe7 100644
+--- a/arch/powerpc/boot/dts/mpc834x_mds.dts
++++ b/arch/powerpc/boot/dts/mpc834x_mds.dts
+@@ -153,7 +153,7 @@
+ 			interrupt-parent = <&ipic>;
+ 			interrupts = <39 0x8>;
+ 			phy_type = "ulpi";
+-			port1;
++			port0;
+ 		};
+ 		/* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
+ 		usb@23000 {
+diff --git a/arch/powerpc/boot/dts/sbc8349.dts b/arch/powerpc/boot/dts/sbc8349.dts
+index a36dbbc..c7e1c4b 100644
+--- a/arch/powerpc/boot/dts/sbc8349.dts
++++ b/arch/powerpc/boot/dts/sbc8349.dts
+@@ -144,7 +144,7 @@
+ 			interrupt-parent = <&ipic>;
+ 			interrupts = <39 0x8>;
+ 			phy_type = "ulpi";
+-			port1;
++			port0;
+ 		};
+ 		/* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
+ 		usb@23000 {
+diff --git a/arch/powerpc/platforms/83xx/mpc83xx.h b/arch/powerpc/platforms/83xx/mpc83xx.h
+index 83cfe51..d1dc5b0 100644
+--- a/arch/powerpc/platforms/83xx/mpc83xx.h
++++ b/arch/powerpc/platforms/83xx/mpc83xx.h
+@@ -22,8 +22,8 @@
+ /* system i/o configuration register low */
+ #define MPC83XX_SICRL_OFFS         0x114
+ #define MPC834X_SICRL_USB_MASK     0x60000000
+-#define MPC834X_SICRL_USB0         0x40000000
+-#define MPC834X_SICRL_USB1         0x20000000
++#define MPC834X_SICRL_USB0         0x20000000
++#define MPC834X_SICRL_USB1         0x40000000
+ #define MPC831X_SICRL_USB_MASK     0x00000c00
+ #define MPC831X_SICRL_USB_ULPI     0x00000800
+ #define MPC8315_SICRL_USB_MASK     0x000000fc
+diff --git a/arch/powerpc/platforms/83xx/usb.c b/arch/powerpc/platforms/83xx/usb.c
+index 11e1fac..3ba4bb7 100644
+--- a/arch/powerpc/platforms/83xx/usb.c
++++ b/arch/powerpc/platforms/83xx/usb.c
+@@ -47,25 +47,25 @@ int mpc834x_usb_cfg(void)
+ 		sccr |= MPC83XX_SCCR_USB_DRCM_11;  /* 1:3 */
+ 
+ 		prop = of_get_property(np, "phy_type", NULL);
++		port1_is_dr = 1;
+ 		if (prop && (!strcmp(prop, "utmi") ||
+ 					!strcmp(prop, "utmi_wide"))) {
+ 			sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1;
+ 			sicrh |= MPC834X_SICRH_USB_UTMI;
+-			port1_is_dr = 1;
++			port0_is_dr = 1;
+ 		} else if (prop && !strcmp(prop, "serial")) {
+ 			dr_mode = of_get_property(np, "dr_mode", NULL);
+ 			if (dr_mode && !strcmp(dr_mode, "otg")) {
+ 				sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1;
+-				port1_is_dr = 1;
++				port0_is_dr = 1;
+ 			} else {
+-				sicrl |= MPC834X_SICRL_USB0;
++				sicrl |= MPC834X_SICRL_USB1;
+ 			}
+ 		} else if (prop && !strcmp(prop, "ulpi")) {
+-			sicrl |= MPC834X_SICRL_USB0;
++			sicrl |= MPC834X_SICRL_USB1;
+ 		} else {
+ 			printk(KERN_WARNING "834x USB PHY type not supported\n");
+ 		}
+-		port0_is_dr = 1;
+ 		of_node_put(np);
+ 	}
+ 	np = of_find_compatible_node(NULL, NULL, "fsl-usb2-mph");
+diff --git a/arch/x86/include/asm/irqflags.h b/arch/x86/include/asm/irqflags.h
+index 2bdab21..c6ccbe7 100644
+--- a/arch/x86/include/asm/irqflags.h
++++ b/arch/x86/include/asm/irqflags.h
+@@ -12,9 +12,15 @@ static inline unsigned long native_save_fl(void)
+ {
+ 	unsigned long flags;
+ 
++	/*
++	 * Note: this needs to be "=r" not "=rm", because we have the
++	 * stack offset from what gcc expects at the time the "pop" is
++	 * executed, and so a memory reference with respect to the stack
++	 * would end up using the wrong address.
++	 */
+ 	asm volatile("# __raw_save_flags\n\t"
+ 		     "pushf ; pop %0"
+-		     : "=g" (flags)
++		     : "=r" (flags)
+ 		     : /* no input */
+ 		     : "memory");
+ 
+diff --git a/arch/x86/kernel/vmi_32.c b/arch/x86/kernel/vmi_32.c
+index 95deb9f..c6a61d2 100644
+--- a/arch/x86/kernel/vmi_32.c
++++ b/arch/x86/kernel/vmi_32.c
+@@ -441,7 +441,7 @@ vmi_startup_ipi_hook(int phys_apicid, unsigned long start_eip,
+ 	ap.ds = __USER_DS;
+ 	ap.es = __USER_DS;
+ 	ap.fs = __KERNEL_PERCPU;
+-	ap.gs = 0;
++	ap.gs = __KERNEL_STACK_CANARY;
+ 
+ 	ap.eflags = 0;
+ 
+diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
+index e17efed..133bdba 100644
+--- a/arch/x86/mm/pageattr.c
++++ b/arch/x86/mm/pageattr.c
+@@ -590,9 +590,12 @@ static int __change_page_attr(struct cpa_data *cpa, int primary)
+ 	unsigned int level;
+ 	pte_t *kpte, old_pte;
+ 
+-	if (cpa->flags & CPA_PAGES_ARRAY)
+-		address = (unsigned long)page_address(cpa->pages[cpa->curpage]);
+-	else if (cpa->flags & CPA_ARRAY)
++	if (cpa->flags & CPA_PAGES_ARRAY) {
++		struct page *page = cpa->pages[cpa->curpage];
++		if (unlikely(PageHighMem(page)))
++			return 0;
++		address = (unsigned long)page_address(page);
++	} else if (cpa->flags & CPA_ARRAY)
+ 		address = cpa->vaddr[cpa->curpage];
+ 	else
+ 		address = *cpa->vaddr;
+@@ -695,9 +698,12 @@ static int cpa_process_alias(struct cpa_data *cpa)
+ 	 * No need to redo, when the primary call touched the direct
+ 	 * mapping already:
+ 	 */
+-	if (cpa->flags & CPA_PAGES_ARRAY)
+-		vaddr = (unsigned long)page_address(cpa->pages[cpa->curpage]);
+-	else if (cpa->flags & CPA_ARRAY)
++	if (cpa->flags & CPA_PAGES_ARRAY) {
++		struct page *page = cpa->pages[cpa->curpage];
++		if (unlikely(PageHighMem(page)))
++			return 0;
++		vaddr = (unsigned long)page_address(page);
++	} else if (cpa->flags & CPA_ARRAY)
+ 		vaddr = cpa->vaddr[cpa->curpage];
+ 	else
+ 		vaddr = *cpa->vaddr;
+@@ -996,12 +1002,15 @@ EXPORT_SYMBOL(set_memory_array_uc);
+ int _set_memory_wc(unsigned long addr, int numpages)
+ {
+ 	int ret;
++	unsigned long addr_copy = addr;
++
+ 	ret = change_page_attr_set(&addr, numpages,
+ 				    __pgprot(_PAGE_CACHE_UC_MINUS), 0);
+-
+ 	if (!ret) {
+-		ret = change_page_attr_set(&addr, numpages,
+-				    __pgprot(_PAGE_CACHE_WC), 0);
++		ret = change_page_attr_set_clr(&addr_copy, numpages,
++					       __pgprot(_PAGE_CACHE_WC),
++					       __pgprot(_PAGE_CACHE_MASK),
++					       0, 0, NULL);
+ 	}
+ 	return ret;
+ }
+@@ -1118,7 +1127,9 @@ int set_pages_array_uc(struct page **pages, int addrinarray)
+ 	int free_idx;
+ 
+ 	for (i = 0; i < addrinarray; i++) {
+-		start = (unsigned long)page_address(pages[i]);
++		if (PageHighMem(pages[i]))
++			continue;
++		start = page_to_pfn(pages[i]) << PAGE_SHIFT;
+ 		end = start + PAGE_SIZE;
+ 		if (reserve_memtype(start, end, _PAGE_CACHE_UC_MINUS, NULL))
+ 			goto err_out;
+@@ -1131,7 +1142,9 @@ int set_pages_array_uc(struct page **pages, int addrinarray)
+ err_out:
+ 	free_idx = i;
+ 	for (i = 0; i < free_idx; i++) {
+-		start = (unsigned long)page_address(pages[i]);
++		if (PageHighMem(pages[i]))
++			continue;
++		start = page_to_pfn(pages[i]) << PAGE_SHIFT;
+ 		end = start + PAGE_SIZE;
+ 		free_memtype(start, end);
+ 	}
+@@ -1160,7 +1173,9 @@ int set_pages_array_wb(struct page **pages, int addrinarray)
+ 		return retval;
+ 
+ 	for (i = 0; i < addrinarray; i++) {
+-		start = (unsigned long)page_address(pages[i]);
++		if (PageHighMem(pages[i]))
++			continue;
++		start = page_to_pfn(pages[i]) << PAGE_SHIFT;
+ 		end = start + PAGE_SIZE;
+ 		free_memtype(start, end);
+ 	}
+diff --git a/block/Kconfig b/block/Kconfig
+index e7d1278..f817911 100644
+--- a/block/Kconfig
++++ b/block/Kconfig
+@@ -45,9 +45,9 @@ config LBD
+ 	  If unsure, say N.
+ 
+ config BLK_DEV_BSG
+-	bool "Block layer SG support v4 (EXPERIMENTAL)"
+-	depends on EXPERIMENTAL
+-	---help---
++	bool "Block layer SG support v4"
++	default y
++	help
+ 	  Saying Y here will enable generic SG (SCSI generic) v4 support
+ 	  for any block device.
+ 
+@@ -57,7 +57,10 @@ config BLK_DEV_BSG
+ 	  protocols (e.g. Task Management Functions and SMP in Serial
+ 	  Attached SCSI).
+ 
+-	  If unsure, say N.
++	  This option is required by recent UDEV versions to properly
++	  access device serial numbers, etc.
++
++	  If unsure, say Y.
+ 
+ config BLK_DEV_INTEGRITY
+ 	bool "Block layer data integrity support"
+diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
+index 01574a0..42159a2 100644
+--- a/drivers/acpi/sleep.c
++++ b/drivers/acpi/sleep.c
+@@ -397,6 +397,14 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
+ 		},
+ 	},
+ 	{
++	.callback = init_set_sci_en_on_resume,
++	.ident = "Hewlett-Packard HP G7000 Notebook PC",
++	.matches = {
++		DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
++		DMI_MATCH(DMI_PRODUCT_NAME, "HP G7000 Notebook PC"),
++		},
++	},
++	{
+ 	.callback = init_old_suspend_ordering,
+ 	.ident = "Panasonic CF51-2L",
+ 	.matches = {
+diff --git a/drivers/edac/x38_edac.c b/drivers/edac/x38_edac.c
+index 2406c2c..d4ec605 100644
+--- a/drivers/edac/x38_edac.c
++++ b/drivers/edac/x38_edac.c
+@@ -30,7 +30,7 @@
+ /* Intel X38 register addresses - device 0 function 0 - DRAM Controller */
+ 
+ #define X38_MCHBAR_LOW	0x48	/* MCH Memory Mapped Register BAR */
+-#define X38_MCHBAR_HIGH	0x4b
++#define X38_MCHBAR_HIGH	0x4c
+ #define X38_MCHBAR_MASK	0xfffffc000ULL	/* bits 35:14 */
+ #define X38_MMR_WINDOW_SIZE	16384
+ 
+diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c
+index 2bcf515..9b0a094 100644
+--- a/drivers/firewire/fw-sbp2.c
++++ b/drivers/firewire/fw-sbp2.c
+@@ -190,6 +190,12 @@ struct sbp2_target {
+ #define SBP2_CYCLE_LIMIT		(0xc8 << 12)	/* 200 125us cycles */
+ 
+ /*
++ * There is no transport protocol limit to the CDB length,  but we implement
++ * a fixed length only.  16 bytes is enough for disks larger than 2 TB.
++ */
++#define SBP2_MAX_CDB_SIZE		16
++
++/*
+  * The default maximum s/g segment size of a FireWire controller is
+  * usually 0x10000, but SBP-2 only allows 0xffff. Since buffers have to
+  * be quadlet-aligned, we set the length limit to 0xffff & ~3.
+@@ -301,7 +307,7 @@ struct sbp2_command_orb {
+ 		struct sbp2_pointer next;
+ 		struct sbp2_pointer data_descriptor;
+ 		__be32 misc;
+-		u8 command_block[12];
++		u8 command_block[SBP2_MAX_CDB_SIZE];
+ 	} request;
+ 	struct scsi_cmnd *cmd;
+ 	scsi_done_fn_t done;
+@@ -1135,6 +1141,8 @@ static int sbp2_probe(struct device *dev)
+ 	if (fw_device_enable_phys_dma(device) < 0)
+ 		goto fail_shost_put;
+ 
++	shost->max_cmd_len = SBP2_MAX_CDB_SIZE;
++
+ 	if (scsi_add_host(shost, &unit->device) < 0)
+ 		goto fail_shost_put;
+ 
+diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
+index 0ccb63e..bb58797 100644
+--- a/drivers/gpu/drm/i915/i915_dma.c
++++ b/drivers/gpu/drm/i915/i915_dma.c
+@@ -1153,8 +1153,11 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
+ #endif
+ 
+ 	dev->driver->get_vblank_counter = i915_get_vblank_counter;
+-	if (IS_GM45(dev))
++	dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */
++	if (IS_G4X(dev)) {
++		dev->max_vblank_count = 0xffffffff; /* full 32 bit counter */
+ 		dev->driver->get_vblank_counter = gm45_get_vblank_counter;
++	}
+ 
+ 	i915_gem_load(dev);
+ 
+diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
+index c431fa5..fcaa544 100644
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -285,6 +285,13 @@ typedef struct drm_i915_private {
+ 	u8 saveDACMASK;
+ 	u8 saveCR[37];
+ 	uint64_t saveFENCE[16];
++	u32 saveCURACNTR;
++	u32 saveCURAPOS;
++	u32 saveCURABASE;
++	u32 saveCURBCNTR;
++	u32 saveCURBPOS;
++	u32 saveCURBBASE;
++	u32 saveCURSIZE;
+ 
+ 	struct {
+ 		struct drm_mm gtt_space;
+@@ -642,6 +649,7 @@ void i915_gem_detach_phys_object(struct drm_device *dev,
+ void i915_gem_free_all_phys_object(struct drm_device *dev);
+ int i915_gem_object_get_pages(struct drm_gem_object *obj);
+ void i915_gem_object_put_pages(struct drm_gem_object *obj);
++void i915_gem_release(struct drm_device * dev, struct drm_file *file_priv);
+ 
+ /* i915_gem_tiling.c */
+ void i915_gem_detect_bit_6_swizzle(struct drm_device *dev);
+diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
+index 39f5c65..91ad93d 100644
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -4154,6 +4154,7 @@ i915_gem_lastclose(struct drm_device *dev)
+ void
+ i915_gem_load(struct drm_device *dev)
+ {
++	int i;
+ 	drm_i915_private_t *dev_priv = dev->dev_private;
+ 
+ 	spin_lock_init(&dev_priv->mm.active_list_lock);
+@@ -4173,6 +4174,18 @@ i915_gem_load(struct drm_device *dev)
+ 	else
+ 		dev_priv->num_fence_regs = 8;
+ 
++	/* Initialize fence registers to zero */
++	if (IS_I965G(dev)) {
++		for (i = 0; i < 16; i++)
++			I915_WRITE64(FENCE_REG_965_0 + (i * 8), 0);
++	} else {
++		for (i = 0; i < 8; i++)
++			I915_WRITE(FENCE_REG_830_0 + (i * 4), 0);
++		if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev))
++			for (i = 0; i < 8; i++)
++				I915_WRITE(FENCE_REG_945_8 + (i * 4), 0);
++	}
++
+ 	i915_gem_detect_bit_6_swizzle(dev);
+ }
+ 
+diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
+index 98bb4c8..8ee0969 100644
+--- a/drivers/gpu/drm/i915/i915_irq.c
++++ b/drivers/gpu/drm/i915/i915_irq.c
+@@ -572,8 +572,6 @@ int i915_driver_irq_postinstall(struct drm_device *dev)
+ 
+ 	dev_priv->vblank_pipe = DRM_I915_VBLANK_PIPE_A | DRM_I915_VBLANK_PIPE_B;
+ 
+-	dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */
+-
+ 	/* Unmask the interrupts that we always want on. */
+ 	dev_priv->irq_mask_reg = ~I915_INTERRUPT_ENABLE_FIX;
+ 
+diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
+index ce8a213..a98e283 100644
+--- a/drivers/gpu/drm/i915/i915_suspend.c
++++ b/drivers/gpu/drm/i915/i915_suspend.c
+@@ -295,6 +295,16 @@ int i915_save_state(struct drm_device *dev)
+ 	i915_save_palette(dev, PIPE_B);
+ 	dev_priv->savePIPEBSTAT = I915_READ(PIPEBSTAT);
+ 
++	/* Cursor state */
++	dev_priv->saveCURACNTR = I915_READ(CURACNTR);
++	dev_priv->saveCURAPOS = I915_READ(CURAPOS);
++	dev_priv->saveCURABASE = I915_READ(CURABASE);
++	dev_priv->saveCURBCNTR = I915_READ(CURBCNTR);
++	dev_priv->saveCURBPOS = I915_READ(CURBPOS);
++	dev_priv->saveCURBBASE = I915_READ(CURBBASE);
++	if (!IS_I9XX(dev))
++		dev_priv->saveCURSIZE = I915_READ(CURSIZE);
++
+ 	/* CRT state */
+ 	dev_priv->saveADPA = I915_READ(ADPA);
+ 
+@@ -480,6 +490,16 @@ int i915_restore_state(struct drm_device *dev)
+ 	I915_WRITE(DSPBCNTR, dev_priv->saveDSPBCNTR);
+ 	I915_WRITE(DSPBADDR, I915_READ(DSPBADDR));
+ 
++	/* Cursor state */
++	I915_WRITE(CURAPOS, dev_priv->saveCURAPOS);
++	I915_WRITE(CURACNTR, dev_priv->saveCURACNTR);
++	I915_WRITE(CURABASE, dev_priv->saveCURABASE);
++	I915_WRITE(CURBPOS, dev_priv->saveCURBPOS);
++	I915_WRITE(CURBCNTR, dev_priv->saveCURBCNTR);
++	I915_WRITE(CURBBASE, dev_priv->saveCURBBASE);
++	if (!IS_I9XX(dev))
++		I915_WRITE(CURSIZE, dev_priv->saveCURSIZE);
++
+ 	/* CRT state */
+ 	I915_WRITE(ADPA, dev_priv->saveADPA);
+ 
+diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
+index 9d78cff..cf2a971 100644
+--- a/drivers/gpu/drm/i915/intel_bios.c
++++ b/drivers/gpu/drm/i915/intel_bios.c
+@@ -185,10 +185,12 @@ parse_general_features(struct drm_i915_private *dev_priv,
+ 		dev_priv->lvds_use_ssc = general->enable_ssc;
+ 
+ 		if (dev_priv->lvds_use_ssc) {
+-		  if (IS_I855(dev_priv->dev))
+-		    dev_priv->lvds_ssc_freq = general->ssc_freq ? 66 : 48;
+-		  else
+-		    dev_priv->lvds_ssc_freq = general->ssc_freq ? 100 : 96;
++			if (IS_I85X(dev_priv->dev))
++				dev_priv->lvds_ssc_freq =
++					general->ssc_freq ? 66 : 48;
++			else
++				dev_priv->lvds_ssc_freq =
++					general->ssc_freq ? 100 : 96;
+ 		}
+ 	}
+ }
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index c9d6f10..5469f2c 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -1590,6 +1590,7 @@ struct drm_crtc *intel_get_load_detect_pipe(struct intel_output *intel_output,
+ 	}
+ 
+ 	encoder->crtc = crtc;
++	intel_output->base.encoder = encoder;
+ 	intel_output->load_detect_temp = true;
+ 
+ 	intel_crtc = to_intel_crtc(crtc);
+@@ -1625,6 +1626,7 @@ void intel_release_load_detect_pipe(struct intel_output *intel_output, int dpms_
+ 
+ 	if (intel_output->load_detect_temp) {
+ 		encoder->crtc = NULL;
++		intel_output->base.encoder = NULL;
+ 		intel_output->load_detect_temp = false;
+ 		crtc->enabled = drm_helper_crtc_in_use(crtc);
+ 		drm_helper_disable_unused_functions(dev);
+diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c
+index e4652dc..7a66b91 100644
+--- a/drivers/gpu/drm/i915/intel_fb.c
++++ b/drivers/gpu/drm/i915/intel_fb.c
+@@ -857,9 +857,15 @@ void intelfb_restore(void)
+ 	drm_crtc_helper_set_config(&kernelfb_mode);
+ }
+ 
++static void intelfb_restore_work_fn(struct work_struct *ignored)
++{
++	intelfb_restore();
++}
++static DECLARE_WORK(intelfb_restore_work, intelfb_restore_work_fn);
++
+ static void intelfb_sysrq(int dummy1, struct tty_struct *dummy3)
+ {
+-        intelfb_restore();
++        schedule_work(&intelfb_restore_work);
+ }
+ 
+ static struct sysrq_key_op sysrq_intelfb_restore_op = {
+diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
+index 53cccfa..1e06379 100644
+--- a/drivers/gpu/drm/i915/intel_lvds.c
++++ b/drivers/gpu/drm/i915/intel_lvds.c
+@@ -420,8 +420,21 @@ static const struct dmi_system_id intel_no_lvds[] = {
+ 			DMI_MATCH(DMI_PRODUCT_NAME, "Studio Hybrid 140g"),
+ 		},
+ 	},
+-
+-	/* FIXME: add a check for the Aopen Mini PC */
++	{
++		.callback = intel_no_lvds_dmi_callback,
++		.ident = "AOpen Mini PC",
++		.matches = {
++			DMI_MATCH(DMI_SYS_VENDOR, "AOpen"),
++			DMI_MATCH(DMI_PRODUCT_NAME, "i965GMx-IF"),
++		},
++	},
++	{
++		.callback = intel_no_lvds_dmi_callback,
++		.ident = "Aopen i945GTt-VFA",
++		.matches = {
++			DMI_MATCH(DMI_PRODUCT_VERSION, "AO00001JW"),
++		},
++	},
+ 
+ 	{ }	/* terminating entry */
+ };
+diff --git a/drivers/hwmon/asus_atk0110.c b/drivers/hwmon/asus_atk0110.c
+index bff0103..fe4fa29 100644
+--- a/drivers/hwmon/asus_atk0110.c
++++ b/drivers/hwmon/asus_atk0110.c
+@@ -593,7 +593,11 @@ static int atk_add_sensor(struct atk_data *data, union acpi_object *obj)
+ 	sensor->data = data;
+ 	sensor->id = flags->integer.value;
+ 	sensor->limit1 = limit1->integer.value;
+-	sensor->limit2 = limit2->integer.value;
++	if (data->old_interface)
++		sensor->limit2 = limit2->integer.value;
++	else
++		/* The upper limit is expressed as delta from lower limit */
++		sensor->limit2 = sensor->limit1 + limit2->integer.value;
+ 
+ 	snprintf(sensor->input_attr_name, ATTR_NAME_SIZE,
+ 			"%s%d_input", base_name, start + *num);
+diff --git a/drivers/hwmon/smsc47m1.c b/drivers/hwmon/smsc47m1.c
+index a92dbb9..ba75bfc 100644
+--- a/drivers/hwmon/smsc47m1.c
++++ b/drivers/hwmon/smsc47m1.c
+@@ -86,6 +86,7 @@ superio_exit(void)
+ #define SUPERIO_REG_ACT		0x30
+ #define SUPERIO_REG_BASE	0x60
+ #define SUPERIO_REG_DEVID	0x20
++#define SUPERIO_REG_DEVREV	0x21
+ 
+ /* Logical device registers */
+ 
+@@ -429,6 +430,9 @@ static int __init smsc47m1_find(unsigned short *addr,
+ 	 * The LPC47M292 (device id 0x6B) is somewhat compatible, but it
+ 	 * supports a 3rd fan, and the pin configuration registers are
+ 	 * unfortunately different.
++	 * The LPC47M233 has the same device id (0x6B) but is not compatible.
++	 * We check the high bit of the device revision register to
++	 * differentiate them.
+ 	 */
+ 	switch (val) {
+ 	case 0x51:
+@@ -448,6 +452,13 @@ static int __init smsc47m1_find(unsigned short *addr,
+ 		sio_data->type = smsc47m1;
+ 		break;
+ 	case 0x6B:
++		if (superio_inb(SUPERIO_REG_DEVREV) & 0x80) {
++			pr_debug(DRVNAME ": "
++				 "Found SMSC LPC47M233, unsupported\n");
++			superio_exit();
++			return -ENODEV;
++		}
++
+ 		pr_info(DRVNAME ": Found SMSC LPC47M292\n");
+ 		sio_data->type = smsc47m2;
+ 		break;
+diff --git a/drivers/i2c/chips/tsl2550.c b/drivers/i2c/chips/tsl2550.c
+index 1a9cc13..b96f302 100644
+--- a/drivers/i2c/chips/tsl2550.c
++++ b/drivers/i2c/chips/tsl2550.c
+@@ -27,7 +27,7 @@
+ #include <linux/delay.h>
+ 
+ #define TSL2550_DRV_NAME	"tsl2550"
+-#define DRIVER_VERSION		"1.1.1"
++#define DRIVER_VERSION		"1.1.2"
+ 
+ /*
+  * Defines
+@@ -189,13 +189,16 @@ static int tsl2550_calculate_lux(u8 ch0, u8 ch1)
+ 	u8 r = 128;
+ 
+ 	/* Avoid division by 0 and count 1 cannot be greater than count 0 */
+-	if (c0 && (c1 <= c0))
+-		r = c1 * 128 / c0;
++	if (c1 <= c0)
++		if (c0) {
++			r = c1 * 128 / c0;
++
++			/* Calculate LUX */
++			lux = ((c0 - c1) * ratio_lut[r]) / 256;
++		} else
++			lux = 0;
+ 	else
+-		return -1;
+-
+-	/* Calculate LUX */
+-	lux = ((c0 - c1) * ratio_lut[r]) / 256;
++		return -EAGAIN;
+ 
+ 	/* LUX range check */
+ 	return lux > TSL2550_MAX_LUX ? TSL2550_MAX_LUX : lux;
+diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
+index a9fbe2c..08f0fe0 100644
+--- a/drivers/ide/ide-disk.c
++++ b/drivers/ide/ide-disk.c
+@@ -413,6 +413,7 @@ static void idedisk_prepare_flush(struct request_queue *q, struct request *rq)
+ 	rq->cmd_type = REQ_TYPE_ATA_TASKFILE;
+ 	rq->cmd_flags |= REQ_SOFTBARRIER;
+ 	rq->special = cmd;
++	cmd->rq = rq;
+ }
+ 
+ ide_devset_get(multcount, mult_count);
+diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c
+index a0b8cab..3194e1d 100644
+--- a/drivers/ide/ide-dma.c
++++ b/drivers/ide/ide-dma.c
+@@ -362,9 +362,6 @@ static int ide_tune_dma(ide_drive_t *drive)
+ 	if (__ide_dma_bad_drive(drive))
+ 		return 0;
+ 
+-	if (ide_id_dma_bug(drive))
+-		return 0;
+-
+ 	if (hwif->host_flags & IDE_HFLAG_TRUST_BIOS_FOR_DMA)
+ 		return config_drive_for_dma(drive);
+ 
+@@ -395,24 +392,6 @@ static int ide_dma_check(ide_drive_t *drive)
+ 	return -1;
+ }
+ 
+-int ide_id_dma_bug(ide_drive_t *drive)
+-{
+-	u16 *id = drive->id;
+-
+-	if (id[ATA_ID_FIELD_VALID] & 4) {
+-		if ((id[ATA_ID_UDMA_MODES] >> 8) &&
+-		    (id[ATA_ID_MWDMA_MODES] >> 8))
+-			goto err_out;
+-	} else if ((id[ATA_ID_MWDMA_MODES] >> 8) &&
+-		   (id[ATA_ID_SWDMA_MODES] >> 8))
+-		goto err_out;
+-
+-	return 0;
+-err_out:
+-	printk(KERN_ERR "%s: bad DMA info in identify block\n", drive->name);
+-	return 1;
+-}
+-
+ int ide_set_dma(ide_drive_t *drive)
+ {
+ 	int rc;
+diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
+index 06fe002..dd5c557 100644
+--- a/drivers/ide/ide-iops.c
++++ b/drivers/ide/ide-iops.c
+@@ -306,9 +306,6 @@ int ide_driveid_update(ide_drive_t *drive)
+ 
+ 	kfree(id);
+ 
+-	if ((drive->dev_flags & IDE_DFLAG_USING_DMA) && ide_id_dma_bug(drive))
+-		ide_dma_off(drive);
+-
+ 	return 1;
+ out_err:
+ 	SELECT_MASK(drive, 0);
+diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
+index c895ed5..34846cc 100644
+--- a/drivers/ide/ide-probe.c
++++ b/drivers/ide/ide-probe.c
+@@ -830,6 +830,24 @@ static int ide_port_setup_devices(ide_hwif_t *hwif)
+ 	return j;
+ }
+ 
++static void ide_host_enable_irqs(struct ide_host *host)
++{
++	ide_hwif_t *hwif;
++	int i;
++
++	ide_host_for_each_port(i, hwif, host) {
++		if (hwif == NULL)
++			continue;
++
++		/* clear any pending IRQs */
++		hwif->tp_ops->read_status(hwif);
++
++		/* unmask IRQs */
++		if (hwif->io_ports.ctl_addr)
++			hwif->tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS);
++	}
++}
++
+ /*
+  * This routine sets up the IRQ for an IDE interface.
+  */
+@@ -843,9 +861,6 @@ static int init_irq (ide_hwif_t *hwif)
+ 	if (irq_handler == NULL)
+ 		irq_handler = ide_intr;
+ 
+-	if (io_ports->ctl_addr)
+-		hwif->tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS);
+-
+ 	if (request_irq(hwif->irq, irq_handler, sa, hwif->name, hwif))
+ 		goto out_up;
+ 
+@@ -1389,6 +1404,8 @@ int ide_host_register(struct ide_host *host, const struct ide_port_info *d,
+ 			ide_port_tune_devices(hwif);
+ 	}
+ 
++	ide_host_enable_irqs(host);
++
+ 	ide_host_for_each_port(i, hwif, host) {
+ 		if (hwif == NULL)
+ 			continue;
+diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c
+index a51ab23..f599f49 100644
+--- a/drivers/ieee1394/sbp2.c
++++ b/drivers/ieee1394/sbp2.c
+@@ -880,6 +880,7 @@ static struct sbp2_lu *sbp2_alloc_device(struct unit_directory *ud)
+ 	}
+ 
+ 	shost->hostdata[0] = (unsigned long)lu;
++	shost->max_cmd_len = SBP2_MAX_CDB_SIZE;
+ 
+ 	if (!scsi_add_host(shost, &ud->device)) {
+ 		lu->shost = shost;
+diff --git a/drivers/ieee1394/sbp2.h b/drivers/ieee1394/sbp2.h
+index c5036f1..64a3a66 100644
+--- a/drivers/ieee1394/sbp2.h
++++ b/drivers/ieee1394/sbp2.h
+@@ -25,6 +25,12 @@
+ #define SBP2_DEVICE_NAME		"sbp2"
+ 
+ /*
++ * There is no transport protocol limit to the CDB length,  but we implement
++ * a fixed length only.  16 bytes is enough for disks larger than 2 TB.
++ */
++#define SBP2_MAX_CDB_SIZE		16
++
++/*
+  * SBP-2 specific definitions
+  */
+ 
+@@ -51,7 +57,7 @@ struct sbp2_command_orb {
+ 	u32 data_descriptor_hi;
+ 	u32 data_descriptor_lo;
+ 	u32 misc;
+-	u8 cdb[12];
++	u8 cdb[SBP2_MAX_CDB_SIZE];
+ } __attribute__((packed));
+ 
+ #define SBP2_LOGIN_REQUEST		0x0
+diff --git a/drivers/md/md.c b/drivers/md/md.c
+index eb1b73f..751a315 100644
+--- a/drivers/md/md.c
++++ b/drivers/md/md.c
+@@ -1410,8 +1410,14 @@ static void super_1_sync(mddev_t *mddev, mdk_rdev_t *rdev)
+ 		if (rdev2->desc_nr+1 > max_dev)
+ 			max_dev = rdev2->desc_nr+1;
+ 
+-	if (max_dev > le32_to_cpu(sb->max_dev))
++	if (max_dev > le32_to_cpu(sb->max_dev)) {
++		int bmask;
+ 		sb->max_dev = cpu_to_le32(max_dev);
++		rdev->sb_size = max_dev * 2 + 256;
++		bmask = queue_hardsect_size(rdev->bdev->bd_disk->queue)-1;
++		if (rdev->sb_size & bmask)
++			rdev->sb_size = (rdev->sb_size | bmask) + 1;
++	}
+ 	for (i=0; i<max_dev;i++)
+ 		sb->dev_roles[i] = cpu_to_le16(0xfffe);
+ 	
+@@ -2680,6 +2686,7 @@ level_store(mddev_t *mddev, const char *buf, size_t len)
+ 	ssize_t rv = len;
+ 	struct mdk_personality *pers;
+ 	void *priv;
++	mdk_rdev_t *rdev;
+ 
+ 	if (mddev->pers == NULL) {
+ 		if (len == 0)
+@@ -2759,6 +2766,12 @@ level_store(mddev_t *mddev, const char *buf, size_t len)
+ 	mddev_suspend(mddev);
+ 	mddev->pers->stop(mddev);
+ 	module_put(mddev->pers->owner);
++	/* Invalidate devices that are now superfluous */
++	list_for_each_entry(rdev, &mddev->disks, same_set)
++		if (rdev->raid_disk >= mddev->raid_disks) {
++			rdev->raid_disk = -1;
++			clear_bit(In_sync, &rdev->flags);
++		}
+ 	mddev->pers = pers;
+ 	mddev->private = priv;
+ 	strlcpy(mddev->clevel, pers->name, sizeof(mddev->clevel));
+diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
+index 1f98ea4..75e0ecc 100644
+--- a/drivers/md/raid5.c
++++ b/drivers/md/raid5.c
+@@ -4310,6 +4310,15 @@ raid5_size(mddev_t *mddev, sector_t sectors, int raid_disks)
+ 	return sectors * (raid_disks - conf->max_degraded);
+ }
+ 
++static void free_conf(raid5_conf_t *conf)
++{
++	shrink_stripes(conf);
++	safe_put_page(conf->spare_page);
++	kfree(conf->disks);
++	kfree(conf->stripe_hashtbl);
++	kfree(conf);
++}
++
+ static raid5_conf_t *setup_conf(mddev_t *mddev)
+ {
+ 	raid5_conf_t *conf;
+@@ -4439,11 +4448,7 @@ static raid5_conf_t *setup_conf(mddev_t *mddev)
+ 
+  abort:
+ 	if (conf) {
+-		shrink_stripes(conf);
+-		safe_put_page(conf->spare_page);
+-		kfree(conf->disks);
+-		kfree(conf->stripe_hashtbl);
+-		kfree(conf);
++		free_conf(conf);
+ 		return ERR_PTR(-EIO);
+ 	} else
+ 		return ERR_PTR(-ENOMEM);
+@@ -4609,12 +4614,8 @@ abort:
+ 	md_unregister_thread(mddev->thread);
+ 	mddev->thread = NULL;
+ 	if (conf) {
+-		shrink_stripes(conf);
+ 		print_raid5_conf(conf);
+-		safe_put_page(conf->spare_page);
+-		kfree(conf->disks);
+-		kfree(conf->stripe_hashtbl);
+-		kfree(conf);
++		free_conf(conf);
+ 	}
+ 	mddev->private = NULL;
+ 	printk(KERN_ALERT "raid5: failed to run raid set %s\n", mdname(mddev));
+@@ -4629,13 +4630,10 @@ static int stop(mddev_t *mddev)
+ 
+ 	md_unregister_thread(mddev->thread);
+ 	mddev->thread = NULL;
+-	shrink_stripes(conf);
+-	kfree(conf->stripe_hashtbl);
+ 	mddev->queue->backing_dev_info.congested_fn = NULL;
+ 	blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/
+ 	sysfs_remove_group(&mddev->kobj, &raid5_attrs_group);
+-	kfree(conf->disks);
+-	kfree(conf);
++	free_conf(conf);
+ 	mddev->private = NULL;
+ 	return 0;
+ }
+diff --git a/drivers/net/atl1c/atl1c.h b/drivers/net/atl1c/atl1c.h
+index e1658ef..2a1120a 100644
+--- a/drivers/net/atl1c/atl1c.h
++++ b/drivers/net/atl1c/atl1c.h
+@@ -188,14 +188,14 @@ struct atl1c_tpd_ext_desc {
+ #define RRS_HDS_TYPE_DATA	2
+ 
+ #define RRS_IS_NO_HDS_TYPE(flag) \
+-	(((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == 0)
++	((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == 0)
+ 
+ #define RRS_IS_HDS_HEAD(flag) \
+-	(((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == \
++	((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == \
+ 			RRS_HDS_TYPE_HEAD)
+ 
+ #define RRS_IS_HDS_DATA(flag) \
+-	(((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == \
++	((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == \
+ 			RRS_HDS_TYPE_DATA)
+ 
+ /* rrs word 3 bit 0:31 */
+@@ -245,7 +245,7 @@ struct atl1c_tpd_ext_desc {
+ #define RRS_PACKET_TYPE_802_3  	1
+ #define RRS_PACKET_TYPE_ETH	0
+ #define RRS_PACKET_IS_ETH(word) \
+-	(((word) >> RRS_PACKET_TYPE_SHIFT) & RRS_PACKET_TYPE_MASK == \
++	((((word) >> RRS_PACKET_TYPE_SHIFT) & RRS_PACKET_TYPE_MASK) == \
+ 			RRS_PACKET_TYPE_ETH)
+ #define RRS_RXD_IS_VALID(word) \
+ 	((((word) >> RRS_RXD_UPDATED_SHIFT) & RRS_RXD_UPDATED_MASK) == 1)
+diff --git a/drivers/net/atl1c/atl1c_ethtool.c b/drivers/net/atl1c/atl1c_ethtool.c
+index 45c5b73..e4afbd6 100644
+--- a/drivers/net/atl1c/atl1c_ethtool.c
++++ b/drivers/net/atl1c/atl1c_ethtool.c
+@@ -271,7 +271,7 @@ static int atl1c_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
+ 	struct atl1c_adapter *adapter = netdev_priv(netdev);
+ 
+ 	if (wol->wolopts & (WAKE_ARP | WAKE_MAGICSECURE |
+-			    WAKE_MCAST | WAKE_BCAST | WAKE_MCAST))
++			    WAKE_UCAST | WAKE_BCAST | WAKE_MCAST))
+ 		return -EOPNOTSUPP;
+ 	/* these settings will always override what we currently have */
+ 	adapter->wol = 0;
+diff --git a/drivers/net/atl1c/atl1c_main.c b/drivers/net/atl1c/atl1c_main.c
+index 83a1212..6cf3608 100644
+--- a/drivers/net/atl1c/atl1c_main.c
++++ b/drivers/net/atl1c/atl1c_main.c
+@@ -1701,7 +1701,7 @@ static void atl1c_clean_rx_irq(struct atl1c_adapter *adapter, u8 que,
+ 		if (likely(RRS_RXD_IS_VALID(rrs->word3))) {
+ 			rfd_num = (rrs->word0 >> RRS_RX_RFD_CNT_SHIFT) &
+ 				RRS_RX_RFD_CNT_MASK;
+-			if (unlikely(rfd_num) != 1)
++			if (unlikely(rfd_num != 1))
+ 				/* TODO support mul rfd*/
+ 				if (netif_msg_rx_err(adapter))
+ 					dev_warn(&pdev->dev,
+diff --git a/drivers/net/benet/be.h b/drivers/net/benet/be.h
+index b4bb06f..97e45e0 100644
+--- a/drivers/net/benet/be.h
++++ b/drivers/net/benet/be.h
+@@ -73,7 +73,7 @@ static inline char *nic_name(struct pci_dev *pdev)
+ #define RX_FRAGS_REFILL_WM	(RX_Q_LEN - MAX_RX_POST)
+ 
+ #define BE_MAX_LRO_DESCRIPTORS  16
+-#define BE_MAX_FRAGS_PER_FRAME  16
++#define BE_MAX_FRAGS_PER_FRAME  (min((u32) 16, (u32) MAX_SKB_FRAGS))
+ 
+ struct be_dma_mem {
+ 	void *va;
+diff --git a/drivers/net/benet/be_ethtool.c b/drivers/net/benet/be_ethtool.c
+index 9592f22..cccc541 100644
+--- a/drivers/net/benet/be_ethtool.c
++++ b/drivers/net/benet/be_ethtool.c
+@@ -162,8 +162,8 @@ be_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *coalesce)
+ 		return -EINVAL;
+ 
+ 	adapter->max_rx_coal = coalesce->rx_max_coalesced_frames;
+-	if (adapter->max_rx_coal > MAX_SKB_FRAGS)
+-		adapter->max_rx_coal = MAX_SKB_FRAGS - 1;
++	if (adapter->max_rx_coal > BE_MAX_FRAGS_PER_FRAME)
++		adapter->max_rx_coal = BE_MAX_FRAGS_PER_FRAME;
+ 
+ 	/* if AIC is being turned on now, start with an EQD of 0 */
+ 	if (rx_eq->enable_aic == 0 &&
+diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
+index 5c378b5..db19d17 100644
+--- a/drivers/net/benet/be_main.c
++++ b/drivers/net/benet/be_main.c
+@@ -682,7 +682,7 @@ static void skb_fill_rx_data(struct be_adapter *adapter,
+ {
+ 	struct be_queue_info *rxq = &adapter->rx_obj.q;
+ 	struct be_rx_page_info *page_info;
+-	u16 rxq_idx, i, num_rcvd;
++	u16 rxq_idx, i, num_rcvd, j;
+ 	u32 pktsize, hdr_len, curr_frag_len;
+ 	u8 *start;
+ 
+@@ -725,22 +725,33 @@ static void skb_fill_rx_data(struct be_adapter *adapter,
+ 
+ 	/* More frags present for this completion */
+ 	pktsize -= curr_frag_len; /* account for above copied frag */
+-	for (i = 1; i < num_rcvd; i++) {
++	for (i = 1, j = 0; i < num_rcvd; i++) {
+ 		index_inc(&rxq_idx, rxq->len);
+ 		page_info = get_rx_page_info(adapter, rxq_idx);
+ 
+ 		curr_frag_len = min(pktsize, rx_frag_size);
+ 
+-		skb_shinfo(skb)->frags[i].page = page_info->page;
+-		skb_shinfo(skb)->frags[i].page_offset = page_info->page_offset;
+-		skb_shinfo(skb)->frags[i].size = curr_frag_len;
++		/* Coalesce all frags from the same physical page in one slot */
++		if (page_info->page_offset == 0) {
++			/* Fresh page */
++			j++;
++			skb_shinfo(skb)->frags[j].page = page_info->page;
++			skb_shinfo(skb)->frags[j].page_offset =
++							page_info->page_offset;
++			skb_shinfo(skb)->frags[j].size = 0;
++			skb_shinfo(skb)->nr_frags++;
++		} else {
++			put_page(page_info->page);
++		}
++
++		skb_shinfo(skb)->frags[j].size += curr_frag_len;
+ 		skb->len += curr_frag_len;
+ 		skb->data_len += curr_frag_len;
+-		skb_shinfo(skb)->nr_frags++;
+ 		pktsize -= curr_frag_len;
+ 
+ 		memset(page_info, 0, sizeof(*page_info));
+ 	}
++	BUG_ON(j > MAX_SKB_FRAGS);
+ 
+ 	be_rx_stats_update(adapter, pktsize, num_rcvd);
+ 	return;
+@@ -803,7 +814,7 @@ static void be_rx_compl_process_lro(struct be_adapter *adapter,
+ 	struct skb_frag_struct rx_frags[BE_MAX_FRAGS_PER_FRAME];
+ 	struct be_queue_info *rxq = &adapter->rx_obj.q;
+ 	u32 num_rcvd, pkt_size, remaining, vlanf, curr_frag_len;
+-	u16 i, rxq_idx = 0, vid;
++	u16 i, rxq_idx = 0, vid, j;
+ 
+ 	num_rcvd = AMAP_GET_BITS(struct amap_eth_rx_compl, numfrags, rxcp);
+ 	pkt_size = AMAP_GET_BITS(struct amap_eth_rx_compl, pktsize, rxcp);
+@@ -811,20 +822,28 @@ static void be_rx_compl_process_lro(struct be_adapter *adapter,
+ 	rxq_idx = AMAP_GET_BITS(struct amap_eth_rx_compl, fragndx, rxcp);
+ 
+ 	remaining = pkt_size;
+-	for (i = 0; i < num_rcvd; i++) {
++	for (i = 0, j = -1; i < num_rcvd; i++) {
+ 		page_info = get_rx_page_info(adapter, rxq_idx);
+ 
+ 		curr_frag_len = min(remaining, rx_frag_size);
+ 
+-		rx_frags[i].page = page_info->page;
+-		rx_frags[i].page_offset = page_info->page_offset;
+-		rx_frags[i].size = curr_frag_len;
+-		remaining -= curr_frag_len;
++		/* Coalesce all frags from the same physical page in one slot */
++		if (i == 0 || page_info->page_offset == 0) {
++			/* First frag or Fresh page */
++			j++;
++			rx_frags[j].page = page_info->page;
++			rx_frags[j].page_offset = page_info->page_offset;
++			rx_frags[j].size = 0;
++		} else {
++			put_page(page_info->page);
++		}
++		rx_frags[j].size += curr_frag_len;
+ 
++		remaining -= curr_frag_len;
+ 		index_inc(&rxq_idx, rxq->len);
+-
+ 		memset(page_info, 0, sizeof(*page_info));
+ 	}
++	BUG_ON(j > MAX_SKB_FRAGS);
+ 
+ 	if (likely(!vlanf)) {
+ 		lro_receive_frags(&adapter->rx_obj.lro_mgr, rx_frags, pkt_size,
+diff --git a/drivers/net/e100.c b/drivers/net/e100.c
+index 0f9ee13..014dfb6 100644
+--- a/drivers/net/e100.c
++++ b/drivers/net/e100.c
+@@ -1762,6 +1762,9 @@ static int e100_rx_indicate(struct nic *nic, struct rx *rx,
+ 
+ 			if (ioread8(&nic->csr->scb.status) & rus_no_res)
+ 				nic->ru_running = RU_SUSPENDED;
++		pci_dma_sync_single_for_device(nic->pdev, rx->dma_addr,
++					       sizeof(struct rfd),
++					       PCI_DMA_BIDIRECTIONAL);
+ 		return -ENODATA;
+ 	}
+ 
+diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
+index 6714a9d..bb59ba4 100644
+--- a/drivers/net/sky2.c
++++ b/drivers/net/sky2.c
+@@ -2441,7 +2441,7 @@ static int sky2_status_intr(struct sky2_hw *hw, int to_do, u16 idx)
+ 			if (likely(status >> 16 == (status & 0xffff))) {
+ 				skb = sky2->rx_ring[sky2->rx_next].skb;
+ 				skb->ip_summed = CHECKSUM_COMPLETE;
+-				skb->csum = status & 0xffff;
++				skb->csum = le16_to_cpu(status);
+ 			} else {
+ 				printk(KERN_NOTICE PFX "%s: hardware receive "
+ 				       "checksum problem (status = %#x)\n",
+diff --git a/drivers/net/usb/cdc_subset.c b/drivers/net/usb/cdc_subset.c
+index c66b9c3..ca39ace 100644
+--- a/drivers/net/usb/cdc_subset.c
++++ b/drivers/net/usb/cdc_subset.c
+@@ -307,9 +307,10 @@ static const struct usb_device_id	products [] = {
+ 	USB_DEVICE (0x1286, 0x8001),    // "blob" bootloader
+ 	.driver_info =  (unsigned long) &blob_info,
+ }, {
+-	// Linux Ethernet/RNDIS gadget on pxa210/25x/26x, second config
+-	// e.g. Gumstix, current OpenZaurus, ...
+-	USB_DEVICE_VER (0x0525, 0xa4a2, 0x0203, 0x0203),
++	// Linux Ethernet/RNDIS gadget, mostly on PXA, second config
++	// e.g. Gumstix, current OpenZaurus, ... or anything else
++	// that just enables this gadget option.
++	USB_DEVICE (0x0525, 0xa4a2),
+ 	.driver_info =	(unsigned long) &linuxdev_info,
+ },
+ #endif
+diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
+index f46ba24..cd20df1 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
++++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
+@@ -3101,27 +3101,10 @@ static ssize_t show_power_level(struct device *d,
+ 				struct device_attribute *attr, char *buf)
+ {
+ 	struct iwl_priv *priv = dev_get_drvdata(d);
+-	int mode = priv->power_data.user_power_setting;
+-	int system = priv->power_data.system_power_setting;
+ 	int level = priv->power_data.power_mode;
+ 	char *p = buf;
+ 
+-	switch (system) {
+-	case IWL_POWER_SYS_AUTO:
+-		p += sprintf(p, "SYSTEM:auto");
+-		break;
+-	case IWL_POWER_SYS_AC:
+-		p += sprintf(p, "SYSTEM:ac");
+-		break;
+-	case IWL_POWER_SYS_BATTERY:
+-		p += sprintf(p, "SYSTEM:battery");
+-		break;
+-	}
+-
+-	p += sprintf(p, "\tMODE:%s", (mode < IWL_POWER_AUTO) ?
+-			"fixed" : "auto");
+-	p += sprintf(p, "\tINDEX:%d", level);
+-	p += sprintf(p, "\n");
++	p += sprintf(p, "%d\n", level);
+ 	return p - buf + 1;
+ }
+ 
+diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
+index ff4d0e4..f7cdae6 100644
+--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
++++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
+@@ -4623,27 +4623,10 @@ static ssize_t show_power_level(struct device *d,
+ 				struct device_attribute *attr, char *buf)
+ {
+ 	struct iwl_priv *priv = dev_get_drvdata(d);
+-	int mode = priv->power_data.user_power_setting;
+-	int system = priv->power_data.system_power_setting;
+ 	int level = priv->power_data.power_mode;
+ 	char *p = buf;
+ 
+-	switch (system) {
+-	case IWL_POWER_SYS_AUTO:
+-		p += sprintf(p, "SYSTEM:auto");
+-		break;
+-	case IWL_POWER_SYS_AC:
+-		p += sprintf(p, "SYSTEM:ac");
+-		break;
+-	case IWL_POWER_SYS_BATTERY:
+-		p += sprintf(p, "SYSTEM:battery");
+-		break;
+-	}
+-
+-	p += sprintf(p, "\tMODE:%s", (mode < IWL_POWER_AUTO) ?
+-			"fixed" : "auto");
+-	p += sprintf(p, "\tINDEX:%d", level);
+-	p += sprintf(p, "\n");
++	p += sprintf(p, "%d\n", level);
+ 	return p - buf + 1;
+ }
+ 
+diff --git a/drivers/parisc/eisa_eeprom.c b/drivers/parisc/eisa_eeprom.c
+index 685d94e..8c0b26e 100644
+--- a/drivers/parisc/eisa_eeprom.c
++++ b/drivers/parisc/eisa_eeprom.c
+@@ -55,7 +55,7 @@ static ssize_t eisa_eeprom_read(struct file * file,
+ 	ssize_t ret;
+ 	int i;
+ 	
+-	if (*ppos >= HPEE_MAX_LENGTH)
++	if (*ppos < 0 || *ppos >= HPEE_MAX_LENGTH)
+ 		return 0;
+ 	
+ 	count = *ppos + count < HPEE_MAX_LENGTH ? count : HPEE_MAX_LENGTH - *ppos;
+diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
+index 284ebac..0b159b5 100644
+--- a/drivers/platform/x86/Kconfig
++++ b/drivers/platform/x86/Kconfig
+@@ -265,6 +265,7 @@ config THINKPAD_ACPI_DOCK
+ 	bool "Legacy Docking Station Support"
+ 	depends on THINKPAD_ACPI
+ 	depends on ACPI_DOCK=n
++	depends on BROKEN
+ 	default n
+ 	---help---
+ 	  Allows the thinkpad_acpi driver to handle docking station events.
+@@ -278,7 +279,8 @@ config THINKPAD_ACPI_DOCK
+ config THINKPAD_ACPI_BAY
+ 	bool "Legacy Removable Bay Support"
+ 	depends on THINKPAD_ACPI
+-	default y
++	depends on BROKEN
++	default n
+ 	---help---
+ 	  Allows the thinkpad_acpi driver to handle removable bays.  It will
+ 	  electrically disable the device in the bay, and also generate
+diff --git a/drivers/scsi/libsas/sas_port.c b/drivers/scsi/libsas/sas_port.c
+index e6ac59c..fe8b74c 100644
+--- a/drivers/scsi/libsas/sas_port.c
++++ b/drivers/scsi/libsas/sas_port.c
+@@ -56,7 +56,7 @@ static void sas_form_port(struct asd_sas_phy *phy)
+ 		}
+ 	}
+ 
+-	/* find a port */
++	/* see if the phy should be part of a wide port */
+ 	spin_lock_irqsave(&sas_ha->phy_port_lock, flags);
+ 	for (i = 0; i < sas_ha->num_phys; i++) {
+ 		port = sas_ha->sas_port[i];
+@@ -69,12 +69,23 @@ static void sas_form_port(struct asd_sas_phy *phy)
+ 			SAS_DPRINTK("phy%d matched wide port%d\n", phy->id,
+ 				    port->id);
+ 			break;
+-		} else if (*(u64 *) port->sas_addr == 0 && port->num_phys==0) {
+-			memcpy(port->sas_addr, phy->sas_addr, SAS_ADDR_SIZE);
+-			break;
+ 		}
+ 		spin_unlock(&port->phy_list_lock);
+ 	}
++	/* The phy does not match any existing port, create a new one */
++	if (i == sas_ha->num_phys) {
++		for (i = 0; i < sas_ha->num_phys; i++) {
++			port = sas_ha->sas_port[i];
++			spin_lock(&port->phy_list_lock);
++			if (*(u64 *)port->sas_addr == 0
++				&& port->num_phys == 0) {
++				memcpy(port->sas_addr, phy->sas_addr,
++					SAS_ADDR_SIZE);
++				break;
++			}
++			spin_unlock(&port->phy_list_lock);
++		}
++	}
+ 
+ 	if (i >= sas_ha->num_phys) {
+ 		printk(KERN_NOTICE "%s: couldn't find a free port, bug?\n",
+diff --git a/drivers/staging/rt2870/2870_main_dev.c b/drivers/staging/rt2870/2870_main_dev.c
+index 9d59e31..04c764d 100644
+--- a/drivers/staging/rt2870/2870_main_dev.c
++++ b/drivers/staging/rt2870/2870_main_dev.c
+@@ -265,7 +265,7 @@ INT MlmeThread(
+ 	 */
+ 	DBGPRINT(RT_DEBUG_TRACE,( "<---%s\n",__func__));
+ 
+-	pObj->MLMEThr_task = NULL;
++	pObj->MLMEThr_pid = THREAD_PID_INIT_VALUE;
+ 
+ 	complete_and_exit (&pAd->mlmeComplete, 0);
+ 	return 0;
+@@ -373,7 +373,7 @@ INT RTUSBCmdThread(
+ 	 */
+ 	DBGPRINT(RT_DEBUG_TRACE,( "<---RTUSBCmdThread\n"));
+ 
+-	pObj->RTUSBCmdThr_task = NULL;
++	pObj->RTUSBCmdThr_pid = THREAD_PID_INIT_VALUE;
+ 
+ 	complete_and_exit (&pAd->CmdQComplete, 0);
+ 	return 0;
+@@ -467,7 +467,7 @@ INT TimerQThread(
+ 	 */
+ 	DBGPRINT(RT_DEBUG_TRACE,( "<---%s\n",__func__));
+ 
+-	pObj->TimerQThr_task = NULL;
++	pObj->TimerQThr_pid = THREAD_PID_INIT_VALUE;
+ 
+ 	complete_and_exit(&pAd->TimerQComplete, 0);
+ 	return 0;
+@@ -944,46 +944,69 @@ VOID RT28xxThreadTerminate(
+ 	RTUSBCancelPendingIRPs(pAd);
+ 
+ 	// Terminate Threads
+-	BUG_ON(pObj->TimerQThr_task == NULL);
+-	CHECK_PID_LEGALITY(task_pid(pObj->TimerQThr_task))
++	CHECK_PID_LEGALITY(pObj->TimerQThr_pid)
+ 	{
+ 		POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;
+ 
+-		printk(KERN_DEBUG "Terminate the TimerQThr pid=%d!\n",
+-			pid_nr(task_pid(pObj->TimerQThr_task)));
++		printk("Terminate the TimerQThr_pid=%d!\n", GET_PID_NUMBER(pObj->TimerQThr_pid));
+ 		mb();
+ 		pAd->TimerFunc_kill = 1;
+ 		mb();
+-		kthread_stop(pObj->TimerQThr_task);
+-		pObj->TimerQThr_task = NULL;
++		ret = KILL_THREAD_PID(pObj->TimerQThr_pid, SIGTERM, 1);
++		if (ret)
++		{
++			printk(KERN_WARNING "%s: unable to stop TimerQThread, pid=%d, ret=%d!\n",
++					pAd->net_dev->name, GET_PID_NUMBER(pObj->TimerQThr_pid), ret);
++		}
++		else
++		{
++			wait_for_completion(&pAd->TimerQComplete);
++			pObj->TimerQThr_pid = THREAD_PID_INIT_VALUE;
++		}
+ 	}
+ 
+-	BUG_ON(pObj->MLMEThr_task == NULL);
+-	CHECK_PID_LEGALITY(task_pid(pObj->MLMEThr_task))
++	CHECK_PID_LEGALITY(pObj->MLMEThr_pid)
+ 	{
+-		printk(KERN_DEBUG "Terminate the MLMEThr pid=%d!\n",
+-			pid_nr(task_pid(pObj->MLMEThr_task)));
++		printk("Terminate the MLMEThr_pid=%d!\n", GET_PID_NUMBER(pObj->MLMEThr_pid));
+ 		mb();
+ 		pAd->mlme_kill = 1;
+ 		//RT28XX_MLME_HANDLER(pAd);
+ 		mb();
+-		kthread_stop(pObj->MLMEThr_task);
+-		pObj->MLMEThr_task = NULL;
++		ret = KILL_THREAD_PID(pObj->MLMEThr_pid, SIGTERM, 1);
++		if (ret)
++		{
++			printk (KERN_WARNING "%s: unable to Mlme thread, pid=%d, ret=%d!\n",
++					pAd->net_dev->name, GET_PID_NUMBER(pObj->MLMEThr_pid), ret);
++		}
++		else
++		{
++			//wait_for_completion (&pAd->notify);
++			wait_for_completion (&pAd->mlmeComplete);
++			pObj->MLMEThr_pid = THREAD_PID_INIT_VALUE;
++		}
+ 	}
+ 
+-	BUG_ON(pObj->RTUSBCmdThr_task == NULL);
+-	CHECK_PID_LEGALITY(task_pid(pObj->RTUSBCmdThr_task))
++	CHECK_PID_LEGALITY(pObj->RTUSBCmdThr_pid)
+ 	{
+-		printk(KERN_DEBUG "Terminate the RTUSBCmdThr pid=%d!\n",
+-			pid_nr(task_pid(pObj->RTUSBCmdThr_task)));
++		printk("Terminate the RTUSBCmdThr_pid=%d!\n", GET_PID_NUMBER(pObj->RTUSBCmdThr_pid));
+ 		mb();
+ 		NdisAcquireSpinLock(&pAd->CmdQLock);
+ 		pAd->CmdQ.CmdQState = RT2870_THREAD_STOPED;
+ 		NdisReleaseSpinLock(&pAd->CmdQLock);
+ 		mb();
+ 		//RTUSBCMDUp(pAd);
+-		kthread_stop(pObj->RTUSBCmdThr_task);
+-		pObj->RTUSBCmdThr_task = NULL;
++		ret = KILL_THREAD_PID(pObj->RTUSBCmdThr_pid, SIGTERM, 1);
++		if (ret)
++		{
++			printk(KERN_WARNING "%s: unable to RTUSBCmd thread, pid=%d, ret=%d!\n",
++					pAd->net_dev->name, GET_PID_NUMBER(pObj->RTUSBCmdThr_pid), ret);
++		}
++		else
++		{
++			//wait_for_completion (&pAd->notify);
++			wait_for_completion (&pAd->CmdQComplete);
++			pObj->RTUSBCmdThr_pid = THREAD_PID_INIT_VALUE;
++	}
+ 	}
+ 
+ 
+@@ -1044,7 +1067,7 @@ BOOLEAN RT28XXChipsetCheck(
+ 		if (dev_p->descriptor.idVendor == rtusb_usb_id[i].idVendor &&
+ 			dev_p->descriptor.idProduct == rtusb_usb_id[i].idProduct)
+ 		{
+-			printk(KERN_DEBUG "rt2870: idVendor = 0x%x, idProduct = 0x%x\n",
++			printk("rt2870: idVendor = 0x%x, idProduct = 0x%x\n",
+ 					dev_p->descriptor.idVendor, dev_p->descriptor.idProduct);
+ 			break;
+ 		}
+diff --git a/drivers/staging/rt2870/common/2870_rtmp_init.c b/drivers/staging/rt2870/common/2870_rtmp_init.c
+index cb16d2f..9f5143b 100644
+--- a/drivers/staging/rt2870/common/2870_rtmp_init.c
++++ b/drivers/staging/rt2870/common/2870_rtmp_init.c
+@@ -727,8 +727,8 @@ NDIS_STATUS AdapterBlockAllocateMemory(
+ 
+ 	usb_dev = pObj->pUsb_Dev;
+ 
+-	pObj->MLMEThr_task		= NULL;
+-	pObj->RTUSBCmdThr_task	= NULL;
++	pObj->MLMEThr_pid		= THREAD_PID_INIT_VALUE;
++	pObj->RTUSBCmdThr_pid	= THREAD_PID_INIT_VALUE;
+ 
+ 	*ppAd = (PVOID)vmalloc(sizeof(RTMP_ADAPTER));
+ 
+@@ -765,7 +765,7 @@ NDIS_STATUS	 CreateThreads(
+ {
+ 	PRTMP_ADAPTER pAd = net_dev->ml_priv;
+ 	POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie;
+-	struct task_struct *tsk;
++	pid_t pid_number = -1;
+ 
+ 	//init_MUTEX(&(pAd->usbdev_semaphore));
+ 
+@@ -779,39 +779,36 @@ NDIS_STATUS	 CreateThreads(
+ 	init_completion (&pAd->TimerQComplete);
+ 
+ 	// Creat MLME Thread
+-	pObj->MLMEThr_task = NULL;
+-	tsk = kthread_run(MlmeThread, pAd, pAd->net_dev->name);
+-
+-	if (IS_ERR(tsk)) {
++	pObj->MLMEThr_pid= THREAD_PID_INIT_VALUE;
++	pid_number = kernel_thread(MlmeThread, pAd, CLONE_VM);
++	if (pid_number < 0)
++	{
+ 		printk (KERN_WARNING "%s: unable to start Mlme thread\n",pAd->net_dev->name);
+ 		return NDIS_STATUS_FAILURE;
+ 	}
+-
+-	pObj->MLMEThr_task = tsk;
++	pObj->MLMEThr_pid = GET_PID(pid_number);
+ 	// Wait for the thread to start
+ 	wait_for_completion(&(pAd->mlmeComplete));
+ 
+ 	// Creat Command Thread
+-	pObj->RTUSBCmdThr_task = NULL;
+-	tsk = kthread_run(RTUSBCmdThread, pAd, pAd->net_dev->name);
+-
+-	if (IS_ERR(tsk) < 0)
++	pObj->RTUSBCmdThr_pid= THREAD_PID_INIT_VALUE;
++	pid_number = kernel_thread(RTUSBCmdThread, pAd, CLONE_VM);
++	if (pid_number < 0)
+ 	{
+ 		printk (KERN_WARNING "%s: unable to start RTUSBCmd thread\n",pAd->net_dev->name);
+ 		return NDIS_STATUS_FAILURE;
+ 	}
+-
+-	pObj->RTUSBCmdThr_task = tsk;
++	pObj->RTUSBCmdThr_pid = GET_PID(pid_number);
+ 	wait_for_completion(&(pAd->CmdQComplete));
+ 
+-	pObj->TimerQThr_task = NULL;
+-	tsk = kthread_run(TimerQThread, pAd, pAd->net_dev->name);
+-	if (IS_ERR(tsk) < 0)
++	pObj->TimerQThr_pid= THREAD_PID_INIT_VALUE;
++	pid_number = kernel_thread(TimerQThread, pAd, CLONE_VM);
++	if (pid_number < 0)
+ 	{
+ 		printk (KERN_WARNING "%s: unable to start TimerQThread\n",pAd->net_dev->name);
+ 		return NDIS_STATUS_FAILURE;
+ 	}
+-	pObj->TimerQThr_task = tsk;
++	pObj->TimerQThr_pid = GET_PID(pid_number);
+ 	// Wait for the thread to start
+ 	wait_for_completion(&(pAd->TimerQComplete));
+ 
+diff --git a/drivers/staging/rt2870/common/cmm_data.c b/drivers/staging/rt2870/common/cmm_data.c
+index f8e0ebd..fd809ab 100644
+--- a/drivers/staging/rt2870/common/cmm_data.c
++++ b/drivers/staging/rt2870/common/cmm_data.c
+@@ -709,6 +709,9 @@ BOOLEAN RTMP_FillTxBlkInfo(
+ 	}
+ 
+ 	return TRUE;
++
++FillTxBlkErr:
++	return FALSE;
+ }
+ 
+ 
+diff --git a/drivers/staging/rt2870/common/rtmp_init.c b/drivers/staging/rt2870/common/rtmp_init.c
+index 099b6a8..870a00d 100644
+--- a/drivers/staging/rt2870/common/rtmp_init.c
++++ b/drivers/staging/rt2870/common/rtmp_init.c
+@@ -3655,7 +3655,7 @@ VOID	UserCfgInit(
+ #ifdef RALINK_28xx_QA
+ 	//pAd->ate.Repeat = 0;
+ 	pAd->ate.TxStatus = 0;
+-	pAd->ate.AtePid = NULL;
++	pAd->ate.AtePid = THREAD_PID_INIT_VALUE;
+ #endif // RALINK_28xx_QA //
+ #endif // RALINK_ATE //
+ 
+diff --git a/drivers/staging/rt2870/common/rtusb_io.c b/drivers/staging/rt2870/common/rtusb_io.c
+index afde136..6db443e 100644
+--- a/drivers/staging/rt2870/common/rtusb_io.c
++++ b/drivers/staging/rt2870/common/rtusb_io.c
+@@ -958,8 +958,7 @@ NDIS_STATUS	RTUSBEnqueueCmdFromNdis(
+ 	POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie;
+ 
+ 
+-	BUG_ON(pObj->RTUSBCmdThr_task == NULL);
+-	CHECK_PID_LEGALITY(task_pid(pObj->RTUSBCmdThr_task))
++	CHECK_PID_LEGALITY(pObj->RTUSBCmdThr_pid)
+ 		return (NDIS_STATUS_RESOURCES);
+ 
+ 	status = RTMPAllocateMemory((PVOID *)&cmdqelmt, sizeof(CmdQElmt));
+diff --git a/drivers/staging/rt2870/rt2870.h b/drivers/staging/rt2870/rt2870.h
+index fef14a4..39fa918 100644
+--- a/drivers/staging/rt2870/rt2870.h
++++ b/drivers/staging/rt2870/rt2870.h
+@@ -580,16 +580,14 @@ VOID RTUSBBulkRxComplete(purbb_t pUrb, struct pt_regs *pt_regs);
+ #define RTUSBMlmeUp(pAd)	        \
+ {								    \
+ 	POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie;	\
+-	BUG_ON(pObj->MLMEThr_task == NULL);		    \
+-	CHECK_PID_LEGALITY(task_pid(pObj->MLMEThr_task))		    \
++	CHECK_PID_LEGALITY(pObj->MLMEThr_pid)		    \
+         up(&(pAd->mlme_semaphore)); \
+ }
+ 
+ #define RTUSBCMDUp(pAd)	                \
+ {									    \
+ 	POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie;	\
+-	BUG_ON(pObj->RTUSBCmdThr_task == NULL);	    \
+-	CHECK_PID_LEGALITY(task_pid(pObj->RTUSBCmdThr_task))	    \
++	CHECK_PID_LEGALITY(pObj->RTUSBCmdThr_pid)	    \
+ 	    up(&(pAd->RTUSBCmd_semaphore)); \
+ }
+ 
+diff --git a/drivers/staging/rt2870/rt_linux.h b/drivers/staging/rt2870/rt_linux.h
+index 5a6ee6a..49ad37f 100644
+--- a/drivers/staging/rt2870/rt_linux.h
++++ b/drivers/staging/rt2870/rt_linux.h
+@@ -44,7 +44,6 @@
+ #include <linux/module.h>
+ #include <linux/version.h>
+ #include <linux/kernel.h>
+-#include <linux/kthread.h>
+ 
+ #include <linux/spinlock.h>
+ #include <linux/init.h>
+@@ -166,12 +165,14 @@ typedef int (*HARD_START_XMIT_FUNC)(struct sk_buff *skb, struct net_device *net_
+ 
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
+ typedef	struct pid *	THREAD_PID;
++#define	THREAD_PID_INIT_VALUE	NULL
+ #define	GET_PID(_v)	find_get_pid(_v)
+ #define	GET_PID_NUMBER(_v)	pid_nr(_v)
+ #define CHECK_PID_LEGALITY(_pid)	if (pid_nr(_pid) >= 0)
+ #define KILL_THREAD_PID(_A, _B, _C)	kill_pid(_A, _B, _C)
+ #else
+ typedef	pid_t	THREAD_PID;
++#define	THREAD_PID_INIT_VALUE	-1
+ #define	GET_PID(_v)	_v
+ #define	GET_PID_NUMBER(_v)	_v
+ #define CHECK_PID_LEGALITY(_pid)	if (_pid >= 0)
+@@ -187,11 +188,11 @@ struct os_lock  {
+ struct os_cookie {
+ 
+ #ifdef RT2870
+-	struct usb_device	*pUsb_Dev;
++	struct usb_device		*pUsb_Dev;
+ 
+-	struct task_struct	*MLMEThr_task;
+-	struct task_struct	*RTUSBCmdThr_task;
+-	struct task_struct	*TimerQThr_task;
++	THREAD_PID				MLMEThr_pid;
++	THREAD_PID				RTUSBCmdThr_pid;
++	THREAD_PID				TimerQThr_pid;
+ #endif // RT2870 //
+ 
+ 	struct tasklet_struct 	rx_done_task;
+diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
+index ef03927..096badf 100644
+--- a/drivers/usb/core/devio.c
++++ b/drivers/usb/core/devio.c
+@@ -582,7 +582,7 @@ static int usbdev_open(struct inode *inode, struct file *file)
+ 	if (!ps)
+ 		goto out;
+ 
+-	ret = -ENOENT;
++	ret = -ENODEV;
+ 
+ 	/* usbdev device-node */
+ 	if (imajor(inode) == USB_DEVICE_MAJOR)
+@@ -1308,7 +1308,8 @@ static int get_urb32(struct usbdevfs_urb *kurb,
+ 		     struct usbdevfs_urb32 __user *uurb)
+ {
+ 	__u32  uptr;
+-	if (get_user(kurb->type, &uurb->type) ||
++	if (!access_ok(VERIFY_READ, uurb, sizeof(*uurb)) ||
++	    __get_user(kurb->type, &uurb->type) ||
+ 	    __get_user(kurb->endpoint, &uurb->endpoint) ||
+ 	    __get_user(kurb->status, &uurb->status) ||
+ 	    __get_user(kurb->flags, &uurb->flags) ||
+@@ -1523,8 +1524,9 @@ static int proc_ioctl_compat(struct dev_state *ps, compat_uptr_t arg)
+ 	u32 udata;
+ 
+ 	uioc = compat_ptr((long)arg);
+-	if (get_user(ctrl.ifno, &uioc->ifno) ||
+-	    get_user(ctrl.ioctl_code, &uioc->ioctl_code) ||
++	if (!access_ok(VERIFY_READ, uioc, sizeof(*uioc)) ||
++	    __get_user(ctrl.ifno, &uioc->ifno) ||
++	    __get_user(ctrl.ioctl_code, &uioc->ioctl_code) ||
+ 	    __get_user(udata, &uioc->data))
+ 		return -EFAULT;
+ 	ctrl.data = compat_ptr(udata);
+diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
+index 9722512..91c0e01 100644
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -672,6 +672,9 @@ static struct usb_device_id id_table_combined [] = {
+ 	{ USB_DEVICE(JETI_VID, JETI_SPC1201_PID) },
+ 	{ USB_DEVICE(MARVELL_VID, MARVELL_SHEEVAPLUG_PID),
+ 		.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
++	{ USB_DEVICE(BAYER_VID, BAYER_CONTOUR_CABLE_PID) },
++	{ USB_DEVICE(FTDI_VID, MARVELL_OPENRD_PID),
++		.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+ 	{ },					/* Optional parameter entry */
+ 	{ }					/* Terminating entry */
+ };
+diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h
+index 12330fa..3f89e3c 100644
+--- a/drivers/usb/serial/ftdi_sio.h
++++ b/drivers/usb/serial/ftdi_sio.h
+@@ -926,6 +926,20 @@
+ #define MARVELL_SHEEVAPLUG_PID	0x9e8f
+ 
+ /*
++ * Bayer Ascensia Contour blood glucose meter USB-converter cable.
++ * http://winglucofacts.com/cables/
++ */
++#define BAYER_VID                      0x1A79
++#define BAYER_CONTOUR_CABLE_PID        0x6001
++
++/*
++ * Marvell OpenRD Base, Client
++ * http://www.open-rd.org
++ * OpenRD Base, Client use VID 0x0403
++ */
++#define MARVELL_OPENRD_PID	0x9e90
++
++/*
+  *   BmRequestType:  1100 0000b
+  *   bRequest:       FTDI_E2_READ
+  *   wValue:         0
+diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
+index fcb3202..e20dc52 100644
+--- a/drivers/usb/storage/transport.c
++++ b/drivers/usb/storage/transport.c
+@@ -961,7 +961,7 @@ int usb_stor_Bulk_max_lun(struct us_data *us)
+ 				 US_BULK_GET_MAX_LUN, 
+ 				 USB_DIR_IN | USB_TYPE_CLASS | 
+ 				 USB_RECIP_INTERFACE,
+-				 0, us->ifnum, us->iobuf, 1, HZ);
++				 0, us->ifnum, us->iobuf, 1, 10*HZ);
+ 
+ 	US_DEBUGP("GetMaxLUN command result is %d, data is %d\n", 
+ 		  result, us->iobuf[0]);
+diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
+index 4b8b690..1d76bf0 100644
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -838,6 +838,13 @@ UNUSUAL_DEV( 0x066f, 0x8000, 0x0001, 0x0001,
+ 		US_SC_DEVICE, US_PR_DEVICE, NULL,
+ 		US_FL_FIX_CAPACITY ),
+ 
++/* Reported by Rogerio Brito <rbrito@ime.usp.br> */
++UNUSUAL_DEV( 0x067b, 0x2317, 0x0001, 0x001,
++		"Prolific Technology, Inc.",
++		"Mass Storage Device",
++		US_SC_DEVICE, US_PR_DEVICE, NULL,
++		US_FL_NOT_LOCKABLE ),
++
+ /* Reported by Richard -=[]=- <micro_flyer@hotmail.com> */
+ /* Change to bcdDeviceMin (0x0100 to 0x0001) reported by
+  * Thomas Bartosik <tbartdev@gmx-topmail.de> */
+diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
+index 697f6b5..e92f229 100644
+--- a/fs/binfmt_flat.c
++++ b/fs/binfmt_flat.c
+@@ -828,15 +828,22 @@ static int load_flat_shared_library(int id, struct lib_info *libs)
+ 	if (IS_ERR(bprm.file))
+ 		return res;
+ 
++	bprm.cred = prepare_exec_creds();
++	res = -ENOMEM;
++	if (!bprm.cred)
++		goto out;
++
+ 	res = prepare_binprm(&bprm);
+ 
+ 	if (res <= (unsigned long)-4096)
+ 		res = load_flat_file(&bprm, libs, id, NULL);
+-	if (bprm.file) {
+-		allow_write_access(bprm.file);
+-		fput(bprm.file);
+-		bprm.file = NULL;
+-	}
++
++	abort_creds(bprm.cred);
++
++out:
++	allow_write_access(bprm.file);
++	fput(bprm.file);
++
+ 	return(res);
+ }
+ 
+diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c
+index 83d6275..3236d1a 100644
+--- a/fs/cifs/cifs_dfs_ref.c
++++ b/fs/cifs/cifs_dfs_ref.c
+@@ -55,7 +55,7 @@ void cifs_dfs_release_automount_timer(void)
+  * i.e. strips from UNC trailing path that is not part of share
+  * name and fixup missing '\' in the begining of DFS node refferal
+  * if neccessary.
+- * Returns pointer to share name on success or NULL on error.
++ * Returns pointer to share name on success or ERR_PTR on error.
+  * Caller is responsible for freeing returned string.
+  */
+ static char *cifs_get_share_name(const char *node_name)
+@@ -68,7 +68,7 @@ static char *cifs_get_share_name(const char *node_name)
+ 	UNC = kmalloc(len+2 /*for term null and additional \ if it's missed */,
+ 			 GFP_KERNEL);
+ 	if (!UNC)
+-		return NULL;
++		return ERR_PTR(-ENOMEM);
+ 
+ 	/* get share name and server name */
+ 	if (node_name[1] != '\\') {
+@@ -87,7 +87,7 @@ static char *cifs_get_share_name(const char *node_name)
+ 		cERROR(1, ("%s: no server name end in node name: %s",
+ 			__func__, node_name));
+ 		kfree(UNC);
+-		return NULL;
++		return ERR_PTR(-EINVAL);
+ 	}
+ 
+ 	/* find sharename end */
+@@ -133,6 +133,12 @@ char *cifs_compose_mount_options(const char *sb_mountdata,
+ 		return ERR_PTR(-EINVAL);
+ 
+ 	*devname = cifs_get_share_name(ref->node_name);
++	if (IS_ERR(*devname)) {
++		rc = PTR_ERR(*devname);
++		*devname = NULL;
++		goto compose_mount_options_err;
++	}
++
+ 	rc = dns_resolve_server_name_to_ip(*devname, &srvIP);
+ 	if (rc != 0) {
+ 		cERROR(1, ("%s: Failed to resolve server part of %s to IP: %d",
+diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
+index 1dc14f2..0b0b9df 100644
+--- a/fs/cifs/connect.c
++++ b/fs/cifs/connect.c
+@@ -2563,11 +2563,20 @@ remote_path_check:
+ 
+ 			if (mount_data != mount_data_global)
+ 				kfree(mount_data);
++
+ 			mount_data = cifs_compose_mount_options(
+ 					cifs_sb->mountdata, full_path + 1,
+ 					referrals, &fake_devname);
+-			kfree(fake_devname);
++
+ 			free_dfs_info_array(referrals, num_referrals);
++			kfree(fake_devname);
++			kfree(full_path);
++
++			if (IS_ERR(mount_data)) {
++				rc = PTR_ERR(mount_data);
++				mount_data = NULL;
++				goto mount_fail_check;
++			}
+ 
+ 			if (tcon)
+ 				cifs_put_tcon(tcon);
+@@ -2575,8 +2584,6 @@ remote_path_check:
+ 				cifs_put_smb_ses(pSesInfo);
+ 
+ 			cleanup_volume_info(&volume_info);
+-			FreeXid(xid);
+-			kfree(full_path);
+ 			referral_walks_count++;
+ 			goto try_mount_again;
+ 		}
+diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
+index b83f6bc..e2a82c1 100644
+--- a/fs/compat_ioctl.c
++++ b/fs/compat_ioctl.c
+@@ -1915,6 +1915,7 @@ COMPATIBLE_IOCTL(FIONCLEX)
+ COMPATIBLE_IOCTL(FIOASYNC)
+ COMPATIBLE_IOCTL(FIONBIO)
+ COMPATIBLE_IOCTL(FIONREAD)  /* This is also TIOCINQ */
++COMPATIBLE_IOCTL(FS_IOC_FIEMAP)
+ /* 0x00 */
+ COMPATIBLE_IOCTL(FIBMAP)
+ COMPATIBLE_IOCTL(FIGETBSZ)
+diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
+index 08f6b04..630feb3 100644
+--- a/fs/nfs/direct.c
++++ b/fs/nfs/direct.c
+@@ -255,7 +255,7 @@ static void nfs_direct_read_release(void *calldata)
+ 
+ 	if (put_dreq(dreq))
+ 		nfs_direct_complete(dreq);
+-	nfs_readdata_release(calldata);
++	nfs_readdata_free(data);
+ }
+ 
+ static const struct rpc_call_ops nfs_read_direct_ops = {
+@@ -311,14 +311,14 @@ static ssize_t nfs_direct_read_schedule_segment(struct nfs_direct_req *dreq,
+ 					data->npages, 1, 0, data->pagevec, NULL);
+ 		up_read(&current->mm->mmap_sem);
+ 		if (result < 0) {
+-			nfs_readdata_release(data);
++			nfs_readdata_free(data);
+ 			break;
+ 		}
+ 		if ((unsigned)result < data->npages) {
+ 			bytes = result * PAGE_SIZE;
+ 			if (bytes <= pgbase) {
+ 				nfs_direct_release_pages(data->pagevec, result);
+-				nfs_readdata_release(data);
++				nfs_readdata_free(data);
+ 				break;
+ 			}
+ 			bytes -= pgbase;
+@@ -331,7 +331,7 @@ static ssize_t nfs_direct_read_schedule_segment(struct nfs_direct_req *dreq,
+ 		data->inode = inode;
+ 		data->cred = msg.rpc_cred;
+ 		data->args.fh = NFS_FH(inode);
+-		data->args.context = get_nfs_open_context(ctx);
++		data->args.context = ctx;
+ 		data->args.offset = pos;
+ 		data->args.pgbase = pgbase;
+ 		data->args.pages = data->pagevec;
+@@ -438,7 +438,7 @@ static void nfs_direct_free_writedata(struct nfs_direct_req *dreq)
+ 		struct nfs_write_data *data = list_entry(dreq->rewrite_list.next, struct nfs_write_data, pages);
+ 		list_del(&data->pages);
+ 		nfs_direct_release_pages(data->pagevec, data->npages);
+-		nfs_writedata_release(data);
++		nfs_writedata_free(data);
+ 	}
+ }
+ 
+@@ -531,7 +531,7 @@ static void nfs_direct_commit_release(void *calldata)
+ 
+ 	dprintk("NFS: %5u commit returned %d\n", data->task.tk_pid, status);
+ 	nfs_direct_write_complete(dreq, data->inode);
+-	nfs_commitdata_release(calldata);
++	nfs_commit_free(data);
+ }
+ 
+ static const struct rpc_call_ops nfs_commit_direct_ops = {
+@@ -564,7 +564,7 @@ static void nfs_direct_commit_schedule(struct nfs_direct_req *dreq)
+ 	data->args.fh = NFS_FH(data->inode);
+ 	data->args.offset = 0;
+ 	data->args.count = 0;
+-	data->args.context = get_nfs_open_context(dreq->ctx);
++	data->args.context = dreq->ctx;
+ 	data->res.count = 0;
+ 	data->res.fattr = &data->fattr;
+ 	data->res.verf = &data->verf;
+@@ -725,14 +725,14 @@ static ssize_t nfs_direct_write_schedule_segment(struct nfs_direct_req *dreq,
+ 					data->npages, 0, 0, data->pagevec, NULL);
+ 		up_read(&current->mm->mmap_sem);
+ 		if (result < 0) {
+-			nfs_writedata_release(data);
++			nfs_writedata_free(data);
+ 			break;
+ 		}
+ 		if ((unsigned)result < data->npages) {
+ 			bytes = result * PAGE_SIZE;
+ 			if (bytes <= pgbase) {
+ 				nfs_direct_release_pages(data->pagevec, result);
+-				nfs_writedata_release(data);
++				nfs_writedata_free(data);
+ 				break;
+ 			}
+ 			bytes -= pgbase;
+@@ -747,7 +747,7 @@ static ssize_t nfs_direct_write_schedule_segment(struct nfs_direct_req *dreq,
+ 		data->inode = inode;
+ 		data->cred = msg.rpc_cred;
+ 		data->args.fh = NFS_FH(inode);
+-		data->args.context = get_nfs_open_context(ctx);
++		data->args.context = ctx;
+ 		data->args.offset = pos;
+ 		data->args.pgbase = pgbase;
+ 		data->args.pages = data->pagevec;
+diff --git a/fs/nfs/read.c b/fs/nfs/read.c
+index 4ace3c5..eea5bd2 100644
+--- a/fs/nfs/read.c
++++ b/fs/nfs/read.c
+@@ -59,17 +59,15 @@ struct nfs_read_data *nfs_readdata_alloc(unsigned int pagecount)
+ 	return p;
+ }
+ 
+-static void nfs_readdata_free(struct nfs_read_data *p)
++void nfs_readdata_free(struct nfs_read_data *p)
+ {
+ 	if (p && (p->pagevec != &p->page_array[0]))
+ 		kfree(p->pagevec);
+ 	mempool_free(p, nfs_rdata_mempool);
+ }
+ 
+-void nfs_readdata_release(void *data)
++static void nfs_readdata_release(struct nfs_read_data *rdata)
+ {
+-	struct nfs_read_data *rdata = data;
+-
+ 	put_nfs_open_context(rdata->args.context);
+ 	nfs_readdata_free(rdata);
+ }
+diff --git a/fs/nfs/write.c b/fs/nfs/write.c
+index e560a78..9cce370 100644
+--- a/fs/nfs/write.c
++++ b/fs/nfs/write.c
+@@ -84,17 +84,15 @@ struct nfs_write_data *nfs_writedata_alloc(unsigned int pagecount)
+ 	return p;
+ }
+ 
+-static void nfs_writedata_free(struct nfs_write_data *p)
++void nfs_writedata_free(struct nfs_write_data *p)
+ {
+ 	if (p && (p->pagevec != &p->page_array[0]))
+ 		kfree(p->pagevec);
+ 	mempool_free(p, nfs_wdata_mempool);
+ }
+ 
+-void nfs_writedata_release(void *data)
++static void nfs_writedata_release(struct nfs_write_data *wdata)
+ {
+-	struct nfs_write_data *wdata = data;
+-
+ 	put_nfs_open_context(wdata->args.context);
+ 	nfs_writedata_free(wdata);
+ }
+diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c
+index 1779ddc..18ffb2e 100644
+--- a/fs/nilfs2/segment.c
++++ b/fs/nilfs2/segment.c
+@@ -1876,12 +1876,26 @@ static void nilfs_end_page_io(struct page *page, int err)
+ 	if (!page)
+ 		return;
+ 
+-	if (buffer_nilfs_node(page_buffers(page)) && !PageWriteback(page))
++	if (buffer_nilfs_node(page_buffers(page)) && !PageWriteback(page)) {
+ 		/*
+ 		 * For b-tree node pages, this function may be called twice
+ 		 * or more because they might be split in a segment.
+ 		 */
++		if (PageDirty(page)) {
++			/*
++			 * For pages holding split b-tree node buffers, dirty
++			 * flag on the buffers may be cleared discretely.
++			 * In that case, the page is once redirtied for
++			 * remaining buffers, and it must be cancelled if
++			 * all the buffers get cleaned later.
++			 */
++			lock_page(page);
++			if (nilfs_page_buffers_clean(page))
++				__nilfs_clear_page_dirty(page);
++			unlock_page(page);
++		}
+ 		return;
++	}
+ 
+ 	__nilfs_end_page_io(page, err);
+ }
+diff --git a/fs/proc/base.c b/fs/proc/base.c
+index 3326bbf..f705cfd 100644
+--- a/fs/proc/base.c
++++ b/fs/proc/base.c
+@@ -234,23 +234,20 @@ static int check_mem_permission(struct task_struct *task)
+ 
+ struct mm_struct *mm_for_maps(struct task_struct *task)
+ {
+-	struct mm_struct *mm = get_task_mm(task);
+-	if (!mm)
++	struct mm_struct *mm;
++
++	if (mutex_lock_killable(&task->cred_exec_mutex))
+ 		return NULL;
+-	down_read(&mm->mmap_sem);
+-	task_lock(task);
+-	if (task->mm != mm)
+-		goto out;
+-	if (task->mm != current->mm &&
+-	    __ptrace_may_access(task, PTRACE_MODE_READ) < 0)
+-		goto out;
+-	task_unlock(task);
++
++	mm = get_task_mm(task);
++	if (mm && mm != current->mm &&
++			!ptrace_may_access(task, PTRACE_MODE_READ)) {
++		mmput(mm);
++		mm = NULL;
++	}
++	mutex_unlock(&task->cred_exec_mutex);
++
+ 	return mm;
+-out:
+-	task_unlock(task);
+-	up_read(&mm->mmap_sem);
+-	mmput(mm);
+-	return NULL;
+ }
+ 
+ static int proc_pid_cmdline(struct task_struct *task, char * buffer)
+diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
+index 6f61b7c..9bd8be1 100644
+--- a/fs/proc/task_mmu.c
++++ b/fs/proc/task_mmu.c
+@@ -119,6 +119,7 @@ static void *m_start(struct seq_file *m, loff_t *pos)
+ 	mm = mm_for_maps(priv->task);
+ 	if (!mm)
+ 		return NULL;
++	down_read(&mm->mmap_sem);
+ 
+ 	tail_vma = get_gate_vma(priv->task);
+ 	priv->tail_vma = tail_vma;
+diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
+index 64a72e2..8f5c05d 100644
+--- a/fs/proc/task_nommu.c
++++ b/fs/proc/task_nommu.c
+@@ -189,6 +189,7 @@ static void *m_start(struct seq_file *m, loff_t *pos)
+ 		priv->task = NULL;
+ 		return NULL;
+ 	}
++	down_read(&mm->mmap_sem);
+ 
+ 	/* start from the Nth VMA */
+ 	for (p = rb_first(&mm->mm_rb); p; p = rb_next(p))
+diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
+index d88d0fa..14f2d71 100644
+--- a/fs/sysfs/dir.c
++++ b/fs/sysfs/dir.c
+@@ -939,8 +939,10 @@ again:
+ 	/* Remove from old parent's list and insert into new parent's list. */
+ 	sysfs_unlink_sibling(sd);
+ 	sysfs_get(new_parent_sd);
++	drop_nlink(old_parent->d_inode);
+ 	sysfs_put(sd->s_parent);
+ 	sd->s_parent = new_parent_sd;
++	inc_nlink(new_parent->d_inode);
+ 	sysfs_link_sibling(sd);
+ 
+  out_unlock:
+diff --git a/include/linux/ide.h b/include/linux/ide.h
+index 9fed365..ca051f3 100644
+--- a/include/linux/ide.h
++++ b/include/linux/ide.h
+@@ -1384,7 +1384,6 @@ int ide_in_drive_list(u16 *, const struct drive_list_entry *);
+ #ifdef CONFIG_BLK_DEV_IDEDMA
+ int ide_dma_good_drive(ide_drive_t *);
+ int __ide_dma_bad_drive(ide_drive_t *);
+-int ide_id_dma_bug(ide_drive_t *);
+ 
+ u8 ide_find_dma_mode(ide_drive_t *, u8);
+ 
+@@ -1425,7 +1424,6 @@ void ide_dma_lost_irq(ide_drive_t *);
+ ide_startstop_t ide_dma_timeout_retry(ide_drive_t *, int);
+ 
+ #else
+-static inline int ide_id_dma_bug(ide_drive_t *drive) { return 0; }
+ static inline u8 ide_find_dma_mode(ide_drive_t *drive, u8 speed) { return 0; }
+ static inline u8 ide_max_dma_mode(ide_drive_t *drive) { return 0; }
+ static inline void ide_dma_off_quietly(ide_drive_t *drive) { ; }
+diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
+index 5a96a1a..a28daad 100644
+--- a/include/linux/netdevice.h
++++ b/include/linux/netdevice.h
+@@ -1856,15 +1856,14 @@ static inline int net_gso_ok(int features, int gso_type)
+ 
+ static inline int skb_gso_ok(struct sk_buff *skb, int features)
+ {
+-	return net_gso_ok(features, skb_shinfo(skb)->gso_type);
++	return net_gso_ok(features, skb_shinfo(skb)->gso_type) &&
++	       (!skb_shinfo(skb)->frag_list || (features & NETIF_F_FRAGLIST));
+ }
+ 
+ static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb)
+ {
+ 	return skb_is_gso(skb) &&
+ 	       (!skb_gso_ok(skb, dev->features) ||
+-	        (skb_shinfo(skb)->frag_list &&
+-	         !(dev->features & NETIF_F_FRAGLIST)) ||
+ 		unlikely(skb->ip_summed != CHECKSUM_PARTIAL));
+ }
+ 
+diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
+index fdffb41..f6b9024 100644
+--- a/include/linux/nfs_fs.h
++++ b/include/linux/nfs_fs.h
+@@ -473,7 +473,6 @@ extern int  nfs_writepages(struct address_space *, struct writeback_control *);
+ extern int  nfs_flush_incompatible(struct file *file, struct page *page);
+ extern int  nfs_updatepage(struct file *, struct page *, unsigned int, unsigned int);
+ extern int nfs_writeback_done(struct rpc_task *, struct nfs_write_data *);
+-extern void nfs_writedata_release(void *);
+ 
+ /*
+  * Try to write back everything synchronously (but check the
+@@ -488,7 +487,6 @@ extern int nfs_wb_page_cancel(struct inode *inode, struct page* page);
+ extern int  nfs_commit_inode(struct inode *, int);
+ extern struct nfs_write_data *nfs_commitdata_alloc(void);
+ extern void nfs_commit_free(struct nfs_write_data *wdata);
+-extern void nfs_commitdata_release(void *wdata);
+ #else
+ static inline int
+ nfs_commit_inode(struct inode *inode, int how)
+@@ -507,6 +505,7 @@ nfs_have_writebacks(struct inode *inode)
+  * Allocate nfs_write_data structures
+  */
+ extern struct nfs_write_data *nfs_writedata_alloc(unsigned int npages);
++extern void nfs_writedata_free(struct nfs_write_data *);
+ 
+ /*
+  * linux/fs/nfs/read.c
+@@ -515,7 +514,6 @@ extern int  nfs_readpage(struct file *, struct page *);
+ extern int  nfs_readpages(struct file *, struct address_space *,
+ 		struct list_head *, unsigned);
+ extern int  nfs_readpage_result(struct rpc_task *, struct nfs_read_data *);
+-extern void nfs_readdata_release(void *data);
+ extern int  nfs_readpage_async(struct nfs_open_context *, struct inode *,
+ 			       struct page *);
+ 
+@@ -523,6 +521,7 @@ extern int  nfs_readpage_async(struct nfs_open_context *, struct inode *,
+  * Allocate nfs_read_data structures
+  */
+ extern struct nfs_read_data *nfs_readdata_alloc(unsigned int npages);
++extern void nfs_readdata_free(struct nfs_read_data *);
+ 
+ /*
+  * linux/fs/nfs3proc.c
+diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h
+index 9f80a76..d16a304 100644
+--- a/include/net/sctp/sctp.h
++++ b/include/net/sctp/sctp.h
+@@ -448,6 +448,7 @@ static inline void sctp_skb_set_owner_r(struct sk_buff *skb, struct sock *sk)
+ {
+ 	struct sctp_ulpevent *event = sctp_skb2event(skb);
+ 
++	skb_orphan(skb);
+ 	skb->sk = sk;
+ 	skb->destructor = sctp_sock_rfree;
+ 	atomic_add(event->rmem_len, &sk->sk_rmem_alloc);
+diff --git a/include/net/sock.h b/include/net/sock.h
+index 4bb1ff9..9bc2c83 100644
+--- a/include/net/sock.h
++++ b/include/net/sock.h
+@@ -103,15 +103,15 @@ struct net;
+ 
+ /**
+  *	struct sock_common - minimal network layer representation of sockets
++ *	@skc_node: main hash linkage for various protocol lookup tables
++ *	@skc_nulls_node: main hash linkage for UDP/UDP-Lite protocol
++ *	@skc_refcnt: reference count
++ *	@skc_hash: hash value used with various protocol lookup tables
+  *	@skc_family: network address family
+  *	@skc_state: Connection state
+  *	@skc_reuse: %SO_REUSEADDR setting
+  *	@skc_bound_dev_if: bound device index if != 0
+- *	@skc_node: main hash linkage for various protocol lookup tables
+- *	@skc_nulls_node: main hash linkage for UDP/UDP-Lite protocol
+  *	@skc_bind_node: bind hash linkage for various protocol lookup tables
+- *	@skc_refcnt: reference count
+- *	@skc_hash: hash value used with various protocol lookup tables
+  *	@skc_prot: protocol handlers inside a network family
+  *	@skc_net: reference to the network namespace of this socket
+  *
+@@ -119,17 +119,21 @@ struct net;
+  *	for struct sock and struct inet_timewait_sock.
+  */
+ struct sock_common {
+-	unsigned short		skc_family;
+-	volatile unsigned char	skc_state;
+-	unsigned char		skc_reuse;
+-	int			skc_bound_dev_if;
++	/*
++	 * first fields are not copied in sock_copy()
++	 */
+ 	union {
+ 		struct hlist_node	skc_node;
+ 		struct hlist_nulls_node skc_nulls_node;
+ 	};
+-	struct hlist_node	skc_bind_node;
+ 	atomic_t		skc_refcnt;
++
+ 	unsigned int		skc_hash;
++	unsigned short		skc_family;
++	volatile unsigned char	skc_state;
++	unsigned char		skc_reuse;
++	int			skc_bound_dev_if;
++	struct hlist_node	skc_bind_node;
+ 	struct proto		*skc_prot;
+ #ifdef CONFIG_NET_NS
+ 	struct net	 	*skc_net;
+@@ -207,15 +211,17 @@ struct sock {
+ 	 * don't add nothing before this first member (__sk_common) --acme
+ 	 */
+ 	struct sock_common	__sk_common;
++#define sk_node			__sk_common.skc_node
++#define sk_nulls_node		__sk_common.skc_nulls_node
++#define sk_refcnt		__sk_common.skc_refcnt
++
++#define sk_copy_start		__sk_common.skc_hash
++#define sk_hash			__sk_common.skc_hash
+ #define sk_family		__sk_common.skc_family
+ #define sk_state		__sk_common.skc_state
+ #define sk_reuse		__sk_common.skc_reuse
+ #define sk_bound_dev_if		__sk_common.skc_bound_dev_if
+-#define sk_node			__sk_common.skc_node
+-#define sk_nulls_node		__sk_common.skc_nulls_node
+ #define sk_bind_node		__sk_common.skc_bind_node
+-#define sk_refcnt		__sk_common.skc_refcnt
+-#define sk_hash			__sk_common.skc_hash
+ #define sk_prot			__sk_common.skc_prot
+ #define sk_net			__sk_common.skc_net
+ 	unsigned char		sk_shutdown : 2,
+@@ -1225,6 +1231,8 @@ static inline void skb_set_owner_w(struct sk_buff *skb, struct sock *sk)
+ 
+ static inline void skb_set_owner_r(struct sk_buff *skb, struct sock *sk)
+ {
++	skb_orphan(skb);
++	skb_orphan(skb);
+ 	skb->sk = sk;
+ 	skb->destructor = sock_rfree;
+ 	atomic_add(skb->truesize, &sk->sk_rmem_alloc);
+diff --git a/kernel/fork.c b/kernel/fork.c
+index 875ffbd..9c1f52d 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -568,18 +568,18 @@ void mm_release(struct task_struct *tsk, struct mm_struct *mm)
+ 	 * the value intact in a core dump, and to save the unnecessary
+ 	 * trouble otherwise.  Userland only wants this done for a sys_exit.
+ 	 */
+-	if (tsk->clear_child_tid
+-	    && !(tsk->flags & PF_SIGNALED)
+-	    && atomic_read(&mm->mm_users) > 1) {
+-		u32 __user * tidptr = tsk->clear_child_tid;
++	if (tsk->clear_child_tid) {
++		if (!(tsk->flags & PF_SIGNALED) &&
++		    atomic_read(&mm->mm_users) > 1) {
++			/*
++			 * We don't check the error code - if userspace has
++			 * not set up a proper pointer then tough luck.
++			 */
++			put_user(0, tsk->clear_child_tid);
++			sys_futex(tsk->clear_child_tid, FUTEX_WAKE,
++					1, NULL, NULL, 0);
++		}
+ 		tsk->clear_child_tid = NULL;
+-
+-		/*
+-		 * We don't check the error code - if userspace has
+-		 * not set up a proper pointer then tough luck.
+-		 */
+-		put_user(0, tidptr);
+-		sys_futex(tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);
+ 	}
+ }
+ 
+diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
+index 052ec4d..d089d05 100644
+--- a/kernel/posix-timers.c
++++ b/kernel/posix-timers.c
+@@ -202,6 +202,12 @@ static int no_timer_create(struct k_itimer *new_timer)
+ 	return -EOPNOTSUPP;
+ }
+ 
++static int no_nsleep(const clockid_t which_clock, int flags,
++		     struct timespec *tsave, struct timespec __user *rmtp)
++{
++	return -EOPNOTSUPP;
++}
++
+ /*
+  * Return nonzero if we know a priori this clockid_t value is bogus.
+  */
+@@ -254,6 +260,7 @@ static __init int init_posix_timers(void)
+ 		.clock_get = posix_get_monotonic_raw,
+ 		.clock_set = do_posix_clock_nosettime,
+ 		.timer_create = no_timer_create,
++		.nsleep = no_nsleep,
+ 	};
+ 
+ 	register_posix_clock(CLOCK_REALTIME, &clock_realtime);
+diff --git a/kernel/smp.c b/kernel/smp.c
+index ad63d85..94188b8 100644
+--- a/kernel/smp.c
++++ b/kernel/smp.c
+@@ -57,7 +57,7 @@ hotplug_cfd(struct notifier_block *nfb, unsigned long action, void *hcpu)
+ 			return NOTIFY_BAD;
+ 		break;
+ 
+-#ifdef CONFIG_CPU_HOTPLUG
++#ifdef CONFIG_HOTPLUG_CPU
+ 	case CPU_UP_CANCELED:
+ 	case CPU_UP_CANCELED_FROZEN:
+ 
+diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
+index 960cbf4..f99b792 100644
+--- a/kernel/trace/ring_buffer.c
++++ b/kernel/trace/ring_buffer.c
+@@ -695,6 +695,7 @@ ring_buffer_free(struct ring_buffer *buffer)
+ 
+ 	put_online_cpus();
+ 
++	kfree(buffer->buffers);
+ 	free_cpumask_var(buffer->cpumask);
+ 
+ 	kfree(buffer);
+@@ -2101,7 +2102,6 @@ rb_buffer_peek(struct ring_buffer *buffer, int cpu, u64 *ts)
+ 		 * the box. Return the padding, and we will release
+ 		 * the current locks, and try again.
+ 		 */
+-		rb_advance_reader(cpu_buffer);
+ 		return event;
+ 
+ 	case RINGBUF_TYPE_TIME_EXTEND:
+@@ -2218,6 +2218,8 @@ ring_buffer_peek(struct ring_buffer *buffer, int cpu, u64 *ts)
+  again:
+ 	spin_lock_irqsave(&cpu_buffer->reader_lock, flags);
+ 	event = rb_buffer_peek(buffer, cpu, ts);
++	if (event && event->type == RINGBUF_TYPE_PADDING)
++		rb_advance_reader(cpu_buffer);
+ 	spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags);
+ 
+ 	if (event && event->type == RINGBUF_TYPE_PADDING) {
+@@ -2282,12 +2284,9 @@ ring_buffer_consume(struct ring_buffer *buffer, int cpu, u64 *ts)
+ 	spin_lock_irqsave(&cpu_buffer->reader_lock, flags);
+ 
+ 	event = rb_buffer_peek(buffer, cpu, ts);
+-	if (!event)
+-		goto out_unlock;
+-
+-	rb_advance_reader(cpu_buffer);
++	if (event)
++		rb_advance_reader(cpu_buffer);
+ 
+- out_unlock:
+ 	spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags);
+ 
+  out:
+diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
+index cda81ec..3928aee 100644
+--- a/kernel/trace/trace.c
++++ b/kernel/trace/trace.c
+@@ -2993,7 +2993,8 @@ tracing_fill_pipe_page(size_t rem, struct trace_iterator *iter)
+ 			break;
+ 		}
+ 
+-		trace_consume(iter);
++		if (ret != TRACE_TYPE_NO_CONSUME)
++			trace_consume(iter);
+ 		rem -= count;
+ 		if (!find_next_entry_inc(iter))	{
+ 			rem = 0;
+@@ -4122,8 +4123,11 @@ static void __ftrace_dump(bool disable_tracing)
+ 		iter.pos = -1;
+ 
+ 		if (find_next_entry_inc(&iter) != NULL) {
+-			print_trace_line(&iter);
+-			trace_consume(&iter);
++			int ret;
++
++			ret = print_trace_line(&iter);
++			if (ret != TRACE_TYPE_NO_CONSUME)
++				trace_consume(&iter);
+ 		}
+ 
+ 		trace_printk_seq(&iter.seq);
+diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c
+index d28687e..8ef6a93 100644
+--- a/kernel/trace/trace_functions_graph.c
++++ b/kernel/trace/trace_functions_graph.c
+@@ -798,9 +798,16 @@ print_graph_function(struct trace_iterator *iter)
+ 
+ 	switch (entry->type) {
+ 	case TRACE_GRAPH_ENT: {
+-		struct ftrace_graph_ent_entry *field;
++		/*
++		 * print_graph_entry() may consume the current event,
++		 * thus @field may become invalid, so we need to save it.
++		 * sizeof(struct ftrace_graph_ent_entry) is very small,
++		 * it can be safely saved at the stack.
++		 */
++		struct ftrace_graph_ent_entry *field, saved;
+ 		trace_assign_type(field, entry);
+-		return print_graph_entry(field, s, iter);
++		saved = *field;
++		return print_graph_entry(&saved, s, iter);
+ 	}
+ 	case TRACE_GRAPH_RET: {
+ 		struct ftrace_graph_ret_entry *field;
+diff --git a/mm/hugetlb.c b/mm/hugetlb.c
+index e83ad2c..2403eb9 100644
+--- a/mm/hugetlb.c
++++ b/mm/hugetlb.c
+@@ -2341,7 +2341,7 @@ void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed)
+ 	long chg = region_truncate(&inode->i_mapping->private_list, offset);
+ 
+ 	spin_lock(&inode->i_lock);
+-	inode->i_blocks -= blocks_per_huge_page(h);
++	inode->i_blocks -= (blocks_per_huge_page(h) * freed);
+ 	spin_unlock(&inode->i_lock);
+ 
+ 	hugetlb_put_quota(inode->i_mapping, (chg - freed));
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index 480907c..6bf3cc4 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -858,7 +858,7 @@ static struct page *__rmqueue(struct zone *zone, unsigned int order,
+  */
+ static int rmqueue_bulk(struct zone *zone, unsigned int order, 
+ 			unsigned long count, struct list_head *list,
+-			int migratetype)
++			int migratetype, int cold)
+ {
+ 	int i;
+ 	
+@@ -877,7 +877,10 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order,
+ 		 * merge IO requests if the physical pages are ordered
+ 		 * properly.
+ 		 */
+-		list_add(&page->lru, list);
++		if (likely(cold == 0))
++			list_add(&page->lru, list);
++		else
++			list_add_tail(&page->lru, list);
+ 		set_page_private(page, migratetype);
+ 		list = &page->lru;
+ 	}
+@@ -1077,7 +1080,8 @@ again:
+ 		local_irq_save(flags);
+ 		if (!pcp->count) {
+ 			pcp->count = rmqueue_bulk(zone, 0,
+-					pcp->batch, &pcp->list, migratetype);
++					pcp->batch, &pcp->list,
++					migratetype, cold);
+ 			if (unlikely(!pcp->count))
+ 				goto failed;
+ 		}
+@@ -1096,7 +1100,8 @@ again:
+ 		/* Allocate more to the pcp list if necessary */
+ 		if (unlikely(&page->lru == &pcp->list)) {
+ 			pcp->count += rmqueue_bulk(zone, 0,
+-					pcp->batch, &pcp->list, migratetype);
++					pcp->batch, &pcp->list,
++					migratetype, cold);
+ 			page = list_entry(pcp->list.next, struct page, lru);
+ 		}
+ 
+diff --git a/net/ax25/ax25_in.c b/net/ax25/ax25_in.c
+index 5f1d210..de56d39 100644
+--- a/net/ax25/ax25_in.c
++++ b/net/ax25/ax25_in.c
+@@ -437,8 +437,7 @@ free:
+ int ax25_kiss_rcv(struct sk_buff *skb, struct net_device *dev,
+ 		  struct packet_type *ptype, struct net_device *orig_dev)
+ {
+-	skb->sk = NULL;		/* Initially we don't know who it's for */
+-	skb->destructor = NULL;	/* Who initializes this, dammit?! */
++	skb_orphan(skb);
+ 
+ 	if (!net_eq(dev_net(dev), &init_net)) {
+ 		kfree_skb(skb);
+diff --git a/net/core/dev.c b/net/core/dev.c
+index e2e9e4a..e545067 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -2284,8 +2284,6 @@ ncls:
+ 	if (!skb)
+ 		goto out;
+ 
+-	skb_orphan(skb);
+-
+ 	type = skb->protocol;
+ 	list_for_each_entry_rcu(ptype,
+ 			&ptype_base[ntohs(type) & PTYPE_HASH_MASK], list) {
+@@ -2788,9 +2786,11 @@ static void net_rx_action(struct softirq_action *h)
+ 		 * move the instance around on the list at-will.
+ 		 */
+ 		if (unlikely(work == weight)) {
+-			if (unlikely(napi_disable_pending(n)))
+-				__napi_complete(n);
+-			else
++			if (unlikely(napi_disable_pending(n))) {
++				local_irq_enable();
++				napi_complete(n);
++				local_irq_disable();
++			} else
+ 				list_move_tail(&n->poll_list, list);
+ 		}
+ 
+diff --git a/net/core/sock.c b/net/core/sock.c
+index 7dbf3ff..3f5e77e 100644
+--- a/net/core/sock.c
++++ b/net/core/sock.c
+@@ -915,13 +915,19 @@ static inline void sock_lock_init(struct sock *sk)
+ 			af_family_keys + sk->sk_family);
+ }
+ 
++/*
++ * Copy all fields from osk to nsk but nsk->sk_refcnt must not change yet,
++ * even temporarly, because of RCU lookups. sk_node should also be left as is.
++ */
+ static void sock_copy(struct sock *nsk, const struct sock *osk)
+ {
+ #ifdef CONFIG_SECURITY_NETWORK
+ 	void *sptr = nsk->sk_security;
+ #endif
+-
+-	memcpy(nsk, osk, osk->sk_prot->obj_size);
++	BUILD_BUG_ON(offsetof(struct sock, sk_copy_start) !=
++		     sizeof(osk->sk_node) + sizeof(osk->sk_refcnt));
++	memcpy(&nsk->sk_copy_start, &osk->sk_copy_start,
++	       osk->sk_prot->obj_size - offsetof(struct sock, sk_copy_start));
+ #ifdef CONFIG_SECURITY_NETWORK
+ 	nsk->sk_security = sptr;
+ 	security_sk_clone(osk, nsk);
+@@ -935,8 +941,23 @@ static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority,
+ 	struct kmem_cache *slab;
+ 
+ 	slab = prot->slab;
+-	if (slab != NULL)
+-		sk = kmem_cache_alloc(slab, priority);
++	if (slab != NULL) {
++		sk = kmem_cache_alloc(slab, priority & ~__GFP_ZERO);
++		if (!sk)
++			return sk;
++		if (priority & __GFP_ZERO) {
++			/*
++			 * caches using SLAB_DESTROY_BY_RCU should let
++			 * sk_node.next un-modified. Special care is taken
++			 * when initializing object to zero.
++			 */
++			if (offsetof(struct sock, sk_node.next) != 0)
++				memset(sk, 0, offsetof(struct sock, sk_node.next));
++			memset(&sk->sk_node.pprev, 0,
++			       prot->obj_size - offsetof(struct sock,
++							 sk_node.pprev));
++		}
++	}
+ 	else
+ 		sk = kmalloc(prot->obj_size, priority);
+ 
+@@ -1103,6 +1124,11 @@ struct sock *sk_clone(const struct sock *sk, const gfp_t priority)
+ 
+ 		newsk->sk_err	   = 0;
+ 		newsk->sk_priority = 0;
++		/*
++		 * Before updating sk_refcnt, we must commit prior changes to memory
++		 * (Documentation/RCU/rculist_nulls.txt for details)
++		 */
++		smp_wmb();
+ 		atomic_set(&newsk->sk_refcnt, 2);
+ 
+ 		/*
+@@ -1794,6 +1820,11 @@ void sock_init_data(struct socket *sock, struct sock *sk)
+ 
+ 	sk->sk_stamp = ktime_set(-1L, 0);
+ 
++	/*
++	 * Before updating sk_refcnt, we must commit prior changes to memory
++	 * (Documentation/RCU/rculist_nulls.txt for details)
++	 */
++	smp_wmb();
+ 	atomic_set(&sk->sk_refcnt, 1);
+ 	atomic_set(&sk->sk_drops, 0);
+ }
+diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c
+index 1a58a6f..0bc7bf5 100644
+--- a/net/ipv4/ip_input.c
++++ b/net/ipv4/ip_input.c
+@@ -437,6 +437,9 @@ int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt,
+ 	/* Remove any debris in the socket control block */
+ 	memset(IPCB(skb), 0, sizeof(struct inet_skb_parm));
+ 
++	/* Must drop socket now because of tproxy. */
++	skb_orphan(skb);
++
+ 	return NF_HOOK(PF_INET, NF_INET_PRE_ROUTING, skb, dev, NULL,
+ 		       ip_rcv_finish);
+ 
+diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c
+index 8f04bd9..c0cd26a 100644
+--- a/net/ipv6/ip6_input.c
++++ b/net/ipv6/ip6_input.c
+@@ -139,6 +139,9 @@ int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt
+ 
+ 	rcu_read_unlock();
+ 
++	/* Must drop socket now because of tproxy. */
++	skb_orphan(skb);
++
+ 	return NF_HOOK(PF_INET6, NF_INET_PRE_ROUTING, skb, dev, NULL,
+ 		       ip6_rcv_finish);
+ err:
+diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c
+index 3eb5bcc..e0fbcff 100644
+--- a/net/irda/af_irda.c
++++ b/net/irda/af_irda.c
+@@ -913,9 +913,6 @@ static int irda_accept(struct socket *sock, struct socket *newsock, int flags)
+ 	/* Clean up the original one to keep it in listen state */
+ 	irttp_listen(self->tsap);
+ 
+-	/* Wow ! What is that ? Jean II */
+-	skb->sk = NULL;
+-	skb->destructor = NULL;
+ 	kfree_skb(skb);
+ 	sk->sk_ack_backlog--;
+ 
+diff --git a/net/irda/ircomm/ircomm_lmp.c b/net/irda/ircomm/ircomm_lmp.c
+index 67c99d2..7ba9661 100644
+--- a/net/irda/ircomm/ircomm_lmp.c
++++ b/net/irda/ircomm/ircomm_lmp.c
+@@ -196,6 +196,7 @@ static int ircomm_lmp_data_request(struct ircomm_cb *self,
+ 	/* Don't forget to refcount it - see ircomm_tty_do_softint() */
+ 	skb_get(skb);
+ 
++	skb_orphan(skb);
+ 	skb->destructor = ircomm_lmp_flow_control;
+ 
+ 	if ((self->pkt_count++ > 7) && (self->flow_status == FLOW_START)) {
+diff --git a/net/socket.c b/net/socket.c
+index 791d71a..6d47165 100644
+--- a/net/socket.c
++++ b/net/socket.c
+@@ -736,7 +736,7 @@ static ssize_t sock_sendpage(struct file *file, struct page *page,
+ 	if (more)
+ 		flags |= MSG_MORE;
+ 
+-	return sock->ops->sendpage(sock, page, offset, size, flags);
++	return kernel_sendpage(sock, page, offset, size, flags);
+ }
+ 
+ static ssize_t sock_splice_read(struct file *file, loff_t *ppos,
+diff --git a/net/wireless/scan.c b/net/wireless/scan.c
+index bc7f788..f5be6a8 100644
+--- a/net/wireless/scan.c
++++ b/net/wireless/scan.c
+@@ -118,7 +118,7 @@ static int cmp_ies(u8 num, u8 *ies1, size_t len1, u8 *ies2, size_t len2)
+ 
+ 	if (!ie1 && !ie2)
+ 		return 0;
+-	if (!ie1)
++	if (!ie1 || !ie2)
+ 		return -1;
+ 
+ 	r = memcmp(ie1 + 2, ie2 + 2, min(ie1[1], ie2[1]));
+@@ -171,6 +171,8 @@ static bool is_mesh(struct cfg80211_bss *a,
+ 	ie = find_ie(WLAN_EID_MESH_CONFIG,
+ 		     a->information_elements,
+ 		     a->len_information_elements);
++	if (!ie)
++		return false;
+ 	if (ie[1] != IEEE80211_MESH_CONFIG_LEN)
+ 		return false;
+ 
+diff --git a/net/xfrm/xfrm_algo.c b/net/xfrm/xfrm_algo.c
+index 96036cf..79d78f4 100644
+--- a/net/xfrm/xfrm_algo.c
++++ b/net/xfrm/xfrm_algo.c
+@@ -292,8 +292,8 @@ static struct xfrm_algo_desc ealg_list[] = {
+ 	}
+ },
+ {
+-	.name = "cbc(cast128)",
+-	.compat = "cast128",
++	.name = "cbc(cast5)",
++	.compat = "cast5",
+ 
+ 	.uinfo = {
+ 		.encr = {
+diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
+index 18e8dad..1df7692 100644
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -13150,6 +13150,8 @@ static int patch_alc269(struct hda_codec *codec)
+ 		set_capture_mixer(spec);
+ 	set_beep_amp(spec, 0x0b, 0x04, HDA_INPUT);
+ 
++	spec->vmaster_nid = 0x02;
++
+ 	codec->patch_ops = alc_patch_ops;
+ 	if (board_config == ALC269_AUTO)
+ 		spec->init_hook = alc269_auto_init;
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/stable/2.6.30.8.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/stable/2.6.30.8.patch
@@ -0,0 +1,893 @@
+diff --git a/arch/arm/mm/highmem.c b/arch/arm/mm/highmem.c
+index a34954d..73cae57 100644
+--- a/arch/arm/mm/highmem.c
++++ b/arch/arm/mm/highmem.c
+@@ -40,11 +40,16 @@ void *kmap_atomic(struct page *page, enum km_type type)
+ {
+ 	unsigned int idx;
+ 	unsigned long vaddr;
++	void *kmap;
+ 
+ 	pagefault_disable();
+ 	if (!PageHighMem(page))
+ 		return page_address(page);
+ 
++	kmap = kmap_high_get(page);
++	if (kmap)
++		return kmap;
++
+ 	idx = type + KM_TYPE_NR * smp_processor_id();
+ 	vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
+ #ifdef CONFIG_DEBUG_HIGHMEM
+@@ -80,6 +85,9 @@ void kunmap_atomic(void *kvaddr, enum km_type type)
+ #else
+ 		(void) idx;  /* to kill a warning */
+ #endif
++	} else if (vaddr >= PKMAP_ADDR(0) && vaddr < PKMAP_ADDR(LAST_PKMAP)) {
++		/* this address was obtained through kmap_high_get() */
++		kunmap_high(pte_page(pkmap_page_table[PKMAP_NR(vaddr)]));
+ 	}
+ 	pagefault_enable();
+ }
+diff --git a/arch/powerpc/include/asm/mmu-hash64.h b/arch/powerpc/include/asm/mmu-hash64.h
+index 98c104a..edab67e 100644
+--- a/arch/powerpc/include/asm/mmu-hash64.h
++++ b/arch/powerpc/include/asm/mmu-hash64.h
+@@ -41,6 +41,7 @@ extern char initial_stab[];
+ 
+ #define SLB_NUM_BOLTED		3
+ #define SLB_CACHE_ENTRIES	8
++#define SLB_MIN_SIZE		32
+ 
+ /* Bits in the SLB ESID word */
+ #define SLB_ESID_V		ASM_CONST(0x0000000008000000) /* valid */
+@@ -296,6 +297,7 @@ extern void slb_flush_and_rebolt(void);
+ extern void stab_initialize(unsigned long stab);
+ 
+ extern void slb_vmalloc_update(void);
++extern void slb_set_size(u16 size);
+ #endif /* __ASSEMBLY__ */
+ 
+ /*
+diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c
+index 78b3f78..f3bb5fb 100644
+--- a/arch/powerpc/kernel/lparcfg.c
++++ b/arch/powerpc/kernel/lparcfg.c
+@@ -35,6 +35,7 @@
+ #include <asm/prom.h>
+ #include <asm/vdso_datapage.h>
+ #include <asm/vio.h>
++#include <asm/mmu.h>
+ 
+ #define MODULE_VERS "1.8"
+ #define MODULE_NAME "lparcfg"
+@@ -501,6 +502,8 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v)
+ 
+ 	seq_printf(m, "shared_processor_mode=%d\n", lppaca[0].shared_proc);
+ 
++	seq_printf(m, "slb_size=%d\n", mmu_slb_size);
++
+ 	return 0;
+ }
+ 
+diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
+index ee4c760..a36c6c3 100644
+--- a/arch/powerpc/kernel/rtas.c
++++ b/arch/powerpc/kernel/rtas.c
+@@ -38,6 +38,7 @@
+ #include <asm/syscalls.h>
+ #include <asm/smp.h>
+ #include <asm/atomic.h>
++#include <asm/mmu.h>
+ 
+ struct rtas_t rtas = {
+ 	.lock = SPIN_LOCK_UNLOCKED
+@@ -692,6 +693,7 @@ static void rtas_percpu_suspend_me(void *info)
+ {
+ 	long rc = H_SUCCESS;
+ 	unsigned long msr_save;
++	u16 slb_size = mmu_slb_size;
+ 	int cpu;
+ 	struct rtas_suspend_me_data *data =
+ 		(struct rtas_suspend_me_data *)info;
+@@ -714,13 +716,16 @@ static void rtas_percpu_suspend_me(void *info)
+ 		/* All other cpus are in H_JOIN, this cpu does
+ 		 * the suspend.
+ 		 */
++		slb_set_size(SLB_MIN_SIZE);
+ 		printk(KERN_DEBUG "calling ibm,suspend-me on cpu %i\n",
+ 		       smp_processor_id());
+ 		data->error = rtas_call(data->token, 0, 1, NULL);
+ 
+-		if (data->error)
++		if (data->error) {
+ 			printk(KERN_DEBUG "ibm,suspend-me returned %d\n",
+ 			       data->error);
++			slb_set_size(slb_size);
++		}
+ 	} else {
+ 		printk(KERN_ERR "H_JOIN on cpu %i failed with rc = %ld\n",
+ 		       smp_processor_id(), rc);
+diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c
+index 89497fb..4d73765 100644
+--- a/arch/powerpc/mm/slb.c
++++ b/arch/powerpc/mm/slb.c
+@@ -247,14 +247,22 @@ void switch_slb(struct task_struct *tsk, struct mm_struct *mm)
+ static inline void patch_slb_encoding(unsigned int *insn_addr,
+ 				      unsigned int immed)
+ {
+-	/* Assume the instruction had a "0" immediate value, just
+-	 * "or" in the new value
+-	 */
+-	*insn_addr |= immed;
++	*insn_addr = (*insn_addr & 0xffff0000) | immed;
+ 	flush_icache_range((unsigned long)insn_addr, 4+
+ 			   (unsigned long)insn_addr);
+ }
+ 
++void slb_set_size(u16 size)
++{
++	extern unsigned int *slb_compare_rr_to_size;
++
++	if (mmu_slb_size == size)
++		return;
++
++	mmu_slb_size = size;
++	patch_slb_encoding(slb_compare_rr_to_size, mmu_slb_size);
++}
++
+ void slb_initialize(void)
+ {
+ 	unsigned long linear_llp, vmalloc_llp, io_llp;
+diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c
+index b6f1b13..2e2bbe1 100644
+--- a/arch/powerpc/platforms/pseries/reconfig.c
++++ b/arch/powerpc/platforms/pseries/reconfig.c
+@@ -20,6 +20,7 @@
+ #include <asm/machdep.h>
+ #include <asm/uaccess.h>
+ #include <asm/pSeries_reconfig.h>
++#include <asm/mmu.h>
+ 
+ 
+ 
+@@ -439,9 +440,15 @@ static int do_update_property(char *buf, size_t bufsize)
+ 	if (!newprop)
+ 		return -ENOMEM;
+ 
++	if (!strcmp(name, "slb-size") || !strcmp(name, "ibm,slb-size"))
++		slb_set_size(*(int *)value);
++
+ 	oldprop = of_find_property(np, name,NULL);
+-	if (!oldprop)
++	if (!oldprop) {
++		if (strlen(name))
++			return prom_add_property(np, newprop);
+ 		return -ENODEV;
++	}
+ 
+ 	rc = prom_update_property(np, newprop, oldprop);
+ 	if (rc)
+diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
+index c2cceae..68e7172 100644
+--- a/arch/x86/include/asm/processor.h
++++ b/arch/x86/include/asm/processor.h
+@@ -402,7 +402,17 @@ extern unsigned long kernel_eflags;
+ extern asmlinkage void ignore_sysret(void);
+ #else	/* X86_64 */
+ #ifdef CONFIG_CC_STACKPROTECTOR
+-DECLARE_PER_CPU(unsigned long, stack_canary);
++/*
++ * Make sure stack canary segment base is cached-aligned:
++ *   "For Intel Atom processors, avoid non zero segment base address
++ *    that is not aligned to cache line boundary at all cost."
++ * (Optim Ref Manual Assembly/Compiler Coding Rule 15.)
++ */
++struct stack_canary {
++	char __pad[20];		/* canary at %gs:20 */
++	unsigned long canary;
++};
++DECLARE_PER_CPU(struct stack_canary, stack_canary) ____cacheline_aligned;
+ #endif
+ #endif	/* X86_64 */
+ 
+diff --git a/arch/x86/include/asm/stackprotector.h b/arch/x86/include/asm/stackprotector.h
+index c2d742c..decad97 100644
+--- a/arch/x86/include/asm/stackprotector.h
++++ b/arch/x86/include/asm/stackprotector.h
+@@ -78,14 +78,14 @@ static __always_inline void boot_init_stack_canary(void)
+ #ifdef CONFIG_X86_64
+ 	percpu_write(irq_stack_union.stack_canary, canary);
+ #else
+-	percpu_write(stack_canary, canary);
++	percpu_write(stack_canary.canary, canary);
+ #endif
+ }
+ 
+ static inline void setup_stack_canary_segment(int cpu)
+ {
+ #ifdef CONFIG_X86_32
+-	unsigned long canary = (unsigned long)&per_cpu(stack_canary, cpu) - 20;
++	unsigned long canary = (unsigned long)&per_cpu(stack_canary, cpu);
+ 	struct desc_struct *gdt_table = get_cpu_gdt_table(cpu);
+ 	struct desc_struct desc;
+ 
+diff --git a/arch/x86/include/asm/system.h b/arch/x86/include/asm/system.h
+index 643c59b..5bd119b 100644
+--- a/arch/x86/include/asm/system.h
++++ b/arch/x86/include/asm/system.h
+@@ -31,7 +31,7 @@ void __switch_to_xtra(struct task_struct *prev_p, struct task_struct *next_p,
+ 	"movl %P[task_canary](%[next]), %%ebx\n\t"			\
+ 	"movl %%ebx, "__percpu_arg([stack_canary])"\n\t"
+ #define __switch_canary_oparam						\
+-	, [stack_canary] "=m" (per_cpu_var(stack_canary))
++	, [stack_canary] "=m" (per_cpu_var(stack_canary.canary))
+ #define __switch_canary_iparam						\
+ 	, [task_canary] "i" (offsetof(struct task_struct, stack_canary))
+ #else	/* CC_STACKPROTECTOR */
+diff --git a/arch/x86/kernel/apic/es7000_32.c b/arch/x86/kernel/apic/es7000_32.c
+index 3029477..8f2db11 100644
+--- a/arch/x86/kernel/apic/es7000_32.c
++++ b/arch/x86/kernel/apic/es7000_32.c
+@@ -167,7 +167,7 @@ static int es7000_apic_is_cluster(void)
+ {
+ 	/* MPENTIUMIII */
+ 	if (boot_cpu_data.x86 == 6 &&
+-	    (boot_cpu_data.x86_model >= 7 || boot_cpu_data.x86_model <= 11))
++	    (boot_cpu_data.x86_model >= 7 && boot_cpu_data.x86_model <= 11))
+ 		return 1;
+ 
+ 	return 0;
+diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
+index 77848d9..ed9626a 100644
+--- a/arch/x86/kernel/cpu/common.c
++++ b/arch/x86/kernel/cpu/common.c
+@@ -1033,7 +1033,7 @@ DEFINE_PER_CPU(struct orig_ist, orig_ist);
+ #else	/* CONFIG_X86_64 */
+ 
+ #ifdef CONFIG_CC_STACKPROTECTOR
+-DEFINE_PER_CPU(unsigned long, stack_canary);
++DEFINE_PER_CPU(struct stack_canary, stack_canary) ____cacheline_aligned;
+ #endif
+ 
+ /* Make sure %fs and %gs are initialized properly in idle threads */
+diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
+index 3068388..a1614ed 100644
+--- a/arch/x86/kernel/head_32.S
++++ b/arch/x86/kernel/head_32.S
+@@ -442,7 +442,6 @@ is386:	movl $2,%ecx		# set MP
+ 	jne 1f
+ 	movl $per_cpu__gdt_page,%eax
+ 	movl $per_cpu__stack_canary,%ecx
+-	subl $20, %ecx
+ 	movw %cx, 8 * GDT_ENTRY_STACK_CANARY + 2(%eax)
+ 	shrl $16, %ecx
+ 	movb %cl, 8 * GDT_ENTRY_STACK_CANARY + 4(%eax)
+diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
+index 133bdba..f41d29b 100644
+--- a/arch/x86/mm/pageattr.c
++++ b/arch/x86/mm/pageattr.c
+@@ -808,6 +808,7 @@ static int change_page_attr_set_clr(unsigned long *addr, int numpages,
+ {
+ 	struct cpa_data cpa;
+ 	int ret, cache, checkalias;
++	unsigned long baddr = 0;
+ 
+ 	/*
+ 	 * Check, if we are requested to change a not supported
+@@ -839,6 +840,11 @@ static int change_page_attr_set_clr(unsigned long *addr, int numpages,
+ 			 */
+ 			WARN_ON_ONCE(1);
+ 		}
++		/*
++		 * Save address for cache flush. *addr is modified in the call
++		 * to __change_page_attr_set_clr() below.
++		 */
++		baddr = *addr;
+ 	}
+ 
+ 	/* Must avoid aliasing mappings in the highmem code */
+@@ -893,7 +899,7 @@ static int change_page_attr_set_clr(unsigned long *addr, int numpages,
+ 			cpa_flush_array(addr, numpages, cache,
+ 					cpa.flags, pages);
+ 		} else
+-			cpa_flush_range(*addr, numpages, cache);
++			cpa_flush_range(baddr, numpages, cache);
+ 	} else
+ 		cpa_flush_all(cache);
+ 
+diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
+index 7b2f499..bc20cf9 100644
+--- a/drivers/ata/libata-core.c
++++ b/drivers/ata/libata-core.c
+@@ -709,7 +709,13 @@ u64 ata_tf_read_block(struct ata_taskfile *tf, struct ata_device *dev)
+ 		head = tf->device & 0xf;
+ 		sect = tf->lbal;
+ 
+-		block = (cyl * dev->heads + head) * dev->sectors + sect;
++		if (!sect) {
++			ata_dev_printk(dev, KERN_WARNING, "device reported "
++				       "invalid CHS sector 0\n");
++			sect = 1; /* oh well */
++		}
++
++		block = (cyl * dev->heads + head) * dev->sectors + sect - 1;
+ 	}
+ 
+ 	return block;
+diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
+index 5d34764..69c6dbd 100644
+--- a/drivers/block/virtio_blk.c
++++ b/drivers/block/virtio_blk.c
+@@ -308,6 +308,9 @@ static int virtblk_probe(struct virtio_device *vdev)
+ 	else
+ 		blk_queue_max_segment_size(vblk->disk->queue, -1U);
+ 
++	/* No need to bounce any requests */
++	blk_queue_bounce_limit(vblk->disk->queue, BLK_BOUNCE_ANY);
++
+ 	/* Host can optionally specify the block size of the device */
+ 	err = virtio_config_val(vdev, VIRTIO_BLK_F_BLK_SIZE,
+ 				offsetof(struct virtio_blk_config, blk_size),
+diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
+index 3686912..d64a479 100644
+--- a/drivers/char/agp/intel-agp.c
++++ b/drivers/char/agp/intel-agp.c
+@@ -2315,15 +2315,6 @@ static int agp_intel_resume(struct pci_dev *pdev)
+ 	struct agp_bridge_data *bridge = pci_get_drvdata(pdev);
+ 	int ret_val;
+ 
+-	pci_restore_state(pdev);
+-
+-	/* We should restore our graphics device's config space,
+-	 * as host bridge (00:00) resumes before graphics device (02:00),
+-	 * then our access to its pci space can work right.
+-	 */
+-	if (intel_private.pcidev)
+-		pci_restore_state(intel_private.pcidev);
+-
+ 	if (bridge->driver == &intel_generic_driver)
+ 		intel_configure();
+ 	else if (bridge->driver == &intel_850_driver)
+diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c
+index aec1931..0b73e4e 100644
+--- a/drivers/char/tpm/tpm_tis.c
++++ b/drivers/char/tpm/tpm_tis.c
+@@ -450,6 +450,12 @@ static int tpm_tis_init(struct device *dev, resource_size_t start,
+ 		goto out_err;
+ 	}
+ 
++	/* Default timeouts */
++	chip->vendor.timeout_a = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
++	chip->vendor.timeout_b = msecs_to_jiffies(TIS_LONG_TIMEOUT);
++	chip->vendor.timeout_c = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
++	chip->vendor.timeout_d = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
++
+ 	if (request_locality(chip, 0) != 0) {
+ 		rc = -ENODEV;
+ 		goto out_err;
+@@ -457,12 +463,6 @@ static int tpm_tis_init(struct device *dev, resource_size_t start,
+ 
+ 	vendor = ioread32(chip->vendor.iobase + TPM_DID_VID(0));
+ 
+-	/* Default timeouts */
+-	chip->vendor.timeout_a = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
+-	chip->vendor.timeout_b = msecs_to_jiffies(TIS_LONG_TIMEOUT);
+-	chip->vendor.timeout_c = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
+-	chip->vendor.timeout_d = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
+-
+ 	dev_info(dev,
+ 		 "1.2 TPM (device-id 0x%X, rev-id %d)\n",
+ 		 vendor >> 16, ioread8(chip->vendor.iobase + TPM_RID(0)));
+diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c
+index 012a5e7..7ec7bcb 100644
+--- a/drivers/input/joydev.c
++++ b/drivers/input/joydev.c
+@@ -457,8 +457,11 @@ static int joydev_ioctl_common(struct joydev *joydev,
+ 				unsigned int cmd, void __user *argp)
+ {
+ 	struct input_dev *dev = joydev->handle.dev;
++	size_t len;
+ 	int i, j;
++	const char *name;
+ 
++	/* Process fixed-sized commands. */
+ 	switch (cmd) {
+ 
+ 	case JS_SET_CAL:
+@@ -500,9 +503,22 @@ static int joydev_ioctl_common(struct joydev *joydev,
+ 		return copy_to_user(argp, joydev->corr,
+ 			sizeof(joydev->corr[0]) * joydev->nabs) ? -EFAULT : 0;
+ 
+-	case JSIOCSAXMAP:
+-		if (copy_from_user(joydev->abspam, argp,
+-				   sizeof(__u8) * (ABS_MAX + 1)))
++	}
++
++	/*
++	 * Process variable-sized commands (the axis and button map commands
++	 * are considered variable-sized to decouple them from the values of
++	 * ABS_MAX and KEY_MAX).
++	 */
++	switch (cmd & ~IOCSIZE_MASK) {
++
++	case (JSIOCSAXMAP & ~IOCSIZE_MASK):
++		len = min_t(size_t, _IOC_SIZE(cmd), sizeof(joydev->abspam));
++		/*
++		 * FIXME: we should not copy into our axis map before
++		 * validating the data.
++		 */
++		if (copy_from_user(joydev->abspam, argp, len))
+ 			return -EFAULT;
+ 
+ 		for (i = 0; i < joydev->nabs; i++) {
+@@ -512,13 +528,17 @@ static int joydev_ioctl_common(struct joydev *joydev,
+ 		}
+ 		return 0;
+ 
+-	case JSIOCGAXMAP:
+-		return copy_to_user(argp, joydev->abspam,
+-			sizeof(__u8) * (ABS_MAX + 1)) ? -EFAULT : 0;
+-
+-	case JSIOCSBTNMAP:
+-		if (copy_from_user(joydev->keypam, argp,
+-				   sizeof(__u16) * (KEY_MAX - BTN_MISC + 1)))
++	case (JSIOCGAXMAP & ~IOCSIZE_MASK):
++		len = min_t(size_t, _IOC_SIZE(cmd), sizeof(joydev->abspam));
++		return copy_to_user(argp, joydev->abspam, len) ? -EFAULT : 0;
++
++	case (JSIOCSBTNMAP & ~IOCSIZE_MASK):
++		len = min_t(size_t, _IOC_SIZE(cmd), sizeof(joydev->keypam));
++		/*
++		 * FIXME: we should not copy into our keymap before
++		 * validating the data.
++		 */
++		if (copy_from_user(joydev->keypam, argp, len))
+ 			return -EFAULT;
+ 
+ 		for (i = 0; i < joydev->nkey; i++) {
+@@ -530,23 +550,19 @@ static int joydev_ioctl_common(struct joydev *joydev,
+ 
+ 		return 0;
+ 
+-	case JSIOCGBTNMAP:
+-		return copy_to_user(argp, joydev->keypam,
+-			sizeof(__u16) * (KEY_MAX - BTN_MISC + 1)) ? -EFAULT : 0;
++	case (JSIOCGBTNMAP & ~IOCSIZE_MASK):
++		len = min_t(size_t, _IOC_SIZE(cmd), sizeof(joydev->keypam));
++		return copy_to_user(argp, joydev->keypam, len) ? -EFAULT : 0;
+ 
+-	default:
+-		if ((cmd & ~IOCSIZE_MASK) == JSIOCGNAME(0)) {
+-			int len;
+-			if (!dev->name)
+-				return 0;
+-			len = strlen(dev->name) + 1;
+-			if (len > _IOC_SIZE(cmd))
+-				len = _IOC_SIZE(cmd);
+-			if (copy_to_user(argp, dev->name, len))
+-				return -EFAULT;
+-			return len;
+-		}
++	case JSIOCGNAME(0):
++		name = dev->name;
++		if (!name)
++			return 0;
++
++		len = min_t(size_t, _IOC_SIZE(cmd), strlen(name) + 1);
++		return copy_to_user(argp, name, len) ? -EFAULT : len;
+ 	}
++
+ 	return -EINVAL;
+ }
+ 
+diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c
+index 7c70738..168e892 100644
+--- a/drivers/media/video/em28xx/em28xx-cards.c
++++ b/drivers/media/video/em28xx/em28xx-cards.c
+@@ -1886,6 +1886,9 @@ void em28xx_card_setup(struct em28xx *dev)
+ 	if (em28xx_boards[dev->model].tuner_addr)
+ 		dev->tuner_addr = em28xx_boards[dev->model].tuner_addr;
+ 
++	if (em28xx_boards[dev->model].tda9887_conf)
++		dev->tda9887_conf = em28xx_boards[dev->model].tda9887_conf;
++
+ 	/* request some modules */
+ 	switch (dev->model) {
+ 	case EM2820_BOARD_HAUPPAUGE_WINTV_USB_2:
+diff --git a/drivers/net/mlx4/eq.c b/drivers/net/mlx4/eq.c
+index 8830dcb..4602952 100644
+--- a/drivers/net/mlx4/eq.c
++++ b/drivers/net/mlx4/eq.c
+@@ -524,48 +524,6 @@ static void mlx4_unmap_clr_int(struct mlx4_dev *dev)
+ 	iounmap(priv->clr_base);
+ }
+ 
+-int mlx4_map_eq_icm(struct mlx4_dev *dev, u64 icm_virt)
+-{
+-	struct mlx4_priv *priv = mlx4_priv(dev);
+-	int ret;
+-
+-	/*
+-	 * We assume that mapping one page is enough for the whole EQ
+-	 * context table.  This is fine with all current HCAs, because
+-	 * we only use 32 EQs and each EQ uses 64 bytes of context
+-	 * memory, or 1 KB total.
+-	 */
+-	priv->eq_table.icm_virt = icm_virt;
+-	priv->eq_table.icm_page = alloc_page(GFP_HIGHUSER);
+-	if (!priv->eq_table.icm_page)
+-		return -ENOMEM;
+-	priv->eq_table.icm_dma  = pci_map_page(dev->pdev, priv->eq_table.icm_page, 0,
+-					       PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);
+-	if (pci_dma_mapping_error(dev->pdev, priv->eq_table.icm_dma)) {
+-		__free_page(priv->eq_table.icm_page);
+-		return -ENOMEM;
+-	}
+-
+-	ret = mlx4_MAP_ICM_page(dev, priv->eq_table.icm_dma, icm_virt);
+-	if (ret) {
+-		pci_unmap_page(dev->pdev, priv->eq_table.icm_dma, PAGE_SIZE,
+-			       PCI_DMA_BIDIRECTIONAL);
+-		__free_page(priv->eq_table.icm_page);
+-	}
+-
+-	return ret;
+-}
+-
+-void mlx4_unmap_eq_icm(struct mlx4_dev *dev)
+-{
+-	struct mlx4_priv *priv = mlx4_priv(dev);
+-
+-	mlx4_UNMAP_ICM(dev, priv->eq_table.icm_virt, 1);
+-	pci_unmap_page(dev->pdev, priv->eq_table.icm_dma, PAGE_SIZE,
+-		       PCI_DMA_BIDIRECTIONAL);
+-	__free_page(priv->eq_table.icm_page);
+-}
+-
+ int mlx4_alloc_eq_table(struct mlx4_dev *dev)
+ {
+ 	struct mlx4_priv *priv = mlx4_priv(dev);
+diff --git a/drivers/net/mlx4/main.c b/drivers/net/mlx4/main.c
+index 30bea96..5a1387f 100644
+--- a/drivers/net/mlx4/main.c
++++ b/drivers/net/mlx4/main.c
+@@ -520,7 +520,10 @@ static int mlx4_init_icm(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap,
+ 		goto err_unmap_aux;
+ 	}
+ 
+-	err = mlx4_map_eq_icm(dev, init_hca->eqc_base);
++	err = mlx4_init_icm_table(dev, &priv->eq_table.table,
++				  init_hca->eqc_base, dev_cap->eqc_entry_sz,
++				  dev->caps.num_eqs, dev->caps.num_eqs,
++				  0, 0);
+ 	if (err) {
+ 		mlx4_err(dev, "Failed to map EQ context memory, aborting.\n");
+ 		goto err_unmap_cmpt;
+@@ -663,7 +666,7 @@ err_unmap_mtt:
+ 	mlx4_cleanup_icm_table(dev, &priv->mr_table.mtt_table);
+ 
+ err_unmap_eq:
+-	mlx4_unmap_eq_icm(dev);
++	mlx4_cleanup_icm_table(dev, &priv->eq_table.table);
+ 
+ err_unmap_cmpt:
+ 	mlx4_cleanup_icm_table(dev, &priv->eq_table.cmpt_table);
+@@ -693,11 +696,11 @@ static void mlx4_free_icms(struct mlx4_dev *dev)
+ 	mlx4_cleanup_icm_table(dev, &priv->qp_table.qp_table);
+ 	mlx4_cleanup_icm_table(dev, &priv->mr_table.dmpt_table);
+ 	mlx4_cleanup_icm_table(dev, &priv->mr_table.mtt_table);
++	mlx4_cleanup_icm_table(dev, &priv->eq_table.table);
+ 	mlx4_cleanup_icm_table(dev, &priv->eq_table.cmpt_table);
+ 	mlx4_cleanup_icm_table(dev, &priv->cq_table.cmpt_table);
+ 	mlx4_cleanup_icm_table(dev, &priv->srq_table.cmpt_table);
+ 	mlx4_cleanup_icm_table(dev, &priv->qp_table.cmpt_table);
+-	mlx4_unmap_eq_icm(dev);
+ 
+ 	mlx4_UNMAP_ICM_AUX(dev);
+ 	mlx4_free_icm(dev, priv->fw.aux_icm, 0);
+diff --git a/drivers/net/mlx4/mlx4.h b/drivers/net/mlx4/mlx4.h
+index 5bd79c2..bc72d6e 100644
+--- a/drivers/net/mlx4/mlx4.h
++++ b/drivers/net/mlx4/mlx4.h
+@@ -205,9 +205,7 @@ struct mlx4_eq_table {
+ 	void __iomem	      **uar_map;
+ 	u32			clr_mask;
+ 	struct mlx4_eq	       *eq;
+-	u64			icm_virt;
+-	struct page	       *icm_page;
+-	dma_addr_t		icm_dma;
++	struct mlx4_icm_table	table;
+ 	struct mlx4_icm_table	cmpt_table;
+ 	int			have_irq;
+ 	u8			inta_pin;
+@@ -373,9 +371,6 @@ u64 mlx4_make_profile(struct mlx4_dev *dev,
+ 		      struct mlx4_dev_cap *dev_cap,
+ 		      struct mlx4_init_hca_param *init_hca);
+ 
+-int mlx4_map_eq_icm(struct mlx4_dev *dev, u64 icm_virt);
+-void mlx4_unmap_eq_icm(struct mlx4_dev *dev);
+-
+ int mlx4_cmd_init(struct mlx4_dev *dev);
+ void mlx4_cmd_cleanup(struct mlx4_dev *dev);
+ void mlx4_cmd_event(struct mlx4_dev *dev, u16 token, u8 status, u64 out_param);
+diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
+index 409f022..09eb47b 100644
+--- a/drivers/net/wireless/ath5k/base.c
++++ b/drivers/net/wireless/ath5k/base.c
+@@ -2623,7 +2623,7 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan)
+ 		sc->curchan = chan;
+ 		sc->curband = &sc->sbands[chan->band];
+ 	}
+-	ret = ath5k_hw_reset(ah, sc->opmode, sc->curchan, true);
++	ret = ath5k_hw_reset(ah, sc->opmode, sc->curchan, chan != NULL);
+ 	if (ret) {
+ 		ATH5K_ERR(sc, "can't reset hardware (%d)\n", ret);
+ 		goto err;
+diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
+index 3067673..e66a343 100644
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
+@@ -1194,6 +1194,7 @@ static void __init asus_hides_smbus_hostbridge(struct pci_dev *dev)
+ 			switch(dev->subsystem_device) {
+ 			case 0x00b8: /* Compaq Evo D510 CMT */
+ 			case 0x00b9: /* Compaq Evo D510 SFF */
++			case 0x00ba: /* Compaq Evo D510 USDT */
+ 				/* Motherboard doesn't have Host bridge
+ 				 * subvendor/subdevice IDs and on-board VGA
+ 				 * controller is disabled if an AGP card is
+@@ -2353,8 +2354,10 @@ static void __devinit nv_msi_ht_cap_quirk_leaf(struct pci_dev *dev)
+ }
+ 
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, nv_msi_ht_cap_quirk_leaf);
++DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, nv_msi_ht_cap_quirk_leaf);
+ 
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, PCI_ANY_ID, nv_msi_ht_cap_quirk_all);
++DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_AL, PCI_ANY_ID, nv_msi_ht_cap_quirk_all);
+ 
+ static void __devinit quirk_msi_intx_disable_bug(struct pci_dev *dev)
+ {
+diff --git a/drivers/ps3/ps3stor_lib.c b/drivers/ps3/ps3stor_lib.c
+index 18066d5..af0afa1 100644
+--- a/drivers/ps3/ps3stor_lib.c
++++ b/drivers/ps3/ps3stor_lib.c
+@@ -23,6 +23,65 @@
+ #include <asm/lv1call.h>
+ #include <asm/ps3stor.h>
+ 
++/*
++ * A workaround for flash memory I/O errors when the internal hard disk
++ * has not been formatted for OtherOS use.  Delay disk close until flash
++ * memory is closed.
++ */
++
++static struct ps3_flash_workaround {
++	int flash_open;
++	int disk_open;
++	struct ps3_system_bus_device *disk_sbd;
++} ps3_flash_workaround;
++
++static int ps3stor_open_hv_device(struct ps3_system_bus_device *sbd)
++{
++	int error = ps3_open_hv_device(sbd);
++
++	if (error)
++		return error;
++
++	if (sbd->match_id == PS3_MATCH_ID_STOR_FLASH)
++		ps3_flash_workaround.flash_open = 1;
++
++	if (sbd->match_id == PS3_MATCH_ID_STOR_DISK)
++		ps3_flash_workaround.disk_open = 1;
++
++	return 0;
++}
++
++static int ps3stor_close_hv_device(struct ps3_system_bus_device *sbd)
++{
++	int error;
++
++	if (sbd->match_id == PS3_MATCH_ID_STOR_DISK
++		&& ps3_flash_workaround.disk_open
++		&& ps3_flash_workaround.flash_open) {
++		ps3_flash_workaround.disk_sbd = sbd;
++		return 0;
++	}
++
++	error = ps3_close_hv_device(sbd);
++
++	if (error)
++		return error;
++
++	if (sbd->match_id == PS3_MATCH_ID_STOR_DISK)
++		ps3_flash_workaround.disk_open = 0;
++
++	if (sbd->match_id == PS3_MATCH_ID_STOR_FLASH) {
++		ps3_flash_workaround.flash_open = 0;
++
++		if (ps3_flash_workaround.disk_sbd) {
++			ps3_close_hv_device(ps3_flash_workaround.disk_sbd);
++			ps3_flash_workaround.disk_open = 0;
++			ps3_flash_workaround.disk_sbd = NULL;
++		}
++	}
++
++	return 0;
++}
+ 
+ static int ps3stor_probe_access(struct ps3_storage_device *dev)
+ {
+@@ -90,7 +149,7 @@ int ps3stor_setup(struct ps3_storage_device *dev, irq_handler_t handler)
+ 	int error, res, alignment;
+ 	enum ps3_dma_page_size page_size;
+ 
+-	error = ps3_open_hv_device(&dev->sbd);
++	error = ps3stor_open_hv_device(&dev->sbd);
+ 	if (error) {
+ 		dev_err(&dev->sbd.core,
+ 			"%s:%u: ps3_open_hv_device failed %d\n", __func__,
+@@ -166,7 +225,7 @@ fail_free_irq:
+ fail_sb_event_receive_port_destroy:
+ 	ps3_sb_event_receive_port_destroy(&dev->sbd, dev->irq);
+ fail_close_device:
+-	ps3_close_hv_device(&dev->sbd);
++	ps3stor_close_hv_device(&dev->sbd);
+ fail:
+ 	return error;
+ }
+@@ -193,7 +252,7 @@ void ps3stor_teardown(struct ps3_storage_device *dev)
+ 			"%s:%u: destroy event receive port failed %d\n",
+ 			__func__, __LINE__, error);
+ 
+-	error = ps3_close_hv_device(&dev->sbd);
++	error = ps3stor_close_hv_device(&dev->sbd);
+ 	if (error)
+ 		dev_err(&dev->sbd.core,
+ 			"%s:%u: ps3_close_hv_device failed %d\n", __func__,
+diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
+index ff63279..ab96890 100644
+--- a/drivers/scsi/sg.c
++++ b/drivers/scsi/sg.c
+@@ -1811,7 +1811,7 @@ retry:
+ 	return 0;
+ out:
+ 	for (i = 0; i < k; i++)
+-		__free_pages(schp->pages[k], order);
++		__free_pages(schp->pages[i], order);
+ 
+ 	if (--order >= 0)
+ 		goto retry;
+diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
+index 605b17a..b4fb1d0 100644
+--- a/fs/binfmt_elf.c
++++ b/fs/binfmt_elf.c
+@@ -501,22 +501,22 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
+ 		}
+ 	}
+ 
+-	/*
+-	 * Now fill out the bss section.  First pad the last page up
+-	 * to the page boundary, and then perform a mmap to make sure
+-	 * that there are zero-mapped pages up to and including the 
+-	 * last bss page.
+-	 */
+-	if (padzero(elf_bss)) {
+-		error = -EFAULT;
+-		goto out_close;
+-	}
++	if (last_bss > elf_bss) {
++		/*
++		 * Now fill out the bss section.  First pad the last page up
++		 * to the page boundary, and then perform a mmap to make sure
++		 * that there are zero-mapped pages up to and including the
++		 * last bss page.
++		 */
++		if (padzero(elf_bss)) {
++			error = -EFAULT;
++			goto out_close;
++		}
+ 
+-	/* What we have mapped so far */
+-	elf_bss = ELF_PAGESTART(elf_bss + ELF_MIN_ALIGN - 1);
++		/* What we have mapped so far */
++		elf_bss = ELF_PAGESTART(elf_bss + ELF_MIN_ALIGN - 1);
+ 
+-	/* Map the last of the bss segment */
+-	if (last_bss > elf_bss) {
++		/* Map the last of the bss segment */
+ 		down_write(&current->mm->mmap_sem);
+ 		error = do_brk(elf_bss, last_bss - elf_bss);
+ 		up_write(&current->mm->mmap_sem);
+diff --git a/fs/udf/lowlevel.c b/fs/udf/lowlevel.c
+index 703843f..1b88fd5 100644
+--- a/fs/udf/lowlevel.c
++++ b/fs/udf/lowlevel.c
+@@ -56,7 +56,12 @@ unsigned long udf_get_last_block(struct super_block *sb)
+ 	struct block_device *bdev = sb->s_bdev;
+ 	unsigned long lblock = 0;
+ 
+-	if (ioctl_by_bdev(bdev, CDROM_LAST_WRITTEN, (unsigned long) &lblock))
++	/*
++	 * ioctl failed or returned obviously bogus value?
++	 * Try using the device size...
++	 */
++	if (ioctl_by_bdev(bdev, CDROM_LAST_WRITTEN, (unsigned long) &lblock) ||
++	    lblock == 0)
+ 		lblock = bdev->bd_inode->i_size >> sb->s_blocksize_bits;
+ 
+ 	if (lblock)
+diff --git a/ipc/shm.c b/ipc/shm.c
+index 30b1265..75aac57 100644
+--- a/ipc/shm.c
++++ b/ipc/shm.c
+@@ -411,7 +411,7 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
+ 	return error;
+ 
+ no_id:
+-	if (shp->mlock_user)	/* shmflg & SHM_HUGETLB case */
++	if (is_file_hugepages(file) && shp->mlock_user)
+ 		user_shm_unlock(size, shp->mlock_user);
+ 	fput(file);
+ no_file:
+diff --git a/net/wireless/scan.c b/net/wireless/scan.c
+index f5be6a8..f9c53f3 100644
+--- a/net/wireless/scan.c
++++ b/net/wireless/scan.c
+@@ -97,7 +97,7 @@ void cfg80211_bss_expire(struct cfg80211_registered_device *dev)
+ 		dev->bss_generation++;
+ }
+ 
+-static u8 *find_ie(u8 num, u8 *ies, size_t len)
++static u8 *find_ie(u8 num, u8 *ies, int len)
+ {
+ 	while (len > 2 && ies[0] != num) {
+ 		len -= ies[1] + 2;
+diff --git a/sound/pci/cs46xx/cs46xx_lib.h b/sound/pci/cs46xx/cs46xx_lib.h
+index 4eb55aa..b518949 100644
+--- a/sound/pci/cs46xx/cs46xx_lib.h
++++ b/sound/pci/cs46xx/cs46xx_lib.h
+@@ -35,7 +35,7 @@
+ 
+ 
+ #ifdef CONFIG_SND_CS46XX_NEW_DSP
+-#define CS46XX_MIN_PERIOD_SIZE 1
++#define CS46XX_MIN_PERIOD_SIZE 64
+ #define CS46XX_MAX_PERIOD_SIZE 1024*1024
+ #else
+ #define CS46XX_MIN_PERIOD_SIZE 2048
+diff --git a/sound/pci/oxygen/oxygen_io.c b/sound/pci/oxygen/oxygen_io.c
+index c1eb923..09b2b2a 100644
+--- a/sound/pci/oxygen/oxygen_io.c
++++ b/sound/pci/oxygen/oxygen_io.c
+@@ -215,17 +215,8 @@ EXPORT_SYMBOL(oxygen_write_spi);
+ 
+ void oxygen_write_i2c(struct oxygen *chip, u8 device, u8 map, u8 data)
+ {
+-	unsigned long timeout;
+-
+ 	/* should not need more than about 300 us */
+-	timeout = jiffies + msecs_to_jiffies(1);
+-	do {
+-		if (!(oxygen_read16(chip, OXYGEN_2WIRE_BUS_STATUS)
+-		      & OXYGEN_2WIRE_BUSY))
+-			break;
+-		udelay(1);
+-		cond_resched();
+-	} while (time_after_eq(timeout, jiffies));
++	msleep(1);
+ 
+ 	oxygen_write8(chip, OXYGEN_2WIRE_MAP, map);
+ 	oxygen_write8(chip, OXYGEN_2WIRE_DATA, data);
+diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c
+index 0275321..223d3af 100644
+--- a/sound/soc/codecs/wm8350.c
++++ b/sound/soc/codecs/wm8350.c
+@@ -613,7 +613,7 @@ SOC_DAPM_SINGLE("Switch", WM8350_BEEP_VOLUME, 15, 1, 1);
+ 
+ /* Out4 Capture Mux */
+ static const struct snd_kcontrol_new wm8350_out4_capture_controls =
+-SOC_DAPM_ENUM("Route", wm8350_enum[8]);
++SOC_DAPM_ENUM("Route", wm8350_enum[7]);
+ 
+ static const struct snd_soc_dapm_widget wm8350_dapm_widgets[] = {
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/stable/2.6.30.3.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/stable/2.6.30.3.patch
@@ -0,0 +1,15 @@
+diff --git a/drivers/video/fbmon.c b/drivers/video/fbmon.c
+index 5c1a2c0..9ae9cd3 100644
+--- a/drivers/video/fbmon.c
++++ b/drivers/video/fbmon.c
+@@ -256,8 +256,8 @@ static void fix_edid(unsigned char *edid, int fix)
+ 
+ static int edid_checksum(unsigned char *edid)
+ {
+-	unsigned char i, csum = 0, all_null = 0;
+-	int err = 0, fix = check_edid(edid);
++	unsigned char csum = 0, all_null = 0;
++	int i, err = 0, fix = check_edid(edid);
+ 
+ 	if (fix)
+ 		fix_edid(edid, fix);
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/stable/2.6.30.6.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/stable/2.6.30.6.patch
@@ -0,0 +1,3878 @@
+diff --git a/arch/ia64/kernel/pci-dma.c b/arch/ia64/kernel/pci-dma.c
+index eb98738..391f637 100644
+--- a/arch/ia64/kernel/pci-dma.c
++++ b/arch/ia64/kernel/pci-dma.c
+@@ -67,11 +67,6 @@ iommu_dma_init(void)
+ 
+ int iommu_dma_supported(struct device *dev, u64 mask)
+ {
+-	struct dma_map_ops *ops = platform_dma_get_ops(dev);
+-
+-	if (ops->dma_supported)
+-		return ops->dma_supported(dev, mask);
+-
+ 	/* Copied from i386. Doesn't make much sense, because it will
+ 	   only work for pci_alloc_coherent.
+ 	   The caller just has to use GFP_DMA in this case. */
+diff --git a/arch/powerpc/platforms/ps3/time.c b/arch/powerpc/platforms/ps3/time.c
+index b178a1e..40b5cb4 100644
+--- a/arch/powerpc/platforms/ps3/time.c
++++ b/arch/powerpc/platforms/ps3/time.c
+@@ -21,6 +21,7 @@
+ #include <linux/kernel.h>
+ #include <linux/platform_device.h>
+ 
++#include <asm/firmware.h>
+ #include <asm/rtc.h>
+ #include <asm/lv1call.h>
+ #include <asm/ps3.h>
+@@ -84,6 +85,9 @@ static int __init ps3_rtc_init(void)
+ {
+ 	struct platform_device *pdev;
+ 
++	if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
++		return -ENODEV;
++
+ 	pdev = platform_device_register_simple("rtc-ps3", -1, NULL, 0);
+ 	if (IS_ERR(pdev))
+ 		return PTR_ERR(pdev);
+diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
+index a93d1cc..9a9efb0 100644
+--- a/arch/x86/include/asm/kvm_host.h
++++ b/arch/x86/include/asm/kvm_host.h
+@@ -185,6 +185,7 @@ union kvm_mmu_page_role {
+ 		unsigned access:3;
+ 		unsigned invalid:1;
+ 		unsigned cr4_pge:1;
++		unsigned nxe:1;
+ 	};
+ };
+ 
+@@ -513,6 +514,8 @@ struct kvm_x86_ops {
+ 	void (*run)(struct kvm_vcpu *vcpu, struct kvm_run *run);
+ 	int (*handle_exit)(struct kvm_run *run, struct kvm_vcpu *vcpu);
+ 	void (*skip_emulated_instruction)(struct kvm_vcpu *vcpu);
++	void (*set_interrupt_shadow)(struct kvm_vcpu *vcpu, int mask);
++	u32 (*get_interrupt_shadow)(struct kvm_vcpu *vcpu, int mask);
+ 	void (*patch_hypercall)(struct kvm_vcpu *vcpu,
+ 				unsigned char *hypercall_addr);
+ 	int (*get_irq)(struct kvm_vcpu *vcpu);
+diff --git a/arch/x86/include/asm/kvm_x86_emulate.h b/arch/x86/include/asm/kvm_x86_emulate.h
+index 6a15973..b7ed2c4 100644
+--- a/arch/x86/include/asm/kvm_x86_emulate.h
++++ b/arch/x86/include/asm/kvm_x86_emulate.h
+@@ -143,6 +143,9 @@ struct decode_cache {
+ 	struct fetch_cache fetch;
+ };
+ 
++#define X86_SHADOW_INT_MOV_SS  1
++#define X86_SHADOW_INT_STI     2
++
+ struct x86_emulate_ctxt {
+ 	/* Register state before/after emulation. */
+ 	struct kvm_vcpu *vcpu;
+@@ -152,6 +155,9 @@ struct x86_emulate_ctxt {
+ 	int mode;
+ 	u32 cs_base;
+ 
++	/* interruptibility state, as a result of execution of STI or MOV SS */
++	int interruptibility;
++
+ 	/* decode cache */
+ 	struct decode_cache decode;
+ };
+diff --git a/arch/x86/kernel/apic/ipi.c b/arch/x86/kernel/apic/ipi.c
+index dbf5445..6ef00ba 100644
+--- a/arch/x86/kernel/apic/ipi.c
++++ b/arch/x86/kernel/apic/ipi.c
+@@ -106,6 +106,9 @@ void default_send_IPI_mask_logical(const struct cpumask *cpumask, int vector)
+ 	unsigned long mask = cpumask_bits(cpumask)[0];
+ 	unsigned long flags;
+ 
++	if (WARN_ONCE(!mask, "empty IPI mask"))
++		return;
++
+ 	local_irq_save(flags);
+ 	WARN_ON(mask & ~cpumask_bits(cpu_online_mask)[0]);
+ 	__default_send_IPI_dest_field(mask, vector, apic->dest_logical);
+diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
+index d869b3b..61a592e 100644
+--- a/arch/x86/kernel/cpu/amd.c
++++ b/arch/x86/kernel/cpu/amd.c
+@@ -356,7 +356,7 @@ static void __cpuinit early_init_amd(struct cpuinfo_x86 *c)
+ #endif
+ #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_PCI)
+ 	/* check CPU config space for extended APIC ID */
+-	if (c->x86 >= 0xf) {
++	if (cpu_has_apic && c->x86 >= 0xf) {
+ 		unsigned int val;
+ 		val = read_pci_config(0, 24, 0, 0x68);
+ 		if ((val & ((1 << 17) | (1 << 18))) == ((1 << 17) | (1 << 18)))
+diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
+index 32cf11e..d7ce26b 100644
+--- a/arch/x86/kvm/mmu.c
++++ b/arch/x86/kvm/mmu.c
+@@ -490,16 +490,20 @@ static unsigned long *gfn_to_rmap(struct kvm *kvm, gfn_t gfn, int lpage)
+  *
+  * If rmapp bit zero is one, (then rmap & ~1) points to a struct kvm_rmap_desc
+  * containing more mappings.
++ *
++ * Returns the number of rmap entries before the spte was added or zero if
++ * the spte was not added.
++ *
+  */
+-static void rmap_add(struct kvm_vcpu *vcpu, u64 *spte, gfn_t gfn, int lpage)
++static int rmap_add(struct kvm_vcpu *vcpu, u64 *spte, gfn_t gfn, int lpage)
+ {
+ 	struct kvm_mmu_page *sp;
+ 	struct kvm_rmap_desc *desc;
+ 	unsigned long *rmapp;
+-	int i;
++	int i, count = 0;
+ 
+ 	if (!is_rmap_pte(*spte))
+-		return;
++		return count;
+ 	gfn = unalias_gfn(vcpu->kvm, gfn);
+ 	sp = page_header(__pa(spte));
+ 	sp->gfns[spte - sp->spt] = gfn;
+@@ -516,8 +520,10 @@ static void rmap_add(struct kvm_vcpu *vcpu, u64 *spte, gfn_t gfn, int lpage)
+ 	} else {
+ 		rmap_printk("rmap_add: %p %llx many->many\n", spte, *spte);
+ 		desc = (struct kvm_rmap_desc *)(*rmapp & ~1ul);
+-		while (desc->shadow_ptes[RMAP_EXT-1] && desc->more)
++		while (desc->shadow_ptes[RMAP_EXT-1] && desc->more) {
+ 			desc = desc->more;
++			count += RMAP_EXT;
++		}
+ 		if (desc->shadow_ptes[RMAP_EXT-1]) {
+ 			desc->more = mmu_alloc_rmap_desc(vcpu);
+ 			desc = desc->more;
+@@ -526,6 +532,7 @@ static void rmap_add(struct kvm_vcpu *vcpu, u64 *spte, gfn_t gfn, int lpage)
+ 			;
+ 		desc->shadow_ptes[i] = spte;
+ 	}
++	return count;
+ }
+ 
+ static void rmap_desc_remove_entry(unsigned long *rmapp,
+@@ -755,6 +762,19 @@ static int kvm_age_rmapp(struct kvm *kvm, unsigned long *rmapp)
+ 	return young;
+ }
+ 
++#define RMAP_RECYCLE_THRESHOLD 1000
++
++static void rmap_recycle(struct kvm_vcpu *vcpu, gfn_t gfn, int lpage)
++{
++	unsigned long *rmapp;
++
++	gfn = unalias_gfn(vcpu->kvm, gfn);
++	rmapp = gfn_to_rmap(vcpu->kvm, gfn, lpage);
++
++	kvm_unmap_rmapp(vcpu->kvm, rmapp);
++	kvm_flush_remote_tlbs(vcpu->kvm);
++}
++
+ int kvm_age_hva(struct kvm *kvm, unsigned long hva)
+ {
+ 	return kvm_handle_hva(kvm, hva, kvm_age_rmapp);
+@@ -1417,24 +1437,25 @@ static int kvm_mmu_zap_page(struct kvm *kvm, struct kvm_mmu_page *sp)
+  */
+ void kvm_mmu_change_mmu_pages(struct kvm *kvm, unsigned int kvm_nr_mmu_pages)
+ {
++	int used_pages;
++
++	used_pages = kvm->arch.n_alloc_mmu_pages - kvm->arch.n_free_mmu_pages;
++	used_pages = max(0, used_pages);
++
+ 	/*
+ 	 * If we set the number of mmu pages to be smaller be than the
+ 	 * number of actived pages , we must to free some mmu pages before we
+ 	 * change the value
+ 	 */
+ 
+-	if ((kvm->arch.n_alloc_mmu_pages - kvm->arch.n_free_mmu_pages) >
+-	    kvm_nr_mmu_pages) {
+-		int n_used_mmu_pages = kvm->arch.n_alloc_mmu_pages
+-				       - kvm->arch.n_free_mmu_pages;
+-
+-		while (n_used_mmu_pages > kvm_nr_mmu_pages) {
++	if (used_pages > kvm_nr_mmu_pages) {
++		while (used_pages > kvm_nr_mmu_pages) {
+ 			struct kvm_mmu_page *page;
+ 
+ 			page = container_of(kvm->arch.active_mmu_pages.prev,
+ 					    struct kvm_mmu_page, link);
+ 			kvm_mmu_zap_page(kvm, page);
+-			n_used_mmu_pages--;
++			used_pages--;
+ 		}
+ 		kvm->arch.n_free_mmu_pages = 0;
+ 	}
+@@ -1770,6 +1791,7 @@ static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *shadow_pte,
+ {
+ 	int was_rmapped = 0;
+ 	int was_writeble = is_writeble_pte(*shadow_pte);
++	int rmap_count;
+ 
+ 	pgprintk("%s: spte %llx access %x write_fault %d"
+ 		 " user_fault %d gfn %lx\n",
+@@ -1811,9 +1833,11 @@ static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *shadow_pte,
+ 
+ 	page_header_update_slot(vcpu->kvm, shadow_pte, gfn);
+ 	if (!was_rmapped) {
+-		rmap_add(vcpu, shadow_pte, gfn, largepage);
++		rmap_count = rmap_add(vcpu, shadow_pte, gfn, largepage);
+ 		if (!is_rmap_pte(*shadow_pte))
+ 			kvm_release_pfn_clean(pfn);
++		if (rmap_count > RMAP_RECYCLE_THRESHOLD)
++			rmap_recycle(vcpu, gfn, largepage);
+ 	} else {
+ 		if (was_writeble)
+ 			kvm_release_pfn_dirty(pfn);
+@@ -1942,7 +1966,19 @@ static void mmu_free_roots(struct kvm_vcpu *vcpu)
+ 	vcpu->arch.mmu.root_hpa = INVALID_PAGE;
+ }
+ 
+-static void mmu_alloc_roots(struct kvm_vcpu *vcpu)
++static int mmu_check_root(struct kvm_vcpu *vcpu, gfn_t root_gfn)
++{
++	int ret = 0;
++
++	if (!kvm_is_visible_gfn(vcpu->kvm, root_gfn)) {
++		set_bit(KVM_REQ_TRIPLE_FAULT, &vcpu->requests);
++		ret = 1;
++	}
++
++	return ret;
++}
++
++static int mmu_alloc_roots(struct kvm_vcpu *vcpu)
+ {
+ 	int i;
+ 	gfn_t root_gfn;
+@@ -1957,13 +1993,15 @@ static void mmu_alloc_roots(struct kvm_vcpu *vcpu)
+ 		ASSERT(!VALID_PAGE(root));
+ 		if (tdp_enabled)
+ 			direct = 1;
++		if (mmu_check_root(vcpu, root_gfn))
++			return 1;
+ 		sp = kvm_mmu_get_page(vcpu, root_gfn, 0,
+ 				      PT64_ROOT_LEVEL, direct,
+ 				      ACC_ALL, NULL);
+ 		root = __pa(sp->spt);
+ 		++sp->root_count;
+ 		vcpu->arch.mmu.root_hpa = root;
+-		return;
++		return 0;
+ 	}
+ 	direct = !is_paging(vcpu);
+ 	if (tdp_enabled)
+@@ -1980,6 +2018,8 @@ static void mmu_alloc_roots(struct kvm_vcpu *vcpu)
+ 			root_gfn = vcpu->arch.pdptrs[i] >> PAGE_SHIFT;
+ 		} else if (vcpu->arch.mmu.root_level == 0)
+ 			root_gfn = 0;
++		if (mmu_check_root(vcpu, root_gfn))
++			return 1;
+ 		sp = kvm_mmu_get_page(vcpu, root_gfn, i << 30,
+ 				      PT32_ROOT_LEVEL, direct,
+ 				      ACC_ALL, NULL);
+@@ -1988,6 +2028,7 @@ static void mmu_alloc_roots(struct kvm_vcpu *vcpu)
+ 		vcpu->arch.mmu.pae_root[i] = root | PT_PRESENT_MASK;
+ 	}
+ 	vcpu->arch.mmu.root_hpa = __pa(vcpu->arch.mmu.pae_root);
++	return 0;
+ }
+ 
+ static void mmu_sync_roots(struct kvm_vcpu *vcpu)
+@@ -2006,7 +2047,7 @@ static void mmu_sync_roots(struct kvm_vcpu *vcpu)
+ 	for (i = 0; i < 4; ++i) {
+ 		hpa_t root = vcpu->arch.mmu.pae_root[i];
+ 
+-		if (root) {
++		if (root && VALID_PAGE(root)) {
+ 			root &= PT64_BASE_ADDR_MASK;
+ 			sp = page_header(root);
+ 			mmu_sync_children(vcpu, sp);
+@@ -2290,9 +2331,11 @@ int kvm_mmu_load(struct kvm_vcpu *vcpu)
+ 		goto out;
+ 	spin_lock(&vcpu->kvm->mmu_lock);
+ 	kvm_mmu_free_some_pages(vcpu);
+-	mmu_alloc_roots(vcpu);
++	r = mmu_alloc_roots(vcpu);
+ 	mmu_sync_roots(vcpu);
+ 	spin_unlock(&vcpu->kvm->mmu_lock);
++	if (r)
++		goto out;
+ 	kvm_x86_ops->set_cr3(vcpu, vcpu->arch.mmu.root_hpa);
+ 	kvm_mmu_flush_tlb(vcpu);
+ out:
+@@ -2638,14 +2681,6 @@ EXPORT_SYMBOL_GPL(kvm_disable_tdp);
+ 
+ static void free_mmu_pages(struct kvm_vcpu *vcpu)
+ {
+-	struct kvm_mmu_page *sp;
+-
+-	while (!list_empty(&vcpu->kvm->arch.active_mmu_pages)) {
+-		sp = container_of(vcpu->kvm->arch.active_mmu_pages.next,
+-				  struct kvm_mmu_page, link);
+-		kvm_mmu_zap_page(vcpu->kvm, sp);
+-		cond_resched();
+-	}
+ 	free_page((unsigned long)vcpu->arch.mmu.pae_root);
+ }
+ 
+@@ -2710,7 +2745,6 @@ void kvm_mmu_slot_remove_write_access(struct kvm *kvm, int slot)
+ {
+ 	struct kvm_mmu_page *sp;
+ 
+-	spin_lock(&kvm->mmu_lock);
+ 	list_for_each_entry(sp, &kvm->arch.active_mmu_pages, link) {
+ 		int i;
+ 		u64 *pt;
+@@ -2725,7 +2759,6 @@ void kvm_mmu_slot_remove_write_access(struct kvm *kvm, int slot)
+ 				pt[i] &= ~PT_WRITABLE_MASK;
+ 	}
+ 	kvm_flush_remote_tlbs(kvm);
+-	spin_unlock(&kvm->mmu_lock);
+ }
+ 
+ void kvm_mmu_zap_all(struct kvm *kvm)
+diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
+index 1f8510c..5700009 100644
+--- a/arch/x86/kvm/svm.c
++++ b/arch/x86/kvm/svm.c
+@@ -227,6 +227,27 @@ static int is_external_interrupt(u32 info)
+ 	return info == (SVM_EVTINJ_VALID | SVM_EVTINJ_TYPE_INTR);
+ }
+ 
++static u32 svm_get_interrupt_shadow(struct kvm_vcpu *vcpu, int mask)
++{
++	struct vcpu_svm *svm = to_svm(vcpu);
++	u32 ret = 0;
++
++	if (svm->vmcb->control.int_state & SVM_INTERRUPT_SHADOW_MASK)
++		ret |= X86_SHADOW_INT_STI | X86_SHADOW_INT_MOV_SS;
++	return ret & mask;
++}
++
++static void svm_set_interrupt_shadow(struct kvm_vcpu *vcpu, int mask)
++{
++	struct vcpu_svm *svm = to_svm(vcpu);
++
++	if (mask == 0)
++		svm->vmcb->control.int_state &= ~SVM_INTERRUPT_SHADOW_MASK;
++	else
++		svm->vmcb->control.int_state |= SVM_INTERRUPT_SHADOW_MASK;
++
++}
++
+ static void skip_emulated_instruction(struct kvm_vcpu *vcpu)
+ {
+ 	struct vcpu_svm *svm = to_svm(vcpu);
+@@ -240,7 +261,7 @@ static void skip_emulated_instruction(struct kvm_vcpu *vcpu)
+ 		       __func__, kvm_rip_read(vcpu), svm->next_rip);
+ 
+ 	kvm_rip_write(vcpu, svm->next_rip);
+-	svm->vmcb->control.int_state &= ~SVM_INTERRUPT_SHADOW_MASK;
++	svm_set_interrupt_shadow(vcpu, 0);
+ 
+ 	vcpu->arch.interrupt_window_open = (svm->vcpu.arch.hflags & HF_GIF_MASK);
+ }
+@@ -715,6 +736,7 @@ static void svm_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
+ 		svm->vmcb->control.tsc_offset += delta;
+ 		vcpu->cpu = cpu;
+ 		kvm_migrate_timers(vcpu);
++		svm->asid_generation = 0;
+ 	}
+ 
+ 	for (i = 0; i < NR_HOST_SAVE_USER_MSRS; i++)
+@@ -1025,7 +1047,6 @@ static void new_asid(struct vcpu_svm *svm, struct svm_cpu_data *svm_data)
+ 		svm->vmcb->control.tlb_ctl = TLB_CONTROL_FLUSH_ALL_ASID;
+ 	}
+ 
+-	svm->vcpu.cpu = svm_data->cpu;
+ 	svm->asid_generation = svm_data->asid_generation;
+ 	svm->vmcb->control.asid = svm_data->next_asid++;
+ }
+@@ -2237,8 +2258,8 @@ static void pre_svm_run(struct vcpu_svm *svm)
+ 	struct svm_cpu_data *svm_data = per_cpu(svm_data, cpu);
+ 
+ 	svm->vmcb->control.tlb_ctl = TLB_CONTROL_DO_NOTHING;
+-	if (svm->vcpu.cpu != cpu ||
+-	    svm->asid_generation != svm_data->asid_generation)
++	/* FIXME: handle wraparound of asid_generation */
++	if (svm->asid_generation != svm_data->asid_generation)
+ 		new_asid(svm, svm_data);
+ }
+ 
+@@ -2667,6 +2688,8 @@ static struct kvm_x86_ops svm_x86_ops = {
+ 	.run = svm_vcpu_run,
+ 	.handle_exit = handle_exit,
+ 	.skip_emulated_instruction = skip_emulated_instruction,
++	.set_interrupt_shadow = svm_set_interrupt_shadow,
++	.get_interrupt_shadow = svm_get_interrupt_shadow,
+ 	.patch_hypercall = svm_patch_hypercall,
+ 	.get_irq = svm_get_irq,
+ 	.set_irq = svm_set_irq,
+diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
+index fa0adcd..1a0d5cd 100644
+--- a/arch/x86/kvm/vmx.c
++++ b/arch/x86/kvm/vmx.c
+@@ -732,23 +732,45 @@ static void vmx_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags)
+ 	vmcs_writel(GUEST_RFLAGS, rflags);
+ }
+ 
++static u32 vmx_get_interrupt_shadow(struct kvm_vcpu *vcpu, int mask)
++{
++	u32 interruptibility = vmcs_read32(GUEST_INTERRUPTIBILITY_INFO);
++	int ret = 0;
++
++	if (interruptibility & GUEST_INTR_STATE_STI)
++		ret |= X86_SHADOW_INT_STI;
++	if (interruptibility & GUEST_INTR_STATE_MOV_SS)
++		ret |= X86_SHADOW_INT_MOV_SS;
++
++	return ret & mask;
++}
++
++static void vmx_set_interrupt_shadow(struct kvm_vcpu *vcpu, int mask)
++{
++	u32 interruptibility_old = vmcs_read32(GUEST_INTERRUPTIBILITY_INFO);
++	u32 interruptibility = interruptibility_old;
++
++	interruptibility &= ~(GUEST_INTR_STATE_STI | GUEST_INTR_STATE_MOV_SS);
++
++	if (mask & X86_SHADOW_INT_MOV_SS)
++		interruptibility |= GUEST_INTR_STATE_MOV_SS;
++	if (mask & X86_SHADOW_INT_STI)
++		interruptibility |= GUEST_INTR_STATE_STI;
++
++	if ((interruptibility != interruptibility_old))
++		vmcs_write32(GUEST_INTERRUPTIBILITY_INFO, interruptibility);
++}
++
+ static void skip_emulated_instruction(struct kvm_vcpu *vcpu)
+ {
+ 	unsigned long rip;
+-	u32 interruptibility;
+ 
+ 	rip = kvm_rip_read(vcpu);
+ 	rip += vmcs_read32(VM_EXIT_INSTRUCTION_LEN);
+ 	kvm_rip_write(vcpu, rip);
+ 
+-	/*
+-	 * We emulated an instruction, so temporary interrupt blocking
+-	 * should be removed, if set.
+-	 */
+-	interruptibility = vmcs_read32(GUEST_INTERRUPTIBILITY_INFO);
+-	if (interruptibility & 3)
+-		vmcs_write32(GUEST_INTERRUPTIBILITY_INFO,
+-			     interruptibility & ~3);
++	/* skipping an emulated instruction also counts */
++	vmx_set_interrupt_shadow(vcpu, 0);
+ 	vcpu->arch.interrupt_window_open = 1;
+ }
+ 
+@@ -3738,6 +3760,8 @@ static struct kvm_x86_ops vmx_x86_ops = {
+ 	.run = vmx_vcpu_run,
+ 	.handle_exit = kvm_handle_exit,
+ 	.skip_emulated_instruction = skip_emulated_instruction,
++	.set_interrupt_shadow = vmx_set_interrupt_shadow,
++	.get_interrupt_shadow = vmx_get_interrupt_shadow,
+ 	.patch_hypercall = vmx_patch_hypercall,
+ 	.get_irq = vmx_get_irq,
+ 	.set_irq = vmx_inject_irq,
+diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
+index ee4714b..0b1bfc6 100644
+--- a/arch/x86/kvm/x86.c
++++ b/arch/x86/kvm/x86.c
+@@ -523,6 +523,9 @@ static void set_efer(struct kvm_vcpu *vcpu, u64 efer)
+ 	efer |= vcpu->arch.shadow_efer & EFER_LMA;
+ 
+ 	vcpu->arch.shadow_efer = efer;
++
++	vcpu->arch.mmu.base_role.nxe = (efer & EFER_NX) && !tdp_enabled;
++	kvm_mmu_reset_context(vcpu);
+ }
+ 
+ void kvm_enable_efer_bits(u64 mask)
+@@ -703,11 +706,48 @@ static bool msr_mtrr_valid(unsigned msr)
+ 	return false;
+ }
+ 
++static bool valid_pat_type(unsigned t)
++{
++	return t < 8 && (1 << t) & 0xf3; /* 0, 1, 4, 5, 6, 7 */
++}
++
++static bool valid_mtrr_type(unsigned t)
++{
++	return t < 8 && (1 << t) & 0x73; /* 0, 1, 4, 5, 6 */
++}
++
++static bool mtrr_valid(struct kvm_vcpu *vcpu, u32 msr, u64 data)
++{
++	int i;
++
++	if (!msr_mtrr_valid(msr))
++		return false;
++
++	if (msr == MSR_IA32_CR_PAT) {
++		for (i = 0; i < 8; i++)
++			if (!valid_pat_type((data >> (i * 8)) & 0xff))
++				return false;
++		return true;
++	} else if (msr == MSR_MTRRdefType) {
++		if (data & ~0xcff)
++			return false;
++		return valid_mtrr_type(data & 0xff);
++	} else if (msr >= MSR_MTRRfix64K_00000 && msr <= MSR_MTRRfix4K_F8000) {
++		for (i = 0; i < 8 ; i++)
++			if (!valid_mtrr_type((data >> (i * 8)) & 0xff))
++				return false;
++		return true;
++	}
++
++	/* variable MTRRs */
++	return valid_mtrr_type(data & 0xff);
++}
++
+ static int set_msr_mtrr(struct kvm_vcpu *vcpu, u32 msr, u64 data)
+ {
+ 	u64 *p = (u64 *)&vcpu->arch.mtrr_state.fixed_ranges;
+ 
+-	if (!msr_mtrr_valid(msr))
++	if (!mtrr_valid(vcpu, msr, data))
+ 		return 1;
+ 
+ 	if (msr == MSR_MTRRdefType) {
+@@ -895,6 +935,9 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata)
+ 	case MSR_IA32_LASTINTFROMIP:
+ 	case MSR_IA32_LASTINTTOIP:
+ 	case MSR_VM_HSAVE_PA:
++	case MSR_P6_EVNTSEL0:
++	case MSR_P6_EVNTSEL1:
++	case MSR_K7_EVNTSEL0:
+ 		data = 0;
+ 		break;
+ 	case MSR_MTRRcap:
+@@ -1074,14 +1117,13 @@ long kvm_arch_dev_ioctl(struct file *filp,
+ 		if (copy_to_user(user_msr_list, &msr_list, sizeof msr_list))
+ 			goto out;
+ 		r = -E2BIG;
+-		if (n < num_msrs_to_save)
++		if (n < msr_list.nmsrs)
+ 			goto out;
+ 		r = -EFAULT;
+ 		if (copy_to_user(user_msr_list->indices, &msrs_to_save,
+ 				 num_msrs_to_save * sizeof(u32)))
+ 			goto out;
+-		if (copy_to_user(user_msr_list->indices
+-				 + num_msrs_to_save * sizeof(u32),
++		if (copy_to_user(user_msr_list->indices + num_msrs_to_save,
+ 				 &emulated_msrs,
+ 				 ARRAY_SIZE(emulated_msrs) * sizeof(u32)))
+ 			goto out;
+@@ -1250,9 +1292,12 @@ static void do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,
+ 		bit(X86_FEATURE_VME) | bit(X86_FEATURE_DE) |
+ 		bit(X86_FEATURE_PSE) | bit(X86_FEATURE_TSC) |
+ 		bit(X86_FEATURE_MSR) | bit(X86_FEATURE_PAE) |
++		bit(X86_FEATURE_MCE) |
+ 		bit(X86_FEATURE_CX8) | bit(X86_FEATURE_APIC) |
+-		bit(X86_FEATURE_SEP) | bit(X86_FEATURE_PGE) |
+-		bit(X86_FEATURE_CMOV) | bit(X86_FEATURE_PSE36) |
++		bit(X86_FEATURE_SEP) | bit(X86_FEATURE_MTRR) |
++		bit(X86_FEATURE_PGE) | bit(X86_FEATURE_MCA) |
++		bit(X86_FEATURE_CMOV) | bit(X86_FEATURE_PAT) |
++		bit(X86_FEATURE_PSE36) |
+ 		bit(X86_FEATURE_CLFLSH) | bit(X86_FEATURE_MMX) |
+ 		bit(X86_FEATURE_FXSR) | bit(X86_FEATURE_XMM) |
+ 		bit(X86_FEATURE_XMM2) | bit(X86_FEATURE_SELFSNOOP);
+@@ -1608,10 +1653,12 @@ static int kvm_vm_ioctl_set_nr_mmu_pages(struct kvm *kvm,
+ 		return -EINVAL;
+ 
+ 	down_write(&kvm->slots_lock);
++	spin_lock(&kvm->mmu_lock);
+ 
+ 	kvm_mmu_change_mmu_pages(kvm, kvm_nr_mmu_pages);
+ 	kvm->arch.n_requested_mmu_pages = kvm_nr_mmu_pages;
+ 
++	spin_unlock(&kvm->mmu_lock);
+ 	up_write(&kvm->slots_lock);
+ 	return 0;
+ }
+@@ -1787,7 +1834,9 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
+ 
+ 	/* If nothing is dirty, don't bother messing with page tables. */
+ 	if (is_dirty) {
++		spin_lock(&kvm->mmu_lock);
+ 		kvm_mmu_slot_remove_write_access(kvm, log->slot);
++		spin_unlock(&kvm->mmu_lock);
+ 		kvm_flush_remote_tlbs(kvm);
+ 		memslot = &kvm->memslots[log->slot];
+ 		n = ALIGN(memslot->npages, BITS_PER_LONG) / 8;
+@@ -2362,7 +2411,7 @@ int emulate_instruction(struct kvm_vcpu *vcpu,
+ 			u16 error_code,
+ 			int emulation_type)
+ {
+-	int r;
++	int r, shadow_mask;
+ 	struct decode_cache *c;
+ 
+ 	kvm_clear_exception_queue(vcpu);
+@@ -2411,6 +2460,10 @@ int emulate_instruction(struct kvm_vcpu *vcpu,
+ 	}
+ 
+ 	r = x86_emulate_insn(&vcpu->arch.emulate_ctxt, &emulate_ops);
++	shadow_mask = vcpu->arch.emulate_ctxt.interruptibility;
++
++	if (r == 0)
++		kvm_x86_ops->set_interrupt_shadow(vcpu, shadow_mask);
+ 
+ 	if (vcpu->arch.pio.string)
+ 		return EMULATE_DO_MMIO;
+@@ -4419,12 +4472,14 @@ int kvm_arch_set_memory_region(struct kvm *kvm,
+ 		}
+ 	}
+ 
++	spin_lock(&kvm->mmu_lock);
+ 	if (!kvm->arch.n_requested_mmu_pages) {
+ 		unsigned int nr_mmu_pages = kvm_mmu_calculate_mmu_pages(kvm);
+ 		kvm_mmu_change_mmu_pages(kvm, nr_mmu_pages);
+ 	}
+ 
+ 	kvm_mmu_slot_remove_write_access(kvm, mem->slot);
++	spin_unlock(&kvm->mmu_lock);
+ 	kvm_flush_remote_tlbs(kvm);
+ 
+ 	return 0;
+@@ -4433,6 +4488,7 @@ int kvm_arch_set_memory_region(struct kvm *kvm,
+ void kvm_arch_flush_shadow(struct kvm *kvm)
+ {
+ 	kvm_mmu_zap_all(kvm);
++	kvm_reload_remote_mmus(kvm);
+ }
+ 
+ int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu)
+diff --git a/arch/x86/kvm/x86_emulate.c b/arch/x86/kvm/x86_emulate.c
+index ca91749..d80126f 100644
+--- a/arch/x86/kvm/x86_emulate.c
++++ b/arch/x86/kvm/x86_emulate.c
+@@ -1349,6 +1349,20 @@ static inline int writeback(struct x86_emulate_ctxt *ctxt,
+ 	return 0;
+ }
+ 
++void toggle_interruptibility(struct x86_emulate_ctxt *ctxt, u32 mask)
++{
++	u32 int_shadow = kvm_x86_ops->get_interrupt_shadow(ctxt->vcpu, mask);
++	/*
++	 * an sti; sti; sequence only disable interrupts for the first
++	 * instruction. So, if the last instruction, be it emulated or
++	 * not, left the system with the INT_STI flag enabled, it
++	 * means that the last instruction is an sti. We should not
++	 * leave the flag on in this case. The same goes for mov ss
++	 */
++	if (!(int_shadow & mask))
++		ctxt->interruptibility = mask;
++}
++
+ int
+ x86_emulate_insn(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops)
+ {
+@@ -1360,6 +1374,8 @@ x86_emulate_insn(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops)
+ 	int io_dir_in;
+ 	int rc = 0;
+ 
++	ctxt->interruptibility = 0;
++
+ 	/* Shadow copy of register state. Committed on successful emulation.
+ 	 * NOTE: we can copy them from vcpu as x86_decode_insn() doesn't
+ 	 * modify them.
+@@ -1609,6 +1625,9 @@ special_insn:
+ 		int err;
+ 
+ 		sel = c->src.val;
++		if (c->modrm_reg == VCPU_SREG_SS)
++			toggle_interruptibility(ctxt, X86_SHADOW_INT_MOV_SS);
++
+ 		if (c->modrm_reg <= 5) {
+ 			type_bits = (c->modrm_reg == 1) ? 9 : 1;
+ 			err = kvm_load_segment_descriptor(ctxt->vcpu, sel,
+@@ -1865,6 +1884,7 @@ special_insn:
+ 		c->dst.type = OP_NONE;	/* Disable writeback. */
+ 		break;
+ 	case 0xfb: /* sti */
++		toggle_interruptibility(ctxt, X86_SHADOW_INT_STI);
+ 		ctxt->eflags |= X86_EFLAGS_IF;
+ 		c->dst.type = OP_NONE;	/* Disable writeback. */
+ 		break;
+diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c
+index 821e970..c814e14 100644
+--- a/arch/x86/mm/tlb.c
++++ b/arch/x86/mm/tlb.c
+@@ -183,18 +183,17 @@ static void flush_tlb_others_ipi(const struct cpumask *cpumask,
+ 
+ 	f->flush_mm = mm;
+ 	f->flush_va = va;
+-	cpumask_andnot(to_cpumask(f->flush_cpumask),
+-		       cpumask, cpumask_of(smp_processor_id()));
+-
+-	/*
+-	 * We have to send the IPI only to
+-	 * CPUs affected.
+-	 */
+-	apic->send_IPI_mask(to_cpumask(f->flush_cpumask),
+-		      INVALIDATE_TLB_VECTOR_START + sender);
++	if (cpumask_andnot(to_cpumask(f->flush_cpumask), cpumask, cpumask_of(smp_processor_id()))) {
++		/*
++		 * We have to send the IPI only to
++		 * CPUs affected.
++		 */
++		apic->send_IPI_mask(to_cpumask(f->flush_cpumask),
++			      INVALIDATE_TLB_VECTOR_START + sender);
+ 
+-	while (!cpumask_empty(to_cpumask(f->flush_cpumask)))
+-		cpu_relax();
++		while (!cpumask_empty(to_cpumask(f->flush_cpumask)))
++			cpu_relax();
++	}
+ 
+ 	f->flush_mm = NULL;
+ 	f->flush_va = 0;
+diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c
+index 39838c6..31adda1 100644
+--- a/drivers/acpi/processor_thermal.c
++++ b/drivers/acpi/processor_thermal.c
+@@ -66,7 +66,7 @@ static int acpi_processor_apply_limit(struct acpi_processor *pr)
+ 		if (pr->limit.thermal.tx > tx)
+ 			tx = pr->limit.thermal.tx;
+ 
+-		result = acpi_processor_set_throttling(pr, tx);
++		result = acpi_processor_set_throttling(pr, tx, false);
+ 		if (result)
+ 			goto end;
+ 	}
+@@ -421,12 +421,12 @@ processor_set_cur_state(struct thermal_cooling_device *cdev,
+ 
+ 	if (state <= max_pstate) {
+ 		if (pr->flags.throttling && pr->throttling.state)
+-			result = acpi_processor_set_throttling(pr, 0);
++			result = acpi_processor_set_throttling(pr, 0, false);
+ 		cpufreq_set_cur_state(pr->id, state);
+ 	} else {
+ 		cpufreq_set_cur_state(pr->id, max_pstate);
+ 		result = acpi_processor_set_throttling(pr,
+-				state - max_pstate);
++				state - max_pstate, false);
+ 	}
+ 	return result;
+ }
+diff --git a/drivers/acpi/processor_throttling.c b/drivers/acpi/processor_throttling.c
+index 2275437..841be4e 100644
+--- a/drivers/acpi/processor_throttling.c
++++ b/drivers/acpi/processor_throttling.c
+@@ -62,7 +62,8 @@ struct throttling_tstate {
+ #define THROTTLING_POSTCHANGE      (2)
+ 
+ static int acpi_processor_get_throttling(struct acpi_processor *pr);
+-int acpi_processor_set_throttling(struct acpi_processor *pr, int state);
++int acpi_processor_set_throttling(struct acpi_processor *pr,
++						int state, bool force);
+ 
+ static int acpi_processor_update_tsd_coord(void)
+ {
+@@ -361,7 +362,7 @@ int acpi_processor_tstate_has_changed(struct acpi_processor *pr)
+ 		 */
+ 		target_state = throttling_limit;
+ 	}
+-	return acpi_processor_set_throttling(pr, target_state);
++	return acpi_processor_set_throttling(pr, target_state, false);
+ }
+ 
+ /*
+@@ -842,7 +843,7 @@ static int acpi_processor_get_throttling_ptc(struct acpi_processor *pr)
+ 			ACPI_WARNING((AE_INFO,
+ 				"Invalid throttling state, reset"));
+ 			state = 0;
+-			ret = acpi_processor_set_throttling(pr, state);
++			ret = acpi_processor_set_throttling(pr, state, true);
+ 			if (ret)
+ 				return ret;
+ 		}
+@@ -915,7 +916,7 @@ static int acpi_processor_get_fadt_info(struct acpi_processor *pr)
+ }
+ 
+ static int acpi_processor_set_throttling_fadt(struct acpi_processor *pr,
+-					      int state)
++					      int state, bool force)
+ {
+ 	u32 value = 0;
+ 	u32 duty_mask = 0;
+@@ -930,7 +931,7 @@ static int acpi_processor_set_throttling_fadt(struct acpi_processor *pr,
+ 	if (!pr->flags.throttling)
+ 		return -ENODEV;
+ 
+-	if (state == pr->throttling.state)
++	if (!force && (state == pr->throttling.state))
+ 		return 0;
+ 
+ 	if (state < pr->throttling_platform_limit)
+@@ -988,7 +989,7 @@ static int acpi_processor_set_throttling_fadt(struct acpi_processor *pr,
+ }
+ 
+ static int acpi_processor_set_throttling_ptc(struct acpi_processor *pr,
+-					     int state)
++					     int state, bool force)
+ {
+ 	int ret;
+ 	acpi_integer value;
+@@ -1002,7 +1003,7 @@ static int acpi_processor_set_throttling_ptc(struct acpi_processor *pr,
+ 	if (!pr->flags.throttling)
+ 		return -ENODEV;
+ 
+-	if (state == pr->throttling.state)
++	if (!force && (state == pr->throttling.state))
+ 		return 0;
+ 
+ 	if (state < pr->throttling_platform_limit)
+@@ -1018,7 +1019,8 @@ static int acpi_processor_set_throttling_ptc(struct acpi_processor *pr,
+ 	return 0;
+ }
+ 
+-int acpi_processor_set_throttling(struct acpi_processor *pr, int state)
++int acpi_processor_set_throttling(struct acpi_processor *pr,
++						int state, bool force)
+ {
+ 	cpumask_var_t saved_mask;
+ 	int ret = 0;
+@@ -1070,7 +1072,7 @@ int acpi_processor_set_throttling(struct acpi_processor *pr, int state)
+ 		/* FIXME: use work_on_cpu() */
+ 		set_cpus_allowed_ptr(current, cpumask_of(pr->id));
+ 		ret = p_throttling->acpi_processor_set_throttling(pr,
+-						t_state.target_state);
++						t_state.target_state, force);
+ 	} else {
+ 		/*
+ 		 * When the T-state coordination is SW_ALL or HW_ALL,
+@@ -1103,7 +1105,7 @@ int acpi_processor_set_throttling(struct acpi_processor *pr, int state)
+ 			set_cpus_allowed_ptr(current, cpumask_of(i));
+ 			ret = match_pr->throttling.
+ 				acpi_processor_set_throttling(
+-				match_pr, t_state.target_state);
++				match_pr, t_state.target_state, force);
+ 		}
+ 	}
+ 	/*
+@@ -1201,7 +1203,7 @@ int acpi_processor_get_throttling_info(struct acpi_processor *pr)
+ 		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
+ 				  "Disabling throttling (was T%d)\n",
+ 				  pr->throttling.state));
+-		result = acpi_processor_set_throttling(pr, 0);
++		result = acpi_processor_set_throttling(pr, 0, false);
+ 		if (result)
+ 			goto end;
+ 	}
+@@ -1307,7 +1309,7 @@ static ssize_t acpi_processor_write_throttling(struct file *file,
+ 	if (strcmp(tmpbuf, charp) != 0)
+ 		return -EINVAL;
+ 
+-	result = acpi_processor_set_throttling(pr, state_val);
++	result = acpi_processor_set_throttling(pr, state_val, false);
+ 	if (result)
+ 		return result;
+ 
+diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
+index c924230..7b2f499 100644
+--- a/drivers/ata/libata-core.c
++++ b/drivers/ata/libata-core.c
+@@ -4271,6 +4271,9 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
+ 	{ "WDC WD2500JD-00HBB0", "WD-WMAL71490727", ATA_HORKAGE_BROKEN_HPA },
+ 	{ "MAXTOR 6L080L4",	"A93.0500",	ATA_HORKAGE_BROKEN_HPA },
+ 
++	/* this one allows HPA unlocking but fails IOs on the area */
++	{ "OCZ-VERTEX",		    "1.30",	ATA_HORKAGE_BROKEN_HPA },
++
+ 	/* Devices which report 1 sector over size HPA */
+ 	{ "ST340823A",		NULL,		ATA_HORKAGE_HPA_SIZE, },
+ 	{ "ST320413A",		NULL,		ATA_HORKAGE_HPA_SIZE, },
+diff --git a/drivers/media/video/gspca/ov534.c b/drivers/media/video/gspca/ov534.c
+index 19e0bc6..504f849 100644
+--- a/drivers/media/video/gspca/ov534.c
++++ b/drivers/media/video/gspca/ov534.c
+@@ -832,9 +832,11 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, struct gspca_frame *frame,
+ 	__u32 this_pts;
+ 	u16 this_fid;
+ 	int remaining_len = len;
++	int payload_len;
+ 
++	payload_len = (sd->sensor == SENSOR_OV772X) ? 2048 : 2040;
+ 	do {
+-		len = min(remaining_len, 2040);		/*fixme: was 2048*/
++		len = min(remaining_len, payload_len);
+ 
+ 		/* Payloads are prefixed with a UVC-style header.  We
+ 		   consider a frame to start when the FID toggles, or the PTS
+diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h
+index 16a4138..4567e90 100644
+--- a/drivers/net/ehea/ehea.h
++++ b/drivers/net/ehea/ehea.h
+@@ -40,7 +40,7 @@
+ #include <asm/io.h>
+ 
+ #define DRV_NAME	"ehea"
+-#define DRV_VERSION	"EHEA_0101"
++#define DRV_VERSION	"EHEA_0102"
+ 
+ /* eHEA capability flags */
+ #define DLPAR_PORT_ADD_REM 1
+diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
+index 0a7a288..9bc4775 100644
+--- a/drivers/net/ehea/ehea_main.c
++++ b/drivers/net/ehea/ehea_main.c
+@@ -1545,6 +1545,9 @@ static int ehea_clean_portres(struct ehea_port *port, struct ehea_port_res *pr)
+ {
+ 	int ret, i;
+ 
++	if (pr->qp)
++		netif_napi_del(&pr->napi);
++
+ 	ret = ehea_destroy_qp(pr->qp);
+ 
+ 	if (!ret) {
+diff --git a/drivers/net/wireless/ar9170/main.c b/drivers/net/wireless/ar9170/main.c
+index 5996ff9..f839c83 100644
+--- a/drivers/net/wireless/ar9170/main.c
++++ b/drivers/net/wireless/ar9170/main.c
+@@ -1486,13 +1486,14 @@ static int ar9170_conf_tx(struct ieee80211_hw *hw, u16 queue,
+ 	int ret;
+ 
+ 	mutex_lock(&ar->mutex);
+-	if ((param) && !(queue > ar->hw->queues)) {
++	if (queue < __AR9170_NUM_TXQ) {
+ 		memcpy(&ar->edcf[ar9170_qos_hwmap[queue]],
+ 		       param, sizeof(*param));
+ 
+ 		ret = ar9170_set_qos(ar);
+-	} else
++	} else {
+ 		ret = -EINVAL;
++	}
+ 
+ 	mutex_unlock(&ar->mutex);
+ 	return ret;
+diff --git a/drivers/net/wireless/iwlwifi/iwl-rfkill.c b/drivers/net/wireless/iwlwifi/iwl-rfkill.c
+index 2ad9faf..fc3a95f 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-rfkill.c
++++ b/drivers/net/wireless/iwlwifi/iwl-rfkill.c
+@@ -53,22 +53,31 @@ static int iwl_rfkill_soft_rf_kill(void *data, enum rfkill_state state)
+ 	switch (state) {
+ 	case RFKILL_STATE_UNBLOCKED:
+ 		if (iwl_is_rfkill_hw(priv)) {
++			/* pass error to rfkill core, make it state HARD
++			 * BLOCKED (rfkill->mutex taken) and disable
++			 * software kill switch */
+ 			err = -EBUSY;
+-			goto out_unlock;
++			priv->rfkill->state = RFKILL_STATE_HARD_BLOCKED;
+ 		}
+ 		iwl_radio_kill_sw_enable_radio(priv);
+ 		break;
+ 	case RFKILL_STATE_SOFT_BLOCKED:
+ 		iwl_radio_kill_sw_disable_radio(priv);
++		/* rfkill->mutex is taken */
++		if (priv->rfkill->state == RFKILL_STATE_HARD_BLOCKED) {
++			/* force rfkill core state to be SOFT BLOCKED,
++			 * otherwise core will be unable to disable software
++			 * kill switch */
++			priv->rfkill->state = RFKILL_STATE_SOFT_BLOCKED;
++		}
+ 		break;
+ 	default:
+ 		IWL_WARN(priv, "we received unexpected RFKILL state %d\n",
+ 			state);
+ 		break;
+ 	}
+-out_unlock:
+-	mutex_unlock(&priv->mutex);
+ 
++	mutex_unlock(&priv->mutex);
+ 	return err;
+ }
+ 
+@@ -132,14 +141,11 @@ void iwl_rfkill_set_hw_state(struct iwl_priv *priv)
+ 	if (!priv->rfkill)
+ 		return;
+ 
+-	if (iwl_is_rfkill_hw(priv)) {
++	if (iwl_is_rfkill_sw(priv))
++		rfkill_force_state(priv->rfkill, RFKILL_STATE_SOFT_BLOCKED);
++	else if (iwl_is_rfkill_hw(priv))
+ 		rfkill_force_state(priv->rfkill, RFKILL_STATE_HARD_BLOCKED);
+-		return;
+-	}
+-
+-	if (!iwl_is_rfkill_sw(priv))
+-		rfkill_force_state(priv->rfkill, RFKILL_STATE_UNBLOCKED);
+ 	else
+-		rfkill_force_state(priv->rfkill, RFKILL_STATE_SOFT_BLOCKED);
++		rfkill_force_state(priv->rfkill, RFKILL_STATE_UNBLOCKED);
+ }
+ EXPORT_SYMBOL(iwl_rfkill_set_hw_state);
+diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c
+index 44ab03a..da2e2d4 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-sta.c
++++ b/drivers/net/wireless/iwlwifi/iwl-sta.c
+@@ -560,6 +560,8 @@ int iwl_remove_default_wep_key(struct iwl_priv *priv,
+ 	unsigned long flags;
+ 
+ 	spin_lock_irqsave(&priv->sta_lock, flags);
++	IWL_DEBUG_WEP(priv, "Removing default WEP key: idx=%d\n",
++		      keyconf->keyidx);
+ 
+ 	if (!test_and_clear_bit(keyconf->keyidx, &priv->ucode_key_table))
+ 		IWL_ERR(priv, "index %d not used in uCode key table.\n",
+@@ -567,6 +569,11 @@ int iwl_remove_default_wep_key(struct iwl_priv *priv,
+ 
+ 	priv->default_wep_key--;
+ 	memset(&priv->wep_keys[keyconf->keyidx], 0, sizeof(priv->wep_keys[0]));
++	if (iwl_is_rfkill(priv)) {
++		IWL_DEBUG_WEP(priv, "Not sending REPLY_WEPKEY command due to RFKILL.\n");
++		spin_unlock_irqrestore(&priv->sta_lock, flags);
++		return 0;
++	}
+ 	ret = iwl_send_static_wepkey_cmd(priv, 1);
+ 	IWL_DEBUG_WEP(priv, "Remove default WEP key: idx=%d ret=%d\n",
+ 		      keyconf->keyidx, ret);
+@@ -847,6 +854,11 @@ int iwl_remove_dynamic_key(struct iwl_priv *priv,
+ 	priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_KEY_MASK;
+ 	priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
+ 
++	if (iwl_is_rfkill(priv)) {
++		IWL_DEBUG_WEP(priv, "Not sending REPLY_ADD_STA command because RFKILL enabled. \n");
++		spin_unlock_irqrestore(&priv->sta_lock, flags);
++		return 0;
++	}
+ 	ret =  iwl_send_add_sta(priv, &priv->stations[sta_id].sta, CMD_ASYNC);
+ 	spin_unlock_irqrestore(&priv->sta_lock, flags);
+ 	return ret;
+diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
+index 84bd6f1..c242b54 100644
+--- a/drivers/net/wireless/rt2x00/rt2x00.h
++++ b/drivers/net/wireless/rt2x00/rt2x00.h
+@@ -814,13 +814,15 @@ struct rt2x00_dev {
+ static inline void rt2x00_rf_read(struct rt2x00_dev *rt2x00dev,
+ 				  const unsigned int word, u32 *data)
+ {
+-	*data = rt2x00dev->rf[word];
++	BUG_ON(word < 1 || word > rt2x00dev->ops->rf_size / sizeof(u32));
++	*data = rt2x00dev->rf[word - 1];
+ }
+ 
+ static inline void rt2x00_rf_write(struct rt2x00_dev *rt2x00dev,
+ 				   const unsigned int word, u32 data)
+ {
+-	rt2x00dev->rf[word] = data;
++	BUG_ON(word < 1 || word > rt2x00dev->ops->rf_size / sizeof(u32));
++	rt2x00dev->rf[word - 1] = data;
+ }
+ 
+ /*
+diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
+index 043b208..f215a59 100644
+--- a/drivers/platform/x86/wmi.c
++++ b/drivers/platform/x86/wmi.c
+@@ -270,7 +270,7 @@ u32 method_id, const struct acpi_buffer *in, struct acpi_buffer *out)
+ 	acpi_status status;
+ 	struct acpi_object_list input;
+ 	union acpi_object params[3];
+-	char method[4] = "WM";
++	char method[5] = "WM";
+ 
+ 	if (!find_guid(guid_string, &wblock))
+ 		return AE_ERROR;
+@@ -328,8 +328,8 @@ struct acpi_buffer *out)
+ 	acpi_status status, wc_status = AE_ERROR;
+ 	struct acpi_object_list input, wc_input;
+ 	union acpi_object wc_params[1], wq_params[1];
+-	char method[4];
+-	char wc_method[4] = "WC";
++	char method[5];
++	char wc_method[5] = "WC";
+ 
+ 	if (!guid_string || !out)
+ 		return AE_BAD_PARAMETER;
+@@ -410,7 +410,7 @@ const struct acpi_buffer *in)
+ 	acpi_handle handle;
+ 	struct acpi_object_list input;
+ 	union acpi_object params[2];
+-	char method[4] = "WS";
++	char method[5] = "WS";
+ 
+ 	if (!guid_string || !in)
+ 		return AE_BAD_DATA;
+diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c
+index f3da592..35a1386 100644
+--- a/drivers/scsi/mpt2sas/mpt2sas_base.c
++++ b/drivers/scsi/mpt2sas/mpt2sas_base.c
+@@ -119,6 +119,64 @@ _base_fault_reset_work(struct work_struct *work)
+ 	spin_unlock_irqrestore(&ioc->ioc_reset_in_progress_lock, flags);
+ }
+ 
++/**
++ * mpt2sas_base_start_watchdog - start the fault_reset_work_q
++ * @ioc: pointer to scsi command object
++ * Context: sleep.
++ *
++ * Return nothing.
++ */
++void
++mpt2sas_base_start_watchdog(struct MPT2SAS_ADAPTER *ioc)
++{
++	unsigned long	 flags;
++
++	if (ioc->fault_reset_work_q)
++		return;
++
++	/* initialize fault polling */
++	INIT_DELAYED_WORK(&ioc->fault_reset_work, _base_fault_reset_work);
++	snprintf(ioc->fault_reset_work_q_name,
++	    sizeof(ioc->fault_reset_work_q_name), "poll_%d_status", ioc->id);
++	ioc->fault_reset_work_q =
++		create_singlethread_workqueue(ioc->fault_reset_work_q_name);
++	if (!ioc->fault_reset_work_q) {
++		printk(MPT2SAS_ERR_FMT "%s: failed (line=%d)\n",
++		    ioc->name, __func__, __LINE__);
++			return;
++	}
++	spin_lock_irqsave(&ioc->ioc_reset_in_progress_lock, flags);
++	if (ioc->fault_reset_work_q)
++		queue_delayed_work(ioc->fault_reset_work_q,
++		    &ioc->fault_reset_work,
++		    msecs_to_jiffies(FAULT_POLLING_INTERVAL));
++	spin_unlock_irqrestore(&ioc->ioc_reset_in_progress_lock, flags);
++}
++
++/**
++ * mpt2sas_base_stop_watchdog - stop the fault_reset_work_q
++ * @ioc: pointer to scsi command object
++ * Context: sleep.
++ *
++ * Return nothing.
++ */
++void
++mpt2sas_base_stop_watchdog(struct MPT2SAS_ADAPTER *ioc)
++{
++	unsigned long	 flags;
++	struct workqueue_struct *wq;
++
++	spin_lock_irqsave(&ioc->ioc_reset_in_progress_lock, flags);
++	wq = ioc->fault_reset_work_q;
++	ioc->fault_reset_work_q = NULL;
++	spin_unlock_irqrestore(&ioc->ioc_reset_in_progress_lock, flags);
++	if (wq) {
++		if (!cancel_delayed_work(&ioc->fault_reset_work))
++			flush_workqueue(wq);
++		destroy_workqueue(wq);
++	}
++}
++
+ #ifdef CONFIG_SCSI_MPT2SAS_LOGGING
+ /**
+  * _base_sas_ioc_info - verbose translation of the ioc status
+@@ -440,6 +498,10 @@ _base_sas_log_info(struct MPT2SAS_ADAPTER *ioc , u32 log_info)
+ 	if (sas_loginfo.dw.bus_type != 3 /*SAS*/)
+ 		return;
+ 
++	/* each nexus loss loginfo */
++	if (log_info == 0x31170000)
++		return;
++
+ 	/* eat the loginfos associated with task aborts */
+ 	if (ioc->ignore_loginfos && (log_info == 30050000 || log_info ==
+ 	    0x31140000 || log_info == 0x31130000))
+@@ -1109,7 +1171,6 @@ mpt2sas_base_map_resources(struct MPT2SAS_ADAPTER *ioc)
+ 		}
+ 	}
+ 
+-	pci_set_drvdata(pdev, ioc->shost);
+ 	_base_mask_interrupts(ioc);
+ 	r = _base_enable_msix(ioc);
+ 	if (r)
+@@ -1132,7 +1193,6 @@ mpt2sas_base_map_resources(struct MPT2SAS_ADAPTER *ioc)
+ 	ioc->pci_irq = -1;
+ 	pci_release_selected_regions(ioc->pdev, ioc->bars);
+ 	pci_disable_device(pdev);
+-	pci_set_drvdata(pdev, NULL);
+ 	return r;
+ }
+ 
+@@ -3191,7 +3251,6 @@ mpt2sas_base_free_resources(struct MPT2SAS_ADAPTER *ioc)
+ 	ioc->chip_phys = 0;
+ 	pci_release_selected_regions(ioc->pdev, ioc->bars);
+ 	pci_disable_device(pdev);
+-	pci_set_drvdata(pdev, NULL);
+ 	return;
+ }
+ 
+@@ -3205,7 +3264,6 @@ int
+ mpt2sas_base_attach(struct MPT2SAS_ADAPTER *ioc)
+ {
+ 	int r, i;
+-	unsigned long	 flags;
+ 
+ 	dinitprintk(ioc, printk(MPT2SAS_DEBUG_FMT "%s\n", ioc->name,
+ 	    __func__));
+@@ -3214,6 +3272,7 @@ mpt2sas_base_attach(struct MPT2SAS_ADAPTER *ioc)
+ 	if (r)
+ 		return r;
+ 
++	pci_set_drvdata(ioc->pdev, ioc->shost);
+ 	r = _base_make_ioc_ready(ioc, CAN_SLEEP, SOFT_RESET);
+ 	if (r)
+ 		goto out_free_resources;
+@@ -3288,23 +3347,7 @@ mpt2sas_base_attach(struct MPT2SAS_ADAPTER *ioc)
+ 	if (r)
+ 		goto out_free_resources;
+ 
+-	/* initialize fault polling */
+-	INIT_DELAYED_WORK(&ioc->fault_reset_work, _base_fault_reset_work);
+-	snprintf(ioc->fault_reset_work_q_name,
+-	    sizeof(ioc->fault_reset_work_q_name), "poll_%d_status", ioc->id);
+-	ioc->fault_reset_work_q =
+-		create_singlethread_workqueue(ioc->fault_reset_work_q_name);
+-	if (!ioc->fault_reset_work_q) {
+-		printk(MPT2SAS_ERR_FMT "%s: failed (line=%d)\n",
+-		    ioc->name, __func__, __LINE__);
+-			goto out_free_resources;
+-	}
+-	spin_lock_irqsave(&ioc->ioc_reset_in_progress_lock, flags);
+-	if (ioc->fault_reset_work_q)
+-		queue_delayed_work(ioc->fault_reset_work_q,
+-		    &ioc->fault_reset_work,
+-		    msecs_to_jiffies(FAULT_POLLING_INTERVAL));
+-	spin_unlock_irqrestore(&ioc->ioc_reset_in_progress_lock, flags);
++	mpt2sas_base_start_watchdog(ioc);
+ 	return 0;
+ 
+  out_free_resources:
+@@ -3312,6 +3355,7 @@ mpt2sas_base_attach(struct MPT2SAS_ADAPTER *ioc)
+ 	ioc->remove_host = 1;
+ 	mpt2sas_base_free_resources(ioc);
+ 	_base_release_memory_pools(ioc);
++	pci_set_drvdata(ioc->pdev, NULL);
+ 	kfree(ioc->tm_cmds.reply);
+ 	kfree(ioc->transport_cmds.reply);
+ 	kfree(ioc->config_cmds.reply);
+@@ -3337,22 +3381,14 @@ mpt2sas_base_attach(struct MPT2SAS_ADAPTER *ioc)
+ void
+ mpt2sas_base_detach(struct MPT2SAS_ADAPTER *ioc)
+ {
+-	unsigned long	 flags;
+-	struct workqueue_struct *wq;
+ 
+ 	dexitprintk(ioc, printk(MPT2SAS_DEBUG_FMT "%s\n", ioc->name,
+ 	    __func__));
+ 
+-	spin_lock_irqsave(&ioc->ioc_reset_in_progress_lock, flags);
+-	wq = ioc->fault_reset_work_q;
+-	ioc->fault_reset_work_q = NULL;
+-	spin_unlock_irqrestore(&ioc->ioc_reset_in_progress_lock, flags);
+-	if (!cancel_delayed_work(&ioc->fault_reset_work))
+-		flush_workqueue(wq);
+-	destroy_workqueue(wq);
+-
++	mpt2sas_base_stop_watchdog(ioc);
+ 	mpt2sas_base_free_resources(ioc);
+ 	_base_release_memory_pools(ioc);
++	pci_set_drvdata(ioc->pdev, NULL);
+ 	kfree(ioc->pfacts);
+ 	kfree(ioc->ctl_cmds.reply);
+ 	kfree(ioc->base_cmds.reply);
+diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.h b/drivers/scsi/mpt2sas/mpt2sas_base.h
+index 36b1d10..1dd7c9a 100644
+--- a/drivers/scsi/mpt2sas/mpt2sas_base.h
++++ b/drivers/scsi/mpt2sas/mpt2sas_base.h
+@@ -672,6 +672,8 @@ typedef void (*MPT_CALLBACK)(struct MPT2SAS_ADAPTER *ioc, u16 smid, u8 VF_ID,
+ 
+ /* base shared API */
+ extern struct list_head mpt2sas_ioc_list;
++void mpt2sas_base_start_watchdog(struct MPT2SAS_ADAPTER *ioc);
++void mpt2sas_base_stop_watchdog(struct MPT2SAS_ADAPTER *ioc);
+ 
+ int mpt2sas_base_attach(struct MPT2SAS_ADAPTER *ioc);
+ void mpt2sas_base_detach(struct MPT2SAS_ADAPTER *ioc);
+diff --git a/drivers/scsi/mpt2sas/mpt2sas_config.c b/drivers/scsi/mpt2sas/mpt2sas_config.c
+index 58cfb97..6ddee16 100644
+--- a/drivers/scsi/mpt2sas/mpt2sas_config.c
++++ b/drivers/scsi/mpt2sas/mpt2sas_config.c
+@@ -236,17 +236,25 @@ _config_request(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
+ 	Mpi2ConfigRequest_t *config_request;
+ 	int r;
+ 	u8 retry_count;
+-	u8 issue_reset;
++	u8 issue_host_reset = 0;
+ 	u16 wait_state_count;
+ 
++	mutex_lock(&ioc->config_cmds.mutex);
+ 	if (ioc->config_cmds.status != MPT2_CMD_NOT_USED) {
+ 		printk(MPT2SAS_ERR_FMT "%s: config_cmd in use\n",
+ 		    ioc->name, __func__);
++		mutex_unlock(&ioc->config_cmds.mutex);
+ 		return -EAGAIN;
+ 	}
+ 	retry_count = 0;
+ 
+  retry_config:
++	if (retry_count) {
++		if (retry_count > 2) /* attempt only 2 retries */
++			return -EFAULT;
++		printk(MPT2SAS_INFO_FMT "%s: attempting retry (%d)\n",
++		    ioc->name, __func__, retry_count);
++	}
+ 	wait_state_count = 0;
+ 	ioc_state = mpt2sas_base_get_iocstate(ioc, 1);
+ 	while (ioc_state != MPI2_IOC_STATE_OPERATIONAL) {
+@@ -254,8 +262,8 @@ _config_request(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
+ 			printk(MPT2SAS_ERR_FMT
+ 			    "%s: failed due to ioc not operational\n",
+ 			    ioc->name, __func__);
+-			ioc->config_cmds.status = MPT2_CMD_NOT_USED;
+-			return -EFAULT;
++			r = -EFAULT;
++			goto out;
+ 		}
+ 		ssleep(1);
+ 		ioc_state = mpt2sas_base_get_iocstate(ioc, 1);
+@@ -271,8 +279,8 @@ _config_request(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
+ 	if (!smid) {
+ 		printk(MPT2SAS_ERR_FMT "%s: failed obtaining a smid\n",
+ 		    ioc->name, __func__);
+-		ioc->config_cmds.status = MPT2_CMD_NOT_USED;
+-		return -EAGAIN;
++		r = -EAGAIN;
++		goto out;
+ 	}
+ 
+ 	r = 0;
+@@ -292,9 +300,15 @@ _config_request(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
+ 		    ioc->name, __func__);
+ 		_debug_dump_mf(mpi_request,
+ 		    sizeof(Mpi2ConfigRequest_t)/4);
+-		if (!(ioc->config_cmds.status & MPT2_CMD_RESET))
+-			issue_reset = 1;
+-		goto issue_host_reset;
++		retry_count++;
++		if (ioc->config_cmds.smid == smid)
++			mpt2sas_base_free_smid(ioc, smid);
++		if ((ioc->shost_recovery) ||
++		    (ioc->config_cmds.status & MPT2_CMD_RESET))
++			goto retry_config;
++		issue_host_reset = 1;
++		r = -EFAULT;
++		goto out;
+ 	}
+ 	if (ioc->config_cmds.status & MPT2_CMD_REPLY_VALID)
+ 		memcpy(mpi_reply, ioc->config_cmds.reply,
+@@ -302,21 +316,13 @@ _config_request(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
+ 	if (retry_count)
+ 		printk(MPT2SAS_INFO_FMT "%s: retry completed!!\n",
+ 		    ioc->name, __func__);
++out:
+ 	ioc->config_cmds.status = MPT2_CMD_NOT_USED;
+-	return r;
+-
+- issue_host_reset:
+-	if (issue_reset)
++	mutex_unlock(&ioc->config_cmds.mutex);
++	if (issue_host_reset)
+ 		mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP,
+ 		    FORCE_BIG_HAMMER);
+-	ioc->config_cmds.status = MPT2_CMD_NOT_USED;
+-	if (!retry_count) {
+-		printk(MPT2SAS_INFO_FMT "%s: attempting retry\n",
+-		    ioc->name, __func__);
+-		retry_count++;
+-		goto retry_config;
+-	}
+-	return -EFAULT;
++	return r;
+ }
+ 
+ /**
+@@ -375,7 +381,6 @@ mpt2sas_config_get_manufacturing_pg0(struct MPT2SAS_ADAPTER *ioc,
+ 	int r;
+ 	struct config_request mem;
+ 
+-	mutex_lock(&ioc->config_cmds.mutex);
+ 	memset(config_page, 0, sizeof(Mpi2ManufacturingPage0_t));
+ 	memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t));
+ 	mpi_request.Function = MPI2_FUNCTION_CONFIG;
+@@ -417,7 +422,6 @@ mpt2sas_config_get_manufacturing_pg0(struct MPT2SAS_ADAPTER *ioc,
+ 		_config_free_config_dma_memory(ioc, &mem);
+ 
+  out:
+-	mutex_unlock(&ioc->config_cmds.mutex);
+ 	return r;
+ }
+ 
+@@ -438,7 +442,6 @@ mpt2sas_config_get_bios_pg2(struct MPT2SAS_ADAPTER *ioc,
+ 	int r;
+ 	struct config_request mem;
+ 
+-	mutex_lock(&ioc->config_cmds.mutex);
+ 	memset(config_page, 0, sizeof(Mpi2BiosPage2_t));
+ 	memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t));
+ 	mpi_request.Function = MPI2_FUNCTION_CONFIG;
+@@ -480,7 +483,6 @@ mpt2sas_config_get_bios_pg2(struct MPT2SAS_ADAPTER *ioc,
+ 		_config_free_config_dma_memory(ioc, &mem);
+ 
+  out:
+-	mutex_unlock(&ioc->config_cmds.mutex);
+ 	return r;
+ }
+ 
+@@ -501,7 +503,6 @@ mpt2sas_config_get_bios_pg3(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t
+ 	int r;
+ 	struct config_request mem;
+ 
+-	mutex_lock(&ioc->config_cmds.mutex);
+ 	memset(config_page, 0, sizeof(Mpi2BiosPage3_t));
+ 	memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t));
+ 	mpi_request.Function = MPI2_FUNCTION_CONFIG;
+@@ -543,7 +544,6 @@ mpt2sas_config_get_bios_pg3(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t
+ 		_config_free_config_dma_memory(ioc, &mem);
+ 
+  out:
+-	mutex_unlock(&ioc->config_cmds.mutex);
+ 	return r;
+ }
+ 
+@@ -564,7 +564,6 @@ mpt2sas_config_get_iounit_pg0(struct MPT2SAS_ADAPTER *ioc,
+ 	int r;
+ 	struct config_request mem;
+ 
+-	mutex_lock(&ioc->config_cmds.mutex);
+ 	memset(config_page, 0, sizeof(Mpi2IOUnitPage0_t));
+ 	memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t));
+ 	mpi_request.Function = MPI2_FUNCTION_CONFIG;
+@@ -606,7 +605,6 @@ mpt2sas_config_get_iounit_pg0(struct MPT2SAS_ADAPTER *ioc,
+ 		_config_free_config_dma_memory(ioc, &mem);
+ 
+  out:
+-	mutex_unlock(&ioc->config_cmds.mutex);
+ 	return r;
+ }
+ 
+@@ -627,7 +625,6 @@ mpt2sas_config_get_iounit_pg1(struct MPT2SAS_ADAPTER *ioc,
+ 	int r;
+ 	struct config_request mem;
+ 
+-	mutex_lock(&ioc->config_cmds.mutex);
+ 	memset(config_page, 0, sizeof(Mpi2IOUnitPage1_t));
+ 	memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t));
+ 	mpi_request.Function = MPI2_FUNCTION_CONFIG;
+@@ -669,7 +666,6 @@ mpt2sas_config_get_iounit_pg1(struct MPT2SAS_ADAPTER *ioc,
+ 		_config_free_config_dma_memory(ioc, &mem);
+ 
+  out:
+-	mutex_unlock(&ioc->config_cmds.mutex);
+ 	return r;
+ }
+ 
+@@ -690,7 +686,6 @@ mpt2sas_config_set_iounit_pg1(struct MPT2SAS_ADAPTER *ioc,
+ 	int r;
+ 	struct config_request mem;
+ 
+-	mutex_lock(&ioc->config_cmds.mutex);
+ 	memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t));
+ 	mpi_request.Function = MPI2_FUNCTION_CONFIG;
+ 	mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_HEADER;
+@@ -732,7 +727,6 @@ mpt2sas_config_set_iounit_pg1(struct MPT2SAS_ADAPTER *ioc,
+ 		_config_free_config_dma_memory(ioc, &mem);
+ 
+  out:
+-	mutex_unlock(&ioc->config_cmds.mutex);
+ 	return r;
+ }
+ 
+@@ -753,7 +747,6 @@ mpt2sas_config_get_ioc_pg8(struct MPT2SAS_ADAPTER *ioc,
+ 	int r;
+ 	struct config_request mem;
+ 
+-	mutex_lock(&ioc->config_cmds.mutex);
+ 	memset(config_page, 0, sizeof(Mpi2IOCPage8_t));
+ 	memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t));
+ 	mpi_request.Function = MPI2_FUNCTION_CONFIG;
+@@ -795,7 +788,6 @@ mpt2sas_config_get_ioc_pg8(struct MPT2SAS_ADAPTER *ioc,
+ 		_config_free_config_dma_memory(ioc, &mem);
+ 
+  out:
+-	mutex_unlock(&ioc->config_cmds.mutex);
+ 	return r;
+ }
+ 
+@@ -818,7 +810,6 @@ mpt2sas_config_get_sas_device_pg0(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t
+ 	int r;
+ 	struct config_request mem;
+ 
+-	mutex_lock(&ioc->config_cmds.mutex);
+ 	memset(config_page, 0, sizeof(Mpi2SasDevicePage0_t));
+ 	memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t));
+ 	mpi_request.Function = MPI2_FUNCTION_CONFIG;
+@@ -863,7 +854,6 @@ mpt2sas_config_get_sas_device_pg0(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t
+ 		_config_free_config_dma_memory(ioc, &mem);
+ 
+  out:
+-	mutex_unlock(&ioc->config_cmds.mutex);
+ 	return r;
+ }
+ 
+@@ -886,7 +876,6 @@ mpt2sas_config_get_sas_device_pg1(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t
+ 	int r;
+ 	struct config_request mem;
+ 
+-	mutex_lock(&ioc->config_cmds.mutex);
+ 	memset(config_page, 0, sizeof(Mpi2SasDevicePage1_t));
+ 	memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t));
+ 	mpi_request.Function = MPI2_FUNCTION_CONFIG;
+@@ -931,7 +920,6 @@ mpt2sas_config_get_sas_device_pg1(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t
+ 		_config_free_config_dma_memory(ioc, &mem);
+ 
+  out:
+-	mutex_unlock(&ioc->config_cmds.mutex);
+ 	return r;
+ }
+ 
+@@ -953,7 +941,6 @@ mpt2sas_config_get_number_hba_phys(struct MPT2SAS_ADAPTER *ioc, u8 *num_phys)
+ 	Mpi2ConfigReply_t mpi_reply;
+ 	Mpi2SasIOUnitPage0_t config_page;
+ 
+-	mutex_lock(&ioc->config_cmds.mutex);
+ 	memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t));
+ 	mpi_request.Function = MPI2_FUNCTION_CONFIG;
+ 	mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_HEADER;
+@@ -1002,7 +989,6 @@ mpt2sas_config_get_number_hba_phys(struct MPT2SAS_ADAPTER *ioc, u8 *num_phys)
+ 		_config_free_config_dma_memory(ioc, &mem);
+ 
+  out:
+-	mutex_unlock(&ioc->config_cmds.mutex);
+ 	return r;
+ }
+ 
+@@ -1026,8 +1012,6 @@ mpt2sas_config_get_sas_iounit_pg0(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t
+ 	Mpi2ConfigRequest_t mpi_request;
+ 	int r;
+ 	struct config_request mem;
+-
+-	mutex_lock(&ioc->config_cmds.mutex);
+ 	memset(config_page, 0, sz);
+ 	memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t));
+ 	mpi_request.Function = MPI2_FUNCTION_CONFIG;
+@@ -1070,7 +1054,6 @@ mpt2sas_config_get_sas_iounit_pg0(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t
+ 		_config_free_config_dma_memory(ioc, &mem);
+ 
+  out:
+-	mutex_unlock(&ioc->config_cmds.mutex);
+ 	return r;
+ }
+ 
+@@ -1095,7 +1078,6 @@ mpt2sas_config_get_sas_iounit_pg1(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t
+ 	int r;
+ 	struct config_request mem;
+ 
+-	mutex_lock(&ioc->config_cmds.mutex);
+ 	memset(config_page, 0, sz);
+ 	memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t));
+ 	mpi_request.Function = MPI2_FUNCTION_CONFIG;
+@@ -1138,7 +1120,6 @@ mpt2sas_config_get_sas_iounit_pg1(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t
+ 		_config_free_config_dma_memory(ioc, &mem);
+ 
+  out:
+-	mutex_unlock(&ioc->config_cmds.mutex);
+ 	return r;
+ }
+ 
+@@ -1161,7 +1142,6 @@ mpt2sas_config_get_expander_pg0(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t
+ 	int r;
+ 	struct config_request mem;
+ 
+-	mutex_lock(&ioc->config_cmds.mutex);
+ 	memset(config_page, 0, sizeof(Mpi2ExpanderPage0_t));
+ 	memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t));
+ 	mpi_request.Function = MPI2_FUNCTION_CONFIG;
+@@ -1206,7 +1186,6 @@ mpt2sas_config_get_expander_pg0(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t
+ 		_config_free_config_dma_memory(ioc, &mem);
+ 
+  out:
+-	mutex_unlock(&ioc->config_cmds.mutex);
+ 	r