]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.32 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Mon, 19 Apr 2010 23:42:39 +0000 (16:42 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 19 Apr 2010 23:42:39 +0000 (16:42 -0700)
16 files changed:
queue-2.6.32/ahci-ahci-and-raid-mode-sata-patch-for-intel-cougar-point-deviceids.patch [new file with mode: 0644]
queue-2.6.32/alsa-hda-add-position_fix-quirk-for-biostar-mobo.patch [new file with mode: 0644]
queue-2.6.32/alsa-hda-enable-snoop-for-intel-cougar-point.patch [new file with mode: 0644]
queue-2.6.32/alsa-hda_intel-alsa-hd-audio-patch-for-intel-cougar-point-deviceids.patch [new file with mode: 0644]
queue-2.6.32/ata_piix-ide-mode-sata-patch-for-intel-cougar-point-deviceids.patch [new file with mode: 0644]
queue-2.6.32/b43-allow-pio-mode-to-be-selected-at-module-load.patch [new file with mode: 0644]
queue-2.6.32/b43-fall-back-gracefully-to-pio-mode-after-fatal-dma-errors.patch [new file with mode: 0644]
queue-2.6.32/b43-remove-reset-after-fatal-dma-error.patch [new file with mode: 0644]
queue-2.6.32/i2c-i801-add-intel-cougar-point-device-ids.patch [new file with mode: 0644]
queue-2.6.32/ipoib-fix-tx-queue-lockup-with-mixed-ud-cm-traffic.patch [new file with mode: 0644]
queue-2.6.32/patch.ct36F [new file with mode: 0644]
queue-2.6.32/pci-fix-nested-spinlock-hang-in-aer_inject.patch [new file with mode: 0644]
queue-2.6.32/pci-kill-off-pci_register_set_vga_state-symbol-export.patch [new file with mode: 0644]
queue-2.6.32/pci-update-pci_set_vga_state-to-call-arch-functions.patch [new file with mode: 0644]
queue-2.6.32/series
queue-2.6.32/x86-pci-irq-and-pci_ids-patch-for-intel-cougar-point-deviceids.patch [new file with mode: 0644]

diff --git a/queue-2.6.32/ahci-ahci-and-raid-mode-sata-patch-for-intel-cougar-point-deviceids.patch b/queue-2.6.32/ahci-ahci-and-raid-mode-sata-patch-for-intel-cougar-point-deviceids.patch
new file mode 100644 (file)
index 0000000..65885f2
--- /dev/null
@@ -0,0 +1,33 @@
+From 5623cab83ea61e0420f2064216d83eab067a24c6 Mon Sep 17 00:00:00 2001
+From: Seth Heasley <seth.heasley@intel.com>
+Date: Tue, 12 Jan 2010 17:00:18 -0800
+Subject: ahci: AHCI and RAID mode SATA patch for Intel Cougar Point DeviceIDs
+
+From: Seth Heasley <seth.heasley@intel.com>
+
+commit 5623cab83ea61e0420f2064216d83eab067a24c6 upstream.
+
+Signed-off-by: Seth Heasley <seth.heasley@intel.com>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/ahci.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/ata/ahci.c
++++ b/drivers/ata/ahci.c
+@@ -570,6 +570,12 @@ static const struct pci_device_id ahci_p
+       { PCI_VDEVICE(INTEL, 0x3b2b), board_ahci }, /* PCH RAID */
+       { PCI_VDEVICE(INTEL, 0x3b2c), board_ahci }, /* PCH RAID */
+       { PCI_VDEVICE(INTEL, 0x3b2f), board_ahci }, /* PCH AHCI */
++      { PCI_VDEVICE(INTEL, 0x1c02), board_ahci }, /* CPT AHCI */
++      { PCI_VDEVICE(INTEL, 0x1c03), board_ahci }, /* CPT AHCI */
++      { PCI_VDEVICE(INTEL, 0x1c04), board_ahci }, /* CPT RAID */
++      { PCI_VDEVICE(INTEL, 0x1c05), board_ahci }, /* CPT RAID */
++      { PCI_VDEVICE(INTEL, 0x1c06), board_ahci }, /* CPT RAID */
++      { PCI_VDEVICE(INTEL, 0x1c07), board_ahci }, /* CPT RAID */
+       /* JMicron 360/1/3/5/6, match class to avoid IDE function */
+       { PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
diff --git a/queue-2.6.32/alsa-hda-add-position_fix-quirk-for-biostar-mobo.patch b/queue-2.6.32/alsa-hda-add-position_fix-quirk-for-biostar-mobo.patch
new file mode 100644 (file)
index 0000000..ec431e4
--- /dev/null
@@ -0,0 +1,38 @@
+From 8815cd030fdd73932a791d1f06194c8db807cde7 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Thu, 15 Apr 2010 09:02:41 +0200
+Subject: ALSA: hda - Add position_fix quirk for Biostar mobo
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 8815cd030fdd73932a791d1f06194c8db807cde7 upstream.
+
+The Biostar mobo seems to give a wrong DMA position, resulting in
+stuttering or skipping sounds on 2.6.34.  Since the commit
+7b3a177b0d4f92b3431b8dca777313a07533a710, "ALSA: pcm_lib: fix "something
+must be really wrong" condition", makes the position check more strictly,
+the DMA position problem is revealed more clearly now.
+
+The fix is to use only LPIB for obtaining the position, i.e. passing
+position_fix=1.  This patch adds a static quirk to achieve it as default.
+
+Reported-by: Frank Griffin <ftg@roadrunner.com>
+Cc: Eric Piel <Eric.Piel@tremplin-utc.net>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_intel.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -2235,6 +2235,7 @@ static struct snd_pci_quirk position_fix
+       SND_PCI_QUIRK(0x1458, 0xa022, "ga-ma770-ud3", POS_FIX_LPIB),
+       SND_PCI_QUIRK(0x1462, 0x1002, "MSI Wind U115", POS_FIX_LPIB),
+       SND_PCI_QUIRK(0x1565, 0x820f, "Biostar Microtech", POS_FIX_LPIB),
++      SND_PCI_QUIRK(0x1565, 0x8218, "Biostar Microtech", POS_FIX_LPIB),
+       SND_PCI_QUIRK(0x8086, 0xd601, "eMachines T5212", POS_FIX_LPIB),
+       {}
+ };
diff --git a/queue-2.6.32/alsa-hda-enable-snoop-for-intel-cougar-point.patch b/queue-2.6.32/alsa-hda-enable-snoop-for-intel-cougar-point.patch
new file mode 100644 (file)
index 0000000..b069457
--- /dev/null
@@ -0,0 +1,64 @@
+From 32679f95cac3b1bdf27dce8b5273e06af186fd91 Mon Sep 17 00:00:00 2001
+From: Seth Heasley <seth.heasley@intel.com>
+Date: Mon, 22 Feb 2010 17:31:09 -0800
+Subject: ALSA: hda - enable snoop for Intel Cougar Point
+
+From: Seth Heasley <seth.heasley@intel.com>
+
+commit 32679f95cac3b1bdf27dce8b5273e06af186fd91 upstream.
+
+This patch enables snoop, eliminating static during playback.
+This patch supersedes the previous Cougar Point audio patch.
+
+Signed-off-by: Seth Heasley <seth.heasley@intel.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_intel.c |    6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -438,6 +438,7 @@ struct azx {
+ /* driver types */
+ enum {
+       AZX_DRIVER_ICH,
++      AZX_DRIVER_PCH,
+       AZX_DRIVER_SCH,
+       AZX_DRIVER_ATI,
+       AZX_DRIVER_ATIHDMI,
+@@ -452,6 +453,7 @@ enum {
+ static char *driver_short_names[] __devinitdata = {
+       [AZX_DRIVER_ICH] = "HDA Intel",
++      [AZX_DRIVER_PCH] = "HDA Intel PCH",
+       [AZX_DRIVER_SCH] = "HDA Intel MID",
+       [AZX_DRIVER_ATI] = "HDA ATI SB",
+       [AZX_DRIVER_ATIHDMI] = "HDA ATI HDMI",
+@@ -1040,6 +1042,7 @@ static void azx_init_pci(struct azx *chi
+                               0x01, NVIDIA_HDA_ENABLE_COHBIT);
+               break;
+       case AZX_DRIVER_SCH:
++      case AZX_DRIVER_PCH:
+               pci_read_config_word(chip->pci, INTEL_SCH_HDA_DEVC, &snoop);
+               if (snoop & INTEL_SCH_HDA_DEVC_NOSNOOP) {
+                       pci_write_config_word(chip->pci, INTEL_SCH_HDA_DEVC,
+@@ -2393,6 +2396,7 @@ static int __devinit azx_create(struct s
+       if (bdl_pos_adj[dev] < 0) {
+               switch (chip->driver_type) {
+               case AZX_DRIVER_ICH:
++              case AZX_DRIVER_PCH:
+                       bdl_pos_adj[dev] = 1;
+                       break;
+               default:
+@@ -2668,7 +2672,7 @@ static struct pci_device_id azx_ids[] =
+       /* PCH */
+       { PCI_DEVICE(0x8086, 0x3b56), .driver_data = AZX_DRIVER_ICH },
+       /* CPT */
+-      { PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_ICH },
++      { PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_PCH },
+       /* SCH */
+       { PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH },
+       /* ATI SB 450/600 */
diff --git a/queue-2.6.32/alsa-hda_intel-alsa-hd-audio-patch-for-intel-cougar-point-deviceids.patch b/queue-2.6.32/alsa-hda_intel-alsa-hd-audio-patch-for-intel-cougar-point-deviceids.patch
new file mode 100644 (file)
index 0000000..9811faa
--- /dev/null
@@ -0,0 +1,39 @@
+From d2f2fcd2541bae004db7f4798ffd9d2cb75ae817 Mon Sep 17 00:00:00 2001
+From: Seth Heasley <seth.heasley@intel.com>
+Date: Tue, 12 Jan 2010 17:03:35 -0800
+Subject: ALSA: hda_intel: ALSA HD Audio patch for Intel Cougar Point DeviceIDs
+
+From: Seth Heasley <seth.heasley@intel.com>
+
+commit d2f2fcd2541bae004db7f4798ffd9d2cb75ae817 upstream.
+
+This patch adds the Intel Cougar Point (PCH) HD Audio Controller DeviceIDs.
+
+Signed-off-by: Seth Heasley <seth.heasley@intel.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_intel.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -116,6 +116,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6},
+                        "{Intel, ICH9},"
+                        "{Intel, ICH10},"
+                        "{Intel, PCH},"
++                       "{Intel, CPT},"
+                        "{Intel, SCH},"
+                        "{ATI, SB450},"
+                        "{ATI, SB600},"
+@@ -2666,6 +2667,8 @@ static struct pci_device_id azx_ids[] =
+       { PCI_DEVICE(0x8086, 0x3a6e), .driver_data = AZX_DRIVER_ICH },
+       /* PCH */
+       { PCI_DEVICE(0x8086, 0x3b56), .driver_data = AZX_DRIVER_ICH },
++      /* CPT */
++      { PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_ICH },
+       /* SCH */
+       { PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH },
+       /* ATI SB 450/600 */
diff --git a/queue-2.6.32/ata_piix-ide-mode-sata-patch-for-intel-cougar-point-deviceids.patch b/queue-2.6.32/ata_piix-ide-mode-sata-patch-for-intel-cougar-point-deviceids.patch
new file mode 100644 (file)
index 0000000..1d8500c
--- /dev/null
@@ -0,0 +1,35 @@
+From 88e8201e67aace3d86de9e75122ea525f0e7248e Mon Sep 17 00:00:00 2001
+From: Seth Heasley <seth.heasley@intel.com>
+Date: Tue, 12 Jan 2010 17:01:28 -0800
+Subject: ata_piix: IDE Mode SATA patch for Intel Cougar Point DeviceIDs
+
+From: Seth Heasley <seth.heasley@intel.com>
+
+commit 88e8201e67aace3d86de9e75122ea525f0e7248e upstream.
+
+Signed-off-by: Seth Heasley <seth.heasley@intel.com>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/ata_piix.c |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/ata/ata_piix.c
++++ b/drivers/ata/ata_piix.c
+@@ -291,6 +291,14 @@ static const struct pci_device_id piix_p
+       { 0x8086, 0x3b2d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
+       /* SATA Controller IDE (PCH) */
+       { 0x8086, 0x3b2e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
++      /* SATA Controller IDE (CPT) */
++      { 0x8086, 0x1c00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
++      /* SATA Controller IDE (CPT) */
++      { 0x8086, 0x1c01, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
++      /* SATA Controller IDE (CPT) */
++      { 0x8086, 0x1c08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
++      /* SATA Controller IDE (CPT) */
++      { 0x8086, 0x1c09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
+       { }     /* terminate list */
+ };
diff --git a/queue-2.6.32/b43-allow-pio-mode-to-be-selected-at-module-load.patch b/queue-2.6.32/b43-allow-pio-mode-to-be-selected-at-module-load.patch
new file mode 100644 (file)
index 0000000..5fb9f5d
--- /dev/null
@@ -0,0 +1,223 @@
+From b02914af4d7020828ce921a572589dd793517c09 Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger@lwfinger.net>
+Date: Thu, 10 Dec 2009 17:35:01 -0600
+Subject: b43: Allow PIO mode to be selected at module load
+
+From: Larry Finger <Larry.Finger@lwfinger.net>
+
+commit b02914af4d7020828ce921a572589dd793517c09 upstream.
+
+If userencounter the "Fatal DMA Problem" with a BCM43XX device, and
+still wish to use b43 as the driver, their only option is to rebuild
+the kernel with CONFIG_B43_FORCE_PIO. This patch removes this option and
+allows PIO mode to be selected with a load-time parameter for the module.
+Note that the configuration variable CONFIG_B43_PIO is also removed.
+
+Once the DMA problem with the BCM4312 devices is solved, this patch will
+likely be reverted.
+
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Tested-by: John Daiker <daikerjohn@gmail.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/b43/Kconfig  |   19 +-----------------
+ drivers/net/wireless/b43/Makefile |    2 -
+ drivers/net/wireless/b43/b43.h    |   13 ------------
+ drivers/net/wireless/b43/dma.c    |    2 -
+ drivers/net/wireless/b43/main.c   |    9 +++++---
+ drivers/net/wireless/b43/pio.h    |   40 --------------------------------------
+ 6 files changed, 9 insertions(+), 76 deletions(-)
+
+--- a/drivers/net/wireless/b43/Kconfig
++++ b/drivers/net/wireless/b43/Kconfig
+@@ -3,6 +3,7 @@ config B43
+       depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA
+       select SSB
+       select FW_LOADER
++      select SSB_BLOCKIO
+       ---help---
+         b43 is a driver for the Broadcom 43xx series wireless devices.
+@@ -78,14 +79,6 @@ config B43_SDIO
+         If unsure, say N.
+-# Data transfers to the device via PIO
+-# This is only needed on PCMCIA and SDIO devices. All others can do DMA properly.
+-config B43_PIO
+-      bool
+-      depends on B43 && (B43_SDIO || B43_PCMCIA || B43_FORCE_PIO)
+-      select SSB_BLOCKIO
+-      default y
+-
+ config B43_NPHY
+       bool "Pre IEEE 802.11n support (BROKEN)"
+       depends on B43 && EXPERIMENTAL && BROKEN
+@@ -137,12 +130,4 @@ config B43_DEBUG
+         for production use.
+         Only say Y, if you are debugging a problem in the b43 driver sourcecode.
+-config B43_FORCE_PIO
+-      bool "Force usage of PIO instead of DMA"
+-      depends on B43 && B43_DEBUG
+-      ---help---
+-        This will disable DMA and always enable PIO instead.
+-
+-        Say N!
+-        This is only for debugging the PIO engine code. You do
+-        _NOT_ want to enable this.
++
+--- a/drivers/net/wireless/b43/Makefile
++++ b/drivers/net/wireless/b43/Makefile
+@@ -12,7 +12,7 @@ b43-y                                += xmit.o
+ b43-y                         += lo.o
+ b43-y                         += wa.o
+ b43-y                         += dma.o
+-b43-$(CONFIG_B43_PIO)         += pio.o
++b43-y                         += pio.o
+ b43-y                         += rfkill.o
+ b43-$(CONFIG_B43_LEDS)                += leds.o
+ b43-$(CONFIG_B43_PCMCIA)      += pcmcia.o
+--- a/drivers/net/wireless/b43/b43.h
++++ b/drivers/net/wireless/b43/b43.h
+@@ -830,7 +830,6 @@ struct b43_wl {
+       /* The device LEDs. */
+       struct b43_leds leds;
+-#ifdef CONFIG_B43_PIO
+       /*
+        * RX/TX header/tail buffers used by the frame transmit functions.
+        */
+@@ -838,7 +837,6 @@ struct b43_wl {
+       struct b43_txhdr txhdr;
+       u8 rx_tail[4];
+       u8 tx_tail[4];
+-#endif /* CONFIG_B43_PIO */
+ };
+ static inline struct b43_wl *hw_to_b43_wl(struct ieee80211_hw *hw)
+@@ -889,20 +887,9 @@ static inline void b43_write32(struct b4
+ static inline bool b43_using_pio_transfers(struct b43_wldev *dev)
+ {
+-#ifdef CONFIG_B43_PIO
+       return dev->__using_pio_transfers;
+-#else
+-      return 0;
+-#endif
+ }
+-#ifdef CONFIG_B43_FORCE_PIO
+-# define B43_FORCE_PIO        1
+-#else
+-# define B43_FORCE_PIO        0
+-#endif
+-
+-
+ /* Message printing */
+ void b43info(struct b43_wl *wl, const char *fmt, ...)
+     __attribute__ ((format(printf, 2, 3)));
+--- a/drivers/net/wireless/b43/dma.c
++++ b/drivers/net/wireless/b43/dma.c
+@@ -1620,7 +1620,6 @@ void b43_dma_tx_resume(struct b43_wldev
+       b43_power_saving_ctl_bits(dev, 0);
+ }
+-#ifdef CONFIG_B43_PIO
+ static void direct_fifo_rx(struct b43_wldev *dev, enum b43_dmatype type,
+                          u16 mmio_base, bool enable)
+ {
+@@ -1654,4 +1653,3 @@ void b43_dma_direct_fifo_rx(struct b43_w
+       mmio_base = b43_dmacontroller_base(type, engine_index);
+       direct_fifo_rx(dev, type, mmio_base, enable);
+ }
+-#endif /* CONFIG_B43_PIO */
+--- a/drivers/net/wireless/b43/main.c
++++ b/drivers/net/wireless/b43/main.c
+@@ -102,6 +102,9 @@ int b43_modparam_verbose = B43_VERBOSITY
+ module_param_named(verbose, b43_modparam_verbose, int, 0644);
+ MODULE_PARM_DESC(verbose, "Log message verbosity: 0=error, 1=warn, 2=info(default), 3=debug");
++static int modparam_pio;
++module_param_named(pio, modparam_pio, int, 0444);
++MODULE_PARM_DESC(pio, "enable(1) / disable(0) PIO mode");
+ static const struct ssb_device_id b43_ssb_tbl[] = {
+       SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5),
+@@ -1790,8 +1793,8 @@ static void b43_do_interrupt_thread(stru
+                              dma_reason[4], dma_reason[5]);
+                       b43err(dev->wl, "This device does not support DMA "
+                              "on your system. Please use PIO instead.\n");
+-                      b43err(dev->wl, "CONFIG_B43_FORCE_PIO must be set in "
+-                             "your kernel configuration.\n");
++                      b43err(dev->wl, "Unload the b43 module and reload "
++                             "with 'pio=1'\n");
+                       return;
+               }
+               if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
+@@ -4358,7 +4361,7 @@ static int b43_wireless_core_init(struct
+       if ((dev->dev->bus->bustype == SSB_BUSTYPE_PCMCIA) ||
+           (dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) ||
+-          B43_FORCE_PIO) {
++          modparam_pio) {
+               dev->__using_pio_transfers = 1;
+               err = b43_pio_init(dev);
+       } else {
+--- a/drivers/net/wireless/b43/pio.h
++++ b/drivers/net/wireless/b43/pio.h
+@@ -55,8 +55,6 @@
+ #define B43_PIO_MAX_NR_TXPACKETS      32
+-#ifdef CONFIG_B43_PIO
+-
+ struct b43_pio_txpacket {
+       /* Pointer to the TX queue we belong to. */
+       struct b43_pio_txqueue *queue;
+@@ -169,42 +167,4 @@ void b43_pio_rx(struct b43_pio_rxqueue *
+ void b43_pio_tx_suspend(struct b43_wldev *dev);
+ void b43_pio_tx_resume(struct b43_wldev *dev);
+-
+-#else /* CONFIG_B43_PIO */
+-
+-
+-static inline int b43_pio_init(struct b43_wldev *dev)
+-{
+-      return 0;
+-}
+-static inline void b43_pio_free(struct b43_wldev *dev)
+-{
+-}
+-static inline void b43_pio_stop(struct b43_wldev *dev)
+-{
+-}
+-static inline int b43_pio_tx(struct b43_wldev *dev,
+-                           struct sk_buff *skb)
+-{
+-      return 0;
+-}
+-static inline void b43_pio_handle_txstatus(struct b43_wldev *dev,
+-                                         const struct b43_txstatus *status)
+-{
+-}
+-static inline void b43_pio_get_tx_stats(struct b43_wldev *dev,
+-                                      struct ieee80211_tx_queue_stats *stats)
+-{
+-}
+-static inline void b43_pio_rx(struct b43_pio_rxqueue *q)
+-{
+-}
+-static inline void b43_pio_tx_suspend(struct b43_wldev *dev)
+-{
+-}
+-static inline void b43_pio_tx_resume(struct b43_wldev *dev)
+-{
+-}
+-
+-#endif /* CONFIG_B43_PIO */
+ #endif /* B43_PIO_H_ */
diff --git a/queue-2.6.32/b43-fall-back-gracefully-to-pio-mode-after-fatal-dma-errors.patch b/queue-2.6.32/b43-fall-back-gracefully-to-pio-mode-after-fatal-dma-errors.patch
new file mode 100644 (file)
index 0000000..eb05bfb
--- /dev/null
@@ -0,0 +1,138 @@
+From 9e3bd9190800e8209b4a3e1d724c35f0738dcad2 Mon Sep 17 00:00:00 2001
+From: Linus Torvalds <torvalds@linux-foundation.org>
+Date: Fri, 26 Feb 2010 10:34:27 -0800
+Subject: b43: fall back gracefully to PIO mode after fatal DMA errors
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit 9e3bd9190800e8209b4a3e1d724c35f0738dcad2 upstream.
+
+This makes the b43 driver just automatically fall back to PIO mode when
+DMA doesn't work.
+
+The driver already told the user to do it, so rather than have the user
+reload the module with a new flag, just make the driver do it
+automatically. We keep the message as an indication that something is
+wrong, but now just automatically fall back to the hopefully working PIO
+case.
+
+(Some post-2.6.33 merge fixups by Larry Finger <Larry.Finger@lwfinger.net>
+and yours truly... -- JWL)
+
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/b43/Kconfig |   19 +++++++++++++++++--
+ drivers/net/wireless/b43/b43.h   |    7 +++++++
+ drivers/net/wireless/b43/main.c  |   14 ++++++++------
+ 3 files changed, 32 insertions(+), 8 deletions(-)
+
+--- a/drivers/net/wireless/b43/Kconfig
++++ b/drivers/net/wireless/b43/Kconfig
+@@ -3,7 +3,6 @@ config B43
+       depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA
+       select SSB
+       select FW_LOADER
+-      select SSB_BLOCKIO
+       ---help---
+         b43 is a driver for the Broadcom 43xx series wireless devices.
+@@ -79,6 +78,14 @@ config B43_SDIO
+         If unsure, say N.
++#Data transfers to the device via PIO. We want it as a fallback even
++# if we can do DMA.
++config B43_PIO
++      bool
++      depends on B43
++      select SSB_BLOCKIO
++      default y
++
+ config B43_NPHY
+       bool "Pre IEEE 802.11n support (BROKEN)"
+       depends on B43 && EXPERIMENTAL && BROKEN
+@@ -130,4 +137,12 @@ config B43_DEBUG
+         for production use.
+         Only say Y, if you are debugging a problem in the b43 driver sourcecode.
+-
++config B43_FORCE_PIO
++      bool "Force usage of PIO instead of DMA"
++      depends on B43 && B43_DEBUG
++      ---help---
++        This will disable DMA and always enable PIO instead.
++
++        Say N!
++        This is only for debugging the PIO engine code. You do
++        _NOT_ want to enable this.
+--- a/drivers/net/wireless/b43/b43.h
++++ b/drivers/net/wireless/b43/b43.h
+@@ -696,6 +696,7 @@ struct b43_wldev {
+       bool radio_hw_enable;   /* saved state of radio hardware enabled state */
+       bool qos_enabled;               /* TRUE, if QoS is used. */
+       bool hwcrypto_enabled;          /* TRUE, if HW crypto acceleration is enabled. */
++      bool use_pio;                   /* TRUE if next init should use PIO */
+       /* PHY/Radio device. */
+       struct b43_phy phy;
+@@ -890,6 +891,12 @@ static inline bool b43_using_pio_transfe
+       return dev->__using_pio_transfers;
+ }
++#ifdef CONFIG_B43_FORCE_PIO
++# define B43_PIO_DEFAULT 1
++#else
++# define B43_PIO_DEFAULT 0
++#endif
++
+ /* Message printing */
+ void b43info(struct b43_wl *wl, const char *fmt, ...)
+     __attribute__ ((format(printf, 2, 3)));
+--- a/drivers/net/wireless/b43/main.c
++++ b/drivers/net/wireless/b43/main.c
+@@ -102,9 +102,9 @@ int b43_modparam_verbose = B43_VERBOSITY
+ module_param_named(verbose, b43_modparam_verbose, int, 0644);
+ MODULE_PARM_DESC(verbose, "Log message verbosity: 0=error, 1=warn, 2=info(default), 3=debug");
+-static int modparam_pio;
+-module_param_named(pio, modparam_pio, int, 0444);
+-MODULE_PARM_DESC(pio, "enable(1) / disable(0) PIO mode");
++int b43_modparam_pio = B43_PIO_DEFAULT;
++module_param_named(pio, b43_modparam_pio, int, 0644);
++MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO");
+ static const struct ssb_device_id b43_ssb_tbl[] = {
+       SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5),
+@@ -1793,8 +1793,9 @@ static void b43_do_interrupt_thread(stru
+                              dma_reason[4], dma_reason[5]);
+                       b43err(dev->wl, "This device does not support DMA "
+                              "on your system. Please use PIO instead.\n");
+-                      b43err(dev->wl, "Unload the b43 module and reload "
+-                             "with 'pio=1'\n");
++                      /* Fall back to PIO transfers if we get fatal DMA errors! */
++                      dev->use_pio = 1;
++                      b43_controller_restart(dev, "DMA error");
+                       return;
+               }
+               if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
+@@ -4361,7 +4362,7 @@ static int b43_wireless_core_init(struct
+       if ((dev->dev->bus->bustype == SSB_BUSTYPE_PCMCIA) ||
+           (dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) ||
+-          modparam_pio) {
++          dev->use_pio) {
+               dev->__using_pio_transfers = 1;
+               err = b43_pio_init(dev);
+       } else {
+@@ -4829,6 +4830,7 @@ static int b43_one_core_attach(struct ss
+       if (!wldev)
+               goto out;
++      wldev->use_pio = b43_modparam_pio;
+       wldev->dev = dev;
+       wldev->wl = wl;
+       b43_set_status(wldev, B43_STAT_UNINIT);
diff --git a/queue-2.6.32/b43-remove-reset-after-fatal-dma-error.patch b/queue-2.6.32/b43-remove-reset-after-fatal-dma-error.patch
new file mode 100644 (file)
index 0000000..244924b
--- /dev/null
@@ -0,0 +1,37 @@
+From 214ac9a4ead6cb254451c09d9c8234a76693feb1 Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger@lwfinger.net>
+Date: Wed, 9 Dec 2009 13:25:56 -0600
+Subject: b43: Remove reset after fatal DMA error
+
+From: Larry Finger <Larry.Finger@lwfinger.net>
+
+commit 214ac9a4ead6cb254451c09d9c8234a76693feb1 upstream.
+
+As shown in Kernel Bugzilla #14761, doing a controller restart after a
+fatal DMA error does not accomplish anything other than consume the CPU
+on an affected system. Accordingly, substitute a meaningful message for
+the restart.
+
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/b43/main.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/b43/main.c
++++ b/drivers/net/wireless/b43/main.c
+@@ -1788,7 +1788,10 @@ static void b43_do_interrupt_thread(stru
+                              dma_reason[0], dma_reason[1],
+                              dma_reason[2], dma_reason[3],
+                              dma_reason[4], dma_reason[5]);
+-                      b43_controller_restart(dev, "DMA error");
++                      b43err(dev->wl, "This device does not support DMA "
++                             "on your system. Please use PIO instead.\n");
++                      b43err(dev->wl, "CONFIG_B43_FORCE_PIO must be set in "
++                             "your kernel configuration.\n");
+                       return;
+               }
+               if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
diff --git a/queue-2.6.32/i2c-i801-add-intel-cougar-point-device-ids.patch b/queue-2.6.32/i2c-i801-add-intel-cougar-point-device-ids.patch
new file mode 100644 (file)
index 0000000..87c057c
--- /dev/null
@@ -0,0 +1,83 @@
+From 393764340beb595c1ad7dd2d2243c2b6551aaa71 Mon Sep 17 00:00:00 2001
+From: Seth Heasley <seth.heasley@intel.com>
+Date: Tue, 2 Mar 2010 12:23:39 +0100
+Subject: i2c-i801: Add Intel Cougar Point device IDs
+
+From: Seth Heasley <seth.heasley@intel.com>
+
+commit 393764340beb595c1ad7dd2d2243c2b6551aaa71 upstream.
+
+Add the Intel Cougar Point (PCH) SMBus controller device IDs.
+
+Signed-off-by: Seth Heasley <seth.heasley@intel.com>
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Documentation/i2c/busses/i2c-i801 |    3 ++-
+ drivers/i2c/busses/Kconfig        |    5 +++--
+ drivers/i2c/busses/i2c-i801.c     |    5 ++++-
+ 3 files changed, 9 insertions(+), 4 deletions(-)
+
+--- a/Documentation/i2c/busses/i2c-i801
++++ b/Documentation/i2c/busses/i2c-i801
+@@ -15,7 +15,8 @@ Supported adapters:
+   * Intel 82801I (ICH9)
+   * Intel EP80579 (Tolapai)
+   * Intel 82801JI (ICH10)
+-  * Intel PCH
++  * Intel 3400/5 Series (PCH)
++  * Intel Cougar Point (PCH)
+    Datasheets: Publicly available at the Intel website
+ Authors: 
+--- a/drivers/i2c/busses/Kconfig
++++ b/drivers/i2c/busses/Kconfig
+@@ -77,7 +77,7 @@ config I2C_AMD8111
+         will be called i2c-amd8111.
+ config I2C_I801
+-      tristate "Intel 82801 (ICH)"
++      tristate "Intel 82801 (ICH/PCH)"
+       depends on PCI
+       help
+         If you say yes to this option, support will be included for the Intel
+@@ -97,7 +97,8 @@ config I2C_I801
+           ICH9
+           Tolapai
+           ICH10
+-          PCH
++          3400/5 Series (PCH)
++          Cougar Point (PCH)
+         This driver can also be built as a module.  If so, the module
+         will be called i2c-i801.
+--- a/drivers/i2c/busses/i2c-i801.c
++++ b/drivers/i2c/busses/i2c-i801.c
+@@ -41,7 +41,8 @@
+   Tolapai               0x5032     32     hard     yes     yes     yes
+   ICH10                 0x3a30     32     hard     yes     yes     yes
+   ICH10                 0x3a60     32     hard     yes     yes     yes
+-  PCH                   0x3b30     32     hard     yes     yes     yes
++  3400/5 Series (PCH)   0x3b30     32     hard     yes     yes     yes
++  Cougar Point (PCH)    0x1c22     32     hard     yes     yes     yes
+   Features supported by this driver:
+   Software PEC                     no
+@@ -580,6 +581,7 @@ static struct pci_device_id i801_ids[] =
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10_4) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10_5) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PCH_SMBUS) },
++      { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CPT_SMBUS) },
+       { 0, }
+ };
+@@ -709,6 +711,7 @@ static int __devinit i801_probe(struct p
+       case PCI_DEVICE_ID_INTEL_ICH10_4:
+       case PCI_DEVICE_ID_INTEL_ICH10_5:
+       case PCI_DEVICE_ID_INTEL_PCH_SMBUS:
++      case PCI_DEVICE_ID_INTEL_CPT_SMBUS:
+               i801_features |= FEATURE_I2C_BLOCK_READ;
+               /* fall through */
+       case PCI_DEVICE_ID_INTEL_82801DB_3:
diff --git a/queue-2.6.32/ipoib-fix-tx-queue-lockup-with-mixed-ud-cm-traffic.patch b/queue-2.6.32/ipoib-fix-tx-queue-lockup-with-mixed-ud-cm-traffic.patch
new file mode 100644 (file)
index 0000000..a72229a
--- /dev/null
@@ -0,0 +1,47 @@
+From f0dc117abdfa9a0e96c3d013d836460ef3cd08c7 Mon Sep 17 00:00:00 2001
+From: Eli Cohen <eli@mellanox.co.il>
+Date: Wed, 3 Mar 2010 12:27:52 +0000
+Subject: IPoIB: Fix TX queue lockup with mixed UD/CM traffic
+
+From: Eli Cohen <eli@mellanox.co.il>
+
+commit f0dc117abdfa9a0e96c3d013d836460ef3cd08c7 upstream.
+
+The IPoIB UD QP reports send completions to priv->send_cq, which is
+usually left unarmed; it only gets armed when the number of
+outstanding send requests reaches the size of the TX queue. This
+arming is done only in the send path for the UD QP.  However, when
+sending CM packets, the net queue may be stopped for the same reasons
+but no measures are taken to recover the UD path from a lockup.
+
+Consider this scenario: a host sends high rate of both CM and UD
+packets, with a TX queue length of N.  If at some time the number of
+outstanding UD packets is more than N/2 and the overall outstanding
+packets is N-1, and CM sends a packet (making the number of
+outstanding sends equal N), the TX queue will be stopped.  When all
+the CM packets complete, the number of outstanding packets will still
+be higher than N/2 so the TX queue will not be restarted.
+
+Fix this by calling ib_req_notify_cq() when the queue is stopped in
+the CM path.
+
+Signed-off-by: Eli Cohen <eli@mellanox.co.il>
+Signed-off-by: Roland Dreier <rolandd@cisco.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/infiniband/ulp/ipoib/ipoib_cm.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
++++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+@@ -752,6 +752,8 @@ void ipoib_cm_send(struct net_device *de
+               if (++priv->tx_outstanding == ipoib_sendq_size) {
+                       ipoib_dbg(priv, "TX ring 0x%x full, stopping kernel net queue\n",
+                                 tx->qp->qp_num);
++                      if (ib_req_notify_cq(priv->send_cq, IB_CQ_NEXT_COMP))
++                              ipoib_warn(priv, "request notify on send CQ failed\n");
+                       netif_stop_queue(dev);
+               }
+       }
diff --git a/queue-2.6.32/patch.ct36F b/queue-2.6.32/patch.ct36F
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/queue-2.6.32/pci-fix-nested-spinlock-hang-in-aer_inject.patch b/queue-2.6.32/pci-fix-nested-spinlock-hang-in-aer_inject.patch
new file mode 100644 (file)
index 0000000..70df458
--- /dev/null
@@ -0,0 +1,70 @@
+From bd1f46deba615971a58193afd0202878cadf19a7 Mon Sep 17 00:00:00 2001
+From: Andrew Patterson <andrew.patterson@hp.com>
+Date: Fri, 22 Jan 2010 14:06:53 -0700
+Subject: PCI: fix nested spinlock hang in aer_inject
+
+From: Andrew Patterson <andrew.patterson@hp.com>
+
+commit bd1f46deba615971a58193afd0202878cadf19a7 upstream.
+
+The aer_inject module hangs in aer_inject() when checking the device's
+error masks.  The hang is due to a recursive use of the aer_inject lock.
+The aer_inject() routine grabs the lock while processing the error and then
+calls pci_read_config_dword to read the masks. The pci_read_config_dword
+routine is earlier overridden by pci_read_aer, which among other things,
+grabs the aer_inject lock.
+
+Fixed by moving the pci_read_config_dword calls to read the masks to before
+the lock is taken.
+
+Acked-by: Huang Ying <ying.huang@intel.com>
+Signed-off-by: Andrew Patterson <andrew.patterson@hp.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/pcie/aer/aer_inject.c |   12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/drivers/pci/pcie/aer/aer_inject.c
++++ b/drivers/pci/pcie/aer/aer_inject.c
+@@ -302,7 +302,7 @@ static int aer_inject(struct aer_error_i
+       unsigned long flags;
+       unsigned int devfn = PCI_DEVFN(einj->dev, einj->fn);
+       int pos_cap_err, rp_pos_cap_err;
+-      u32 sever, mask;
++      u32 sever, cor_mask, uncor_mask;
+       int ret = 0;
+       dev = pci_get_bus_and_slot(einj->bus, devfn);
+@@ -320,6 +320,9 @@ static int aer_inject(struct aer_error_i
+               goto out_put;
+       }
+       pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_SEVER, &sever);
++      pci_read_config_dword(dev, pos_cap_err + PCI_ERR_COR_MASK, &cor_mask);
++      pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_MASK,
++                            &uncor_mask);
+       rp_pos_cap_err = pci_find_ext_capability(rpdev, PCI_EXT_CAP_ID_ERR);
+       if (!rp_pos_cap_err) {
+@@ -354,17 +357,14 @@ static int aer_inject(struct aer_error_i
+       err->header_log2 = einj->header_log2;
+       err->header_log3 = einj->header_log3;
+-      pci_read_config_dword(dev, pos_cap_err + PCI_ERR_COR_MASK, &mask);
+-      if (einj->cor_status && !(einj->cor_status & ~mask)) {
++      if (einj->cor_status && !(einj->cor_status & ~cor_mask)) {
+               ret = -EINVAL;
+               printk(KERN_WARNING "The correctable error(s) is masked "
+                               "by device\n");
+               spin_unlock_irqrestore(&inject_lock, flags);
+               goto out_put;
+       }
+-
+-      pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_MASK, &mask);
+-      if (einj->uncor_status && !(einj->uncor_status & ~mask)) {
++      if (einj->uncor_status && !(einj->uncor_status & ~uncor_mask)) {
+               ret = -EINVAL;
+               printk(KERN_WARNING "The uncorrectable error(s) is masked "
+                               "by device\n");
diff --git a/queue-2.6.32/pci-kill-off-pci_register_set_vga_state-symbol-export.patch b/queue-2.6.32/pci-kill-off-pci_register_set_vga_state-symbol-export.patch
new file mode 100644 (file)
index 0000000..8b166db
--- /dev/null
@@ -0,0 +1,33 @@
+From ded1d8f29b4d315a2093cafc3ee17ac870a87972 Mon Sep 17 00:00:00 2001
+From: Paul Mundt <lethal@linux-sh.org>
+Date: Thu, 11 Mar 2010 14:08:33 -0800
+Subject: PCI: kill off pci_register_set_vga_state() symbol export.
+
+From: Paul Mundt <lethal@linux-sh.org>
+
+commit ded1d8f29b4d315a2093cafc3ee17ac870a87972 upstream.
+
+When pci_register_set_vga_state() was made __init, the EXPORT_SYMBOL() was
+retained, which now leaves us with a section mismatch.
+
+Signed-off-by: Paul Mundt <lethal@linux-sh.org>
+Cc: Mike Travis <travis@sgi.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/pci.c |    1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/pci/pci.c
++++ b/drivers/pci/pci.c
+@@ -2794,7 +2794,6 @@ EXPORT_SYMBOL(pcim_pin_device);
+ EXPORT_SYMBOL(pci_disable_device);
+ EXPORT_SYMBOL(pci_find_capability);
+ EXPORT_SYMBOL(pci_bus_find_capability);
+-EXPORT_SYMBOL(pci_register_set_vga_state);
+ EXPORT_SYMBOL(pci_release_regions);
+ EXPORT_SYMBOL(pci_request_regions);
+ EXPORT_SYMBOL(pci_request_regions_exclusive);
diff --git a/queue-2.6.32/pci-update-pci_set_vga_state-to-call-arch-functions.patch b/queue-2.6.32/pci-update-pci_set_vga_state-to-call-arch-functions.patch
new file mode 100644 (file)
index 0000000..e3a8303
--- /dev/null
@@ -0,0 +1,100 @@
+From 95a8b6efc5d07103583f706c8a5889437d537939 Mon Sep 17 00:00:00 2001
+From: Mike Travis <travis@sgi.com>
+Date: Tue, 2 Feb 2010 14:38:13 -0800
+Subject: pci: Update pci_set_vga_state() to call arch functions
+
+From: Mike Travis <travis@sgi.com>
+
+commit 95a8b6efc5d07103583f706c8a5889437d537939 upstream.
+
+Update pci_set_vga_state to call arch dependent functions to enable Legacy
+VGA I/O transactions to be redirected to correct target.
+
+[akpm@linux-foundation.org: make pci_register_set_vga_state() __init]
+Signed-off-by: Mike Travis <travis@sgi.com>
+LKML-Reference: <201002022238.o12McE1J018723@imap1.linux-foundation.org>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Cc: Robin Holt <holt@sgi.com>
+Cc: Jack Steiner <steiner@sgi.com>
+Cc: Ingo Molnar <mingo@elte.hu>
+Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
+Cc: David Airlie <airlied@linux.ie>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: H. Peter Anvin <hpa@zytor.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/pci.c   |   25 ++++++++++++++++++++++++-
+ include/linux/pci.h |    5 +++++
+ 2 files changed, 29 insertions(+), 1 deletion(-)
+
+--- a/drivers/pci/pci.c
++++ b/drivers/pci/pci.c
+@@ -2541,6 +2541,23 @@ int pci_resource_bar(struct pci_dev *dev
+       return 0;
+ }
++/* Some architectures require additional programming to enable VGA */
++static arch_set_vga_state_t arch_set_vga_state;
++
++void __init pci_register_set_vga_state(arch_set_vga_state_t func)
++{
++      arch_set_vga_state = func;      /* NULL disables */
++}
++
++static int pci_set_vga_state_arch(struct pci_dev *dev, bool decode,
++                    unsigned int command_bits, bool change_bridge)
++{
++      if (arch_set_vga_state)
++              return arch_set_vga_state(dev, decode, command_bits,
++                                              change_bridge);
++      return 0;
++}
++
+ /**
+  * pci_set_vga_state - set VGA decode state on device and parents if requested
+  * @dev: the PCI device
+@@ -2554,9 +2571,15 @@ int pci_set_vga_state(struct pci_dev *de
+       struct pci_bus *bus;
+       struct pci_dev *bridge;
+       u16 cmd;
++      int rc;
+       WARN_ON(command_bits & ~(PCI_COMMAND_IO|PCI_COMMAND_MEMORY));
++      /* ARCH specific VGA enables */
++      rc = pci_set_vga_state_arch(dev, decode, command_bits, change_bridge);
++      if (rc)
++              return rc;
++
+       pci_read_config_word(dev, PCI_COMMAND, &cmd);
+       if (decode == true)
+               cmd |= command_bits;
+@@ -2771,6 +2794,7 @@ EXPORT_SYMBOL(pcim_pin_device);
+ EXPORT_SYMBOL(pci_disable_device);
+ EXPORT_SYMBOL(pci_find_capability);
+ EXPORT_SYMBOL(pci_bus_find_capability);
++EXPORT_SYMBOL(pci_register_set_vga_state);
+ EXPORT_SYMBOL(pci_release_regions);
+ EXPORT_SYMBOL(pci_request_regions);
+ EXPORT_SYMBOL(pci_request_regions_exclusive);
+@@ -2803,4 +2827,3 @@ EXPORT_SYMBOL(pci_target_state);
+ EXPORT_SYMBOL(pci_prepare_to_sleep);
+ EXPORT_SYMBOL(pci_back_from_sleep);
+ EXPORT_SYMBOL_GPL(pci_set_pcie_reset_state);
+-
+--- a/include/linux/pci.h
++++ b/include/linux/pci.h
+@@ -945,6 +945,11 @@ static inline int pci_proc_domain(struct
+ }
+ #endif /* CONFIG_PCI_DOMAINS */
++/* some architectures require additional setup to direct VGA traffic */
++typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode,
++                    unsigned int command_bits, bool change_bridge);
++extern void pci_register_set_vga_state(arch_set_vga_state_t func);
++
+ #else /* CONFIG_PCI is not enabled */
+ /*
index a201a4e5e9cd4bf120dff4fb40d43cedca330a81..7c1cbffa10cbd7fd1c5e1d9e16c57e6bda8120c6 100644 (file)
@@ -135,3 +135,17 @@ igb-add-support-for-82576ns-serdes-adapter.patch
 pcie-aer-prevent-aer-injection-if-hardware-masks-error-reporting.patch
 vgaarb-fix-vga-arbiter-to-accept-pci-domains-other-than-0.patch
 scsi-fc-transport-use-packed-modifier-for-fc_bsg_request-structure.patch
+pci-update-pci_set_vga_state-to-call-arch-functions.patch
+pci-kill-off-pci_register_set_vga_state-symbol-export.patch
+pci-fix-nested-spinlock-hang-in-aer_inject.patch
+ipoib-fix-tx-queue-lockup-with-mixed-ud-cm-traffic.patch
+x86-pci-irq-and-pci_ids-patch-for-intel-cougar-point-deviceids.patch
+alsa-hda_intel-alsa-hd-audio-patch-for-intel-cougar-point-deviceids.patch
+alsa-hda-enable-snoop-for-intel-cougar-point.patch
+ata_piix-ide-mode-sata-patch-for-intel-cougar-point-deviceids.patch
+ahci-ahci-and-raid-mode-sata-patch-for-intel-cougar-point-deviceids.patch
+i2c-i801-add-intel-cougar-point-device-ids.patch
+b43-remove-reset-after-fatal-dma-error.patch
+b43-allow-pio-mode-to-be-selected-at-module-load.patch
+b43-fall-back-gracefully-to-pio-mode-after-fatal-dma-errors.patch
+alsa-hda-add-position_fix-quirk-for-biostar-mobo.patch
diff --git a/queue-2.6.32/x86-pci-irq-and-pci_ids-patch-for-intel-cougar-point-deviceids.patch b/queue-2.6.32/x86-pci-irq-and-pci_ids-patch-for-intel-cougar-point-deviceids.patch
new file mode 100644 (file)
index 0000000..dec68c4
--- /dev/null
@@ -0,0 +1,44 @@
+From 93da6202264ce1256b04db8008a43882ae62d060 Mon Sep 17 00:00:00 2001
+From: Seth Heasley <seth.heasley@intel.com>
+Date: Tue, 12 Jan 2010 16:56:37 -0800
+Subject: x86/PCI: irq and pci_ids patch for Intel Cougar Point DeviceIDs
+
+From: Seth Heasley <seth.heasley@intel.com>
+
+commit 93da6202264ce1256b04db8008a43882ae62d060 upstream.
+
+This patch adds the Intel Cougar Point (PCH) LPC and SMBus Controller DeviceIDs.
+
+Signed-off-by: Seth Heasley <seth.heasley@intel.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/pci/irq.c      |    2 ++
+ include/linux/pci_ids.h |    3 +++
+ 2 files changed, 5 insertions(+)
+
+--- a/arch/x86/pci/irq.c
++++ b/arch/x86/pci/irq.c
+@@ -590,6 +590,8 @@ static __init int intel_router_probe(str
+       case PCI_DEVICE_ID_INTEL_ICH10_1:
+       case PCI_DEVICE_ID_INTEL_ICH10_2:
+       case PCI_DEVICE_ID_INTEL_ICH10_3:
++      case PCI_DEVICE_ID_INTEL_CPT_LPC1:
++      case PCI_DEVICE_ID_INTEL_CPT_LPC2:
+               r->name = "PIIX/ICH";
+               r->get = pirq_piix_get;
+               r->set = pirq_piix_set;
+--- a/include/linux/pci_ids.h
++++ b/include/linux/pci_ids.h
+@@ -2412,6 +2412,9 @@
+ #define PCI_DEVICE_ID_INTEL_82840_HB  0x1a21
+ #define PCI_DEVICE_ID_INTEL_82845_HB  0x1a30
+ #define PCI_DEVICE_ID_INTEL_IOAT      0x1a38
++#define PCI_DEVICE_ID_INTEL_CPT_SMBUS 0x1c22
++#define PCI_DEVICE_ID_INTEL_CPT_LPC1  0x1c42
++#define PCI_DEVICE_ID_INTEL_CPT_LPC2  0x1c43
+ #define PCI_DEVICE_ID_INTEL_82801AA_0 0x2410
+ #define PCI_DEVICE_ID_INTEL_82801AA_1 0x2411
+ #define PCI_DEVICE_ID_INTEL_82801AA_3 0x2413