From: Tomas Henzl <thenzl@redhat.com>
To: Alexander Gordeev <agordeev@redhat.com>, linux-kernel@vger.kernel.org
Cc: James Smart <james.smart@emulex.com>,
linux-scsi@vger.kernel.org, linux-pci@vger.kernel.org
Subject: Re: [PATCH v3 11/13] lpfc: Use pci_enable_msix_range() instead of pci_enable_msix()
Date: Thu, 21 Aug 2014 13:32:47 +0200 [thread overview]
Message-ID: <53F5D8DF.4060705@redhat.com> (raw)
In-Reply-To: <e7470e484083c9eeb6b4f34f3e69e332ad5998c2.1408335523.git.agordeev@redhat.com>
On 08/18/2014 08:01 AM, Alexander Gordeev wrote:
> As result of deprecation of MSI-X/MSI enablement functions
> pci_enable_msix() and pci_enable_msi_block() all drivers
> using these two interfaces need to be updated to use the
> new pci_enable_msi_range() or pci_enable_msi_exact()
> and pci_enable_msix_range() or pci_enable_msix_exact()
> interfaces.
>
> Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
> Cc: James Smart <james.smart@emulex.com>
> Cc: linux-scsi@vger.kernel.org
> Cc: linux-pci@vger.kernel.org
> ---
> drivers/scsi/lpfc/lpfc_init.c | 39 +++++++++++++++++----------------------
> 1 file changed, 17 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
> index a5769a9..37f2a20 100644
> --- a/drivers/scsi/lpfc/lpfc_init.c
> +++ b/drivers/scsi/lpfc/lpfc_init.c
> @@ -8211,9 +8211,9 @@ lpfc_sli4_pci_mem_unset(struct lpfc_hba *phba)
> * @phba: pointer to lpfc hba data structure.
> *
> * This routine is invoked to enable the MSI-X interrupt vectors to device
> - * with SLI-3 interface specs. The kernel function pci_enable_msix() is
> - * called to enable the MSI-X vectors. Note that pci_enable_msix(), once
> - * invoked, enables either all or nothing, depending on the current
> + * with SLI-3 interface specs. The kernel function pci_enable_msix_exact()
> + * is called to enable the MSI-X vectors. Note that pci_enable_msix_exact(),
> + * once invoked, enables either all or nothing, depending on the current
> * availability of PCI vector resources. The device driver is responsible
> * for calling the individual request_irq() to register each MSI-X vector
> * with a interrupt handler, which is done in this function. Note that
> @@ -8237,8 +8237,8 @@ lpfc_sli_enable_msix(struct lpfc_hba *phba)
> phba->msix_entries[i].entry = i;
>
> /* Configure MSI-X capability structure */
> - rc = pci_enable_msix(phba->pcidev, phba->msix_entries,
> - ARRAY_SIZE(phba->msix_entries));
> + rc = pci_enable_msix_exact(phba->pcidev, phba->msix_entries,
> + LPFC_MSIX_VECTORS);
> if (rc) {
> lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
> "0420 PCI enable MSI-X failed (%d)\n", rc);
Hi Alexander
the code continues with:
goto -> pci_disable_msix(phba->pcidev);
that call to disable_msix is also superfluous I think
shouldn't that be fixed too?
the same is also in lpfc_sli4_enable_msix
Tomas
> @@ -8775,16 +8775,14 @@ out:
> * @phba: pointer to lpfc hba data structure.
> *
> * This routine is invoked to enable the MSI-X interrupt vectors to device
> - * with SLI-4 interface spec. The kernel function pci_enable_msix() is called
> - * to enable the MSI-X vectors. Note that pci_enable_msix(), once invoked,
> - * enables either all or nothing, depending on the current availability of
> - * PCI vector resources. The device driver is responsible for calling the
> - * individual request_irq() to register each MSI-X vector with a interrupt
> - * handler, which is done in this function. Note that later when device is
> - * unloading, the driver should always call free_irq() on all MSI-X vectors
> - * it has done request_irq() on before calling pci_disable_msix(). Failure
> - * to do so results in a BUG_ON() and a device will be left with MSI-X
> - * enabled and leaks its vectors.
> + * with SLI-4 interface spec. The kernel function pci_enable_msix_range()
> + * is called to enable the MSI-X vectors. The device driver is responsible
> + * for calling the individual request_irq() to register each MSI-X vector
> + * with a interrupt handler, which is done in this function. Note that
> + * later when device is unloading, the driver should always call free_irq()
> + * on all MSI-X vectors it has done request_irq() on before calling
> + * pci_disable_msix(). Failure to do so results in a BUG_ON() and a device
> + * will be left with MSI-X enabled and leaks its vectors.
> *
> * Return codes
> * 0 - successful
> @@ -8805,17 +8803,14 @@ lpfc_sli4_enable_msix(struct lpfc_hba *phba)
> phba->sli4_hba.msix_entries[index].entry = index;
> vectors++;
> }
> -enable_msix_vectors:
> - rc = pci_enable_msix(phba->pcidev, phba->sli4_hba.msix_entries,
> - vectors);
> - if (rc > 1) {
> - vectors = rc;
> - goto enable_msix_vectors;
> - } else if (rc) {
> + rc = pci_enable_msix_range(phba->pcidev, phba->sli4_hba.msix_entries,
> + 2, vectors);
> + if (rc < 0) {
> lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
> "0484 PCI enable MSI-X failed (%d)\n", rc);
> goto vec_fail_out;
> }
> + vectors = rc;
>
> /* Log MSI-X vector assignment */
> for (index = 0; index < vectors; index++)
next prev parent reply other threads:[~2014-08-21 11:32 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-18 6:01 [PATCH v3 00/13] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-08-18 6:01 ` [PATCH v3 01/13] hpsa: Fallback to MSI rather than to INTx if MSI-X failed Alexander Gordeev
2014-08-18 6:01 ` [PATCH v3 02/13] hpsa: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-08-18 6:01 ` [PATCH v3 03/13] megaraid: Fail resume if MSI-X re-initialization failed Alexander Gordeev
2014-08-18 6:01 ` [PATCH v3 04/13] megaraid: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-08-18 6:01 ` [PATCH v3 05/13] mpt2sas: Use pci_enable_msix_exact() " Alexander Gordeev
2014-08-18 6:01 ` [PATCH v3 06/13] mpt3sas: " Alexander Gordeev
2014-08-18 6:01 ` [PATCH v3 07/13] qla2xxx: Use pci_enable_msix_range() " Alexander Gordeev
2014-08-18 6:01 ` [PATCH v3 08/13] be2iscsi: Use pci_enable_msix_range() Alexander Gordeev
2014-08-21 11:10 ` Tomas Henzl
2014-08-22 14:40 ` Jayamohan Kallickal
2014-08-18 6:01 ` [PATCH v3 09/13] csiostor: Remove superfluous call to pci_disable_msix() Alexander Gordeev
2014-08-21 11:15 ` Tomas Henzl
2014-08-18 6:01 ` [PATCH v3 10/13] csiostor: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-08-21 11:15 ` Tomas Henzl
2014-08-18 6:01 ` [PATCH v3 11/13] lpfc: " Alexander Gordeev
2014-08-21 11:32 ` Tomas Henzl [this message]
2014-08-21 11:58 ` Tomas Henzl
2014-08-21 16:58 ` Alexander Gordeev
2014-08-21 17:02 ` Christoph Hellwig
2014-09-04 13:29 ` Alexander Gordeev
2014-09-04 15:11 ` Christoph Hellwig
2014-08-18 6:01 ` [PATCH v3 12/13] pmcraid: Get rid of a redundant assignment Alexander Gordeev
2014-08-21 11:33 ` Tomas Henzl
2014-08-18 6:01 ` [PATCH v3 13/13] pmcraid: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-08-21 11:35 ` Tomas Henzl
2014-08-19 17:00 ` [PATCH v3 00/13] scsi: " Christoph Hellwig
2014-08-20 19:14 ` Alexander Gordeev
2014-08-20 19:22 ` Christoph Hellwig
2014-08-24 17:31 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53F5D8DF.4060705@redhat.com \
--to=thenzl@redhat.com \
--cc=agordeev@redhat.com \
--cc=james.smart@emulex.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.