lpfc: Use pci_enable_msix_range() instead of pci_enable_msix()
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> Reviewed-by: James Smart <james.smart@emulex.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
a7901acc4a
commit
4f871e1b27
1 changed files with 17 additions and 22 deletions
|
@ -8203,9 +8203,9 @@ lpfc_sli4_pci_mem_unset(struct lpfc_hba *phba)
|
||||||
* @phba: pointer to lpfc hba data structure.
|
* @phba: pointer to lpfc hba data structure.
|
||||||
*
|
*
|
||||||
* This routine is invoked to enable the MSI-X interrupt vectors to device
|
* 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
|
* with SLI-3 interface specs. The kernel function pci_enable_msix_exact()
|
||||||
* called to enable the MSI-X vectors. Note that pci_enable_msix(), once
|
* is called to enable the MSI-X vectors. Note that pci_enable_msix_exact(),
|
||||||
* invoked, enables either all or nothing, depending on the current
|
* once invoked, enables either all or nothing, depending on the current
|
||||||
* availability of PCI vector resources. The device driver is responsible
|
* availability of PCI vector resources. The device driver is responsible
|
||||||
* for calling the individual request_irq() to register each MSI-X vector
|
* for calling the individual request_irq() to register each MSI-X vector
|
||||||
* with a interrupt handler, which is done in this function. Note that
|
* with a interrupt handler, which is done in this function. Note that
|
||||||
|
@ -8229,8 +8229,8 @@ lpfc_sli_enable_msix(struct lpfc_hba *phba)
|
||||||
phba->msix_entries[i].entry = i;
|
phba->msix_entries[i].entry = i;
|
||||||
|
|
||||||
/* Configure MSI-X capability structure */
|
/* Configure MSI-X capability structure */
|
||||||
rc = pci_enable_msix(phba->pcidev, phba->msix_entries,
|
rc = pci_enable_msix_exact(phba->pcidev, phba->msix_entries,
|
||||||
ARRAY_SIZE(phba->msix_entries));
|
LPFC_MSIX_VECTORS);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
|
lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
|
||||||
"0420 PCI enable MSI-X failed (%d)\n", rc);
|
"0420 PCI enable MSI-X failed (%d)\n", rc);
|
||||||
|
@ -8767,16 +8767,14 @@ out:
|
||||||
* @phba: pointer to lpfc hba data structure.
|
* @phba: pointer to lpfc hba data structure.
|
||||||
*
|
*
|
||||||
* This routine is invoked to enable the MSI-X interrupt vectors to device
|
* 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
|
* with SLI-4 interface spec. The kernel function pci_enable_msix_range()
|
||||||
* to enable the MSI-X vectors. Note that pci_enable_msix(), once invoked,
|
* is called to enable the MSI-X vectors. The device driver is responsible
|
||||||
* enables either all or nothing, depending on the current availability of
|
* for calling the individual request_irq() to register each MSI-X vector
|
||||||
* PCI vector resources. The device driver is responsible for calling the
|
* with a interrupt handler, which is done in this function. Note that
|
||||||
* individual request_irq() to register each MSI-X vector with a interrupt
|
* later when device is unloading, the driver should always call free_irq()
|
||||||
* handler, which is done in this function. Note that later when device is
|
* on all MSI-X vectors it has done request_irq() on before calling
|
||||||
* unloading, the driver should always call free_irq() on all MSI-X vectors
|
* pci_disable_msix(). Failure to do so results in a BUG_ON() and a device
|
||||||
* it has done request_irq() on before calling pci_disable_msix(). Failure
|
* will be left with MSI-X enabled and leaks its vectors.
|
||||||
* to do so results in a BUG_ON() and a device will be left with MSI-X
|
|
||||||
* enabled and leaks its vectors.
|
|
||||||
*
|
*
|
||||||
* Return codes
|
* Return codes
|
||||||
* 0 - successful
|
* 0 - successful
|
||||||
|
@ -8797,17 +8795,14 @@ lpfc_sli4_enable_msix(struct lpfc_hba *phba)
|
||||||
phba->sli4_hba.msix_entries[index].entry = index;
|
phba->sli4_hba.msix_entries[index].entry = index;
|
||||||
vectors++;
|
vectors++;
|
||||||
}
|
}
|
||||||
enable_msix_vectors:
|
rc = pci_enable_msix_range(phba->pcidev, phba->sli4_hba.msix_entries,
|
||||||
rc = pci_enable_msix(phba->pcidev, phba->sli4_hba.msix_entries,
|
2, vectors);
|
||||||
vectors);
|
if (rc < 0) {
|
||||||
if (rc > 1) {
|
|
||||||
vectors = rc;
|
|
||||||
goto enable_msix_vectors;
|
|
||||||
} else if (rc) {
|
|
||||||
lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
|
lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
|
||||||
"0484 PCI enable MSI-X failed (%d)\n", rc);
|
"0484 PCI enable MSI-X failed (%d)\n", rc);
|
||||||
goto vec_fail_out;
|
goto vec_fail_out;
|
||||||
}
|
}
|
||||||
|
vectors = rc;
|
||||||
|
|
||||||
/* Log MSI-X vector assignment */
|
/* Log MSI-X vector assignment */
|
||||||
for (index = 0; index < vectors; index++)
|
for (index = 0; index < vectors; index++)
|
||||||
|
|
Loading…
Add table
Reference in a new issue