Loading drivers/scsi/bfa/bfad.c +25 −37 Original line number Diff line number Diff line Loading @@ -1219,7 +1219,7 @@ bfad_install_msix_handler(struct bfad_s *bfad) int bfad_setup_intr(struct bfad_s *bfad) { int error = 0; int error; u32 mask = 0, i, num_bit = 0, max_bit = 0; struct msix_entry msix_entries[MAX_MSIX_ENTRY]; struct pci_dev *pdev = bfad->pcidev; Loading @@ -1234,35 +1234,25 @@ bfad_setup_intr(struct bfad_s *bfad) if ((bfa_asic_id_ctc(pdev->device) && !msix_disable_ct) || (bfa_asic_id_cb(pdev->device) && !msix_disable_cb)) { error = pci_enable_msix(bfad->pcidev, msix_entries, bfad->nvec); if (error) { error = pci_enable_msix_exact(bfad->pcidev, msix_entries, bfad->nvec); /* In CT1 & CT2, try to allocate just one vector */ if (bfa_asic_id_ctc(pdev->device)) { if (error == -ENOSPC && bfa_asic_id_ctc(pdev->device)) { printk(KERN_WARNING "bfa %s: trying one msix " "vector failed to allocate %d[%d]\n", bfad->pci_name, bfad->nvec, error); bfad->nvec = 1; error = pci_enable_msix(bfad->pcidev, msix_entries, bfad->nvec); error = pci_enable_msix_exact(bfad->pcidev, msix_entries, 1); } /* * Only error number of vector is available. * We don't have a mechanism to map multiple * interrupts into one vector, so even if we * can try to request less vectors, we don't * know how to associate interrupt events to * vectors. Linux doesn't duplicate vectors * in the MSIX table for this case. */ if (error) { printk(KERN_WARNING "bfad%d: " "pci_enable_msix failed (%d), " "pci_enable_msix_exact failed (%d), " "use line based.\n", bfad->inst_no, error); goto line_based; } } /* Disable INTX in MSI-X mode */ pci_read_config_word(pdev, PCI_COMMAND, ®); Loading @@ -1281,20 +1271,18 @@ bfad_setup_intr(struct bfad_s *bfad) bfad->bfad_flags |= BFAD_MSIX_ON; return error; return 0; } line_based: error = 0; if (request_irq (bfad->pcidev->irq, (irq_handler_t) bfad_intx, BFAD_IRQ_FLAGS, BFAD_DRIVER_NAME, bfad) != 0) { /* Enable interrupt handler failed */ return 1; } error = request_irq(bfad->pcidev->irq, (irq_handler_t)bfad_intx, BFAD_IRQ_FLAGS, BFAD_DRIVER_NAME, bfad); if (error) return error; bfad->bfad_flags |= BFAD_INTX_ON; return error; return 0; } void Loading drivers/scsi/fnic/fnic_isr.c +2 −2 Original line number Diff line number Diff line Loading @@ -257,7 +257,7 @@ int fnic_set_intr_mode(struct fnic *fnic) fnic->raw_wq_count >= m && fnic->wq_copy_count >= o && fnic->cq_count >= n + m + o) { if (!pci_enable_msix(fnic->pdev, fnic->msix_entry, if (!pci_enable_msix_exact(fnic->pdev, fnic->msix_entry, n + m + o + 1)) { fnic->rq_count = n; fnic->raw_wq_count = m; Loading drivers/scsi/isci/init.c +1 −1 Original line number Diff line number Diff line Loading @@ -356,7 +356,7 @@ static int isci_setup_interrupts(struct pci_dev *pdev) for (i = 0; i < num_msix; i++) pci_info->msix_entries[i].entry = i; err = pci_enable_msix(pdev, pci_info->msix_entries, num_msix); err = pci_enable_msix_exact(pdev, pci_info->msix_entries, num_msix); if (err) goto intx; Loading drivers/scsi/lpfc/lpfc_init.c +6 −3 Original line number Diff line number Diff line Loading @@ -8242,7 +8242,7 @@ lpfc_sli_enable_msix(struct lpfc_hba *phba) if (rc) { lpfc_printf_log(phba, KERN_INFO, LOG_INIT, "0420 PCI enable MSI-X failed (%d)\n", rc); goto msi_fail_out; goto vec_fail_out; } for (i = 0; i < LPFC_MSIX_VECTORS; i++) lpfc_printf_log(phba, KERN_INFO, LOG_INIT, Loading Loading @@ -8320,6 +8320,8 @@ lpfc_sli_enable_msix(struct lpfc_hba *phba) msi_fail_out: /* Unconfigure MSI-X capability structure */ pci_disable_msix(phba->pcidev); vec_fail_out: return rc; } Loading Loading @@ -8812,7 +8814,7 @@ lpfc_sli4_enable_msix(struct lpfc_hba *phba) } else if (rc) { lpfc_printf_log(phba, KERN_INFO, LOG_INIT, "0484 PCI enable MSI-X failed (%d)\n", rc); goto msi_fail_out; goto vec_fail_out; } /* Log MSI-X vector assignment */ Loading Loading @@ -8875,9 +8877,10 @@ lpfc_sli4_enable_msix(struct lpfc_hba *phba) &phba->sli4_hba.fcp_eq_hdl[index]); } msi_fail_out: /* Unconfigure MSI-X capability structure */ pci_disable_msix(phba->pcidev); vec_fail_out: return rc; } Loading drivers/scsi/pm8001/pm8001_init.c +3 −2 Original line number Diff line number Diff line Loading @@ -763,9 +763,10 @@ static u32 pm8001_setup_msix(struct pm8001_hba_info *pm8001_ha) pm8001_ha->irq_vector[i].irq_id = i; pm8001_ha->irq_vector[i].drv_inst = pm8001_ha; if (request_irq(pm8001_ha->msix_entries[i].vector, rc = request_irq(pm8001_ha->msix_entries[i].vector, pm8001_interrupt_handler_msix, flag, intr_drvname[i], &(pm8001_ha->irq_vector[i]))) { intr_drvname[i], &(pm8001_ha->irq_vector[i])); if (rc) { for (j = 0; j < i; j++) free_irq( pm8001_ha->msix_entries[j].vector, Loading Loading
drivers/scsi/bfa/bfad.c +25 −37 Original line number Diff line number Diff line Loading @@ -1219,7 +1219,7 @@ bfad_install_msix_handler(struct bfad_s *bfad) int bfad_setup_intr(struct bfad_s *bfad) { int error = 0; int error; u32 mask = 0, i, num_bit = 0, max_bit = 0; struct msix_entry msix_entries[MAX_MSIX_ENTRY]; struct pci_dev *pdev = bfad->pcidev; Loading @@ -1234,35 +1234,25 @@ bfad_setup_intr(struct bfad_s *bfad) if ((bfa_asic_id_ctc(pdev->device) && !msix_disable_ct) || (bfa_asic_id_cb(pdev->device) && !msix_disable_cb)) { error = pci_enable_msix(bfad->pcidev, msix_entries, bfad->nvec); if (error) { error = pci_enable_msix_exact(bfad->pcidev, msix_entries, bfad->nvec); /* In CT1 & CT2, try to allocate just one vector */ if (bfa_asic_id_ctc(pdev->device)) { if (error == -ENOSPC && bfa_asic_id_ctc(pdev->device)) { printk(KERN_WARNING "bfa %s: trying one msix " "vector failed to allocate %d[%d]\n", bfad->pci_name, bfad->nvec, error); bfad->nvec = 1; error = pci_enable_msix(bfad->pcidev, msix_entries, bfad->nvec); error = pci_enable_msix_exact(bfad->pcidev, msix_entries, 1); } /* * Only error number of vector is available. * We don't have a mechanism to map multiple * interrupts into one vector, so even if we * can try to request less vectors, we don't * know how to associate interrupt events to * vectors. Linux doesn't duplicate vectors * in the MSIX table for this case. */ if (error) { printk(KERN_WARNING "bfad%d: " "pci_enable_msix failed (%d), " "pci_enable_msix_exact failed (%d), " "use line based.\n", bfad->inst_no, error); goto line_based; } } /* Disable INTX in MSI-X mode */ pci_read_config_word(pdev, PCI_COMMAND, ®); Loading @@ -1281,20 +1271,18 @@ bfad_setup_intr(struct bfad_s *bfad) bfad->bfad_flags |= BFAD_MSIX_ON; return error; return 0; } line_based: error = 0; if (request_irq (bfad->pcidev->irq, (irq_handler_t) bfad_intx, BFAD_IRQ_FLAGS, BFAD_DRIVER_NAME, bfad) != 0) { /* Enable interrupt handler failed */ return 1; } error = request_irq(bfad->pcidev->irq, (irq_handler_t)bfad_intx, BFAD_IRQ_FLAGS, BFAD_DRIVER_NAME, bfad); if (error) return error; bfad->bfad_flags |= BFAD_INTX_ON; return error; return 0; } void Loading
drivers/scsi/fnic/fnic_isr.c +2 −2 Original line number Diff line number Diff line Loading @@ -257,7 +257,7 @@ int fnic_set_intr_mode(struct fnic *fnic) fnic->raw_wq_count >= m && fnic->wq_copy_count >= o && fnic->cq_count >= n + m + o) { if (!pci_enable_msix(fnic->pdev, fnic->msix_entry, if (!pci_enable_msix_exact(fnic->pdev, fnic->msix_entry, n + m + o + 1)) { fnic->rq_count = n; fnic->raw_wq_count = m; Loading
drivers/scsi/isci/init.c +1 −1 Original line number Diff line number Diff line Loading @@ -356,7 +356,7 @@ static int isci_setup_interrupts(struct pci_dev *pdev) for (i = 0; i < num_msix; i++) pci_info->msix_entries[i].entry = i; err = pci_enable_msix(pdev, pci_info->msix_entries, num_msix); err = pci_enable_msix_exact(pdev, pci_info->msix_entries, num_msix); if (err) goto intx; Loading
drivers/scsi/lpfc/lpfc_init.c +6 −3 Original line number Diff line number Diff line Loading @@ -8242,7 +8242,7 @@ lpfc_sli_enable_msix(struct lpfc_hba *phba) if (rc) { lpfc_printf_log(phba, KERN_INFO, LOG_INIT, "0420 PCI enable MSI-X failed (%d)\n", rc); goto msi_fail_out; goto vec_fail_out; } for (i = 0; i < LPFC_MSIX_VECTORS; i++) lpfc_printf_log(phba, KERN_INFO, LOG_INIT, Loading Loading @@ -8320,6 +8320,8 @@ lpfc_sli_enable_msix(struct lpfc_hba *phba) msi_fail_out: /* Unconfigure MSI-X capability structure */ pci_disable_msix(phba->pcidev); vec_fail_out: return rc; } Loading Loading @@ -8812,7 +8814,7 @@ lpfc_sli4_enable_msix(struct lpfc_hba *phba) } else if (rc) { lpfc_printf_log(phba, KERN_INFO, LOG_INIT, "0484 PCI enable MSI-X failed (%d)\n", rc); goto msi_fail_out; goto vec_fail_out; } /* Log MSI-X vector assignment */ Loading Loading @@ -8875,9 +8877,10 @@ lpfc_sli4_enable_msix(struct lpfc_hba *phba) &phba->sli4_hba.fcp_eq_hdl[index]); } msi_fail_out: /* Unconfigure MSI-X capability structure */ pci_disable_msix(phba->pcidev); vec_fail_out: return rc; } Loading
drivers/scsi/pm8001/pm8001_init.c +3 −2 Original line number Diff line number Diff line Loading @@ -763,9 +763,10 @@ static u32 pm8001_setup_msix(struct pm8001_hba_info *pm8001_ha) pm8001_ha->irq_vector[i].irq_id = i; pm8001_ha->irq_vector[i].drv_inst = pm8001_ha; if (request_irq(pm8001_ha->msix_entries[i].vector, rc = request_irq(pm8001_ha->msix_entries[i].vector, pm8001_interrupt_handler_msix, flag, intr_drvname[i], &(pm8001_ha->irq_vector[i]))) { intr_drvname[i], &(pm8001_ha->irq_vector[i])); if (rc) { for (j = 0; j < i; j++) free_irq( pm8001_ha->msix_entries[j].vector, Loading