ib: Use pci_enable_msix_range() instead of pci_enable_msix()
Subsystems (2)
cover ib: 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() and pci_enable_msix_range() interfaces.
Alexander Gordeev (2):
mthca: Use pci_enable_msix_range() instead of pci_enable_msix()
qib: Use pci_enable_msix_range() instead of pci_enable_msix()
drivers/infiniband/hw/mthca/mthca_main.c | 9 ++--- drivers/infiniband/hw/qib/qib_pcie.c | 55 +++++++++++++++-------------- 2 files changed, 31 insertions(+), 33 deletions(-)
Signature · 1 line
1.7.7.6
PATCH 1/2 mthca: 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() and pci_enable_msix_range() interfaces.
--- drivers/infiniband/hw/mthca/mthca_main.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-)
drivers/infiniband/hw/mthca/mthca_main.c +3 -6
@@ -858,13 +858,10 @@ static int mthca_enable_msi_x(struct mthca_dev *mdev) entries[1 ].entry =1 ; entries[2 ].entry =2 ; - err =pci_enable_msix (mdev->pdev, entries,ARRAY_SIZE (entries)); -if (err) { -if (err >0 ) -mthca_info (mdev,"Only %d MSI-X vectors available, " -"not using MSI-X\n" , err); + err =pci_enable_msix_range (mdev->pdev, entries, +ARRAY_SIZE (entries),ARRAY_SIZE (entries)); +if (err <0 )return err; - } mdev->eq_table.eq[MTHCA_EQ_COMP ].msi_x_vector = entries[0 ].vector; mdev->eq_table.eq[MTHCA_EQ_ASYNC ].msi_x_vector = entries[1 ].vector;
Signature · 1 line
1.7.7.6
PATCH v2 1/2 IB/mthca: Use pci_enable_msix_exact() 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.
--- drivers/infiniband/hw/mthca/mthca_main.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-)
drivers/infiniband/hw/mthca/mthca_main.c +2 -6
@@ -858,13 +858,9 @@ static int mthca_enable_msi_x(struct mthca_dev *mdev) entries[1 ].entry =1 ; entries[2 ].entry =2 ; - err =pci_enable_msix (mdev->pdev, entries,ARRAY_SIZE (entries)); -if (err) { -if (err >0 ) -mthca_info (mdev,"Only %d MSI-X vectors available, " -"not using MSI-X\n" , err); + err =pci_enable_msix_exact (mdev->pdev, entries,ARRAY_SIZE (entries)); +if (err)return err; - } mdev->eq_table.eq[MTHCA_EQ_COMP ].msi_x_vector = entries[0 ].vector; mdev->eq_table.eq[MTHCA_EQ_ASYNC ].msi_x_vector = entries[1 ].vector;
Signature · 6 lines
1.7.7.6 -- Regards, Alexander Gordeev [email protected]
PATCH 2/2 qib: Use pci_enable_msix_range() instead of pci_enable_msix()
In reply to Alexander GordeevAs 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() and pci_enable_msix_range() interfaces.
--- drivers/infiniband/hw/qib/qib_pcie.c | 55 +++++++++++++++++---------------- 1 files changed, 28 insertions(+), 27 deletions(-)
drivers/infiniband/hw/qib/qib_pcie.c +28 -27
@@ -197,46 +197,47 @@ static void qib_msix_setup(struct qib_devdata *dd, int pos, u32 *msixcnt, struct qib_msix_entry *qib_msix_entry) {int ret; -u32 tabsize =0 ; -u16 msix_flags; +int nvec = *msixcnt;struct msix_entry *msix_entry;int i; + ret =pci_msix_vec_count (dd->pcidev); +if (ret <0 ) + goto do_intx; + + nvec =min (nvec, ret); +/* We can't pass qib_msix_entry array to qib_msix_setup * so use a dummy msix_entry array and copy the allocated * irq back to the qib_msix_entry array. */ - msix_entry =kmalloc (*msixcnt *sizeof (*msix_entry),GFP_KERNEL ); -if (!msix_entry) { - ret = -ENOMEM ; + msix_entry =kmalloc (nvec *sizeof (*msix_entry),GFP_KERNEL ); +if (!msix_entry) goto do_intx; - } -for (i =0 ; i < *msixcnt; i++) + +for (i =0 ; i < nvec; i++) msix_entry[i] = qib_msix_entry[i].msix; -pci_read_config_word (dd->pcidev, pos +PCI_MSIX_FLAGS , &msix_flags); - tabsize =1 + (msix_flags &PCI_MSIX_FLAGS_QSIZE ); -if (tabsize > *msixcnt) - tabsize = *msixcnt; - ret =pci_enable_msix (dd->pcidev, msix_entry, tabsize); -if (ret >0 ) { - tabsize = ret; - ret =pci_enable_msix (dd->pcidev, msix_entry, tabsize); - } -do_intx: -if (ret) { -qib_dev_err (dd, -"pci_enable_msix %d vectors failed: %d, falling back to INTx\n" , - tabsize, ret); - tabsize =0 ; - } -for (i =0 ; i < tabsize; i++) + ret =pci_enable_msix_range (dd->pcidev, msix_entry,1 , nvec); +if (ret <0 ) + goto free_msix_entry; +else + nvec = ret; + +for (i =0 ; i < nvec; i++) qib_msix_entry[i].msix = msix_entry[i]; +kfree (msix_entry); - *msixcnt = tabsize; + *msixcnt = nvec; +return ; -if (ret) -qib_enable_intx (dd->pcidev); +free_msix_entry: +kfree (msix_entry); +do_intx: +qib_dev_err (dd,"pci_enable_msix_range %d vectors failed: %d, " +"falling back to INTx\n" , nvec, ret); + *msixcnt =0 ; +qib_enable_intx (dd->pcidev); }/**
Signature · 1 line
1.7.7.6
RE: [PATCH 2/2] qib: Use pci_enable_msix_range() instead of pci_enable_msix()
Quoted 3 lines
Subject: [PATCH 2/2] qib: Use
pci_enable_msix_range()instead ofpci_enable_msix()
We are testing this now.
I suggest a subject/summary adding the IB/:
IB/qib: Use pci_enable_msix_range() instead of pci_enable_msix()
RE: [PATCH 2/2] qib: Use pci_enable_msix_range() instead of pci_enable_msix()
In reply to Alexander GordeevQuoted 9 lines
Subject: [PATCH 2/2] qib: Use
pci_enable_msix_range()instead ofpci_enable_msix()As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix()andpci_enable_msi_block()all drivers using these two interfaces need to be updated to use the newpci_enable_msi_range()andpci_enable_msix_range()interfaces.Signed-off-by Alexander Gordeev <[email protected]>
This worked fine!
Roland, can you fix up the subject to change qib to IB/qib when you merge it?
Re: [PATCH 2/2] qib: Use pci_enable_msix_range() instead of pci_enable_msix()
Quoted 8 lines · Mike
Quoted 8 lines
Subject: [PATCH 2/2] qib: Use
pci_enable_msix_range()instead ofpci_enable_msix()As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix()andpci_enable_msi_block()all drivers using these two interfaces need to be updated to use the newpci_enable_msi_range()andpci_enable_msix_range()interfaces.
Quoted 7 lines
Quoted 1 line
Signed-off-by Alexander Gordeev <[email protected]>This worked fine!
Roland, can you fix up the subject to change qib to IB/qib when you merge it?
Acked-by Mike Marciniszyn <[email protected]>
Hi Roland,
Do you want me to repost these patches?
Thanks!
Signature · 3 lines
Regards, Alexander Gordeev [email protected]