This is a note to let you know that I've just added the patch titled iwlwifi: pcie: disable interrupts upon PCIe alloc to the 3.14-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: iwlwifi-pcie-disable-interrupts-upon-pcie-alloc.patch and it can be found in the queue-3.14 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 83f7a85f1134c6e914453f5747435415a23d516b Mon Sep 17 00:00:00 2001 From: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx> Date: Sun, 13 Apr 2014 16:03:11 +0300 Subject: iwlwifi: pcie: disable interrupts upon PCIe alloc From: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx> commit 83f7a85f1134c6e914453f5747435415a23d516b upstream. In case RFKILL is in KILL position, the NIC will issue an interrupt straight away. This interrupt won't be sent because it is masked in the hardware. But if our interrupt service routine is called for another reason (SHARED_IRQ), then we'll look at the interrupt cause and service it. This can cause bad things if we are not ready yet. Explicitly clean the interrupt cause register to make sure we won't service anything before we are ready to. Reported-and-tested-by: Alexander Monakov <amonakov@xxxxxxxxx> Reviewed-by: Johannes Berg <johannes.berg@xxxxxxxxx> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/net/wireless/iwlwifi/pcie/trans.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) --- a/drivers/net/wireless/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c @@ -1563,6 +1563,10 @@ struct iwl_trans *iwl_trans_pcie_alloc(s * PCI Tx retries from interfering with C3 CPU state */ pci_write_config_byte(pdev, PCI_CFG_RETRY_TIMEOUT, 0x00); + trans->dev = &pdev->dev; + trans_pcie->pci_dev = pdev; + iwl_disable_interrupts(trans); + err = pci_enable_msi(pdev); if (err) { dev_err(&pdev->dev, "pci_enable_msi failed(0X%x)\n", err); @@ -1574,8 +1578,6 @@ struct iwl_trans *iwl_trans_pcie_alloc(s } } - trans->dev = &pdev->dev; - trans_pcie->pci_dev = pdev; trans->hw_rev = iwl_read32(trans, CSR_HW_REV); trans->hw_id = (pdev->device << 16) + pdev->subsystem_device; snprintf(trans->hw_id_str, sizeof(trans->hw_id_str), @@ -1601,8 +1603,6 @@ struct iwl_trans *iwl_trans_pcie_alloc(s goto out_pci_disable_msi; } - trans_pcie->inta_mask = CSR_INI_SET_MASK; - if (iwl_pcie_alloc_ict(trans)) goto out_free_cmd_pool; @@ -1614,6 +1614,8 @@ struct iwl_trans *iwl_trans_pcie_alloc(s goto out_free_ict; } + trans_pcie->inta_mask = CSR_INI_SET_MASK; + return trans; out_free_ict: Patches currently in stable-queue which might be from emmanuel.grumbach@xxxxxxxxx are queue-3.14/iwlwifi-add-module_firmware-for-7265.patch queue-3.14/iwlwifi-mvm-fix-setting-channel-in-monitor-mode.patch queue-3.14/iwlwifi-pcie-disable-interrupts-upon-pcie-alloc.patch queue-3.14/iwlwifi-7000-bump-api-to-9.patch queue-3.14/iwlwifi-mvm-avoid-searching-unnecessary-columns.patch queue-3.14/iwlwifi-mvm-rs-fix-and-cleanup-rs_get_rate_action.patch queue-3.14/iwlwifi-mvm-rs-fallback-to-legacy-tx-columns.patch queue-3.14/iwlwifi-add-new-7265-hw-ids.patch queue-3.14/iwlwifi-mvm-rs-fix-mimo-delimiter-in-lq-cmd.patch queue-3.14/iwlwifi-mvm-rs-reinit-rs-if-no-tx-for-a-long-time.patch queue-3.14/iwlwifi-mvm-delay-enabling-smart-fifo-until-after-beacon-rx.patch queue-3.14/mac80211-fix-suspend-vs.-association-race.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html