diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2011-09-20 09:56:46 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-09-20 09:56:46 -0700 |
commit | 505c6892687f3ffb10703195f076bfef35ce370f (patch) | |
tree | dd5b5127b8a8f43af98e219f682557b4be59305b | |
parent | 0cce87b4bffa0b9ae509e0408b5c7521619a7602 (diff) | |
download | stable-queue-505c6892687f3ffb10703195f076bfef35ce370f.tar.gz |
3.0 patches
20 files changed, 902 insertions, 0 deletions
diff --git a/queue-3.0/acpica-acpi_max_sleep-should-be-2-sec-not-20.patch b/queue-3.0/acpica-acpi_max_sleep-should-be-2-sec-not-20.patch new file mode 100644 index 0000000000..30a8294b15 --- /dev/null +++ b/queue-3.0/acpica-acpi_max_sleep-should-be-2-sec-not-20.patch @@ -0,0 +1,32 @@ +From b33c25d6a62ac253caabda2b5f43258abff451c0 Mon Sep 17 00:00:00 2001 +From: Len Brown <len.brown@intel.com> +Date: Mon, 29 Aug 2011 23:01:58 -0400 +Subject: acpica: ACPI_MAX_SLEEP should be 2 sec, not 20 + +From: Len Brown <len.brown@intel.com> + +commit b33c25d6a62ac253caabda2b5f43258abff451c0 upstream. + +This limit is a workaround for AML that sleeps too long, +but the workaround didn't work b/c of a typo. + +https://bugzilla.kernel.org/show_bug.cgi?id=13195 + +Signed-off-by: Len Brown <len.brown@intel.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/acpi/acpica/acconfig.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/acpi/acpica/acconfig.h ++++ b/drivers/acpi/acpica/acconfig.h +@@ -121,7 +121,7 @@ + + /* Maximum sleep allowed via Sleep() operator */ + +-#define ACPI_MAX_SLEEP 20000 /* Two seconds */ ++#define ACPI_MAX_SLEEP 2000 /* Two seconds */ + + /****************************************************************************** + * diff --git a/queue-3.0/asoc-blackfin-bf5xx-ad193x-fix-codec-device-name.patch b/queue-3.0/asoc-blackfin-bf5xx-ad193x-fix-codec-device-name.patch new file mode 100644 index 0000000000..0a3e067379 --- /dev/null +++ b/queue-3.0/asoc-blackfin-bf5xx-ad193x-fix-codec-device-name.patch @@ -0,0 +1,41 @@ +From c5d2e650bd805a00ff9af537d5b5dede598a198c Mon Sep 17 00:00:00 2001 +From: Lars-Peter Clausen <lars@metafoo.de> +Date: Mon, 5 Sep 2011 13:49:57 +0200 +Subject: ASoC: Blackfin: bf5xx-ad193x: Fix codec device name + +From: Lars-Peter Clausen <lars@metafoo.de> + +commit c5d2e650bd805a00ff9af537d5b5dede598a198c upstream. + +Fix the codec_name field of the dai_link to match the actual device name +of the codec. Otherwise the card won't be instantiated. + +Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> +Acked-by: Liam Girdwood <lrg@ti.com> +Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + sound/soc/blackfin/bf5xx-ad193x.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/sound/soc/blackfin/bf5xx-ad193x.c ++++ b/sound/soc/blackfin/bf5xx-ad193x.c +@@ -103,7 +103,7 @@ static struct snd_soc_dai_link bf5xx_ad1 + .cpu_dai_name = "bfin-tdm.0", + .codec_dai_name ="ad193x-hifi", + .platform_name = "bfin-tdm-pcm-audio", +- .codec_name = "ad193x.5", ++ .codec_name = "spi0.5", + .ops = &bf5xx_ad193x_ops, + }, + { +@@ -112,7 +112,7 @@ static struct snd_soc_dai_link bf5xx_ad1 + .cpu_dai_name = "bfin-tdm.1", + .codec_dai_name ="ad193x-hifi", + .platform_name = "bfin-tdm-pcm-audio", +- .codec_name = "ad193x.5", ++ .codec_name = "spi0.5", + .ops = &bf5xx_ad193x_ops, + }, + }; diff --git a/queue-3.0/asoc-fix-reporting-of-partial-jack-updates.patch b/queue-3.0/asoc-fix-reporting-of-partial-jack-updates.patch new file mode 100644 index 0000000000..31acc46538 --- /dev/null +++ b/queue-3.0/asoc-fix-reporting-of-partial-jack-updates.patch @@ -0,0 +1,33 @@ +From 747da0f80e566500421bd7760b2e050fea3fde5e Mon Sep 17 00:00:00 2001 +From: Mark Brown <broonie@opensource.wolfsonmicro.com> +Date: Sun, 4 Sep 2011 08:18:18 -0700 +Subject: ASoC: Fix reporting of partial jack updates + +From: Mark Brown <broonie@opensource.wolfsonmicro.com> + +commit 747da0f80e566500421bd7760b2e050fea3fde5e upstream. + +We need to report the entire jack state to the core jack code, not just +the bits that were being updated by the caller, otherwise the status +reported by other detection methods will be omitted from the state seen +by userspace. + +Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> +Acked-by: Liam Girdwood <lrg@ti.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + sound/soc/soc-jack.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/soc/soc-jack.c ++++ b/sound/soc/soc-jack.c +@@ -105,7 +105,7 @@ void snd_soc_jack_report(struct snd_soc_ + + snd_soc_dapm_sync(dapm); + +- snd_jack_report(jack->jack, status); ++ snd_jack_report(jack->jack, jack->status); + + out: + mutex_unlock(&codec->mutex); diff --git a/queue-3.0/asoc-mpc5200-replace-of_device-with-platform_device.patch b/queue-3.0/asoc-mpc5200-replace-of_device-with-platform_device.patch new file mode 100644 index 0000000000..2af8bfd57a --- /dev/null +++ b/queue-3.0/asoc-mpc5200-replace-of_device-with-platform_device.patch @@ -0,0 +1,51 @@ +From 3bdf28feafc52864bd7f17b39deec64833a89d19 Mon Sep 17 00:00:00 2001 +From: Timur Tabi <timur@freescale.com> +Date: Tue, 23 Aug 2011 16:48:26 -0500 +Subject: ASoC: MPC5200: replace of_device with platform_device + +From: Timur Tabi <timur@freescale.com> + +commit 3bdf28feafc52864bd7f17b39deec64833a89d19 upstream. + +'struct of_device' no longer exists, and its functionality has been merged +into platform_device. Update the MPC5200 audio DMA driver (mpc5200_dma) +accordingly. This fixes a build break. + +Signed-off-by: Timur Tabi <timur@freescale.com> +Acked-by: Liam Girdwood <lrg@ti.com> +Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + sound/soc/fsl/mpc5200_dma.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/sound/soc/fsl/mpc5200_dma.c ++++ b/sound/soc/fsl/mpc5200_dma.c +@@ -368,7 +368,7 @@ static struct snd_soc_platform_driver mp + .pcm_free = &psc_dma_free, + }; + +-static int mpc5200_hpcd_probe(struct of_device *op) ++static int mpc5200_hpcd_probe(struct platform_device *op) + { + phys_addr_t fifo; + struct psc_dma *psc_dma; +@@ -486,7 +486,7 @@ out_unmap: + return ret; + } + +-static int mpc5200_hpcd_remove(struct of_device *op) ++static int mpc5200_hpcd_remove(struct platform_device *op) + { + struct psc_dma *psc_dma = dev_get_drvdata(&op->dev); + +@@ -518,7 +518,7 @@ MODULE_DEVICE_TABLE(of, mpc5200_hpcd_mat + static struct platform_driver mpc5200_hpcd_of_driver = { + .probe = mpc5200_hpcd_probe, + .remove = mpc5200_hpcd_remove, +- .dev = { ++ .driver = { + .owner = THIS_MODULE, + .name = "mpc5200-pcm-audio", + .of_match_table = mpc5200_hpcd_match, diff --git a/queue-3.0/ath9k_hw-fix-calibration-on-5-ghz.patch b/queue-3.0/ath9k_hw-fix-calibration-on-5-ghz.patch new file mode 100644 index 0000000000..94c503670a --- /dev/null +++ b/queue-3.0/ath9k_hw-fix-calibration-on-5-ghz.patch @@ -0,0 +1,34 @@ +From 0e4660cbe51276e86dbdab17228733dbcdb49249 Mon Sep 17 00:00:00 2001 +From: Felix Fietkau <nbd@openwrt.org> +Date: Mon, 29 Aug 2011 10:06:14 +0200 +Subject: ath9k_hw: fix calibration on 5 ghz + +From: Felix Fietkau <nbd@openwrt.org> + +commit 0e4660cbe51276e86dbdab17228733dbcdb49249 upstream. + +ADC calibrations cannot run on 5 GHz with fast clock enabled. They +need to be disabled, otherwise they'll hang and IQ mismatch calibration +will not be run either. + +Signed-off-by: Felix Fietkau <nbd@openwrt.org> +Reported-by: Adrian Chadd <adrian@freebsd.org> +Signed-off-by: John W. Linville <linville@tuxdriver.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/net/wireless/ath/ath9k/ar9002_calib.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ath/ath9k/ar9002_calib.c ++++ b/drivers/net/wireless/ath/ath9k/ar9002_calib.c +@@ -41,7 +41,8 @@ static bool ar9002_hw_is_cal_supported(s + case ADC_DC_CAL: + /* Run ADC Gain Cal for non-CCK & non 2GHz-HT20 only */ + if (!IS_CHAN_B(chan) && +- !(IS_CHAN_2GHZ(chan) && IS_CHAN_HT20(chan))) ++ !((IS_CHAN_2GHZ(chan) || IS_CHAN_A_FAST_CLOCK(ah, chan)) && ++ IS_CHAN_HT20(chan))) + supported = true; + break; + } diff --git a/queue-3.0/e1000-fix-driver-to-be-used-on-pa-risc-c8000-workstations.patch b/queue-3.0/e1000-fix-driver-to-be-used-on-pa-risc-c8000-workstations.patch new file mode 100644 index 0000000000..c73f9c3272 --- /dev/null +++ b/queue-3.0/e1000-fix-driver-to-be-used-on-pa-risc-c8000-workstations.patch @@ -0,0 +1,47 @@ +From e2faeec2de9e2c73958e6ea6065dde1e8cd6f3a2 Mon Sep 17 00:00:00 2001 +From: Jeff Kirsher <jeffrey.t.kirsher@intel.com> +Date: Tue, 30 Aug 2011 20:58:56 -0400 +Subject: e1000: Fix driver to be used on PA RISC C8000 workstations + +From: Jeff Kirsher <jeffrey.t.kirsher@intel.com> + +commit e2faeec2de9e2c73958e6ea6065dde1e8cd6f3a2 upstream. + +The checksum field in the EEPROM on HPPA is really not a +checksum but a signature (0x16d6). So allow 0x16d6 as the +matching checksum on HPPA systems. + +This issue is present on longterm/stable kernels, I have +verified that this patch is applicable back to at least +2.6.32.y kernels. + +v2- changed ifdef to use CONFIG_PARISC instead of __hppa__ + +CC: Guy Martin <gmsoft@tuxicoman.be> +CC: Rolf Eike Beer <eike-kernel@sf-tec.de> +CC: Matt Turner <mattst88@gmail.com> +Reported-by: Mikulas Patocka <mikulas@artax.kerlin.mff.cuni.cz> +Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> +Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com> +Signed-off-by: David S. Miller <davem@davemloft.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/net/e1000/e1000_hw.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/drivers/net/e1000/e1000_hw.c ++++ b/drivers/net/e1000/e1000_hw.c +@@ -4028,6 +4028,12 @@ s32 e1000_validate_eeprom_checksum(struc + checksum += eeprom_data; + } + ++#ifdef CONFIG_PARISC ++ /* This is a signature and not a checksum on HP c8000 */ ++ if ((hw->subsystem_vendor_id == 0x103C) && (eeprom_data == 0x16d6)) ++ return E1000_SUCCESS; ++ ++#endif + if (checksum == (u16) EEPROM_SUM) + return E1000_SUCCESS; + else { diff --git a/queue-3.0/genirq-make-irq_shutdown-symmetric-vs.-irq_startup-again.patch b/queue-3.0/genirq-make-irq_shutdown-symmetric-vs.-irq_startup-again.patch new file mode 100644 index 0000000000..31fffd49ca --- /dev/null +++ b/queue-3.0/genirq-make-irq_shutdown-symmetric-vs.-irq_startup-again.patch @@ -0,0 +1,46 @@ +From ed585a651681e822089087b426e6ebfb6d3d9873 Mon Sep 17 00:00:00 2001 +From: Geert Uytterhoeven <geert@linux-m68k.org> +Date: Sun, 11 Sep 2011 13:59:27 +0200 +Subject: genirq: Make irq_shutdown() symmetric vs. irq_startup again + +From: Geert Uytterhoeven <geert@linux-m68k.org> + +commit ed585a651681e822089087b426e6ebfb6d3d9873 upstream. + +If an irq_chip provides .irq_shutdown(), but neither of .irq_disable() or +.irq_mask(), free_irq() crashes when jumping to NULL. +Fix this by only trying .irq_disable() and .irq_mask() if there's no +.irq_shutdown() provided. + +This revives the symmetry with irq_startup(), which tries .irq_startup(), +.irq_enable(), and irq_unmask(), and makes it consistent with the comment for +irq_chip.irq_shutdown() in <linux/irq.h>, which says: + + * @irq_shutdown: shut down the interrupt (defaults to ->disable if NULL) + +This is also how __free_irq() behaved before the big overhaul, cfr. e.g. +3b56f0585fd4c02d047dc406668cb40159b2d340 ("genirq: Remove bogus conditional"), +where the core interrupt code always overrode .irq_shutdown() to +.irq_disable() if .irq_shutdown() was NULL. + +Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> +Cc: linux-m68k@lists.linux-m68k.org +Link: http://lkml.kernel.org/r/1315742394-16036-2-git-send-email-geert@linux-m68k.org +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + kernel/irq/chip.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/kernel/irq/chip.c ++++ b/kernel/irq/chip.c +@@ -178,7 +178,7 @@ void irq_shutdown(struct irq_desc *desc) + desc->depth = 1; + if (desc->irq_data.chip->irq_shutdown) + desc->irq_data.chip->irq_shutdown(&desc->irq_data); +- if (desc->irq_data.chip->irq_disable) ++ else if (desc->irq_data.chip->irq_disable) + desc->irq_data.chip->irq_disable(&desc->irq_data); + else + desc->irq_data.chip->irq_mask(&desc->irq_data); diff --git a/queue-3.0/hpsa-fix-physical-device-lun-and-target-numbering-problem.patch b/queue-3.0/hpsa-fix-physical-device-lun-and-target-numbering-problem.patch new file mode 100644 index 0000000000..069fbeb6fd --- /dev/null +++ b/queue-3.0/hpsa-fix-physical-device-lun-and-target-numbering-problem.patch @@ -0,0 +1,46 @@ +From 01350d05539d1c95ef3568d062d864ab76ae7670 Mon Sep 17 00:00:00 2001 +From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com> +Date: Tue, 9 Aug 2011 08:18:01 -0500 +Subject: [SCSI] hpsa: fix physical device lun and target numbering problem + +From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com> + +commit 01350d05539d1c95ef3568d062d864ab76ae7670 upstream. + +If a physical device exposed to the OS by hpsa +is replaced (e.g. one hot plug tape drive is replaced +by another, or a tape drive is placed into "OBDR" mode +in which it acts like a CD-ROM device) and a rescan is +initiated, the replaced device will be added to the +SCSI midlayer with target and lun numbers set to -1. +After that, a panic is likely to ensue. When a physical +device is replaced, the lun and target number should be +preserved. + +Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com> +Signed-off-by: James Bottomley <JBottomley@Parallels.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/scsi/hpsa.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +--- a/drivers/scsi/hpsa.c ++++ b/drivers/scsi/hpsa.c +@@ -676,6 +676,16 @@ static void hpsa_scsi_replace_entry(stru + BUG_ON(entry < 0 || entry >= HPSA_MAX_SCSI_DEVS_PER_HBA); + removed[*nremoved] = h->dev[entry]; + (*nremoved)++; ++ ++ /* ++ * New physical devices won't have target/lun assigned yet ++ * so we need to preserve the values in the slot we are replacing. ++ */ ++ if (new_entry->target == -1) { ++ new_entry->target = h->dev[entry]->target; ++ new_entry->lun = h->dev[entry]->lun; ++ } ++ + h->dev[entry] = new_entry; + added[*nadded] = new_entry; + (*nadded)++; diff --git a/queue-3.0/hpsa-fix-problem-that-obdr-devices-are-not-detected.patch b/queue-3.0/hpsa-fix-problem-that-obdr-devices-are-not-detected.patch new file mode 100644 index 0000000000..35c54a0d7a --- /dev/null +++ b/queue-3.0/hpsa-fix-problem-that-obdr-devices-are-not-detected.patch @@ -0,0 +1,147 @@ +From 0b0e1d6cbcc8627970e0399df8f06edd690ec7d9 Mon Sep 17 00:00:00 2001 +From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com> +Date: Tue, 9 Aug 2011 08:17:30 -0500 +Subject: [SCSI] hpsa: fix problem that OBDR devices are not detected + +From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com> + +commit 0b0e1d6cbcc8627970e0399df8f06edd690ec7d9 upstream. + +The test to detect OBDR ("One Button Disaster Recovery") +cd-rom devices was comparing against uninitialized data. + +Fixed by moving the test for the device to where the +inquiry data is collected, and uninitialized variable +altogether as it wasn't really being used. + +Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com> +Signed-off-by: James Bottomley <JBottomley@Parallels.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/scsi/hpsa.c | 47 +++++++++++++++++++++++++++-------------------- + 1 file changed, 27 insertions(+), 20 deletions(-) + +--- a/drivers/scsi/hpsa.c ++++ b/drivers/scsi/hpsa.c +@@ -1548,10 +1548,17 @@ static inline void hpsa_set_bus_target_l + } + + static int hpsa_update_device_info(struct ctlr_info *h, +- unsigned char scsi3addr[], struct hpsa_scsi_dev_t *this_device) ++ unsigned char scsi3addr[], struct hpsa_scsi_dev_t *this_device, ++ unsigned char *is_OBDR_device) + { +-#define OBDR_TAPE_INQ_SIZE 49 ++ ++#define OBDR_SIG_OFFSET 43 ++#define OBDR_TAPE_SIG "$DR-10" ++#define OBDR_SIG_LEN (sizeof(OBDR_TAPE_SIG) - 1) ++#define OBDR_TAPE_INQ_SIZE (OBDR_SIG_OFFSET + OBDR_SIG_LEN) ++ + unsigned char *inq_buff; ++ unsigned char *obdr_sig; + + inq_buff = kzalloc(OBDR_TAPE_INQ_SIZE, GFP_KERNEL); + if (!inq_buff) +@@ -1583,6 +1590,16 @@ static int hpsa_update_device_info(struc + else + this_device->raid_level = RAID_UNKNOWN; + ++ if (is_OBDR_device) { ++ /* See if this is a One-Button-Disaster-Recovery device ++ * by looking for "$DR-10" at offset 43 in inquiry data. ++ */ ++ obdr_sig = &inq_buff[OBDR_SIG_OFFSET]; ++ *is_OBDR_device = (this_device->devtype == TYPE_ROM && ++ strncmp(obdr_sig, OBDR_TAPE_SIG, ++ OBDR_SIG_LEN) == 0); ++ } ++ + kfree(inq_buff); + return 0; + +@@ -1716,7 +1733,7 @@ static int add_msa2xxx_enclosure_device( + return 0; + } + +- if (hpsa_update_device_info(h, scsi3addr, this_device)) ++ if (hpsa_update_device_info(h, scsi3addr, this_device, NULL)) + return 0; + (*nmsa2xxx_enclosures)++; + hpsa_set_bus_target_lun(this_device, bus, target, 0); +@@ -1808,7 +1825,6 @@ static void hpsa_update_scsi_devices(str + */ + struct ReportLUNdata *physdev_list = NULL; + struct ReportLUNdata *logdev_list = NULL; +- unsigned char *inq_buff = NULL; + u32 nphysicals = 0; + u32 nlogicals = 0; + u32 ndev_allocated = 0; +@@ -1824,11 +1840,9 @@ static void hpsa_update_scsi_devices(str + GFP_KERNEL); + physdev_list = kzalloc(reportlunsize, GFP_KERNEL); + logdev_list = kzalloc(reportlunsize, GFP_KERNEL); +- inq_buff = kmalloc(OBDR_TAPE_INQ_SIZE, GFP_KERNEL); + tmpdevice = kzalloc(sizeof(*tmpdevice), GFP_KERNEL); + +- if (!currentsd || !physdev_list || !logdev_list || +- !inq_buff || !tmpdevice) { ++ if (!currentsd || !physdev_list || !logdev_list || !tmpdevice) { + dev_err(&h->pdev->dev, "out of memory\n"); + goto out; + } +@@ -1863,7 +1877,7 @@ static void hpsa_update_scsi_devices(str + /* adjust our table of devices */ + nmsa2xxx_enclosures = 0; + for (i = 0; i < nphysicals + nlogicals + 1; i++) { +- u8 *lunaddrbytes; ++ u8 *lunaddrbytes, is_OBDR = 0; + + /* Figure out where the LUN ID info is coming from */ + lunaddrbytes = figure_lunaddrbytes(h, raid_ctlr_position, +@@ -1874,7 +1888,8 @@ static void hpsa_update_scsi_devices(str + continue; + + /* Get device type, vendor, model, device id */ +- if (hpsa_update_device_info(h, lunaddrbytes, tmpdevice)) ++ if (hpsa_update_device_info(h, lunaddrbytes, tmpdevice, ++ &is_OBDR)) + continue; /* skip it if we can't talk to it. */ + figure_bus_target_lun(h, lunaddrbytes, &bus, &target, &lun, + tmpdevice); +@@ -1898,7 +1913,7 @@ static void hpsa_update_scsi_devices(str + hpsa_set_bus_target_lun(this_device, bus, target, lun); + + switch (this_device->devtype) { +- case TYPE_ROM: { ++ case TYPE_ROM: + /* We don't *really* support actual CD-ROM devices, + * just "One Button Disaster Recovery" tape drive + * which temporarily pretends to be a CD-ROM drive. +@@ -1906,15 +1921,8 @@ static void hpsa_update_scsi_devices(str + * device by checking for "$DR-10" in bytes 43-48 of + * the inquiry data. + */ +- char obdr_sig[7]; +-#define OBDR_TAPE_SIG "$DR-10" +- strncpy(obdr_sig, &inq_buff[43], 6); +- obdr_sig[6] = '\0'; +- if (strncmp(obdr_sig, OBDR_TAPE_SIG, 6) != 0) +- /* Not OBDR device, ignore it. */ +- break; +- } +- ncurrent++; ++ if (is_OBDR) ++ ncurrent++; + break; + case TYPE_DISK: + if (i < nphysicals) +@@ -1947,7 +1955,6 @@ out: + for (i = 0; i < ndev_allocated; i++) + kfree(currentsd[i]); + kfree(currentsd); +- kfree(inq_buff); + kfree(physdev_list); + kfree(logdev_list); + } diff --git a/queue-3.0/isci-fix-32-bit-operation-when-config_highmem64g-n.patch b/queue-3.0/isci-fix-32-bit-operation-when-config_highmem64g-n.patch new file mode 100644 index 0000000000..b67b527ff8 --- /dev/null +++ b/queue-3.0/isci-fix-32-bit-operation-when-config_highmem64g-n.patch @@ -0,0 +1,49 @@ +From ee33e2b771f9e9e4aaba2bb2ace7b727fe451a8b Mon Sep 17 00:00:00 2001 +From: Dan Williams <dan.j.williams@intel.com> +Date: Fri, 29 Jul 2011 17:16:45 -0700 +Subject: [SCSI] isci: fix 32-bit operation when CONFIG_HIGHMEM64G=n + +From: Dan Williams <dan.j.williams@intel.com> + +commit ee33e2b771f9e9e4aaba2bb2ace7b727fe451a8b upstream. + +The unsolicited frame control infrastructure requires a table of dma +addresses for the hardware to lookup the frame buffer location by an +index. The hardware expects the elements of this table to be 64-bit +quantities, so we cannot reference these elements as dma_addr_t. All +unsolicited frame protocols are affected, particularly SATA-PIO and SMP +which prevented direct-attached SATA drives and expander-attached drives +to not be discovered. + +Reported-by: Jacek Danecki <jacek.danecki@intel.com> +Signed-off-by: Dan Williams <dan.j.williams@intel.com> +Signed-off-by: James Bottomley <JBottomley@Parallels.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/scsi/isci/unsolicited_frame_control.c | 2 +- + drivers/scsi/isci/unsolicited_frame_control.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/scsi/isci/unsolicited_frame_control.c ++++ b/drivers/scsi/isci/unsolicited_frame_control.c +@@ -72,7 +72,7 @@ int sci_unsolicited_frame_control_constr + */ + buf_len = SCU_MAX_UNSOLICITED_FRAMES * SCU_UNSOLICITED_FRAME_BUFFER_SIZE; + header_len = SCU_MAX_UNSOLICITED_FRAMES * sizeof(struct scu_unsolicited_frame_header); +- size = buf_len + header_len + SCU_MAX_UNSOLICITED_FRAMES * sizeof(dma_addr_t); ++ size = buf_len + header_len + SCU_MAX_UNSOLICITED_FRAMES * sizeof(uf_control->address_table.array[0]); + + /* + * The Unsolicited Frame buffers are set at the start of the UF +--- a/drivers/scsi/isci/unsolicited_frame_control.h ++++ b/drivers/scsi/isci/unsolicited_frame_control.h +@@ -214,7 +214,7 @@ struct sci_uf_address_table_array { + * starting address of the UF address table. + * 64-bit pointers are required by the hardware. + */ +- dma_addr_t *array; ++ u64 *array; + + /** + * This field specifies the physical address location for the UF diff --git a/queue-3.0/iwlegacy-fix-bug_on-info-control.rates.idx-0.patch b/queue-3.0/iwlegacy-fix-bug_on-info-control.rates.idx-0.patch new file mode 100644 index 0000000000..9902d60acf --- /dev/null +++ b/queue-3.0/iwlegacy-fix-bug_on-info-control.rates.idx-0.patch @@ -0,0 +1,49 @@ +From 7c2510120e9b43b0caf32c3786a6ab831f7d9e87 Mon Sep 17 00:00:00 2001 +From: Stanislaw Gruszka <sgruszka@redhat.com> +Date: Fri, 26 Aug 2011 17:24:59 +0200 +Subject: iwlegacy: fix BUG_ON(info->control.rates[0].idx < 0) + +From: Stanislaw Gruszka <sgruszka@redhat.com> + +commit 7c2510120e9b43b0caf32c3786a6ab831f7d9e87 upstream. + +When trying to connect to 5GHz we can provide negative index to +mac80211 what trigger BUG_ON. Reason of iwl-3945-rs malfunction +on 5GHz is unknown and needs further investigation. For now, to +do not trigger a bug, correct value and just print WARNING. + +Address bug: +https://bugzilla.redhat.com/show_bug.cgi?id=730653 + +Reported-and-tested-by: Jan Teichmann <jan.teichmann@gmail.com> +Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> +Signed-off-by: John W. Linville <linville@tuxdriver.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/net/wireless/iwlegacy/iwl-3945-rs.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +--- a/drivers/net/wireless/iwlegacy/iwl-3945-rs.c ++++ b/drivers/net/wireless/iwlegacy/iwl-3945-rs.c +@@ -822,12 +822,15 @@ static void iwl3945_rs_get_rate(void *pr + + out: + +- rs_sta->last_txrate_idx = index; +- if (sband->band == IEEE80211_BAND_5GHZ) +- info->control.rates[0].idx = rs_sta->last_txrate_idx - +- IWL_FIRST_OFDM_RATE; +- else ++ if (sband->band == IEEE80211_BAND_5GHZ) { ++ if (WARN_ON_ONCE(index < IWL_FIRST_OFDM_RATE)) ++ index = IWL_FIRST_OFDM_RATE; ++ rs_sta->last_txrate_idx = index; ++ info->control.rates[0].idx = index - IWL_FIRST_OFDM_RATE; ++ } else { ++ rs_sta->last_txrate_idx = index; + info->control.rates[0].idx = rs_sta->last_txrate_idx; ++ } + + IWL_DEBUG_RATE(priv, "leave: %d\n", index); + } diff --git a/queue-3.0/mac80211-fix-missing-sta_lock-in-__sta_info_destroy.patch b/queue-3.0/mac80211-fix-missing-sta_lock-in-__sta_info_destroy.patch new file mode 100644 index 0000000000..cd7d0c4c0b --- /dev/null +++ b/queue-3.0/mac80211-fix-missing-sta_lock-in-__sta_info_destroy.patch @@ -0,0 +1,35 @@ +From 4bae7d976976fa52d345805ba686934cd548343e Mon Sep 17 00:00:00 2001 +From: Johannes Berg <johannes.berg@intel.com> +Date: Tue, 6 Sep 2011 12:47:39 +0200 +Subject: mac80211: fix missing sta_lock in __sta_info_destroy + +From: Johannes Berg <johannes.berg@intel.com> + +commit 4bae7d976976fa52d345805ba686934cd548343e upstream. + +Since my commit 34e895075e21be3e21e71d6317440d1ee7969ad0 +("mac80211: allow station add/remove to sleep") there is +a race in mac80211 when it clears the TIM bit because a +sleeping station disconnected, the spinlock isn't held +around the relevant code any more. Use the right API to +acquire the spinlock correctly. + +Signed-off-by: Johannes Berg <johannes.berg@intel.com> +Signed-off-by: John W. Linville <linville@tuxdriver.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + net/mac80211/sta_info.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/net/mac80211/sta_info.c ++++ b/net/mac80211/sta_info.c +@@ -669,7 +669,7 @@ static int __must_check __sta_info_destr + BUG_ON(!sdata->bss); + + atomic_dec(&sdata->bss->num_sta_ps); +- __sta_info_clear_tim_bit(sdata->bss, sta); ++ sta_info_clear_tim_bit(sta); + } + + local->num_sta--; diff --git a/queue-3.0/mfd-fix-initialisation-of-tps65910-interrupts.patch b/queue-3.0/mfd-fix-initialisation-of-tps65910-interrupts.patch new file mode 100644 index 0000000000..823bb0587d --- /dev/null +++ b/queue-3.0/mfd-fix-initialisation-of-tps65910-interrupts.patch @@ -0,0 +1,35 @@ +From fa948761e685fb03823b3029e5b6bdb52229d6ce Mon Sep 17 00:00:00 2001 +From: Johan Hovold <jhovold@gmail.com> +Date: Mon, 15 Aug 2011 12:42:03 +0200 +Subject: mfd: Fix initialisation of tps65910 interrupts + +From: Johan Hovold <jhovold@gmail.com> + +commit fa948761e685fb03823b3029e5b6bdb52229d6ce upstream. + +Fix regression introduced by commit +a2974732ca7614aaf0baf9d6dd3ad893d50ce1c5 (TPS65911: Add new irq +definitions) which caused irq_num to be incorrectly set for tps65910. + +Signed-off-by: Johan Hovold <jhovold@gmail.com> +Acked-by: Graeme Gregory <gg@slimlogic.co.uk> +Signed-off-by: Samuel Ortiz <sameo@linux.intel.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/mfd/tps65910-irq.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/mfd/tps65910-irq.c ++++ b/drivers/mfd/tps65910-irq.c +@@ -178,8 +178,10 @@ int tps65910_irq_init(struct tps65910 *t + switch (tps65910_chip_id(tps65910)) { + case TPS65910: + tps65910->irq_num = TPS65910_NUM_IRQ; ++ break; + case TPS65911: + tps65910->irq_num = TPS65911_NUM_IRQ; ++ break; + } + + /* Register with genirq */ diff --git a/queue-3.0/mfd-fix-value-of-wm8994_configure_gpio.patch b/queue-3.0/mfd-fix-value-of-wm8994_configure_gpio.patch new file mode 100644 index 0000000000..056ccb6378 --- /dev/null +++ b/queue-3.0/mfd-fix-value-of-wm8994_configure_gpio.patch @@ -0,0 +1,31 @@ +From 8efcc57dedfebc99c3cd39564e3fc47cd1a24b75 Mon Sep 17 00:00:00 2001 +From: Mark Brown <broonie@opensource.wolfsonmicro.com> +Date: Wed, 3 Aug 2011 18:04:29 +0900 +Subject: mfd: Fix value of WM8994_CONFIGURE_GPIO + +From: Mark Brown <broonie@opensource.wolfsonmicro.com> + +commit 8efcc57dedfebc99c3cd39564e3fc47cd1a24b75 upstream. + +This needs to be an out of band value for the register and on this device +registers are 16 bit so we must shift left one to the 17th bit. + +Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> +Signed-off-by: Samuel Ortiz <sameo@linux.intel.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + include/linux/mfd/wm8994/pdata.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/linux/mfd/wm8994/pdata.h ++++ b/include/linux/mfd/wm8994/pdata.h +@@ -26,7 +26,7 @@ struct wm8994_ldo_pdata { + struct regulator_init_data *init_data; + }; + +-#define WM8994_CONFIGURE_GPIO 0x8000 ++#define WM8994_CONFIGURE_GPIO 0x10000 + + #define WM8994_DRC_REGS 5 + #define WM8994_EQ_REGS 20 diff --git a/queue-3.0/mfd-make-omap-usb-host-tll-mode-work-again.patch b/queue-3.0/mfd-make-omap-usb-host-tll-mode-work-again.patch new file mode 100644 index 0000000000..29686102ac --- /dev/null +++ b/queue-3.0/mfd-make-omap-usb-host-tll-mode-work-again.patch @@ -0,0 +1,33 @@ +From e600cffe618ff0da29ae1f8b8d3824ce0e2409fc Mon Sep 17 00:00:00 2001 +From: Anand Gadiyar <gadiyar@ti.com> +Date: Thu, 18 Aug 2011 16:14:31 +0530 +Subject: mfd: Make omap-usb-host TLL mode work again + +From: Anand Gadiyar <gadiyar@ti.com> + +commit e600cffe618ff0da29ae1f8b8d3824ce0e2409fc upstream. + +This code section seems to have been accidentally copy pasted. +It causes incorrect bits to be set up in the TLL_CHANNEL_CONF +register and prevents the TLL mode from working correctly. + +Signed-off-by: Anand Gadiyar <gadiyar@ti.com> +Cc: Keshava Munegowda <keshava_mgowda@ti.com> +Acked-by: Felipe Balbi <balbi@ti.com> +Signed-off-by: Samuel Ortiz <sameo@linux.intel.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/mfd/omap-usb-host.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/drivers/mfd/omap-usb-host.c ++++ b/drivers/mfd/omap-usb-host.c +@@ -676,7 +676,6 @@ static void usbhs_omap_tll_init(struct d + | OMAP_TLL_CHANNEL_CONF_ULPINOBITSTUFF + | OMAP_TLL_CHANNEL_CONF_ULPIDDRMODE); + +- reg |= (1 << (i + 1)); + } else + continue; + diff --git a/queue-3.0/qla2xxx-correct-inadvertent-loop-state-transitions-during-port-update-handling.patch b/queue-3.0/qla2xxx-correct-inadvertent-loop-state-transitions-during-port-update-handling.patch new file mode 100644 index 0000000000..e09c55a3ff --- /dev/null +++ b/queue-3.0/qla2xxx-correct-inadvertent-loop-state-transitions-during-port-update-handling.patch @@ -0,0 +1,51 @@ +From 58b48576966ed0afd3f63ef17480ec12748a7119 Mon Sep 17 00:00:00 2001 +From: Andrew Vasquez <andrew.vasquez@qlogic.com> +Date: Tue, 16 Aug 2011 11:29:28 -0700 +Subject: [SCSI] qla2xxx: Correct inadvertent loop state transitions during port-update handling. + +From: Andrew Vasquez <andrew.vasquez@qlogic.com> + +commit 58b48576966ed0afd3f63ef17480ec12748a7119 upstream. + +Transitioning to a LOOP_UPDATE loop-state could cause the driver +to miss normal link/target processing. LOOP_UPDATE is a crufty +artifact leftover from at time the driver performed it's own +internal command-queuing. Safely remove this state. + +Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> +Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com> +Signed-off-by: James Bottomley <JBottomley@Parallels.com> + +--- + drivers/scsi/qla2xxx/qla_init.c | 3 --- + drivers/scsi/qla2xxx/qla_isr.c | 1 - + 2 files changed, 4 deletions(-) + +--- a/drivers/scsi/qla2xxx/qla_init.c ++++ b/drivers/scsi/qla2xxx/qla_init.c +@@ -3822,15 +3822,12 @@ qla2x00_loop_resync(scsi_qla_host_t *vha + req = vha->req; + rsp = req->rsp; + +- atomic_set(&vha->loop_state, LOOP_UPDATE); + clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags); + if (vha->flags.online) { + if (!(rval = qla2x00_fw_ready(vha))) { + /* Wait at most MAX_TARGET RSCNs for a stable link. */ + wait_time = 256; + do { +- atomic_set(&vha->loop_state, LOOP_UPDATE); +- + /* Issue a marker after FW becomes ready. */ + qla2x00_marker(vha, req, rsp, 0, 0, + MK_SYNC_ALL); +--- a/drivers/scsi/qla2xxx/qla_isr.c ++++ b/drivers/scsi/qla2xxx/qla_isr.c +@@ -736,7 +736,6 @@ skip_rio: + vha->flags.rscn_queue_overflow = 1; + } + +- atomic_set(&vha->loop_state, LOOP_UPDATE); + atomic_set(&vha->loop_down_timer, 0); + vha->flags.management_server_logged_in = 0; + diff --git a/queue-3.0/rtlwifi-fix-problem-when-switching-connections.patch b/queue-3.0/rtlwifi-fix-problem-when-switching-connections.patch new file mode 100644 index 0000000000..01631bc0d4 --- /dev/null +++ b/queue-3.0/rtlwifi-fix-problem-when-switching-connections.patch @@ -0,0 +1,45 @@ +From bac2555c6d86387132930af4d14cb47c4dd3f4f7 Mon Sep 17 00:00:00 2001 +From: George <george0505@realtek.com> +Date: Sat, 3 Sep 2011 10:58:48 -0500 +Subject: rtlwifi: Fix problem when switching connections + +From: George <george0505@realtek.com> + +commit bac2555c6d86387132930af4d14cb47c4dd3f4f7 upstream. + +The driver fails to clear encryption keys making it impossible +to switch connections. + +Signed-off-by: George <george0505@realtek.com> +Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> +Signed-off-by: John W. Linville <linville@tuxdriver.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/net/wireless/rtlwifi/core.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/drivers/net/wireless/rtlwifi/core.c ++++ b/drivers/net/wireless/rtlwifi/core.c +@@ -610,6 +610,11 @@ static void rtl_op_bss_info_changed(stru + + mac->link_state = MAC80211_NOLINK; + memset(mac->bssid, 0, 6); ++ ++ /* reset sec info */ ++ rtl_cam_reset_sec_info(hw); ++ ++ rtl_cam_reset_all_entry(hw); + mac->vendor = PEER_UNKNOWN; + + RT_TRACE(rtlpriv, COMP_MAC80211, DBG_DMESG, +@@ -1063,6 +1068,9 @@ static int rtl_op_set_key(struct ieee802 + *or clear all entry here. + */ + rtl_cam_delete_one_entry(hw, mac_addr, key_idx); ++ ++ rtl_cam_reset_sec_info(hw); ++ + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, diff --git a/queue-3.0/rtlwifi-rtl8192su-fix-problem-connecting-to-ht-enabled-ap.patch b/queue-3.0/rtlwifi-rtl8192su-fix-problem-connecting-to-ht-enabled-ap.patch new file mode 100644 index 0000000000..08036f8fa1 --- /dev/null +++ b/queue-3.0/rtlwifi-rtl8192su-fix-problem-connecting-to-ht-enabled-ap.patch @@ -0,0 +1,45 @@ +From 3401dc6eba788ebc7c14ce51018d775b1c263399 Mon Sep 17 00:00:00 2001 +From: George <george0505@realtek.com> +Date: Sat, 3 Sep 2011 10:58:47 -0500 +Subject: rtlwifi: rtl8192su: Fix problem connecting to HT-enabled AP + +From: George <george0505@realtek.com> + +commit 3401dc6eba788ebc7c14ce51018d775b1c263399 upstream. + +The driver fails to connect to 802.11n-enabled APs. The patch fixes +Bug #42262. + +Signed-off-by: George <george0505@realtek.com> +Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> +Signed-off-by: John W. Linville <linville@tuxdriver.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/net/wireless/rtlwifi/rtl8192cu/trx.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +--- a/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c ++++ b/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c +@@ -549,15 +549,16 @@ void rtl92cu_tx_fill_desc(struct ieee802 + (tcb_desc->rts_use_shortpreamble ? 1 : 0) + : (tcb_desc->rts_use_shortgi ? 1 : 0))); + if (mac->bw_40) { +- if (tcb_desc->packet_bw) { ++ if (rate_flag & IEEE80211_TX_RC_DUP_DATA) { + SET_TX_DESC_DATA_BW(txdesc, 1); + SET_TX_DESC_DATA_SC(txdesc, 3); ++ } else if(rate_flag & IEEE80211_TX_RC_40_MHZ_WIDTH){ ++ SET_TX_DESC_DATA_BW(txdesc, 1); ++ SET_TX_DESC_DATA_SC(txdesc, mac->cur_40_prime_sc); + } else { + SET_TX_DESC_DATA_BW(txdesc, 0); +- if (rate_flag & IEEE80211_TX_RC_DUP_DATA) +- SET_TX_DESC_DATA_SC(txdesc, +- mac->cur_40_prime_sc); +- } ++ SET_TX_DESC_DATA_SC(txdesc, 0); ++ } + } else { + SET_TX_DESC_DATA_BW(txdesc, 0); + SET_TX_DESC_DATA_SC(txdesc, 0); diff --git a/queue-3.0/series b/queue-3.0/series index 6e6965eca8..603d7567df 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -101,3 +101,22 @@ pci-export-pcie_bus_configure_settings-symbol.patch pci-remove-mrrs-modification-from-mps-setting-code.patch isci-fix-sata-response-handling.patch vfs-automount-should-ignore-lookup_follow.patch +isci-fix-32-bit-operation-when-config_highmem64g-n.patch +asoc-mpc5200-replace-of_device-with-platform_device.patch +hpsa-fix-problem-that-obdr-devices-are-not-detected.patch +hpsa-fix-physical-device-lun-and-target-numbering-problem.patch +qla2xxx-correct-inadvertent-loop-state-transitions-during-port-update-handling.patch +iwlegacy-fix-bug_on-info-control.rates.idx-0.patch +acpica-acpi_max_sleep-should-be-2-sec-not-20.patch +ath9k_hw-fix-calibration-on-5-ghz.patch +e1000-fix-driver-to-be-used-on-pa-risc-c8000-workstations.patch +asoc-fix-reporting-of-partial-jack-updates.patch +asoc-blackfin-bf5xx-ad193x-fix-codec-device-name.patch +mfd-fix-value-of-wm8994_configure_gpio.patch +mfd-fix-initialisation-of-tps65910-interrupts.patch +mfd-make-omap-usb-host-tll-mode-work-again.patch +genirq-make-irq_shutdown-symmetric-vs.-irq_startup-again.patch +rtlwifi-rtl8192su-fix-problem-connecting-to-ht-enabled-ap.patch +rtlwifi-fix-problem-when-switching-connections.patch +mac80211-fix-missing-sta_lock-in-__sta_info_destroy.patch +x86-iommu-mark-dmar-irq-as-non-threaded.patch diff --git a/queue-3.0/x86-iommu-mark-dmar-irq-as-non-threaded.patch b/queue-3.0/x86-iommu-mark-dmar-irq-as-non-threaded.patch new file mode 100644 index 0000000000..53ca0d2e10 --- /dev/null +++ b/queue-3.0/x86-iommu-mark-dmar-irq-as-non-threaded.patch @@ -0,0 +1,33 @@ +From 477694e71113fd0694b6bb0bcc2d006b8ac62691 Mon Sep 17 00:00:00 2001 +From: Thomas Gleixner <tglx@linutronix.de> +Date: Tue, 19 Jul 2011 16:25:42 +0200 +Subject: x86, iommu: Mark DMAR IRQ as non-threaded + +From: Thomas Gleixner <tglx@linutronix.de> + +commit 477694e71113fd0694b6bb0bcc2d006b8ac62691 upstream. + +Mark this lowlevel IRQ handler as non-threaded. This prevents a boot +crash when "threadirqs" is on the kernel commandline. Also the +interrupt handler is handling hardware critical events which should +not be delayed into a thread. + +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Signed-off-by: Ingo Molnar <mingo@kernel.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/pci/dmar.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/pci/dmar.c ++++ b/drivers/pci/dmar.c +@@ -1388,7 +1388,7 @@ int dmar_set_interrupt(struct intel_iomm + return ret; + } + +- ret = request_irq(irq, dmar_fault, 0, iommu->name, iommu); ++ ret = request_irq(irq, dmar_fault, IRQF_NO_THREAD, iommu->name, iommu); + if (ret) + printk(KERN_ERR "IOMMU: can't request irq\n"); + return ret; |