提交 4f871e1b 编写于 作者: A Alexander Gordeev 提交者: Christoph Hellwig

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: NAlexander Gordeev <agordeev@redhat.com>
Reviewed-by: NJames Smart <james.smart@emulex.com>
Signed-off-by: NChristoph Hellwig <hch@lst.de>
上级 a7901acc
......@@ -8203,9 +8203,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
......@@ -8229,8 +8229,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);
......@@ -8767,16 +8767,14 @@ lpfc_sli4_set_affinity(struct lpfc_hba *phba, int vectors)
* @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
......@@ -8797,17 +8795,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++)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册