]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
start 2.6.27.7-rc2 review cycle
authorGreg Kroah-Hartman <gregkh@suse.de>
Mon, 17 Nov 2008 07:18:16 +0000 (23:18 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 17 Nov 2008 07:18:16 +0000 (23:18 -0800)
48 files changed:
review-2.6.27/acpi-avoid-empty-file-name-in-sysfs.patch [moved from queue-2.6.27/acpi-avoid-empty-file-name-in-sysfs.patch with 100% similarity]
review-2.6.27/acpi-ec-don-t-do-transaction-from-gpe-handler-in-poll-mode.patch [moved from queue-2.6.27/acpi-ec-don-t-do-transaction-from-gpe-handler-in-poll-mode.patch with 100% similarity]
review-2.6.27/acpi-ec-lower-interrupt-storm-treshold.patch [moved from queue-2.6.27/acpi-ec-lower-interrupt-storm-treshold.patch with 100% similarity]
review-2.6.27/acpi-ec-make-kernel-messages-more-useful-when-gpe-storm-is-detected.patch [moved from queue-2.6.27/acpi-ec-make-kernel-messages-more-useful-when-gpe-storm-is-detected.patch with 100% similarity]
review-2.6.27/acpi-ec-restart-failed-command.patch [moved from queue-2.6.27/acpi-ec-restart-failed-command.patch with 100% similarity]
review-2.6.27/acpi-ec-revert-msleep-patch.patch [moved from queue-2.6.27/acpi-ec-revert-msleep-patch.patch with 100% similarity]
review-2.6.27/acpi-ec-wait-for-last-write-gpe.patch [moved from queue-2.6.27/acpi-ec-wait-for-last-write-gpe.patch with 100% similarity]
review-2.6.27/acpi-load-device-driver-according-to-the-status-of-acpi-device.patch [moved from queue-2.6.27/acpi-load-device-driver-according-to-the-status-of-acpi-device.patch with 100% similarity]
review-2.6.27/arm-5329-1-feroceon-fix-feroceon_l2_inv_range.patch [moved from queue-2.6.27/arm-5329-1-feroceon-fix-feroceon_l2_inv_range.patch with 100% similarity]
review-2.6.27/ath5k-fix-reset-sequence-for-ar5212-in-general-and-rf5111-in-particular.patch [moved from queue-2.6.27/ath5k-fix-reset-sequence-for-ar5212-in-general-and-rf5111-in-particular.patch with 100% similarity]
review-2.6.27/ath5k-fix-suspend-related-oops-on-rmmod.patch [moved from queue-2.6.27/ath5k-fix-suspend-related-oops-on-rmmod.patch with 100% similarity]
review-2.6.27/block-fix-nr_phys_segments-miscalculation-bug.patch [moved from queue-2.6.27/block-fix-nr_phys_segments-miscalculation-bug.patch with 100% similarity]
review-2.6.27/bnx2x-calling-netif_carrier_off-at-the-end-of-the-probe.patch [moved from queue-2.6.27/bnx2x-calling-netif_carrier_off-at-the-end-of-the-probe.patch with 100% similarity]
review-2.6.27/bnx2x-pci-configuration-bug-on-big-endian.patch [moved from queue-2.6.27/bnx2x-pci-configuration-bug-on-big-endian.patch with 100% similarity]
review-2.6.27/bnx2x-removing-the-pmf-indication-when-unloading.patch [moved from queue-2.6.27/bnx2x-removing-the-pmf-indication-when-unloading.patch with 100% similarity]
review-2.6.27/dm-raid1-flush-workqueue-before-destruction.patch [moved from queue-2.6.27/dm-raid1-flush-workqueue-before-destruction.patch with 100% similarity]
review-2.6.27/fix-broken-ownership-of-proc-sys-files.patch [moved from queue-2.6.27/fix-broken-ownership-of-proc-sys-files.patch with 100% similarity]
review-2.6.27/fix-platform-drivers-that-crash-on-suspend-resume.patch [moved from queue-2.6.27/fix-platform-drivers-that-crash-on-suspend-resume.patch with 100% similarity]
review-2.6.27/hostap-pad-the-skb-cb-usage-in-lieu-of-a-proper-fix.patch [moved from queue-2.6.27/hostap-pad-the-skb-cb-usage-in-lieu-of-a-proper-fix.patch with 100% similarity]
review-2.6.27/hugetlb-make-unmap_ref_private-multi-size-aware.patch [moved from queue-2.6.27/hugetlb-make-unmap_ref_private-multi-size-aware.patch with 100% similarity]
review-2.6.27/input-alps-add-signature-for-dualpoint-found-in-dell-latitude-e6500.patch [moved from queue-2.6.27/input-alps-add-signature-for-dualpoint-found-in-dell-latitude-e6500.patch with 100% similarity]
review-2.6.27/iwlagn-avoid-sleep-in-softirq-context.patch [moved from queue-2.6.27/iwlagn-avoid-sleep-in-softirq-context.patch with 100% similarity]
review-2.6.27/kbuild-fixup-deb-pkg-target-to-generate-separate-firmware-deb.patch [moved from queue-2.6.27/kbuild-fixup-deb-pkg-target-to-generate-separate-firmware-deb.patch with 100% similarity]
review-2.6.27/m68k-fix-off-by-one-in-m68k_setup_user_interrupt.patch [moved from queue-2.6.27/m68k-fix-off-by-one-in-m68k_setup_user_interrupt.patch with 100% similarity]
review-2.6.27/mbox [new file with mode: 0644]
review-2.6.27/memory-hotplug-fix-page_zone-calculation-in-test_pages_isolated.patch [moved from queue-2.6.27/memory-hotplug-fix-page_zone-calculation-in-test_pages_isolated.patch with 100% similarity]
review-2.6.27/net-fix-proc-net-snmp-as-memory-corruptor.patch [moved from queue-2.6.27/net-fix-proc-net-snmp-as-memory-corruptor.patch with 100% similarity]
review-2.6.27/powerpc-mpic-fix-regression-caused-by-change-of-default-irq-affinity.patch [moved from queue-2.6.27/powerpc-mpic-fix-regression-caused-by-change-of-default-irq-affinity.patch with 100% similarity]
review-2.6.27/r8169-select-mii-in-kconfig.patch [moved from queue-2.6.27/r8169-select-mii-in-kconfig.patch with 100% similarity]
review-2.6.27/rtl8187-add-abocom-usb-id.patch [moved from queue-2.6.27/rtl8187-add-abocom-usb-id.patch with 100% similarity]
review-2.6.27/rtl8187-support-for-sitecom-wl-168-0001-v4.patch [moved from queue-2.6.27/rtl8187-support-for-sitecom-wl-168-0001-v4.patch with 100% similarity]
review-2.6.27/s390-cpu-topology-fix-locking.patch [moved from queue-2.6.27/s390-cpu-topology-fix-locking.patch with 100% similarity]
review-2.6.27/scsi-dpt_i2o-fix-transferred-data-length-for-scsi_set_resid.patch [moved from queue-2.6.27/scsi-dpt_i2o-fix-transferred-data-length-for-scsi_set_resid.patch with 100% similarity]
review-2.6.27/scsi-qla2xxx-correct-atmel-flash-part-handling.patch [moved from queue-2.6.27/scsi-qla2xxx-correct-atmel-flash-part-handling.patch with 100% similarity]
review-2.6.27/scsi-qla2xxx-do-not-honour-max_vports-from-firmware-for-2g-isps-and-below.patch [moved from queue-2.6.27/scsi-qla2xxx-do-not-honour-max_vports-from-firmware-for-2g-isps-and-below.patch with 100% similarity]
review-2.6.27/scsi-qla2xxx-return-a-failed-status-when-abort-mailbox-command-fails.patch [moved from queue-2.6.27/scsi-qla2xxx-return-a-failed-status-when-abort-mailbox-command-fails.patch with 100% similarity]
review-2.6.27/series [moved from queue-2.6.27/series with 100% similarity]
review-2.6.27/sony-laptop-ignore-missing-_dis-method-on-pic-device.patch [moved from queue-2.6.27/sony-laptop-ignore-missing-_dis-method-on-pic-device.patch with 100% similarity]
review-2.6.27/touch_mnt_namespace-when-the-mount-flags-change.patch [moved from queue-2.6.27/touch_mnt_namespace-when-the-mount-flags-change.patch with 100% similarity]
review-2.6.27/usb-cdc-acm.c-fix-recursive-lock-in-acm_start_wb-error-path.patch [moved from queue-2.6.27/usb-cdc-acm.c-fix-recursive-lock-in-acm_start_wb-error-path.patch with 100% similarity]
review-2.6.27/usb-don-t-register-endpoints-for-interfaces-that-are-going-away.patch [moved from queue-2.6.27/usb-don-t-register-endpoints-for-interfaces-that-are-going-away.patch with 100% similarity]
review-2.6.27/usb-ehci-fix-divide-by-zero-bug.patch [moved from queue-2.6.27/usb-ehci-fix-divide-by-zero-bug.patch with 100% similarity]
review-2.6.27/usb-ehci-fix-handling-of-dead-controllers.patch [moved from queue-2.6.27/usb-ehci-fix-handling-of-dead-controllers.patch with 100% similarity]
review-2.6.27/usb-fix-ps3-usb-shutdown-problems.patch [moved from queue-2.6.27/usb-fix-ps3-usb-shutdown-problems.patch with 100% similarity]
review-2.6.27/usb-gadget-cdc-acm-deadlock-fix.patch [moved from queue-2.6.27/usb-gadget-cdc-acm-deadlock-fix.patch with 100% similarity]
review-2.6.27/usb-remove-optional-bus-bindings-in-isp1760-fixing-runtime-warning.patch [moved from queue-2.6.27/usb-remove-optional-bus-bindings-in-isp1760-fixing-runtime-warning.patch with 99% similarity]
review-2.6.27/usb-unusual_devs-entry-for-argosy-usb-mass-storage-interface.patch [moved from queue-2.6.27/usb-unusual_devs-entry-for-argosy-usb-mass-storage-interface.patch with 100% similarity]
review-2.6.27/v4l-dvb-cve-2008-5033-fix-oops-on-tvaudio-when-controlling-bass-treble.patch [moved from queue-2.6.27/v4l-dvb-cve-2008-5033-fix-oops-on-tvaudio-when-controlling-bass-treble.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..ecb95a2
--- /dev/null
@@ -0,0 +1,4966 @@
+From greg@blue.kroah.org Sun Nov 16 23:09:37 2008
+Message-Id: <20081117070937.442748273@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Kay Sievers <kay.sievers@vrfy.org>,
+ Neil Brown <neilb@suse.de>,
+ Dan Williams <dan.j.williams@intel.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 01/46] touch_mnt_namespace when the mount flags change
+Content-Disposition: inline; filename=touch_mnt_namespace-when-the-mount-flags-change.patch
+Content-Length: 931
+Lines: 36
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Dan Williams <dan.j.williams@intel.com>
+
+commit 0e55a7cca4b66f625d67b292f80b6a976e77c51b upstream
+
+Daemons that need to be launched while the rootfs is read-only can now
+poll /proc/mounts to be notified when their O_RDWR requests may no
+longer end in EROFS.
+
+Cc: Kay Sievers <kay.sievers@vrfy.org>
+Cc: Neil Brown <neilb@suse.de>
+Signed-off-by: Dan Williams <dan.j.williams@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/namespace.c |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/fs/namespace.c
++++ b/fs/namespace.c
+@@ -1553,8 +1553,13 @@ static noinline int do_remount(struct na
+       if (!err)
+               nd->path.mnt->mnt_flags = mnt_flags;
+       up_write(&sb->s_umount);
+-      if (!err)
++      if (!err) {
+               security_sb_post_remount(nd->path.mnt, flags, data);
++
++              spin_lock(&vfsmount_lock);
++              touch_mnt_namespace(nd->path.mnt->mnt_ns);
++              spin_unlock(&vfsmount_lock);
++      }
+       return err;
+ }
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:38 2008
+Message-Id: <20081117070937.826559973@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ "John W. Linville" <linville@tuxdriver.com>,
+ Holger Macht <hmacht@novell.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 02/46] iwlagn: avoid sleep in softirq context
+Content-Disposition: inline; filename=iwlagn-avoid-sleep-in-softirq-context.patch
+Content-Length: 1358
+Lines: 42
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: John W. Linville <linville@tuxdriver.com>
+
+commit 964d2777438bf7687324243d38ade538d9bbfe3c upstream.
+
+__ieee80211_tasklet_handler -> __ieee80211_rx ->
+       __ieee80211_rx_handle_packet -> ieee80211_invoke_rx_handlers ->
+       ieee80211_rx_h_decrypt -> ieee80211_crypto_tkip_decrypt ->
+       ieee80211_tkip_decrypt_data -> iwl4965_mac_update_tkip_key ->
+       iwl_scan_cancel_timeout -> msleep
+
+Ooops!
+
+Avoid the sleep by changing iwl_scan_cancel_timeout with
+iwl_scan_cancel and simply returning on failure if the scan persists.
+This will cause hardware decryption to fail and we'll handle a few more
+frames with software decryption.
+
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Cc: Holger Macht <hmacht@novell.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/iwlwifi/iwl-agn.c |    6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
++++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
+@@ -3275,7 +3275,11 @@ static void iwl4965_mac_update_tkip_key(
+               return;
+       }
+-      iwl_scan_cancel_timeout(priv, 100);
++      if (iwl_scan_cancel(priv)) {
++              /* cancel scan failed, just live w/ bad key and rely
++                 briefly on SW decryption */
++              return;
++      }
+       key_flags |= (STA_KEY_FLG_TKIP | STA_KEY_FLG_MAP_KEY_MSK);
+       key_flags |= cpu_to_le16(keyconf->keyidx << STA_KEY_FLG_KEYID_POS);
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:38 2008
+Message-Id: <20081117070938.031228374@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Bob Copeland <me@bobcopeland.com>,
+ "John W. Linville" <linville@tuxdriver.com>,
+ Elias Oltmanns <eo@nebensachen.de>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 03/46] ath5k: fix suspend-related oops on rmmod
+Content-Disposition: inline; filename=ath5k-fix-suspend-related-oops-on-rmmod.patch
+Content-Length: 6837
+Lines: 229
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Elias Oltmanns <eo@nebensachen.de>
+
+Cumulative patch backporting the following two commits from upstream:
+
+commit 8bdd5b9c6bd53add260756b6673a0545fbdbba21 upstream
+Author: Bob Copeland <me@bobcopeland.com>
+
+Based on a patch by Elias Oltmanns, we call ath5k_init in resume even
+if we didn't previously open the device.  Besides starting up the
+device unnecessarily, this also causes an oops on rmmod because
+mac80211 will not invoke ath5k_stop and softirqs are left running after
+the module has been unloaded.  Add a new state bit, ATH_STAT_STARTED,
+to indicate that we have been started up.
+
+commit bc1b32d6bdd2d6f3fbee9a7c01c9b099f11c579c upstream
+Author: Elias Oltmanns <eo@nebensachen.de>
+
+After a s2ram / resume cycle, resetting the key cache does not work
+unless it is deferred until after the hardware has been reinitialised by
+a call to ath5k_hw_reset(). This fixes a regression introduced by
+"ath5k: fix suspend-related oops on rmmod".
+
+Reported-by: Toralf Förster <toralf.foerster@gmx.de>
+Signed-off-by: Elias Oltmanns <eo@nebensachen.de>
+Signed-off-by: Bob Copeland <me@bobcopeland.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/net/wireless/ath5k/base.c |   67 +++++++++++++++++++-------------------
+ drivers/net/wireless/ath5k/base.h |    3 +
+ 2 files changed, 36 insertions(+), 34 deletions(-)
+
+--- a/drivers/net/wireless/ath5k/base.c
++++ b/drivers/net/wireless/ath5k/base.c
+@@ -294,9 +294,9 @@ static inline u64 ath5k_extend_tsf(struc
+ }
+ /* Interrupt handling */
+-static int    ath5k_init(struct ath5k_softc *sc);
++static int    ath5k_init(struct ath5k_softc *sc, bool is_resume);
+ static int    ath5k_stop_locked(struct ath5k_softc *sc);
+-static int    ath5k_stop_hw(struct ath5k_softc *sc);
++static int    ath5k_stop_hw(struct ath5k_softc *sc, bool is_suspend);
+ static irqreturn_t ath5k_intr(int irq, void *dev_id);
+ static void   ath5k_tasklet_reset(unsigned long data);
+@@ -584,7 +584,7 @@ ath5k_pci_suspend(struct pci_dev *pdev, 
+       ath5k_led_off(sc);
+-      ath5k_stop_hw(sc);
++      ath5k_stop_hw(sc, true);
+       free_irq(pdev->irq, sc);
+       pci_save_state(pdev);
+@@ -599,8 +599,7 @@ ath5k_pci_resume(struct pci_dev *pdev)
+ {
+       struct ieee80211_hw *hw = pci_get_drvdata(pdev);
+       struct ath5k_softc *sc = hw->priv;
+-      struct ath5k_hw *ah = sc->ah;
+-      int i, err;
++      int err;
+       pci_restore_state(pdev);
+@@ -621,21 +620,11 @@ ath5k_pci_resume(struct pci_dev *pdev)
+               goto err_no_irq;
+       }
+-      err = ath5k_init(sc);
++      err = ath5k_init(sc, true);
+       if (err)
+               goto err_irq;
+       ath5k_led_enable(sc);
+-      /*
+-       * Reset the key cache since some parts do not
+-       * reset the contents on initial power up or resume.
+-       *
+-       * FIXME: This may need to be revisited when mac80211 becomes
+-       *        aware of suspend/resume.
+-       */
+-      for (i = 0; i < AR5K_KEYTABLE_SIZE; i++)
+-              ath5k_hw_reset_key(ah, i);
+-
+       return 0;
+ err_irq:
+       free_irq(pdev->irq, sc);
+@@ -657,7 +646,6 @@ ath5k_attach(struct pci_dev *pdev, struc
+       struct ath5k_softc *sc = hw->priv;
+       struct ath5k_hw *ah = sc->ah;
+       u8 mac[ETH_ALEN];
+-      unsigned int i;
+       int ret;
+       ATH5K_DBG(sc, ATH5K_DEBUG_ANY, "devid 0x%x\n", pdev->device);
+@@ -676,13 +664,6 @@ ath5k_attach(struct pci_dev *pdev, struc
+               __set_bit(ATH_STAT_MRRETRY, sc->status);
+       /*
+-       * Reset the key cache since some parts do not
+-       * reset the contents on initial power up.
+-       */
+-      for (i = 0; i < AR5K_KEYTABLE_SIZE; i++)
+-              ath5k_hw_reset_key(ah, i);
+-
+-      /*
+        * Collect the channel list.  The 802.11 layer
+        * is resposible for filtering this list based
+        * on settings like the phy mode and regulatory
+@@ -2197,12 +2178,18 @@ ath5k_beacon_config(struct ath5k_softc *
+ \********************/
+ static int
+-ath5k_init(struct ath5k_softc *sc)
++ath5k_init(struct ath5k_softc *sc, bool is_resume)
+ {
+-      int ret;
++      struct ath5k_hw *ah = sc->ah;
++      int ret, i;
+       mutex_lock(&sc->lock);
++      if (is_resume && !test_bit(ATH_STAT_STARTED, sc->status))
++              goto out_ok;
++
++      __clear_bit(ATH_STAT_STARTED, sc->status);
++
+       ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "mode %d\n", sc->opmode);
+       /*
+@@ -2220,7 +2207,7 @@ ath5k_init(struct ath5k_softc *sc)
+        */
+       sc->curchan = sc->hw->conf.channel;
+       sc->curband = &sc->sbands[sc->curchan->band];
+-      ret = ath5k_hw_reset(sc->ah, sc->opmode, sc->curchan, false);
++      ret = ath5k_hw_reset(ah, sc->opmode, sc->curchan, false);
+       if (ret) {
+               ATH5K_ERR(sc, "unable to reset hardware: %d\n", ret);
+               goto done;
+@@ -2229,7 +2216,14 @@ ath5k_init(struct ath5k_softc *sc)
+        * This is needed only to setup initial state
+        * but it's best done after a reset.
+        */
+-      ath5k_hw_set_txpower_limit(sc->ah, 0);
++      ath5k_hw_set_txpower_limit(ah, 0);
++
++      /*
++       * Reset the key cache since some parts do not reset the
++       * contents on initial power up or resume from suspend.
++       */
++      for (i = 0; i < AR5K_KEYTABLE_SIZE; i++)
++              ath5k_hw_reset_key(ah, i);
+       /*
+        * Setup the hardware after reset: the key cache
+@@ -2249,13 +2243,17 @@ ath5k_init(struct ath5k_softc *sc)
+               AR5K_INT_RXORN | AR5K_INT_FATAL | AR5K_INT_GLOBAL |
+               AR5K_INT_MIB;
+-      ath5k_hw_set_intr(sc->ah, sc->imask);
++      ath5k_hw_set_intr(ah, sc->imask);
++
++      __set_bit(ATH_STAT_STARTED, sc->status);
++
+       /* Set ack to be sent at low bit-rates */
+-      ath5k_hw_set_ack_bitrate_high(sc->ah, false);
++      ath5k_hw_set_ack_bitrate_high(ah, false);
+       mod_timer(&sc->calib_tim, round_jiffies(jiffies +
+                       msecs_to_jiffies(ath5k_calinterval * 1000)));
++out_ok:
+       ret = 0;
+ done:
+       mmiowb();
+@@ -2310,7 +2308,7 @@ ath5k_stop_locked(struct ath5k_softc *sc
+  * stop is preempted).
+  */
+ static int
+-ath5k_stop_hw(struct ath5k_softc *sc)
++ath5k_stop_hw(struct ath5k_softc *sc, bool is_suspend)
+ {
+       int ret;
+@@ -2341,6 +2339,9 @@ ath5k_stop_hw(struct ath5k_softc *sc)
+               }
+       }
+       ath5k_txbuf_free(sc, sc->bbuf);
++      if (!is_suspend)
++              __clear_bit(ATH_STAT_STARTED, sc->status);
++
+       mmiowb();
+       mutex_unlock(&sc->lock);
+@@ -2719,12 +2720,12 @@ err:
+ static int ath5k_start(struct ieee80211_hw *hw)
+ {
+-      return ath5k_init(hw->priv);
++      return ath5k_init(hw->priv, false);
+ }
+ static void ath5k_stop(struct ieee80211_hw *hw)
+ {
+-      ath5k_stop_hw(hw->priv);
++      ath5k_stop_hw(hw->priv, false);
+ }
+ static int ath5k_add_interface(struct ieee80211_hw *hw,
+--- a/drivers/net/wireless/ath5k/base.h
++++ b/drivers/net/wireless/ath5k/base.h
+@@ -132,11 +132,12 @@ struct ath5k_softc {
+       size_t                  desc_len;       /* size of TX/RX descriptors */
+       u16                     cachelsz;       /* cache line size */
+-      DECLARE_BITMAP(status, 4);
++      DECLARE_BITMAP(status, 5);
+ #define ATH_STAT_INVALID      0               /* disable hardware accesses */
+ #define ATH_STAT_MRRETRY      1               /* multi-rate retry support */
+ #define ATH_STAT_PROMISC      2
+ #define ATH_STAT_LEDSOFT      3               /* enable LED gpio status */
++#define ATH_STAT_STARTED      4               /* opened & irqs enabled */
+       unsigned int            filter_flags;   /* HW flags, AR5K_RX_FILTER_* */
+       unsigned int            curmode;        /* current phy mode */
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:38 2008
+Message-Id: <20081117070938.239486057@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Bob Copeland <me@bobcopeland.com>,
+ "John W. Linville" <linville@tuxdriver.com>,
+ Elias Oltmanns <eo@nebensachen.de>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 04/46] ath5k: Fix reset sequence for AR5212 in general and RF5111 in particular
+Content-Disposition: inline; filename=ath5k-fix-reset-sequence-for-ar5212-in-general-and-rf5111-in-particular.patch
+Content-Length: 2662
+Lines: 75
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Elias Oltmanns <eo@nebensachen.de>
+
+commit 7d19267b8d1e12c0baebf9be96e04cddffe63f67 upstream
+
+Take care to handle register 0xa228 exactly as in the HAL released by
+Atheros. This change is required to make ath5k work again on my system
+since commit 2203d6be (ath5k: Misc hw_reset updates), thus fixing a
+regression in 2.6.27 and therefore hopefully eligible for inclusion into
+a stable release.
+
+v2: Only overwrite initial register values on later revisions of AR5212
+    chips.
+v3: Use standard macros to manipulate the register.
+
+Signed-off-by: Elias Oltmanns <eo@nebensachen.de>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/ath5k/hw.c       |   22 +++++++---------------
+ drivers/net/wireless/ath5k/initvals.c |    2 ++
+ 2 files changed, 9 insertions(+), 15 deletions(-)
+
+--- a/drivers/net/wireless/ath5k/hw.c
++++ b/drivers/net/wireless/ath5k/hw.c
+@@ -826,9 +826,10 @@ int ath5k_hw_reset(struct ath5k_hw *ah, 
+               mdelay(1);
+               /*
+-               * Write some more initial register settings
++               * Write some more initial register settings for revised chips
+                */
+-              if (ah->ah_version == AR5K_AR5212) {
++              if (ah->ah_version == AR5K_AR5212 &&
++                  ah->ah_phy_revision > 0x41) {
+                       ath5k_hw_reg_write(ah, 0x0002a002, 0x982c);
+                       if (channel->hw_value == CHANNEL_G)
+@@ -847,19 +848,10 @@ int ath5k_hw_reset(struct ath5k_hw *ah, 
+                       else
+                               ath5k_hw_reg_write(ah, 0x00000000, 0x994c);
+-                      /* Some bits are disabled here, we know nothing about
+-                       * register 0xa228 yet, most of the times this ends up
+-                       * with a value 0x9b5 -haven't seen any dump with
+-                       * a different value- */
+-                      /* Got this from decompiling binary HAL */
+-                      data = ath5k_hw_reg_read(ah, 0xa228);
+-                      data &= 0xfffffdff;
+-                      ath5k_hw_reg_write(ah, data, 0xa228);
+-
+-                      data = ath5k_hw_reg_read(ah, 0xa228);
+-                      data &= 0xfffe03ff;
+-                      ath5k_hw_reg_write(ah, data, 0xa228);
+-                      data = 0;
++                      /* Got this from legacy-hal */
++                      AR5K_REG_DISABLE_BITS(ah, 0xa228, 0x200);
++
++                      AR5K_REG_MASKED_BITS(ah, 0xa228, 2 << 10, ~0x1fc00);
+                       /* Just write 0x9b5 ? */
+                       /* ath5k_hw_reg_write(ah, 0x000009b5, 0xa228); */
+--- a/drivers/net/wireless/ath5k/initvals.c
++++ b/drivers/net/wireless/ath5k/initvals.c
+@@ -810,6 +810,8 @@ static const struct ath5k_ini_mode ar521
+               { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } },
+       { AR5K_PHY(642),
+               { 0xd03e6788, 0xd03e6788, 0xd03e6788, 0xd03e6788, 0xd03e6788 } },
++      { 0xa228,
++              { 0x000001b5, 0x000001b5, 0x000001b5, 0x000001b5, 0x000001b5 } },
+       { 0xa23c,
+               { 0x13c889af, 0x13c889af, 0x13c889af, 0x13c889af, 0x13c889af } },
+ };
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:38 2008
+Message-Id: <20081117070938.444939753@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Eilon Greenstein <eilong@broadcom.com>,
+ "David S. Miller" <davem@davemloft.net>,
+ Alex Chiang <achiang@hp.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 05/46] bnx2x: Removing the PMF indication when unloading
+Content-Disposition: inline; filename=bnx2x-removing-the-pmf-indication-when-unloading.patch
+Content-Length: 1144
+Lines: 38
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Eilon Greenstein <eilong@broadcom.com>
+
+commit 9a0354405feb0f8bd460349a93db05e4cca8d166 upstream.
+
+When the PMF flag is set, the driver can access the HW freely. When the
+driver is unloaded, it should not access the HW. The problem caused fatal
+errors when "ethtool -i" was called after the calling instance was unloaded
+and another instance was already loaded
+
+Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Cc: Alex Chiang <achiang@hp.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/bnx2x_main.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/net/bnx2x_main.c
++++ b/drivers/net/bnx2x_main.c
+@@ -6480,6 +6480,7 @@ load_int_disable:
+       bnx2x_free_irq(bp);
+ load_error:
+       bnx2x_free_mem(bp);
++      bp->port.pmf = 0;
+       /* TBD we really need to reset the chip
+          if we want to recover from this */
+@@ -6790,6 +6791,7 @@ unload_error:
+       /* Report UNLOAD_DONE to MCP */
+       if (!BP_NOMCP(bp))
+               bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_DONE);
++      bp->port.pmf = 0;
+       /* Free SKBs, SGEs, TPA pool and driver internals */
+       bnx2x_free_skbs(bp);
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:39 2008
+Message-Id: <20081117070938.840687886@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Eilon Greenstein <eilong@broadcom.com>,
+ "David S. Miller" <davem@davemloft.net>,
+ Alex Chiang <achiang@hp.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 06/46] bnx2x: PCI configuration bug on big-endian
+Content-Disposition: inline; filename=bnx2x-pci-configuration-bug-on-big-endian.patch
+Content-Length: 1460
+Lines: 42
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Eilon Greenstein <eilong@broadcom.com>
+
+commit 7d96567ac0527703cf1b80043fc0ebd7f21a10ad upstream.
+
+The current code read nothing but zeros on big-endian (wrong part of the
+32bits). This caused poor performance on big-endian machines. Though this
+issue did not cause the system to crash, the performance is significantly
+better with the fix so I view it as critical bug fix.
+
+Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Cc: Alex Chiang <achiang@hp.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/bnx2x_init.h |    9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/bnx2x_init.h
++++ b/drivers/net/bnx2x_init.h
+@@ -564,14 +564,15 @@ static const struct arb_line write_arb_a
+ static void bnx2x_init_pxp(struct bnx2x *bp)
+ {
++      u16 devctl;
+       int r_order, w_order;
+       u32 val, i;
+       pci_read_config_word(bp->pdev,
+-                           bp->pcie_cap + PCI_EXP_DEVCTL, (u16 *)&val);
+-      DP(NETIF_MSG_HW, "read 0x%x from devctl\n", (u16)val);
+-      w_order = ((val & PCI_EXP_DEVCTL_PAYLOAD) >> 5);
+-      r_order = ((val & PCI_EXP_DEVCTL_READRQ) >> 12);
++                           bp->pcie_cap + PCI_EXP_DEVCTL, &devctl);
++      DP(NETIF_MSG_HW, "read 0x%x from devctl\n", devctl);
++      w_order = ((devctl & PCI_EXP_DEVCTL_PAYLOAD) >> 5);
++      r_order = ((devctl & PCI_EXP_DEVCTL_READRQ) >> 12);
+       if (r_order > MAX_RD_ORD) {
+               DP(NETIF_MSG_HW, "read order of %d  order adjusted to %d\n",
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:39 2008
+Message-Id: <20081117070939.104067799@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Eilon Greenstein <eilong@broadcom.com>,
+ "David S. Miller" <davem@davemloft.net>,
+ Alex Chiang <achiang@hp.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 07/46] bnx2x: Calling netif_carrier_off at the end of the probe
+Content-Disposition: inline; filename=bnx2x-calling-netif_carrier_off-at-the-end-of-the-probe.patch
+Content-Length: 1084
+Lines: 39
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Eilon Greenstein <eilong@broadcom.com>
+
+commit 12b56ea89e70d4b04f2f5199750310e82894ebbd upstream.
+
+netif_carrier_off was called too early at the probe. In case of failure
+or simply bad timing, this can cause a fatal error since linkwatch_event
+might run too soon.
+
+Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Cc: Alex Chiang <achiang@hp.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/bnx2x_main.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/bnx2x_main.c
++++ b/drivers/net/bnx2x_main.c
+@@ -10205,8 +10205,6 @@ static int __devinit bnx2x_init_one(stru
+               return -ENOMEM;
+       }
+-      netif_carrier_off(dev);
+-
+       bp = netdev_priv(dev);
+       bp->msglevel = debug;
+@@ -10230,6 +10228,8 @@ static int __devinit bnx2x_init_one(stru
+               goto init_one_exit;
+       }
++      netif_carrier_off(dev);
++
+       bp->common.name = board_info[ent->driver_data].name;
+       printk(KERN_INFO "%s: %s (%c%d) PCI-E x%d %s found at mem %lx,"
+              " IRQ %d, ", dev->name, bp->common.name,
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:39 2008
+Message-Id: <20081117070939.331166704@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Nicolas Pitre <nico@marvell.com>,
+ Russell King <rmk+kernel@arm.linux.org.uk>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 08/46] ARM: 5329/1: Feroceon: fix feroceon_l2_inv_range
+Content-Disposition: inline; filename=arm-5329-1-feroceon-fix-feroceon_l2_inv_range.patch
+Content-Length: 1231
+Lines: 38
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Nicolas Pitre <nico@cam.org>
+
+commit 72bc2b1ad62f4d2f0a51b35829093d41f55accce upstream.
+
+Same fix as commit c7cf72dcadb: when 'start' and 'end' are less than a
+cacheline apart and 'start' is unaligned we are done after cleaning and
+invalidating the first cacheline.
+
+Signed-off-by: Nicolas Pitre <nico@marvell.com>
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/arm/mm/cache-feroceon-l2.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/arch/arm/mm/cache-feroceon-l2.c
++++ b/arch/arm/mm/cache-feroceon-l2.c
+@@ -148,7 +148,7 @@ static void feroceon_l2_inv_range(unsign
+       /*
+        * Clean and invalidate partial last cache line.
+        */
+-      if (end & (CACHE_LINE_SIZE - 1)) {
++      if (start < end && end & (CACHE_LINE_SIZE - 1)) {
+               l2_clean_inv_pa(end & ~(CACHE_LINE_SIZE - 1));
+               end &= ~(CACHE_LINE_SIZE - 1);
+       }
+@@ -156,7 +156,7 @@ static void feroceon_l2_inv_range(unsign
+       /*
+        * Invalidate all full cache lines between 'start' and 'end'.
+        */
+-      while (start != end) {
++      while (start < end) {
+               unsigned long range_end = calc_range_end(start, end);
+               l2_inv_pa_range(start, range_end - CACHE_LINE_SIZE);
+               start = range_end;
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:39 2008
+Message-Id: <20081117070939.662705698@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ "Darrick J. Wong" <djwong@us.ibm.com>,
+ Corey Minyard <cminyard@mvista.com>,
+ Jean Delvare <khali@linux-fr.org>,
+ Kay Sievers <kay.sievers@vrfy.org>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 09/46] Fix platform drivers that crash on suspend/resume
+Content-Disposition: inline; filename=fix-platform-drivers-that-crash-on-suspend-resume.patch
+Content-Length: 6340
+Lines: 209
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Darrick J. Wong <djwong@us.ibm.com>
+
+commit fe2d5ffc74a1de6a31e9fd65b65cce72d881edf7 upstream.
+
+It turns out that if one registers a struct platform_device, the
+platform device code expects that platform_device.device->driver points
+to a struct driver inside a struct platform_driver.
+
+This is not the case with the ipmi-si, ipmi-msghandler and ibmaem
+drivers, which causes the suspend/resume hook functions to jump off into
+nowhere, causing a crash.  Make this assumption hold true for these
+three drivers.
+
+Signed-off-by: Darrick J. Wong <djwong@us.ibm.com>
+Acked-by: Corey Minyard <cminyard@mvista.com>
+Cc: Jean Delvare <khali@linux-fr.org>
+Cc: Kay Sievers <kay.sievers@vrfy.org>
+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/char/ipmi/ipmi_msghandler.c |   20 +++++++++++---------
+ drivers/char/ipmi/ipmi_si_intf.c    |   16 +++++++++-------
+ drivers/hwmon/ibmaem.c              |   18 ++++++++++--------
+ 3 files changed, 30 insertions(+), 24 deletions(-)
+
+--- a/drivers/char/ipmi/ipmi_msghandler.c
++++ b/drivers/char/ipmi/ipmi_msghandler.c
+@@ -422,9 +422,11 @@ struct ipmi_smi {
+ /**
+  * The driver model view of the IPMI messaging driver.
+  */
+-static struct device_driver ipmidriver = {
+-      .name = "ipmi",
+-      .bus = &platform_bus_type
++static struct platform_driver ipmidriver = {
++      .driver = {
++              .name = "ipmi",
++              .bus = &platform_bus_type
++      }
+ };
+ static DEFINE_MUTEX(ipmidriver_mutex);
+@@ -2384,9 +2386,9 @@ static int ipmi_bmc_register(ipmi_smi_t 
+        * representing the interfaced BMC already
+        */
+       if (bmc->guid_set)
+-              old_bmc = ipmi_find_bmc_guid(&ipmidriver, bmc->guid);
++              old_bmc = ipmi_find_bmc_guid(&ipmidriver.driver, bmc->guid);
+       else
+-              old_bmc = ipmi_find_bmc_prod_dev_id(&ipmidriver,
++              old_bmc = ipmi_find_bmc_prod_dev_id(&ipmidriver.driver,
+                                                   bmc->id.product_id,
+                                                   bmc->id.device_id);
+@@ -2416,7 +2418,7 @@ static int ipmi_bmc_register(ipmi_smi_t 
+               snprintf(name, sizeof(name),
+                        "ipmi_bmc.%4.4x", bmc->id.product_id);
+-              while (ipmi_find_bmc_prod_dev_id(&ipmidriver,
++              while (ipmi_find_bmc_prod_dev_id(&ipmidriver.driver,
+                                                bmc->id.product_id,
+                                                bmc->id.device_id)) {
+                       if (!warn_printed) {
+@@ -2446,7 +2448,7 @@ static int ipmi_bmc_register(ipmi_smi_t 
+                              " Unable to allocate platform device\n");
+                       return -ENOMEM;
+               }
+-              bmc->dev->dev.driver = &ipmidriver;
++              bmc->dev->dev.driver = &ipmidriver.driver;
+               dev_set_drvdata(&bmc->dev->dev, bmc);
+               kref_init(&bmc->refcount);
+@@ -4247,7 +4249,7 @@ static int ipmi_init_msghandler(void)
+       if (initialized)
+               return 0;
+-      rv = driver_register(&ipmidriver);
++      rv = driver_register(&ipmidriver.driver);
+       if (rv) {
+               printk(KERN_ERR PFX "Could not register IPMI driver\n");
+               return rv;
+@@ -4308,7 +4310,7 @@ static __exit void cleanup_ipmi(void)
+       remove_proc_entry(proc_ipmi_root->name, NULL);
+ #endif /* CONFIG_PROC_FS */
+-      driver_unregister(&ipmidriver);
++      driver_unregister(&ipmidriver.driver);
+       initialized = 0;
+--- a/drivers/char/ipmi/ipmi_si_intf.c
++++ b/drivers/char/ipmi/ipmi_si_intf.c
+@@ -114,9 +114,11 @@ static char *si_to_str[] = { "kcs", "smi
+ #define DEVICE_NAME "ipmi_si"
+-static struct device_driver ipmi_driver = {
+-      .name = DEVICE_NAME,
+-      .bus = &platform_bus_type
++static struct platform_driver ipmi_driver = {
++      .driver = {
++              .name = DEVICE_NAME,
++              .bus = &platform_bus_type
++      }
+ };
+@@ -2868,7 +2870,7 @@ static int try_smi_init(struct smi_info 
+                       goto out_err;
+               }
+               new_smi->dev = &new_smi->pdev->dev;
+-              new_smi->dev->driver = &ipmi_driver;
++              new_smi->dev->driver = &ipmi_driver.driver;
+               rv = platform_device_add(new_smi->pdev);
+               if (rv) {
+@@ -2983,7 +2985,7 @@ static __devinit int init_ipmi_si(void)
+       initialized = 1;
+       /* Register the device drivers. */
+-      rv = driver_register(&ipmi_driver);
++      rv = driver_register(&ipmi_driver.driver);
+       if (rv) {
+               printk(KERN_ERR
+                      "init_ipmi_si: Unable to register driver: %d\n",
+@@ -3052,7 +3054,7 @@ static __devinit int init_ipmi_si(void)
+ #ifdef CONFIG_PPC_OF
+               of_unregister_platform_driver(&ipmi_of_platform_driver);
+ #endif
+-              driver_unregister(&ipmi_driver);
++              driver_unregister(&ipmi_driver.driver);
+               printk(KERN_WARNING
+                      "ipmi_si: Unable to find any System Interface(s)\n");
+               return -ENODEV;
+@@ -3151,7 +3153,7 @@ static __exit void cleanup_ipmi_si(void)
+               cleanup_one_si(e);
+       mutex_unlock(&smi_infos_lock);
+-      driver_unregister(&ipmi_driver);
++      driver_unregister(&ipmi_driver.driver);
+ }
+ module_exit(cleanup_ipmi_si);
+--- a/drivers/hwmon/ibmaem.c
++++ b/drivers/hwmon/ibmaem.c
+@@ -88,9 +88,11 @@
+ static DEFINE_IDR(aem_idr);
+ static DEFINE_SPINLOCK(aem_idr_lock);
+-static struct device_driver aem_driver = {
+-      .name = DRVNAME,
+-      .bus = &platform_bus_type,
++static struct platform_driver aem_driver = {
++      .driver = {
++              .name = DRVNAME,
++              .bus = &platform_bus_type,
++      }
+ };
+ struct aem_ipmi_data {
+@@ -583,7 +585,7 @@ static int aem_init_aem1_inst(struct aem
+       data->pdev = platform_device_alloc(DRVNAME, data->id);
+       if (!data->pdev)
+               goto dev_err;
+-      data->pdev->dev.driver = &aem_driver;
++      data->pdev->dev.driver = &aem_driver.driver;
+       res = platform_device_add(data->pdev);
+       if (res)
+@@ -716,7 +718,7 @@ static int aem_init_aem2_inst(struct aem
+       data->pdev = platform_device_alloc(DRVNAME, data->id);
+       if (!data->pdev)
+               goto dev_err;
+-      data->pdev->dev.driver = &aem_driver;
++      data->pdev->dev.driver = &aem_driver.driver;
+       res = platform_device_add(data->pdev);
+       if (res)
+@@ -1085,7 +1087,7 @@ static int __init aem_init(void)
+ {
+       int res;
+-      res = driver_register(&aem_driver);
++      res = driver_register(&aem_driver.driver);
+       if (res) {
+               printk(KERN_ERR "Can't register aem driver\n");
+               return res;
+@@ -1097,7 +1099,7 @@ static int __init aem_init(void)
+       return 0;
+ ipmi_reg_err:
+-      driver_unregister(&aem_driver);
++      driver_unregister(&aem_driver.driver);
+       return res;
+ }
+@@ -1107,7 +1109,7 @@ static void __exit aem_exit(void)
+       struct aem_data *p1, *next1;
+       ipmi_smi_watcher_unregister(&driver_data.bmc_events);
+-      driver_unregister(&aem_driver);
++      driver_unregister(&aem_driver.driver);
+       list_for_each_entry_safe(p1, next1, &driver_data.aem_devices, list)
+               aem_delete(p1);
+ }
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:40 2008
+Message-Id: <20081117070939.925272100@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Johannes Berg <johannes@sipsolutions.net>,
+ "John W. Linville" <linville@tuxdriver.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 10/46] hostap: pad the skb->cb usage in lieu of a proper fix
+Content-Disposition: inline; filename=hostap-pad-the-skb-cb-usage-in-lieu-of-a-proper-fix.patch
+Content-Length: 1470
+Lines: 43
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Johannes Berg <johannes@sipsolutions.net>
+
+commit f7cd168645dda3e9067f24fabbfa787f9a237488 upstream.
+
+Like mac80211 did, this driver makes 'clever' use of skb->cb to pass
+information along with an skb as it is requeued from the virtual device
+to the physical wireless device.  Unfortunately, that trick no longer
+works...
+
+Unlike mac80211, code complexity and driver apathy makes this hack
+the best option we have in the short run.  Hopefully someone will
+eventually be motivated to code a proper fix before all the effected
+hardware dies.
+
+(Above text by me.  Johannes officially disavows all knowledge of this
+hack. -- JWL)
+
+Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/hostap/hostap_wlan.h |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/hostap/hostap_wlan.h
++++ b/drivers/net/wireless/hostap/hostap_wlan.h
+@@ -918,9 +918,12 @@ struct hostap_interface {
+ /*
+  * TX meta data - stored in skb->cb buffer, so this must not be increased over
+- * the 40-byte limit
++ * the 48-byte limit.
++ * THE PADDING THIS STARTS WITH IS A HORRIBLE HACK THAT SHOULD NOT LIVE
++ * TO SEE THE DAY.
+  */
+ struct hostap_skb_tx_data {
++      unsigned int __padding_for_default_qdiscs;
+       u32 magic; /* HOSTAP_SKB_TX_DATA_MAGIC */
+       u8 rate; /* transmit rate */
+ #define HOSTAP_TX_FLAGS_WDS BIT(0)
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:40 2008
+Message-Id: <20081117070940.133944152@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Zhang Rui <rui.zhang@intel.com>,
+ Len Brown <len.brown@intel.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 11/46] ACPI: avoid empty file name in sysfs
+Content-Disposition: inline; filename=acpi-avoid-empty-file-name-in-sysfs.patch
+Content-Length: 2515
+Lines: 74
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Peter Gruber <nokos@gmx.net>
+
+commit 4feba70a2c1a1a0c96909f657f48b2e11e682370 upstream.
+
+Since commit bc45b1d39a925b56796bebf8a397a0491489d85c acpi tables are
+allowed to have an empty signature and /sys/firmware/acpi/tables uses the
+signature as filename.  Applications using naive recursion through /sys
+loop forever.  A possible solution would be: (replacing the zero length
+filename with the string "NULL")
+
+http://bugzilla.kernel.org/show_bug.cgi?id=11539
+
+Acked-by: Zhang Rui <rui.zhang@intel.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/system.c |   25 +++++++++++++++++--------
+ 1 file changed, 17 insertions(+), 8 deletions(-)
+
+--- a/drivers/acpi/system.c
++++ b/drivers/acpi/system.c
+@@ -78,9 +78,15 @@ static ssize_t acpi_table_show(struct ko
+           container_of(bin_attr, struct acpi_table_attr, attr);
+       struct acpi_table_header *table_header = NULL;
+       acpi_status status;
++      char name[ACPI_NAME_SIZE];
++
++      if (strncmp(table_attr->name, "NULL", 4))
++              memcpy(name, table_attr->name, ACPI_NAME_SIZE);
++      else
++              memcpy(name, "\0\0\0\0", 4);
+       status =
+-          acpi_get_table(table_attr->name, table_attr->instance,
++          acpi_get_table(name, table_attr->instance,
+                          &table_header);
+       if (ACPI_FAILURE(status))
+               return -ENODEV;
+@@ -95,21 +101,24 @@ static void acpi_table_attr_init(struct 
+       struct acpi_table_header *header = NULL;
+       struct acpi_table_attr *attr = NULL;
+-      memcpy(table_attr->name, table_header->signature, ACPI_NAME_SIZE);
++      if (table_header->signature[0] != '\0')
++              memcpy(table_attr->name, table_header->signature,
++                      ACPI_NAME_SIZE);
++      else
++              memcpy(table_attr->name, "NULL", 4);
+       list_for_each_entry(attr, &acpi_table_attr_list, node) {
+-              if (!memcmp(table_header->signature, attr->name,
+-                          ACPI_NAME_SIZE))
++              if (!memcmp(table_attr->name, attr->name, ACPI_NAME_SIZE))
+                       if (table_attr->instance < attr->instance)
+                               table_attr->instance = attr->instance;
+       }
+       table_attr->instance++;
+       if (table_attr->instance > 1 || (table_attr->instance == 1 &&
+-                                       !acpi_get_table(table_header->
+-                                                       signature, 2,
+-                                                       &header)))
+-              sprintf(table_attr->name + 4, "%d", table_attr->instance);
++                                      !acpi_get_table
++                                      (table_header->signature, 2, &header)))
++              sprintf(table_attr->name + ACPI_NAME_SIZE, "%d",
++                      table_attr->instance);
+       table_attr->attr.size = 0;
+       table_attr->attr.read = acpi_table_show;
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:40 2008
+Message-Id: <20081117070940.362969349@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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 Jenkins <alan-jenkins@tuffmail.co.uk>,
+ Alexey Starikovskiy <astarikovskiy@suse.de>,
+ Len Brown <len.brown@intel.com>,
+ "Rafael J. Wysocki" <rjw@sisk.pl>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 12/46] ACPI: EC: make kernel messages more useful when GPE storm is detected
+Content-Disposition: inline; filename=acpi-ec-make-kernel-messages-more-useful-when-gpe-storm-is-detected.patch
+Content-Length: 1871
+Lines: 53
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
+
+commit f8248434e6a11d7cd314281be3b39bbcf82fc243 upstream.
+
+Make sure we can tell if the GPE storm workaround gets activated,
+and avoid flooding the logs afterwards.
+
+http://bugzilla.kernel.org/show_bug.cgi?id=11841
+"plenty of line "ACPI: EC: non-query interrupt received,
+ switching to interrupt mode" in dmesg"
+
+Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
+Acked-by: Alexey Starikovskiy <astarikovskiy@suse.de>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Cc: Rafael J. Wysocki <rjw@sisk.pl>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/ec.c |   13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+--- a/drivers/acpi/ec.c
++++ b/drivers/acpi/ec.c
+@@ -286,7 +286,8 @@ static int acpi_ec_transaction_unlocked(
+               acpi_enable_gpe(NULL, ec->gpe, ACPI_NOT_ISR);
+       } else if (test_bit(EC_FLAGS_GPE_MODE, &ec->flags) &&
+                  t->irq_count > ACPI_EC_STORM_THRESHOLD) {
+-              pr_debug(PREFIX "GPE storm detected\n");
++              pr_info(PREFIX "GPE storm detected, "
++                      "transactions will use polling mode\n");
+               set_bit(EC_FLAGS_GPE_STORM, &ec->flags);
+       }
+       return ret;
+@@ -566,9 +567,15 @@ static u32 acpi_ec_gpe_handler(void *dat
+       if (!test_bit(EC_FLAGS_GPE_MODE, &ec->flags) &&
+           !test_bit(EC_FLAGS_NO_GPE, &ec->flags)) {
+               /* this is non-query, must be confirmation */
+-              if (printk_ratelimit())
+-                      pr_info(PREFIX "non-query interrupt received,"
++              if (!test_bit(EC_FLAGS_GPE_STORM, &ec->flags)) {
++                      if (printk_ratelimit())
++                              pr_info(PREFIX "non-query interrupt received,"
++                                      " switching to interrupt mode\n");
++              } else {
++                      /* hush, STORM switches the mode every transaction */
++                      pr_debug(PREFIX "non-query interrupt received,"
+                               " switching to interrupt mode\n");
++              }
+               set_bit(EC_FLAGS_GPE_MODE, &ec->flags);
+       }
+       return ACPI_INTERRUPT_HANDLED;
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:40 2008
+Message-Id: <20081117070940.714761965@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Adam Litke <agl@us.ibm.com>,
+ Jon Tollefson <kniht@linux.vnet.ibm.com>,
+ Mel Gorman <mel@csn.ul.ie>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 13/46] hugetlb: make unmap_ref_private multi-size-aware
+Content-Disposition: inline; filename=hugetlb-make-unmap_ref_private-multi-size-aware.patch
+Content-Length: 1869
+Lines: 54
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Adam Litke <agl@us.ibm.com>
+
+commit 7526674de0c921e7f1e9b6f71a1f9d832557b554 upstream.
+
+Oops.  Part of the hugetlb private reservation code was not fully
+converted to use hstates.
+
+When a huge page must be unmapped from VMAs due to a failed COW,
+HPAGE_SIZE is used in the call to unmap_hugepage_range() regardless of
+the page size being used.  This works if the VMA is using the default
+huge page size.  Otherwise we might unmap too much, too little, or
+trigger a BUG_ON.  Rare but serious -- fix it.
+
+Signed-off-by: Adam Litke <agl@us.ibm.com>
+Cc: Jon Tollefson <kniht@linux.vnet.ibm.com>
+Cc: Mel Gorman <mel@csn.ul.ie>
+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>
+
+---
+ mm/hugetlb.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/mm/hugetlb.c
++++ b/mm/hugetlb.c
+@@ -1797,6 +1797,7 @@ int unmap_ref_private(struct mm_struct *
+                                       struct page *page,
+                                       unsigned long address)
+ {
++      struct hstate *h = hstate_vma(vma);
+       struct vm_area_struct *iter_vma;
+       struct address_space *mapping;
+       struct prio_tree_iter iter;
+@@ -1806,7 +1807,7 @@ int unmap_ref_private(struct mm_struct *
+        * vm_pgoff is in PAGE_SIZE units, hence the different calculation
+        * from page cache lookup which is in HPAGE_SIZE units.
+        */
+-      address = address & huge_page_mask(hstate_vma(vma));
++      address = address & huge_page_mask(h);
+       pgoff = ((address - vma->vm_start) >> PAGE_SHIFT)
+               + (vma->vm_pgoff >> PAGE_SHIFT);
+       mapping = (struct address_space *)page_private(page);
+@@ -1825,7 +1826,7 @@ int unmap_ref_private(struct mm_struct *
+                */
+               if (!is_vma_resv_set(iter_vma, HPAGE_RESV_OWNER))
+                       unmap_hugepage_range(iter_vma,
+-                              address, address + HPAGE_SIZE,
++                              address, address + huge_page_size(h),
+                               page);
+       }
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:41 2008
+Message-Id: <20081117070940.958734104@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Ivan Kuten <ivan.kuten@promwad.com>,
+ Larry Finger <Larry.Finger@lwfinger.net>,
+ "John W. Linville" <linville@tuxdriver.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 14/46] rtl8187: Add Abocom USB ID
+Content-Disposition: inline; filename=rtl8187-add-abocom-usb-id.patch
+Content-Length: 779
+Lines: 26
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Ivan Kuten <ivan.kuten@promwad.com>
+
+commit 8f7c41d4cec91cdbfa89b4a77d5a628938875366 upstream.
+
+Signed-off-by: Ivan Kuten <ivan.kuten@promwad.com>
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/rtl8187_dev.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/net/wireless/rtl8187_dev.c
++++ b/drivers/net/wireless/rtl8187_dev.c
+@@ -45,6 +45,8 @@ static struct usb_device_id rtl8187_tabl
+       {USB_DEVICE(0x03f0, 0xca02), .driver_info = DEVICE_RTL8187},
+       /* Sitecom */
+       {USB_DEVICE(0x0df6, 0x000d), .driver_info = DEVICE_RTL8187},
++      /* Abocom */
++      {USB_DEVICE(0x13d1, 0xabe6), .driver_info = DEVICE_RTL8187},
+       {}
+ };
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:41 2008
+Message-Id: <20081117070941.192857296@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06:36 -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,
+ "John W. Linville" <linville@tuxdriver.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 15/46] rtl8187 : support for Sitecom WL-168 0001 v4
+Content-Disposition: inline; filename=rtl8187-support-for-sitecom-wl-168-0001-v4.patch
+Content-Length: 841
+Lines: 26
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Bob Jolliffe <bobjolliffe@gmail.com>
+
+commit f3c769185a28b7947d97b3552a977102c1fac3f2 upstream.
+
+the Sitecom 0001 v4 with product id 0x0df6:0028, uses Realtek's
+RTL8187B and work fine with new 2.6.27 driver.
+
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/rtl8187_dev.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/wireless/rtl8187_dev.c
++++ b/drivers/net/wireless/rtl8187_dev.c
+@@ -45,6 +45,7 @@ static struct usb_device_id rtl8187_tabl
+       {USB_DEVICE(0x03f0, 0xca02), .driver_info = DEVICE_RTL8187},
+       /* Sitecom */
+       {USB_DEVICE(0x0df6, 0x000d), .driver_info = DEVICE_RTL8187},
++      {USB_DEVICE(0x0df6, 0x0028), .driver_info = DEVICE_RTL8187B},
+       /* Abocom */
+       {USB_DEVICE(0x13d1, 0xabe6), .driver_info = DEVICE_RTL8187},
+       {}
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:41 2008
+Message-Id: <20081117070941.401574535@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06:37 -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,
+ Jonathan McDowell <noodles@earth.li>,
+ Frans Pop <elendil@planet.nl>,
+ Sam Ravnborg <sam@ravnborg.org>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 16/46] kbuild: Fixup deb-pkg target to generate separate firmware deb
+Content-Disposition: inline; filename=kbuild-fixup-deb-pkg-target-to-generate-separate-firmware-deb.patch
+Content-Length: 2200
+Lines: 75
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jonathan McDowell <noodles@earth.li>
+
+commit bf1b36445dc868cbbde194aa1dd87e38fe24cf16 upstream.
+
+The below is a simplistic fix for "make deb-pkg"; it splits the
+firmware out to a linux-firmware-image package and adds an
+(unversioned) Suggests to the linux package for this firmware.
+
+Signed-Off-By: Jonathan McDowell <noodles@earth.li>
+Acked-by: Frans Pop <elendil@planet.nl>
+Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ scripts/package/builddeb |   24 ++++++++++++++++++++++--
+ 1 file changed, 22 insertions(+), 2 deletions(-)
+
+--- a/scripts/package/builddeb
++++ b/scripts/package/builddeb
+@@ -15,15 +15,18 @@ set -e
+ version=$KERNELRELEASE
+ revision=`cat .version`
+ tmpdir="$objtree/debian/tmp"
++fwdir="$objtree/debian/fwtmp"
+ packagename=linux-$version
++fwpackagename=linux-firmware-image
+ if [ "$ARCH" == "um" ] ; then
+       packagename=user-mode-linux-$version
+ fi
+ # Setup the directory structure
+-rm -rf "$tmpdir"
++rm -rf "$tmpdir" "$fwdir"
+ mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot"
++mkdir -p "$fwdir/DEBIAN" "$fwdir/lib"
+ if [ "$ARCH" == "um" ] ; then
+       mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/share/doc/$packagename" "$tmpdir/usr/bin"
+ fi
+@@ -107,6 +110,7 @@ Standards-Version: 3.6.1
+ Package: $packagename
+ Provides: kernel-image-$version, linux-image-$version
++Suggests: $fwpackagename
+ Architecture: any
+ Description: Linux kernel, version $version
+  This package contains the Linux kernel, modules and corresponding other
+@@ -118,8 +122,24 @@ fi
+ chown -R root:root "$tmpdir"
+ chmod -R go-w "$tmpdir"
++# Do we have firmware? Move it out of the way and build it into a package.
++if [ -e "$tmpdir/lib/firmware" ]; then
++      mv "$tmpdir/lib/firmware" "$fwdir/lib/"
++
++      cat <<EOF >> debian/control
++
++Package: $fwpackagename
++Architecture: all
++Description: Linux kernel firmware, version $version
++ This package contains firmware from the Linux kernel, version $version
++EOF
++
++      dpkg-gencontrol -isp -p$fwpackagename -P"$fwdir"
++      dpkg --build "$fwdir" ..
++fi
++
+ # Perform the final magic
+-dpkg-gencontrol -isp
++dpkg-gencontrol -isp -p$packagename
+ dpkg --build "$tmpdir" ..
+ exit 0
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:42 2008
+Message-Id: <20081117070941.794850356@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06:38 -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,
+ FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>,
+ Jens Axboe <jens.axboe@oracle.com>,
+ Nikanth Karthikesan <knikanth@suse.de>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 17/46] block: fix nr_phys_segments miscalculation bug
+Content-Disposition: inline; filename=block-fix-nr_phys_segments-miscalculation-bug.patch
+Content-Length: 3838
+Lines: 115
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
+
+commit 8677142710516d986d932d6f1fba7be8382c1fec upstream
+backported by Nikanth Karthikesan <knikanth@suse.de> to the 2.6.27.y tree.
+
+block: fix nr_phys_segments miscalculation bug
+
+This fixes the bug reported by Nikanth Karthikesan <knikanth@suse.de>:
+
+http://lkml.org/lkml/2008/10/2/203
+
+The root cause of the bug is that blk_phys_contig_segment
+miscalculates q->max_segment_size.
+
+blk_phys_contig_segment checks:
+
+req->biotail->bi_size + next_req->bio->bi_size > q->max_segment_size
+
+But blk_recalc_rq_segments might expect that req->biotail and the
+previous bio in the req are supposed be merged into one
+segment. blk_recalc_rq_segments might also expect that next_req->bio
+and the next bio in the next_req are supposed be merged into one
+segment. In such case, we merge two requests that can't be merged
+here. Later, blk_rq_map_sg gives more segments than it should.
+
+We need to keep track of segment size in blk_recalc_rq_segments and
+use it to see if two requests can be merged. This patch implements it
+in the similar way that we used to do for hw merging (virtual
+merging).
+
+Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
+Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
+Cc: Nikanth Karthikesan <knikanth@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ block/blk-merge.c   |   19 +++++++++++++++++--
+ include/linux/bio.h |    7 +++++++
+ 2 files changed, 24 insertions(+), 2 deletions(-)
+
+--- a/block/blk-merge.c
++++ b/block/blk-merge.c
+@@ -95,6 +95,9 @@ new_hw_segment:
+                       nr_hw_segs++;
+               }
++              if (nr_phys_segs == 1 && seg_size > rq->bio->bi_seg_front_size)
++                      rq->bio->bi_seg_front_size = seg_size;
++
+               nr_phys_segs++;
+               bvprv = bv;
+               seg_size = bv->bv_len;
+@@ -106,6 +109,10 @@ new_hw_segment:
+               rq->bio->bi_hw_front_size = hw_seg_size;
+       if (hw_seg_size > rq->biotail->bi_hw_back_size)
+               rq->biotail->bi_hw_back_size = hw_seg_size;
++      if (nr_phys_segs == 1 && seg_size > rq->bio->bi_seg_front_size)
++              rq->bio->bi_seg_front_size = seg_size;
++      if (seg_size > rq->biotail->bi_seg_back_size)
++              rq->biotail->bi_seg_back_size = seg_size;
+       rq->nr_phys_segments = nr_phys_segs;
+       rq->nr_hw_segments = nr_hw_segs;
+ }
+@@ -133,7 +140,8 @@ static int blk_phys_contig_segment(struc
+       if (!BIOVEC_PHYS_MERGEABLE(__BVEC_END(bio), __BVEC_START(nxt)))
+               return 0;
+-      if (bio->bi_size + nxt->bi_size > q->max_segment_size)
++      if (bio->bi_seg_back_size + nxt->bi_seg_front_size >
++          q->max_segment_size)
+               return 0;
+       /*
+@@ -377,6 +385,8 @@ static int ll_merge_requests_fn(struct r
+ {
+       int total_phys_segments;
+       int total_hw_segments;
++      unsigned int seg_size =
++              req->biotail->bi_seg_back_size + next->bio->bi_seg_front_size;
+       /*
+        * First check if the either of the requests are re-queued
+@@ -392,8 +402,13 @@ static int ll_merge_requests_fn(struct r
+               return 0;
+       total_phys_segments = req->nr_phys_segments + next->nr_phys_segments;
+-      if (blk_phys_contig_segment(q, req->biotail, next->bio))
++      if (blk_phys_contig_segment(q, req->biotail, next->bio)) {
++              if (req->nr_phys_segments == 1)
++                      req->bio->bi_seg_front_size = seg_size;
++              if (next->nr_phys_segments == 1)
++                      next->biotail->bi_seg_back_size = seg_size;
+               total_phys_segments--;
++      }
+       if (total_phys_segments > q->max_phys_segments)
+               return 0;
+--- a/include/linux/bio.h
++++ b/include/linux/bio.h
+@@ -98,6 +98,13 @@ struct bio {
+       unsigned int            bi_size;        /* residual I/O count */
+       /*
++       * To keep track of the max segment size, we account for the
++       * sizes of the first and last mergeable segments in this bio.
++       */
++      unsigned int            bi_seg_front_size;
++      unsigned int            bi_seg_back_size;
++
++      /*
+        * To keep track of the max hw size, we account for the
+        * sizes of the first and last virtually mergeable segments
+        * in this bio
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:42 2008
+Message-Id: <20081117070942.018196899@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Kumar Gala <galak@kernel.crashing.org>,
+ Paul Mackerras <paulus@samba.org>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 18/46] powerpc/mpic: Fix regression caused by change of default IRQ affinity
+Content-Disposition: inline; filename=powerpc-mpic-fix-regression-caused-by-change-of-default-irq-affinity.patch
+Content-Length: 4098
+Lines: 138
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Kumar Gala <galak@kernel.crashing.org>
+
+commit 3c10c9c45e290022ca7d2aa1ad33a0b6ed767520 upstream.
+
+The Freescale implementation of MPIC only allows a single CPU destination
+for non-IPI interrupts.  We add a flag to the mpic_init to distinquish
+these variants of MPIC.  We pull in the irq_choose_cpu from sparc64 to
+select a single CPU as the destination of the interrupt.
+
+This is to deal with the fact that the default smp affinity was
+changed by commit 18404756765c713a0be4eb1082920c04822ce588 ("genirq:
+Expose default irq affinity mask (take 3)") to be all CPUs.
+
+Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
+Signed-off-by: Paul Mackerras <paulus@samba.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/powerpc/include/asm/mpic.h          |    2 +
+ arch/powerpc/platforms/85xx/mpc85xx_ds.c |    3 +
+ arch/powerpc/platforms/86xx/pic.c        |    3 +
+ arch/powerpc/sysdev/mpic.c               |   59 ++++++++++++++++++++++++++++---
+ 4 files changed, 61 insertions(+), 6 deletions(-)
+
+--- a/arch/powerpc/include/asm/mpic.h
++++ b/arch/powerpc/include/asm/mpic.h
+@@ -355,6 +355,8 @@ struct mpic
+ #define MPIC_NO_BIAS                  0x00000400
+ /* Ignore NIRQS as reported by FRR */
+ #define MPIC_BROKEN_FRR_NIRQS         0x00000800
++/* Destination only supports a single CPU at a time */
++#define MPIC_SINGLE_DEST_CPU          0x00001000
+ /* MPIC HW modification ID */
+ #define MPIC_REGSET_MASK              0xf0000000
+--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
++++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+@@ -78,7 +78,8 @@ void __init mpc85xx_ds_pic_init(void)
+       mpic = mpic_alloc(np, r.start,
+                         MPIC_PRIMARY | MPIC_WANTS_RESET |
+-                        MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS,
++                        MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
++                        MPIC_SINGLE_DEST_CPU,
+                       0, 256, " OpenPIC  ");
+       BUG_ON(mpic == NULL);
+       of_node_put(np);
+--- a/arch/powerpc/platforms/86xx/pic.c
++++ b/arch/powerpc/platforms/86xx/pic.c
+@@ -44,7 +44,8 @@ void __init mpc86xx_init_irq(void)
+       mpic = mpic_alloc(np, res.start,
+                       MPIC_PRIMARY | MPIC_WANTS_RESET |
+-                      MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS,
++                      MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
++                      MPIC_SINGLE_DEST_CPU,
+                       0, 256, " MPIC     ");
+       of_node_put(np);
+       BUG_ON(mpic == NULL);
+--- a/arch/powerpc/sysdev/mpic.c
++++ b/arch/powerpc/sysdev/mpic.c
+@@ -563,6 +563,51 @@ static void __init mpic_scan_ht_pics(str
+ #endif /* CONFIG_MPIC_U3_HT_IRQS */
++#ifdef CONFIG_SMP
++static int irq_choose_cpu(unsigned int virt_irq)
++{
++      cpumask_t mask = irq_desc[virt_irq].affinity;
++      int cpuid;
++
++      if (cpus_equal(mask, CPU_MASK_ALL)) {
++              static int irq_rover;
++              static DEFINE_SPINLOCK(irq_rover_lock);
++              unsigned long flags;
++
++              /* Round-robin distribution... */
++      do_round_robin:
++              spin_lock_irqsave(&irq_rover_lock, flags);
++
++              while (!cpu_online(irq_rover)) {
++                      if (++irq_rover >= NR_CPUS)
++                              irq_rover = 0;
++              }
++              cpuid = irq_rover;
++              do {
++                      if (++irq_rover >= NR_CPUS)
++                              irq_rover = 0;
++              } while (!cpu_online(irq_rover));
++
++              spin_unlock_irqrestore(&irq_rover_lock, flags);
++      } else {
++              cpumask_t tmp;
++
++              cpus_and(tmp, cpu_online_map, mask);
++
++              if (cpus_empty(tmp))
++                      goto do_round_robin;
++
++              cpuid = first_cpu(tmp);
++      }
++
++      return cpuid;
++}
++#else
++static int irq_choose_cpu(unsigned int virt_irq)
++{
++      return hard_smp_processor_id();
++}
++#endif
+ #define mpic_irq_to_hw(virq)  ((unsigned int)irq_map[virq].hwirq)
+@@ -777,12 +822,18 @@ void mpic_set_affinity(unsigned int irq,
+       struct mpic *mpic = mpic_from_irq(irq);
+       unsigned int src = mpic_irq_to_hw(irq);
+-      cpumask_t tmp;
++      if (mpic->flags & MPIC_SINGLE_DEST_CPU) {
++              int cpuid = irq_choose_cpu(irq);
++
++              mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION), 1 << cpuid);
++      } else {
++              cpumask_t tmp;
+-      cpus_and(tmp, cpumask, cpu_online_map);
++              cpus_and(tmp, cpumask, cpu_online_map);
+-      mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION),
+-                     mpic_physmask(cpus_addr(tmp)[0]));       
++              mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION),
++                             mpic_physmask(cpus_addr(tmp)[0]));
++      }
+ }
+ static unsigned int mpic_type_to_vecpri(struct mpic *mpic, unsigned int type)
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:42 2008
+Message-Id: <20081117070942.223289446@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Elvis Pranskevichus <el@prans.net>,
+ Dmitry Torokhov <dtor@mail.ru>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 19/46] Input: ALPS - add signature for DualPoint found in Dell Latitude E6500
+Content-Disposition: inline; filename=input-alps-add-signature-for-dualpoint-found-in-dell-latitude-e6500.patch
+Content-Length: 868
+Lines: 24
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Elvis Pranskevichus <el@prans.net>
+
+commit 0d46ed1c747edfe6476961d4d9f732ceb7a29074 upstream.
+
+Signed-off-by: Elvis Pranskevichus <el@prans.net>
+Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/input/mouse/alps.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/input/mouse/alps.c
++++ b/drivers/input/mouse/alps.c
+@@ -54,6 +54,7 @@ static const struct alps_model_info alps
+       { { 0x20, 0x02, 0x0e }, 0xf8, 0xf8, ALPS_PASS | ALPS_DUALPOINT }, /* XXX */
+       { { 0x22, 0x02, 0x0a }, 0xf8, 0xf8, ALPS_PASS | ALPS_DUALPOINT },
+       { { 0x22, 0x02, 0x14 }, 0xff, 0xff, ALPS_PASS | ALPS_DUALPOINT }, /* Dell Latitude D600 */
++      { { 0x62, 0x02, 0x14 }, 0xcf, 0xcf, ALPS_PASS | ALPS_DUALPOINT }, /* Dell Latitude E6500 */
+       { { 0x73, 0x02, 0x50 }, 0xcf, 0xcf, ALPS_FW_BK_1 } /* Dell Vostro 1400 */
+ };
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:42 2008
+Message-Id: <20081117070942.427916221@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Gerald Schaefer <gerald.schaefer@de.ibm.com>,
+ Nathan Fontenot <nfont@austin.ibm.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 20/46] memory hotplug: fix page_zone() calculation in test_pages_isolated()
+Content-Disposition: inline; filename=memory-hotplug-fix-page_zone-calculation-in-test_pages_isolated.patch
+Content-Length: 1552
+Lines: 42
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Gerald Schaefer <gerald.schaefer@de.ibm.com>
+
+commit a70dcb969f64e2fa98c24f47854f20bf02ff0092 upstream.
+
+My last bugfix here (adding zone->lock) introduced a new problem: Using
+page_zone(pfn_to_page(pfn)) to get the zone after the for() loop is wrong.
+ pfn will then be >= end_pfn, which may be in a different zone or not
+present at all.  This may lead to an addressing exception in page_zone()
+or spin_lock_irqsave().
+
+Now I use __first_valid_page() again after the loop to find a valid page
+for page_zone().
+
+Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
+Acked-by: Nathan Fontenot <nfont@austin.ibm.com>
+Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.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>
+
+---
+ mm/page_isolation.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/mm/page_isolation.c
++++ b/mm/page_isolation.c
+@@ -130,10 +130,11 @@ int test_pages_isolated(unsigned long st
+               if (page && get_pageblock_migratetype(page) != MIGRATE_ISOLATE)
+                       break;
+       }
+-      if (pfn < end_pfn)
++      page = __first_valid_page(start_pfn, end_pfn - start_pfn);
++      if ((pfn < end_pfn) || !page)
+               return -EBUSY;
+       /* Check all pages are free or Marked as ISOLATED */
+-      zone = page_zone(pfn_to_page(pfn));
++      zone = page_zone(page);
+       spin_lock_irqsave(&zone->lock, flags);
+       ret = __test_page_isolated_in_pageblock(start_pfn, end_pfn);
+       spin_unlock_irqrestore(&zone->lock, flags);
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:43 2008
+Message-Id: <20081117070942.806711012@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Hugh Dickins <hugh@veritas.com>,
+ Francois Romieu <romieu@fr.zoreil.com>,
+ Edward Hsu <edward_hsu@realtek.com.tw>,
+ Jeff Garzik <jgarzik@redhat.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 21/46] r8169: select MII in Kconfig
+Content-Disposition: inline; filename=r8169-select-mii-in-kconfig.patch
+Content-Length: 807
+Lines: 29
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Francois Romieu <romieu@fr.zoreil.com>
+
+commit b73724921d906d1642f9f6d054079c6b095903fe upstream.
+
+drivers/built-in.o: In function `rtl8169_gset_xmii':
+r8169.c:(.text+0x82259): undefined reference to `mii_ethtool_gset'
+
+Signed-off-by: Hugh Dickins <hugh@veritas.com>
+Acked-by: Francois Romieu <romieu@fr.zoreil.com>
+Cc: Edward Hsu <edward_hsu@realtek.com.tw>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/Kconfig |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -2046,6 +2046,7 @@ config R8169
+       tristate "Realtek 8169 gigabit ethernet support"
+       depends on PCI
+       select CRC32
++      select MII
+       ---help---
+         Say Y here if you have a Realtek 8169 PCI Gigabit Ethernet adapter.
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:43 2008
+Message-Id: <20081117070943.023851389@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Adam Jackson <ajax@redhat.com>,
+ Mattia Dongili <malattia@linux.it>,
+ Len Brown <lenb@kernel.org>,
+ Steve Conklin <sconklin@canonical.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 22/46] sony-laptop: ignore missing _DIS method on pic device
+Content-Disposition: inline; filename=sony-laptop-ignore-missing-_dis-method-on-pic-device.patch
+Content-Length: 1092
+Lines: 37
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Matthew Garrett <mjg59@srcf.ucam.org>
+
+commit 6158d3a2323835546c7cf83a170316fa77b726e0 upstream.
+
+At least the Vaio VGN-Z540N doesn't have this method, so let's not fail
+to suspend just because it doesn't exist.
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Acked-by: Mattia Dongili <malattia@linux.it>
+Cc: Len Brown <lenb@kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Steve Conklin <sconklin@canonical.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/misc/sony-laptop.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/drivers/misc/sony-laptop.c
++++ b/drivers/misc/sony-laptop.c
+@@ -2315,8 +2315,10 @@ end:
+  */
+ static int sony_pic_disable(struct acpi_device *device)
+ {
+-      if (ACPI_FAILURE(acpi_evaluate_object(device->handle,
+-                      "_DIS", NULL, NULL)))
++      acpi_status ret = acpi_evaluate_object(device->handle, "_DIS", NULL,
++                                             NULL);
++
++      if (ACPI_FAILURE(ret) && ret != AE_NOT_FOUND)
+               return -ENXIO;
+       dprintk("Device disabled\n");
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:43 2008
+Message-Id: <20081117070943.232981180@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Alexey Dobriyan <adobriyan@gmail.com>,
+ Eric Dumazet <dada1@cosmosbay.com>,
+ "David S. Miller" <davem@davemloft.net>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 23/46] net: fix /proc/net/snmp as memory corruptor
+Content-Disposition: inline; filename=net-fix-proc-net-snmp-as-memory-corruptor.patch
+Content-Length: 2574
+Lines: 96
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Eric Dumazet <dada1@cosmosbay.com>
+
+commit b971e7ac834e9f4bda96d5a96ae9abccd01c1dd8 upstream.
+
+icmpmsg_put() can happily corrupt kernel memory, using a static
+table and forgetting to reset an array index in a loop.
+
+Remove the static array since its not safe without proper locking.
+
+Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
+Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv4/proc.c |   58 ++++++++++++++++++++++++++++----------------------------
+ 1 file changed, 30 insertions(+), 28 deletions(-)
+
+--- a/net/ipv4/proc.c
++++ b/net/ipv4/proc.c
+@@ -237,43 +237,45 @@ static const struct snmp_mib snmp4_net_l
+       SNMP_MIB_SENTINEL
+ };
++static void icmpmsg_put_line(struct seq_file *seq, unsigned long *vals,
++                           unsigned short *type, int count)
++{
++      int j;
++
++      if (count) {
++              seq_printf(seq, "\nIcmpMsg:");
++              for (j = 0; j < count; ++j)
++                      seq_printf(seq, " %sType%u",
++                              type[j] & 0x100 ? "Out" : "In",
++                              type[j] & 0xff);
++              seq_printf(seq, "\nIcmpMsg:");
++              for (j = 0; j < count; ++j)
++                      seq_printf(seq, " %lu", vals[j]);
++      }
++}
++
+ static void icmpmsg_put(struct seq_file *seq)
+ {
+ #define PERLINE       16
+-      int j, i, count;
+-      static int out[PERLINE];
++      int i, count;
++      unsigned short type[PERLINE];
++      unsigned long vals[PERLINE], val;
+       struct net *net = seq->private;
+       count = 0;
+       for (i = 0; i < ICMPMSG_MIB_MAX; i++) {
+-
+-              if (snmp_fold_field((void **) net->mib.icmpmsg_statistics, i))
+-                      out[count++] = i;
+-              if (count < PERLINE)
+-                      continue;
+-
+-              seq_printf(seq, "\nIcmpMsg:");
+-              for (j = 0; j < PERLINE; ++j)
+-                      seq_printf(seq, " %sType%u", i & 0x100 ? "Out" : "In",
+-                                      i & 0xff);
+-              seq_printf(seq, "\nIcmpMsg: ");
+-              for (j = 0; j < PERLINE; ++j)
+-                      seq_printf(seq, " %lu",
+-                              snmp_fold_field((void **) net->mib.icmpmsg_statistics,
+-                              out[j]));
+-              seq_putc(seq, '\n');
+-      }
+-      if (count) {
+-              seq_printf(seq, "\nIcmpMsg:");
+-              for (j = 0; j < count; ++j)
+-                      seq_printf(seq, " %sType%u", out[j] & 0x100 ? "Out" :
+-                              "In", out[j] & 0xff);
+-              seq_printf(seq, "\nIcmpMsg:");
+-              for (j = 0; j < count; ++j)
+-                      seq_printf(seq, " %lu", snmp_fold_field((void **)
+-                              net->mib.icmpmsg_statistics, out[j]));
++              val = snmp_fold_field((void **) net->mib.icmpmsg_statistics, i);
++              if (val) {
++                      type[count] = i;
++                      vals[count++] = val;
++              }
++              if (count == PERLINE) {
++                      icmpmsg_put_line(seq, vals, type, count);
++                      count = 0;
++              }
+       }
++      icmpmsg_put_line(seq, vals, type, count);
+ #undef PERLINE
+ }
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:43 2008
+Message-Id: <20081117070943.440358095@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Al Viro <viro@zeniv.linux.org.uk>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 24/46] Fix broken ownership of /proc/sys/ files
+Content-Disposition: inline; filename=fix-broken-ownership-of-proc-sys-files.patch
+Content-Length: 824
+Lines: 27
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Al Viro <viro@ZenIV.linux.org.uk>
+
+commit 5c06fe772da43db63b053addcd2c267f76d0be91 upstream.
+
+D'oh...
+
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Reported-and-tested-by: Peter Palfrader <peter@palfrader.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/proc/proc_sysctl.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/fs/proc/proc_sysctl.c
++++ b/fs/proc/proc_sysctl.c
+@@ -31,6 +31,7 @@ static struct inode *proc_sys_make_inode
+       inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
+       inode->i_flags |= S_PRIVATE; /* tell selinux to ignore this inode */
+       inode->i_mode = table->mode;
++      inode->i_uid = inode->i_gid = 0;
+       if (!table->child) {
+               inode->i_mode |= S_IFREG;
+               inode->i_op = &proc_sys_inode_operations;
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:44 2008
+Message-Id: <20081117070943.824954532@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Mauro Carvalho Chehab <mchehab@redhat.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 25/46] V4L/DVB (9624): CVE-2008-5033: fix OOPS on tvaudio when controlling bass/treble
+Content-Disposition: inline; filename=v4l-dvb-cve-2008-5033-fix-oops-on-tvaudio-when-controlling-bass-treble.patch
+Content-Length: 5047
+Lines: 128
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Mauro Carvalho Chehab <mchehab@redhat.com>
+
+commit 01a1a3cc1e3fbe718bd06a2a5d4d1a2d0fb4d7d9 upstream.
+
+This bug were supposed to be fixed by 5ba2f67afb02c5302b2898949ed6fc3b3d37dcf1,
+where a call to NULL happens.
+
+Not all tvaudio chips allow controlling bass/treble. So, the driver
+has a table with a flag to indicate if the chip does support it.
+
+Unfortunately, the handling of this logic were broken for a very long
+time (probably since the first module version). Due to that, an OOPS
+were generated for devices that don't support bass/treble.
+
+This were the resulting OOPS message before the patch, with debug messages
+enabled:
+
+tvaudio' 1-005b: VIDIOC_S_CTRL
+BUG: unable to handle kernel NULL pointer dereference at 00000000
+IP: [<00000000>]
+*pde = 22fda067 *pte = 00000000
+Oops: 0000 [#1] SMP
+Modules linked in: snd_hda_intel snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device
+snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd_hwdep snd soundcore tuner_simple tuner_types tea5767 tuner
+tvaudio bttv bridgebnep rfcomm l2cap bluetooth it87 hwmon_vid hwmon fuse sunrpc ipt_REJECT
+nf_conntrack_ipv4 iptable_filter ip_tables ip6t_REJECT xt_tcpudp nf_conntrack_ipv6 xt_state nf_conntrack
+ip6table_filter ip6_tables x_tables ipv6 dm_mirrordm_multipath dm_mod configfs videodev v4l1_compat
+ir_common 8139cp compat_ioctl32 v4l2_common 8139too videobuf_dma_sg videobuf_core mii btcx_risc tveeprom
+i915 button snd_page_alloc serio_raw drm pcspkr i2c_algo_bit i2c_i801 i2c_core iTCO_wdt
+iTCO_vendor_support sr_mod cdrom sg ata_generic pata_acpi ata_piix libata sd_mod scsi_mod ext3 jbdmbcache
+uhci_hcd ohci_hcd ehci_hcd [last unloaded: soundcore]
+
+Pid: 15413, comm: qv4l2 Not tainted (2.6.25.14-108.fc9.i686 #1)
+EIP: 0060:[<00000000>] EFLAGS: 00210246 CPU: 0
+EIP is at 0x0
+EAX: 00008000 EBX: ebd21600 ECX: e2fd9ec4 EDX: 00200046
+ESI: f8c0f0c4 EDI: f8c0f0c4 EBP: e2fd9d50 ESP: e2fd9d2c
+ DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
+Process qv4l2 (pid: 15413, ti=e2fd9000 task=ebe44000 task.ti=e2fd9000)
+Stack: f8c0c6ae e2ff2a00 00000d00 e2fd9ec4 ebc4e000 e2fd9d5c f8c0c448 00000000
+       f899c12a e2fd9d5c f899c154 e2fd9d68 e2fd9d80 c0560185 e2fd9d88 f8f3e1d8
+       f8f3e1dc ebc4e034 f8f3e18c e2fd9ec4 00000000 e2fd9d90 f899c286 c008561c
+Call Trace:
+ [<f8c0c6ae>] ? chip_command+0x266/0x4b6 [tvaudio]
+ [<f8c0c448>] ? chip_command+0x0/0x4b6 [tvaudio]
+ [<f899c12a>] ? i2c_cmd+0x0/0x2f [i2c_core]
+ [<f899c154>] ? i2c_cmd+0x2a/0x2f [i2c_core]
+ [<c0560185>] ? device_for_each_child+0x21/0x49
+ [<f899c286>] ? i2c_clients_command+0x1c/0x1e [i2c_core]
+ [<f8f283d8>] ? bttv_call_i2c_clients+0x14/0x16 [bttv]
+ [<f8f23601>] ? bttv_s_ctrl+0x1bc/0x313 [bttv]
+ [<f8f23445>] ? bttv_s_ctrl+0x0/0x313 [bttv]
+ [<f8b6096d>] ? __video_do_ioctl+0x1f84/0x3726 [videodev]
+ [<c05abb4e>] ? sock_aio_write+0x100/0x10d
+ [<c041b23e>] ? kmap_atomic_prot+0x1dd/0x1df
+ [<c043a0c9>] ? enqueue_hrtimer+0xc2/0xcd
+ [<c04f4fa4>] ? copy_from_user+0x39/0x121
+ [<f8b622b9>] ? __video_ioctl2+0x1aa/0x24a [videodev]
+ [<c04054fd>] ? do_notify_resume+0x768/0x795
+ [<c043c0f7>] ? getnstimeofday+0x34/0xd1
+ [<c0437b77>] ? autoremove_wake_function+0x0/0x33
+ [<f8b62368>] ? video_ioctl2+0xf/0x13 [videodev]
+ [<c048c6f0>] ? vfs_ioctl+0x50/0x69
+ [<c048c942>] ? do_vfs_ioctl+0x239/0x24c
+ [<c048c995>] ? sys_ioctl+0x40/0x5b
+ [<c0405bf2>] ? syscall_call+0x7/0xb
+ [<c0620000>] ? cpuid4_cache_sysfs_exit+0x3d/0x69
+ =======================
+Code:  Bad EIP value.
+EIP: [<00000000>] 0x0 SS:ESP 0068:e2fd9d2c
+
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/tvaudio.c |   15 +++++++--------
+ 1 file changed, 7 insertions(+), 8 deletions(-)
+
+--- a/drivers/media/video/tvaudio.c
++++ b/drivers/media/video/tvaudio.c
+@@ -1576,13 +1576,13 @@ static int tvaudio_get_ctrl(struct CHIPS
+               return 0;
+       }
+       case V4L2_CID_AUDIO_BASS:
+-              if (desc->flags & CHIP_HAS_BASSTREBLE)
++              if (!(desc->flags & CHIP_HAS_BASSTREBLE))
+                       break;
+               ctrl->value = chip->bass;
+               return 0;
+       case V4L2_CID_AUDIO_TREBLE:
+-              if (desc->flags & CHIP_HAS_BASSTREBLE)
+-                      return -EINVAL;
++              if (!(desc->flags & CHIP_HAS_BASSTREBLE))
++                      break;
+               ctrl->value = chip->treble;
+               return 0;
+       }
+@@ -1642,16 +1642,15 @@ static int tvaudio_set_ctrl(struct CHIPS
+               return 0;
+       }
+       case V4L2_CID_AUDIO_BASS:
+-              if (desc->flags & CHIP_HAS_BASSTREBLE)
++              if (!(desc->flags & CHIP_HAS_BASSTREBLE))
+                       break;
+               chip->bass = ctrl->value;
+               chip_write(chip,desc->bassreg,desc->bassfunc(chip->bass));
+               return 0;
+       case V4L2_CID_AUDIO_TREBLE:
+-              if (desc->flags & CHIP_HAS_BASSTREBLE)
+-                      return -EINVAL;
+-
++              if (!(desc->flags & CHIP_HAS_BASSTREBLE))
++                      break;
+               chip->treble = ctrl->value;
+               chip_write(chip,desc->treblereg,desc->treblefunc(chip->treble));
+@@ -1695,7 +1694,7 @@ static int chip_command(struct i2c_clien
+                               break;
+                       case V4L2_CID_AUDIO_BASS:
+                       case V4L2_CID_AUDIO_TREBLE:
+-                              if (desc->flags & CHIP_HAS_BASSTREBLE)
++                              if (!(desc->flags & CHIP_HAS_BASSTREBLE))
+                                       return -EINVAL;
+                               break;
+                       default:
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:44 2008
+Message-Id: <20081117070944.035183486@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Jens Axboe <jens.axboe@oracle.com>,
+ Heiko Carstens <heiko.carstens@de.ibm.com>,
+ Martin Schwidefsky <schwidefsky@de.ibm.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 26/46] S390: cpu topology: fix locking
+Content-Disposition: inline; filename=s390-cpu-topology-fix-locking.patch
+Content-Length: 2311
+Lines: 76
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Heiko Carstens <heiko.carstens@de.ibm.com>
+
+commit 74af283102b358b0da545460d0d176f473e110f6 upstream.
+
+cpu_coregroup_map used to grab a mutex on s390 since it was only
+called from process context.
+Since c7c22e4d5c1fdebfac4dba76de7d0338c2b0d832 "block: add support
+for IO CPU affinity" this is not true anymore.
+It now also gets called from softirq context.
+
+To prevent possible deadlocks change this in architecture code and
+use a spinlock instead of a mutex.
+
+Cc: Jens Axboe <jens.axboe@oracle.com>
+Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
+Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/s390/kernel/topology.c |   11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+--- a/arch/s390/kernel/topology.c
++++ b/arch/s390/kernel/topology.c
+@@ -65,18 +65,21 @@ static int machine_has_topology_irq;
+ static struct timer_list topology_timer;
+ static void set_topology_timer(void);
+ static DECLARE_WORK(topology_work, topology_work_fn);
++/* topology_lock protects the core linked list */
++static DEFINE_SPINLOCK(topology_lock);
+ cpumask_t cpu_core_map[NR_CPUS];
+ cpumask_t cpu_coregroup_map(unsigned int cpu)
+ {
+       struct core_info *core = &core_info;
++      unsigned long flags;
+       cpumask_t mask;
+       cpus_clear(mask);
+       if (!machine_has_topology)
+               return cpu_present_map;
+-      mutex_lock(&smp_cpu_state_mutex);
++      spin_lock_irqsave(&topology_lock, flags);
+       while (core) {
+               if (cpu_isset(cpu, core->mask)) {
+                       mask = core->mask;
+@@ -84,7 +87,7 @@ cpumask_t cpu_coregroup_map(unsigned int
+               }
+               core = core->next;
+       }
+-      mutex_unlock(&smp_cpu_state_mutex);
++      spin_unlock_irqrestore(&topology_lock, flags);
+       if (cpus_empty(mask))
+               mask = cpumask_of_cpu(cpu);
+       return mask;
+@@ -133,7 +136,7 @@ static void tl_to_cores(struct tl_info *
+       union tl_entry *tle, *end;
+       struct core_info *core = &core_info;
+-      mutex_lock(&smp_cpu_state_mutex);
++      spin_lock_irq(&topology_lock);
+       clear_cores();
+       tle = info->tle;
+       end = (union tl_entry *)((unsigned long)info + info->length);
+@@ -157,7 +160,7 @@ static void tl_to_cores(struct tl_info *
+               }
+               tle = next_tle(tle);
+       }
+-      mutex_unlock(&smp_cpu_state_mutex);
++      spin_unlock_irq(&topology_lock);
+ }
+ static void topology_update_polarization_simple(void)
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:44 2008
+Message-Id: <20081117070944.243835284@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Zhao Yakui <yakui.zhao@intel.com>,
+ Li Shaohua <shaohua.li@intel.com>,
+ Zhang Rui <rui.zhang@intel.com>,
+ Andi Kleen <ak@linux.intel.com>,
+ Len Brown <len.brown@intel.com>,
+ Holger Macht <hmacht@suse.de>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 27/46] ACPI : Load device driver according to the status of acpi device
+Content-Disposition: inline; filename=acpi-load-device-driver-according-to-the-status-of-acpi-device.patch
+Content-Length: 5135
+Lines: 141
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Zhao Yakui <yakui.zhao@intel.com>
+
+commit 39a0ad871000d2a016a4fa113a6e53d22aabf25d upstream.
+
+According to ACPI spec when the status of some device is not present
+but functional, the device is valid and the children of this device
+should be enumerated. It means that the device should be added to
+linux acpi device tree. But the device driver for this device should not
+be loaded.
+    The detailed info can be found in the section 6.3.7 of ACPI 3.0b spec.
+    _STA may return bit 0 clear (not present) with bit 3 set (device is
+functional). This case is used to indicate a valid device for which no
+device driver should be loaded (for example, a bridge device.).
+Children of this device may be present and valid. OS should continue
+enumeration below a device whose _STA returns this bit combination
+
+http://bugzilla.kernel.org/show_bug.cgi?id=3358
+
+Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
+Signed-off-by: Li Shaohua <shaohua.li@intel.com>
+Signed-off-by: Zhang Rui <rui.zhang@intel.com>
+Signed-off-by: Andi Kleen <ak@linux.intel.com>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Cc: Holger Macht <hmacht@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/bus.c         |   16 ++++++++--------
+ drivers/acpi/scan.c        |   35 +++++++++++++++++++++++++----------
+ drivers/pnp/pnpacpi/core.c |    6 +++++-
+ 3 files changed, 38 insertions(+), 19 deletions(-)
+
+--- a/drivers/acpi/bus.c
++++ b/drivers/acpi/bus.c
+@@ -95,21 +95,21 @@ int acpi_bus_get_status(struct acpi_devi
+       }
+       /*
+-       * Otherwise we assume the status of our parent (unless we don't
+-       * have one, in which case status is implied).
++       * According to ACPI spec some device can be present and functional
++       * even if the parent is not present but functional.
++       * In such conditions the child device should not inherit the status
++       * from the parent.
+        */
+-      else if (device->parent)
+-              device->status = device->parent->status;
+       else
+               STRUCT_TO_INT(device->status) =
+                   ACPI_STA_DEVICE_PRESENT | ACPI_STA_DEVICE_ENABLED |
+                   ACPI_STA_DEVICE_UI      | ACPI_STA_DEVICE_FUNCTIONING;
+       if (device->status.functional && !device->status.present) {
+-              printk(KERN_WARNING PREFIX "Device [%s] status [%08x]: "
+-                     "functional but not present; setting present\n",
+-                     device->pnp.bus_id, (u32) STRUCT_TO_INT(device->status));
+-              device->status.present = 1;
++              ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] status [%08x]: "
++                     "functional but not present;\n",
++                      device->pnp.bus_id,
++                      (u32) STRUCT_TO_INT(device->status)));
+       }
+       ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] status [%08x]\n",
+--- a/drivers/acpi/scan.c
++++ b/drivers/acpi/scan.c
+@@ -276,6 +276,13 @@ int acpi_match_device_ids(struct acpi_de
+ {
+       const struct acpi_device_id *id;
++      /*
++       * If the device is not present, it is unnecessary to load device
++       * driver for it.
++       */
++      if (!device->status.present)
++              return -ENODEV;
++
+       if (device->flags.hardware_id) {
+               for (id = ids; id->id[0]; id++) {
+                       if (!strcmp((char*)id->id, device->pnp.hardware_id))
+@@ -1221,15 +1228,18 @@ acpi_add_single_object(struct acpi_devic
+                       result = -ENODEV;
+                       goto end;
+               }
+-              if (!device->status.present) {
+-                      /* Bay and dock should be handled even if absent */
+-                      if (!ACPI_SUCCESS(
+-                           acpi_is_child_device(device, acpi_bay_match)) &&
+-                          !ACPI_SUCCESS(
+-                           acpi_is_child_device(device, acpi_dock_match))) {
+-                                      result = -ENODEV;
+-                                      goto end;
+-                      }
++              /*
++               * When the device is neither present nor functional, the
++               * device should not be added to Linux ACPI device tree.
++               * When the status of the device is not present but functinal,
++               * it should be added to Linux ACPI tree. For example : bay
++               * device , dock device.
++               * In such conditions it is unncessary to check whether it is
++               * bay device or dock device.
++               */
++              if (!device->status.present && !device->status.functional) {
++                      result = -ENODEV;
++                      goto end;
+               }
+               break;
+       default:
+@@ -1402,7 +1412,12 @@ static int acpi_bus_scan(struct acpi_dev
+                * TBD: Need notifications and other detection mechanisms
+                *      in place before we can fully implement this.
+                */
+-              if (child->status.present) {
++               /*
++               * When the device is not present but functional, it is also
++               * necessary to scan the children of this device.
++               */
++              if (child->status.present || (!child->status.present &&
++                                      child->status.functional)) {
+                       status = acpi_get_next_object(ACPI_TYPE_ANY, chandle,
+                                                     NULL, NULL);
+                       if (ACPI_SUCCESS(status)) {
+--- a/drivers/pnp/pnpacpi/core.c
++++ b/drivers/pnp/pnpacpi/core.c
+@@ -148,9 +148,13 @@ static int __init pnpacpi_add_device(str
+       acpi_status status;
+       struct pnp_dev *dev;
++      /*
++       * If a PnPacpi device is not present , the device
++       * driver should not be loaded.
++       */
+       status = acpi_get_handle(device->handle, "_CRS", &temp);
+       if (ACPI_FAILURE(status) || !ispnpidacpi(acpi_device_hid(device)) ||
+-          is_exclusive_device(device))
++          is_exclusive_device(device) || (!device->status.present))
+               return 0;
+       dev = pnp_alloc_dev(&pnpacpi_protocol, num, acpi_device_hid(device));
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:44 2008
+Message-Id: <20081117070944.450877170@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Geert Uytterhoeven <geert@linux-m68k.org>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 28/46] m68k: Fix off-by-one in m68k_setup_user_interrupt()
+Content-Disposition: inline; filename=m68k-fix-off-by-one-in-m68k_setup_user_interrupt.patch
+Content-Length: 1037
+Lines: 32
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Geert Uytterhoeven <geert@linux-m68k.org>
+
+commit 27123cbc264de89ce6951b1b4c84c223eb0f1702 upstream.
+
+commit 69961c375288bdab7604e0bb1c8d22999bb8a347 ("[PATCH] m68k/Atari:
+Interrupt updates") added a BUG_ON() with an incorrect upper bound
+comparison, which causes an early crash on VME boards, where IRQ_USER is
+8, cnt is 192 and NR_IRQS is 200.
+
+Reported-by: Stephen N Chivers <schivers@csc.com.au>
+Tested-by: Kars de Jong <jongk@linux-m68k.org>
+Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/m68k/kernel/ints.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/m68k/kernel/ints.c
++++ b/arch/m68k/kernel/ints.c
+@@ -133,7 +133,7 @@ void __init m68k_setup_user_interrupt(un
+ {
+       int i;
+-      BUG_ON(IRQ_USER + cnt >= NR_IRQS);
++      BUG_ON(IRQ_USER + cnt > NR_IRQS);
+       m68k_first_user_vec = vec;
+       for (i = 0; i < cnt; i++)
+               irq_controller[IRQ_USER + i] = &user_irq_controller;
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:45 2008
+Message-Id: <20081117070944.835411028@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Andrew Vasquez <andrew.vasquez@qlogic.com>,
+ James Bottomley <James.Bottomley@HansenPartnership.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 29/46] SCSI: qla2xxx: Return a FAILED status when abort mailbox-command fails.
+Content-Disposition: inline; filename=scsi-qla2xxx-return-a-failed-status-when-abort-mailbox-command-fails.patch
+Content-Length: 1315
+Lines: 35
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Michael Reed <mdr@sgi.com>
+
+commit 5bff55db3dc4d659f46b4d2fce2f61c1964c2762 upstream.
+
+Mike Reed noted
+(https://bugzilla.novell.com/show_bug.cgi?id=421330) that the
+driver was incorrectly returning a SUCCESS status if the driver's
+request to the firmware to abort a command failed.  By doing so,
+the mid-layer believed, incorrectly, that the command has
+completed and has been returned (ultimately clearing
+scsi_cmnd.request_buffer) yet the driver still has the command.
+What should correctly happen is a mid-layer escalation
+(device-reset, etc.) of recovery during which the driver will
+eventually return the outstanding commands to the mid-layer.
+
+Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
+Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/qla2xxx/qla_os.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/scsi/qla2xxx/qla_os.c
++++ b/drivers/scsi/qla2xxx/qla_os.c
+@@ -730,6 +730,7 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
+               if (ha->isp_ops->abort_command(ha, sp)) {
+                       DEBUG2(printk("%s(%ld): abort_command "
+                           "mbx failed.\n", __func__, ha->host_no));
++                      ret = FAILED;
+               } else {
+                       DEBUG3(printk("%s(%ld): abort_command "
+                           "mbx success.\n", __func__, ha->host_no));
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:45 2008
+Message-Id: <20081117070945.041509289@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Andrew Vasquez <andrew.vasquez@qlogic.com>,
+ James Bottomley <James.Bottomley@HansenPartnership.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 30/46] SCSI: qla2xxx: Do not honour max_vports from firmware for 2G ISPs and below.
+Content-Disposition: inline; filename=scsi-qla2xxx-do-not-honour-max_vports-from-firmware-for-2g-isps-and-below.patch
+Content-Length: 1476
+Lines: 47
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Shyam Sundar <shyam.sundar@qlogic.com>
+
+commit 680d7db88ace53c673e1c437c9b6abcc053e8d6f upstream.
+
+For 23XX ISPs, max_vports may return an invalid value.
+Do not honour it.
+
+Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
+Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/qla2xxx/qla_init.c |    2 +-
+ drivers/scsi/qla2xxx/qla_mbx.c  |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_init.c
++++ b/drivers/scsi/qla2xxx/qla_init.c
+@@ -974,7 +974,6 @@ qla2x00_setup_chip(scsi_qla_host_t *ha)
+                                   &ha->fw_minor_version,
+                                   &ha->fw_subminor_version,
+                                   &ha->fw_attributes, &ha->fw_memory_size);
+-                              qla2x00_resize_request_q(ha);
+                               ha->flags.npiv_supported = 0;
+                               if ((IS_QLA24XX(ha) || IS_QLA25XX(ha) ||
+                                    IS_QLA84XX(ha)) &&
+@@ -986,6 +985,7 @@ qla2x00_setup_chip(scsi_qla_host_t *ha)
+                                               ha->max_npiv_vports =
+                                                   MIN_MULTI_ID_FABRIC - 1;
+                               }
++                              qla2x00_resize_request_q(ha);
+                               if (ql2xallocfwdump)
+                                       qla2x00_alloc_fw_dump(ha);
+--- a/drivers/scsi/qla2xxx/qla_mbx.c
++++ b/drivers/scsi/qla2xxx/qla_mbx.c
+@@ -1964,7 +1964,7 @@ qla2x00_get_resource_cnts(scsi_qla_host_
+                       *cur_iocb_cnt = mcp->mb[7];
+               if (orig_iocb_cnt)
+                       *orig_iocb_cnt = mcp->mb[10];
+-              if (max_npiv_vports)
++              if (ha->flags.npiv_supported && max_npiv_vports)
+                       *max_npiv_vports = mcp->mb[11];
+       }
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:45 2008
+Message-Id: <20081117070945.249955195@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Lalit Chandivade <lalit.chandivade@qlogic.com>,
+ Andrew Vasquez <andrew.vasquez@qlogic.com>,
+ James Bottomley <James.Bottomley@HansenPartnership.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 31/46] SCSI: qla2xxx: Correct Atmel flash-part handling.
+Content-Disposition: inline; filename=scsi-qla2xxx-correct-atmel-flash-part-handling.patch
+Content-Length: 2973
+Lines: 87
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Lalit Chandivade <lalit.chandivade@qlogic.com>
+
+commit 821b3996001508e872582dcafc7575021f122728 upstream.
+
+Use correct block size (4K) for erase command 0x20 for Atmel
+Flash. Use dword addresses for determining sector boundary.
+
+Signed-off-by: Lalit Chandivade <lalit.chandivade@qlogic.com>
+Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
+Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/qla2xxx/qla_def.h |    1 -
+ drivers/scsi/qla2xxx/qla_sup.c |   19 +++++++------------
+ 2 files changed, 7 insertions(+), 13 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_def.h
++++ b/drivers/scsi/qla2xxx/qla_def.h
+@@ -2546,7 +2546,6 @@ typedef struct scsi_qla_host {
+       uint8_t         fcode_revision[16];
+       uint32_t        fw_revision[4];
+-      uint16_t        fdt_odd_index;
+       uint32_t        fdt_wrt_disable;
+       uint32_t        fdt_erase_cmd;
+       uint32_t        fdt_block_size;
+--- a/drivers/scsi/qla2xxx/qla_sup.c
++++ b/drivers/scsi/qla2xxx/qla_sup.c
+@@ -546,6 +546,7 @@ qla24xx_get_flash_manufacturer(scsi_qla_
+ void
+ qla2xxx_get_flash_info(scsi_qla_host_t *ha)
+ {
++#define FLASH_BLK_SIZE_4K     0x1000
+ #define FLASH_BLK_SIZE_32K    0x8000
+ #define FLASH_BLK_SIZE_64K    0x10000
+       uint16_t cnt, chksum;
+@@ -577,7 +578,6 @@ qla2xxx_get_flash_info(scsi_qla_host_t *
+               goto no_flash_data;
+       }
+-      ha->fdt_odd_index = le16_to_cpu(fdt->man_id) == 0x1f;
+       ha->fdt_wrt_disable = fdt->wrt_disable_bits;
+       ha->fdt_erase_cmd = flash_conf_to_access_addr(0x0300 | fdt->erase_cmd);
+       ha->fdt_block_size = le32_to_cpu(fdt->block_size);
+@@ -590,10 +590,10 @@ qla2xxx_get_flash_info(scsi_qla_host_t *
+       }
+       DEBUG2(qla_printk(KERN_DEBUG, ha, "Flash[FDT]: (0x%x/0x%x) erase=0x%x "
+-          "pro=%x upro=%x idx=%d wrtd=0x%x blk=0x%x.\n",
++          "pro=%x upro=%x wrtd=0x%x blk=0x%x.\n",
+           le16_to_cpu(fdt->man_id), le16_to_cpu(fdt->id), ha->fdt_erase_cmd,
+           ha->fdt_protect_sec_cmd, ha->fdt_unprotect_sec_cmd,
+-          ha->fdt_odd_index, ha->fdt_wrt_disable, ha->fdt_block_size));
++          ha->fdt_wrt_disable, ha->fdt_block_size));
+       return;
+ no_flash_data:
+@@ -614,8 +614,7 @@ no_flash_data:
+               ha->fdt_block_size = FLASH_BLK_SIZE_64K;
+               break;
+       case 0x1f: /* Atmel 26DF081A. */
+-              ha->fdt_odd_index = 1;
+-              ha->fdt_block_size = FLASH_BLK_SIZE_64K;
++              ha->fdt_block_size = FLASH_BLK_SIZE_4K;
+               ha->fdt_erase_cmd = flash_conf_to_access_addr(0x0320);
+               ha->fdt_unprotect_sec_cmd = flash_conf_to_access_addr(0x0339);
+               ha->fdt_protect_sec_cmd = flash_conf_to_access_addr(0x0336);
+@@ -710,13 +709,9 @@ qla24xx_write_flash_data(scsi_qla_host_t
+       qla24xx_unprotect_flash(ha);
+       for (liter = 0; liter < dwords; liter++, faddr++, dwptr++) {
+-              if (ha->fdt_odd_index) {
+-                      findex = faddr << 2;
+-                      fdata = findex & sec_mask;
+-              } else {
+-                      findex = faddr;
+-                      fdata = (findex & sec_mask) << 2;
+-              }
++
++              findex = faddr;
++              fdata = (findex & sec_mask) << 2;
+               /* Are we at the beginning of a sector? */
+               if ((findex & rest_addr) == 0) {
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:45 2008
+Message-Id: <20081117070945.457899851@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Miquel van Smoorenburg <mikevs@xs4all.net>,
+ James Bottomley <James.Bottomley@HansenPartnership.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 32/46] SCSI: dpt_i2o: fix transferred data length for scsi_set_resid()
+Content-Disposition: inline; filename=scsi-dpt_i2o-fix-transferred-data-length-for-scsi_set_resid.patch
+Content-Length: 1723
+Lines: 50
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Miquel van Smoorenburg <mikevs@xs4all.net>
+
+commit df81d2371aeca0f7474f197a3090830899016e39 upstream.
+
+dpt_i2o.c::adpt_i2o_to_scsi() reads the value at (reply+5) which
+should contain the length in bytes of the transferred data. This
+would be correct if reply was a u32 *. However it is a void * here,
+so we need to read the value at (reply+20) instead.
+
+The value at (reply+5) is usually 0xff0000, which is apparently
+'large enough' and didn't cause any trouble until 2.6.27 where
+
+commit 427e59f09fdba387547106de7bab980b7fff77be
+Author: James Bottomley <James.Bottomley@HansenPartnership.com>
+Date:   Sat Mar 8 18:24:17 2008 -0600
+
+    [SCSI] make use of the residue value
+
+caused this to become visible through e.g. iostat -x .
+
+Signed-off-by: Miquel van Smoorenburg <mikevs@xs4all.net>
+Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/dpt_i2o.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/dpt_i2o.c
++++ b/drivers/scsi/dpt_i2o.c
+@@ -2445,7 +2445,7 @@ static s32 adpt_i2o_to_scsi(void __iomem
+       hba_status = detailed_status >> 8;
+       // calculate resid for sg 
+-      scsi_set_resid(cmd, scsi_bufflen(cmd) - readl(reply+5));
++      scsi_set_resid(cmd, scsi_bufflen(cmd) - readl(reply+20));
+       pHba = (adpt_hba*) cmd->device->host->hostdata[0];
+@@ -2456,7 +2456,7 @@ static s32 adpt_i2o_to_scsi(void __iomem
+               case I2O_SCSI_DSC_SUCCESS:
+                       cmd->result = (DID_OK << 16);
+                       // handle underflow
+-                      if(readl(reply+5) < cmd->underflow ) {
++                      if (readl(reply+20) < cmd->underflow) {
+                               cmd->result = (DID_ERROR <<16);
+                               printk(KERN_WARNING"%s: SCSI CMD underflow\n",pHba->name);
+                       }
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:46 2008
+Message-Id: <20081117070945.842965620@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Mikulas Patocka <mpatocka@redhat.com>,
+ Alasdair G Kergon <agk@redhat.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 33/46] dm raid1: flush workqueue before destruction
+Content-Disposition: inline; filename=dm-raid1-flush-workqueue-before-destruction.patch
+Content-Length: 819
+Lines: 27
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Mikulas Patocka <mpatocka@redhat.com>
+
+commit 18776c7316545482a02bfaa2629a2aa1afc48357 upstream.
+
+We queue work on keventd queue --- so this queue must be flushed in the
+destructor. Otherwise, keventd could access mirror_set after it was freed.
+
+Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
+Signed-off-by: Alasdair G Kergon <agk@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/dm-raid1.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/md/dm-raid1.c
++++ b/drivers/md/dm-raid1.c
+@@ -1598,6 +1598,7 @@ static void mirror_dtr(struct dm_target 
+       del_timer_sync(&ms->timer);
+       flush_workqueue(ms->kmirrord_wq);
++      flush_scheduled_work();
+       dm_kcopyd_client_destroy(ms->kcopyd_client);
+       destroy_workqueue(ms->kmirrord_wq);
+       free_context(ms, ti, ms->nr_mirrors);
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:46 2008
+Message-Id: <20081117070946.048808122@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 34/46] USB: remove optional bus bindings in isp1760, fixing runtime warning
+Content-Disposition: inline; filename=usb-remove-optional-bus-bindings-in-isp1760-fixing-runtime-warning.patch
+Content-Length: 4610
+Lines: 160
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+
+commit ff30bf1ca4b548c0928dae6bfce89458b95e5bf4 upstream.
+
+Roland Reported the following:
+| kmem_cache_create: duplicate cache isp1760_qtd
+| Pid: 461, comm: modprobe Tainted: G        W  2.6.28-rc2-git3-default #4
+| Call Trace:
+|  [<c017540e>] kmem_cache_create+0xc9/0x3a3
+|  [<c0159a8d>] free_pages_bulk+0x16c/0x1c9
+|  [<f165c05f>] isp1760_init+0x0/0xb [isp1760]
+|  [<f165c018>] init_kmem_once+0x18/0x5f [isp1760]
+|  [<f165c064>] isp1760_init+0x5/0xb [isp1760]
+|  [<c010113d>] _stext+0x4d/0x148
+|  [<c0142936>] load_module+0x12cd/0x142e
+|  [<c01743c4>] kmem_cache_destroy+0x0/0xd7
+|  [<c0142b1e>] sys_init_module+0x87/0x176
+|  [<c01039eb>] sysenter_do_call+0x12/0x2f
+
+The reason, is that ret is initialized with ENODEV instead of 0 _or_
+the kmem cache is not freed in error case with no bus binding.
+
+The difference between OF+PCI and OF only is
+| 15148     804      32   15984    3e70 isp1760-of-pci.o
+| 13748     676       8   14432    3860 isp1760-of.o
+
+about 1.5 KiB.
+
+Until there is a checkbox where the user *must* select atleast one item,
+and may select multiple entries I don't make it selectable anymore.
+Having a driver which can't be used under any circumstances is broken
+anyway and I've seen distros shipping it that way.
+
+Reported-by: Roland Kletzing <devzero@web.de>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/Kconfig      |   23 ++++++-----------------
+ drivers/usb/host/isp1760-if.c |   22 +++++++++++-----------
+ 2 files changed, 17 insertions(+), 28 deletions(-)
+
+--- a/drivers/usb/host/isp1760-if.c
++++ b/drivers/usb/host/isp1760-if.c
+@@ -14,16 +14,16 @@
+ #include "../core/hcd.h"
+ #include "isp1760-hcd.h"
+-#ifdef CONFIG_USB_ISP1760_OF
++#ifdef CONFIG_PPC_OF
+ #include <linux/of.h>
+ #include <linux/of_platform.h>
+ #endif
+-#ifdef CONFIG_USB_ISP1760_PCI
++#ifdef CONFIG_PCI
+ #include <linux/pci.h>
+ #endif
+-#ifdef CONFIG_USB_ISP1760_OF
++#ifdef CONFIG_PPC_OF
+ static int of_isp1760_probe(struct of_device *dev,
+               const struct of_device_id *match)
+ {
+@@ -128,7 +128,7 @@ static struct of_platform_driver isp1760
+ };
+ #endif
+-#ifdef CONFIG_USB_ISP1760_PCI
++#ifdef CONFIG_PCI
+ static u32 nxp_pci_io_base;
+ static u32 iolength;
+ static u32 pci_mem_phy0;
+@@ -287,28 +287,28 @@ static struct pci_driver isp1761_pci_dri
+ static int __init isp1760_init(void)
+ {
+-      int ret = -ENODEV;
++      int ret;
+       init_kmem_once();
+-#ifdef CONFIG_USB_ISP1760_OF
++#ifdef CONFIG_PPC_OF
+       ret = of_register_platform_driver(&isp1760_of_driver);
+       if (ret) {
+               deinit_kmem_cache();
+               return ret;
+       }
+ #endif
+-#ifdef CONFIG_USB_ISP1760_PCI
++#ifdef CONFIG_PCI
+       ret = pci_register_driver(&isp1761_pci_driver);
+       if (ret)
+               goto unreg_of;
+ #endif
+       return ret;
+-#ifdef CONFIG_USB_ISP1760_PCI
++#ifdef CONFIG_PCI
+ unreg_of:
+ #endif
+-#ifdef CONFIG_USB_ISP1760_OF
++#ifdef CONFIG_PPC_OF
+       of_unregister_platform_driver(&isp1760_of_driver);
+ #endif
+       deinit_kmem_cache();
+@@ -318,10 +318,10 @@ module_init(isp1760_init);
+ static void __exit isp1760_exit(void)
+ {
+-#ifdef CONFIG_USB_ISP1760_OF
++#ifdef CONFIG_PPC_OF
+       of_unregister_platform_driver(&isp1760_of_driver);
+ #endif
+-#ifdef CONFIG_USB_ISP1760_PCI
++#ifdef CONFIG_PCI
+       pci_unregister_driver(&isp1761_pci_driver);
+ #endif
+       deinit_kmem_cache();
+--- a/drivers/usb/host/Kconfig
++++ b/drivers/usb/host/Kconfig
+@@ -110,29 +110,18 @@ config USB_ISP116X_HCD
+ config USB_ISP1760_HCD
+       tristate "ISP 1760 HCD support"
+-      depends on USB && EXPERIMENTAL
++      depends on USB && EXPERIMENTAL && (PCI || PPC_OF)
+       ---help---
+         The ISP1760 chip is a USB 2.0 host controller.
+         This driver does not support isochronous transfers or OTG.
++        This USB controller is usually attached to a non-DMA-Master
++        capable bus. NXP's eval kit brings this chip on PCI card
++        where the chip itself is behind a PLB to simulate such
++        a bus.
+         To compile this driver as a module, choose M here: the
+-        module will be called isp1760-hcd.
+-
+-config USB_ISP1760_PCI
+-      bool "Support for the PCI bus"
+-      depends on USB_ISP1760_HCD && PCI
+-      ---help---
+-        Enables support for the device present on the PCI bus.
+-        This should only be required if you happen to have the eval kit from
+-        NXP and you are going to test it.
+-
+-config USB_ISP1760_OF
+-      bool "Support for the OF platform bus"
+-      depends on USB_ISP1760_HCD && PPC_OF
+-      ---help---
+-        Enables support for the device present on the PowerPC
+-        OpenFirmware platform bus.
++        module will be called isp1760.
+ config USB_OHCI_HCD
+       tristate "OHCI HCD support"
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:46 2008
+Message-Id: <20081117070946.254148325@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ David Brownell <dbrownell@users.sourceforge.net>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 35/46] USB: gadget: cdc-acm deadlock fix
+Content-Disposition: inline; filename=usb-gadget-cdc-acm-deadlock-fix.patch
+Content-Length: 1374
+Lines: 40
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: David Brownell <dbrownell@users.sourceforge.net>
+
+commit e50ae572b33646656fa7037541613834dcadedfb upstream.
+
+This fixes a deadlock appearing with some USB peripheral drivers
+when running CDC ACM gadget code.
+
+The newish (2.6.27) CDC ACM event notification mechanism sends
+messages (IN to the host) which are short enough to fit in most
+FIFOs.  That means that with some peripheral controller drivers
+(evidently not the ones used to verify the notification code!!)
+the completion callback can be issued before queue() returns.
+
+The deadlock would come because the completion callback and the
+event-issuing code shared a spinlock.  Fix is trivial:  drop
+that lock while queueing the message.
+
+Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/f_acm.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/usb/gadget/f_acm.c
++++ b/drivers/usb/gadget/f_acm.c
+@@ -463,7 +463,11 @@ static int acm_cdc_notify(struct f_acm *
+       notify->wLength = cpu_to_le16(length);
+       memcpy(buf, data, length);
++      /* ep_queue() can complete immediately if it fills the fifo... */
++      spin_unlock(&acm->lock);
+       status = usb_ep_queue(ep, req, GFP_ATOMIC);
++      spin_lock(&acm->lock);
++
+       if (status < 0) {
+               ERROR(acm->port.func.config->cdev,
+                               "acm ttyGS%d can't notify serial state, %d\n",
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:46 2008
+Message-Id: <20081117070946.459388377@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Alan Stern <stern@rowland.harvard.edu>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 36/46] USB: unusual_devs entry for Argosy USB mass-storage interface
+Content-Disposition: inline; filename=usb-unusual_devs-entry-for-argosy-usb-mass-storage-interface.patch
+Content-Length: 1085
+Lines: 33
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 8010e06cc90367b4d3fba3b0ec3ced32360ac890 upstream.
+
+This patch (as1162) adds an unusual_devs entry for Argosy's USB-IDE
+interface.  This fixes Bugzilla #11843.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Tested-by: Luciano Rocha <luciano@eurotux.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -1251,6 +1251,13 @@ UNUSUAL_DEV( 0x0839, 0x000a, 0x0001, 0x0
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
+               US_FL_FIX_INQUIRY),
++/* Reported by Luciano Rocha <luciano@eurotux.com> */
++UNUSUAL_DEV( 0x0840, 0x0082, 0x0001, 0x0001,
++              "Argosy",
++              "Storage",
++              US_SC_DEVICE, US_PR_DEVICE, NULL,
++              US_FL_FIX_CAPACITY),
++
+ /* Entry and supporting patch by Theodore Kilgore <kilgota@auburn.edu>.
+  * Flag will support Bulk devices which use a standards-violating 32-byte
+  * Command Block Wrapper. Here, the "DC2MEGA" cameras (several brands) with
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:47 2008
+Message-Id: <20081117070946.844340935@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Geoff Levand <geoffrey.levand@am.sony.com>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 37/46] USB: Fix PS3 USB shutdown problems
+Content-Disposition: inline; filename=usb-fix-ps3-usb-shutdown-problems.patch
+Content-Length: 1549
+Lines: 57
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Geoff Levand <geoffrey.levand@am.sony.com>
+
+commit ddcb01ff9bf49c4dbbb058423559f7bc90b89374 upstream.
+
+Add ehci_shutdown() or ohci_shutdown() calls to the USB
+PS3 bus glue.  ehci_shutdown() and ohci_shutdown() do some
+controller specific cleanups not done by usb_remove_hcd().
+
+Fixes errors on shutdown or reboot similar to these:
+
+  ps3-ehci-driver sb_07: HC died; cleaning up
+  irq 51: nobody cared (try booting with the "irqpoll" option)
+
+Related bugzilla reports:
+
+  http://bugzilla.kernel.org/show_bug.cgi?id=11819
+  http://bugzilla.terrasoftsolutions.com/show_bug.cgi?id=317
+
+Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-ps3.c |    1 +
+ drivers/usb/host/ohci-ps3.c |    3 ++-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/host/ehci-ps3.c
++++ b/drivers/usb/host/ehci-ps3.c
+@@ -205,6 +205,7 @@ static int ps3_ehci_remove(struct ps3_sy
+       tmp = hcd->irq;
++      ehci_shutdown(hcd);
+       usb_remove_hcd(hcd);
+       ps3_system_bus_set_driver_data(dev, NULL);
+--- a/drivers/usb/host/ohci-ps3.c
++++ b/drivers/usb/host/ohci-ps3.c
+@@ -192,7 +192,7 @@ fail_start:
+       return result;
+ }
+-static int ps3_ohci_remove (struct ps3_system_bus_device *dev)
++static int ps3_ohci_remove(struct ps3_system_bus_device *dev)
+ {
+       unsigned int tmp;
+       struct usb_hcd *hcd =
+@@ -205,6 +205,7 @@ static int ps3_ohci_remove (struct ps3_s
+       tmp = hcd->irq;
++      ohci_shutdown(hcd);
+       usb_remove_hcd(hcd);
+       ps3_system_bus_set_driver_data(dev, NULL);
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:47 2008
+Message-Id: <20081117070947.053658879@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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,
+ Brandon Philips <bphilips@suse.de>,
+ Oliver Neukum <oliver@neukum.org>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 38/46] USB: cdc-acm.c: fix recursive lock in acm_start_wb error path
+Content-Disposition: inline; filename=usb-cdc-acm.c-fix-recursive-lock-in-acm_start_wb-error-path.patch
+Content-Length: 2898
+Lines: 92
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Brandon Philips <brandon@ifup.org>
+
+commit ad0b65efd12d020b046cde8d6f474e37bb98dd73 upstream.
+
+Fixes an obvious bug in cdc-acm by avoiding a recursive lock on
+acm_start_wb()'s error path. Should apply towards 2.6.27 stable and
+2.6.28.
+
+=============================================
+[ INFO: possible recursive locking detected ]
+2.6.27-2-pae #109
+---------------------------------------------
+python/31449 is trying to acquire lock:
+ (&acm->write_lock){++..}, at: [<f89a0348>] acm_start_wb+0x5c/0x7b [cdc_acm]
+
+but task is already holding lock:
+ (&acm->write_lock){++..}, at: [<f89a04fb>] acm_tty_write+0xe1/0x167 [cdc_acm]
+
+other info that might help us debug this:
+2 locks held by python/31449:
+ #0:  (&tty->atomic_write_lock){--..}, at: [<c0260fae>] tty_write_lock+0x14/0x3b
+ #1:  (&acm->write_lock){++..}, at: [<f89a04fb>] acm_tty_write+0xe1/0x167 [cdc_acm]
+
+stack backtrace:
+Pid: 31449, comm: python Not tainted 2.6.27-2-pae #109
+ [<c030f42f>] ? printk+0xf/0x18
+ [<c0149f33>] __lock_acquire+0xc7b/0x1316
+ [<c014a63e>] lock_acquire+0x70/0x97
+ [<f89a0348>] ? acm_start_wb+0x5c/0x7b [cdc_acm]
+ [<c0312109>] _spin_lock_irqsave+0x37/0x47
+ [<f89a0348>] ? acm_start_wb+0x5c/0x7b [cdc_acm]
+ [<f89a0348>] acm_start_wb+0x5c/0x7b [cdc_acm]
+ [<f89a055d>] acm_tty_write+0x143/0x167 [cdc_acm]
+ [<c0262a98>] write_chan+0x1cd/0x297
+ [<c012527e>] ? default_wake_function+0x0/0xd
+ [<c026111e>] tty_write+0x149/0x1b9
+ [<c02628cb>] ? write_chan+0x0/0x297
+ [<c01912c5>] ? rw_verify_area+0x76/0x98
+ [<c0260fd5>] ? tty_write+0x0/0x1b9
+ [<c01919ba>] vfs_write+0x8c/0x136
+ [<c0191afd>] sys_write+0x3b/0x60
+ [<c0103beb>] sysenter_do_call+0x12/0x3f
+ =======================
+
+Signed-off-by: Brandon Philips <bphilips@suse.de>
+Cc: Oliver Neukum <oliver@neukum.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/class/cdc-acm.c |    9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+--- a/drivers/usb/class/cdc-acm.c
++++ b/drivers/usb/class/cdc-acm.c
+@@ -158,16 +158,12 @@ static int acm_wb_is_avail(struct acm *a
+ }
+ /*
+- * Finish write.
++ * Finish write. Caller must hold acm->write_lock
+  */
+ static void acm_write_done(struct acm *acm, struct acm_wb *wb)
+ {
+-      unsigned long flags;
+-
+-      spin_lock_irqsave(&acm->write_lock, flags);
+       wb->use = 0;
+       acm->transmitting--;
+-      spin_unlock_irqrestore(&acm->write_lock, flags);
+ }
+ /*
+@@ -482,6 +478,7 @@ static void acm_write_bulk(struct urb *u
+ {
+       struct acm_wb *wb = urb->context;
+       struct acm *acm = wb->instance;
++      unsigned long flags;
+       if (verbose || urb->status
+                       || (urb->actual_length != urb->transfer_buffer_length))
+@@ -490,7 +487,9 @@ static void acm_write_bulk(struct urb *u
+                       urb->transfer_buffer_length,
+                       urb->status);
++      spin_lock_irqsave(&acm->write_lock, flags);
+       acm_write_done(acm, wb);
++      spin_unlock_irqrestore(&acm->write_lock, flags);
+       if (ACM_READY(acm))
+               schedule_work(&acm->work);
+       else
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:47 2008
+Message-Id: <20081117070947.260841565@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:07: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,
+ Alan Stern <stern@rowland.harvard.edu>,
+ David Brownell <david-b@pacbell.net>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 39/46] USB: EHCI: fix divide-by-zero bug
+Content-Disposition: inline; filename=usb-ehci-fix-divide-by-zero-bug.patch
+Content-Length: 1175
+Lines: 39
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 372dd6e8ed924e876f3beb598721e813ad7fa323 upstream.
+
+This patch (as1164) fixes a bug in the EHCI scheduler.  The interval
+value it uses is already in linear format, not logarithmically coded.
+The existing code can sometimes crash the system by trying to divide
+by zero.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Cc: David Brownell <david-b@pacbell.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-sched.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/host/ehci-sched.c
++++ b/drivers/usb/host/ehci-sched.c
+@@ -918,7 +918,7 @@ iso_stream_init (
+                */
+               stream->usecs = HS_USECS_ISO (maxp);
+               bandwidth = stream->usecs * 8;
+-              bandwidth /= 1 << (interval - 1);
++              bandwidth /= interval;
+       } else {
+               u32             addr;
+@@ -951,7 +951,7 @@ iso_stream_init (
+               } else
+                       stream->raw_mask = smask_out [hs_transfers - 1];
+               bandwidth = stream->usecs + stream->c_usecs;
+-              bandwidth /= 1 << (interval + 2);
++              bandwidth /= interval << 3;
+               /* stream->splits gets created from raw_mask later */
+               stream->address = cpu_to_hc32(ehci, addr);
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:47 2008
+Message-Id: <20081117070947.466679807@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:07: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,
+ Alan Stern <stern@rowland.harvard.edu>,
+ David Brownell <david-b@pacbell.net>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 40/46] USB: EHCI: fix handling of dead controllers
+Content-Disposition: inline; filename=usb-ehci-fix-handling-of-dead-controllers.patch
+Content-Length: 2659
+Lines: 86
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 67b2e029743a52670d77864723b4d0d40f7733b5 upstream.
+
+This patch (as1165) makes a few small changes in the logic used by
+ehci-hcd when it encounters a controller error:
+
+       Instead of printing out the masked status, it prints the
+       original status as read directly from the hardware.
+
+       It doesn't check for the STS_HALT status bit before taking
+       action.  The mere fact that the STS_FATAL bit is set means
+       that something bad has happened and the controller needs to
+       be reset.  With the old code this test could never succeed
+       because the STS_HALT bit was masked out from the status.
+
+I anticipate that this will prevent the occasional "irq X: nobody cared"
+problem people encounter when their EHCI controllers die.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Cc: David Brownell <david-b@pacbell.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-hcd.c |   25 ++++++++++++-------------
+ 1 file changed, 12 insertions(+), 13 deletions(-)
+
+--- a/drivers/usb/host/ehci-hcd.c
++++ b/drivers/usb/host/ehci-hcd.c
+@@ -643,7 +643,7 @@ static int ehci_run (struct usb_hcd *hcd
+ static irqreturn_t ehci_irq (struct usb_hcd *hcd)
+ {
+       struct ehci_hcd         *ehci = hcd_to_ehci (hcd);
+-      u32                     status, pcd_status = 0, cmd;
++      u32                     status, masked_status, pcd_status = 0, cmd;
+       int                     bh;
+       spin_lock (&ehci->lock);
+@@ -656,14 +656,14 @@ static irqreturn_t ehci_irq (struct usb_
+               goto dead;
+       }
+-      status &= INTR_MASK;
+-      if (!status) {                  /* irq sharing? */
++      masked_status = status & INTR_MASK;
++      if (!masked_status) {           /* irq sharing? */
+               spin_unlock(&ehci->lock);
+               return IRQ_NONE;
+       }
+       /* clear (just) interrupts */
+-      ehci_writel(ehci, status, &ehci->regs->status);
++      ehci_writel(ehci, masked_status, &ehci->regs->status);
+       cmd = ehci_readl(ehci, &ehci->regs->command);
+       bh = 0;
+@@ -731,19 +731,18 @@ static irqreturn_t ehci_irq (struct usb_
+       /* PCI errors [4.15.2.4] */
+       if (unlikely ((status & STS_FATAL) != 0)) {
++              ehci_err(ehci, "fatal error\n");
+               dbg_cmd (ehci, "fatal", ehci_readl(ehci,
+                                                  &ehci->regs->command));
+               dbg_status (ehci, "fatal", status);
+-              if (status & STS_HALT) {
+-                      ehci_err (ehci, "fatal error\n");
++              ehci_halt(ehci);
+ dead:
+-                      ehci_reset (ehci);
+-                      ehci_writel(ehci, 0, &ehci->regs->configured_flag);
+-                      /* generic layer kills/unlinks all urbs, then
+-                       * uses ehci_stop to clean up the rest
+-                       */
+-                      bh = 1;
+-              }
++              ehci_reset(ehci);
++              ehci_writel(ehci, 0, &ehci->regs->configured_flag);
++              /* generic layer kills/unlinks all urbs, then
++               * uses ehci_stop to clean up the rest
++               */
++              bh = 1;
+       }
+       if (bh)
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:48 2008
+Message-Id: <20081117070947.865228295@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:07: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,
+ Alan Stern <stern@rowland.harvard.edu>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 41/46] USB: dont register endpoints for interfaces that are going away
+Content-Disposition: inline; filename=usb-don-t-register-endpoints-for-interfaces-that-are-going-away.patch
+Content-Length: 2779
+Lines: 66
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 352d026338378b1f13f044e33c1047da6e470056 upstream.
+
+This patch (as1155) fixes a bug in usbcore.  When interfaces are
+deleted, either because the device was disconnected or because of a
+configuration change, the extra attribute files and child endpoint
+devices may get left behind.  This is because the core removes them
+before calling device_del().  But during device_del(), after the
+driver is unbound the core will reinstall altsetting 0 and recreate
+those extra attributes and children.
+
+The patch prevents this by adding a flag to record when the interface
+is in the midst of being unregistered.  When the flag is set, the
+attribute files and child devices will not be created.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/message.c |    1 +
+ drivers/usb/core/sysfs.c   |    2 +-
+ include/linux/usb.h        |    2 ++
+ 3 files changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/core/message.c
++++ b/drivers/usb/core/message.c
+@@ -1091,6 +1091,7 @@ void usb_disable_device(struct usb_devic
+                               continue;
+                       dev_dbg(&dev->dev, "unregistering interface %s\n",
+                               dev_name(&interface->dev));
++                      interface->unregistering = 1;
+                       usb_remove_sysfs_intf_files(interface);
+                       device_del(&interface->dev);
+               }
+--- a/drivers/usb/core/sysfs.c
++++ b/drivers/usb/core/sysfs.c
+@@ -816,7 +816,7 @@ int usb_create_sysfs_intf_files(struct u
+       struct usb_host_interface *alt = intf->cur_altsetting;
+       int retval;
+-      if (intf->sysfs_files_created)
++      if (intf->sysfs_files_created || intf->unregistering)
+               return 0;
+       /* The interface string may be present in some altsettings
+--- a/include/linux/usb.h
++++ b/include/linux/usb.h
+@@ -108,6 +108,7 @@ enum usb_interface_condition {
+  *    (in probe()), bound to a driver, or unbinding (in disconnect())
+  * @is_active: flag set when the interface is bound and not suspended.
+  * @sysfs_files_created: sysfs attributes exist
++ * @unregistering: flag set when the interface is being unregistered
+  * @needs_remote_wakeup: flag set when the driver requires remote-wakeup
+  *    capability during autosuspend.
+  * @needs_altsetting0: flag set when a set-interface request for altsetting 0
+@@ -163,6 +164,7 @@ struct usb_interface {
+       enum usb_interface_condition condition;         /* state of binding */
+       unsigned is_active:1;           /* the interface is not suspended */
+       unsigned sysfs_files_created:1; /* the sysfs attributes exist */
++      unsigned unregistering:1;       /* unregistration is in progress */
+       unsigned needs_remote_wakeup:1; /* driver requires remote wakeup */
+       unsigned needs_altsetting0:1;   /* switch to altsetting 0 is pending */
+       unsigned needs_binding:1;       /* needs delayed unbind/rebind */
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:48 2008
+Message-Id: <20081117070948.090253753@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:07: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,
+ Alexey Starikovskiy <astarikovskiy@suse.de>,
+ Len Brown <len.brown@intel.com>,
+ "Rafael J. Wysocki" <rjw@sisk.pl>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 42/46] ACPI: EC: revert msleep patch
+Content-Disposition: inline; filename=acpi-ec-revert-msleep-patch.patch
+Content-Length: 1047
+Lines: 37
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alexey Starikovskiy <astarikovskiy@suse.de>
+
+commit 1cfe62c8010ac56e1bd3827e30386a87cc2f3594 upstream.
+
+With the better solution for EC interrupt storm issue,
+there is no need to use msleep over udelay.
+
+References:
+       http://bugzilla.kernel.org/show_bug.cgi?id=11810
+       http://bugzilla.kernel.org/show_bug.cgi?id=10724
+
+Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Cc: Rafael J. Wysocki <rjw@sisk.pl>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/ec.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/acpi/ec.c
++++ b/drivers/acpi/ec.c
+@@ -239,10 +239,10 @@ static int ec_check_sci(struct acpi_ec *
+ static int ec_poll(struct acpi_ec *ec)
+ {
+       unsigned long delay = jiffies + msecs_to_jiffies(ACPI_EC_DELAY);
+-      msleep(1);
++      udelay(ACPI_EC_UDELAY);
+       while (time_before(jiffies, delay)) {
+               gpe_transaction(ec, acpi_ec_read_status(ec));
+-              msleep(1);
++              udelay(ACPI_EC_UDELAY);
+               if (ec_transaction_done(ec))
+                       return 0;
+       }
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:48 2008
+Message-Id: <20081117070948.293485868@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:07: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,
+ Alexey Starikovskiy <astarikovskiy@suse.de>,
+ Len Brown <len.brown@intel.com>,
+ "Rafael J. Wysocki" <rjw@sisk.pl>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 43/46] ACPI: EC: wait for last write gpe
+Content-Disposition: inline; filename=acpi-ec-wait-for-last-write-gpe.patch
+Content-Length: 2156
+Lines: 74
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alexey Starikovskiy <astarikovskiy@suse.de>
+
+commit dd15f8c42af09031e27da5b4d697ce925511f2e1 upstream.
+
+There is a possibility that EC might break if next command is
+issued within 1 us after write or burst-disable command.
+
+Suggestd-by: Zhao Yakui <yakui.zhao@intel.com>
+Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Cc: Rafael J. Wysocki <rjw@sisk.pl>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/ec.c |   21 +++++++++++++--------
+ 1 file changed, 13 insertions(+), 8 deletions(-)
+
+--- a/drivers/acpi/ec.c
++++ b/drivers/acpi/ec.c
+@@ -102,6 +102,7 @@ struct transaction {
+       u8 command;
+       u8 wlen;
+       u8 rlen;
++      bool done;
+ };
+ static struct acpi_ec {
+@@ -178,7 +179,7 @@ static int ec_transaction_done(struct ac
+       unsigned long flags;
+       int ret = 0;
+       spin_lock_irqsave(&ec->curr_lock, flags);
+-      if (!ec->curr || (!ec->curr->wlen && !ec->curr->rlen))
++      if (!ec->curr || ec->curr->done)
+               ret = 1;
+       spin_unlock_irqrestore(&ec->curr_lock, flags);
+       return ret;
+@@ -195,17 +196,20 @@ static void gpe_transaction(struct acpi_
+                       acpi_ec_write_data(ec, *(ec->curr->wdata++));
+                       --ec->curr->wlen;
+               } else
+-                      /* false interrupt, state didn't change */
+-                      ++ec->curr->irq_count;
+-
++                      goto err;
+       } else if (ec->curr->rlen > 0) {
+               if ((status & ACPI_EC_FLAG_OBF) == 1) {
+                       *(ec->curr->rdata++) = acpi_ec_read_data(ec);
+-                      --ec->curr->rlen;
++                      if (--ec->curr->rlen == 0)
++                              ec->curr->done = true;
+               } else
+-                      /* false interrupt, state didn't change */
+-                      ++ec->curr->irq_count;
+-      }
++                      goto err;
++      } else if (ec->curr->wlen == 0 && (status & ACPI_EC_FLAG_IBF) == 0)
++              ec->curr->done = true;
++      goto unlock;
++err:
++      /* false interrupt, state didn't change */
++      ++ec->curr->irq_count;
+ unlock:
+       spin_unlock_irqrestore(&ec->curr_lock, flags);
+ }
+@@ -265,6 +269,7 @@ static int acpi_ec_transaction_unlocked(
+       spin_lock_irqsave(&ec->curr_lock, tmp);
+       /* following two actions should be kept atomic */
+       t->irq_count = 0;
++      t->done = false;
+       ec->curr = t;
+       acpi_ec_write_cmd(ec, ec->curr->command);
+       if (ec->curr->command == ACPI_EC_COMMAND_QUERY)
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:48 2008
+Message-Id: <20081117070948.575277199@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:07: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,
+ Alexey Starikovskiy <astarikovskiy@suse.de>,
+ Len Brown <len.brown@intel.com>,
+ "Rafael J. Wysocki" <rjw@sisk.pl>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 44/46] ACPI: EC: restart failed command
+Content-Disposition: inline; filename=acpi-ec-restart-failed-command.patch
+Content-Length: 3183
+Lines: 103
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alexey Starikovskiy <astarikovskiy@suse.de>
+
+commit a2f93aeadf97e870ff385030633a73e21146815d upstream.
+
+Restart current transaction if we recieved unexpected GPEs instead
+of needed ones.
+
+http://bugzilla.kernel.org/show_bug.cgi?id=11896
+
+Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Cc: Rafael J. Wysocki <rjw@sisk.pl>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/ec.c |   41 +++++++++++++++++++++++++++++------------
+ 1 file changed, 29 insertions(+), 12 deletions(-)
+
+--- a/drivers/acpi/ec.c
++++ b/drivers/acpi/ec.c
+@@ -100,6 +100,8 @@ struct transaction {
+       u8 *rdata;
+       unsigned short irq_count;
+       u8 command;
++      u8 wi;
++      u8 ri;
+       u8 wlen;
+       u8 rlen;
+       bool done;
+@@ -185,26 +187,34 @@ static int ec_transaction_done(struct ac
+       return ret;
+ }
++static void start_transaction(struct acpi_ec *ec)
++{
++      ec->curr->irq_count = ec->curr->wi = ec->curr->ri = 0;
++      ec->curr->done = false;
++      acpi_ec_write_cmd(ec, ec->curr->command);
++}
++
+ static void gpe_transaction(struct acpi_ec *ec, u8 status)
+ {
+       unsigned long flags;
+       spin_lock_irqsave(&ec->curr_lock, flags);
+       if (!ec->curr)
+               goto unlock;
+-      if (ec->curr->wlen > 0) {
+-              if ((status & ACPI_EC_FLAG_IBF) == 0) {
+-                      acpi_ec_write_data(ec, *(ec->curr->wdata++));
+-                      --ec->curr->wlen;
+-              } else
++      if (ec->curr->wlen > ec->curr->wi) {
++              if ((status & ACPI_EC_FLAG_IBF) == 0)
++                      acpi_ec_write_data(ec,
++                              ec->curr->wdata[ec->curr->wi++]);
++              else
+                       goto err;
+-      } else if (ec->curr->rlen > 0) {
++      } else if (ec->curr->rlen > ec->curr->ri) {
+               if ((status & ACPI_EC_FLAG_OBF) == 1) {
+-                      *(ec->curr->rdata++) = acpi_ec_read_data(ec);
+-                      if (--ec->curr->rlen == 0)
++                      ec->curr->rdata[ec->curr->ri++] = acpi_ec_read_data(ec);
++                      if (ec->curr->rlen == ec->curr->ri)
+                               ec->curr->done = true;
+               } else
+                       goto err;
+-      } else if (ec->curr->wlen == 0 && (status & ACPI_EC_FLAG_IBF) == 0)
++      } else if (ec->curr->wlen == ec->curr->wi &&
++                 (status & ACPI_EC_FLAG_IBF) == 0)
+               ec->curr->done = true;
+       goto unlock;
+ err:
+@@ -219,6 +229,15 @@ static int acpi_ec_wait(struct acpi_ec *
+       if (wait_event_timeout(ec->wait, ec_transaction_done(ec),
+                              msecs_to_jiffies(ACPI_EC_DELAY)))
+               return 0;
++      /* try restart command if we get any false interrupts */
++      if (ec->curr->irq_count &&
++          (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF) == 0) {
++              pr_debug(PREFIX "controller reset, restart transaction\n");
++              start_transaction(ec);
++              if (wait_event_timeout(ec->wait, ec_transaction_done(ec),
++                                      msecs_to_jiffies(ACPI_EC_DELAY)))
++                      return 0;
++      }
+       /* missing GPEs, switch back to poll mode */
+       if (printk_ratelimit())
+               pr_info(PREFIX "missing confirmations, "
+@@ -268,10 +287,8 @@ static int acpi_ec_transaction_unlocked(
+       /* start transaction */
+       spin_lock_irqsave(&ec->curr_lock, tmp);
+       /* following two actions should be kept atomic */
+-      t->irq_count = 0;
+-      t->done = false;
+       ec->curr = t;
+-      acpi_ec_write_cmd(ec, ec->curr->command);
++      start_transaction(ec);
+       if (ec->curr->command == ACPI_EC_COMMAND_QUERY)
+               clear_bit(EC_FLAGS_QUERY_PENDING, &ec->flags);
+       spin_unlock_irqrestore(&ec->curr_lock, tmp);
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:49 2008
+Message-Id: <20081117070948.884055339@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:07: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,
+ Alexey Starikovskiy <astarikovskiy@suse.de>,
+ Len Brown <len.brown@intel.com>,
+ "Rafael J. Wysocki" <rjw@sisk.pl>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 45/46] ACPI: EC: lower interrupt storm treshold
+Content-Disposition: inline; filename=acpi-ec-lower-interrupt-storm-treshold.patch
+Content-Length: 841
+Lines: 28
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alexey Starikovskiy <astarikovskiy@suse.de>
+
+commit 06cf7d3c7af902939cd1754abcafb2464060cba8 upstream.
+
+http://bugzilla.kernel.org/show_bug.cgi?id=11892
+
+Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Cc: Rafael J. Wysocki <rjw@sisk.pl>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/ec.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/acpi/ec.c
++++ b/drivers/acpi/ec.c
+@@ -70,7 +70,7 @@ enum ec_command {
+ #define ACPI_EC_UDELAY_GLK    1000    /* Wait 1ms max. to get global lock */
+ #define ACPI_EC_UDELAY                100     /* Wait 100us before polling EC again */
+-#define ACPI_EC_STORM_THRESHOLD 20    /* number of false interrupts
++#define ACPI_EC_STORM_THRESHOLD 8     /* number of false interrupts
+                                          per one transaction */
+ enum {
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:49 2008
+Message-Id: <20081117070949.087589866@blue.kroah.org>
+References: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:07: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,
+ Alexey Starikovskiy <astarikovskiy@suse.de>,
+ Len Brown <len.brown@intel.com>,
+ "Rafael J. Wysocki" <rjw@sisk.pl>,
+ Greg Kroah-Hartman <gregkh@suse.de>
+Subject: [patch 46/46] ACPI: EC: Dont do transaction from GPE handler in poll mode.
+Content-Disposition: inline; filename=acpi-ec-don-t-do-transaction-from-gpe-handler-in-poll-mode.patch
+Content-Length: 1034
+Lines: 35
+
+2.6.27-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alexey Starikovskiy <astarikovskiy@suse.de>
+
+commit 8517934ef6aaa28d6e055b98df65b31cedbd1372 upstream.
+
+Referencies: http://bugzilla.kernel.org/show_bug.cgi?id=12004
+
+Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Cc: Rafael J. Wysocki <rjw@sisk.pl>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/ec.c |    9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+--- a/drivers/acpi/ec.c
++++ b/drivers/acpi/ec.c
+@@ -581,9 +581,12 @@ static u32 acpi_ec_gpe_handler(void *dat
+       pr_debug(PREFIX "~~~> interrupt\n");
+       status = acpi_ec_read_status(ec);
+-      gpe_transaction(ec, status);
+-      if (ec_transaction_done(ec) && (status & ACPI_EC_FLAG_IBF) == 0)
+-              wake_up(&ec->wait);
++      if (test_bit(EC_FLAGS_GPE_MODE, &ec->flags)) {
++              gpe_transaction(ec, status);
++              if (ec_transaction_done(ec) &&
++                  (status & ACPI_EC_FLAG_IBF) == 0)
++                      wake_up(&ec->wait);
++      }
+       ec_check_sci(ec, status);
+       if (!test_bit(EC_FLAGS_GPE_MODE, &ec->flags) &&
+
+-- 
+
+From greg@blue.kroah.org Sun Nov 16 23:09:37 2008
+Message-Id: <20081117070621.430169021@blue.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sun, 16 Nov 2008 23:06: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
+Subject: [patch 00/46] 2.6.27.7-stable review
+Content-Length: 4433
+Lines: 88
+
+Ok, let's try this again.  The 2.6.27.7-rc1 patch was a mess.  It had a
+patch that was applied corrupted, and some other problems.  So here's a
+second try at this kernel release.  I've added a few more patches that
+have gone into Linus's tree and people have asked for, so it is bigger
+than 2.6.27.7-rc1 was.  Because of this, I'm resetting the review period
+clock to start over, as this all needs a good review.
+
+There are 46 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 November 19, 2008, 07: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.7-rc2.gz
+and the diffstat can be found below.
+
+
+thanks,
+
+greg k-h
+
+--------------
+
+ Makefile                                  |    2 +-
+ arch/arm/mm/cache-feroceon-l2.c           |    4 +-
+ arch/m68k/kernel/ints.c                   |    2 +-
+ arch/powerpc/include/asm/mpic.h           |    2 +
+ arch/powerpc/platforms/85xx/mpc85xx_ds.c  |    3 +-
+ arch/powerpc/platforms/86xx/pic.c         |    3 +-
+ arch/powerpc/sysdev/mpic.c                |   59 +++++++++++++++++++--
+ arch/s390/kernel/topology.c               |   11 +++--
+ block/blk-merge.c                         |   19 ++++++-
+ drivers/acpi/bus.c                        |   16 +++---
+ drivers/acpi/ec.c                         |   84 ++++++++++++++++++++---------
+ drivers/acpi/scan.c                       |   35 +++++++++----
+ drivers/acpi/system.c                     |   25 ++++++---
+ drivers/char/ipmi/ipmi_msghandler.c       |   20 ++++---
+ drivers/char/ipmi/ipmi_si_intf.c          |   16 +++---
+ drivers/hwmon/ibmaem.c                    |   18 ++++---
+ drivers/input/mouse/alps.c                |    1 +
+ drivers/md/dm-raid1.c                     |    1 +
+ drivers/media/video/tvaudio.c             |   15 +++---
+ drivers/misc/sony-laptop.c                |    6 ++-
+ drivers/net/Kconfig                       |    1 +
+ drivers/net/bnx2x_init.h                  |    9 ++--
+ drivers/net/bnx2x_main.c                  |    6 ++-
+ drivers/net/wireless/ath5k/base.c         |   67 ++++++++++++-----------
+ drivers/net/wireless/ath5k/base.h         |    3 +-
+ drivers/net/wireless/ath5k/hw.c           |   22 +++-----
+ drivers/net/wireless/ath5k/initvals.c     |    2 +
+ drivers/net/wireless/hostap/hostap_wlan.h |    5 ++-
+ drivers/net/wireless/iwlwifi/iwl-agn.c    |    6 ++-
+ drivers/net/wireless/rtl8187_dev.c        |    3 +
+ drivers/pnp/pnpacpi/core.c                |    6 ++-
+ drivers/scsi/dpt_i2o.c                    |    4 +-
+ drivers/scsi/qla2xxx/qla_def.h            |    1 -
+ drivers/scsi/qla2xxx/qla_init.c           |    2 +-
+ drivers/scsi/qla2xxx/qla_mbx.c            |    2 +-
+ drivers/scsi/qla2xxx/qla_os.c             |    1 +
+ drivers/scsi/qla2xxx/qla_sup.c            |   19 +++----
+ drivers/usb/class/cdc-acm.c               |    9 ++--
+ drivers/usb/core/message.c                |    1 +
+ drivers/usb/core/sysfs.c                  |    2 +-
+ drivers/usb/gadget/f_acm.c                |    4 ++
+ drivers/usb/host/Kconfig                  |   23 ++------
+ drivers/usb/host/ehci-hcd.c               |   25 ++++-----
+ drivers/usb/host/ehci-ps3.c               |    1 +
+ drivers/usb/host/ehci-sched.c             |    4 +-
+ drivers/usb/host/isp1760-if.c             |   22 ++++----
+ drivers/usb/host/ohci-ps3.c               |    3 +-
+ drivers/usb/storage/unusual_devs.h        |    7 +++
+ fs/namespace.c                            |    7 ++-
+ fs/proc/proc_sysctl.c                     |    1 +
+ include/linux/bio.h                       |    7 +++
+ include/linux/usb.h                       |    2 +
+ mm/hugetlb.c                              |    5 +-
+ mm/page_isolation.c                       |    5 +-
+ net/ipv4/proc.c                           |   58 ++++++++++----------
+ scripts/package/builddeb                  |   24 ++++++++-
+ 56 files changed, 449 insertions(+), 262 deletions(-)
+
similarity index 100%
rename from queue-2.6.27/series
rename to review-2.6.27/series
similarity index 99%
rename from queue-2.6.27/usb-remove-optional-bus-bindings-in-isp1760-fixing-runtime-warning.patch
rename to review-2.6.27/usb-remove-optional-bus-bindings-in-isp1760-fixing-runtime-warning.patch
index de3fea1d63e86c7252fd5cb61441717f71397a67..98d3f1b751b8a01bc9a9cf690e44d63ec4ff7623 100644 (file)
@@ -37,7 +37,7 @@ Having a driver which can't be used under any circumstances is broken
 anyway and I've seen distros shipping it that way.
 
 Reported-by: Roland Kletzing <devzero@web.de>
-Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>a
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
 Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
 
 ---