diff options
| author | Christoph Hellwig <hch@lst.de> | 2016-11-30 17:21:01 +0100 | 
|---|---|---|
| committer | Martin K. Petersen <martin.petersen@oracle.com> | 2016-12-01 08:36:17 -0500 | 
| commit | e3cb0e47b9233a42f8c5865ad748666b6bbbc12f (patch) | |
| tree | 8d76c525b380033f0f5df493c374ce691ff04e50 | |
| parent | 9dadfb973f0d9396ef18f7ee0867fe9a165c03f4 (diff) | |
scsi: isci: switch to pci_alloc_irq_vectors
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
| -rw-r--r-- | drivers/scsi/isci/host.h | 1 | ||||
| -rw-r--r-- | drivers/scsi/isci/init.c | 23 | 
2 files changed, 10 insertions, 14 deletions
| diff --git a/drivers/scsi/isci/host.h b/drivers/scsi/isci/host.h index 22a9bb1abae1..b3539928073c 100644 --- a/drivers/scsi/isci/host.h +++ b/drivers/scsi/isci/host.h @@ -295,7 +295,6 @@ enum sci_controller_states {  #define SCI_MAX_MSIX_INT (SCI_NUM_MSI_X_INT*SCI_MAX_CONTROLLERS)  struct isci_pci_info { -	struct msix_entry msix_entries[SCI_MAX_MSIX_INT];  	struct isci_host *hosts[SCI_MAX_CONTROLLERS];  	struct isci_orom *orom;  }; diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c index 77128d680e3b..0b5b5db0d0f8 100644 --- a/drivers/scsi/isci/init.c +++ b/drivers/scsi/isci/init.c @@ -350,16 +350,12 @@ static int isci_setup_interrupts(struct pci_dev *pdev)  	 */  	num_msix = num_controllers(pdev) * SCI_NUM_MSI_X_INT; -	for (i = 0; i < num_msix; i++) -		pci_info->msix_entries[i].entry = i; - -	err = pci_enable_msix_exact(pdev, pci_info->msix_entries, num_msix); -	if (err) +	err = pci_alloc_irq_vectors(pdev, num_msix, num_msix, PCI_IRQ_MSIX); +	if (err < 0)  		goto intx;  	for (i = 0; i < num_msix; i++) {  		int id = i / SCI_NUM_MSI_X_INT; -		struct msix_entry *msix = &pci_info->msix_entries[i];  		irq_handler_t isr;  		ihost = pci_info->hosts[id]; @@ -369,8 +365,8 @@ static int isci_setup_interrupts(struct pci_dev *pdev)  		else  			isr = isci_msix_isr; -		err = devm_request_irq(&pdev->dev, msix->vector, isr, 0, -				       DRV_NAME"-msix", ihost); +		err = devm_request_irq(&pdev->dev, pci_irq_vector(pdev, i), +				isr, 0, DRV_NAME"-msix", ihost);  		if (!err)  			continue; @@ -378,18 +374,19 @@ static int isci_setup_interrupts(struct pci_dev *pdev)  		while (i--) {  			id = i / SCI_NUM_MSI_X_INT;  			ihost = pci_info->hosts[id]; -			msix = &pci_info->msix_entries[i]; -			devm_free_irq(&pdev->dev, msix->vector, ihost); +			devm_free_irq(&pdev->dev, pci_irq_vector(pdev, i), +					ihost);  		} -		pci_disable_msix(pdev); +		pci_free_irq_vectors(pdev);  		goto intx;  	}  	return 0;   intx:  	for_each_isci_host(i, ihost, pdev) { -		err = devm_request_irq(&pdev->dev, pdev->irq, isci_intx_isr, -				       IRQF_SHARED, DRV_NAME"-intx", ihost); +		err = devm_request_irq(&pdev->dev, pci_irq_vector(pdev, 0), +				isci_intx_isr, IRQF_SHARED, DRV_NAME"-intx", +				ihost);  		if (err)  			break;  	} | 
