--- /dev/null
+From b5eae9ff5ba6d76de19286dd6429acd7cde3f79d Mon Sep 17 00:00:00 2001
+From: Bruno Randolf <br1@einfach.org>
+Date: Wed, 19 May 2010 10:18:16 +0900
+Subject: ath5k: consistently use rx_bufsize for RX DMA
+
+From: Bruno Randolf <br1@einfach.org>
+
+commit b5eae9ff5ba6d76de19286dd6429acd7cde3f79d upstream.
+
+We should use the same buffer size we set up for DMA also in the hardware
+descriptor. Previously we used common->rx_bufsize for setting up the DMA
+mapping, but used skb_tailroom(skb) for the size we tell to the hardware in the
+descriptor itself. The problem is that skb_tailroom(skb) can give us a larger
+value than the size we set up for DMA before. This allows the hardware to write
+into memory locations not set up for DMA. In practice this should rarely happen
+because all packets should be smaller than the maximum 802.11 packet size.
+
+On the tested platform rx_bufsize is 2528, and we allocated an skb of 2559
+bytes length (including padding for cache alignment) but sbk_tailroom() was
+2592. Just consistently use rx_bufsize for all RX DMA memory sizes.
+
+Also use the return value of the descriptor setup function.
+
+Signed-off-by: Bruno Randolf <br1@einfach.org>
+Reviewed-by: Luis R. Rodriguez <lrodriguez@atheros.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/ath/ath5k/base.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath5k/base.c
++++ b/drivers/net/wireless/ath/ath5k/base.c
+@@ -1210,6 +1210,7 @@ ath5k_rxbuf_setup(struct ath5k_softc *sc
+ struct ath5k_hw *ah = sc->ah;
+ struct sk_buff *skb = bf->skb;
+ struct ath5k_desc *ds;
++ int ret;
+
+ if (!skb) {
+ skb = ath5k_rx_skb_alloc(sc, &bf->skbaddr);
+@@ -1236,9 +1237,9 @@ ath5k_rxbuf_setup(struct ath5k_softc *sc
+ ds = bf->desc;
+ ds->ds_link = bf->daddr; /* link to self */
+ ds->ds_data = bf->skbaddr;
+- ah->ah_setup_rx_desc(ah, ds,
+- skb_tailroom(skb), /* buffer size */
+- 0);
++ ret = ah->ah_setup_rx_desc(ah, ds, ah->common.rx_bufsize, 0);
++ if (ret)
++ return ret;
+
+ if (sc->rxlink != NULL)
+ *sc->rxlink = bf->daddr;
--- /dev/null
+From 57c8a456640fa3ca777652f11f2db4179a3e66b6 Mon Sep 17 00:00:00 2001
+From: Oliver Hartkopp <socketcan@hartkopp.net>
+Date: Tue, 18 May 2010 14:03:10 -0700
+Subject: can: Fix SJA1000 command register writes on SMP systems
+
+From: Oliver Hartkopp <socketcan@hartkopp.net>
+
+commit 57c8a456640fa3ca777652f11f2db4179a3e66b6 upstream.
+
+The SJA1000 command register is concurrently written in the rx-path to free
+the receive buffer _and_ in the tx-path to start the transmission.
+
+The SJA1000 data sheet, 6.4.4 COMMAND REGISTER (CMR) states:
+"Between two commands at least one internal clock cycle is needed in
+order to proceed. The internal clock is half of the external oscillator
+frequency."
+
+On SMP systems the current implementation leads to a write stall in the
+tx-path, which can be solved by adding some general locking and some time
+to settle the write_reg() operation for the command register.
+
+Thanks to Klaus Hitschler for the original fix and detailed problem
+description.
+
+This patch applies on net-2.6 and (with some offsets) on net-next-2.6 .
+
+Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
+Acked-by: Wolfgang Grandegger <wg@grandegger.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/can/sja1000/sja1000.c | 20 +++++++++++++++++---
+ drivers/net/can/sja1000/sja1000.h | 1 +
+ 2 files changed, 18 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/can/sja1000/sja1000.c
++++ b/drivers/net/can/sja1000/sja1000.c
+@@ -84,6 +84,20 @@ static struct can_bittiming_const sja100
+ .brp_inc = 1,
+ };
+
++static void sja1000_write_cmdreg(struct sja1000_priv *priv, u8 val)
++{
++ unsigned long flags;
++
++ /*
++ * The command register needs some locking and time to settle
++ * the write_reg() operation - especially on SMP systems.
++ */
++ spin_lock_irqsave(&priv->cmdreg_lock, flags);
++ priv->write_reg(priv, REG_CMR, val);
++ priv->read_reg(priv, REG_SR);
++ spin_unlock_irqrestore(&priv->cmdreg_lock, flags);
++}
++
+ static int sja1000_probe_chip(struct net_device *dev)
+ {
+ struct sja1000_priv *priv = netdev_priv(dev);
+@@ -279,7 +293,7 @@ static netdev_tx_t sja1000_start_xmit(st
+
+ can_put_echo_skb(skb, dev, 0);
+
+- priv->write_reg(priv, REG_CMR, CMD_TR);
++ sja1000_write_cmdreg(priv, CMD_TR);
+
+ return NETDEV_TX_OK;
+ }
+@@ -328,7 +342,7 @@ static void sja1000_rx(struct net_device
+ cf->can_id = id;
+
+ /* release receive buffer */
+- priv->write_reg(priv, REG_CMR, CMD_RRB);
++ sja1000_write_cmdreg(priv, CMD_RRB);
+
+ netif_rx(skb);
+
+@@ -356,7 +370,7 @@ static int sja1000_err(struct net_device
+ cf->data[1] = CAN_ERR_CRTL_RX_OVERFLOW;
+ stats->rx_over_errors++;
+ stats->rx_errors++;
+- priv->write_reg(priv, REG_CMR, CMD_CDO); /* clear bit */
++ sja1000_write_cmdreg(priv, CMD_CDO); /* clear bit */
+ }
+
+ if (isrc & IRQ_EI) {
+--- a/drivers/net/can/sja1000/sja1000.h
++++ b/drivers/net/can/sja1000/sja1000.h
+@@ -167,6 +167,7 @@ struct sja1000_priv {
+
+ void __iomem *reg_base; /* ioremap'ed address to registers */
+ unsigned long irq_flags; /* for request_irq() */
++ spinlock_t cmdreg_lock; /* lock for concurrent cmd register writes */
+
+ u16 flags; /* custom mode flags */
+ u8 ocr; /* output control register */
--- /dev/null
+From cdc6e3d3968052cebb2f2ddcd742bff29fbd1a90 Mon Sep 17 00:00:00 2001
+From: Jan Beulich <JBeulich@novell.com>
+Date: Tue, 27 Apr 2010 14:01:20 -0700
+Subject: drivers/base/cpu.c: fix the output from /sys/devices/system/cpu/offline
+
+From: Jan Beulich <JBeulich@novell.com>
+
+commit cdc6e3d3968052cebb2f2ddcd742bff29fbd1a90 upstream.
+
+Without CONFIG_CPUMASK_OFFSTACK, simply inverting cpu_online_mask leads
+to CPUs beyond nr_cpu_ids to be displayed twice and CPUs not even
+possible to be displayed as offline.
+
+Signed-off-by: Jan Beulich <jbeulich@novell.com>
+Cc: Andi Kleen <ak@linux.intel.com>
+Cc: Stephen Rothwell <sfr@canb.auug.org.au>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/base/cpu.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/base/cpu.c
++++ b/drivers/base/cpu.c
+@@ -183,7 +183,7 @@ static ssize_t print_cpus_offline(struct
+ /* display offline cpus < nr_cpu_ids */
+ if (!alloc_cpumask_var(&offline, GFP_KERNEL))
+ return -ENOMEM;
+- cpumask_complement(offline, cpu_online_mask);
++ cpumask_andnot(offline, cpu_possible_mask, cpu_online_mask);
+ n = cpulist_scnprintf(buf, len, offline);
+ free_cpumask_var(offline);
+
--- /dev/null
+From 5ce8ba7c9279a63f99e1f131602580472b8af968 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Thu, 15 Apr 2010 14:03:30 -0400
+Subject: drm/i915: Fix 82854 PCI ID, and treat it like other 85X
+
+From: Adam Jackson <ajax@redhat.com>
+
+commit 5ce8ba7c9279a63f99e1f131602580472b8af968 upstream.
+
+pci.ids and the datasheet both say it's 358e, not 35e8.
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/i915/i915_drv.c | 5 +++--
+ drivers/gpu/drm/i915/i915_drv.h | 3 ++-
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpu/drm/i915/i915_drv.c
++++ b/drivers/gpu/drm/i915/i915_drv.c
+@@ -68,7 +68,8 @@ const static struct intel_device_info in
+ };
+
+ const static struct intel_device_info intel_i85x_info = {
+- .is_i8xx = 1, .is_mobile = 1, .cursor_needs_physical = 1,
++ .is_i8xx = 1, .is_i85x = 1, .is_mobile = 1,
++ .cursor_needs_physical = 1,
+ };
+
+ const static struct intel_device_info intel_i865g_info = {
+@@ -140,7 +141,7 @@ const static struct pci_device_id pciidl
+ INTEL_VGA_DEVICE(0x3577, &intel_i830_info),
+ INTEL_VGA_DEVICE(0x2562, &intel_845g_info),
+ INTEL_VGA_DEVICE(0x3582, &intel_i85x_info),
+- INTEL_VGA_DEVICE(0x35e8, &intel_i85x_info),
++ INTEL_VGA_DEVICE(0x358e, &intel_i85x_info),
+ INTEL_VGA_DEVICE(0x2572, &intel_i865g_info),
+ INTEL_VGA_DEVICE(0x2582, &intel_i915g_info),
+ INTEL_VGA_DEVICE(0x258a, &intel_i915g_info),
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -175,6 +175,7 @@ struct intel_overlay;
+ struct intel_device_info {
+ u8 is_mobile : 1;
+ u8 is_i8xx : 1;
++ u8 is_i85x : 1;
+ u8 is_i915g : 1;
+ u8 is_i9xx : 1;
+ u8 is_i945gm : 1;
+@@ -1027,7 +1028,7 @@ extern int i915_wait_ring(struct drm_dev
+
+ #define IS_I830(dev) ((dev)->pci_device == 0x3577)
+ #define IS_845G(dev) ((dev)->pci_device == 0x2562)
+-#define IS_I85X(dev) ((dev)->pci_device == 0x3582)
++#define IS_I85X(dev) (INTEL_INFO(dev)->is_i85x)
+ #define IS_I865G(dev) ((dev)->pci_device == 0x2572)
+ #define IS_GEN2(dev) (INTEL_INFO(dev)->is_i8xx)
+ #define IS_I915G(dev) (INTEL_INFO(dev)->is_i915g)
--- /dev/null
+From 654fc6073f68efa3b6c466825749e73e7fbb92cd Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Thu, 27 May 2010 13:18:21 +0100
+Subject: drm/i915: Reject bind_to_gtt() early if object > aperture
+
+From: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 654fc6073f68efa3b6c466825749e73e7fbb92cd upstream.
+
+If the object is bigger than the entire aperture, reject it early
+before evicting everything in a vain attempt to find space.
+
+v2: Use E2BIG as suggested by Owain G. Ainsworth.
+
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+Signed-off-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/i915/i915_gem.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -2641,6 +2641,14 @@ i915_gem_object_bind_to_gtt(struct drm_g
+ return -EINVAL;
+ }
+
++ /* If the object is bigger than the entire aperture, reject it early
++ * before evicting everything in a vain attempt to find space.
++ */
++ if (obj->size > dev->gtt_total) {
++ DRM_ERROR("Attempting to bind an object larger than the aperture\n");
++ return -E2BIG;
++ }
++
+ search_free:
+ free_space = drm_mm_search_free(&dev_priv->mm.gtt_space,
+ obj->size, alignment, 0);
--- /dev/null
+From f7917af92024d43bc20bc1afc92de27b0bd0f50b Mon Sep 17 00:00:00 2001
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Tue, 27 Apr 2010 00:26:34 +0200
+Subject: mac80211: fix handling of 4-address-mode in ieee80211_change_iface
+
+From: Felix Fietkau <nbd@openwrt.org>
+
+commit f7917af92024d43bc20bc1afc92de27b0bd0f50b upstream.
+
+A misplaced interface type check bails out too early if the interface
+is not in monitor mode. This patch moves it to the right place, so that
+it only covers changes to the monitor flags.
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/mac80211/cfg.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+--- a/net/mac80211/cfg.c
++++ b/net/mac80211/cfg.c
+@@ -98,9 +98,6 @@ static int ieee80211_change_iface(struct
+ params->mesh_id_len,
+ params->mesh_id);
+
+- if (sdata->vif.type != NL80211_IFTYPE_MONITOR || !flags)
+- return 0;
+-
+ if (type == NL80211_IFTYPE_AP_VLAN &&
+ params && params->use_4addr == 0)
+ rcu_assign_pointer(sdata->u.vlan.sta, NULL);
+@@ -108,7 +105,9 @@ static int ieee80211_change_iface(struct
+ params && params->use_4addr >= 0)
+ sdata->u.mgd.use_4addr = params->use_4addr;
+
+- sdata->u.mntr_flags = *flags;
++ if (sdata->vif.type == NL80211_IFTYPE_MONITOR && flags)
++ sdata->u.mntr_flags = *flags;
++
+ return 0;
+ }
+
--- /dev/null
+From d211e90e28a074447584729018a39910d691d1a8 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Sun, 28 Mar 2010 22:29:52 -0700
+Subject: mac80211: Fix robust management frame handling (MFP)
+
+From: Jouni Malinen <j@w1.fi>
+
+commit d211e90e28a074447584729018a39910d691d1a8 upstream.
+
+Commit e34e09401ee9888dd662b2fca5d607794a56daf2 incorrectly removed
+use of ieee80211_has_protected() from the management frame case and in
+practice, made this validation drop all Action frames when MFP is
+enabled. This should have only been done for frames with Protected
+field set to zero.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/mac80211/rx.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/net/mac80211/rx.c
++++ b/net/mac80211/rx.c
+@@ -1399,7 +1399,8 @@ ieee80211_drop_unencrypted(struct ieee80
+ (rx->key || rx->sdata->drop_unencrypted)))
+ return -EACCES;
+ if (rx->sta && test_sta_flags(rx->sta, WLAN_STA_MFP)) {
+- if (unlikely(ieee80211_is_unicast_robust_mgmt_frame(rx->skb) &&
++ if (unlikely(!ieee80211_has_protected(fc) &&
++ ieee80211_is_unicast_robust_mgmt_frame(rx->skb) &&
+ rx->key))
+ return -EACCES;
+ /* BIP does not use Protected field, so need to check MMIE */
--- /dev/null
+From a2c40249a36d0b4d76d1caf6bf806e4ae5b06e8a Mon Sep 17 00:00:00 2001
+From: Shanyu Zhao <shanyu.zhao@intel.com>
+Date: Tue, 27 Apr 2010 11:15:12 -0700
+Subject: mac80211: fix rts threshold check
+
+From: Shanyu Zhao <shanyu.zhao@intel.com>
+
+commit a2c40249a36d0b4d76d1caf6bf806e4ae5b06e8a upstream.
+
+Currently whenever rts thresold is set, every packet will use RTS
+protection no matter its size exceeds the threshold or not. This is
+due to a bug in the rts threshold check.
+ if (len > tx->local->hw.wiphy->rts_threshold) {
+ txrc.rts = rts = true;
+ }
+Basically it is comparing an int (len) and a u32 (rts_threshold),
+and the variable len is assigned as:
+ len = min_t(int, tx->skb->len + FCS_LEN,
+ tx->local->hw.wiphy->frag_threshold);
+However, when frag_threshold is "-1", len is always "-1", which is
+0xffffffff therefore rts is always set to true.
+
+Signed-off-by: Shanyu Zhao <shanyu.zhao@intel.com>
+Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/mac80211/tx.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/net/mac80211/tx.c
++++ b/net/mac80211/tx.c
+@@ -501,7 +501,8 @@ ieee80211_tx_h_rate_ctrl(struct ieee8021
+ struct ieee80211_hdr *hdr = (void *)tx->skb->data;
+ struct ieee80211_supported_band *sband;
+ struct ieee80211_rate *rate;
+- int i, len;
++ int i;
++ u32 len;
+ bool inval = false, rts = false, short_preamble = false;
+ struct ieee80211_tx_rate_control txrc;
+ u32 sta_flags;
+@@ -510,7 +511,7 @@ ieee80211_tx_h_rate_ctrl(struct ieee8021
+
+ sband = tx->local->hw.wiphy->bands[tx->channel->band];
+
+- len = min_t(int, tx->skb->len + FCS_LEN,
++ len = min_t(u32, tx->skb->len + FCS_LEN,
+ tx->local->hw.wiphy->frag_threshold);
+
+ /* set up the tx rate control struct we give the RC algo */
--- /dev/null
+From c2ef355bf3ef0b8006b96128726684fba47ac928 Mon Sep 17 00:00:00 2001
+From: Andres Salomon <dilinger@collabora.co.uk>
+Date: Thu, 25 Feb 2010 19:18:47 -0500
+Subject: mac80211: give warning if building w/out rate ctrl algorithm
+
+From: Andres Salomon <dilinger@collabora.co.uk>
+
+commit c2ef355bf3ef0b8006b96128726684fba47ac928 upstream.
+
+I discovered that if EMBEDDED=y, one can accidentally build a mac80211 stack
+and drivers w/ no rate control algorithm. For drivers like RTL8187 that don't
+supply their own RC algorithms, this will cause ieee80211_register_hw to
+fail (making the driver unusable).
+
+This will tell kconfig to provide a warning if no rate control algorithms
+have been selected. That'll at least warn the user; users that know that
+their drivers supply a rate control algorithm can safely ignore the
+warning, and those who don't know (or who expect to be using multiple
+drivers) can select a default RC algorithm.
+
+Signed-off-by: Andres Salomon <dilinger@collabora.co.uk>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/mac80211/Kconfig | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/net/mac80211/Kconfig
++++ b/net/mac80211/Kconfig
+@@ -15,8 +15,12 @@ comment "CFG80211 needs to be enabled fo
+
+ if MAC80211 != n
+
++config MAC80211_HAS_RC
++ def_bool n
++
+ config MAC80211_RC_PID
+ bool "PID controller based rate control algorithm" if EMBEDDED
++ select MAC80211_HAS_RC
+ ---help---
+ This option enables a TX rate control algorithm for
+ mac80211 that uses a PID controller to select the TX
+@@ -24,12 +28,14 @@ config MAC80211_RC_PID
+
+ config MAC80211_RC_MINSTREL
+ bool "Minstrel" if EMBEDDED
++ select MAC80211_HAS_RC
+ default y
+ ---help---
+ This option enables the 'minstrel' TX rate control algorithm
+
+ choice
+ prompt "Default rate control algorithm"
++ depends on MAC80211_HAS_RC
+ default MAC80211_RC_DEFAULT_MINSTREL
+ ---help---
+ This option selects the default rate control algorithm
+@@ -62,6 +68,9 @@ config MAC80211_RC_DEFAULT
+
+ endif
+
++comment "Some wireless drivers require a rate control algorithm"
++ depends on MAC80211_HAS_RC=n
++
+ config MAC80211_MESH
+ bool "Enable mac80211 mesh networking (pre-802.11s) support"
+ depends on MAC80211 && EXPERIMENTAL
--- /dev/null
+From e4146bb9088c01c8b6e82be11f0c371f8aff023c Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sun, 16 May 2010 02:28:49 +0100
+Subject: PCI: Disable MSI for MCP55 on P5N32-E SLI
+
+From: Ben Hutchings <ben@decadent.org.uk>
+
+commit e4146bb9088c01c8b6e82be11f0c371f8aff023c upstream.
+
+As reported in <http://bugs.debian.org/552299>, MSI appears to be
+broken for this on-board device. We already have a quirk for the
+P5N32-SLI Premium; extend it to cover both variants of the board.
+
+Reported-by: Romain DEGEZ <romain.degez@smartjog.com>
+Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/quirks.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
+@@ -2206,15 +2206,16 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S
+ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8132_BRIDGE,
+ ht_enable_msi_mapping);
+
+-/* The P5N32-SLI Premium motherboard from Asus has a problem with msi
++/* The P5N32-SLI motherboards from Asus have a problem with msi
+ * for the MCP55 NIC. It is not yet determined whether the msi problem
+ * also affects other devices. As for now, turn off msi for this device.
+ */
+ static void __devinit nvenet_msi_disable(struct pci_dev *dev)
+ {
+- if (dmi_name_in_vendors("P5N32-SLI PREMIUM")) {
++ if (dmi_name_in_vendors("P5N32-SLI PREMIUM") ||
++ dmi_name_in_vendors("P5N32-E SLI")) {
+ dev_info(&dev->dev,
+- "Disabling msi for MCP55 NIC on P5N32-SLI Premium\n");
++ "Disabling msi for MCP55 NIC on P5N32-SLI\n");
+ dev->no_msi = 1;
+ }
+ }
--- /dev/null
+From 134b345081534235dbf228b1005c14590e0570ba Mon Sep 17 00:00:00 2001
+From: Matthew Wilcox <matthew@wil.cx>
+Date: Wed, 24 Mar 2010 07:11:01 -0600
+Subject: PCI quirk: Disable MSI on VIA K8T890 systems
+
+From: Matthew Wilcox <matthew@wil.cx>
+
+commit 134b345081534235dbf228b1005c14590e0570ba upstream.
+
+Bugzilla 15287 indicates that there's a problem with Message Signalled
+Interrupts on VIA K8T890 systems. Add a quirk to disable MSI on these
+systems.
+
+Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
+Tested-by: Jan Kreuzer <kontrollator@gmx.de>
+Tested-by: lh <jarryson@gmail.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/quirks.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
+@@ -2113,6 +2113,7 @@ static void __devinit quirk_disable_msi(
+ }
+ }
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_disable_msi);
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, 0xa238, quirk_disable_msi);
+
+ /* Go through the list of Hypertransport capabilities and
+ * return 1 if a HT MSI capability is found and enabled */
--- /dev/null
+From 9313ff450400e6a2ab10fe6b9bdb12a828329410 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexdeucher@gmail.com>
+Date: Tue, 18 May 2010 10:42:53 -0400
+Subject: PCI quirks: disable msi on AMD rs4xx internal gfx bridges
+
+From: Alex Deucher <alexdeucher@gmail.com>
+
+commit 9313ff450400e6a2ab10fe6b9bdb12a828329410 upstream.
+
+Doesn't work reliably for internal gfx. Fixes kernel bug
+https://bugzilla.kernel.org/show_bug.cgi?id=15626.
+
+Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/quirks.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
+@@ -2114,6 +2114,7 @@ static void __devinit quirk_disable_msi(
+ }
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_disable_msi);
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, 0xa238, quirk_disable_msi);
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x5a3f, quirk_disable_msi);
+
+ /* Go through the list of Hypertransport capabilities and
+ * return 1 if a HT MSI capability is found and enabled */
usb-xhci-limit-bus-sg_tablesize-to-62-trbs.patch
usb-xhci-fix-check-for-room-on-the-ring.patch
usb-xhci-fix-wrong-usage-of-macro-trb_type.patch
+ath5k-consistently-use-rx_bufsize-for-rx-dma.patch
+mac80211-give-warning-if-building-w-out-rate-ctrl-algorithm.patch
+mac80211-fix-robust-management-frame-handling-mfp.patch
+mac80211-fix-rts-threshold-check.patch
+mac80211-fix-handling-of-4-address-mode-in-ieee80211_change_iface.patch
+drm-i915-fix-82854-pci-id-and-treat-it-like-other-85x.patch
+drm-i915-reject-bind_to_gtt-early-if-object-aperture.patch
+drivers-base-cpu.c-fix-the-output-from-sys-devices-system-cpu-offline.patch
+can-fix-sja1000-command-register-writes-on-smp-systems.patch
+pci-quirk-disable-msi-on-via-k8t890-systems.patch
+pci-quirks-disable-msi-on-amd-rs4xx-internal-gfx-bridges.patch
+pci-disable-msi-for-mcp55-on-p5n32-e-sli.patch