]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
start 2.6.27.16 review cycle
authorGreg Kroah-Hartman <gregkh@suse.de>
Wed, 11 Feb 2009 03:10:32 +0000 (19:10 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 11 Feb 2009 03:10:32 +0000 (19:10 -0800)
58 files changed:
review-2.6.27/8250_pci-add-support-for-netmos-9835-ibm-devices.patch [moved from queue-2.6.27/8250_pci-add-support-for-netmos-9835-ibm-devices.patch with 100% similarity]
review-2.6.27/acpi-disable-acpi-cleanly-when-bad-rsdp-found.patch [moved from queue-2.6.27/acpi-disable-acpi-cleanly-when-bad-rsdp-found.patch with 100% similarity]
review-2.6.27/acpi-dock-don-t-eval-_sta-on-every-show_docked-sysfs-read.patch [moved from queue-2.6.27/acpi-dock-don-t-eval-_sta-on-every-show_docked-sysfs-read.patch with 100% similarity]
review-2.6.27/acpi-don-t-load-acpi_cpufreq-if-acpi-off.patch [moved from queue-2.6.27/acpi-don-t-load-acpi_cpufreq-if-acpi-off.patch with 100% similarity]
review-2.6.27/acpi-enable-bit-11-in-_pdc-to-advertise-hw-coord.patch [moved from queue-2.6.27/acpi-enable-bit-11-in-_pdc-to-advertise-hw-coord.patch with 100% similarity]
review-2.6.27/acpi-proc_dir_entry-video-vga-already-registered.patch [moved from queue-2.6.27/acpi-proc_dir_entry-video-vga-already-registered.patch with 100% similarity]
review-2.6.27/acpi-skip-the-first-two-elements-in-the-_bcl-package.patch [moved from queue-2.6.27/acpi-skip-the-first-two-elements-in-the-_bcl-package.patch with 100% similarity]
review-2.6.27/acpi-video-fix-reversed-brightness-behavior-on-thinkpad-sl-series.patch [moved from queue-2.6.27/acpi-video-fix-reversed-brightness-behavior-on-thinkpad-sl-series.patch with 100% similarity]
review-2.6.27/acpica-add-function-to-dereference-returned-reference-objects.patch [moved from queue-2.6.27/acpica-add-function-to-dereference-returned-reference-objects.patch with 100% similarity]
review-2.6.27/acpica-copy-dynamically-loaded-tables-to-local-buffer.patch [moved from queue-2.6.27/acpica-copy-dynamically-loaded-tables-to-local-buffer.patch with 100% similarity]
review-2.6.27/acpica-fix-table-entry-truncation-calculation.patch [moved from queue-2.6.27/acpica-fix-table-entry-truncation-calculation.patch with 100% similarity]
review-2.6.27/add-a-reference-to-sunrpc-in-svc_addsock.patch [moved from queue-2.6.27/add-a-reference-to-sunrpc-in-svc_addsock.patch with 100% similarity]
review-2.6.27/add-support-for-8-port-rs-232-mic-3620-from-advantech.patch [moved from queue-2.6.27/add-support-for-8-port-rs-232-mic-3620-from-advantech.patch with 100% similarity]
review-2.6.27/agp-intel-add-support-for-g41-chipset.patch [moved from queue-2.6.27/agp-intel-add-support-for-g41-chipset.patch with 100% similarity]
review-2.6.27/agp-intel-fix-broken-symbol-in-device-name.patch [moved from queue-2.6.27/agp-intel-fix-broken-symbol-in-device-name.patch with 100% similarity]
review-2.6.27/agp-intel-reduce-extraneous-pci-posting-reads-during-init.patch [moved from queue-2.6.27/agp-intel-reduce-extraneous-pci-posting-reads-during-init.patch with 100% similarity]
review-2.6.27/alsa-hda-add-missing-coef-initialization-for-alc887.patch [moved from queue-2.6.27/alsa-hda-add-missing-coef-initialization-for-alc887.patch with 100% similarity]
review-2.6.27/alsa-hda-add-missing-initialization-for-alc272.patch [moved from queue-2.6.27/alsa-hda-add-missing-initialization-for-alc272.patch with 100% similarity]
review-2.6.27/alsa-hda-add-quirk-for-fsc-amilo-xi2550.patch [moved from queue-2.6.27/alsa-hda-add-quirk-for-fsc-amilo-xi2550.patch with 100% similarity]
review-2.6.27/dm-mpath-avoid-attempting-to-activate-null-path.patch [moved from queue-2.6.27/dm-mpath-avoid-attempting-to-activate-null-path.patch with 100% similarity]
review-2.6.27/e1000-fix-bug-with-shared-interrupt-during-reset.patch [moved from queue-2.6.27/e1000-fix-bug-with-shared-interrupt-during-reset.patch with 100% similarity]
review-2.6.27/e1000-fix-pci-enable-to-honor-the-need_ioport-flag.patch [moved from queue-2.6.27/e1000-fix-pci-enable-to-honor-the-need_ioport-flag.patch with 100% similarity]
review-2.6.27/eeepc-laptop-fix-oops-when-changing-backlight-brightness-during-eeepc-laptop-init.patch [moved from queue-2.6.27/eeepc-laptop-fix-oops-when-changing-backlight-brightness-during-eeepc-laptop-init.patch with 100% similarity]
review-2.6.27/elf-core-dump-fix-get_user-use.patch [moved from queue-2.6.27/elf-core-dump-fix-get_user-use.patch with 100% similarity]
review-2.6.27/firewire-ohci-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch [moved from queue-2.6.27/firewire-ohci-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch with 100% similarity]
review-2.6.27/firewire-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch [moved from queue-2.6.27/firewire-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch with 100% similarity]
review-2.6.27/firewire-sbp2-fix-dma-mapping-leak-on-the-failure-path.patch [moved from queue-2.6.27/firewire-sbp2-fix-dma-mapping-leak-on-the-failure-path.patch with 100% similarity]
review-2.6.27/genirq-null-struct-irq_desc-s-member-name-in-dynamic_irq_cleanup.patch [moved from queue-2.6.27/genirq-null-struct-irq_desc-s-member-name-in-dynamic_irq_cleanup.patch with 100% similarity]
review-2.6.27/hso-rfkill-type-should-be-wwan.patch [moved from queue-2.6.27/hso-rfkill-type-should-be-wwan.patch with 100% similarity]
review-2.6.27/ieee1394-ohci1394-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch [moved from queue-2.6.27/ieee1394-ohci1394-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch with 100% similarity]
review-2.6.27/ieee1394-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch [moved from queue-2.6.27/ieee1394-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch with 100% similarity]
review-2.6.27/ipw2200-fix-scanning-while-associated.patch [moved from queue-2.6.27/ipw2200-fix-scanning-while-associated.patch with 100% similarity]
review-2.6.27/mbox [new file with mode: 0644]
review-2.6.27/md-allow-metadata_version-to-be-updated-for-externally-managed-metadata.patch [moved from queue-2.6.27/md-allow-metadata_version-to-be-updated-for-externally-managed-metadata.patch with 100% similarity]
review-2.6.27/md-don-t-try-to-set-an-array-to-read-auto-if-it-is-already-in-that-state.patch [moved from queue-2.6.27/md-don-t-try-to-set-an-array-to-read-auto-if-it-is-already-in-that-state.patch with 100% similarity]
review-2.6.27/md-ensure-an-md-array-never-has-too-many-devices.patch [moved from queue-2.6.27/md-ensure-an-md-array-never-has-too-many-devices.patch with 100% similarity]
review-2.6.27/mm-remove-up-version-of-lru_add_drain_all.patch [moved from queue-2.6.27/mm-remove-up-version-of-lru_add_drain_all.patch with 100% similarity]
review-2.6.27/module-remove-over-zealous-check-in-__module_get.patch [moved from queue-2.6.27/module-remove-over-zealous-check-in-__module_get.patch with 100% similarity]
review-2.6.27/pci-properly-clean-up-aspm-link-state-on-device-remove.patch [moved from queue-2.6.27/pci-properly-clean-up-aspm-link-state-on-device-remove.patch with 100% similarity]
review-2.6.27/pci-return-error-on-failure-to-read-pci-roms.patch [moved from queue-2.6.27/pci-return-error-on-failure-to-read-pci-roms.patch with 100% similarity]
review-2.6.27/prevent-kprobes-from-catching-spurious-page-faults.patch [moved from queue-2.6.27/prevent-kprobes-from-catching-spurious-page-faults.patch with 100% similarity]
review-2.6.27/revert-usb-option-add-pantech-cards.patch [moved from queue-2.6.27/revert-usb-option-add-pantech-cards.patch with 100% similarity]
review-2.6.27/revert-vt-fix-background-color-on-line-feed.patch [moved from queue-2.6.27/revert-vt-fix-background-color-on-line-feed.patch with 100% similarity]
review-2.6.27/sctp-fix-another-socket-race-during-accept-peeloff.patch [moved from queue-2.6.27/sctp-fix-another-socket-race-during-accept-peeloff.patch with 100% similarity]
review-2.6.27/seq_file-fix-big-enough-lseek-read.patch [moved from queue-2.6.27/seq_file-fix-big-enough-lseek-read.patch with 100% similarity]
review-2.6.27/seq_file-move-traverse-so-it-can-be-used-from-seq_read.patch [moved from queue-2.6.27/seq_file-move-traverse-so-it-can-be-used-from-seq_read.patch with 100% similarity]
review-2.6.27/serial-set-correct-baud_base-for-oxford-semiconductor-ltd-exsys-ex-41092-dual-16950-serial-adapter.patch [moved from queue-2.6.27/serial-set-correct-baud_base-for-oxford-semiconductor-ltd-exsys-ex-41092-dual-16950-serial-adapter.patch with 100% similarity]
review-2.6.27/series [moved from queue-2.6.27/series with 100% similarity]
review-2.6.27/sgi-xp-fix-writing-past-the-end-of-kzalloc-d-space.patch [moved from queue-2.6.27/sgi-xp-fix-writing-past-the-end-of-kzalloc-d-space.patch with 100% similarity]
review-2.6.27/shm-fix-shmctl-lockup-with-config_shmem.patch [moved from queue-2.6.27/shm-fix-shmctl-lockup-with-config_shmem.patch with 100% similarity]
review-2.6.27/sound-usb-audio-handle-wmaxpacketsize-for-fixed_endpoint-devices.patch [moved from queue-2.6.27/sound-usb-audio-handle-wmaxpacketsize-for-fixed_endpoint-devices.patch with 100% similarity]
review-2.6.27/usb-new-id-for-ti_usb_3410_5052-driver.patch [moved from queue-2.6.27/usb-new-id-for-ti_usb_3410_5052-driver.patch with 100% similarity]
review-2.6.27/usb-option-new-mobile-broadband-modems-to-be-supported.patch [moved from queue-2.6.27/usb-option-new-mobile-broadband-modems-to-be-supported.patch with 100% similarity]
review-2.6.27/usb-two-more-usb-ids-for-ti_usb_3410_5052.patch [moved from queue-2.6.27/usb-two-more-usb-ids-for-ti_usb_3410_5052.patch with 100% similarity]
review-2.6.27/usb-usb-storage-add-pentax-to-the-bad-vendor-list.patch [moved from queue-2.6.27/usb-usb-storage-add-pentax-to-the-bad-vendor-list.patch with 100% similarity]
review-2.6.27/wait-prevent-exclusive-waiter-starvation.patch [moved from queue-2.6.27/wait-prevent-exclusive-waiter-starvation.patch with 100% similarity]
review-2.6.27/x86-apic-enable-workaround-on-amd-fam10h-cpus.patch [moved from queue-2.6.27/x86-apic-enable-workaround-on-amd-fam10h-cpus.patch with 100% similarity]
review-2.6.27/xfs-set-b_error-from-bio-error-in-xfs_buf_bio_end_io.patch [moved from queue-2.6.27/xfs-set-b_error-from-bio-error-in-xfs_buf_bio_end_io.patch with 100% similarity]

diff --git a/review-2.6.27/mbox b/review-2.6.27/mbox
new file mode 100644 (file)
index 0000000..80c48cd
--- /dev/null
@@ -0,0 +1,5585 @@
+From gregkh@mini.kroah.org Tue Feb 10 16:15:47 2009
+Message-Id: <20090211001547.628318869@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:40 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Holger Macht <hmacht@suse.de>,
+ Len Brown <len.brown@intel.com>
+Subject: [patch 01/56] ACPI: dock: Dont eval _STA on every show_docked sysfs read
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=acpi-dock-don-t-eval-_sta-on-every-show_docked-sysfs-read.patch
+Content-Length: 1521
+Lines: 43
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Holger Macht <hmacht@suse.de>
+
+commit fc5a9f8841ee87d93376ada5d73117d4d6a373ea upstream.
+
+Some devices trigger a DEVICE_CHECK on every evalutation of _STA. This
+can also be seen in commit 8b59560a3baf2e7c24e0fb92ea5d09eca92805db
+(ACPI: dock: avoid check _STA method).  If an undock is processed, the
+dock driver sends a uevent and userspace might read the show_docked
+property in sysfs. This causes an evaluation of _STA of the particular
+device which causes the dock driver to immediately dock again.
+
+In any case, evaluation of _STA (show_docked) does not necessarily mean
+that we are docked, so check with the internal device structure.
+
+http://bugzilla.kernel.org/show_bug.cgi?id=12360
+
+Signed-off-by: Holger Macht <hmacht@suse.de>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/dock.c |    8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+--- a/drivers/acpi/dock.c
++++ b/drivers/acpi/dock.c
+@@ -691,8 +691,14 @@ fdd_out:
+ static ssize_t show_docked(struct device *dev,
+                          struct device_attribute *attr, char *buf)
+ {
+-      return snprintf(buf, PAGE_SIZE, "%d\n", dock_present(dock_station));
++      struct acpi_device *tmp;
++      struct dock_station *dock_station = *((struct dock_station **)
++              dev->platform_data);
++
++      if (ACPI_SUCCESS(acpi_bus_get_device(dock_station->handle, &tmp)))
++              return snprintf(buf, PAGE_SIZE, "1\n");
++      return snprintf(buf, PAGE_SIZE, "0\n");
+ }
+ static DEVICE_ATTR(docked, S_IRUGO, show_docked, NULL);
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:47 2009
+Message-Id: <20090211001547.758692352@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:41 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>,
+ Len Brown <len.brown@intel.com>
+Subject: [patch 02/56] ACPI: Enable bit 11 in _PDC to advertise hw coord
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=acpi-enable-bit-11-in-_pdc-to-advertise-hw-coord.patch
+Content-Length: 1429
+Lines: 40
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Pallipadi, Venkatesh <venkatesh.pallipadi@intel.com>
+
+commit d96f94c604453f87fe24154b87e1e9a3a72511f8 upstream.
+
+Bit 11 in intel PDC definitions is meant for OS capability to handle
+hardware coordination of P-states. In Linux we have always supported
+hwardware coordination of P-states. Just let the BIOSes know that we
+support it, by setting this bit.
+
+Some BIOSes use this bit to choose between hardware or software coordination
+and without this change below, BIOSes switch to software coordination, which
+is not very optimal in terms of power consumption and extra wakeups from idle.
+
+Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/acpi/pdc_intel.h |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/include/acpi/pdc_intel.h
++++ b/include/acpi/pdc_intel.h
+@@ -14,6 +14,7 @@
+ #define ACPI_PDC_SMP_T_SWCOORD                (0x0080)
+ #define ACPI_PDC_C_C1_FFH             (0x0100)
+ #define ACPI_PDC_C_C2C3_FFH           (0x0200)
++#define ACPI_PDC_SMP_P_HWCOORD                (0x0800)
+ #define ACPI_PDC_EST_CAPABILITY_SMP   (ACPI_PDC_SMP_C1PT | \
+                                        ACPI_PDC_C_C1_HALT | \
+@@ -22,6 +23,7 @@
+ #define ACPI_PDC_EST_CAPABILITY_SWSMP (ACPI_PDC_SMP_C1PT | \
+                                        ACPI_PDC_C_C1_HALT | \
+                                        ACPI_PDC_SMP_P_SWCOORD | \
++                                       ACPI_PDC_SMP_P_HWCOORD | \
+                                        ACPI_PDC_P_FFH)
+ #define ACPI_PDC_C_CAPABILITY_SMP     (ACPI_PDC_SMP_C2C3  | \
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009
+Message-Id: <20090211001547.905965958@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:42 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Zhenyu Wang <zhenyu.z.wang@intel.com>,
+ Eric Anholt <eric@anholt.net>,
+ Dave Airlie <airlied@linux.ie>
+Subject: [patch 03/56] agp/intel: add support for G41 chipset
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=agp-intel-add-support-for-g41-chipset.patch
+Content-Length: 2134
+Lines: 60
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Zhenyu Wang <zhenyu.z.wang@intel.com>
+
+commit a50ccc6c6623ab0e64f2109881e07c176b2d876f upstream.
+
+Signed-off-by: Zhenyu Wang <zhenyu.z.wang@intel.com>
+Signed-off-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Dave Airlie <airlied@linux.ie>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/char/agp/intel-agp.c |    9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/drivers/char/agp/intel-agp.c
++++ b/drivers/char/agp/intel-agp.c
+@@ -40,6 +40,8 @@
+ #define PCI_DEVICE_ID_INTEL_Q45_IG          0x2E12
+ #define PCI_DEVICE_ID_INTEL_G45_HB          0x2E20
+ #define PCI_DEVICE_ID_INTEL_G45_IG          0x2E22
++#define PCI_DEVICE_ID_INTEL_G41_HB          0x2E30
++#define PCI_DEVICE_ID_INTEL_G41_IG          0x2E32
+ /* cover 915 and 945 variants */
+ #define IS_I915 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_E7221_HB || \
+@@ -63,7 +65,8 @@
+ #define IS_G4X (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGD_E_HB || \
+               agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q45_HB || \
+               agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G45_HB || \
+-              agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB)
++              agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB || \
++              agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G41_HB)
+ extern int agp_memory_reserved;
+@@ -1196,6 +1199,7 @@ static void intel_i965_get_gtt_range(int
+       case PCI_DEVICE_ID_INTEL_IGD_E_HB:
+       case PCI_DEVICE_ID_INTEL_Q45_HB:
+       case PCI_DEVICE_ID_INTEL_G45_HB:
++      case PCI_DEVICE_ID_INTEL_G41_HB:
+               *gtt_offset = *gtt_size = MB(2);
+               break;
+       default:
+@@ -2135,6 +2139,8 @@ static const struct intel_driver_descrip
+           "Q45/Q43", NULL, &intel_i965_driver },
+       { PCI_DEVICE_ID_INTEL_G45_HB, PCI_DEVICE_ID_INTEL_G45_IG, 0,
+           "G45/G43", NULL, &intel_i965_driver },
++      { PCI_DEVICE_ID_INTEL_G41_HB, PCI_DEVICE_ID_INTEL_G41_IG, 0,
++          "G41", NULL, &intel_i965_driver },
+       { 0, 0, 0, NULL, NULL, NULL }
+ };
+@@ -2332,6 +2338,7 @@ static struct pci_device_id agp_intel_pc
+       ID(PCI_DEVICE_ID_INTEL_IGD_E_HB),
+       ID(PCI_DEVICE_ID_INTEL_Q45_HB),
+       ID(PCI_DEVICE_ID_INTEL_G45_HB),
++      ID(PCI_DEVICE_ID_INTEL_G41_HB),
+       { }
+ };
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009
+Message-Id: <20090211001548.063682722@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:43 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Eric Anholt <eric@anholt.net>,
+ Dave Airlie <airlied@linux.ie>
+Subject: [patch 04/56] agp/intel: Fix broken Â® symbol in device name.
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=agp-intel-fix-broken-symbol-in-device-name.patch
+Content-Length: 959
+Lines: 24
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Eric Anholt <eric@anholt.net>
+
+commit b854b2ab959e8175d75e01cf8ed452ed2624d0c8 upstream.
+
+Signed-off-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Dave Airlie <airlied@linux.ie>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/char/agp/intel-agp.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/char/agp/intel-agp.c
++++ b/drivers/char/agp/intel-agp.c
+@@ -2132,7 +2132,7 @@ static const struct intel_driver_descrip
+       { PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33",
+               NULL, &intel_g33_driver },
+       { PCI_DEVICE_ID_INTEL_GM45_HB, PCI_DEVICE_ID_INTEL_GM45_IG, 0,
+-          "Mobile Intel? GM45 Express", NULL, &intel_i965_driver },
++          "Mobile Intel® GM45 Express", NULL, &intel_i965_driver },
+       { PCI_DEVICE_ID_INTEL_IGD_E_HB, PCI_DEVICE_ID_INTEL_IGD_E_IG, 0,
+           "Intel Integrated Graphics Device", NULL, &intel_i965_driver },
+       { PCI_DEVICE_ID_INTEL_Q45_HB, PCI_DEVICE_ID_INTEL_Q45_IG, 0,
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009
+Message-Id: <20090211001548.190585164@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:44 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Keith Packard <keithp@keithp.com>,
+ Eric Anholt <eric@anholt.net>,
+ Dave Airlie <airlied@redhat.com>
+Subject: [patch 05/56] agp/intel: Reduce extraneous PCI posting reads during init
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=agp-intel-reduce-extraneous-pci-posting-reads-during-init.patch
+Content-Length: 1927
+Lines: 50
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Keith Packard <keithp@keithp.com>
+
+commit 44d494417278e49f5b42bd3ded1801b6d2254db8 upstream.
+
+Instead of doing a posting read after each GTT entry update, do a single one
+at the end of the writes. This should reduce boot time a tiny amount by
+avoiding a lot of extra uncached reads.
+
+Signed-off-by: Keith Packard <keithp@keithp.com>
+Signed-off-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/char/agp/intel-agp.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/char/agp/intel-agp.c
++++ b/drivers/char/agp/intel-agp.c
+@@ -217,8 +217,8 @@ static int intel_i810_configure(void)
+       if (agp_bridge->driver->needs_scratch_page) {
+               for (i = 0; i < current_size->num_entries; i++) {
+                       writel(agp_bridge->scratch_page, intel_private.registers+I810_PTE_BASE+(i*4));
+-                      readl(intel_private.registers+I810_PTE_BASE+(i*4));     /* PCI posting. */
+               }
++              readl(intel_private.registers+I810_PTE_BASE+((i-1)*4)); /* PCI posting. */
+       }
+       global_cache_flush();
+       return 0;
+@@ -778,8 +778,8 @@ static int intel_i830_configure(void)
+       if (agp_bridge->driver->needs_scratch_page) {
+               for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) {
+                       writel(agp_bridge->scratch_page, intel_private.registers+I810_PTE_BASE+(i*4));
+-                      readl(intel_private.registers+I810_PTE_BASE+(i*4));     /* PCI Posting. */
+               }
++              readl(intel_private.registers+I810_PTE_BASE+((i-1)*4)); /* PCI Posting. */
+       }
+       global_cache_flush();
+@@ -994,8 +994,8 @@ static int intel_i915_configure(void)
+       if (agp_bridge->driver->needs_scratch_page) {
+               for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) {
+                       writel(agp_bridge->scratch_page, intel_private.gtt+i);
+-                      readl(intel_private.gtt+i);     /* PCI Posting. */
+               }
++              readl(intel_private.gtt+i-1);   /* PCI Posting. */
+       }
+       global_cache_flush();
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009
+Message-Id: <20090211001548.348595818@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:45 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jesse Brandeburg <jesse.brandeburg@intel.com>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 06/56] e1000: fix bug with shared interrupt during reset
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=e1000-fix-bug-with-shared-interrupt-during-reset.patch
+Content-Length: 1438
+Lines: 40
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Jesse Brandeburg <jesse.brandeburg@intel.com>
+
+commit 15b2bee22a0390d951301b53e83df88d0350c499 upstream.
+
+A nasty bug was found where an MTU change (or anything else that caused a
+reset) could race with the interrupt code.  The interrupt code was entered
+by a shared interrupt during the MTU change.
+
+This change prevents the interrupt code from running while the driver is in
+the middle of its reset path.
+
+Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/e1000/e1000_main.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/e1000/e1000_main.c
++++ b/drivers/net/e1000/e1000_main.c
+@@ -31,7 +31,7 @@
+ char e1000_driver_name[] = "e1000";
+ static char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";
+-#define DRV_VERSION "7.3.20-k3-NAPI"
++#define DRV_VERSION "7.3.21-k3-NAPI"
+ const char e1000_driver_version[] = DRV_VERSION;
+ static const char e1000_copyright[] = "Copyright (c) 1999-2006 Intel Corporation.";
+@@ -3835,7 +3835,7 @@ static irqreturn_t e1000_intr(int irq, v
+       struct e1000_hw *hw = &adapter->hw;
+       u32 rctl, icr = er32(ICR);
+-      if (unlikely(!icr))
++      if (unlikely((!icr) || test_bit(__E1000_RESETTING, &adapter->flags)))
+               return IRQ_NONE;  /* Not our interrupt */
+       /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009
+Message-Id: <20090211001548.476071377@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:46 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Karsten Keil <kkeil@suse.de>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 07/56] e1000: Fix PCI enable to honor the need_ioport flag
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=e1000-fix-pci-enable-to-honor-the-need_ioport-flag.patch
+Content-Length: 830
+Lines: 28
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Karsten Keil <kkeil@suse.de>
+
+commit 4d7155b932b8129c72e2f2714890e20b2a05e0b7 upstream.
+
+On machine were no IO ports are assigned the call
+to pci_enable_device() will fail, even if need_ioport
+is false, we need to use pci_enable_device_mem() here.
+
+Signed-off-by: Karsten Keil <kkeil@suse.de>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/e1000/e1000_main.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/e1000/e1000_main.c
++++ b/drivers/net/e1000/e1000_main.c
+@@ -927,7 +927,7 @@ static int __devinit e1000_probe(struct 
+               err = pci_enable_device(pdev);
+       } else {
+               bars = pci_select_bars(pdev, IORESOURCE_MEM);
+-              err = pci_enable_device(pdev);
++              err = pci_enable_device_mem(pdev);
+       }
+       if (err)
+               return err;
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009
+Message-Id: <20090211001548.630063574@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:47 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Darren Salt <linux@youmustbejoking.demon.co.uk>,
+ Len Brown <len.brown@intel.com>
+Subject: [patch 08/56] eeepc-laptop: fix oops when changing backlight brightness during eeepc-laptop init
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=eeepc-laptop-fix-oops-when-changing-backlight-brightness-during-eeepc-laptop-init.patch
+Content-Length: 2365
+Lines: 61
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Darren Salt <linux@youmustbejoking.demon.co.uk>
+
+commit 7695fb04aca62e2d8a7ca6ede50f6211e1d71e53 upstream.
+
+I got the following oops while changing the backlight brightness during
+startup.  When it happens, it prevents use of the hotkeys, Fn-Fx, and the
+lid button.
+
+It's a clear use-before-init, as I verified by testing with an
+appropriately-placed "else printk".
+
+BUG: unable to handle kernel NULL pointer dereference at 00000000
+*pde = 00000000
+Oops: 0002 [#1] PREEMPT SMP
+Pid: 160, comm: kacpi_notify Not tainted (2.6.28.1-eee901 #4) 901
+EIP: 0060:[<c0264e68>]  [<c0264e68>] eeepc_hotk_notify+26/da
+EFLAGS: 00010246 CPU: 1
+Using defaults from ksymoops -t elf32-i386 -a i386
+EAX: 00000009 EBX: 00000000 ECX: 00000009 EDX: f70dbf64
+ESI: 00000029 EDI: f7335188 EBP: c02112c9 ESP: f70dbf80
+ DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
+ f70731e0 f73acd50 c02164ac f7335180 f70aa040 c02112e6 f733518c c012b62f
+ f70aa044 f70aa040 c012bdba f70aa04c 00000000 c012be6e 00000000 f70bdf80
+ c012e198 f70dbfc4 f70dbfc4 f70aa040 c012bdba 00000000 c012e0c9 c012e091
+Call Trace:
+ [<c02164ac>] ? acpi_ev_notify_dispatch+4c/55
+ [<c02112e6>] ? acpi_os_execute_deferred+1d/25
+ [<c012b62f>] ? run_workqueue+71/f1
+ [<c012bdba>] ? worker_thread+0/bf
+ [<c012be6e>] ? worker_thread+b4/bf
+ [<c012e198>] ? autoremove_wake_function+0/2b
+ [<c012bdba>] ? worker_thread+0/bf
+ [<c012e0c9>] ? kthread+38/5f
+ [<c012e091>] ? kthread+0/5f
+ [<c0103abf>] ? kernel_thread_helper+7/10
+Code: 00 00 00 00 c3 83 3d 60 5c 50 c0 00 56 89 d6 53 0f 84 c4 00 00 00 8d 42
+e0 83 f8 0f 77 0f 8b 1d 68 5c 50 c0 89 d8 e8 a9 fa ff ff <89> 03 8b 1d 60 5c
+50 c0 89 f2 83 e2 7f 0f b7 4c 53 10 8d 41 01
+
+Signed-off-by: Darren Salt <linux@youmustbejoking.demon.co.uk>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/misc/eeepc-laptop.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/misc/eeepc-laptop.c
++++ b/drivers/misc/eeepc-laptop.c
+@@ -381,7 +381,8 @@ static void notify_wlan(u32 *event)
+ static void notify_brn(void)
+ {
+       struct backlight_device *bd = eeepc_backlight_device;
+-      bd->props.brightness = read_brightness(bd);
++      if (bd)
++              bd->props.brightness = read_brightness(bd);
+ }
+ static void eeepc_hotk_notify(acpi_handle handle, u32 event, void *data)
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009
+Message-Id: <20090211001548.769388474@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:48 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ NeilBrown <neilb@suse.de>
+Subject: [patch 09/56] md: Ensure an md array never has too many devices.
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=md-ensure-an-md-array-never-has-too-many-devices.patch
+Content-Length: 2541
+Lines: 84
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: NeilBrown <neilb@suse.de>
+
+commit de01dfadf25bf83cfe3d85c163005c4320532658 upstream.
+
+Each different metadata format supported by md supports a
+different maximum number of devices.
+We really should be enforcing this maximum in the kernel, but
+we aren't quite doing that properly.
+
+We currently only enforce it at the 'hot_add' point, which is an
+older interface which is not used by current userspace.
+
+We need to also enforce it at 'add_new_disk' time for active arrays
+and at 'do_md_run' time when starting a new array.
+
+So move the test from 'hot_add' into 'bind_rdev_to_array' which is
+called from both 'hot_add' and 'add_new_disk, and add a new
+test in 'analyse_sbs' which is called from 'do_md_run'.
+
+This bug (or missing feature) has been around "forever" and so
+the patch is suitable for any -stable that is currently maintained.
+
+Signed-off-by: NeilBrown <neilb@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/md.c |   24 ++++++++++++++----------
+ 1 file changed, 14 insertions(+), 10 deletions(-)
+
+--- a/drivers/md/md.c
++++ b/drivers/md/md.c
+@@ -1454,6 +1454,11 @@ static int bind_rdev_to_array(mdk_rdev_t
+               if (find_rdev_nr(mddev, rdev->desc_nr))
+                       return -EBUSY;
+       }
++      if (mddev->max_disks && rdev->desc_nr >= mddev->max_disks) {
++              printk(KERN_WARNING "md: %s: array is limited to %d devices\n",
++                     mdname(mddev), mddev->max_disks);
++              return -EBUSY;
++      }
+       bdevname(rdev->bdev,b);
+       while ( (s=strchr(b, '/')) != NULL)
+               *s = '!';
+@@ -2362,6 +2367,15 @@ static void analyze_sbs(mddev_t * mddev)
+       i = 0;
+       rdev_for_each(rdev, tmp, mddev) {
++              if (rdev->desc_nr >= mddev->max_disks ||
++                  i > mddev->max_disks) {
++                      printk(KERN_WARNING
++                             "md: %s: %s: only %d devices permitted\n",
++                             mdname(mddev), bdevname(rdev->bdev, b),
++                             mddev->max_disks);
++                      kick_rdev_from_array(rdev);
++                      continue;
++              }
+               if (rdev != freshest)
+                       if (super_types[mddev->major_version].
+                           validate_super(mddev, rdev)) {
+@@ -4450,13 +4464,6 @@ static int hot_add_disk(mddev_t * mddev,
+        * noticed in interrupt contexts ...
+        */
+-      if (rdev->desc_nr == mddev->max_disks) {
+-              printk(KERN_WARNING "%s: can not hot-add to full array!\n",
+-                      mdname(mddev));
+-              err = -EBUSY;
+-              goto abort_unbind_export;
+-      }
+-
+       rdev->raid_disk = -1;
+       md_update_sb(mddev, 1);
+@@ -4470,9 +4477,6 @@ static int hot_add_disk(mddev_t * mddev,
+       md_new_event(mddev);
+       return 0;
+-abort_unbind_export:
+-      unbind_rdev_from_array(rdev);
+-
+ abort_export:
+       export_rdev(rdev);
+       return err;
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009
+Message-Id: <20090211001548.899500891@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:49 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Karsten Keil <kkeil@suse.de>,
+ Rusty Russell <rusty@rustcorp.com.au>
+Subject: [patch 10/56] module: remove over-zealous check in __module_get()
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=module-remove-over-zealous-check-in-__module_get.patch
+Content-Length: 1044
+Lines: 33
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Rusty Russell <rusty@rustcorp.com.au>
+
+commit 7f9a50a5b89b87f8e754f59ae9968da28be618a5 upstream.
+
+Impact: fix spurious BUG_ON() triggered under load
+
+module_refcount() isn't reliable outside stop_machine(), as demonstrated
+by Karsten Keil <kkeil@suse.de>, networking can trigger it under load
+(an inc on one cpu and dec on another while module_refcount() is tallying
+ can give false results, for example).
+
+Almost noone should be using __module_get, but that's another issue.
+
+Cc: Karsten Keil <kkeil@suse.de>
+Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/module.h |    1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/include/linux/module.h
++++ b/include/linux/module.h
+@@ -387,7 +387,6 @@ void symbol_put_addr(void *addr);
+ static inline void __module_get(struct module *module)
+ {
+       if (module) {
+-              BUG_ON(module_refcount(module) == 0);
+               local_inc(&module->ref[get_cpu()].count);
+               put_cpu();
+       }
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009
+Message-Id: <20090211001549.085548140@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:50 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Masami Hiramatsu <mhiramat@redhat.com>
+Subject: [patch 11/56] prevent kprobes from catching spurious page faults
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=prevent-kprobes-from-catching-spurious-page-faults.patch
+Content-Length: 1361
+Lines: 47
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Masami Hiramatsu <mhiramat@redhat.com>
+
+commit 9be260a646bf76fa418ee519afa10196b3164681 upstream.
+
+Prevent kprobes from catching spurious faults which will cause infinite
+recursive page-fault and memory corruption by stack overflow.
+
+Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/mm/fault.c |    8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/arch/x86/mm/fault.c
++++ b/arch/x86/mm/fault.c
+@@ -607,8 +607,6 @@ void __kprobes do_page_fault(struct pt_r
+       si_code = SEGV_MAPERR;
+-      if (notify_page_fault(regs))
+-              return;
+       if (unlikely(kmmio_fault(regs, address)))
+               return;
+@@ -638,6 +636,9 @@ void __kprobes do_page_fault(struct pt_r
+               if (spurious_fault(address, error_code))
+                       return;
++              /* kprobes don't want to hook the spurious faults. */
++              if (notify_page_fault(regs))
++                      return;
+               /*
+                * Don't take the mm semaphore here. If we fixup a prefetch
+                * fault we could otherwise deadlock.
+@@ -645,6 +646,9 @@ void __kprobes do_page_fault(struct pt_r
+               goto bad_area_nosemaphore;
+       }
++      /* kprobes don't want to hook the spurious faults. */
++      if (notify_page_fault(regs))
++              return;
+ #ifdef CONFIG_X86_32
+       /* It's safe to allow irq's after cr2 has been saved and the vmalloc
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009
+Message-Id: <20090211001549.244577569@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:51 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Dean Nelson <dcn@sgi.com>
+Subject: [patch 12/56] sgi-xp: fix writing past the end of kzalloc()d space
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=sgi-xp-fix-writing-past-the-end-of-kzalloc-d-space.patch
+Content-Length: 2653
+Lines: 75
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Dean Nelson <dcn@sgi.com>
+
+commit 361916a943cd9dbda1c0b00879d0225cc919d868 upstream.
+
+A missing type cast results in writing way beyond the end of a kzalloc()'d
+memory segment resulting in slab corruption. But it seems like the better
+solution is to define ->recv_msg_slots as a 'void *' rather than a
+'struct xpc_notify_mq_msg_uv *' and add the type cast.
+
+Signed-off-by: Dean Nelson <dcn@sgi.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/misc/sgi-xp/xpc.h    |    5 +++--
+ drivers/misc/sgi-xp/xpc_uv.c |   11 +++++------
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+--- a/drivers/misc/sgi-xp/xpc.h
++++ b/drivers/misc/sgi-xp/xpc.h
+@@ -3,7 +3,7 @@
+  * License.  See the file "COPYING" in the main directory of this archive
+  * for more details.
+  *
+- * Copyright (c) 2004-2008 Silicon Graphics, Inc.  All Rights Reserved.
++ * Copyright (c) 2004-2009 Silicon Graphics, Inc.  All Rights Reserved.
+  */
+ /*
+@@ -502,7 +502,8 @@ struct xpc_channel_uv {
+                                               /* partition's notify mq */
+       struct xpc_send_msg_slot_uv *send_msg_slots;
+-      struct xpc_notify_mq_msg_uv *recv_msg_slots;
++      void *recv_msg_slots;   /* each slot will hold a xpc_notify_mq_msg_uv */
++                              /* structure plus the user's payload */
+       struct xpc_fifo_head_uv msg_slot_free_list;
+       struct xpc_fifo_head_uv recv_msg_list;  /* deliverable payloads */
+--- a/drivers/misc/sgi-xp/xpc_uv.c
++++ b/drivers/misc/sgi-xp/xpc_uv.c
+@@ -3,7 +3,7 @@
+  * License.  See the file "COPYING" in the main directory of this archive
+  * for more details.
+  *
+- * Copyright (c) 2008 Silicon Graphics, Inc.  All Rights Reserved.
++ * Copyright (c) 2008-2009 Silicon Graphics, Inc.  All Rights Reserved.
+  */
+ /*
+@@ -825,8 +825,8 @@ xpc_allocate_recv_msg_slot_uv(struct xpc
+                       continue;
+               for (entry = 0; entry < nentries; entry++) {
+-                      msg_slot = ch_uv->recv_msg_slots + entry *
+-                          ch->entry_size;
++                      msg_slot = ch_uv->recv_msg_slots +
++                          entry * ch->entry_size;
+                       msg_slot->hdr.msg_slot_number = entry;
+               }
+@@ -1123,9 +1123,8 @@ xpc_handle_notify_mq_msg_uv(struct xpc_p
+       /* we're dealing with a normal message sent via the notify_mq */
+       ch_uv = &ch->sn.uv;
+-      msg_slot = (struct xpc_notify_mq_msg_uv *)((u64)ch_uv->recv_msg_slots +
+-                  (msg->hdr.msg_slot_number % ch->remote_nentries) *
+-                  ch->entry_size);
++      msg_slot = ch_uv->recv_msg_slots +
++          (msg->hdr.msg_slot_number % ch->remote_nentries) * ch->entry_size;
+       BUG_ON(msg->hdr.msg_slot_number != msg_slot->hdr.msg_slot_number);
+       BUG_ON(msg_slot->hdr.size != 0);
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009
+Message-Id: <20090211001549.377048945@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:52 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Tony Battersby <tonyb@cybernetics.com>,
+ Jiri Kosina <jkosina@suse.cz>,
+ Hugh Dickins <hugh@veritas.com>
+Subject: [patch 13/56] shm: fix shmctl(SHM_INFO) lockup with !CONFIG_SHMEM
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=shm-fix-shmctl-lockup-with-config_shmem.patch
+Content-Length: 1455
+Lines: 46
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Tony Battersby <tonyb@cybernetics.com>
+
+commit a68e61e8ff2d46327a37b69056998b47745db6fa upstream.
+
+shm_get_stat() assumes that the inode is a "struct shmem_inode_info",
+which is incorrect for !CONFIG_SHMEM (see fs/ramfs/inode.c:
+ramfs_get_inode() vs.  mm/shmem.c: shmem_get_inode()).
+
+This bad assumption can cause shmctl(SHM_INFO) to lockup when
+shm_get_stat() tries to spin_lock(&info->lock).  Users of !CONFIG_SHMEM
+may encounter this lockup simply by invoking the 'ipcs' command.
+
+Reported by Jiri Olsa back in February 2008:
+http://lkml.org/lkml/2008/2/29/74
+
+Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
+Cc: Jiri Kosina <jkosina@suse.cz>
+Reported-by: Jiri Olsa <olsajiri@gmail.com>
+Cc: Hugh Dickins <hugh@veritas.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ ipc/shm.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/ipc/shm.c
++++ b/ipc/shm.c
+@@ -565,11 +565,15 @@ static void shm_get_stat(struct ipc_name
+                       struct hstate *h = hstate_file(shp->shm_file);
+                       *rss += pages_per_huge_page(h) * mapping->nrpages;
+               } else {
++#ifdef CONFIG_SHMEM
+                       struct shmem_inode_info *info = SHMEM_I(inode);
+                       spin_lock(&info->lock);
+                       *rss += inode->i_mapping->nrpages;
+                       *swp += info->swapped;
+                       spin_unlock(&info->lock);
++#else
++                      *rss += inode->i_mapping->nrpages;
++#endif
+               }
+               total++;
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009
+Message-Id: <20090211001549.551208160@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:53 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Clemens Ladisch <clemens@ladisch.de>,
+ Takashi Iwai <tiwai@suse.de>
+Subject: [patch 14/56] sound: usb-audio: handle wMaxPacketSize for FIXED_ENDPOINT devices
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=sound-usb-audio-handle-wmaxpacketsize-for-fixed_endpoint-devices.patch
+Content-Length: 1056
+Lines: 29
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Clemens Ladisch <clemens@ladisch.de>
+
+commit 894dcd78782842924527598b0b764c9b4e679e21 upstream.
+
+For audio devices that do not have proper audio descriptors (e.g.,
+Edirol UA-20), we use hardcoded parameters from our quirks list.
+However, we must still read the maximum packet size from the standard
+endpoint descriptor; otherwise, we might use packets that are too big
+and therefore rejected by the USB core.
+
+Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/usb/usbaudio.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/usb/usbaudio.c
++++ b/sound/usb/usbaudio.c
+@@ -2958,6 +2958,7 @@ static int create_fixed_stream_quirk(str
+               return -EINVAL;
+       }
+       alts = &iface->altsetting[fp->altset_idx];
++      fp->maxpacksize = le16_to_cpu(get_endpoint(alts, 0)->wMaxPacketSize);
+       usb_set_interface(chip->dev, fp->iface, 0);
+       init_usb_pitch(chip->dev, fp->iface, alts, fp);
+       init_usb_sample_rate(chip->dev, fp->iface, alts, fp, fp->rate_max);
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009
+Message-Id: <20090211001549.688830399@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:54 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Johannes Weiner <hannes@cmpxchg.org>,
+ Peter Zijlstra <a.p.zijlstra@chello.nl>,
+ Matthew Wilcox <matthew@wil.cx>,
+ Chuck Lever <cel@citi.umich.edu>,
+ Nick Piggin <nickpiggin@yahoo.com.au>,
+ Ingo Molnar <mingo@elte.hu>
+Subject: [patch 15/56] wait: prevent exclusive waiter starvation
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=wait-prevent-exclusive-waiter-starvation.patch
+Content-Length: 6709
+Lines: 189
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Johannes Weiner <hannes@cmpxchg.org>
+
+commit 777c6c5f1f6e757ae49ecca2ed72d6b1f523c007 upstream.
+
+With exclusive waiters, every process woken up through the wait queue must
+ensure that the next waiter down the line is woken when it has finished.
+
+Interruptible waiters don't do that when aborting due to a signal.  And if
+an aborting waiter is concurrently woken up through the waitqueue, noone
+will ever wake up the next waiter.
+
+This has been observed with __wait_on_bit_lock() used by
+lock_page_killable(): the first contender on the queue was aborting when
+the actual lock holder woke it up concurrently.  The aborted contender
+didn't acquire the lock and therefor never did an unlock followed by
+waking up the next waiter.
+
+Add abort_exclusive_wait() which removes the process' wait descriptor from
+the waitqueue, iff still queued, or wakes up the next waiter otherwise.
+It does so under the waitqueue lock.  Racing with a wake up means the
+aborting process is either already woken (removed from the queue) and will
+wake up the next waiter, or it will remove itself from the queue and the
+concurrent wake up will apply to the next waiter after it.
+
+Use abort_exclusive_wait() in __wait_event_interruptible_exclusive() and
+__wait_on_bit_lock() when they were interrupted by other means than a wake
+up through the queue.
+
+[akpm@linux-foundation.org: coding-style fixes]
+Reported-by: Chris Mason <chris.mason@oracle.com>
+Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
+Mentored-by: Oleg Nesterov <oleg@redhat.com>
+Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
+Cc: Matthew Wilcox <matthew@wil.cx>
+Cc: Chuck Lever <cel@citi.umich.edu>
+Cc: Nick Piggin <nickpiggin@yahoo.com.au>
+Cc: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/wait.h |   11 +++++++--
+ kernel/sched.c       |    4 +--
+ kernel/wait.c        |   59 ++++++++++++++++++++++++++++++++++++++++++++-------
+ 3 files changed, 63 insertions(+), 11 deletions(-)
+
+--- a/include/linux/wait.h
++++ b/include/linux/wait.h
+@@ -141,6 +141,8 @@ static inline void __remove_wait_queue(w
+       list_del(&old->task_list);
+ }
++void __wake_up_common(wait_queue_head_t *q, unsigned int mode,
++                      int nr_exclusive, int sync, void *key);
+ void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key);
+ extern void __wake_up_locked(wait_queue_head_t *q, unsigned int mode);
+ extern void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr);
+@@ -342,16 +344,19 @@ do {                                                                     \
+       for (;;) {                                                      \
+               prepare_to_wait_exclusive(&wq, &__wait,                 \
+                                       TASK_INTERRUPTIBLE);            \
+-              if (condition)                                          \
++              if (condition) {                                        \
++                      finish_wait(&wq, &__wait);                      \
+                       break;                                          \
++              }                                                       \
+               if (!signal_pending(current)) {                         \
+                       schedule();                                     \
+                       continue;                                       \
+               }                                                       \
+               ret = -ERESTARTSYS;                                     \
++              abort_exclusive_wait(&wq, &__wait,                      \
++                              TASK_INTERRUPTIBLE, NULL);              \
+               break;                                                  \
+       }                                                               \
+-      finish_wait(&wq, &__wait);                                      \
+ } while (0)
+ #define wait_event_interruptible_exclusive(wq, condition)             \
+@@ -440,6 +445,8 @@ extern long interruptible_sleep_on_timeo
+ void prepare_to_wait(wait_queue_head_t *q, wait_queue_t *wait, int state);
+ void prepare_to_wait_exclusive(wait_queue_head_t *q, wait_queue_t *wait, int state);
+ void finish_wait(wait_queue_head_t *q, wait_queue_t *wait);
++void abort_exclusive_wait(wait_queue_head_t *q, wait_queue_t *wait,
++                      unsigned int mode, void *key);
+ int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key);
+ int wake_bit_function(wait_queue_t *wait, unsigned mode, int sync, void *key);
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -4556,8 +4556,8 @@ EXPORT_SYMBOL(default_wake_function);
+  * started to run but is not in state TASK_RUNNING. try_to_wake_up() returns
+  * zero in this (rare) case, and we handle it by continuing to scan the queue.
+  */
+-static void __wake_up_common(wait_queue_head_t *q, unsigned int mode,
+-                           int nr_exclusive, int sync, void *key)
++void __wake_up_common(wait_queue_head_t *q, unsigned int mode,
++                      int nr_exclusive, int sync, void *key)
+ {
+       wait_queue_t *curr, *next;
+--- a/kernel/wait.c
++++ b/kernel/wait.c
+@@ -101,6 +101,15 @@ prepare_to_wait_exclusive(wait_queue_hea
+ }
+ EXPORT_SYMBOL(prepare_to_wait_exclusive);
++/*
++ * finish_wait - clean up after waiting in a queue
++ * @q: waitqueue waited on
++ * @wait: wait descriptor
++ *
++ * Sets current thread back to running state and removes
++ * the wait descriptor from the given waitqueue if still
++ * queued.
++ */
+ void finish_wait(wait_queue_head_t *q, wait_queue_t *wait)
+ {
+       unsigned long flags;
+@@ -127,6 +136,39 @@ void finish_wait(wait_queue_head_t *q, w
+ }
+ EXPORT_SYMBOL(finish_wait);
++/*
++ * abort_exclusive_wait - abort exclusive waiting in a queue
++ * @q: waitqueue waited on
++ * @wait: wait descriptor
++ * @state: runstate of the waiter to be woken
++ * @key: key to identify a wait bit queue or %NULL
++ *
++ * Sets current thread back to running state and removes
++ * the wait descriptor from the given waitqueue if still
++ * queued.
++ *
++ * Wakes up the next waiter if the caller is concurrently
++ * woken up through the queue.
++ *
++ * This prevents waiter starvation where an exclusive waiter
++ * aborts and is woken up concurrently and noone wakes up
++ * the next waiter.
++ */
++void abort_exclusive_wait(wait_queue_head_t *q, wait_queue_t *wait,
++                      unsigned int mode, void *key)
++{
++      unsigned long flags;
++
++      __set_current_state(TASK_RUNNING);
++      spin_lock_irqsave(&q->lock, flags);
++      if (!list_empty(&wait->task_list))
++              list_del_init(&wait->task_list);
++      else if (waitqueue_active(q))
++              __wake_up_common(q, mode, 1, 0, key);
++      spin_unlock_irqrestore(&q->lock, flags);
++}
++EXPORT_SYMBOL(abort_exclusive_wait);
++
+ int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key)
+ {
+       int ret = default_wake_function(wait, mode, sync, key);
+@@ -187,17 +229,20 @@ int __sched
+ __wait_on_bit_lock(wait_queue_head_t *wq, struct wait_bit_queue *q,
+                       int (*action)(void *), unsigned mode)
+ {
+-      int ret = 0;
+-
+       do {
++              int ret;
++
+               prepare_to_wait_exclusive(wq, &q->wait, mode);
+-              if (test_bit(q->key.bit_nr, q->key.flags)) {
+-                      if ((ret = (*action)(q->key.flags)))
+-                              break;
+-              }
++              if (!test_bit(q->key.bit_nr, q->key.flags))
++                      continue;
++              ret = action(q->key.flags);
++              if (!ret)
++                      continue;
++              abort_exclusive_wait(wq, &q->wait, mode, &q->key);
++              return ret;
+       } while (test_and_set_bit(q->key.bit_nr, q->key.flags));
+       finish_wait(wq, &q->wait);
+-      return ret;
++      return 0;
+ }
+ EXPORT_SYMBOL(__wait_on_bit_lock);
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009
+Message-Id: <20090211001549.811352955@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:55 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Borislav Petkov <borislav.petkov@amd.com>,
+ "H. Peter Anvin" <hpa@zytor.com>
+Subject: [patch 16/56] x86: APIC: enable workaround on AMD Fam10h CPUs
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=x86-apic-enable-workaround-on-amd-fam10h-cpus.patch
+Content-Length: 1119
+Lines: 33
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Borislav Petkov <borislav.petkov@amd.com>
+
+commit 858770619debfb9269add63e4ba8b7c6b5538dd1 upstream.
+
+Impact: fix to enable APIC for AMD Fam10h on chipsets with a missing/b0rked
+       ACPI MP table (MADT)
+
+Booting a 32bit kernel on an AMD Fam10h CPU running on chipsets with
+missing/b0rked MP table leads to a hang pretty early in the boot process
+due to the APIC not being initialized. Fix that by falling back to the
+default APIC base address in 32bit code, as it is done in the 64bit
+codepath.
+
+Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
+Signed-off-by: H. Peter Anvin <hpa@zytor.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/apic_32.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/x86/kernel/apic_32.c
++++ b/arch/x86/kernel/apic_32.c
+@@ -1115,7 +1115,7 @@ static int __init detect_init_APIC(void)
+       switch (boot_cpu_data.x86_vendor) {
+       case X86_VENDOR_AMD:
+               if ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model > 1) ||
+-                  (boot_cpu_data.x86 == 15))
++                  (boot_cpu_data.x86 >= 15))
+                       break;
+               goto no_apic;
+       case X86_VENDOR_INTEL:
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:50 2009
+Message-Id: <20090211001549.944406877@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:56 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Stefan Richter <stefanr@s5r6.in-berlin.de>
+Subject: [patch 17/56] ieee1394: ohci1394: increase AT req. retries, fix ack_busy_X from Panasonic camcorders and others
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=ieee1394-ohci1394-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch
+Content-Length: 1615
+Lines: 43
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Stefan Richter <stefanr@s5r6.in-berlin.de>
+
+Commit 64c634ef83991b390ec0503e61f16efb0ba3c60b upstream.
+
+Camcorders have a tendency to fail read requests to their config ROM and
+write request to their FCP command register with ack_busy_X.  This has
+become a problem with newer kernels and especially Panasonic camcorders,
+causing AV/C in dvgrab and kino to fail.  Dvgrab for example frequently
+logs "send oops"; kino reports loss of AV/C control.  I suspect that
+lower CPU scheduling latencies in newer kernels made this issue more
+prominent now.
+
+According to
+https://sourceforge.net/tracker/?func=detail&atid=114103&aid=2492640&group_id=14103
+this can be fixed by configuring the FireWire controller for more
+hardware retries for request transmission; these retries are evidently
+more successful than libavc1394's own retry loop (typically 3 tries on
+top of hardware retries).
+
+Presumably the same issue has been reported at
+https://bugzilla.redhat.com/show_bug.cgi?id=449252 and
+https://bugzilla.redhat.com/show_bug.cgi?id=477279 .
+
+Tested-by: Mathias Beilstein
+Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ieee1394/ohci1394.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/ieee1394/ohci1394.h
++++ b/drivers/ieee1394/ohci1394.h
+@@ -26,7 +26,7 @@
+ #define OHCI1394_DRIVER_NAME      "ohci1394"
+-#define OHCI1394_MAX_AT_REQ_RETRIES   0x2
++#define OHCI1394_MAX_AT_REQ_RETRIES   0xf
+ #define OHCI1394_MAX_AT_RESP_RETRIES  0x2
+ #define OHCI1394_MAX_PHYS_RESP_RETRIES        0x8
+ #define OHCI1394_MAX_SELF_ID_ERRORS   16
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:50 2009
+Message-Id: <20090211001550.178903091@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:57 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Stefan Richter <stefanr@s5r6.in-berlin.de>
+Subject: [patch 18/56] firewire: ohci: increase AT req. retries, fix ack_busy_X from Panasonic camcorders and others
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=firewire-ohci-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch
+Content-Length: 1823
+Lines: 47
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Stefan Richter <stefanr@s5r6.in-berlin.de>
+
+Commit 8b7b6afaa84708d08139daa08538ca3e56c351f1 upstream.
+
+Camcorders have a tendency to fail read requests to their config ROM and
+write request to their FCP command register with ack_busy_X.  This has
+become a problem with newer kernels and especially Panasonic camcorders,
+causing AV/C in dvgrab and kino to fail.  Dvgrab for example frequently
+logs "send oops"; kino reports loss of AV/C control.  I suspect that
+lower CPU scheduling latencies in newer kernels made this issue more
+prominent now.
+
+According to
+https://sourceforge.net/tracker/?func=detail&atid=114103&aid=2492640&group_id=14103
+this can be fixed by configuring the FireWire controller for more
+hardware retries for request transmission; these retries are evidently
+more successful than libavc1394's own retry loop (typically 3 tries on
+top of hardware retries).
+
+Presumably the same issue has been reported at
+https://bugzilla.redhat.com/show_bug.cgi?id=449252 and
+https://bugzilla.redhat.com/show_bug.cgi?id=477279 .
+
+In a quick test with a JVC camcorder (which didn't malfunction like the
+reported camcorders), this change decreased the number of ack_busy_X
+from 16 in three runs of dvgrab to 4 in three runs of the same capture
+duration.
+
+Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/firewire/fw-ohci.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/firewire/fw-ohci.c
++++ b/drivers/firewire/fw-ohci.c
+@@ -226,7 +226,7 @@ static inline struct fw_ohci *fw_ohci(st
+ #define CONTEXT_DEAD  0x0800
+ #define CONTEXT_ACTIVE        0x0400
+-#define OHCI1394_MAX_AT_REQ_RETRIES   0x2
++#define OHCI1394_MAX_AT_REQ_RETRIES   0xf
+ #define OHCI1394_MAX_AT_RESP_RETRIES  0x2
+ #define OHCI1394_MAX_PHYS_RESP_RETRIES        0x8
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:50 2009
+Message-Id: <20090211001550.319883998@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:58 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Stefan Richter <stefanr@s5r6.in-berlin.de>
+Subject: [patch 19/56] firewire: sbp2: fix DMA mapping leak on the failure path
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=firewire-sbp2-fix-dma-mapping-leak-on-the-failure-path.patch
+Content-Length: 2267
+Lines: 66
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Stefan Richter <stefanr@s5r6.in-berlin.de>
+
+Commit 5e2125677fd72d36396cc537466e07ffcbbd4b2b upstream.
+
+Reported-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
+who also provided a first version of the fix.
+
+Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/firewire/fw-sbp2.c |   27 +++++++++++++++++----------
+ 1 file changed, 17 insertions(+), 10 deletions(-)
+
+--- a/drivers/firewire/fw-sbp2.c
++++ b/drivers/firewire/fw-sbp2.c
+@@ -1293,6 +1293,19 @@ static struct fw_driver sbp2_driver = {
+       .id_table = sbp2_id_table,
+ };
++static void sbp2_unmap_scatterlist(struct device *card_device,
++                                 struct sbp2_command_orb *orb)
++{
++      if (scsi_sg_count(orb->cmd))
++              dma_unmap_sg(card_device, scsi_sglist(orb->cmd),
++                           scsi_sg_count(orb->cmd),
++                           orb->cmd->sc_data_direction);
++
++      if (orb->request.misc & cpu_to_be32(COMMAND_ORB_PAGE_TABLE_PRESENT))
++              dma_unmap_single(card_device, orb->page_table_bus,
++                               sizeof(orb->page_table), DMA_TO_DEVICE);
++}
++
+ static unsigned int
+ sbp2_status_to_sense_data(u8 *sbp2_status, u8 *sense_data)
+ {
+@@ -1372,15 +1385,7 @@ complete_command_orb(struct sbp2_orb *ba
+       dma_unmap_single(device->card->device, orb->base.request_bus,
+                        sizeof(orb->request), DMA_TO_DEVICE);
+-
+-      if (scsi_sg_count(orb->cmd) > 0)
+-              dma_unmap_sg(device->card->device, scsi_sglist(orb->cmd),
+-                           scsi_sg_count(orb->cmd),
+-                           orb->cmd->sc_data_direction);
+-
+-      if (orb->page_table_bus != 0)
+-              dma_unmap_single(device->card->device, orb->page_table_bus,
+-                               sizeof(orb->page_table), DMA_TO_DEVICE);
++      sbp2_unmap_scatterlist(device->card->device, orb);
+       orb->cmd->result = result;
+       orb->done(orb->cmd);
+@@ -1530,8 +1535,10 @@ static int sbp2_scsi_queuecommand(struct
+       orb->base.request_bus =
+               dma_map_single(device->card->device, &orb->request,
+                              sizeof(orb->request), DMA_TO_DEVICE);
+-      if (dma_mapping_error(device->card->device, orb->base.request_bus))
++      if (dma_mapping_error(device->card->device, orb->base.request_bus)) {
++              sbp2_unmap_scatterlist(device->card->device, orb);
+               goto out;
++      }
+       sbp2_send_orb(&orb->base, lu, lu->tgt->node_id, lu->generation,
+                     lu->command_block_agent_address + SBP2_ORB_POINTER);
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:50 2009
+Message-Id: <20090211001550.484496051@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:59 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jarod Wilson <jarod@redhat.com>,
+ Stefan Richter <stefanr@s5r6.in-berlin.de>
+Subject: [patch 20/56] firewire: sbp2: add workarounds for 2nd and 3rd generation iPods
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=firewire-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch
+Content-Length: 2003
+Lines: 56
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Stefan Richter <stefanr@s5r6.in-berlin.de>
+
+Commit c8c4707cf7ca8ff7dcc1653447e48cb3de0bf114 upstream.
+
+According to https://bugs.launchpad.net/bugs/294391
+  - 3rd generation iPods need the "fix capacity" workaround after all
+    (apparently they crash after the last sector was accessed),
+  - 2nd generation iPods need the "128 kB maximum request size"
+    workaround.
+
+Alas both iPod generations feature the same model ID in the config ROM,
+hence we can only define a shared quirks list entry for them.  Luckily
+the fix capacity workaround did not show a negative effect in Jarod's
+tests with 2nd gen. iPod.
+
+A side note:  Apple computers in target mode (or at least an x86 Mac
+mini) don't have firmware_version and model_id, hence none of the iPod
+quirks list entries is active for them.
+
+Tested-by: Jarod Wilson <jarod@redhat.com>
+Acked-by: Jarod Wilson <jarod@redhat.com>
+Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/firewire/fw-sbp2.c |   16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
+
+--- a/drivers/firewire/fw-sbp2.c
++++ b/drivers/firewire/fw-sbp2.c
+@@ -350,15 +350,17 @@ static const struct {
+               .model                  = ~0,
+               .workarounds            = SBP2_WORKAROUND_128K_MAX_TRANS,
+       },
+-
+       /*
+-       * There are iPods (2nd gen, 3rd gen) with model_id == 0, but
+-       * these iPods do not feature the read_capacity bug according
+-       * to one report.  Read_capacity behaviour as well as model_id
+-       * could change due to Apple-supplied firmware updates though.
++       * iPod 2nd generation: needs 128k max transfer size workaround
++       * iPod 3rd generation: needs fix capacity workaround
+        */
+-
+-      /* iPod 4th generation. */ {
++      {
++              .firmware_revision      = 0x0a2700,
++              .model                  = 0x000000,
++              .workarounds            = SBP2_WORKAROUND_128K_MAX_TRANS |
++                                        SBP2_WORKAROUND_FIX_CAPACITY,
++      },
++      /* iPod 4th generation */ {
+               .firmware_revision      = 0x0a2700,
+               .model                  = 0x000021,
+               .workarounds            = SBP2_WORKAROUND_FIX_CAPACITY,
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:50 2009
+Message-Id: <20090211001550.679581949@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:00 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jarod Wilson <jarod@redhat.com>,
+ Stefan Richter <stefanr@s5r6.in-berlin.de>
+Subject: [patch 21/56] ieee1394: sbp2: add workarounds for 2nd and 3rd generation iPods
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=ieee1394-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch
+Content-Length: 1151
+Lines: 37
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Stefan Richter <stefanr@s5r6.in-berlin.de>
+
+Commit 1448d7c6a2ff96d3b52ecae49e2d0f046a097fe0 upstream.
+
+As per https://bugs.launchpad.net/bugs/294391.  These got one sample of
+each iPod generation going.  However there still occurred I/O stalls
+with the 3rd generation iPod which remain undiagnosed at the time of
+this writing.
+
+Acked-by: Jarod Wilson <jarod@redhat.com>
+Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ieee1394/sbp2.c |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/drivers/ieee1394/sbp2.c
++++ b/drivers/ieee1394/sbp2.c
+@@ -395,6 +395,16 @@ static const struct {
+               .model_id               = SBP2_ROM_VALUE_WILDCARD,
+               .workarounds            = SBP2_WORKAROUND_128K_MAX_TRANS,
+       },
++      /*
++       * iPod 2nd generation: needs 128k max transfer size workaround
++       * iPod 3rd generation: needs fix capacity workaround
++       */
++      {
++              .firmware_revision      = 0x0a2700,
++              .model_id               = 0x000000,
++              .workarounds            = SBP2_WORKAROUND_128K_MAX_TRANS |
++                                        SBP2_WORKAROUND_FIX_CAPACITY,
++      },
+       /* iPod 4th generation */ {
+               .firmware_revision      = 0x0a2700,
+               .model_id               = 0x000021,
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:50 2009
+Message-Id: <20090211001550.840550381@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:01 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jiri Slaby <jirislaby@gmail.com>,
+ Alan Cox <alan@redhat.com>
+Subject: [patch 22/56] 8250_pci: add support for netmos 9835 IBM devices
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=8250_pci-add-support-for-netmos-9835-ibm-devices.patch
+Content-Length: 1431
+Lines: 45
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Jiri Slaby <jirislaby@gmail.com>
+
+commit 25cf9bc1fcb085daaeb82b09bab0fb3c40570887 upstream.
+
+Most of netmos 9835 hardware is handled by parport-serial.  IBM introduces
+a device which doesn't have any parallel ports and have screwed subdevice
+PCI id (not corresponding to port numbers).
+
+Handle this device (9710:9835 1014:0299) properly.
+
+Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Alan Cox <alan@redhat.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/serial/8250_pci.c |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/serial/8250_pci.c
++++ b/drivers/serial/8250_pci.c
+@@ -599,6 +599,10 @@ static int pci_netmos_init(struct pci_de
+       /* subdevice 0x00PS means <P> parallel, <S> serial */
+       unsigned int num_serial = dev->subsystem_device & 0xf;
++      if (dev->subsystem_vendor == PCI_VENDOR_ID_IBM &&
++                      dev->subsystem_device == 0x0299)
++              return 0;
++
+       if (num_serial == 0)
+               return -ENODEV;
+       return num_serial;
+@@ -2846,6 +2850,10 @@ static struct pci_device_id serial_pci_t
+               0,
+               pbn_b0_8_115200 },
++      {       PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9835,
++              PCI_VENDOR_ID_IBM, 0x0299,
++              0, 0, pbn_b0_bt_2_115200 },
++
+       /*
+        * These entries match devices with class COMMUNICATION_SERIAL,
+        * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009
+Message-Id: <20090211001550.998619772@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:02 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Myron Stowe <myron.stowe@hp.com>,
+ Len Brown <len.brown@intel.com>
+Subject: [patch 23/56] ACPICA: Fix table entry truncation calculation
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=acpica-fix-table-entry-truncation-calculation.patch
+Content-Length: 1501
+Lines: 43
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Myron Stowe <myron.stowe@hp.com>
+
+commit 386e4a8358239f90275e1f93d5ad11cdc93c6453 upstream.
+
+During early boot, ACPI RSDT/XSDT table entries are gathered into the
+'initial_tables[]' array.  This array is currently statically defined (see
+./drivers/acpi/tables.c).  When there are more table entries than can be
+held in the 'initial_tables[]' array, the message "Truncating N table
+entries!" is output.  As currently implemented, this message will always
+erroneously calculate N as 0.
+
+This patch fixes the calculation that determines how many table entries
+will be missing (truncated).
+
+This modification may be used under either the GPL or the BSD-style
+license used for Intel ACPI CA code.
+
+Signed-off-by: Myron Stowe <myron.stowe@hp.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/tables/tbutils.c |    7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+--- a/drivers/acpi/tables/tbutils.c
++++ b/drivers/acpi/tables/tbutils.c
+@@ -512,10 +512,9 @@ acpi_tb_parse_root_table(acpi_physical_a
+                       if (ACPI_FAILURE(status)) {
+                               ACPI_WARNING((AE_INFO,
+                                             "Truncating %u table entries!",
+-                                            (unsigned)
+-                                            (acpi_gbl_root_table_list.size -
+-                                             acpi_gbl_root_table_list.
+-                                             count)));
++                                            (unsigned) (table_count -
++                                             (acpi_gbl_root_table_list.
++                                             count - 2))));
+                               break;
+                       }
+               }
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009
+Message-Id: <20090211001551.166210765@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:03 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Len Brown <len.brown@intel.com>
+Subject: [patch 24/56] ACPI: disable ACPI cleanly when bad RSDP found
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=acpi-disable-acpi-cleanly-when-bad-rsdp-found.patch
+Content-Length: 1181
+Lines: 46
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Len Brown <len.brown@intel.com>
+
+commit 9e3a9d1ed8cc8db93e5c53e9a5b09065bd95de8b upstream.
+
+When ACPI is disabled in the BIOS of this VIA C3 box,
+it invalidates the RSDP, which Linux notices:
+
+ACPI Error (tbxfroot-0218): A valid RSDP was not found [20080926]
+
+Bug Linux neglected to disable ACPI at that stage,
+and later scribbled on smp_found_config:
+
+ACPI: No APIC-table, disabling MPS
+
+But this box doesn't run well in legacy PIC mode,
+it needed IOAPIC mode to perform correctly:
+
+http://lkml.org/lkml/2009/2/5/39
+
+So exit ACPI mode cleanly when we first detect
+that it is hopeless.
+
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/tables.c |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/acpi/tables.c
++++ b/drivers/acpi/tables.c
+@@ -293,7 +293,12 @@ static void __init check_multiple_madt(v
+ int __init acpi_table_init(void)
+ {
+-      acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0);
++      acpi_status status;
++
++      status = acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0);
++      if (ACPI_FAILURE(status))
++              return 1;
++
+       check_multiple_madt();
+       return 0;
+ }
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009
+Message-Id: <20090211001551.312486130@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:04 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Zhao Yakui <yakui.zhao@intel.com>,
+ Len Brown <len.brown@intel.com>
+Subject: [patch 25/56] ACPI: proc_dir_entry video/VGA already registered
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=acpi-proc_dir_entry-video-vga-already-registered.patch
+Content-Length: 873
+Lines: 32
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Zhao Yakui <yakui.zhao@intel.com>
+
+commit f3b39f1393d5cebe56f43a584ef47efbebd2702c upstream.
+
+eliminate the duplicate the name of "VGA"
+
+http://bugzilla.kernel.org/show_bug.cgi?id=12514
+
+Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/video.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/acpi/video.c
++++ b/drivers/acpi/video.c
+@@ -1983,6 +1983,12 @@ static int acpi_video_bus_add(struct acp
+                       device->pnp.bus_id[3] = '0' + instance;
+               instance ++;
+       }
++      /* a hack to fix the duplicate name "VGA" problem on Pa 3553 */
++      if (!strcmp(device->pnp.bus_id, "VGA")) {
++              if (instance)
++                      device->pnp.bus_id[3] = '0' + instance;
++              instance++;
++      }
+       video->device = device;
+       strcpy(acpi_device_name(device), ACPI_VIDEO_BUS_NAME);
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009
+Message-Id: <20090211001551.448504325@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:05 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Zhao Yakui <yakui.zhao@intel.com>,
+ Len Brown <len.brown@intel.com>
+Subject: [patch 26/56] ACPI: Skip the first two elements in the _BCL package
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=acpi-skip-the-first-two-elements-in-the-_bcl-package.patch
+Content-Length: 2724
+Lines: 68
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Zhao Yakui <yakui.zhao@intel.com>
+
+commit 0a3db1cec5d476804185114ff5d1845aed3936b3 upstream.
+
+According to the Spec the first two elements in the _BCL package won't be
+
+regarded as the available brightness level. The first is the brightness when
+full power is connected to the box(It means that the AC adapter is plugged).
+The second is the brightness level when the box is on battery.
+    If the first two elements are still used while finding the next brightness
+level, it will fall back to the lowest level when keeping on pressing
+hotkey. (On some boxes the brightness will be changed twice when hotkey is
+pressed once. One is in the ACPI video driver. The other is changed by sys I/F.
+In the ACPI video driver the first two elements will be used while changing
+the brightness. But the first two elements is skipped while using sys I/F.
+In such case there exists the inconsistency).
+    So he first two elements had better be skipped while showing the available
+brightness or finding the next brightness level.
+
+http://bugzilla.kernel.org/show_bug.cgi?id=12450
+
+Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/video.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/acpi/video.c
++++ b/drivers/acpi/video.c
+@@ -997,7 +997,7 @@ acpi_video_device_brightness_seq_show(st
+       }
+       seq_printf(seq, "levels: ");
+-      for (i = 0; i < dev->brightness->count; i++)
++      for (i = 2; i < dev->brightness->count; i++)
+               seq_printf(seq, " %d", dev->brightness->levels[i]);
+       seq_printf(seq, "\ncurrent: %d\n", dev->brightness->curr);
+@@ -1036,7 +1036,7 @@ acpi_video_device_write_brightness(struc
+               return -EFAULT;
+       /* validate through the list of available levels */
+-      for (i = 0; i < dev->brightness->count; i++)
++      for (i = 2; i < dev->brightness->count; i++)
+               if (level == dev->brightness->levels[i]) {
+                       if (ACPI_SUCCESS
+                           (acpi_video_device_lcd_set_level(dev, level)))
+@@ -1689,7 +1689,7 @@ acpi_video_get_next_level(struct acpi_vi
+       max = max_below = 0;
+       min = min_above = 255;
+       /* Find closest level to level_current */
+-      for (i = 0; i < device->brightness->count; i++) {
++      for (i = 2; i < device->brightness->count; i++) {
+               l = device->brightness->levels[i];
+               if (abs(l - level_current) < abs(delta)) {
+                       delta = l - level_current;
+@@ -1699,7 +1699,7 @@ acpi_video_get_next_level(struct acpi_vi
+       }
+       /* Ajust level_current to closest available level */
+       level_current += delta;
+-      for (i = 0; i < device->brightness->count; i++) {
++      for (i = 2; i < device->brightness->count; i++) {
+               l = device->brightness->levels[i];
+               if (l < min)
+                       min = l;
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009
+Message-Id: <20090211001551.584590336@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:06 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Michael Bramer <grisu@deb-support.de>,
+ Alan Cox <number6@the-village.bc.nu>
+Subject: [patch 27/56] Add support for 8-port RS-232 MIC-3620 from advantech
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=add-support-for-8-port-rs-232-mic-3620-from-advantech.patch
+Content-Length: 1440
+Lines: 39
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Michael Bramer <michael@debsupport.de>
+
+commit 78d70d48132ce4c678a95b771ffa1af4fb5a03ec upstream.
+
+This Patch add the device information for the
+MIC-3620 8-port RS-232 cPCI card from Advantech Co. Ltd.
+
+Signed-off-by: Michael Bramer <grisu@deb-support.de>
+Signed-off-by: Alan Cox <number6@the-village.bc.nu>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/serial/8250_pci.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/serial/8250_pci.c
++++ b/drivers/serial/8250_pci.c
+@@ -770,6 +770,8 @@ pci_default_setup(struct serial_private 
+ #define PCI_SUBDEVICE_ID_OCTPRO422    0x0208
+ #define PCI_SUBDEVICE_ID_POCTAL232    0x0308
+ #define PCI_SUBDEVICE_ID_POCTAL422    0x0408
++#define PCI_VENDOR_ID_ADVANTECH               0x13fe
++#define PCI_DEVICE_ID_ADVANTECH_PCI3620       0x3620
+ /* Unknown vendors/cards - this should not be in linux/pci_ids.h */
+ #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584       0x1584
+@@ -2055,6 +2057,10 @@ static int pciserial_resume_one(struct p
+ #endif
+ static struct pci_device_id serial_pci_tbl[] = {
++      /* Advantech use PCI_DEVICE_ID_ADVANTECH_PCI3620 (0x3620) as 'PCI_SUBVENDOR_ID' */
++      {       PCI_VENDOR_ID_ADVANTECH, PCI_DEVICE_ID_ADVANTECH_PCI3620,
++              PCI_DEVICE_ID_ADVANTECH_PCI3620, 0x0001, 0, 0,
++              pbn_b2_8_921600 },
+       {       PCI_VENDOR_ID_V3, PCI_DEVICE_ID_V3_V960,
+               PCI_SUBVENDOR_ID_CONNECT_TECH,
+               PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_232, 0, 0,
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009
+Message-Id: <20090211001551.706494727@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:07 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Takashi Iwai <tiwai@suse.de>
+Subject: [patch 28/56] ALSA: hda - Add missing COEF initialization for ALC887
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=alsa-hda-add-missing-coef-initialization-for-alc887.patch
+Content-Length: 547
+Lines: 22
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 4a5a4c56b443a213fa9c2ad27984a8681a3d7087 upstream.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_realtek.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -948,6 +948,7 @@ do_sku:
+               case 0x10ec0882:
+               case 0x10ec0883:
+               case 0x10ec0885:
++              case 0x10ec0887:
+               case 0x10ec0889:
+                       snd_hda_codec_write(codec, 0x20, 0,
+                                           AC_VERB_SET_COEF_INDEX, 7);
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009
+Message-Id: <20090211001551.830158069@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:08 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Takashi Iwai <tiwai@suse.de>
+Subject: [patch 29/56] ALSA: hda - Add missing initialization for ALC272
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=alsa-hda-add-missing-initialization-for-alc272.patch
+Content-Length: 585
+Lines: 25
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit c6e8f2daadc6d61a32b7486a1058c8f1f9baa499 upstream.
+
+ALC272 needs EAPD for speaker outputs as well as other similar ALC
+codecs.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_realtek.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -920,6 +920,7 @@ do_sku:
+               case 0x10ec0267:
+               case 0x10ec0268:
+               case 0x10ec0269:
++              case 0x10ec0272:
+               case 0x10ec0660:
+               case 0x10ec0662:
+               case 0x10ec0663:
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009
+Message-Id: <20090211001551.957106816@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:09 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Takashi Iwai <tiwai@suse.de>
+Subject: [patch 30/56] ALSA: hda - Add quirk for FSC Amilo Xi2550
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=alsa-hda-add-quirk-for-fsc-amilo-xi2550.patch
+Content-Length: 1062
+Lines: 28
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit f67d8176ba9a3dbc33454cd67057184b2ef5ee31 upstream.
+
+Added model=fujisu-pi2515 for FSC Amilo Xi2550 with ALC883 codec.
+
+Refernece: Novell bnc#450979
+       https://bugzilla.novell.com/show_bug.cgi?id=450979
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_realtek.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -8061,6 +8061,8 @@ static struct snd_pci_quirk alc883_cfg_t
+       SND_PCI_QUIRK(0x1558, 0, "Clevo laptop", ALC883_LAPTOP_EAPD),
+       SND_PCI_QUIRK(0x15d9, 0x8780, "Supermicro PDSBA", ALC883_3ST_6ch),
+       SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_MEDION),
++      SND_PCI_QUIRK(0x1734, 0x1107, "FSC AMILO Xi2550",
++                    ALC883_FUJITSU_PI2515),
+       SND_PCI_QUIRK(0x1734, 0x1108, "Fujitsu AMILO Pi2515", ALC883_FUJITSU_PI2515),
+       SND_PCI_QUIRK(0x17aa, 0x101e, "Lenovo 101e", ALC883_LENOVO_101E_2ch),
+       SND_PCI_QUIRK(0x17aa, 0x2085, "Lenovo NB0763", ALC883_LENOVO_NB0763),
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009
+Message-Id: <20090211001552.118062328@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:10 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Shaohua Li <shaohua.li@intel.com>,
+ Alex Chiang <achiang@hp.com>,
+ Jesse Barnes <jbarnes@virtuousgeek.org>
+Subject: [patch 31/56] PCI: properly clean up ASPM link state on device remove
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=pci-properly-clean-up-aspm-link-state-on-device-remove.patch
+Content-Length: 1573
+Lines: 43
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Alex Chiang <achiang@hp.com>
+
+commit 3419c75e15f82c3ab09bd944fddbde72c9e4b3ea upstream.
+
+We only want to disable ASPM when the last function is removed from
+the parent's device list. We determine this by checking to see if
+the parent's device list is completely empty.
+
+Unfortunately, we never hit that code because the parent is considered
+an upstream port, and never had an ASPM link_state associated with it.
+
+The early check for !link_state causes us to return early, we never
+discover that our device list is empty, and thus we never remove the
+downstream ports' link_state nodes.
+
+Instead of checking to see if the parent's device list is empty, we can
+check to see if we are the last device on the list, and if so, then we
+know that we can clean up properly.
+
+Cc: Shaohua Li <shaohua.li@intel.com>
+Signed-off-by: Alex Chiang <achiang@hp.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/pcie/aspm.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/pci/pcie/aspm.c
++++ b/drivers/pci/pcie/aspm.c
+@@ -713,9 +713,9 @@ void pcie_aspm_exit_link_state(struct pc
+       /*
+        * All PCIe functions are in one slot, remove one function will remove
+-       * the the whole slot, so just wait
++       * the whole slot, so just wait until we are the last function left.
+        */
+-      if (!list_empty(&parent->subordinate->devices))
++      if (!list_is_last(&pdev->bus_list, &parent->subordinate->devices))
+               goto out;
+       /* All functions are removed, so just disable ASPM for the link */
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009
+Message-Id: <20090211001552.244394795@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:11 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "Timothy S. Nelson" <wayland@wayland.id.au>,
+ Alex Villacis-Lasso <a_villacis@palosanto.com>,
+ Jesse Barnes <jbarnes@virtuousgeek.org>
+Subject: [patch 32/56] PCI: return error on failure to read PCI ROMs
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=pci-return-error-on-failure-to-read-pci-roms.patch
+Content-Length: 5654
+Lines: 142
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Timothy S. Nelson <wayland@wayland.id.au>
+
+commit 97c44836cdec1ea713a15d84098a1a908157e68f upstream.
+
+This patch makes the ROM reading code return an error to user space if
+the size of the ROM read is equal to 0.
+
+The patch also emits a warnings if the contents of the ROM are invalid,
+and documents the effects of the "enable" file on ROM reading.
+
+Signed-off-by: Timothy S. Nelson <wayland@wayland.id.au>
+Acked-by: Alex Villacis-Lasso <a_villacis@palosanto.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Documentation/filesystems/sysfs-pci.txt |   13 ++++++++++++-
+ arch/ia64/sn/kernel/io_acpi_init.c      |    2 +-
+ arch/ia64/sn/kernel/io_init.c           |    2 +-
+ drivers/pci/pci-sysfs.c                 |    4 ++--
+ drivers/pci/rom.c                       |    8 +++++---
+ include/linux/pci.h                     |    2 +-
+ 6 files changed, 22 insertions(+), 9 deletions(-)
+
+--- a/arch/ia64/sn/kernel/io_acpi_init.c
++++ b/arch/ia64/sn/kernel/io_acpi_init.c
+@@ -434,7 +434,7 @@ sn_acpi_slot_fixup(struct pci_dev *dev)
+               size = pci_resource_len(dev, PCI_ROM_RESOURCE);
+               addr = ioremap(pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE],
+                              size);
+-              image_size = pci_get_rom_size(addr, size);
++              image_size = pci_get_rom_size(dev, addr, size);
+               dev->resource[PCI_ROM_RESOURCE].start = (unsigned long) addr;
+               dev->resource[PCI_ROM_RESOURCE].end =
+                                       (unsigned long) addr + image_size - 1;
+--- a/arch/ia64/sn/kernel/io_init.c
++++ b/arch/ia64/sn/kernel/io_init.c
+@@ -269,7 +269,7 @@ sn_io_slot_fixup(struct pci_dev *dev)
+                       rom = ioremap(pci_resource_start(dev, PCI_ROM_RESOURCE),
+                                     size + 1);
+-                      image_size = pci_get_rom_size(rom, size + 1);
++                      image_size = pci_get_rom_size(dev, rom, size + 1);
+                       dev->resource[PCI_ROM_RESOURCE].end =
+                               dev->resource[PCI_ROM_RESOURCE].start +
+                               image_size - 1;
+--- a/Documentation/filesystems/sysfs-pci.txt
++++ b/Documentation/filesystems/sysfs-pci.txt
+@@ -9,6 +9,7 @@ that support it.  For example, a given b
+      |   |-- class
+      |   |-- config
+      |   |-- device
++     |   |-- enable
+      |   |-- irq
+      |   |-- local_cpus
+      |   |-- resource
+@@ -32,6 +33,7 @@ files, each with their own function.
+        class             PCI class (ascii, ro)
+        config            PCI config space (binary, rw)
+        device            PCI device (ascii, ro)
++       enable            Whether the device is enabled (ascii, rw)
+        irq               IRQ number (ascii, ro)
+        local_cpus        nearby CPU mask (cpumask, ro)
+        resource                  PCI resource host addresses (ascii, ro)
+@@ -57,10 +59,19 @@ used to do actual device programming fro
+ don't support mmapping of certain resources, so be sure to check the return
+ value from any attempted mmap.
++The 'enable' file provides a counter that indicates how many times the device
++has been enabled.  If the 'enable' file currently returns '4', and a '1' is
++echoed into it, it will then return '5'.  Echoing a '0' into it will decrease
++the count.  Even when it returns to 0, though, some of the initialisation
++may not be reversed.
++
+ The 'rom' file is special in that it provides read-only access to the device's
+ ROM file, if available.  It's disabled by default, however, so applications
+ should write the string "1" to the file to enable it before attempting a read
+-call, and disable it following the access by writing "0" to the file.
++call, and disable it following the access by writing "0" to the file.  Note
++that the device must be enabled for a rom read to return data succesfully.
++In the event a driver is not bound to the device, it can be enabled using the
++'enable' file, documented above.
+ Accessing legacy resources through sysfs
+ ----------------------------------------
+--- a/drivers/pci/pci-sysfs.c
++++ b/drivers/pci/pci-sysfs.c
+@@ -694,8 +694,8 @@ pci_read_rom(struct kobject *kobj, struc
+               return -EINVAL;
+       
+       rom = pci_map_rom(pdev, &size); /* size starts out as PCI window size */
+-      if (!rom)
+-              return 0;
++      if (!rom || !size)
++              return -EIO;
+               
+       if (off >= size)
+               count = 0;
+--- a/drivers/pci/rom.c
++++ b/drivers/pci/rom.c
+@@ -63,7 +63,7 @@ static void pci_disable_rom(struct pci_d
+  * The PCI window size could be much larger than the
+  * actual image size.
+  */
+-size_t pci_get_rom_size(void __iomem *rom, size_t size)
++size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size)
+ {
+       void __iomem *image;
+       int last_image;
+@@ -72,8 +72,10 @@ size_t pci_get_rom_size(void __iomem *ro
+       do {
+               void __iomem *pds;
+               /* Standard PCI ROMs start out with these bytes 55 AA */
+-              if (readb(image) != 0x55)
++              if (readb(image) != 0x55) {
++                      dev_err(&pdev->dev, "Invalid ROM contents\n");
+                       break;
++              }
+               if (readb(image + 1) != 0xAA)
+                       break;
+               /* get the PCI data structure and check its signature */
+@@ -158,7 +160,7 @@ void __iomem *pci_map_rom(struct pci_dev
+        * size is much larger than the actual size of the ROM.
+        * True size is important if the ROM is going to be copied.
+        */
+-      *size = pci_get_rom_size(rom, *size);
++      *size = pci_get_rom_size(pdev, rom, *size);
+       return rom;
+ }
+--- a/include/linux/pci.h
++++ b/include/linux/pci.h
+@@ -639,7 +639,7 @@ int pci_select_bars(struct pci_dev *dev,
+ /* ROM control related routines */
+ void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size);
+ void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom);
+-size_t pci_get_rom_size(void __iomem *rom, size_t size);
++size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size);
+ /* Power management related routines */
+ int pci_save_state(struct pci_dev *dev);
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009
+Message-Id: <20090211001552.378472799@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:12 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Eric Biederman <ebiederm@xmission.com>,
+ Paul Turner <pjt@google.com>,
+ Alexey Dobriyan <adobriyan@gmail.com>,
+ Al Viro <viro@zeniv.linux.org.uk>
+Subject: [patch 33/56] seq_file: move traverse so it can be used from seq_read
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=seq_file-move-traverse-so-it-can-be-used-from-seq_read.patch
+Content-Length: 3433
+Lines: 155
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Eric Biederman <ebiederm@xmission.com>
+
+commit 33da8892a2f9e7d4b2d9a35fc80833ba2d2b1aa6 upstream.
+
+In 2.6.25 some /proc files were converted to use the seq_file
+infrastructure.  But seq_files do not correctly support pread(), which
+broke some usersapce applications.
+
+To handle pread correctly we can't assume that f_pos is where we left it
+in seq_read.  So move traverse() so that we can eventually use it in
+seq_read and do thus some day support pread().
+
+Signed-off-by: Eric Biederman <ebiederm@xmission.com>
+Cc: Paul Turner <pjt@google.com>
+Cc: Alexey Dobriyan <adobriyan@gmail.com>
+Cc: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/seq_file.c |  114 +++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 57 insertions(+), 57 deletions(-)
+
+--- a/fs/seq_file.c
++++ b/fs/seq_file.c
+@@ -54,6 +54,63 @@ int seq_open(struct file *file, const st
+ }
+ EXPORT_SYMBOL(seq_open);
++static int traverse(struct seq_file *m, loff_t offset)
++{
++      loff_t pos = 0, index;
++      int error = 0;
++      void *p;
++
++      m->version = 0;
++      index = 0;
++      m->count = m->from = 0;
++      if (!offset) {
++              m->index = index;
++              return 0;
++      }
++      if (!m->buf) {
++              m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL);
++              if (!m->buf)
++                      return -ENOMEM;
++      }
++      p = m->op->start(m, &index);
++      while (p) {
++              error = PTR_ERR(p);
++              if (IS_ERR(p))
++                      break;
++              error = m->op->show(m, p);
++              if (error < 0)
++                      break;
++              if (unlikely(error)) {
++                      error = 0;
++                      m->count = 0;
++              }
++              if (m->count == m->size)
++                      goto Eoverflow;
++              if (pos + m->count > offset) {
++                      m->from = offset - pos;
++                      m->count -= m->from;
++                      m->index = index;
++                      break;
++              }
++              pos += m->count;
++              m->count = 0;
++              if (pos == offset) {
++                      index++;
++                      m->index = index;
++                      break;
++              }
++              p = m->op->next(m, p, &index);
++      }
++      m->op->stop(m, p);
++      return error;
++
++Eoverflow:
++      m->op->stop(m, p);
++      kfree(m->buf);
++      m->buf = kmalloc(m->size <<= 1, GFP_KERNEL);
++      return !m->buf ? -ENOMEM : -EAGAIN;
++}
++
+ /**
+  *    seq_read -      ->read() method for sequential files.
+  *    @file: the file to read from
+@@ -186,63 +243,6 @@ Efault:
+ }
+ EXPORT_SYMBOL(seq_read);
+-static int traverse(struct seq_file *m, loff_t offset)
+-{
+-      loff_t pos = 0, index;
+-      int error = 0;
+-      void *p;
+-
+-      m->version = 0;
+-      index = 0;
+-      m->count = m->from = 0;
+-      if (!offset) {
+-              m->index = index;
+-              return 0;
+-      }
+-      if (!m->buf) {
+-              m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL);
+-              if (!m->buf)
+-                      return -ENOMEM;
+-      }
+-      p = m->op->start(m, &index);
+-      while (p) {
+-              error = PTR_ERR(p);
+-              if (IS_ERR(p))
+-                      break;
+-              error = m->op->show(m, p);
+-              if (error < 0)
+-                      break;
+-              if (unlikely(error)) {
+-                      error = 0;
+-                      m->count = 0;
+-              }
+-              if (m->count == m->size)
+-                      goto Eoverflow;
+-              if (pos + m->count > offset) {
+-                      m->from = offset - pos;
+-                      m->count -= m->from;
+-                      m->index = index;
+-                      break;
+-              }
+-              pos += m->count;
+-              m->count = 0;
+-              if (pos == offset) {
+-                      index++;
+-                      m->index = index;
+-                      break;
+-              }
+-              p = m->op->next(m, p, &index);
+-      }
+-      m->op->stop(m, p);
+-      return error;
+-
+-Eoverflow:
+-      m->op->stop(m, p);
+-      kfree(m->buf);
+-      m->buf = kmalloc(m->size <<= 1, GFP_KERNEL);
+-      return !m->buf ? -ENOMEM : -EAGAIN;
+-}
+-
+ /**
+  *    seq_lseek -     ->llseek() method for sequential files.
+  *    @file: the file in question
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009
+Message-Id: <20090211001552.503769729@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:13 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Alexey Dobriyan <adobriyan@gmail.com>
+Subject: [patch 34/56] seq_file: fix big-enough lseek() + read()
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=seq_file-fix-big-enough-lseek-read.patch
+Content-Length: 883
+Lines: 31
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Alexey Dobriyan <adobriyan@gmail.com>
+
+commit f01d1d546abb2f4028b5299092f529eefb01253a upstream.
+
+lseek() further than length of the file will leave stale ->index
+(second-to-last during iteration). Next seq_read() will not notice
+that ->f_pos is big enough to return 0, but will print last item
+as if ->f_pos is pointing to it.
+
+Introduced in commit cb510b8172602a66467f3551b4be1911f5a7c8c2
+aka "seq_file: more atomicity in traverse()".
+
+Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/seq_file.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/fs/seq_file.c
++++ b/fs/seq_file.c
+@@ -102,6 +102,7 @@ static int traverse(struct seq_file *m, 
+               p = m->op->next(m, p, &index);
+       }
+       m->op->stop(m, p);
++      m->index = index;
+       return error;
+ Eoverflow:
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009
+Message-Id: <20090211001552.622557172@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:14 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Niels de Vos <niels.devos@wincor-nixdorf.com>,
+ Alan Cox <alan@redhat.com>
+Subject: [patch 35/56] serial: set correct baud_base for Oxford Semiconductor Ltd EXSYS EX-41092 Dual 16950 Serial adapter
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=serial-set-correct-baud_base-for-oxford-semiconductor-ltd-exsys-ex-41092-dual-16950-serial-adapter.patch
+Content-Length: 1471
+Lines: 42
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Niels de Vos <niels.devos@wincor-nixdorf.com>
+
+commit 39aced68d664291db3324d0fcf0985ab5626aac2 upstream.
+
+The PCI-card identified as "Oxford Semiconductor Ltd EXSYS EX-41092 Dual
+16950 Serial adapter" is only usable with other devices (i.e. not the same
+card) after doing a "setserial /dev/ttyS<n> baud_base 115200".  This
+baud_base should be default for this card.
+
+Signed-off-by: Niels de Vos <niels.devos@wincor-nixdorf.com>
+Signed-off-by: Alan Cox <alan@redhat.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/serial/8250_pci.c |    3 +++
+ include/linux/pci_ids.h   |    1 +
+ 2 files changed, 4 insertions(+)
+
+--- a/drivers/serial/8250_pci.c
++++ b/drivers/serial/8250_pci.c
+@@ -2304,6 +2304,9 @@ static struct pci_device_id serial_pci_t
+                * For now just used the hex ID 0x950a.
+                */
+       {       PCI_VENDOR_ID_OXSEMI, 0x950a,
++              PCI_SUBVENDOR_ID_SIIG, PCI_SUBDEVICE_ID_SIIG_DUAL_SERIAL, 0, 0,
++              pbn_b0_2_115200 },
++      {       PCI_VENDOR_ID_OXSEMI, 0x950a,
+               PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+               pbn_b0_2_1130000 },
+       {       PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954,
+--- a/include/linux/pci_ids.h
++++ b/include/linux/pci_ids.h
+@@ -1755,6 +1755,7 @@
+ #define PCI_DEVICE_ID_SIIG_8S_20x_650 0x2081
+ #define PCI_DEVICE_ID_SIIG_8S_20x_850 0x2082
+ #define PCI_SUBDEVICE_ID_SIIG_QUARTET_SERIAL  0x2050
++#define PCI_SUBDEVICE_ID_SIIG_DUAL_SERIAL     0x2530
+ #define PCI_VENDOR_ID_RADISYS         0x1331
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009
+Message-Id: <20090211001552.747182928@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:15 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Roland McGrath <roland@redhat.com>
+Subject: [patch 36/56] elf core dump: fix get_user use
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=elf-core-dump-fix-get_user-use.patch
+Content-Length: 1869
+Lines: 54
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Roland McGrath <roland@redhat.com>
+
+commit 92dc07b1f988e8c237a38e23be660b9b8533e6fd upstream.
+
+The elf_core_dump() code does its work with set_fs(KERNEL_DS) in force,
+so vma_dump_size() needs to switch back with set_fs(USER_DS) to safely
+use get_user() for a normal user-space address.
+
+Checking for VM_READ optimizes out the case where get_user() would fail
+anyway.  The vm_file check here was already superfluous given the control
+flow earlier in the function, so that is a cleanup/optimization unrelated
+to other changes but an obvious and trivial one.
+
+Reported-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
+Signed-off-by: Roland McGrath <roland@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/binfmt_elf.c |   14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+--- a/fs/binfmt_elf.c
++++ b/fs/binfmt_elf.c
+@@ -1188,9 +1188,11 @@ static unsigned long vma_dump_size(struc
+        * check for an ELF header.  If we find one, dump the first page to
+        * aid in determining what was mapped here.
+        */
+-      if (FILTER(ELF_HEADERS) && vma->vm_file != NULL && vma->vm_pgoff == 0) {
++      if (FILTER(ELF_HEADERS) &&
++          vma->vm_pgoff == 0 && (vma->vm_flags & VM_READ)) {
+               u32 __user *header = (u32 __user *) vma->vm_start;
+               u32 word;
++              mm_segment_t fs = get_fs();
+               /*
+                * Doing it this way gets the constant folded by GCC.
+                */
+@@ -1203,7 +1205,15 @@ static unsigned long vma_dump_size(struc
+               magic.elfmag[EI_MAG1] = ELFMAG1;
+               magic.elfmag[EI_MAG2] = ELFMAG2;
+               magic.elfmag[EI_MAG3] = ELFMAG3;
+-              if (get_user(word, header) == 0 && word == magic.cmp)
++              /*
++               * Switch to the user "segment" for get_user(),
++               * then put back what elf_core_dump() had in place.
++               */
++              set_fs(USER_DS);
++              if (unlikely(get_user(word, header)))
++                      word = 0;
++              set_fs(fs);
++              if (word == magic.cmp)
+                       return PAGE_SIZE;
+       }
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009
+Message-Id: <20090211001552.877771103@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:16 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Lachlan McIlroy <lachlan@sgi.com>,
+ Neil Brown <neilb@suse.de>
+Subject: [patch 37/56] XFS: set b_error from bio error in xfs_buf_bio_end_io
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=xfs-set-b_error-from-bio-error-in-xfs_buf_bio_end_io.patch
+Content-Length: 847
+Lines: 29
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Lachlan McIlroy <lachlan@redback.melbourne.sgi.com>
+
+commit cfbe52672fbc6f333892e8dde82c35e0a76aa5f5 upstream.
+
+Preserve any error returned by the bio layer.
+
+Reviewed-by: Eric Sandeen <sandeen@sandeen.net>
+Reviewed-by: Tim Shimmin <tes@sgi.com>
+Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
+Cc: Neil Brown <neilb@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/xfs/linux-2.6/xfs_buf.c |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/fs/xfs/linux-2.6/xfs_buf.c
++++ b/fs/xfs/linux-2.6/xfs_buf.c
+@@ -1114,8 +1114,7 @@ xfs_buf_bio_end_io(
+       unsigned int            blocksize = bp->b_target->bt_bsize;
+       struct bio_vec          *bvec = bio->bi_io_vec + bio->bi_vcnt - 1;
+-      if (!test_bit(BIO_UPTODATE, &bio->bi_flags))
+-              bp->b_error = EIO;
++      xfs_buf_ioerror(bp, -error);
+       do {
+               struct page     *page = bvec->bv_page;
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009
+Message-Id: <20090211001553.033780107@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:17 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Tom Tucker <tom@opengridcomputing.com>,
+ "J. Bruce Fields" <bfields@citi.umich.edu>,
+ Neil Brown <neilb@suse.de>
+Subject: [patch 38/56] Add a reference to sunrpc in svc_addsock
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=add-a-reference-to-sunrpc-in-svc_addsock.patch
+Content-Length: 1458
+Lines: 48
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Tom Tucker <tom@opengridcomputing.com>
+
+commit 2da2c21d7508d34bc6d600df665d84871b65d2b9 upstream.
+
+The svc_addsock function adds transport instances without taking a
+reference on the sunrpc.ko module, however, the generic transport
+destruction code drops a reference when a transport instance
+is destroyed.
+
+Add a try_module_get call to the svc_addsock function for transport
+instances added by this function.
+
+Signed-off-by: Tom Tucker <tom@opengridcomputing.com>
+Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
+Tested-by: Jeff Moyer <jmoyer@redhat.com>
+Cc: Neil Brown <neilb@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/sunrpc/svcsock.c |    9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+--- a/net/sunrpc/svcsock.c
++++ b/net/sunrpc/svcsock.c
+@@ -1171,7 +1171,11 @@ int svc_addsock(struct svc_serv *serv,
+       else if (so->state > SS_UNCONNECTED)
+               err = -EISCONN;
+       else {
+-              svsk = svc_setup_socket(serv, so, &err, SVC_SOCK_DEFAULTS);
++              if (!try_module_get(THIS_MODULE))
++                      err = -ENOENT;
++              else
++                      svsk = svc_setup_socket(serv, so, &err,
++                                              SVC_SOCK_DEFAULTS);
+               if (svsk) {
+                       struct sockaddr_storage addr;
+                       struct sockaddr *sin = (struct sockaddr *)&addr;
+@@ -1184,7 +1188,8 @@ int svc_addsock(struct svc_serv *serv,
+                       spin_unlock_bh(&serv->sv_lock);
+                       svc_xprt_received(&svsk->sk_xprt);
+                       err = 0;
+-              }
++              } else
++                      module_put(THIS_MODULE);
+       }
+       if (err) {
+               sockfd_put(so);
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009
+Message-Id: <20090211001553.165418137@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:18 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
+ Christoph Lameter <cl@linux-foundation.org>,
+ Lee Schermerhorn <Lee.Schermerhorn@hp.com>,
+ Gerald Schaefer <gerald.schaefer@de.ibm.com>,
+ Dave Hansen <dave@linux.vnet.ibm.com>,
+ Nick Piggin <npiggin@suse.de>
+Subject: [patch 39/56] mm: remove UP version of lru_add_drain_all()
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=mm-remove-up-version-of-lru_add_drain_all.patch
+Content-Length: 2100
+Lines: 69
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
+
+commit 6841c8e26357904ef462650273f5d5015f7bb370 upstream.
+
+Currently, lru_add_drain_all() has two version.
+  (1) use schedule_on_each_cpu()
+  (2) don't use schedule_on_each_cpu()
+
+Gerald Schaefer reported it doesn't work well on SMP (not NUMA) S390
+machine.
+
+  offline_pages() calls lru_add_drain_all() followed by drain_all_pages().
+  While drain_all_pages() works on each cpu, lru_add_drain_all() only runs
+  on the current cpu for architectures w/o CONFIG_NUMA. This let us run
+  into the BUG_ON(!PageBuddy(page)) in __offline_isolated_pages() during
+  memory hotplug stress test on s390. The page in question was still on the
+  pcp list, because of a race with lru_add_drain_all() and drain_all_pages()
+  on different cpus.
+
+Actually, Almost machine has CONFIG_UNEVICTABLE_LRU=y. Then almost machine use
+(1) version lru_add_drain_all although the machine is UP.
+
+Then this ifdef is not valueable.
+simple removing is better.
+
+Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
+Cc: Christoph Lameter <cl@linux-foundation.org>
+Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
+Acked-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
+Cc: Dave Hansen <dave@linux.vnet.ibm.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Nick Piggin <npiggin@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ mm/swap.c |   13 -------------
+ 1 file changed, 13 deletions(-)
+
+--- a/mm/swap.c
++++ b/mm/swap.c
+@@ -244,7 +244,6 @@ void lru_add_drain(void)
+       put_cpu();
+ }
+-#ifdef CONFIG_NUMA
+ static void lru_add_drain_per_cpu(struct work_struct *dummy)
+ {
+       lru_add_drain();
+@@ -258,18 +257,6 @@ int lru_add_drain_all(void)
+       return schedule_on_each_cpu(lru_add_drain_per_cpu);
+ }
+-#else
+-
+-/*
+- * Returns 0 for success
+- */
+-int lru_add_drain_all(void)
+-{
+-      lru_add_drain();
+-      return 0;
+-}
+-#endif
+-
+ /*
+  * Batched page_cache_release().  Decrement the reference count on all the
+  * passed pages.  If it fell to zero then remove the page from the LRU and
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009
+Message-Id: <20090211001553.299355132@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:19 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "Alexander V. Lukyanov" <lav@netis.ru>,
+ Tony Jones <tonyj@suse.de>
+Subject: [patch 40/56] Revert "vt: fix background color on line feed"
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=revert-vt-fix-background-color-on-line-feed.patch
+Content-Length: 7858
+Lines: 230
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit 93f78da405685a756beeaeae4b5e41fcec39eab3 upstream.
+
+This reverts commit c9e587abfdec2c2aaa55fab83bcb4972e2f84f9b, and the
+subsequent commits that fixed it up:
+
+ - afa9b649 "fbcon: prevent cursor disappearance after switching to 512
+   character font"
+
+ - d850a2fa "vt/fbcon: fix background color on line feed"
+
+ - 7fe3915a "vt/fbcon: update scrl_erase_char after 256/512-glyph font
+   switch"
+
+by request of Alan Cox. Quoth Alan:
+  "Unfortunately it's wrong and its been causing breakages because
+   various apps like ncurses expect our previous (and correct)
+   behaviour."
+
+Alexander sent out a similar patch.
+
+Requested-by: Alan Cox <alan@lxorguk.ukuu.org.uk>
+Tested-by: Jan Engelhardt <jengelh@medozas.de>
+Cc: Alexander V. Lukyanov <lav@netis.ru>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Tony Jones <tonyj@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/char/vt.c              |    5 ++---
+ drivers/video/console/fbcon.c  |   39 ++++++++++-----------------------------
+ drivers/video/console/mdacon.c |    2 +-
+ drivers/video/console/sticon.c |    4 ++--
+ drivers/video/console/vgacon.c |    4 ++--
+ include/linux/console_struct.h |    1 -
+ 6 files changed, 17 insertions(+), 38 deletions(-)
+
+--- a/drivers/char/vt.c
++++ b/drivers/char/vt.c
+@@ -301,7 +301,7 @@ static void scrup(struct vc_data *vc, un
+       d = (unsigned short *)(vc->vc_origin + vc->vc_size_row * t);
+       s = (unsigned short *)(vc->vc_origin + vc->vc_size_row * (t + nr));
+       scr_memmovew(d, s, (b - t - nr) * vc->vc_size_row);
+-      scr_memsetw(d + (b - t - nr) * vc->vc_cols, vc->vc_scrl_erase_char,
++      scr_memsetw(d + (b - t - nr) * vc->vc_cols, vc->vc_video_erase_char,
+                   vc->vc_size_row * nr);
+ }
+@@ -319,7 +319,7 @@ static void scrdown(struct vc_data *vc, 
+       s = (unsigned short *)(vc->vc_origin + vc->vc_size_row * t);
+       step = vc->vc_cols * nr;
+       scr_memmovew(s + step, s, (b - t - nr) * vc->vc_size_row);
+-      scr_memsetw(s, vc->vc_scrl_erase_char, 2 * step);
++      scr_memsetw(s, vc->vc_video_erase_char, 2 * step);
+ }
+ static void do_update_region(struct vc_data *vc, unsigned long start, int count)
+@@ -434,7 +434,6 @@ static void update_attr(struct vc_data *
+                     vc->vc_blink, vc->vc_underline,
+                     vc->vc_reverse ^ vc->vc_decscnm, vc->vc_italic);
+       vc->vc_video_erase_char = (build_attr(vc, vc->vc_color, 1, vc->vc_blink, 0, vc->vc_decscnm, 0) << 8) | ' ';
+-      vc->vc_scrl_erase_char = (build_attr(vc, vc->vc_def_color, 1, false, false, vc->vc_decscnm, false) << 8) | ' ';
+ }
+ /* Note: inverting the screen twice should revert to the original state */
+--- a/drivers/video/console/fbcon.c
++++ b/drivers/video/console/fbcon.c
+@@ -1855,8 +1855,6 @@ static int fbcon_scroll(struct vc_data *
+       struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]];
+       struct display *p = &fb_display[vc->vc_num];
+       int scroll_partial = info->flags & FBINFO_PARTIAL_PAN_OK;
+-      unsigned short saved_ec;
+-      int ret;
+       if (fbcon_is_inactive(vc, info))
+               return -EINVAL;
+@@ -1869,11 +1867,6 @@ static int fbcon_scroll(struct vc_data *
+        *           whole screen (prevents flicker).
+        */
+-      saved_ec = vc->vc_video_erase_char;
+-      vc->vc_video_erase_char = vc->vc_scrl_erase_char;
+-
+-      ret = 0;
+-
+       switch (dir) {
+       case SM_UP:
+               if (count > vc->vc_rows)        /* Maximum realistic size */
+@@ -1890,9 +1883,9 @@ static int fbcon_scroll(struct vc_data *
+                       scr_memsetw((unsigned short *) (vc->vc_origin +
+                                                       vc->vc_size_row *
+                                                       (b - count)),
+-                                  vc->vc_scrl_erase_char,
++                                  vc->vc_video_erase_char,
+                                   vc->vc_size_row * count);
+-                      ret = 1;
++                      return 1;
+                       break;
+               case SCROLL_WRAP_MOVE:
+@@ -1962,10 +1955,9 @@ static int fbcon_scroll(struct vc_data *
+                       scr_memsetw((unsigned short *) (vc->vc_origin +
+                                                       vc->vc_size_row *
+                                                       (b - count)),
+-                                  vc->vc_scrl_erase_char,
++                                  vc->vc_video_erase_char,
+                                   vc->vc_size_row * count);
+-                      ret = 1;
+-                      break;
++                      return 1;
+               }
+               break;
+@@ -1982,9 +1974,9 @@ static int fbcon_scroll(struct vc_data *
+                       scr_memsetw((unsigned short *) (vc->vc_origin +
+                                                       vc->vc_size_row *
+                                                       t),
+-                                  vc->vc_scrl_erase_char,
++                                  vc->vc_video_erase_char,
+                                   vc->vc_size_row * count);
+-                      ret = 1;
++                      return 1;
+                       break;
+               case SCROLL_WRAP_MOVE:
+@@ -2052,15 +2044,12 @@ static int fbcon_scroll(struct vc_data *
+                       scr_memsetw((unsigned short *) (vc->vc_origin +
+                                                       vc->vc_size_row *
+                                                       t),
+-                                  vc->vc_scrl_erase_char,
++                                  vc->vc_video_erase_char,
+                                   vc->vc_size_row * count);
+-                      ret = 1;
+-                      break;
++                      return 1;
+               }
+-              break;
+       }
+-      vc->vc_video_erase_char = saved_ec;
+-      return ret;
++      return 0;
+ }
+@@ -2522,9 +2511,6 @@ static int fbcon_do_set_font(struct vc_d
+                       c = vc->vc_video_erase_char;
+                       vc->vc_video_erase_char =
+                           ((c & 0xfe00) >> 1) | (c & 0xff);
+-                      c = vc->vc_scrl_erase_char;
+-                      vc->vc_scrl_erase_char =
+-                          ((c & 0xFE00) >> 1) | (c & 0xFF);
+                       vc->vc_attr >>= 1;
+               }
+       } else if (!vc->vc_hi_font_mask && cnt == 512) {
+@@ -2555,14 +2541,9 @@ static int fbcon_do_set_font(struct vc_d
+                       if (vc->vc_can_do_color) {
+                               vc->vc_video_erase_char =
+                                   ((c & 0xff00) << 1) | (c & 0xff);
+-                              c = vc->vc_scrl_erase_char;
+-                              vc->vc_scrl_erase_char =
+-                                  ((c & 0xFF00) << 1) | (c & 0xFF);
+                               vc->vc_attr <<= 1;
+-                      } else {
++                      } else
+                               vc->vc_video_erase_char = c & ~0x100;
+-                              vc->vc_scrl_erase_char = c & ~0x100;
+-                      }
+               }
+       }
+--- a/drivers/video/console/mdacon.c
++++ b/drivers/video/console/mdacon.c
+@@ -533,7 +533,7 @@ static void mdacon_cursor(struct vc_data
+ static int mdacon_scroll(struct vc_data *c, int t, int b, int dir, int lines)
+ {
+-      u16 eattr = mda_convert_attr(c->vc_scrl_erase_char);
++      u16 eattr = mda_convert_attr(c->vc_video_erase_char);
+       if (!lines)
+               return 0;
+--- a/drivers/video/console/sticon.c
++++ b/drivers/video/console/sticon.c
+@@ -170,12 +170,12 @@ static int sticon_scroll(struct vc_data 
+     switch (dir) {
+     case SM_UP:
+       sti_bmove(sti, t + count, 0, t, 0, b - t - count, conp->vc_cols);
+-      sti_clear(sti, b - count, 0, count, conp->vc_cols, conp->vc_scrl_erase_char);
++      sti_clear(sti, b - count, 0, count, conp->vc_cols, conp->vc_video_erase_char);
+       break;
+     case SM_DOWN:
+       sti_bmove(sti, t, 0, t + count, 0, b - t - count, conp->vc_cols);
+-      sti_clear(sti, t, 0, count, conp->vc_cols, conp->vc_scrl_erase_char);
++      sti_clear(sti, t, 0, count, conp->vc_cols, conp->vc_video_erase_char);
+       break;
+     }
+--- a/drivers/video/console/vgacon.c
++++ b/drivers/video/console/vgacon.c
+@@ -1350,7 +1350,7 @@ static int vgacon_scroll(struct vc_data 
+               } else
+                       c->vc_origin += delta;
+               scr_memsetw((u16 *) (c->vc_origin + c->vc_screenbuf_size -
+-                                   delta), c->vc_scrl_erase_char,
++                                   delta), c->vc_video_erase_char,
+                           delta);
+       } else {
+               if (oldo - delta < vga_vram_base) {
+@@ -1363,7 +1363,7 @@ static int vgacon_scroll(struct vc_data 
+               } else
+                       c->vc_origin -= delta;
+               c->vc_scr_end = c->vc_origin + c->vc_screenbuf_size;
+-              scr_memsetw((u16 *) (c->vc_origin), c->vc_scrl_erase_char,
++              scr_memsetw((u16 *) (c->vc_origin), c->vc_video_erase_char,
+                           delta);
+       }
+       c->vc_scr_end = c->vc_origin + c->vc_screenbuf_size;
+--- a/include/linux/console_struct.h
++++ b/include/linux/console_struct.h
+@@ -53,7 +53,6 @@ struct vc_data {
+       unsigned short  vc_hi_font_mask;        /* [#] Attribute set for upper 256 chars of font or 0 if not supported */
+       struct console_font vc_font;            /* Current VC font set */
+       unsigned short  vc_video_erase_char;    /* Background erase character */
+-      unsigned short  vc_scrl_erase_char;     /* Erase character for scroll */
+       /* VT terminal data */
+       unsigned int    vc_state;               /* Escape sequence parser state */
+       unsigned int    vc_npar,vc_par[NPAR];   /* Parameters of current escape sequence */
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009
+Message-Id: <20090211001553.433717810@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:20 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ NeilBrown <neilb@suse.de>
+Subject: [patch 41/56] md: Dont try to set an array to read-auto if it is already in that state.
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=md-don-t-try-to-set-an-array-to-read-auto-if-it-is-already-in-that-state.patch
+Content-Length: 841
+Lines: 32
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: NeilBrown <neilb@suse.de>
+
+commit 80268ee9270ebe4847365a7426de91d179e870d0 upstream.
+
+'read-auto' is a variant of 'readonly' which will switch to writable
+on the first write attempt.
+
+Calling do_md_stop to set the array readonly when it is already readonly
+returns an error.  So make sure not to do that.
+
+Signed-off-by: NeilBrown <neilb@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/md.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/md/md.c
++++ b/drivers/md/md.c
+@@ -2742,9 +2742,9 @@ array_state_store(mddev_t *mddev, const 
+               break;
+       case read_auto:
+               if (mddev->pers) {
+-                      if (mddev->ro != 1)
++                      if (mddev->ro == 0)
+                               err = do_md_stop(mddev, 1, 0);
+-                      else
++                      else if (mddev->ro == 1)
+                               err = restart_array(mddev);
+                       if (err == 0) {
+                               mddev->ro = 2;
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009
+Message-Id: <20090211001553.556450936@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:21 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ NeilBrown <neilb@suse.de>
+Subject: [patch 42/56] md: Allow metadata_version to be updated for externally managed metadata.
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=md-allow-metadata_version-to-be-updated-for-externally-managed-metadata.patch
+Content-Length: 1217
+Lines: 39
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: NeilBrown <neilb@suse.de>
+
+commit ea43ddd8491feccf36267349748ea91b1194481e upstream.
+
+For externally managed metadata, the 'metadata_version' sysfs
+attribute is really just a channel for user-space programs to
+communicate about how the array is being managed.
+It can be useful for this to be changed while the array is active.
+
+Normally changes to metadata_version are not permitted while the array
+is active.  Change that so that if the metadata is externally managed,
+the metadata_version can be changed to a different flavour of external
+management.
+
+Signed-off-by: NeilBrown <neilb@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/md.c |    8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+--- a/drivers/md/md.c
++++ b/drivers/md/md.c
+@@ -2960,7 +2960,13 @@ metadata_store(mddev_t *mddev, const cha
+ {
+       int major, minor;
+       char *e;
+-      if (!list_empty(&mddev->disks))
++      /* Changing the details of 'external' metadata is
++       * always permitted.  Otherwise there must be
++       * no devices attached to the array.
++       */
++      if (mddev->external && strncmp(buf, "external:", 9) == 0)
++              ;
++      else if (!list_empty(&mddev->disks))
+               return -EBUSY;
+       if (cmd_match(buf, "none")) {
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009
+Message-Id: <20090211001553.697719310@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:22 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Helmut Schaa <helmut.schaa@googlemail.com>,
+ "John W. Linville" <linville@tuxdriver.com>
+Subject: [patch 43/56] ipw2200: fix scanning while associated
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=ipw2200-fix-scanning-while-associated.patch
+Content-Length: 4195
+Lines: 106
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Helmut Schaa <helmut.schaa@googlemail.com>
+
+commit 14a4dfe2ff8c353f59ae8324059ded1cfe22c7d9 upstream.
+
+This patch fixes sporadic firmware restarts when scanning while associated.
+
+The firmware will quietly cancel a scan (while associated) if the dwell time
+for a channel to be scanned is larger than the time it may stay away from the
+operating channel (because of DTIM catching). Unfortunately the driver is not
+notified about the canceled scan and therefore the scan watchdog timeout will
+be hit and the driver causes a firmware restart which results in
+disassociation. This mainly happens on passive channels which use a dwell time
+of 120 whereas a typical beacon interval is around 100.
+
+The patch changes the dwell time for passive channels to be slightly smaller
+than the actual beacon interval to work around the firmware issue. Furthermore
+the number of allowed beacon misses is increased from one to three as otherwise
+most scans (while associated) won't complete successfully.
+
+However scanning while associated will still fail in corner cases such as a
+beacon intervals below 30.
+
+Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/ipw2200.c |   28 ++++++++++++++++++++++------
+ drivers/net/wireless/ipw2200.h |    1 +
+ 2 files changed, 23 insertions(+), 6 deletions(-)
+
+--- a/drivers/net/wireless/ipw2200.c
++++ b/drivers/net/wireless/ipw2200.c
+@@ -4346,7 +4346,8 @@ static void ipw_handle_missed_beacon(str
+               return;
+       }
+-      if (priv->status & STATUS_SCANNING) {
++      if (priv->status & STATUS_SCANNING &&
++          missed_count > IPW_MB_SCAN_CANCEL_THRESHOLD) {
+               /* Stop scan to keep fw from getting
+                * stuck (only if we aren't roaming --
+                * otherwise we'll never scan more than 2 or 3
+@@ -6276,6 +6277,20 @@ static void ipw_add_scan_channels(struct
+       }
+ }
++static int ipw_passive_dwell_time(struct ipw_priv *priv)
++{
++      /* staying on passive channels longer than the DTIM interval during a
++       * scan, while associated, causes the firmware to cancel the scan
++       * without notification. Hence, don't stay on passive channels longer
++       * than the beacon interval.
++       */
++      if (priv->status & STATUS_ASSOCIATED
++          && priv->assoc_network->beacon_interval > 10)
++              return priv->assoc_network->beacon_interval - 10;
++      else
++              return 120;
++}
++
+ static int ipw_request_scan_helper(struct ipw_priv *priv, int type, int direct)
+ {
+       struct ipw_scan_request_ext scan;
+@@ -6319,16 +6334,16 @@ static int ipw_request_scan_helper(struc
+       scan.full_scan_index = cpu_to_le32(ieee80211_get_scans(priv->ieee));
+       if (type == IW_SCAN_TYPE_PASSIVE) {
+-              IPW_DEBUG_WX("use passive scanning\n");
+-              scan_type = IPW_SCAN_PASSIVE_FULL_DWELL_SCAN;
++              IPW_DEBUG_WX("use passive scanning\n");
++              scan_type = IPW_SCAN_PASSIVE_FULL_DWELL_SCAN;
+               scan.dwell_time[IPW_SCAN_PASSIVE_FULL_DWELL_SCAN] =
+-                      cpu_to_le16(120);
++                      cpu_to_le16(ipw_passive_dwell_time(priv));
+               ipw_add_scan_channels(priv, &scan, scan_type);
+               goto send_request;
+       }
+       /* Use active scan by default. */
+-      if (priv->config & CFG_SPEED_SCAN)
++      if (priv->config & CFG_SPEED_SCAN)
+               scan.dwell_time[IPW_SCAN_ACTIVE_BROADCAST_SCAN] =
+                       cpu_to_le16(30);
+       else
+@@ -6338,7 +6353,8 @@ static int ipw_request_scan_helper(struc
+       scan.dwell_time[IPW_SCAN_ACTIVE_BROADCAST_AND_DIRECT_SCAN] =
+               cpu_to_le16(20);
+-      scan.dwell_time[IPW_SCAN_PASSIVE_FULL_DWELL_SCAN] = cpu_to_le16(120);
++      scan.dwell_time[IPW_SCAN_PASSIVE_FULL_DWELL_SCAN] =
++              cpu_to_le16(ipw_passive_dwell_time(priv));
+       scan.dwell_time[IPW_SCAN_ACTIVE_DIRECT_SCAN] = cpu_to_le16(20);
+ #ifdef CONFIG_IPW2200_MONITOR
+--- a/drivers/net/wireless/ipw2200.h
++++ b/drivers/net/wireless/ipw2200.h
+@@ -244,6 +244,7 @@ enum connection_manager_assoc_states {
+ #define HOST_NOTIFICATION_S36_MEASUREMENT_REFUSED       31
+ #define HOST_NOTIFICATION_STATUS_BEACON_MISSING         1
++#define IPW_MB_SCAN_CANCEL_THRESHOLD                    3
+ #define IPW_MB_ROAMING_THRESHOLD_MIN                    1
+ #define IPW_MB_ROAMING_THRESHOLD_DEFAULT                8
+ #define IPW_MB_ROAMING_THRESHOLD_MAX                    30
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009
+Message-Id: <20090211001553.833786185@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:23 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Paulius Zaleckas <paulius.zaleckas@teltonika.lt>,
+ Denis Joseph Barrow <D.Barow@option.com>,
+ Jeff Garzik <jgarzik@redhat.com>,
+ Frank Seidel <fseidel@suse.de>
+Subject: [patch 44/56] hso: rfkill type should be WWAN
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=hso-rfkill-type-should-be-wwan.patch
+Content-Length: 801
+Lines: 26
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
+
+commit db053c6b447d083f3c63e5540b70a3e521b468ca upstream.
+
+Signed-off-by: Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
+Cc: Denis Joseph Barrow <D.Barow@option.com>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Signed-off-by: Frank Seidel <fseidel@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/usb/hso.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/usb/hso.c
++++ b/drivers/net/usb/hso.c
+@@ -2047,7 +2047,7 @@ static void hso_create_rfkill(struct hso
+       char *rfkn;
+       hso_net->rfkill = rfkill_allocate(&interface_to_usbdev(interface)->dev,
+-                               RFKILL_TYPE_WLAN);
++                               RFKILL_TYPE_WWAN);
+       if (!hso_net->rfkill) {
+               dev_err(dev, "%s - Out of memory", __func__);
+               return;
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009
+Message-Id: <20090211001553.970131237@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:24 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Chandra Seetharaman <sekharan@us.ibm.com>,
+ Alasdair G Kergon <agk@redhat.com>,
+ Hannes Reinecke <hare@suse.de>
+Subject: [patch 45/56] dm mpath: avoid attempting to activate null path
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=dm-mpath-avoid-attempting-to-activate-null-path.patch
+Content-Length: 1180
+Lines: 38
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Chandra Seetharaman <sekharan@us.ibm.com>
+
+commit b81aa1c79201cb424114fd198607951900babe18 upstream.
+
+Path activation code is called even when the pgpath is NULL. This could
+lead to a panic in activate_path(). Such a panic is seen in -rt kernel.
+
+This problem has been there before the pg_init() was moved to a
+workqueue.
+
+Signed-off-by: Chandra Seetharaman <sekharan@us.ibm.com>
+Signed-off-by: Alasdair G Kergon <agk@redhat.com>
+Signed-off-by: Hannes Reinecke <hare@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/dm-mpath.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/md/dm-mpath.c
++++ b/drivers/md/dm-mpath.c
+@@ -427,13 +427,13 @@ static void process_queued_ios(struct wo
+               __choose_pgpath(m);
+       pgpath = m->current_pgpath;
+-      m->pgpath_to_activate = m->current_pgpath;
+       if ((pgpath && !m->queue_io) ||
+           (!pgpath && !m->queue_if_no_path))
+               must_queue = 0;
+-      if (m->pg_init_required && !m->pg_init_in_progress) {
++      if (m->pg_init_required && !m->pg_init_in_progress && pgpath) {
++              m->pgpath_to_activate = pgpath;
+               m->pg_init_count++;
+               m->pg_init_required = 0;
+               m->pg_init_in_progress = 1;
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009
+Message-Id: <20090211001554.091714775@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:25 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Dennis Noordsij <dennis.noordsij@helsinki.fi>,
+ Bob Moore <robert.moore@intel.com>,
+ Lin Ming <ming.m.lin@intel.com>,
+ Andi Kleen <ak@linux.intel.com>,
+ Len Brown <len.brown@intel.com>,
+ Thomas Renninger <trenn@suse.de>
+Subject: [patch 46/56] ACPICA: Copy dynamically loaded tables to local buffer
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=acpica-copy-dynamically-loaded-tables-to-local-buffer.patch
+Content-Length: 6624
+Lines: 203
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Dennis Noordsij <dennis.noordsij@helsinki.fi>
+
+commit f0e0da8a6cca44396c7a711e308d58084e881617 upstream.
+
+Previously, dynamically loaded tables were simply mapped, but on some machines
+this memory is corrupted after suspend. Now copy the table to a local buffer.
+For OpRegion case, added checksum verify. Use the table length from the table header,
+not the region length. For Buffer case, use the table length also.
+
+http://bugzilla.kernel.org/show_bug.cgi?id=10734
+
+Signed-off-by: Dennis Noordsij <dennis.noordsij@helsinki.fi>
+Signed-off-by: Bob Moore <robert.moore@intel.com>
+Signed-off-by: Lin Ming <ming.m.lin@intel.com>
+Signed-off-by: Andi Kleen <ak@linux.intel.com>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Thomas Renninger <trenn@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/executer/exconfig.c |  113 ++++++++++++++++++++++++++++-----------
+ 1 file changed, 82 insertions(+), 31 deletions(-)
+
+--- a/drivers/acpi/executer/exconfig.c
++++ b/drivers/acpi/executer/exconfig.c
+@@ -280,6 +280,7 @@ acpi_ex_load_op(union acpi_operand_objec
+               struct acpi_walk_state *walk_state)
+ {
+       union acpi_operand_object *ddb_handle;
++      struct acpi_table_header *table;
+       struct acpi_table_desc table_desc;
+       u32 table_index;
+       acpi_status status;
+@@ -294,9 +295,8 @@ acpi_ex_load_op(union acpi_operand_objec
+       switch (ACPI_GET_OBJECT_TYPE(obj_desc)) {
+       case ACPI_TYPE_REGION:
+-              ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "Load from Region %p %s\n",
+-                                obj_desc,
+-                                acpi_ut_get_object_type_name(obj_desc)));
++              ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
++                                "Load table from Region %p\n", obj_desc));
+               /* Region must be system_memory (from ACPI spec) */
+@@ -316,61 +316,112 @@ acpi_ex_load_op(union acpi_operand_objec
+               }
+               /*
+-               * We will simply map the memory region for the table. However, the
+-               * memory region is technically not guaranteed to remain stable and
+-               * we may eventually have to copy the table to a local buffer.
++               * Map the table header and get the actual table length. The region
++               * length is not guaranteed to be the same as the table length.
++               */
++              table = acpi_os_map_memory(obj_desc->region.address,
++                                         sizeof(struct acpi_table_header));
++              if (!table) {
++                      return_ACPI_STATUS(AE_NO_MEMORY);
++              }
++
++              length = table->length;
++              acpi_os_unmap_memory(table, sizeof(struct acpi_table_header));
++
++              /* Must have at least an ACPI table header */
++
++              if (length < sizeof(struct acpi_table_header)) {
++                      return_ACPI_STATUS(AE_INVALID_TABLE_LENGTH);
++              }
++
++              /*
++               * The memory region is not guaranteed to remain stable and we must
++               * copy the table to a local buffer. For example, the memory region
++               * is corrupted after suspend on some machines. Dynamically loaded
++               * tables are usually small, so this overhead is minimal.
+                */
++
++              /* Allocate a buffer for the table */
++
++              table_desc.pointer = ACPI_ALLOCATE(length);
++              if (!table_desc.pointer) {
++                      return_ACPI_STATUS(AE_NO_MEMORY);
++              }
++
++              /* Map the entire table and copy it */
++
++              table = acpi_os_map_memory(obj_desc->region.address, length);
++              if (!table) {
++                      ACPI_FREE(table_desc.pointer);
++                      return_ACPI_STATUS(AE_NO_MEMORY);
++              }
++
++              ACPI_MEMCPY(table_desc.pointer, table, length);
++              acpi_os_unmap_memory(table, length);
++
+               table_desc.address = obj_desc->region.address;
+-              table_desc.length = obj_desc->region.length;
+-              table_desc.flags = ACPI_TABLE_ORIGIN_MAPPED;
+               break;
+       case ACPI_TYPE_BUFFER:  /* Buffer or resolved region_field */
+               ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
+-                                "Load from Buffer or Field %p %s\n", obj_desc,
+-                                acpi_ut_get_object_type_name(obj_desc)));
+-
+-              length = obj_desc->buffer.length;
++                                "Load table from Buffer or Field %p\n",
++                                obj_desc));
+               /* Must have at least an ACPI table header */
+-              if (length < sizeof(struct acpi_table_header)) {
++              if (obj_desc->buffer.length < sizeof(struct acpi_table_header)) {
+                       return_ACPI_STATUS(AE_INVALID_TABLE_LENGTH);
+               }
+-              /* Validate checksum here. It won't get validated in tb_add_table */
++              /* Get the actual table length from the table header */
+-              status =
+-                  acpi_tb_verify_checksum(ACPI_CAST_PTR
+-                                          (struct acpi_table_header,
+-                                           obj_desc->buffer.pointer), length);
+-              if (ACPI_FAILURE(status)) {
+-                      return_ACPI_STATUS(status);
++              table =
++                  ACPI_CAST_PTR(struct acpi_table_header,
++                                obj_desc->buffer.pointer);
++              length = table->length;
++
++              /* Table cannot extend beyond the buffer */
++
++              if (length > obj_desc->buffer.length) {
++                      return_ACPI_STATUS(AE_AML_BUFFER_LIMIT);
++              }
++              if (length < sizeof(struct acpi_table_header)) {
++                      return_ACPI_STATUS(AE_INVALID_TABLE_LENGTH);
+               }
+               /*
+-               * We need to copy the buffer since the original buffer could be
+-               * changed or deleted in the future
++               * Copy the table from the buffer because the buffer could be modified
++               * or even deleted in the future
+                */
+               table_desc.pointer = ACPI_ALLOCATE(length);
+               if (!table_desc.pointer) {
+                       return_ACPI_STATUS(AE_NO_MEMORY);
+               }
+-              ACPI_MEMCPY(table_desc.pointer, obj_desc->buffer.pointer,
+-                          length);
+-              table_desc.length = length;
+-              table_desc.flags = ACPI_TABLE_ORIGIN_ALLOCATED;
++              ACPI_MEMCPY(table_desc.pointer, table, length);
++              table_desc.address = ACPI_TO_INTEGER(table_desc.pointer);
+               break;
+       default:
+               return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
+       }
+-      /*
+-       * Install the new table into the local data structures
+-       */
++      /* Validate table checksum (will not get validated in tb_add_table) */
++
++      status = acpi_tb_verify_checksum(table_desc.pointer, length);
++      if (ACPI_FAILURE(status)) {
++              ACPI_FREE(table_desc.pointer);
++              return_ACPI_STATUS(status);
++      }
++
++      /* Complete the table descriptor */
++
++      table_desc.length = length;
++      table_desc.flags = ACPI_TABLE_ORIGIN_ALLOCATED;
++
++      /* Install the new table into the local data structures */
++
+       status = acpi_tb_add_table(&table_desc, &table_index);
+       if (ACPI_FAILURE(status)) {
+               goto cleanup;
+@@ -379,7 +430,7 @@ acpi_ex_load_op(union acpi_operand_objec
+       /*
+        * Add the table to the namespace.
+        *
+-       * Note: We load the table objects relative to the root of the namespace.
++       * Note: Load the table objects relative to the root of the namespace.
+        * This appears to go against the ACPI specification, but we do it for
+        * compatibility with other ACPI implementations.
+        */
+@@ -415,7 +466,7 @@ acpi_ex_load_op(union acpi_operand_objec
+       cleanup:
+       if (ACPI_FAILURE(status)) {
+-              /* Delete allocated buffer or mapping */
++              /* Delete allocated table buffer */
+               acpi_tb_delete_table(&table_desc);
+       }
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009
+Message-Id: <20090211001554.214956276@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:26 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Lin Ming <ming.m.lin@intel.com>,
+ Bob Moore <robert.moore@intel.com>,
+ Andi Kleen <ak@linux.intel.com>,
+ Len Brown <len.brown@intel.com>,
+ Thomas Renninger <trenn@suse.de>
+Subject: [patch 47/56] ACPICA: Add function to dereference returned reference objects
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=acpica-add-function-to-dereference-returned-reference-objects.patch
+Content-Length: 4502
+Lines: 143
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Lin Ming <ming.m.lin@intel.com>
+
+commit bbc241340681557a16982f4d1840f00963bc05b4 upstream.
+
+Examines the return object from a call to acpi_evaluate_object.
+Any Index or RefOf references are automatically dereferenced in
+an attempt to return something useful (these reference types
+cannot be converted into an external ACPI_OBJECT.)
+Lin Ming, Bob Moore.
+
+http://bugzilla.kernel.org/show_bug.cgi?id=11105
+
+Signed-off-by: Lin Ming <ming.m.lin@intel.com>
+Signed-off-by: Bob Moore <robert.moore@intel.com>
+Signed-off-by: Andi Kleen <ak@linux.intel.com>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Thomas Renninger <trenn@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/namespace/nsxfeval.c |   79 ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 79 insertions(+)
+
+--- a/drivers/acpi/namespace/nsxfeval.c
++++ b/drivers/acpi/namespace/nsxfeval.c
+@@ -45,9 +45,14 @@
+ #include <acpi/acpi.h>
+ #include <acpi/acnamesp.h>
+ #include <acpi/acinterp.h>
++#include <acpi/amlcode.h>
+ #define _COMPONENT          ACPI_NAMESPACE
+ ACPI_MODULE_NAME("nsxfeval")
++
++/* Local prototypes */
++static void acpi_ns_resolve_references(struct acpi_evaluate_info *info);
++
+ #ifdef ACPI_FUTURE_USAGE
+ /*******************************************************************************
+  *
+@@ -69,6 +74,7 @@ ACPI_MODULE_NAME("nsxfeval")
+  *              be valid (non-null)
+  *
+  ******************************************************************************/
++
+ acpi_status
+ acpi_evaluate_object_typed(acpi_handle handle,
+                          acpi_string pathname,
+@@ -283,6 +289,10 @@ acpi_evaluate_object(acpi_handle handle,
+                       if (ACPI_SUCCESS(status)) {
++                              /* Dereference Index and ref_of references */
++
++                              acpi_ns_resolve_references(info);
++
+                               /* Get the size of the returned object */
+                               status =
+@@ -352,6 +362,74 @@ ACPI_EXPORT_SYMBOL(acpi_evaluate_object)
+ /*******************************************************************************
+  *
++ * FUNCTION:    acpi_ns_resolve_references
++ *
++ * PARAMETERS:  Info                    - Evaluation info block
++ *
++ * RETURN:      Info->return_object is replaced with the dereferenced object
++ *
++ * DESCRIPTION: Dereference certain reference objects. Called before an
++ *              internal return object is converted to an external union acpi_object.
++ *
++ * Performs an automatic dereference of Index and ref_of reference objects.
++ * These reference objects are not supported by the union acpi_object, so this is a
++ * last resort effort to return something useful. Also, provides compatibility
++ * with other ACPI implementations.
++ *
++ * NOTE: does not handle references within returned package objects or nested
++ * references, but this support could be added later if found to be necessary.
++ *
++ ******************************************************************************/
++static void acpi_ns_resolve_references(struct acpi_evaluate_info *info)
++{
++      union acpi_operand_object *obj_desc = NULL;
++      struct acpi_namespace_node *node;
++
++      /* We are interested in reference objects only */
++
++      if (ACPI_GET_OBJECT_TYPE(info->return_object) !=
++          ACPI_TYPE_LOCAL_REFERENCE) {
++              return;
++      }
++
++      /*
++       * Two types of references are supported - those created by Index and
++       * ref_of operators. A name reference (AML_NAMEPATH_OP) can be converted
++       * to an union acpi_object, so it is not dereferenced here. A ddb_handle
++       * (AML_LOAD_OP) cannot be dereferenced, nor can it be converted to
++       * an union acpi_object.
++       */
++      switch (info->return_object->reference.opcode) {
++      case AML_INDEX_OP:
++
++              obj_desc = *(info->return_object->reference.where);
++              break;
++
++      case AML_REF_OF_OP:
++
++              node = info->return_object->reference.object;
++              if (node) {
++                      obj_desc = node->object;
++              }
++              break;
++
++      default:
++              return;
++      }
++
++      /* Replace the existing reference object */
++
++      if (obj_desc) {
++              acpi_ut_add_reference(obj_desc);
++              acpi_ut_remove_reference(info->return_object);
++              info->return_object = obj_desc;
++      }
++
++      return;
++}
++
++/*******************************************************************************
++ *
+  * FUNCTION:    acpi_walk_namespace
+  *
+  * PARAMETERS:  Type                - acpi_object_type to search for
+@@ -379,6 +457,7 @@ ACPI_EXPORT_SYMBOL(acpi_evaluate_object)
+  *              function, etc.
+  *
+  ******************************************************************************/
++
+ acpi_status
+ acpi_walk_namespace(acpi_object_type type,
+                   acpi_handle start_object,
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009
+Message-Id: <20090211001554.344662775@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:27 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Yinghai Lu <yhlu.kernel@gmail.com>,
+ Len Brown <len.brown@intel.com>,
+ Thomas Renninger <trenn@suse.de>
+Subject: [patch 48/56] ACPI: dont load acpi_cpufreq if acpi=off
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=acpi-don-t-load-acpi_cpufreq-if-acpi-off.patch
+Content-Length: 674
+Lines: 26
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Yinghai Lu <yhlu.kernel@gmail.com>
+
+commit ee297533279a802eac8b1cbea8e65b24b36a1aac upstream.
+
+Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Thomas Renninger <trenn@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
++++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
+@@ -779,6 +779,9 @@ static int __init acpi_cpufreq_init(void
+ {
+       int ret;
++      if (acpi_disabled)
++              return 0;
++
+       dprintk("acpi_cpufreq_init\n");
+       ret = acpi_cpufreq_early_init();
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009
+Message-Id: <20090211001554.468981369@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:28 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Zhang Rui <rui.zhang@intel.com>,
+ Len Brown <len.brown@intel.com>,
+ Thomas Renninger <trenn@suse.de>
+Subject: [patch 49/56] ACPI: video: Fix reversed brightness behavior on ThinkPad SL series
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=acpi-video-fix-reversed-brightness-behavior-on-thinkpad-sl-series.patch
+Content-Length: 1806
+Lines: 66
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Zhang Rui <rui.zhang@intel.com>
+
+commit 935e5f290ec1eb0f1c15004421f5fd3154380fd5 upstream.
+
+Section B.6.2 of ACPI 3.0b specification that defines _BCL method
+doesn't require the brightness levels returned to be sorted.
+At least ThinkPad SL300 (and probably all IdeaPads) returns the
+array reversed (i.e. bightest levels have lowest indexes), which
+causes the brightness management behave in completely reversed
+manner on these machines (brightness increases when the laptop is
+idle, while the display dims when used).
+
+Sorting the array by brightness level values after reading the list
+fixes the issue.
+
+http://bugzilla.kernel.org/show_bug.cgi?id=12037
+
+Signed-off-by: Zhang Rui <rui.zhang@intel.com>
+Tested-by: Lubomir Rintel <lkundrak@v3.sk>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Thomas Renninger <trenn@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/video.c |   15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+--- a/drivers/acpi/video.c
++++ b/drivers/acpi/video.c
+@@ -36,6 +36,7 @@
+ #include <linux/backlight.h>
+ #include <linux/thermal.h>
+ #include <linux/video_output.h>
++#include <linux/sort.h>
+ #include <asm/uaccess.h>
+ #include <acpi/acpi_bus.h>
+@@ -632,6 +633,16 @@ acpi_video_bus_DOS(struct acpi_video_bus
+ }
+ /*
++ * Simple comparison function used to sort backlight levels.
++ */
++
++static int
++acpi_video_cmp_level(const void *a, const void *b)
++{
++      return *(int *)a - *(int *)b;
++}
++
++/*
+  *  Arg:      
+  *    device  : video output device (LCD, CRT, ..)
+  *
+@@ -682,6 +693,10 @@ acpi_video_init_brightness(struct acpi_v
+               count++;
+       }
++      /* don't sort the first two brightness levels */
++      sort(&br->levels[2], count - 2, sizeof(br->levels[2]),
++              acpi_video_cmp_level, NULL);
++
+       if (count < 2)
+               goto out_free_levels;
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009
+Message-Id: <20090211001554.605589723@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:29 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Dan Williams <dcbw@redhat.com>
+Subject: [patch 50/56] Revert USB: option: add Pantech cards
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=revert-usb-option-add-pantech-cards.patch
+Content-Length: 1575
+Lines: 44
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Greg Kroah-Hartman <gregkh@suse.de>
+
+commit 6b40c0057a7935bcf63a38a924094c7e61d4731f upstream.
+
+Revert 8b6346ec899713a90890c9e832f7eff91ea73504 as these devices really
+work just fine with the cdc-acm driver, as they follow the spec
+properly.
+
+Thanks to Chuck Ebbert for pointing out the problem here.
+
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Cc: Dan Williams <dcbw@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c |    9 ---------
+ 1 file changed, 9 deletions(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -267,12 +267,6 @@ static int  option_send_setup(struct tty
+ #define ERICSSON_VENDOR_ID                    0x0bdb
+ #define ERICSSON_PRODUCT_F3507G                       0x1900
+-/* Pantech products */
+-#define PANTECH_VENDOR_ID                     0x106c
+-#define PANTECH_PRODUCT_PC5740                        0x3701
+-#define PANTECH_PRODUCT_PC5750                        0x3702  /* PX-500 */
+-#define PANTECH_PRODUCT_UM150                 0x3711
+-
+ static struct usb_device_id option_ids[] = {
+       { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
+       { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
+@@ -476,9 +470,6 @@ static struct usb_device_id option_ids[]
+       { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) },
+       { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) },
+       { USB_DEVICE(ERICSSON_VENDOR_ID, ERICSSON_PRODUCT_F3507G) },
+-      { USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_PC5740) },
+-      { USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_PC5750) },
+-      { USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_UM150) },
+       { } /* Terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, option_ids);
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009
+Message-Id: <20090211001554.745610871@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:30 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Oliver Neukum <oneukum@suse.de>
+Subject: [patch 51/56] USB: new id for ti_usb_3410_5052 driver
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=usb-new-id-for-ti_usb_3410_5052-driver.patch
+Content-Length: 1970
+Lines: 53
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Oliver Neukum <oliver@neukum.org>
+
+commit 1a1fab513734b3a4fca1bee8229e5ff7e1cb873c upstream.
+
+This adds a new device id
+
+Signed-off-by: Oliver Neukum <oneukum@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ti_usb_3410_5052.c |    3 +++
+ drivers/usb/serial/ti_usb_3410_5052.h |    2 ++
+ 2 files changed, 5 insertions(+)
+
+--- a/drivers/usb/serial/ti_usb_3410_5052.c
++++ b/drivers/usb/serial/ti_usb_3410_5052.c
+@@ -230,6 +230,7 @@ static unsigned int product_5052_count;
+ static struct usb_device_id ti_id_table_3410[1+TI_EXTRA_VID_PID_COUNT+1] = {
+       { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
+       { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
++      { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
+ };
+ static struct usb_device_id ti_id_table_5052[4+TI_EXTRA_VID_PID_COUNT+1] = {
+@@ -237,6 +238,7 @@ static struct usb_device_id ti_id_table_
+       { USB_DEVICE(TI_VENDOR_ID, TI_5152_BOOT_PRODUCT_ID) },
+       { USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) },
+       { USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) },
++      { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
+ };
+ static struct usb_device_id ti_id_table_combined[] = {
+@@ -246,6 +248,7 @@ static struct usb_device_id ti_id_table_
+       { USB_DEVICE(TI_VENDOR_ID, TI_5152_BOOT_PRODUCT_ID) },
+       { USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) },
+       { USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) },
++      { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
+       { }
+ };
+--- a/drivers/usb/serial/ti_usb_3410_5052.h
++++ b/drivers/usb/serial/ti_usb_3410_5052.h
+@@ -27,7 +27,9 @@
+ /* Vendor and product ids */
+ #define TI_VENDOR_ID                  0x0451
++#define IBM_VENDOR_ID                 0x04b3
+ #define TI_3410_PRODUCT_ID            0x3410
++#define IBM_4543_PRODUCT_ID           0x4543
+ #define TI_3410_EZ430_ID              0xF430  /* TI ez430 development tool */
+ #define TI_5052_BOOT_PRODUCT_ID               0x5052  /* no EEPROM, no firmware */
+ #define TI_5152_BOOT_PRODUCT_ID               0x5152  /* no EEPROM, no firmware */
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009
+Message-Id: <20090211001554.878178698@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:31 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Dirk De Schepper <ddeschepper@nvtl.com>,
+ Matthias Urlichs <matthias@urlichs.de>
+Subject: [patch 52/56] USB: option: New mobile broadband modems to be supported
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=usb-option-new-mobile-broadband-modems-to-be-supported.patch
+Content-Length: 9263
+Lines: 129
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Dirk De Schepper <ddeschepper@nvtl.com>
+
+commit c200b9c9e8ec93cdd262cfa1699ad92e883d4876 upstream.
+
+- New Novatel and Dell mobile broadband modem products added
+ - Dell pid variables used in stead of numerical PIDs for known
+   products
+
+Signed-off-by: Dirk De Schepper <ddeschepper@nvtl.com>
+Signed-off-by: Matthias Urlichs <matthias@urlichs.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c |   84 +++++++++++++++++++++++++++++---------------
+ 1 file changed, 56 insertions(+), 28 deletions(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -192,14 +192,15 @@ static int  option_send_setup(struct tty
+ #define NOVATELWIRELESS_PRODUCT_MC950D                0x4400
+ /* FUTURE NOVATEL PRODUCTS */
+-#define NOVATELWIRELESS_PRODUCT_EVDO_1                0x6000
+-#define NOVATELWIRELESS_PRODUCT_HSPA_1                0x7000
+-#define NOVATELWIRELESS_PRODUCT_EMBEDDED_1    0x8000
+-#define NOVATELWIRELESS_PRODUCT_GLOBAL_1      0x9000
+-#define NOVATELWIRELESS_PRODUCT_EVDO_2                0x6001
+-#define NOVATELWIRELESS_PRODUCT_HSPA_2                0x7001
+-#define NOVATELWIRELESS_PRODUCT_EMBEDDED_2    0x8001
+-#define NOVATELWIRELESS_PRODUCT_GLOBAL_2      0x9001
++#define NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED        0X6000
++#define NOVATELWIRELESS_PRODUCT_EVDO_HIGHSPEED        0X6001
++#define NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED        0X7000
++#define NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED        0X7001
++#define NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED       0X8000
++#define NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_HIGHSPEED       0X8001
++#define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED       0X9000
++#define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED       0X9001
++#define NOVATELWIRELESS_PRODUCT_GLOBAL                0XA001
+ /* AMOI PRODUCTS */
+ #define AMOI_VENDOR_ID                                0x1614
+@@ -209,6 +210,27 @@ static int  option_send_setup(struct tty
+ #define DELL_VENDOR_ID                                0x413C
++/* Dell modems */
++#define DELL_PRODUCT_5700_MINICARD            0x8114
++#define DELL_PRODUCT_5500_MINICARD            0x8115
++#define DELL_PRODUCT_5505_MINICARD            0x8116
++#define DELL_PRODUCT_5700_EXPRESSCARD         0x8117
++#define DELL_PRODUCT_5510_EXPRESSCARD         0x8118
++
++#define DELL_PRODUCT_5700_MINICARD_SPRINT     0x8128
++#define DELL_PRODUCT_5700_MINICARD_TELUS      0x8129
++
++#define DELL_PRODUCT_5720_MINICARD_VZW                0x8133
++#define DELL_PRODUCT_5720_MINICARD_SPRINT     0x8134
++#define DELL_PRODUCT_5720_MINICARD_TELUS      0x8135
++#define DELL_PRODUCT_5520_MINICARD_CINGULAR   0x8136
++#define DELL_PRODUCT_5520_MINICARD_GENERIC_L  0x8137
++#define DELL_PRODUCT_5520_MINICARD_GENERIC_I  0x8138
++
++#define DELL_PRODUCT_5730_MINICARD_SPRINT     0x8180
++#define DELL_PRODUCT_5730_MINICARD_TELUS      0x8181
++#define DELL_PRODUCT_5730_MINICARD_VZW                0x8182
++
+ #define KYOCERA_VENDOR_ID                     0x0c88
+ #define KYOCERA_PRODUCT_KPC650                        0x17da
+ #define KYOCERA_PRODUCT_KPC680                        0x180a
+@@ -377,31 +399,37 @@ static struct usb_device_id option_ids[]
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */
+-      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_1) }, /* Novatel EVDO product */
+-      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_1) }, /* Novatel HSPA product */
+-      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_1) }, /* Novatel Embedded product */
+-      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_1) }, /* Novatel Global product */
+-      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_2) }, /* Novatel EVDO product */
+-      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_2) }, /* Novatel HSPA product */
+-      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_2) }, /* Novatel Embedded product */
+-      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_2) }, /* Novatel Global product */
++      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED) }, /* Novatel EVDO product */
++      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED) }, /* Novatel HSPA product */
++      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED) }, /* Novatel EVDO Embedded product */
++      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED) }, /* Novatel HSPA Embedded product */
++      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_HIGHSPEED) }, /* Novatel EVDO product */
++      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED) }, /* Novatel HSPA product */
++      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_HIGHSPEED) }, /* Novatel EVDO Embedded product */
++      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED) }, /* Novatel HSPA Embedded product */
++      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL) }, /* Novatel Global product */
+       { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) },
+       { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) },
+       { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H02) },
+-      { USB_DEVICE(DELL_VENDOR_ID, 0x8114) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */
+-      { USB_DEVICE(DELL_VENDOR_ID, 0x8115) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
+-      { USB_DEVICE(DELL_VENDOR_ID, 0x8116) }, /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
+-      { USB_DEVICE(DELL_VENDOR_ID, 0x8117) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO ExpressCard == Novatel Merlin XV620 CDMA/EV-DO */
+-      { USB_DEVICE(DELL_VENDOR_ID, 0x8118) }, /* Dell Wireless 5510 Mobile Broadband HSDPA ExpressCard == Novatel Merlin XU870 HSDPA/3G */
+-      { USB_DEVICE(DELL_VENDOR_ID, 0x8128) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite E720 CDMA/EV-DO */
+-      { USB_DEVICE(DELL_VENDOR_ID, 0x8129) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite ET620 CDMA/EV-DO */
+-      { USB_DEVICE(DELL_VENDOR_ID, 0x8133) }, /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */
+-      { USB_DEVICE(DELL_VENDOR_ID, 0x8136) }, /* Dell Wireless HSDPA 5520 == Novatel Expedite EU860D */
+-      { USB_DEVICE(DELL_VENDOR_ID, 0x8137) }, /* Dell Wireless HSDPA 5520 */
+-      { USB_DEVICE(DELL_VENDOR_ID, 0x8138) }, /* Dell Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard */
+-      { USB_DEVICE(DELL_VENDOR_ID, 0x8147) }, /* Dell Wireless 5530 Mobile Broadband (3G HSPA) Mini-Card */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_MINICARD) },             /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5500_MINICARD) },             /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5505_MINICARD) },             /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_EXPRESSCARD) },          /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO ExpressCard == Novatel Merlin XV620 CDMA/EV-DO */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5510_EXPRESSCARD) },          /* Dell Wireless 5510 Mobile Broadband HSDPA ExpressCard == Novatel Merlin XU870 HSDPA/3G */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_MINICARD_SPRINT) },      /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite E720 CDMA/EV-DO */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_MINICARD_TELUS) },       /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite ET620 CDMA/EV-DO */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5720_MINICARD_VZW) },         /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5720_MINICARD_SPRINT) },      /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5720_MINICARD_TELUS) },       /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_CINGULAR) },    /* Dell Wireless HSDPA 5520 == Novatel Expedite EU860D */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_L) },   /* Dell Wireless HSDPA 5520 */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_I) },   /* Dell Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard */
++      { USB_DEVICE(DELL_VENDOR_ID, 0x8147) },                                 /* Dell Wireless 5530 Mobile Broadband (3G HSPA) Mini-Card */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_SPRINT) },      /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_TELUS) },       /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
++      { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_VZW) },         /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
+       { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) },   /* ADU-E100, ADU-310 */
+       { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
+       { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) },
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:55 2009
+Message-Id: <20090211001555.010135692@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:32 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Oliver Neukum <oneukum@suse.de>,
+ Chris Adams <cmadams@hiwaay.net>
+Subject: [patch 53/56] USB: two more usb ids for ti_usb_3410_5052
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=usb-two-more-usb-ids-for-ti_usb_3410_5052.patch
+Content-Length: 2824
+Lines: 66
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Oliver Neukum <oliver@neukum.org>
+
+commit 97dcf0416e390fc5c997d4ea60e6f975c7b7a1c3 upstream.
+
+This patch adds device IDs and balances the counts to make the
+hot ID additioning mechanism work.
+
+Signed-off-by: Oliver Neukum <oneukum@suse.de>
+Cc: Chris Adams <cmadams@hiwaay.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ti_usb_3410_5052.c |   10 +++++++---
+ drivers/usb/serial/ti_usb_3410_5052.h |    2 ++
+ 2 files changed, 9 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/serial/ti_usb_3410_5052.c
++++ b/drivers/usb/serial/ti_usb_3410_5052.c
+@@ -227,13 +227,15 @@ static unsigned int product_5052_count;
+ /* the array dimension is the number of default entries plus */
+ /* TI_EXTRA_VID_PID_COUNT user defined entries plus 1 terminating */
+ /* null entry */
+-static struct usb_device_id ti_id_table_3410[1+TI_EXTRA_VID_PID_COUNT+1] = {
++static struct usb_device_id ti_id_table_3410[10+TI_EXTRA_VID_PID_COUNT+1] = {
+       { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
+       { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
+       { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
++      { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) },
++      { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) },
+ };
+-static struct usb_device_id ti_id_table_5052[4+TI_EXTRA_VID_PID_COUNT+1] = {
++static struct usb_device_id ti_id_table_5052[5+TI_EXTRA_VID_PID_COUNT+1] = {
+       { USB_DEVICE(TI_VENDOR_ID, TI_5052_BOOT_PRODUCT_ID) },
+       { USB_DEVICE(TI_VENDOR_ID, TI_5152_BOOT_PRODUCT_ID) },
+       { USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) },
+@@ -241,7 +243,7 @@ static struct usb_device_id ti_id_table_
+       { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
+ };
+-static struct usb_device_id ti_id_table_combined[] = {
++static struct usb_device_id ti_id_table_combined[14+2*TI_EXTRA_VID_PID_COUNT+1] = {
+       { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
+       { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
+       { USB_DEVICE(TI_VENDOR_ID, TI_5052_BOOT_PRODUCT_ID) },
+@@ -249,6 +251,8 @@ static struct usb_device_id ti_id_table_
+       { USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) },
+       { USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) },
+       { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
++      { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) },
++      { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) },
+       { }
+ };
+--- a/drivers/usb/serial/ti_usb_3410_5052.h
++++ b/drivers/usb/serial/ti_usb_3410_5052.h
+@@ -30,6 +30,8 @@
+ #define IBM_VENDOR_ID                 0x04b3
+ #define TI_3410_PRODUCT_ID            0x3410
+ #define IBM_4543_PRODUCT_ID           0x4543
++#define IBM_454B_PRODUCT_ID           0x454b
++#define IBM_454C_PRODUCT_ID           0x454c
+ #define TI_3410_EZ430_ID              0xF430  /* TI ez430 development tool */
+ #define TI_5052_BOOT_PRODUCT_ID               0x5052  /* no EEPROM, no firmware */
+ #define TI_5152_BOOT_PRODUCT_ID               0x5152  /* no EEPROM, no firmware */
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:55 2009
+Message-Id: <20090211001555.146015811@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:33 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Alan Stern <stern@rowland.harvard.edu>
+Subject: [patch 54/56] USB: usb-storage: add Pentax to the bad-vendor list
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=usb-usb-storage-add-pentax-to-the-bad-vendor-list.patch
+Content-Length: 1979
+Lines: 60
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 506e9469833c66ed6bb9acd902e208f7301b6adb upstream.
+
+This patch (as1202) adds Pentax to usb-storage's list of bad vendors
+whose devices always need the CAPACITY_HEURISTICS flag.  This is in
+addition to the existing entries: Nokia, Nikon, and Motorola.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Tested-by: Virgo Pärna <virgo.parna@mail.ee>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/scsiglue.c     |    2 ++
+ drivers/usb/storage/unusual_devs.h |   15 ---------------
+ 2 files changed, 2 insertions(+), 15 deletions(-)
+
+--- a/drivers/usb/storage/scsiglue.c
++++ b/drivers/usb/storage/scsiglue.c
+@@ -64,6 +64,7 @@
+  */
+ #define VENDOR_ID_NOKIA               0x0421
+ #define VENDOR_ID_NIKON               0x04b0
++#define VENDOR_ID_PENTAX      0x0a17
+ #define VENDOR_ID_MOTOROLA    0x22b8
+ /***********************************************************************
+@@ -150,6 +151,7 @@ static int slave_configure(struct scsi_d
+               switch (le16_to_cpu(us->pusb_dev->descriptor.idVendor)) {
+               case VENDOR_ID_NOKIA:
+               case VENDOR_ID_NIKON:
++              case VENDOR_ID_PENTAX:
+               case VENDOR_ID_MOTOROLA:
+                       if (!(us->fflags & (US_FL_FIX_CAPACITY |
+                                       US_FL_CAPACITY_OK)))
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -1381,21 +1381,6 @@ UNUSUAL_DEV( 0x0a17, 0x0004, 0x1000, 0x1
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
+               US_FL_FIX_INQUIRY ),
+-
+-/* Submitted by Per Winkvist <per.winkvist@uk.com> */
+-UNUSUAL_DEV( 0x0a17, 0x006, 0x0000, 0xffff,
+-              "Pentax",
+-              "Optio S/S4",
+-              US_SC_DEVICE, US_PR_DEVICE, NULL,
+-              US_FL_FIX_INQUIRY ),
+-
+-/* Reported by Jaak Ristioja <Ristioja@gmail.com> */
+-UNUSUAL_DEV( 0x0a17, 0x006e, 0x0100, 0x0100,
+-              "Pentax",
+-              "K10D",
+-              US_SC_DEVICE, US_PR_DEVICE, NULL,
+-              US_FL_FIX_CAPACITY ),
+-
+ /* These are virtual windows driver CDs, which the zd1211rw driver
+  * automatically converts into WLAN devices. */
+ UNUSUAL_DEV( 0x0ace, 0x2011, 0x0101, 0x0101,
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:55 2009
+Message-Id: <20090211001555.278411130@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:34 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Vlad Yasevich <vladislav.yasevich@hp.com>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 55/56] sctp: Fix another socket race during accept/peeloff
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=sctp-fix-another-socket-race-during-accept-peeloff.patch
+Content-Length: 2010
+Lines: 55
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Vlad Yasevich <vladislav.yasevich@hp.com>
+
+commit ae53b5bd77719fed58086c5be60ce4f22bffe1c6 upstream.
+
+There is a race between sctp_rcv() and sctp_accept() where we
+have moved the association from the listening socket to the
+accepted socket, but sctp_rcv() processing cached the old
+socket and continues to use it.
+
+The easy solution is to check for the socket mismatch once we've
+grabed the socket lock.  If we hit a mis-match, that means
+that were are currently holding the lock on the listening socket,
+but the association is refrencing a newly accepted socket.  We need
+to drop the lock on the old socket and grab the lock on the new one.
+
+A more proper solution might be to create accepted sockets when
+the new association is established, similar to TCP.  That would
+eliminate the race for 1-to-1 style sockets, but it would still
+existing for 1-to-many sockets where a user wished to peeloff an
+association.  For now, we'll live with this easy solution as
+it addresses the problem.
+
+Reported-by: Michal Hocko <mhocko@suse.cz>
+Reported-by: Karsten Keil <kkeil@suse.de>
+Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/sctp/input.c |   13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+--- a/net/sctp/input.c
++++ b/net/sctp/input.c
+@@ -249,6 +249,19 @@ int sctp_rcv(struct sk_buff *skb)
+        */
+       sctp_bh_lock_sock(sk);
++      if (sk != rcvr->sk) {
++              /* Our cached sk is different from the rcvr->sk.  This is
++               * because migrate()/accept() may have moved the association
++               * to a new socket and released all the sockets.  So now we
++               * are holding a lock on the old socket while the user may
++               * be doing something with the new socket.  Switch our veiw
++               * of the current sk.
++               */
++              sctp_bh_unlock_sock(sk);
++              sk = rcvr->sk;
++              sctp_bh_lock_sock(sk);
++      }
++
+       if (sock_owned_by_user(sk)) {
+               SCTP_INC_STATS_BH(SCTP_MIB_IN_PKT_BACKLOG);
+               sctp_add_backlog(sk, skb);
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:55 2009
+Message-Id: <20090211001555.417477757@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:15:35 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Dean Nelson <dcn@sgi.com>,
+ Ingo Molnar <mingo@elte.hu>
+Subject: [patch 56/56] genirq: NULL struct irq_descs member name in dynamic_irq_cleanup()
+References: <20090211001439.873435357@mini.kroah.org>
+Content-Disposition: inline; filename=genirq-null-struct-irq_desc-s-member-name-in-dynamic_irq_cleanup.patch
+Content-Length: 1223
+Lines: 36
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+------------------
+
+From: Dean Nelson <dcn@sgi.com>
+
+commit b6f3b7803a9231eddc36d0a2a6d2d8105ef89344 upstream.
+
+If the member 'name' of the irq_desc structure happens to point to a
+character string that is resident within a kernel module, problems ensue
+if that module is rmmod'd (at which time dynamic_irq_cleanup() is called)
+and then later show_interrupts() is called by someone.
+
+It is also not a good thing if the character string resided in kmalloc'd
+space that has been kfree'd (after having called dynamic_irq_cleanup()).
+dynamic_irq_cleanup() fails to NULL the 'name' member and
+show_interrupts() references it on a few architectures (like h8300, sh and
+x86).
+
+Signed-off-by: Dean Nelson <dcn@sgi.com>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/irq/chip.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/kernel/irq/chip.c
++++ b/kernel/irq/chip.c
+@@ -78,6 +78,7 @@ void dynamic_irq_cleanup(unsigned int ir
+       desc->chip_data = NULL;
+       desc->handle_irq = handle_bad_irq;
+       desc->chip = &no_irq_chip;
++      desc->name = NULL;
+       spin_unlock_irqrestore(&desc->lock, flags);
+ }
+
+
+From gregkh@mini.kroah.org Tue Feb 10 16:15:47 2009
+Message-Id: <20090211001439.873435357@mini.kroah.org>
+User-Agent: quilt/0.47-1
+Date: Tue, 10 Feb 2009 16:14:39 -0800
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [patch 00/56] 2.6.27-stable review
+Status: RO
+Content-Length: 4272
+Lines: 84
+
+This is the start of the stable review cycle for the 2.6.27.16 release.
+There are 56 patches in this series, all will be posted as a response to
+this one.  If anyone has any issues with these being applied, please let
+us know.  If anyone is a maintainer of the proper subsystem, and wants
+to add a Signed-off-by: line to the patch, please respond with it.
+
+These patches are sent out with a number of different people on the Cc:
+line.  If you wish to be a reviewer, please email stable@kernel.org to
+add your name to the list.  If you want to be off the reviewer list,
+also email us.
+
+Responses should be made by Thursday, February 12 19:00:00 UTC.
+Anything received after that time might be too late.
+
+The whole patch series can be found in one patch at:
+       kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.27.16-rc1.gz
+and the diffstat can be found below.
+
+
+thanks,
+
+greg k-h
+
+
+ Documentation/filesystems/sysfs-pci.txt    |   13 +++-
+ Makefile                                   |    2 +-
+ arch/ia64/sn/kernel/io_acpi_init.c         |    2 +-
+ arch/ia64/sn/kernel/io_init.c              |    2 +-
+ arch/x86/kernel/apic_32.c                  |    2 +-
+ arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c |    3 +
+ arch/x86/mm/fault.c                        |    8 ++-
+ drivers/acpi/dock.c                        |    8 ++-
+ drivers/acpi/executer/exconfig.c           |  113 ++++++++++++++++++++--------
+ drivers/acpi/namespace/nsxfeval.c          |   79 +++++++++++++++++++
+ drivers/acpi/tables.c                      |    7 ++-
+ drivers/acpi/tables/tbutils.c              |    7 +-
+ drivers/acpi/video.c                       |   29 ++++++-
+ drivers/char/agp/intel-agp.c               |   17 +++-
+ drivers/char/vt.c                          |    5 +-
+ drivers/firewire/fw-ohci.c                 |    2 +-
+ drivers/firewire/fw-sbp2.c                 |   43 ++++++----
+ drivers/ieee1394/ohci1394.h                |    2 +-
+ drivers/ieee1394/sbp2.c                    |   10 +++
+ drivers/md/dm-mpath.c                      |    4 +-
+ drivers/md/md.c                            |   36 ++++++---
+ drivers/misc/eeepc-laptop.c                |    3 +-
+ drivers/misc/sgi-xp/xpc.h                  |    5 +-
+ drivers/misc/sgi-xp/xpc_uv.c               |   11 +--
+ drivers/net/e1000/e1000_main.c             |    6 +-
+ drivers/net/usb/hso.c                      |    2 +-
+ drivers/net/wireless/ipw2200.c             |   28 +++++--
+ drivers/net/wireless/ipw2200.h             |    1 +
+ drivers/pci/pci-sysfs.c                    |    4 +-
+ drivers/pci/pcie/aspm.c                    |    4 +-
+ drivers/pci/rom.c                          |    8 +-
+ drivers/serial/8250_pci.c                  |   17 ++++
+ drivers/usb/serial/option.c                |   93 ++++++++++++++---------
+ drivers/usb/serial/ti_usb_3410_5052.c      |   13 +++-
+ drivers/usb/serial/ti_usb_3410_5052.h      |    4 +
+ drivers/usb/storage/scsiglue.c             |    2 +
+ drivers/usb/storage/unusual_devs.h         |   15 ----
+ drivers/video/console/fbcon.c              |   39 +++-------
+ drivers/video/console/mdacon.c             |    2 +-
+ drivers/video/console/sticon.c             |    4 +-
+ drivers/video/console/vgacon.c             |    4 +-
+ fs/binfmt_elf.c                            |   14 +++-
+ fs/seq_file.c                              |  115 ++++++++++++++--------------
+ fs/xfs/linux-2.6/xfs_buf.c                 |    3 +-
+ include/acpi/pdc_intel.h                   |    2 +
+ include/linux/console_struct.h             |    1 -
+ include/linux/module.h                     |    1 -
+ include/linux/pci.h                        |    2 +-
+ include/linux/pci_ids.h                    |    1 +
+ include/linux/wait.h                       |   11 ++-
+ ipc/shm.c                                  |    4 +
+ kernel/irq/chip.c                          |    1 +
+ kernel/sched.c                             |    4 +-
+ kernel/wait.c                              |   59 +++++++++++++--
+ mm/swap.c                                  |   13 ---
+ net/sctp/input.c                           |   13 +++
+ net/sunrpc/svcsock.c                       |    9 ++-
+ sound/pci/hda/patch_realtek.c              |    4 +
+ sound/usb/usbaudio.c                       |    1 +
+ 59 files changed, 622 insertions(+), 295 deletions(-)
+
similarity index 100%
rename from queue-2.6.27/series
rename to review-2.6.27/series