From: Greg Kroah-Hartman Date: Mon, 19 Apr 2010 23:41:46 +0000 (-0700) Subject: .33 patches X-Git-Tag: v2.6.32.12~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b7dca6ebb7a7701670841bf47726cf3d8f643a22;p=thirdparty%2Fkernel%2Fstable-queue.git .33 patches --- diff --git a/queue-2.6.33/ahci-ahci-and-raid-mode-sata-patch-for-intel-cougar-point-deviceids.patch b/queue-2.6.33/ahci-ahci-and-raid-mode-sata-patch-for-intel-cougar-point-deviceids.patch new file mode 100644 index 00000000000..65885f22e74 --- /dev/null +++ b/queue-2.6.33/ahci-ahci-and-raid-mode-sata-patch-for-intel-cougar-point-deviceids.patch @@ -0,0 +1,33 @@ +From 5623cab83ea61e0420f2064216d83eab067a24c6 Mon Sep 17 00:00:00 2001 +From: Seth Heasley +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 + +commit 5623cab83ea61e0420f2064216d83eab067a24c6 upstream. + +Signed-off-by: Seth Heasley +Signed-off-by: Jeff Garzik +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + 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.33/alsa-hda-add-position_fix-quirk-for-biostar-mobo.patch b/queue-2.6.33/alsa-hda-add-position_fix-quirk-for-biostar-mobo.patch new file mode 100644 index 00000000000..d1334c062d8 --- /dev/null +++ b/queue-2.6.33/alsa-hda-add-position_fix-quirk-for-biostar-mobo.patch @@ -0,0 +1,38 @@ +From 8815cd030fdd73932a791d1f06194c8db807cde7 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Thu, 15 Apr 2010 09:02:41 +0200 +Subject: ALSA: hda - Add position_fix quirk for Biostar mobo + +From: Takashi Iwai + +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 +Cc: Eric Piel +Signed-off-by: Takashi Iwai +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -2272,6 +2272,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.33/alsa-hda-enable-snoop-for-intel-cougar-point.patch b/queue-2.6.33/alsa-hda-enable-snoop-for-intel-cougar-point.patch new file mode 100644 index 00000000000..b8e73ffde76 --- /dev/null +++ b/queue-2.6.33/alsa-hda-enable-snoop-for-intel-cougar-point.patch @@ -0,0 +1,64 @@ +From 32679f95cac3b1bdf27dce8b5273e06af186fd91 Mon Sep 17 00:00:00 2001 +From: Seth Heasley +Date: Mon, 22 Feb 2010 17:31:09 -0800 +Subject: ALSA: hda - enable snoop for Intel Cougar Point + +From: Seth Heasley + +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 +Signed-off-by: Takashi Iwai +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -450,6 +450,7 @@ struct azx { + /* driver types */ + enum { + AZX_DRIVER_ICH, ++ AZX_DRIVER_PCH, + AZX_DRIVER_SCH, + AZX_DRIVER_ATI, + AZX_DRIVER_ATIHDMI, +@@ -464,6 +465,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", +@@ -1066,6 +1068,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, +@@ -2434,6 +2437,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: +@@ -2713,7 +2717,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.33/alsa-hda_intel-alsa-hd-audio-patch-for-intel-cougar-point-deviceids.patch b/queue-2.6.33/alsa-hda_intel-alsa-hd-audio-patch-for-intel-cougar-point-deviceids.patch new file mode 100644 index 00000000000..0286f3ec05c --- /dev/null +++ b/queue-2.6.33/alsa-hda_intel-alsa-hd-audio-patch-for-intel-cougar-point-deviceids.patch @@ -0,0 +1,39 @@ +From d2f2fcd2541bae004db7f4798ffd9d2cb75ae817 Mon Sep 17 00:00:00 2001 +From: Seth Heasley +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 + +commit d2f2fcd2541bae004db7f4798ffd9d2cb75ae817 upstream. + +This patch adds the Intel Cougar Point (PCH) HD Audio Controller DeviceIDs. + +Signed-off-by: Seth Heasley +Signed-off-by: Takashi Iwai +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -125,6 +125,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6}, + "{Intel, ICH9}," + "{Intel, ICH10}," + "{Intel, PCH}," ++ "{Intel, CPT}," + "{Intel, SCH}," + "{ATI, SB450}," + "{ATI, SB600}," +@@ -2711,6 +2712,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.33/ata_piix-ide-mode-sata-patch-for-intel-cougar-point-deviceids.patch b/queue-2.6.33/ata_piix-ide-mode-sata-patch-for-intel-cougar-point-deviceids.patch new file mode 100644 index 00000000000..1d8500c9061 --- /dev/null +++ b/queue-2.6.33/ata_piix-ide-mode-sata-patch-for-intel-cougar-point-deviceids.patch @@ -0,0 +1,35 @@ +From 88e8201e67aace3d86de9e75122ea525f0e7248e Mon Sep 17 00:00:00 2001 +From: Seth Heasley +Date: Tue, 12 Jan 2010 17:01:28 -0800 +Subject: ata_piix: IDE Mode SATA patch for Intel Cougar Point DeviceIDs + +From: Seth Heasley + +commit 88e8201e67aace3d86de9e75122ea525f0e7248e upstream. + +Signed-off-by: Seth Heasley +Signed-off-by: Jeff Garzik +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + 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.33/b43-allow-pio-mode-to-be-selected-at-module-load.patch b/queue-2.6.33/b43-allow-pio-mode-to-be-selected-at-module-load.patch new file mode 100644 index 00000000000..15385eeb6e1 --- /dev/null +++ b/queue-2.6.33/b43-allow-pio-mode-to-be-selected-at-module-load.patch @@ -0,0 +1,219 @@ +From b02914af4d7020828ce921a572589dd793517c09 Mon Sep 17 00:00:00 2001 +From: Larry Finger +Date: Thu, 10 Dec 2009 17:35:01 -0600 +Subject: b43: Allow PIO mode to be selected at module load + +From: Larry Finger + +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 +Tested-by: John Daiker +Cc: maximilian attems +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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 && 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 +@@ -822,11 +822,9 @@ struct b43_wl { + /* The device LEDs. */ + struct b43_leds leds; + +-#ifdef CONFIG_B43_PIO + /* Kmalloc'ed scratch space for PIO TX/RX. Protected by wl->mutex. */ + u8 pio_scratchspace[110] __attribute__((__aligned__(8))); + u8 pio_tailspace[4] __attribute__((__aligned__(8))); +-#endif /* CONFIG_B43_PIO */ + }; + + static inline struct b43_wl *hw_to_b43_wl(struct ieee80211_hw *hw) +@@ -877,20 +875,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 +@@ -1653,7 +1653,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) + { +@@ -1687,4 +1686,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.33/b43-fall-back-gracefully-to-pio-mode-after-fatal-dma-errors.patch b/queue-2.6.33/b43-fall-back-gracefully-to-pio-mode-after-fatal-dma-errors.patch new file mode 100644 index 00000000000..d341112956f --- /dev/null +++ b/queue-2.6.33/b43-fall-back-gracefully-to-pio-mode-after-fatal-dma-errors.patch @@ -0,0 +1,138 @@ +From 9e3bd9190800e8209b4a3e1d724c35f0738dcad2 Mon Sep 17 00:00:00 2001 +From: Linus Torvalds +Date: Fri, 26 Feb 2010 10:34:27 -0800 +Subject: b43: fall back gracefully to PIO mode after fatal DMA errors + +From: Linus Torvalds + +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 +and yours truly... -- JWL) + +Signed-off-by: Linus Torvalds +Signed-off-by: John W. Linville +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + 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 && 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 +@@ -694,6 +694,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; +@@ -878,6 +879,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.33/i2c-i801-add-intel-cougar-point-device-ids.patch b/queue-2.6.33/i2c-i801-add-intel-cougar-point-device-ids.patch new file mode 100644 index 00000000000..87c057cc9f8 --- /dev/null +++ b/queue-2.6.33/i2c-i801-add-intel-cougar-point-device-ids.patch @@ -0,0 +1,83 @@ +From 393764340beb595c1ad7dd2d2243c2b6551aaa71 Mon Sep 17 00:00:00 2001 +From: Seth Heasley +Date: Tue, 2 Mar 2010 12:23:39 +0100 +Subject: i2c-i801: Add Intel Cougar Point device IDs + +From: Seth Heasley + +commit 393764340beb595c1ad7dd2d2243c2b6551aaa71 upstream. + +Add the Intel Cougar Point (PCH) SMBus controller device IDs. + +Signed-off-by: Seth Heasley +Signed-off-by: Jean Delvare +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + 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.33/ipoib-fix-tx-queue-lockup-with-mixed-ud-cm-traffic.patch b/queue-2.6.33/ipoib-fix-tx-queue-lockup-with-mixed-ud-cm-traffic.patch new file mode 100644 index 00000000000..a72229a57c8 --- /dev/null +++ b/queue-2.6.33/ipoib-fix-tx-queue-lockup-with-mixed-ud-cm-traffic.patch @@ -0,0 +1,47 @@ +From f0dc117abdfa9a0e96c3d013d836460ef3cd08c7 Mon Sep 17 00:00:00 2001 +From: Eli Cohen +Date: Wed, 3 Mar 2010 12:27:52 +0000 +Subject: IPoIB: Fix TX queue lockup with mixed UD/CM traffic + +From: Eli Cohen + +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 +Signed-off-by: Roland Dreier +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + 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.33/pci-kill-off-pci_register_set_vga_state-symbol-export.patch b/queue-2.6.33/pci-kill-off-pci_register_set_vga_state-symbol-export.patch new file mode 100644 index 00000000000..8e5477f622b --- /dev/null +++ b/queue-2.6.33/pci-kill-off-pci_register_set_vga_state-symbol-export.patch @@ -0,0 +1,33 @@ +From ded1d8f29b4d315a2093cafc3ee17ac870a87972 Mon Sep 17 00:00:00 2001 +From: Paul Mundt +Date: Thu, 11 Mar 2010 14:08:33 -0800 +Subject: PCI: kill off pci_register_set_vga_state() symbol export. + +From: Paul Mundt + +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 +Cc: Mike Travis +Signed-off-by: Andrew Morton +Signed-off-by: Jesse Barnes +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/pci/pci.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/drivers/pci/pci.c ++++ b/drivers/pci/pci.c +@@ -2865,7 +2865,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.33/pci-update-pci_set_vga_state-to-call-arch-functions.patch b/queue-2.6.33/pci-update-pci_set_vga_state-to-call-arch-functions.patch new file mode 100644 index 00000000000..28e29d0732a --- /dev/null +++ b/queue-2.6.33/pci-update-pci_set_vga_state-to-call-arch-functions.patch @@ -0,0 +1,100 @@ +From 95a8b6efc5d07103583f706c8a5889437d537939 Mon Sep 17 00:00:00 2001 +From: Mike Travis +Date: Tue, 2 Feb 2010 14:38:13 -0800 +Subject: pci: Update pci_set_vga_state() to call arch functions + +From: Mike Travis + +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 +LKML-Reference: <201002022238.o12McE1J018723@imap1.linux-foundation.org> +Cc: Thomas Gleixner +Cc: Robin Holt +Cc: Jack Steiner +Cc: Ingo Molnar +Cc: Jesse Barnes +Cc: David Airlie +Signed-off-by: Andrew Morton +Signed-off-by: H. Peter Anvin +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -2612,6 +2612,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 +@@ -2625,9 +2642,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; +@@ -2842,6 +2865,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); +@@ -2874,4 +2898,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 +@@ -959,6 +959,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 */ + + /* diff --git a/queue-2.6.33/series b/queue-2.6.33/series index fb8c4e97c49..fe7964e2d64 100644 --- a/queue-2.6.33/series +++ b/queue-2.6.33/series @@ -93,3 +93,15 @@ quota-fix-possible-dq_flags-corruption.patch ocfs2-set-i_mode-on-disk-during-acl-operations.patch ocfs2-change-bg_chain-check-for-ocfs2_validate_gd_parent.patch 9p-skip-check-for-mandatory-locks-when-unlocking.patch +pci-update-pci_set_vga_state-to-call-arch-functions.patch +pci-kill-off-pci_register_set_vga_state-symbol-export.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-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.33/x86-pci-irq-and-pci_ids-patch-for-intel-cougar-point-deviceids.patch b/queue-2.6.33/x86-pci-irq-and-pci_ids-patch-for-intel-cougar-point-deviceids.patch new file mode 100644 index 00000000000..328de75f850 --- /dev/null +++ b/queue-2.6.33/x86-pci-irq-and-pci_ids-patch-for-intel-cougar-point-deviceids.patch @@ -0,0 +1,44 @@ +From 93da6202264ce1256b04db8008a43882ae62d060 Mon Sep 17 00:00:00 2001 +From: Seth Heasley +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 + +commit 93da6202264ce1256b04db8008a43882ae62d060 upstream. + +This patch adds the Intel Cougar Point (PCH) LPC and SMBus Controller DeviceIDs. + +Signed-off-by: Seth Heasley +Signed-off-by: Jesse Barnes +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -2417,6 +2417,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