Re: Patch "iwlwifi: pcie: disable interrupts upon PCIe alloc" has been added to the 3.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jun 03, 2014 at 10:59:01PM -0700, Greg Kroah-Hartman wrote:
> 
> 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.10-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.10 subdirectory.
> 
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <stable@xxxxxxxxxxxxxxx> know about it.
>

This patch was tagged for stable 3.14, so I'm not sure its really
required for the 3.10 kernel.

Cheers,
--
Luís

> 
> 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
> @@ -1538,6 +1538,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);
> @@ -1549,8 +1553,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),
> @@ -1574,8 +1576,6 @@ struct iwl_trans *iwl_trans_pcie_alloc(s
>  	if (!trans->dev_cmd_pool)
>  		goto out_pci_disable_msi;
>  
> -	trans_pcie->inta_mask = CSR_INI_SET_MASK;
> -
>  	if (iwl_pcie_alloc_ict(trans))
>  		goto out_free_cmd_pool;
>  
> @@ -1586,6 +1586,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.10/iwlwifi-pcie-disable-interrupts-upon-pcie-alloc.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
--
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




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]