scsi: Use pci_enable_msix_range() instead of pci_enable_msix()
Subsystems (15)
v2 cover scsi: Use pci_enable_msix_range() instead of pci_enable_msix()
Hello,
This is a series of mostly trivial patches. Once accepted, we could phase out pci_enable_msix() interface.
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.
Thanks!
Alexander Gordeev (23):
be2iscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
bfa: Do not call pci_enable_msix() after it failed once
bfa: Cleanup bfad_setup_intr() function
bfa: Use pci_enable_msix_exact() instead of pci_enable_msix()
csiostor: Remove superfluous call to pci_disable_msix()
csiostor: Use pci_enable_msix_range() instead of pci_enable_msix()
fnic: Use pci_enable_msix_exact() instead of pci_enable_msix()
hpsa: Fallback to MSI rather than to INTx if MSI-X failed
hpsa: Use pci_enable_msix_range() instead of pci_enable_msix()
isci: Use pci_enable_msix_exact() instead of pci_enable_msix()
lpfc: Remove superfluous call to pci_disable_msix()
lpfc: Use pci_enable_msix_range() instead of pci_enable_msix()
megaraid: Fail resume if MSI-X re-initialization failed
megaraid: Use pci_enable_msix_range() instead of pci_enable_msix()
mpt2sas: Use pci_enable_msix_exact() instead of pci_enable_msix()
mpt3sas: Use pci_enable_msix_exact() instead of pci_enable_msix()
pm8001: Fix invalid return when request_irq() failed
pm8001: Use pci_enable_msix_exact() instead of pci_enable_msix()
pmcraid: Get rid of a redundant assignment
pmcraid: Use pci_enable_msix_range() instead of pci_enable_msix()
qla2xxx: Use pci_enable_msix_range() instead of pci_enable_msix()
qla4xxx: Use pci_enable_msix_exact() instead of pci_enable_msix()
vmw_pvscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
drivers/scsi/be2iscsi/be_main.c | 6 +-- drivers/scsi/bfa/bfad.c | 62 ++++++++++++----------------- drivers/scsi/csiostor/csio_hw.h | 2 +- drivers/scsi/csiostor/csio_isr.c | 24 ++++------- drivers/scsi/fnic/fnic_isr.c | 4 +- drivers/scsi/hpsa.c | 28 ++++++------- drivers/scsi/isci/init.c | 2 +- drivers/scsi/lpfc/lpfc_init.c | 47 +++++++++++----------- drivers/scsi/megaraid/megaraid_sas_base.c | 24 +++++------ drivers/scsi/mpt2sas/mpt2sas_base.c | 6 +- drivers/scsi/mpt3sas/mpt3sas_base.c | 4 +- drivers/scsi/pm8001/pm8001_init.c | 44 +++++++++++---------- drivers/scsi/pmcraid.c | 14 +------ drivers/scsi/qla2xxx/qla_isr.c | 27 +++++------- drivers/scsi/qla4xxx/ql4_nx.c | 2 +- drivers/scsi/vmw_pvscsi.c | 2 +- 16 files changed, 128 insertions(+), 170 deletions(-)
Signature · 1 line
1.7.7.6
PATCH RESEND v2 1/23 be2iscsi: 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/scsi/be2iscsi/be_main.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-)
drivers/scsi/be2iscsi/be_main.c +2 -4
@@ -5278,12 +5278,10 @@ static void beiscsi_msix_enable(struct beiscsi_hba *phba)for (i =0 ; i <= phba->num_cpus; i++) phba->msix_entries[i].entry = i; - status =pci_enable_msix (phba->pcidev, phba->msix_entries, - (phba->num_cpus +1 )); + status =pci_enable_msix_exact (phba->pcidev, phba->msix_entries, + phba->num_cpus +1 );if (!status) phba->msix_enabled = true; - -return ; }static void be_eqd_update (struct beiscsi_hba *phba)
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 01/23] be2iscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Hi Jayamohan,
Could you please review this patch?
Thanks!
Quoted 27 lines
Signed-off-by Alexander Gordeev <[email protected]>--- drivers/scsi/be2iscsi/be_main.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-)drivers/scsi/be2iscsi/be_main.c +2
-4@@ -5278,12 +5278,10 @@ static void beiscsi_msix_enable(struct beiscsi_hba *phba)for (i =0 ; i <= phba->num_cpus; i++) phba->msix_entries[i].entry = i; - status =pci_enable_msix (phba->pcidev, phba->msix_entries, - (phba->num_cpus +1 )); + status =pci_enable_msix_exact (phba->pcidev, phba->msix_entries, + phba->num_cpus +1 );if (!status) phba->msix_enabled = true; - -return ; }static void be_eqd_update (struct beiscsi_hba *phba)Signature · 1 line
1.7.7.6
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Jayamohan Kallickal
Acked-byRE: [PATCH v2 RESEND 01/23] be2iscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
-----Original Message-----
From: Alexander Gordeev [mailto:[email protected]]
Sent: Saturday, July 26, 2014 1:09 AM
To: [email protected]; Jayamohan Kallickal
Subject: Re: [PATCH v2 RESEND 01/23] be2iscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 5 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Hi Jayamohan,
Could you please review this patch?
Thanks!
Quoted 25 lines
Signed-off-by Alexander Gordeev <[email protected]>--- drivers/scsi/be2iscsi/be_main.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-)(quoted diff) +0
-0
b/drivers/scsi/be2iscsi/be_main.cindex 56467df..1f63169 100644drivers/scsi/be2iscsi/be_main.c +2
-5@@ -5278,12 +5278,10 @@ static void beiscsi_msix_enable(struct beiscsi_hba *phba)for (i =0 ; i <= phba->num_cpus; i++) phba->msix_entries[i].entry = i; - status =pci_enable_msix (phba->pcidev, phba->msix_entries, - (phba->num_cpus +1 )); + status =pci_enable_msix_exact (phba->pcidev, phba->msix_entries, + phba->num_cpus +1 );if (!status) phba->msix_enabled = true; - -return ; }static void be_eqd_update (struct beiscsi_hba *phba) --
Quoted 2 lines
1.7.7.6
Looks Good.
--
Re: [PATCH v2 RESEND 01/23] be2iscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 15 lines · Jayamohan Kallickal
-----Original Message-----
From: Alexander Gordeev [mailto:[email protected]]
Sent: Saturday, July 26, 2014 1:09 AM
To: [email protected]; Jayamohan Kallickal
Subject: Re: [PATCH v2 RESEND 01/23] be2iscsi: Usepci_enable_msix_exact()instead ofpci_enable_msix()Quoted 5 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Quoted 3 lines
Hi Jayamohan,
Could you please review this patch?
Jayamohan?
Quoted 35 lines
Thanks!
Quoted 25 lines
Signed-off-by Alexander Gordeev <[email protected]>--- drivers/scsi/be2iscsi/be_main.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-)(quoted diff) +0
-0
b/drivers/scsi/be2iscsi/be_main.cindex 56467df..1f63169 100644drivers/scsi/be2iscsi/be_main.c +2
-5@@ -5278,12 +5278,10 @@ static void beiscsi_msix_enable(struct beiscsi_hba *phba)for (i =0 ; i <= phba->num_cpus; i++) phba->msix_entries[i].entry = i; - status =pci_enable_msix (phba->pcidev, phba->msix_entries, - (phba->num_cpus +1 )); + status =pci_enable_msix_exact (phba->pcidev, phba->msix_entries, + phba->num_cpus +1 );if (!status) phba->msix_enabled = true; - -return ; }static void be_eqd_update (struct beiscsi_hba *phba) --Quoted 2 lines
1.7.7.6
Looks Good.
--
PATCH RESEND v2 2/23 bfa: Do not call pci_enable_msix() after it failed once
In reply to Alexander GordeevFunction pci_enable_msix() should not be called in case it threw a negative errno from a previous call.
--- drivers/scsi/bfa/bfad.c | 48 ++++++++++++++++++++++------------------------ 1 files changed, 23 insertions(+), 25 deletions(-)
drivers/scsi/bfa/bfad.c +23 -25
@@ -1235,33 +1235,31 @@ bfad_setup_intr(struct bfad_s *bfad) (bfa_asic_id_cb(pdev->device) && !msix_disable_cb)) { error =pci_enable_msix (bfad->pcidev, msix_entries, bfad->nvec); -if (error) { -/* In CT1 & CT2, try to allocate just one vector */ -if (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, +/* In CT1 & CT2, try to allocate just one vector */ +if (error >0 &&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); - } + } -/* -* 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), " -"use line based.\n" , - bfad->inst_no, error); - goto line_based; - } +/* +* 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), " +"use line based.\n" , + bfad->inst_no, error); + goto line_based; }/* Disable INTX in MSI-X mode */
Signature · 1 line
1.7.7.6
PATCH RESEND v2 3/23 bfa: Cleanup bfad_setup_intr() function
In reply to Alexander Gordeev--- drivers/scsi/bfa/bfad.c | 18 ++++++++---------- 1 files changed, 8 insertions(+), 10 deletions(-)
drivers/scsi/bfa/bfad.c +8 -10
@@ -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;
@@ -1279,20 +1279,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
Signature · 1 line
1.7.7.6
PATCH RESEND v2 4/23 bfa: Use pci_enable_msix_exact() 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
--- drivers/scsi/bfa/bfad.c | 20 ++++++-------------- 1 files changed, 6 insertions(+), 14 deletions(-)
drivers/scsi/bfa/bfad.c +6 -14
@@ -1234,29 +1234,21 @@ 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); + error =pci_enable_msix_exact (bfad->pcidev, + msix_entries, bfad->nvec);/* In CT1 & CT2, try to allocate just one vector */ -if (error >0 &&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;
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 04/23] bfa: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Anil, Sudarsana,
Could you please review bfa patches in this series?
Thanks!
Quoted 53 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Anil Gurumurthy <[email protected]>Cc Vijaya Mohan Guvva <[email protected]>Acked-by Anil Gurumurthy <[email protected]>--- drivers/scsi/bfa/bfad.c | 20 ++++++-------------- 1 files changed, 6 insertions(+), 14 deletions(-)drivers/scsi/bfa/bfad.c +6
-14@@ -1234,29 +1234,21 @@ 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); + error =pci_enable_msix_exact (bfad->pcidev, + msix_entries, bfad->nvec);/* In CT1 & CT2, try to allocate just one vector */ -if (error >0 &&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;Signature · 1 line
1.7.7.6
RE: [PATCH v2 RESEND 04/23] bfa: Use pci_enable_msix_exact() instead of pci_enable_msix()
-----Original Message-----
From: Alexander Gordeev [mailto:[email protected]]
Sent: 11 August 2014 13:09
To: linux-kernel
Cc: Anil Gurumurthy; Vijaya Mohan Guvva; linux-scsi; linux-pci; Anil Gurumurthy; Sudarsana Kalluru
Subject: Re: [PATCH v2 RESEND 04/23] bfa: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 5 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Anil, Sudarsana,
Could you please review bfa patches in this series?
Thanks!
Quoted 53 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Anil Gurumurthy <[email protected]>Cc Vijaya Mohan Guvva <[email protected]>Acked-by Anil Gurumurthy <[email protected]>--- drivers/scsi/bfa/bfad.c | 20 ++++++-------------- 1 files changed, 6 insertions(+), 14 deletions(-)drivers/scsi/bfa/bfad.c index renamed from drivers/scsi/bfa/bfad.c +0
-0c18279f..e90a374 100644
drivers/scsi/bfa/bfad.c +6
-15@@ -1234,29 +1234,21 @@ 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); + error =pci_enable_msix_exact (bfad->pcidev, + msix_entries, bfad->nvec);/* In CT1 & CT2, try to allocate just one vector */ -if (error >0 &&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; --1.7.7.6
Re: [PATCH v2 RESEND 04/23] bfa: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 1 line · Anil Gurumurthy
Acked-by Anil Gurumurthy <[email protected]>
Many thanks, Anil!
If your Ack apply to this patch only or to all three 'bfa' patches in this series?
Thanks!
Quoted 73 lines
-----Original Message-----
From: Alexander Gordeev [mailto:[email protected]]
Sent: 11 August 2014 13:09
To: linux-kernel
Cc: Anil Gurumurthy; Vijaya Mohan Guvva; linux-scsi; linux-pci; Anil Gurumurthy; Sudarsana Kalluru
Subject: Re: [PATCH v2 RESEND 04/23] bfa: Usepci_enable_msix_exact()instead ofpci_enable_msix()Quoted 5 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.Anil, Sudarsana,
Could you please review bfa patches in this series?
Thanks!
Quoted 53 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Anil Gurumurthy <[email protected]>Cc Vijaya Mohan Guvva <[email protected]>Acked-by Anil Gurumurthy <[email protected]>--- drivers/scsi/bfa/bfad.c | 20 ++++++-------------- 1 files changed, 6 insertions(+), 14 deletions(-)drivers/scsi/bfa/bfad.c index renamed from drivers/scsi/bfa/bfad.c +0
-0c18279f..e90a374 100644
drivers/scsi/bfa/bfad.c +6
-15@@ -1234,29 +1234,21 @@ 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); + error =pci_enable_msix_exact (bfad->pcidev, + msix_entries, bfad->nvec);/* In CT1 & CT2, try to allocate just one vector */ -if (error >0 &&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; --1.7.7.6
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Anil Gurumurthy
maintainerRE: [PATCH v2 RESEND 04/23] bfa: Use pci_enable_msix_exact() instead of pci_enable_msix()
Hi Alexander,
I believe I acked the series already, if not, I am acking all the bfa patches in this series.
Thanks,
Anil
-----Original Message-----
From: Alexander Gordeev [mailto:[email protected]]
Sent: 12 August 2014 16:20
To: Anil Gurumurthy
Cc: linux-kernel; Anil Gurumurthy; Vijaya Mohan Guvva; linux-scsi; linux-pci; Sudarsana Kalluru
Subject: Re: [PATCH v2 RESEND 04/23] bfa: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 1 line · Anil Gurumurthy
Acked-by Anil Gurumurthy <[email protected]>
Many thanks, Anil!
If your Ack apply to this patch only or to all three 'bfa' patches in this series?
Thanks!
Quoted 67 lines
-----Original Message-----
From: Alexander Gordeev [mailto:[email protected]]
Sent: 11 August 2014 13:09
To: linux-kernel
Cc: Anil Gurumurthy; Vijaya Mohan Guvva; linux-scsi; linux-pci; Anil Gurumurthy; Sudarsana Kalluru
Subject: Re: [PATCH v2 RESEND 04/23] bfa: Usepci_enable_msix_exact()instead ofpci_enable_msix()Quoted 5 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.Anil, Sudarsana,
Could you please review bfa patches in this series?
Thanks!
Quoted 45 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Anil Gurumurthy <[email protected]>Cc Vijaya Mohan Guvva <[email protected]>Acked-by Anil Gurumurthy <[email protected]>--- drivers/scsi/bfa/bfad.c | 20 ++++++-------------- 1 files changed, 6 insertions(+), 14 deletions(-)drivers/scsi/bfa/bfad.c index renamed from drivers/scsi/bfa/bfad.c +0
-0c18279f..e90a374 100644
drivers/scsi/bfa/bfad.c +5
-13@@ -1234,29 +1234,21 @@ 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); + error =pci_enable_msix_exact (bfad->pcidev, + msix_entries, bfad->nvec);/* In CT1 & CT2, try to allocate just one vector */ -if (error >0 &&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: "
Quoted 8 lines
Quoted 8 lines
drivers/scsi/bfa/bfad.c +1
-2-"pci_enable_msix failed (%d), " +"pci_enable_msix_exact failed (%d), " "use line based.\n" , bfad->inst_no, error); goto line_based; --1.7.7.6
--
Regards,
Alexander Gordeev
[email protected]
PATCH RESEND v2 5/23 csiostor: Remove superfluous call to pci_disable_msix()
In reply to Alexander GordeevThere is no need to call pci_disable_msix() in case the previous call to pci_enable_msix() failed
--- drivers/scsi/csiostor/csio_isr.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-)
drivers/scsi/csiostor/csio_isr.c +1 -3
@@ -529,10 +529,8 @@ csio_enable_msix(struct csio_hw *hw)csio_reduce_sqsets (hw, cnt - extra); } }else { -if (rv >0 ) { -pci_disable_msix (hw->pdev); +if (rv >0 )csio_info (hw,"Not using MSI-X, remainder:%d\n" , rv); - }kfree (entries);return -ENOMEM ;
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 05/23] csiostor: Remove superfluous call to pci_disable_msix()
Quoted 2 lines · Alexander Gordeev
There is no need to call
pci_disable_msix()in case the previous call topci_enable_msix()failed
Hi Naresh, Arvind,
Could you please review csiostor patches in this series?
Thanks!
Quoted 28 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Naresh Kumar Inna <[email protected]>Cc Arvind Bhushan <[email protected]>--- drivers/scsi/csiostor/csio_isr.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-)drivers/scsi/csiostor/csio_isr.c +1
-3@@ -529,10 +529,8 @@ csio_enable_msix(struct csio_hw *hw)csio_reduce_sqsets (hw, cnt - extra); } }else { -if (rv >0 ) { -pci_disable_msix (hw->pdev); +if (rv >0 )csio_info (hw,"Not using MSI-X, remainder:%d\n" , rv); - }kfree (entries);return -ENOMEM ;Signature · 1 line
1.7.7.6
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
PATCH RESEND v2 6/23 csiostor: 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
--- drivers/scsi/csiostor/csio_hw.h | 2 +- drivers/scsi/csiostor/csio_isr.c | 22 +++++++++------------- 2 files changed, 10 insertions(+), 14 deletions(-)
drivers/scsi/csiostor/csio_hw.h +1 -1
@@ -94,7 +94,7 @@ enum { };struct csio_msix_entries { -unsigned short vector;/* Vector assigned by pci_enable_msix */ +unsigned short vector;/* Assigned MSI-X vector */ void *dev_id;/* Priv object associated w/ this msix*/ char desc[24 ];/* Description of this vector */ };
drivers/scsi/csiostor/csio_isr.c +9 -13
@@ -499,7 +499,7 @@ csio_reduce_sqsets(struct csio_hw *hw, int cnt)static int csio_enable_msix (struct csio_hw *hw) { -int rv, i, j, k, n, min, cnt; +int i, j, k, n, min, cnt;struct csio_msix_entries *entryp;struct msix_entry *entries;int extra =CSIO_EXTRA_VECS ;
@@ -521,19 +521,15 @@ csio_enable_msix(struct csio_hw *hw)csio_dbg (hw,"FW supp #niq:%d, trying %d msix's\n" , hw->cfg_niq, cnt); -while ((rv =pci_enable_msix (hw->pdev, entries, cnt)) >= min) - cnt = rv; -if (!rv) { -if (cnt < (hw->num_sqsets + extra)) { -csio_dbg (hw,"Reducing sqsets to %d\n" , cnt - extra); -csio_reduce_sqsets (hw, cnt - extra); - } - }else { -if (rv >0 ) -csio_info (hw,"Not using MSI-X, remainder:%d\n" , rv); - + cnt =pci_enable_msix_range (hw->pdev, entries, min, cnt); +if (cnt <0 ) {kfree (entries); -return -ENOMEM ; +return cnt; + } + +if (cnt < (hw->num_sqsets + extra)) { +csio_dbg (hw,"Reducing sqsets to %d\n" , cnt - extra); +csio_reduce_sqsets (hw, cnt - extra); }/* Save off vectors */
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 06/23] csiostor: Use pci_enable_msix_range() instead of pci_enable_msix()
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Christoph,
This driver does not have maintainers in Chelsio anymore.
Quoted 67 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Naresh Kumar Inna <[email protected]>Cc Arvind Bhushan <[email protected]>--- drivers/scsi/csiostor/csio_hw.h | 2 +- drivers/scsi/csiostor/csio_isr.c | 22 +++++++++------------- 2 files changed, 10 insertions(+), 14 deletions(-)drivers/scsi/csiostor/csio_hw.h +1
-1@@ -94,7 +94,7 @@ enum { };struct csio_msix_entries { -unsigned short vector;/* Vector assigned by pci_enable_msix */ +unsigned short vector;/* Assigned MSI-X vector */ void *dev_id;/* Priv object associated w/ this msix*/ char desc[24 ];/* Description of this vector */ };drivers/scsi/csiostor/csio_isr.c +9
-13@@ -499,7 +499,7 @@ csio_reduce_sqsets(struct csio_hw *hw, int cnt)static int csio_enable_msix (struct csio_hw *hw) { -int rv, i, j, k, n, min, cnt; +int i, j, k, n, min, cnt;struct csio_msix_entries *entryp;struct msix_entry *entries;int extra =CSIO_EXTRA_VECS ;@@ -521,19 +521,15 @@ csio_enable_msix(struct csio_hw *hw)csio_dbg (hw,"FW supp #niq:%d, trying %d msix's\n" , hw->cfg_niq, cnt); -while ((rv =pci_enable_msix (hw->pdev, entries, cnt)) >= min) - cnt = rv; -if (!rv) { -if (cnt < (hw->num_sqsets + extra)) { -csio_dbg (hw,"Reducing sqsets to %d\n" , cnt - extra); -csio_reduce_sqsets (hw, cnt - extra); - } - }else { -if (rv >0 ) -csio_info (hw,"Not using MSI-X, remainder:%d\n" , rv); - + cnt =pci_enable_msix_range (hw->pdev, entries, min, cnt); +if (cnt <0 ) {kfree (entries); -return -ENOMEM ; +return cnt; + } + +if (cnt < (hw->num_sqsets + extra)) { +csio_dbg (hw,"Reducing sqsets to %d\n" , cnt - extra); +csio_reduce_sqsets (hw, cnt - extra); }/* Save off vectors */ Signature · 1 line
1.7.7.6
PATCH RESEND v2 7/23 fnic: Use pci_enable_msix_exact() 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
--- drivers/scsi/fnic/fnic_isr.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
drivers/scsi/fnic/fnic_isr.c +2 -2
@@ -257,8 +257,8 @@ 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, - n + m + o +1 )) { +if (!pci_enable_msix_exact (fnic->pdev, fnic->msix_entry, + n + m + o +1 )) { fnic->rq_count = n; fnic->raw_wq_count = m; fnic->wq_copy_count = o;
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 07/23] fnic: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Hi Hiral, Suma, Brian,
Could you please review this patch?
Thanks!
Quoted 28 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Hiral Patel <[email protected]>Cc Suma Ramars <[email protected]>Cc Brian Uchino <[email protected]>--- drivers/scsi/fnic/fnic_isr.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)drivers/scsi/fnic/fnic_isr.c +2
-2@@ -257,8 +257,8 @@ 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, - n + m + o +1 )) { +if (!pci_enable_msix_exact (fnic->pdev, fnic->msix_entry, + n + m + o +1 )) { fnic->rq_count = n; fnic->raw_wq_count = m; fnic->wq_copy_count = o;Signature · 1 line
1.7.7.6
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Suma Ramars (sramars)
Acked-byRe: [PATCH v2 RESEND 07/23] fnic: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 47 lines · Alexander Gordeev
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.Hi Hiral, Suma, Brian,
Could you please review this patch?
Thanks!
Quoted 28 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Hiral Patel <[email protected]>Cc Suma Ramars <[email protected]>Cc Brian Uchino <[email protected]>--- drivers/scsi/fnic/fnic_isr.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)drivers/scsi/fnic/fnic_isr.c +2
-2@@ -257,8 +257,8 @@ 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, - n + m + o +1 )) { +if (!pci_enable_msix_exact (fnic->pdev, fnic->msix_entry, + n + m + o +1 )) { fnic->rq_count = n; fnic->raw_wq_count = m; fnic->wq_copy_count = o;Signature · 1 line
1.7.7.6Signature · 3 lines
Regards, Alexander Gordeev [email protected]
PATCH RESEND v2 8/23 hpsa: Fallback to MSI rather than to INTx if MSI-X failed
In reply to Alexander GordeevCurrently the driver falls back to INTx mode when MSI-X initialization failed. This is a suboptimal behaviour for chips that also support MSI. This update changes that behaviour and falls back to MSI mode in case MSI-X mode initialization failed.
--- drivers/scsi/hpsa.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
drivers/scsi/hpsa.c +0 -1
@@ -6177,7 +6177,6 @@ static void hpsa_interrupt_mode(struct ctlr_info *h)dev_warn (&h->pdev->dev,"MSI-X init failed %d\n" , err); h->msix_vector =0 ; - goto default_int_mode; } }if (pci_find_capability (h->pdev,PCI_CAP_ID_MSI )) {
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 08/23] hpsa: Fallback to MSI rather than to INTx if MSI-X failed
Quoted 5 lines · Alexander Gordeev
Currently the driver falls back to INTx mode when MSI-X initialization failed. This is a suboptimal behaviour for chips that also support MSI. This update changes that behaviour and falls back to MSI mode in case MSI-X mode initialization failed.
Hi Stephen,
Could you please reveiew hpsa patches in this series?
Thanks!
Quoted 24 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc "Stephen M. Cameron" <[email protected]>--- drivers/scsi/hpsa.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)drivers/scsi/hpsa.c +0
-1@@ -6177,7 +6177,6 @@ static void hpsa_interrupt_mode(struct ctlr_info *h)dev_warn (&h->pdev->dev,"MSI-X init failed %d\n" , err); h->msix_vector =0 ; - goto default_int_mode; } }if (pci_find_capability (h->pdev,PCI_CAP_ID_MSI )) {Signature · 1 line
1.7.7.6
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Re: [PATCH v2 RESEND 08/23] hpsa: Fallback to MSI rather than to INTx if MSI-X failed
Quoted 10 lines · Alexander Gordeev
Quoted 5 lines · Alexander Gordeev
Currently the driver falls back to INTx mode when MSI-X initialization failed. This is a suboptimal behaviour for chips that also support MSI. This update changes that behaviour and falls back to MSI mode in case MSI-X mode initialization failed.
Hi Stephen,
Could you please reveiew hpsa patches in this series?
Stephen?
Quoted 31 lines
Thanks!
Quoted 24 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc "Stephen M. Cameron" <[email protected]>--- drivers/scsi/hpsa.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)drivers/scsi/hpsa.c +0
-1@@ -6177,7 +6177,6 @@ static void hpsa_interrupt_mode(struct ctlr_info *h)dev_warn (&h->pdev->dev,"MSI-X init failed %d\n" , err); h->msix_vector =0 ; - goto default_int_mode; } }if (pci_find_capability (h->pdev,PCI_CAP_ID_MSI )) {Signature · 1 line
1.7.7.6Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Re: [PATCH v2 RESEND 08/23] hpsa: Fallback to MSI rather than to INTx if MSI-X failed
In reply to Alexander GordeevQuoted 29 lines · Alexander Gordeev
Currently the driver falls back to INTx mode when MSI-X initialization failed. This is a suboptimal behaviour for chips that also support MSI. This update changes that behaviour and falls back to MSI mode in case MSI-X mode initialization failed.
Signed-off-by Alexander Gordeev <[email protected]>Cc "Stephen M. Cameron" <[email protected]>--- drivers/scsi/hpsa.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)drivers/scsi/hpsa.c +0
-1@@ -6177,7 +6177,6 @@ static void hpsa_interrupt_mode(struct ctlr_info *h)dev_warn (&h->pdev->dev,"MSI-X init failed %d\n" , err); h->msix_vector =0 ; - goto default_int_mode; } }if (pci_find_capability (h->pdev,PCI_CAP_ID_MSI )) {Signature · 1 line
1.7.7.6
Ack.
Sorry for the slow reply, this got lost in the tornadic maelstrom I call my inbox.
I also tested this with a Smart Array P420, P420i, and P430 in the system by ifdef'ing out the code for MSI-X and setting h->msix_vector = 0, to force it down the MSI path, and that all appears to work.
-- steve
Re: [PATCH v2 RESEND 08/23] hpsa: Fallback to MSI rather than to INTx if MSI-X failed
Quoted 33 lines · On Wed, Aug 13, 2014 at 11:04:54AM -0500, [email protected] wrote:
Quoted 29 lines · Alexander Gordeev
Currently the driver falls back to INTx mode when MSI-X initialization failed. This is a suboptimal behaviour for chips that also support MSI. This update changes that behaviour and falls back to MSI mode in case MSI-X mode initialization failed.
Signed-off-by Alexander Gordeev <[email protected]>Cc "Stephen M. Cameron" <[email protected]>--- drivers/scsi/hpsa.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)drivers/scsi/hpsa.c +0
-1@@ -6177,7 +6177,6 @@ static void hpsa_interrupt_mode(struct ctlr_info *h)dev_warn (&h->pdev->dev,"MSI-X init failed %d\n" , err); h->msix_vector =0 ; - goto default_int_mode; } }if (pci_find_capability (h->pdev,PCI_CAP_ID_MSI )) {Signature · 1 line
1.7.7.6Ack.
Quoted 7 lines
Sorry for the slow reply, this got lost in the tornadic maelstrom I call my inbox.
I also tested this with a Smart Array P420, P420i, and P430 in the system by ifdef'ing out the code for MSI-X and setting
h->msix_vector= 0, to force it down the MSI path, and that all appears to work.
Thank you, Steve!
If your Ack apply to 08/23 or to 09/23 as well?
Quoted 2 lines
-- steve
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
PATCH RESEND v2 9/23 hpsa: 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
--- drivers/scsi/hpsa.c | 27 ++++++++++++--------------- 1 files changed, 12 insertions(+), 15 deletions(-)
drivers/scsi/hpsa.c +12 -15
@@ -6160,25 +6160,22 @@ static void hpsa_interrupt_mode(struct ctlr_info *h) h->msix_vector =MAX_REPLY_QUEUES ;if (h->msix_vector >num_online_cpus ()) h->msix_vector =num_online_cpus (); - err =pci_enable_msix (h->pdev, hpsa_msix_entries, - h->msix_vector); -if (err >0 ) { + err =pci_enable_msix_range (h->pdev, hpsa_msix_entries, +1 , h->msix_vector); +if (err <0 ) { +dev_warn (&h->pdev->dev,"MSI-X init failed %d\n" , err); + h->msix_vector =0 ; + goto single_msi_mode; + }else if (err < h->msix_vector) {dev_warn (&h->pdev->dev,"only %d MSI-X vectors " "available\n" , err); - h->msix_vector = err; - err =pci_enable_msix (h->pdev, hpsa_msix_entries, - h->msix_vector); - } -if (!err) { -for (i =0 ; i < h->msix_vector; i++) - h->intr[i] = hpsa_msix_entries[i].vector; -return ; - }else { -dev_warn (&h->pdev->dev,"MSI-X init failed %d\n" , - err); - h->msix_vector =0 ; } + h->msix_vector = err; +for (i =0 ; i < h->msix_vector; i++) + h->intr[i] = hpsa_msix_entries[i].vector; +return ; } +single_msi_mode:if (pci_find_capability (h->pdev,PCI_CAP_ID_MSI )) {dev_info (&h->pdev->dev,"MSI\n" );if (!pci_enable_msi (h->pdev))
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 09/23] hpsa: Use pci_enable_msix_range() instead of pci_enable_msix()
Quoted 60 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.Cc "Stephen M. Cameron" <[email protected]>Signed-off-by Alexander Gordeev <[email protected]>--- drivers/scsi/hpsa.c | 27 ++++++++++++--------------- 1 files changed, 12 insertions(+), 15 deletions(-)drivers/scsi/hpsa.c +12
-15@@ -6160,25 +6160,22 @@ static void hpsa_interrupt_mode(struct ctlr_info *h) h->msix_vector =MAX_REPLY_QUEUES ;if (h->msix_vector >num_online_cpus ()) h->msix_vector =num_online_cpus (); - err =pci_enable_msix (h->pdev, hpsa_msix_entries, - h->msix_vector); -if (err >0 ) { + err =pci_enable_msix_range (h->pdev, hpsa_msix_entries, +1 , h->msix_vector); +if (err <0 ) { +dev_warn (&h->pdev->dev,"MSI-X init failed %d\n" , err); + h->msix_vector =0 ; + goto single_msi_mode; + }else if (err < h->msix_vector) {dev_warn (&h->pdev->dev,"only %d MSI-X vectors " "available\n" , err); - h->msix_vector = err; - err =pci_enable_msix (h->pdev, hpsa_msix_entries, - h->msix_vector); - } -if (!err) { -for (i =0 ; i < h->msix_vector; i++) - h->intr[i] = hpsa_msix_entries[i].vector; -return ; - }else { -dev_warn (&h->pdev->dev,"MSI-X init failed %d\n" , - err); - h->msix_vector =0 ; } + h->msix_vector = err; +for (i =0 ; i < h->msix_vector; i++) + h->intr[i] = hpsa_msix_entries[i].vector; +return ; } +single_msi_mode:if (pci_find_capability (h->pdev,PCI_CAP_ID_MSI )) {dev_info (&h->pdev->dev,"MSI\n" );if (!pci_enable_msi (h->pdev))Signature · 1 line
1.7.7.6
Ack.
I had previously acked an older, but seemingly semantically identical patch. Was requested to ack this one as well.
-- steve
PATCH RESEND v2 10/23 isci: Use pci_enable_msix_exact() 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
--- drivers/scsi/isci/init.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/scsi/isci/init.c +1 -1
@@ -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;
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 10/23] isci: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Artur, Dave,
Could you please review isci patches in this series?
Thanks!
Quoted 28 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Lukasz Dorau <[email protected]>Cc Maciej Patelczyk <[email protected]>Cc Dave Jiang <[email protected]>--- drivers/scsi/isci/init.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)drivers/scsi/isci/init.c +1
-1@@ -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;Signature · 1 line
1.7.7.6
A message that is not in the archive (sent off-list or not yet received): [email protected]
Jiang, Dave
Acked-byRE: [PATCH v2 RESEND 10/23] isci: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 16 lines
-----Original Message-----
From: Alexander Gordeev [mailto:[email protected]]
Sent: Monday, August 11, 2014 12:57 AM
To: intel-linux-scu; Paszkiewicz, Artur; Jiang, Dave
Cc: Dorau, Lukasz; Patelczyk, Maciej; intel-linux-scu; linux- [email protected]; [email protected]; Christoph Hellwig
Subject: Re: [PATCH v2 RESEND 10/23] isci: Usepci_enable_msix_exact()instead ofpci_enable_msix()Quoted 5 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Quoted 5 lines
Artur, Dave,
Could you please review isci patches in this series?
Thanks!
Sorry. For some reason my spam filter decided to pick this up.
Quoted 30 lines
drivers/scsi/isci/init.c static int isci_setup_interrupts(struct pci_dev
Quoted 17 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Lukasz Dorau <[email protected]>Cc Maciej Patelczyk <[email protected]>Cc Dave Jiang <[email protected]>--- drivers/scsi/isci/init.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)drivers/scsi/isci/init.c index renamed from drivers/scsi/isci/init.c +0
-0695b34e..4198e45 100644
drivers/scsi/isci/init.c +0
-0@@ -356,7 +356,7 @@ static int isci_setup_interrupts(struct pci_dev*pdev)
drivers/scsi/isci/init.c static int isci_setup_interrupts(struct pci_dev *pdev)
Quoted 5 lines
drivers/scsi/isci/init.c +1
-1for (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);Quoted 6 lines
drivers/scsi/isci/init.c +0
-1if (err) goto intx; --1.7.7.6
PATCH RESEND v2 11/23 lpfc: Remove superfluous call to pci_disable_msix()
In reply to Alexander GordeevThere is no need to call pci_disable_msix() in case the previous call to pci_enable_msix() failed
--- drivers/scsi/lpfc/lpfc_init.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-)
drivers/scsi/lpfc/lpfc_init.c +6 -3
@@ -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,
@@ -8320,6 +8320,8 @@ irq_fail_out: msi_fail_out:/* Unconfigure MSI-X capability structure */ pci_disable_msix (phba->pcidev); + +vec_fail_out:return rc; }
@@ -8812,7 +8814,7 @@ enable_msix_vectors: }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 */
@@ -8875,9 +8877,10 @@ cfg_fail_out: &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; }
Signature · 1 line
1.7.7.6
PATCH RESEND v2 12/23 lpfc: 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
--- drivers/scsi/lpfc/lpfc_init.c | 38 +++++++++++++++++--------------------- 1 files changed, 17 insertions(+), 21 deletions(-)
drivers/scsi/lpfc/lpfc_init.c +17 -21
@@ -8211,9 +8211,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
@@ -8237,8 +8237,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, +ARRAY_SIZE (phba->msix_entries));if (rc) {lpfc_printf_log (phba,KERN_INFO ,LOG_INIT ,"0420 PCI enable MSI-X failed (%d)\n" , rc);
@@ -8775,15 +8775,13 @@ out:* @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 +* 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
@@ -8805,18 +8803,16 @@ 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++) lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 12/23] lpfc: Use pci_enable_msix_range() instead of pci_enable_msix()
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Hi James,
Could you please review this patch?
Thanks!
Quoted 86 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc James Smart <[email protected]>--- drivers/scsi/lpfc/lpfc_init.c | 38 +++++++++++++++++--------------------- 1 files changed, 17 insertions(+), 21 deletions(-)drivers/scsi/lpfc/lpfc_init.c +17
-21@@ -8211,9 +8211,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 @@ -8237,8 +8237,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, +ARRAY_SIZE (phba->msix_entries));if (rc) {lpfc_printf_log (phba,KERN_INFO ,LOG_INIT ,"0420 PCI enable MSI-X failed (%d)\n" , rc);@@ -8775,15 +8775,13 @@ out:* @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 +* 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 @@ -8805,18 +8803,16 @@ 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++) lpfc_printf_log(phba, KERN_INFO, LOG_INIT,Signature · 1 line
1.7.7.6
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Re: [PATCH v2 RESEND 12/23] lpfc: Use pci_enable_msix_range() instead of pci_enable_msix()
Quoted 11 lines · Alexander Gordeev
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.Hi James,
Could you please review this patch?
James?
Quoted 93 lines
Thanks!
Quoted 86 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc James Smart <[email protected]>--- drivers/scsi/lpfc/lpfc_init.c | 38 +++++++++++++++++--------------------- 1 files changed, 17 insertions(+), 21 deletions(-)drivers/scsi/lpfc/lpfc_init.c +17
-21@@ -8211,9 +8211,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 @@ -8237,8 +8237,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, +ARRAY_SIZE (phba->msix_entries));if (rc) {lpfc_printf_log (phba,KERN_INFO ,LOG_INIT ,"0420 PCI enable MSI-X failed (%d)\n" , rc);@@ -8775,15 +8775,13 @@ out:* @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 +* 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 @@ -8805,18 +8803,16 @@ 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++) lpfc_printf_log(phba, KERN_INFO, LOG_INIT,Signature · 1 line
1.7.7.6Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Re: [PATCH v2 RESEND 12/23] lpfc: Use pci_enable_msix_range() instead of pci_enable_msix()
Alexander,
I haven't looked too deeply, but it's clear it doesn't jive with what we've discussed in the past. Your original patches missed several other similar sections for revision. I had sent a revised set of patches.
I was also unclear as to the merge path the patches were taking, as it was mod'ing areas that have already changed in the scsi misc tree, but the misc tree didn' have the pci mods. I take it this is heading to Christoph's tree ? and that it has picked up the pci mods ?
-- james s
Quoted 106 lines · Alexander Gordeev
Quoted 10 lines · Alexander Gordeev
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.Hi James,
Could you please review this patch?
James?
Quoted 92 lines
Thanks!
Quoted 86 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc James Smart <[email protected]>--- drivers/scsi/lpfc/lpfc_init.c | 38 +++++++++++++++++--------------------- 1 files changed, 17 insertions(+), 21 deletions(-)drivers/scsi/lpfc/lpfc_init.c +17
-21@@ -8211,9 +8211,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 @@ -8237,8 +8237,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, +ARRAY_SIZE (phba->msix_entries));if (rc) {lpfc_printf_log (phba,KERN_INFO ,LOG_INIT ,"0420 PCI enable MSI-X failed (%d)\n" , rc);@@ -8775,15 +8775,13 @@ out:* @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 +* 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 @@ -8805,18 +8803,16 @@ 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++) lpfc_printf_log(phba, KERN_INFO, LOG_INIT,Signature · 1 line
1.7.7.6Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Re: [PATCH v2 RESEND 12/23] lpfc: Use pci_enable_msix_range() instead of pci_enable_msix()
Quoted 10 lines · James Smart
Alexander,
I haven't looked too deeply, but it's clear it doesn't jive with what we've discussed in the past. Your original patches missed several other similar sections for revision. I had sent a revised set of patches.
I was also unclear as to the merge path the patches were taking, as it was mod'ing areas that have already changed in the scsi misc tree, but the misc tree didn' have the pci mods. I take it this is heading to Christoph's tree ? and that it has picked up the pci mods ?
James,
I lost the context and not sure what PCI modifications you are referring :( I will send a patch that combines your version shortly.
Thanks!
Quoted 1 line
-- james s
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
PATCH v3 12/23 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.
--- drivers/scsi/lpfc/lpfc_init.c | 39 +++++++++++++++++---------------------- 1 file changed, 17 insertions(+), 22 deletions(-)
drivers/scsi/lpfc/lpfc_init.c +17 -22
@@ -8211,9 +8211,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
@@ -8237,8 +8237,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);
@@ -8775,16 +8775,14 @@ out:* @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
@@ -8805,17 +8803,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++)
Signature · 6 lines
1.9.3 -- Regards, Alexander Gordeev [email protected]
PATCH RESEND v2 13/23 megaraid: Fail resume if MSI-X re-initialization failed
In reply to Alexander GordeevCurrently the driver fails to analize MSI-X re-enablement status on resuming and always assumes the success. This update checks the MSI-X initialization result and fails to resume if MSI-Xs re-enablement failed.
--- drivers/scsi/megaraid/megaraid_sas_base.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-)
drivers/scsi/megaraid/megaraid_sas_base.c +5 -3
@@ -5134,9 +5134,10 @@ megasas_resume(struct pci_dev *pdev) goto fail_ready_state;/* Now re-enable MSI-X */ -if (instance->msix_vectors) -pci_enable_msix (instance->pdev, instance->msixentry, - instance->msix_vectors); +if (instance->msix_vectors && +pci_enable_msix (instance->pdev, instance->msixentry, + instance->msix_vectors)) + goto fail_reenable_msix;switch (instance->pdev->device) {case PCI_DEVICE_ID_LSI_FUSION :
@@ -5245,6 +5246,7 @@ fail_init_mfi: fail_set_dma_mask: fail_ready_state: +fail_reenable_msix:pci_disable_device (pdev);
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 13/23] megaraid: Fail resume if MSI-X re-initialization failed
Quoted 4 lines · Alexander Gordeev
Currently the driver fails to analize MSI-X re-enablement status on resuming and always assumes the success. This update checks the MSI-X initialization result and fails to resume if MSI-Xs re-enablement failed.
Hi Neela,
Could you please review megaraid patches in this series?
Thanks!
Quoted 34 lines
Signed-off-by Alexander Gordeev <[email protected]>--- drivers/scsi/megaraid/megaraid_sas_base.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-)drivers/scsi/megaraid/megaraid_sas_base.c +5
-3@@ -5134,9 +5134,10 @@ megasas_resume(struct pci_dev *pdev) goto fail_ready_state;/* Now re-enable MSI-X */ -if (instance->msix_vectors) -pci_enable_msix (instance->pdev, instance->msixentry, - instance->msix_vectors); +if (instance->msix_vectors && +pci_enable_msix (instance->pdev, instance->msixentry, + instance->msix_vectors)) + goto fail_reenable_msix;switch (instance->pdev->device) {case PCI_DEVICE_ID_LSI_FUSION :@@ -5245,6 +5246,7 @@ fail_init_mfi: fail_set_dma_mask: fail_ready_state: +fail_reenable_msix:pci_disable_device (pdev);Signature · 1 line
1.7.7.6
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Kashyap Desai
Acked-byRE: [PATCH v2 RESEND 13/23] megaraid: Fail resume if MSI-X re-initialization failed
Quoted 13 lines
-----Original Message-----
From: Alexander Gordeev [mailto:[email protected]]
Sent: Saturday, July 26, 2014 1:54 PM
To: [email protected]; Neela Syam Kolli
Subject: Re: [PATCH v2 RESEND 13/23] megaraid: Fail resume if MSI-X re- initialization failedQuoted 4 lines · Alexander Gordeev
Currently the driver fails to analize MSI-X re-enablement status on resuming and always assumes the success. This update checks the MSI-X initialization result and fails to resume if MSI-Xs re-enablement failed.
Quoted 5 lines
Hi Neela,
Could you please review megaraid patches in this series?
Thanks!
Please consider this patch Acked by Me.
Quoted 41 lines
Quoted 34 lines
Signed-off-by Alexander Gordeev <[email protected]>--- drivers/scsi/megaraid/megaraid_sas_base.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-)drivers/scsi/megaraid/megaraid_sas_base.c +5
-4@@ -5134,9 +5134,10 @@ megasas_resume(struct pci_dev *pdev) goto fail_ready_state;/* Now re-enable MSI-X */ -if (instance->msix_vectors) -pci_enable_msix (instance->pdev, instance->msixentry, - instance->msix_vectors); +if (instance->msix_vectors && +pci_enable_msix (instance->pdev, instance->msixentry, + instance->msix_vectors)) + goto fail_reenable_msix;switch (instance->pdev->device) {case PCI_DEVICE_ID_LSI_FUSION :@@ -5245,6 +5246,7 @@ fail_init_mfi: fail_set_dma_mask: fail_ready_state: +fail_reenable_msix:pci_disable_device (pdev); --Quoted 2 lines
1.7.7.6
--
Regards,
Alexander Gordeev
[email protected]
Re: [PATCH v2 RESEND 13/23] megaraid: Fail resume if MSI-X re-initialization failed
Quoted 13 lines · Kashyap Desai
Quoted 13 lines
-----Original Message-----
From: Alexander Gordeev [mailto:[email protected]]
Sent: Saturday, July 26, 2014 1:54 PM
To: [email protected]; Neela Syam Kolli
Subject: Re: [PATCH v2 RESEND 13/23] megaraid: Fail resume if MSI-X re- initialization failedQuoted 4 lines · Alexander Gordeev
Currently the driver fails to analize MSI-X re-enablement status on resuming and always assumes the success. This update checks the MSI-X initialization result and fails to resume if MSI-Xs re-enablement failed.
Quoted 8 lines
Quoted 5 lines
Hi Neela,
Could you please review megaraid patches in this series?
Thanks!
Please consider this patch Acked by Me.
Acked-by Kashyap Desai <[email protected]>
Christoph,
I guess, this patch could be picked?
Quoted 41 lines
Quoted 41 lines
Quoted 34 lines
Signed-off-by Alexander Gordeev <[email protected]>--- drivers/scsi/megaraid/megaraid_sas_base.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-)drivers/scsi/megaraid/megaraid_sas_base.c +5
-4@@ -5134,9 +5134,10 @@ megasas_resume(struct pci_dev *pdev) goto fail_ready_state;/* Now re-enable MSI-X */ -if (instance->msix_vectors) -pci_enable_msix (instance->pdev, instance->msixentry, - instance->msix_vectors); +if (instance->msix_vectors && +pci_enable_msix (instance->pdev, instance->msixentry, + instance->msix_vectors)) + goto fail_reenable_msix;switch (instance->pdev->device) {case PCI_DEVICE_ID_LSI_FUSION :@@ -5245,6 +5246,7 @@ fail_init_mfi: fail_set_dma_mask: fail_ready_state: +fail_reenable_msix:pci_disable_device (pdev); --Quoted 2 lines
1.7.7.6
--
Regards,
Alexander Gordeev
[email protected]
PATCH RESEND v2 14/23 megaraid: 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
--- drivers/scsi/megaraid/megaraid_sas_base.c | 20 +++++++------------- 1 files changed, 7 insertions(+), 13 deletions(-)
drivers/scsi/megaraid/megaraid_sas_base.c +7 -13
@@ -4105,17 +4105,11 @@ static int megasas_init_fw(struct megasas_instance *instance) (unsigned int)num_online_cpus());for (i =0 ; i < instance->msix_vectors; i++) instance->msixentry[i].entry = i; - i =pci_enable_msix (instance->pdev, instance->msixentry, - instance->msix_vectors); -if (i >=0 ) { -if (i) { -if (!pci_enable_msix (instance->pdev, - instance->msixentry, i)) - instance->msix_vectors = i; -else - instance->msix_vectors =0 ; - } - }else + i =pci_enable_msix_range (instance->pdev, instance->msixentry, +1 , instance->msix_vectors); +if (i) + instance->msix_vectors = i; +else instance->msix_vectors =0 ; dev_info(&instance->pdev->dev, "[scsi%d]: FW supports"
@@ -5135,8 +5129,8 @@ megasas_resume(struct pci_dev *pdev)/* Now re-enable MSI-X */ if (instance->msix_vectors && -pci_enable_msix (instance->pdev, instance->msixentry, - instance->msix_vectors)) +pci_enable_msix_exact (instance->pdev, instance->msixentry, + instance->msix_vectors)) goto fail_reenable_msix;switch (instance->pdev->device) {
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 14/23] megaraid: Use pci_enable_msix_range() instead of pci_enable_msix()
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Kashyap, Neela,
Could you please reveiw this patch?
Thanks!
Quoted 49 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Neela Syam Kolli <[email protected]>--- drivers/scsi/megaraid/megaraid_sas_base.c | 20 +++++++------------- 1 files changed, 7 insertions(+), 13 deletions(-)drivers/scsi/megaraid/megaraid_sas_base.c +7
-13@@ -4105,17 +4105,11 @@ static int megasas_init_fw(struct megasas_instance *instance) (unsigned int)num_online_cpus());for (i =0 ; i < instance->msix_vectors; i++) instance->msixentry[i].entry = i; - i =pci_enable_msix (instance->pdev, instance->msixentry, - instance->msix_vectors); -if (i >=0 ) { -if (i) { -if (!pci_enable_msix (instance->pdev, - instance->msixentry, i)) - instance->msix_vectors = i; -else - instance->msix_vectors =0 ; - } - }else + i =pci_enable_msix_range (instance->pdev, instance->msixentry, +1 , instance->msix_vectors); +if (i) + instance->msix_vectors = i; +else instance->msix_vectors =0 ; dev_info(&instance->pdev->dev, "[scsi%d]: FW supports"@@ -5135,8 +5129,8 @@ megasas_resume(struct pci_dev *pdev)/* Now re-enable MSI-X */ if (instance->msix_vectors && -pci_enable_msix (instance->pdev, instance->msixentry, - instance->msix_vectors)) +pci_enable_msix_exact (instance->pdev, instance->msixentry, + instance->msix_vectors)) goto fail_reenable_msix;switch (instance->pdev->device) {Signature · 1 line
1.7.7.6
Kashyap Desai
Acked-byRE: [PATCH v2 RESEND 14/23] megaraid: Use pci_enable_msix_range() instead of pci_enable_msix()
Quoted 16 lines
-----Original Message-----
From: Alexander Gordeev [mailto:[email protected]]
Sent: Monday, August 11, 2014 1:40 PM
To: Kashyap Desai; Neela Syam Kolli
Cc: [email protected]; [email protected]; linux- [email protected]; Christoph Hellwig
Subject: Re: [PATCH v2 RESEND 14/23] megaraid: Usepci_enable_msix_range()instead ofpci_enable_msix()Quoted 5 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Quoted 3 lines
Kashyap, Neela,
Could you please reveiw this patch?
Review this patch. Please consider this patch Acked by Me.
Quoted 11 lines
Thanks!
Quoted 8 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Neela Syam Kolli <[email protected]>--- drivers/scsi/megaraid/megaraid_sas_base.c | 20 +++++++------------- 1 files changed, 7 insertions(+), 13 deletions(-)
Quoted 8 lines
drivers/scsi/megaraid/megaraid_sas_base.c static int megasas_init_fw(struct
Quoted 6 lines
drivers/scsi/megaraid/megaraid_sas_base.c +0
-0@@ -4105,17 +4105,11 @@ static int megasas_init_fw(struct
megasas_instance*instance)Quoted 1 line
drivers/scsi/megaraid/megaraid_sas_base.c +0
-0(unsigned
int)num_online_cpus());
Quoted 8 lines
drivers/scsi/megaraid/megaraid_sas_base.c static int megasas_init_fw(struct megasas_instance *instance)
Quoted 8 lines
drivers/scsi/megaraid/megaraid_sas_base.c +0
-6for (i =0 ; i < instance->msix_vectors; i++) instance->msixentry[i].entry = i; - i =pci_enable_msix (instance->pdev, instance->msixentry, - instance->msix_vectors); - if (i >= 0) { - if (i) { - if (!pci_enable_msix(instance->pdev, - instance->msixentry,
i))
Quoted 28 lines
Quoted 28 lines
drivers/scsi/megaraid/megaraid_sas_base.c +5
-5- instance->msix_vectors = i; - else - instance->msix_vectors = 0; - } - }else + i =pci_enable_msix_range (instance->pdev, instance- msixentry, +1 , instance->msix_vectors); +if (i) + instance->msix_vectors = i; +else instance->msix_vectors =0 ;drivers/scsi/megaraid/megaraid_sas_base.c +2
-3dev_info(&instance->pdev->dev, "[scsi%d]: FW supports"@@ -5135,8 +5129,8 @@ megasas_resume(struct pci_dev *pdev)/* Now re-enable MSI-X */ if (instance->msix_vectors && -pci_enable_msix (instance->pdev, instance->msixentry, - instance->msix_vectors)) +pci_enable_msix_exact (instance->pdev, instance->msixentry, + instance->msix_vectors)) goto fail_reenable_msix;switch (instance->pdev->device) { --1.7.7.6
PATCH RESEND v2 15/23 mpt2sas: Use pci_enable_msix_exact() 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
--- drivers/scsi/mpt2sas/mpt2sas_base.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
drivers/scsi/mpt2sas/mpt2sas_base.c +3 -3
@@ -1432,10 +1432,10 @@ _base_enable_msix(struct MPT2SAS_ADAPTER *ioc)for (i =0 , a = entries; i < ioc->reply_queue_count; i++, a++) a->entry = i; - r =pci_enable_msix (ioc->pdev, entries, ioc->reply_queue_count); + r =pci_enable_msix_exact (ioc->pdev, entries, ioc->reply_queue_count);if (r) { -dfailprintk (ioc,printk (MPT2SAS_INFO_FMT "pci_enable_msix " -"failed (r=%d) !!!\n" , ioc->name, r)); +dfailprintk (ioc,printk (MPT2SAS_INFO_FMT +"pci_enable_msix_exact failed (r=%d) !!!\n" , ioc->name, r));kfree (entries); goto try_ioapic; }
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 15/23] mpt2sas: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Hi Nagalakshmi, Sreekanth,
Could you please review mpt patches in this series?
Thanks!
Quoted 32 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Nagalakshmi Nandigama <[email protected]>Cc Sreekanth Reddy <[email protected]>--- drivers/scsi/mpt2sas/mpt2sas_base.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)drivers/scsi/mpt2sas/mpt2sas_base.c +3
-3@@ -1432,10 +1432,10 @@ _base_enable_msix(struct MPT2SAS_ADAPTER *ioc)for (i =0 , a = entries; i < ioc->reply_queue_count; i++, a++) a->entry = i; - r =pci_enable_msix (ioc->pdev, entries, ioc->reply_queue_count); + r =pci_enable_msix_exact (ioc->pdev, entries, ioc->reply_queue_count);if (r) { -dfailprintk (ioc,printk (MPT2SAS_INFO_FMT "pci_enable_msix " -"failed (r=%d) !!!\n" , ioc->name, r)); +dfailprintk (ioc,printk (MPT2SAS_INFO_FMT +"pci_enable_msix_exact failed (r=%d) !!!\n" , ioc->name, r));kfree (entries); goto try_ioapic; }Signature · 1 line
1.7.7.6
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Re: [PATCH v2 RESEND 15/23] mpt2sas: Use pci_enable_msix_exact() instead of pci_enable_msix()
In reply to Alexander GordeevQuoted 7 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Quoted 7 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Nagalakshmi Nandigama <[email protected]>Cc Sreekanth Reddy <[email protected]>
Looks good
Quoted 22 lines
--- drivers/scsi/mpt2sas/mpt2sas_base.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)drivers/scsi/mpt2sas/mpt2sas_base.c +3
-3@@ -1432,10 +1432,10 @@ _base_enable_msix(struct MPT2SAS_ADAPTER *ioc)for (i =0 , a = entries; i < ioc->reply_queue_count; i++, a++) a->entry = i; - r =pci_enable_msix (ioc->pdev, entries, ioc->reply_queue_count); + r =pci_enable_msix_exact (ioc->pdev, entries, ioc->reply_queue_count);if (r) { -dfailprintk (ioc,printk (MPT2SAS_INFO_FMT "pci_enable_msix " -"failed (r=%d) !!!\n" , ioc->name, r)); +dfailprintk (ioc,printk (MPT2SAS_INFO_FMT +"pci_enable_msix_exact failed (r=%d) !!!\n" , ioc->name, r));kfree (entries); goto try_ioapic; }
PATCH RESEND v2 16/23 mpt3sas: Use pci_enable_msix_exact() 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
--- drivers/scsi/mpt3sas/mpt3sas_base.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
drivers/scsi/mpt3sas/mpt3sas_base.c +2 -2
@@ -1747,10 +1747,10 @@ _base_enable_msix(struct MPT3SAS_ADAPTER *ioc)for (i =0 , a = entries; i < ioc->reply_queue_count; i++, a++) a->entry = i; - r =pci_enable_msix (ioc->pdev, entries, ioc->reply_queue_count); + r =pci_enable_msix_exact (ioc->pdev, entries, ioc->reply_queue_count);if (r) {dfailprintk (ioc,pr_info (MPT3SAS_FMT -"pci_enable_msix failed (r=%d) !!!\n" , +"pci_enable_msix_exact failed (r=%d) !!!\n" , ioc->name, r));kfree (entries); goto try_ioapic;
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 16/23] mpt3sas: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Hi Nagalakshmi, Praveen, Sreekanth and Abhijit,
Could you please review mpt2/mpt3 patches in this series?
Thanks!
Quoted 31 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Nagalakshmi Nandigama <[email protected]>Cc Sreekanth Reddy <[email protected]>--- drivers/scsi/mpt3sas/mpt3sas_base.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)drivers/scsi/mpt3sas/mpt3sas_base.c +2
-2@@ -1747,10 +1747,10 @@ _base_enable_msix(struct MPT3SAS_ADAPTER *ioc)for (i =0 , a = entries; i < ioc->reply_queue_count; i++, a++) a->entry = i; - r =pci_enable_msix (ioc->pdev, entries, ioc->reply_queue_count); + r =pci_enable_msix_exact (ioc->pdev, entries, ioc->reply_queue_count);if (r) {dfailprintk (ioc,pr_info (MPT3SAS_FMT -"pci_enable_msix failed (r=%d) !!!\n" , +"pci_enable_msix_exact failed (r=%d) !!!\n" , ioc->name, r));kfree (entries); goto try_ioapic;Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 16/23] mpt3sas: Use pci_enable_msix_exact() instead of pci_enable_msix()
In reply to Alexander GordeevQuoted 7 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Quoted 7 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Nagalakshmi Nandigama <[email protected]>Cc Sreekanth Reddy <[email protected]>
Looks good
Quoted 21 lines
--- drivers/scsi/mpt3sas/mpt3sas_base.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)drivers/scsi/mpt3sas/mpt3sas_base.c +2
-2@@ -1747,10 +1747,10 @@ _base_enable_msix(struct MPT3SAS_ADAPTER *ioc)for (i =0 , a = entries; i < ioc->reply_queue_count; i++, a++) a->entry = i; - r =pci_enable_msix (ioc->pdev, entries, ioc->reply_queue_count); + r =pci_enable_msix_exact (ioc->pdev, entries, ioc->reply_queue_count);if (r) {dfailprintk (ioc,pr_info (MPT3SAS_FMT -"pci_enable_msix failed (r=%d) !!!\n" , +"pci_enable_msix_exact failed (r=%d) !!!\n" , ioc->name, r));kfree (entries); goto try_ioapic;
PATCH RESEND v2 17/23 pm8001: Fix invalid return when request_irq() failed
In reply to Alexander GordeevWhen a call to request_irq() failed pm8001_setup_msix() still returns the success. This udate fixes the described misbehaviour.
--- drivers/scsi/pm8001/pm8001_init.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)
drivers/scsi/pm8001/pm8001_init.c +3 -2
@@ -744,9 +744,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,
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 17/23] pm8001: Fix invalid return when request_irq() failed
Hi,
patch looks good.
A correction in pm8001_request_irq might be added too to allow the INT-X path when pm8001_setup_msix fails, but that is not part of this fix.
Tomas
Quoted 31 lines · Alexander Gordeev
When a call to
request_irq()failedpm8001_setup_msix()still returns the success. This udate fixes the described misbehaviour.Signed-off-by Alexander Gordeev <[email protected]>Acked-by Jack Wang <[email protected]>--- drivers/scsi/pm8001/pm8001_init.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)drivers/scsi/pm8001/pm8001_init.c +3
-2@@ -744,9 +744,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,
Re: [PATCH v2 RESEND 17/23] pm8001: Fix invalid return when request_irq() failed
Quoted 6 lines · Tomas Henzl
Hi,
patch looks good.A correction in
pm8001_request_irqmight be added too to allow the INT-X path whenpm8001_setup_msixfails, but that is not part of this fix.
There's actually an equivalent fix already in through one of the previous pm8001 updates, so I skipped this one even if it already had an ACK. The following pm8001 applied just fine, though. Take a look, as I've already pushed out the updated drivers branch.
Re: [PATCH v2 RESEND 17/23] pm8001: Fix invalid return when request_irq() failed
Quoted 4 lines · Christoph Hellwig
Quoted 3 lines · Tomas Henzl
Hi,
patch looks good.
Quoted 8 lines
Quoted 3 lines
A correction in
pm8001_request_irqmight be added too to allow the INT-X path whenpm8001_setup_msixfails, but that is not part of this fix.There's actually an equivalent fix already in through one of the previous pm8001 updates, so I skipped this one even if it already had an ACK. The following pm8001 applied just fine, though. Take a look, as I've already pushed out the updated drivers branch.
I'm a bit confused - you were not commenting my text above I think?
I see in drivers-for-3.17 this patch already applied 5607de7
but not yet the next one (18/23) which also has a review, is there another ack needed?
Quoted 5 lines
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2 RESEND 17/23] pm8001: Fix invalid return when request_irq() failed
Quoted 4 lines · Tomas Henzl
I'm a bit confused - you were not commenting my text above I think?
I see in drivers-for-3.17 this patch already applied 5607de7
but not yet the next one (18/23) which also has a review, is there another ack needed?
Looks like I got a bit confused due to a non-applying patch, but it seems like the one that failed was the second one. I'll look at it time permitting, but if someone familar with pm8001 can fix the reject for me that would help me greatly!
Re: [PATCH v2 RESEND 17/23] pm8001: Fix invalid return when request_irq() failed
Quoted 10 lines · Christoph Hellwig
Quoted 4 lines · Tomas Henzl
I'm a bit confused - you were not commenting my text above I think?
I see in drivers-for-3.17 this patch already applied 5607de7
but not yet the next one (18/23) which also has a review, is there another ack needed?Looks like I got a bit confused due to a non-applying patch, but it seems like the one that failed was the second one. I'll look at it time permitting, but if someone familar with pm8001 can fix the reject for me that would help me greatly!
Hmm.. 18/23 applies with a minor fuzz againstgit://git.infradead.org/users/hch/scsi-queue.git drivers-for-3.17
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Re: [PATCH v2 RESEND 17/23] pm8001: Fix invalid return when request_irq() failed
Quoted 2 lines · Alexander Gordeev
Hmm.. 18/23 applies with a minor fuzz against
git://git.infradead.org/users/hch/scsi-queue.gitdrivers-for-3.17
Okay, it was just git-am being goofy then. I'll take care of it.
Re: [PATCH v2 RESEND 17/23] pm8001: Fix invalid return when request_irq() failed
Quoted 6 lines · Christoph Hellwig
Quoted 2 lines · Alexander Gordeev
Hmm.. 18/23 applies with a minor fuzz against
git://git.infradead.org/users/hch/scsi-queue.gitdrivers-for-3.17Okay, it was just git-am being goofy then. I'll take care of it.
Anything I can help with?
PATCH RESEND v2 18/23 pm8001: Use pci_enable_msix_exact() 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
--- drivers/scsi/pm8001/pm8001_init.c | 39 +++++++++++++++++++------------------ 1 files changed, 20 insertions(+), 19 deletions(-)
drivers/scsi/pm8001/pm8001_init.c +20 -19
@@ -729,34 +729,35 @@ static u32 pm8001_setup_msix(struct pm8001_hba_info *pm8001_ha)sizeof (pm8001_ha->msix_entries[0 ]);for (i =0 ; i < max_entry ; i++) pm8001_ha->msix_entries[i].entry = i; - rc =pci_enable_msix (pm8001_ha->pdev, pm8001_ha->msix_entries, + rc =pci_enable_msix_exact (pm8001_ha->pdev, pm8001_ha->msix_entries, number_of_intr); pm8001_ha->number_of_intr = number_of_intr; -if (!rc) { -PM8001_INIT_DBG (pm8001_ha,pm8001_printk ( -"pci_enable_msix request ret:%d no of intr %d\n" , - rc, pm8001_ha->number_of_intr)); +if (rc) +return rc; +PM8001_INIT_DBG (pm8001_ha,pm8001_printk ( +"pci_enable_msix_exact request ret:%d no of intr %d\n" , + rc, pm8001_ha->number_of_intr)); -for (i =0 ; i < number_of_intr; i++) { -snprintf (intr_drvname[i],sizeof (intr_drvname[0 ]), -DRV_NAME "%d" , i); - pm8001_ha->irq_vector[i].irq_id = i; - pm8001_ha->irq_vector[i].drv_inst = pm8001_ha; +for (i =0 ; i < number_of_intr; i++) { +snprintf (intr_drvname[i],sizeof (intr_drvname[0 ]), +DRV_NAME "%d" , i); + pm8001_ha->irq_vector[i].irq_id = i; + pm8001_ha->irq_vector[i].drv_inst = pm8001_ha; - rc =request_irq (pm8001_ha->msix_entries[i].vector, - pm8001_interrupt_handler_msix, flag, - intr_drvname[i], &(pm8001_ha->irq_vector[i])); -if (rc) { -for (j =0 ; j < i; j++) -free_irq ( - pm8001_ha->msix_entries[j].vector, + rc =request_irq (pm8001_ha->msix_entries[i].vector, + pm8001_interrupt_handler_msix, flag, + intr_drvname[i], &(pm8001_ha->irq_vector[i])); +if (rc) { +for (j =0 ; j < i; j++) { +free_irq (pm8001_ha->msix_entries[j].vector, &(pm8001_ha->irq_vector[i])); -pci_disable_msix (pm8001_ha->pdev); -break ; } +pci_disable_msix (pm8001_ha->pdev); +break ; } } + return rc; }#endif
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 18/23] pm8001: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Hi Jack, Lindar,
Could you please review this patch?
Thanks!
Quoted 71 lines
Signed-off-by Alexander Gordeev <[email protected]>--- drivers/scsi/pm8001/pm8001_init.c | 39 +++++++++++++++++++------------------ 1 files changed, 20 insertions(+), 19 deletions(-)drivers/scsi/pm8001/pm8001_init.c +20
-19@@ -729,34 +729,35 @@ static u32 pm8001_setup_msix(struct pm8001_hba_info *pm8001_ha)sizeof (pm8001_ha->msix_entries[0 ]);for (i =0 ; i < max_entry ; i++) pm8001_ha->msix_entries[i].entry = i; - rc =pci_enable_msix (pm8001_ha->pdev, pm8001_ha->msix_entries, + rc =pci_enable_msix_exact (pm8001_ha->pdev, pm8001_ha->msix_entries, number_of_intr); pm8001_ha->number_of_intr = number_of_intr; -if (!rc) { -PM8001_INIT_DBG (pm8001_ha,pm8001_printk ( -"pci_enable_msix request ret:%d no of intr %d\n" , - rc, pm8001_ha->number_of_intr)); +if (rc) +return rc; +PM8001_INIT_DBG (pm8001_ha,pm8001_printk ( +"pci_enable_msix_exact request ret:%d no of intr %d\n" , + rc, pm8001_ha->number_of_intr)); -for (i =0 ; i < number_of_intr; i++) { -snprintf (intr_drvname[i],sizeof (intr_drvname[0 ]), -DRV_NAME "%d" , i); - pm8001_ha->irq_vector[i].irq_id = i; - pm8001_ha->irq_vector[i].drv_inst = pm8001_ha; +for (i =0 ; i < number_of_intr; i++) { +snprintf (intr_drvname[i],sizeof (intr_drvname[0 ]), +DRV_NAME "%d" , i); + pm8001_ha->irq_vector[i].irq_id = i; + pm8001_ha->irq_vector[i].drv_inst = pm8001_ha; - rc =request_irq (pm8001_ha->msix_entries[i].vector, - pm8001_interrupt_handler_msix, flag, - intr_drvname[i], &(pm8001_ha->irq_vector[i])); -if (rc) { -for (j =0 ; j < i; j++) -free_irq ( - pm8001_ha->msix_entries[j].vector, + rc =request_irq (pm8001_ha->msix_entries[i].vector, + pm8001_interrupt_handler_msix, flag, + intr_drvname[i], &(pm8001_ha->irq_vector[i])); +if (rc) { +for (j =0 ; j < i; j++) { +free_irq (pm8001_ha->msix_entries[j].vector, &(pm8001_ha->irq_vector[i])); -pci_disable_msix (pm8001_ha->pdev); -break ; } +pci_disable_msix (pm8001_ha->pdev); +break ; } } + return rc; }#endif Signature · 1 line
1.7.7.6
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Jack Wang
Reviewed-byRe: [PATCH v2 RESEND 18/23] pm8001: Use pci_enable_msix_exact() instead of pci_enable_msix()
Hi Alex,
Looks Ok for me.
Please feel free to add my:
Thanks,
Jack
2014-07-26 10:33 GMT+02:00 Alexander Gordeev <[email protected]>:
Quoted 90 lines · Alexander Gordeev
Quoted 6 lines
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.Hi Jack, Lindar,
Could you please review this patch?
Thanks!
Quoted 69 lines
Signed-off-by Alexander Gordeev <[email protected]>--- drivers/scsi/pm8001/pm8001_init.c | 39 +++++++++++++++++++------------------ 1 files changed, 20 insertions(+), 19 deletions(-)drivers/scsi/pm8001/pm8001_init.c +20
-20@@ -729,34 +729,35 @@ static u32 pm8001_setup_msix(struct pm8001_hba_info *pm8001_ha)sizeof (pm8001_ha->msix_entries[0 ]);for (i =0 ; i < max_entry ; i++) pm8001_ha->msix_entries[i].entry = i; - rc =pci_enable_msix (pm8001_ha->pdev, pm8001_ha->msix_entries, + rc =pci_enable_msix_exact (pm8001_ha->pdev, pm8001_ha->msix_entries, number_of_intr); pm8001_ha->number_of_intr = number_of_intr; -if (!rc) { -PM8001_INIT_DBG (pm8001_ha,pm8001_printk ( -"pci_enable_msix request ret:%d no of intr %d\n" , - rc, pm8001_ha->number_of_intr)); +if (rc) +return rc; +PM8001_INIT_DBG (pm8001_ha,pm8001_printk ( +"pci_enable_msix_exact request ret:%d no of intr %d\n" , + rc, pm8001_ha->number_of_intr)); -for (i =0 ; i < number_of_intr; i++) { -snprintf (intr_drvname[i],sizeof (intr_drvname[0 ]), -DRV_NAME "%d" , i); - pm8001_ha->irq_vector[i].irq_id = i; - pm8001_ha->irq_vector[i].drv_inst = pm8001_ha; +for (i =0 ; i < number_of_intr; i++) { +snprintf (intr_drvname[i],sizeof (intr_drvname[0 ]), +DRV_NAME "%d" , i); + pm8001_ha->irq_vector[i].irq_id = i; + pm8001_ha->irq_vector[i].drv_inst = pm8001_ha; - rc =request_irq (pm8001_ha->msix_entries[i].vector, - pm8001_interrupt_handler_msix, flag, - intr_drvname[i], &(pm8001_ha->irq_vector[i])); -if (rc) { -for (j =0 ; j < i; j++) -free_irq ( - pm8001_ha->msix_entries[j].vector, + rc =request_irq (pm8001_ha->msix_entries[i].vector, + pm8001_interrupt_handler_msix, flag, + intr_drvname[i], &(pm8001_ha->irq_vector[i])); +if (rc) { +for (j =0 ; j < i; j++) { +free_irq (pm8001_ha->msix_entries[j].vector, &(pm8001_ha->irq_vector[i])); -pci_disable_msix (pm8001_ha->pdev); -break ; } +pci_disable_msix (pm8001_ha->pdev); +break ; } } + return rc; }#endif --Quoted 2 lines
1.7.7.6
--
Regards,
Alexander Gordeev
[email protected]
PATCH RESEND v2 19/23 pmcraid: Get rid of a redundant assignment
In reply to Alexander Gordeev--- drivers/scsi/pmcraid.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
drivers/scsi/pmcraid.c +0 -1
@@ -4746,7 +4746,6 @@ pmcraid_isr_legacy: pinstance->hrrq_vector[0 ].drv_inst = pinstance; pinstance->hrrq_vector[0 ].vector = pdev->irq; pinstance->num_hrrq =1 ; - rc =0 ; rc =request_irq (pdev->irq, pmcraid_isr,IRQF_SHARED ,PMCRAID_DRIVER_NAME , &pinstance->hrrq_vector[0 ]);
Signature · 1 line
1.7.7.6
PATCH RESEND v2 20/23 pmcraid: 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
--- drivers/scsi/pmcraid.c | 13 ++----------- 1 files changed, 2 insertions(+), 11 deletions(-)
drivers/scsi/pmcraid.c +2 -11
@@ -4698,19 +4698,10 @@ pmcraid_register_interrupt_handler(struct pmcraid_instance *pinstance)for (i =0 ; i <PMCRAID_NUM_MSIX_VECTORS ; i++) entries[i].entry = i; - rc =pci_enable_msix (pdev, entries, num_hrrq); -if (rc <0 ) + num_hrrq =pci_enable_msix_range (pdev, entries,1 , num_hrrq); +if (num_hrrq <0 ) goto pmcraid_isr_legacy; -/* Check how many MSIX vectors are allocated and register -* msi-x handlers for each of them giving appropriate buffer -*/ -if (rc >0 ) { - num_hrrq = rc; -if (pci_enable_msix (pdev, entries, num_hrrq)) - goto pmcraid_isr_legacy; - } -for (i =0 ; i < num_hrrq; i++) { pinstance->hrrq_vector[i].hrrq_id = i; pinstance->hrrq_vector[i].drv_inst = pinstance;
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 20/23] pmcraid: Use pci_enable_msix_range() instead of pci_enable_msix()
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Hi Anil,
Could you please review pmcraid patches in this series?
Thanks!
Quoted 37 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Anil Ravindranath <[email protected]>--- drivers/scsi/pmcraid.c | 13 ++----------- 1 files changed, 2 insertions(+), 11 deletions(-)drivers/scsi/pmcraid.c +2
-11@@ -4698,19 +4698,10 @@ pmcraid_register_interrupt_handler(struct pmcraid_instance *pinstance)for (i =0 ; i <PMCRAID_NUM_MSIX_VECTORS ; i++) entries[i].entry = i; - rc =pci_enable_msix (pdev, entries, num_hrrq); -if (rc <0 ) + num_hrrq =pci_enable_msix_range (pdev, entries,1 , num_hrrq); +if (num_hrrq <0 ) goto pmcraid_isr_legacy; -/* Check how many MSIX vectors are allocated and register -* msi-x handlers for each of them giving appropriate buffer -*/ -if (rc >0 ) { - num_hrrq = rc; -if (pci_enable_msix (pdev, entries, num_hrrq)) - goto pmcraid_isr_legacy; - } -for (i =0 ; i < num_hrrq; i++) { pinstance->hrrq_vector[i].hrrq_id = i; pinstance->hrrq_vector[i].drv_inst = pinstance;Signature · 1 line
1.7.7.6
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Re: [PATCH v2 RESEND 20/23] pmcraid: Use pci_enable_msix_range() instead of pci_enable_msix()
In reply to Alexander GordeevQuoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Hi Christoph,
This device's maintainer mail <[email protected]> does not seem exist anymore.
Quoted 37 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Anil Ravindranath <[email protected]>--- drivers/scsi/pmcraid.c | 13 ++----------- 1 files changed, 2 insertions(+), 11 deletions(-)drivers/scsi/pmcraid.c +2
-11@@ -4698,19 +4698,10 @@ pmcraid_register_interrupt_handler(struct pmcraid_instance *pinstance)for (i =0 ; i <PMCRAID_NUM_MSIX_VECTORS ; i++) entries[i].entry = i; - rc =pci_enable_msix (pdev, entries, num_hrrq); -if (rc <0 ) + num_hrrq =pci_enable_msix_range (pdev, entries,1 , num_hrrq); +if (num_hrrq <0 ) goto pmcraid_isr_legacy; -/* Check how many MSIX vectors are allocated and register -* msi-x handlers for each of them giving appropriate buffer -*/ -if (rc >0 ) { - num_hrrq = rc; -if (pci_enable_msix (pdev, entries, num_hrrq)) - goto pmcraid_isr_legacy; - } -for (i =0 ; i < num_hrrq; i++) { pinstance->hrrq_vector[i].hrrq_id = i; pinstance->hrrq_vector[i].drv_inst = pinstance;Signature · 1 line
1.7.7.6
PATCH RESEND v2 21/23 qla2xxx: 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
Log message code 0x00c6 preserved, although it is reported after successful call to pci_enable_msix_range(), not before possibly unsuccessful call to pci_enable_msix(). Consumers of the error code should not notice the difference.
--- drivers/scsi/qla2xxx/qla_isr.c | 27 +++++++++++---------------- 1 files changed, 11 insertions(+), 16 deletions(-)
drivers/scsi/qla2xxx/qla_isr.c +11 -16
@@ -2923,27 +2923,22 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)for (i =0 ; i < ha->msix_count; i++) entries[i].entry = i; - ret =pci_enable_msix (ha->pdev, entries, ha->msix_count); -if (ret) { -if (ret <MIN_MSIX_COUNT ) - goto msix_failed; - + ret =pci_enable_msix_range (ha->pdev, + entries,MIN_MSIX_COUNT , ha->msix_count); +if (ret <0 ) { +ql_log (ql_log_fatal, vha,0x00c7 , +"MSI-X: Failed to enable support, " +"giving up -- %d/%d.\n" , + ha->msix_count, ret); + goto msix_out; + }else if (ret < ha->msix_count) {ql_log (ql_log_warn, vha,0x00c6 ,"MSI-X: Failed to enable support " "-- %d/%d\n Retry with %d vectors.\n" , ha->msix_count, ret, ret); - ha->msix_count = ret; - ret =pci_enable_msix (ha->pdev, entries, ha->msix_count); -if (ret) { -msix_failed: -ql_log (ql_log_fatal, vha,0x00c7 , -"MSI-X: Failed to enable support, " -"giving up -- %d/%d.\n" , - ha->msix_count, ret); - goto msix_out; - } - ha->max_rsp_queues = ha->msix_count -1 ; } + ha->msix_count = ret; + ha->max_rsp_queues = ha->msix_count -1 ; ha->msix_entries =kzalloc (sizeof (struct qla_msix_entry ) * ha->msix_count,GFP_KERNEL );if (!ha->msix_entries) {
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 21/23] qla2xxx: Use pci_enable_msix_range() instead of pci_enable_msix()
Quoted 11 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.Log message code
0x00c6preserved, although it is reported after successful call topci_enable_msix_range(), not before possibly unsuccessful call topci_enable_msix(). Consumers of the error code should not notice the difference.
Hello,
Could someone review this patch, please?
Thanks!
Quoted 54 lines
Signed-off-by Alexander Gordeev <[email protected]>--- drivers/scsi/qla2xxx/qla_isr.c | 27 +++++++++++---------------- 1 files changed, 11 insertions(+), 16 deletions(-)drivers/scsi/qla2xxx/qla_isr.c +11
-16@@ -2923,27 +2923,22 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)for (i =0 ; i < ha->msix_count; i++) entries[i].entry = i; - ret =pci_enable_msix (ha->pdev, entries, ha->msix_count); -if (ret) { -if (ret <MIN_MSIX_COUNT ) - goto msix_failed; - + ret =pci_enable_msix_range (ha->pdev, + entries,MIN_MSIX_COUNT , ha->msix_count); +if (ret <0 ) { +ql_log (ql_log_fatal, vha,0x00c7 , +"MSI-X: Failed to enable support, " +"giving up -- %d/%d.\n" , + ha->msix_count, ret); + goto msix_out; + }else if (ret < ha->msix_count) {ql_log (ql_log_warn, vha,0x00c6 ,"MSI-X: Failed to enable support " "-- %d/%d\n Retry with %d vectors.\n" , ha->msix_count, ret, ret); - ha->msix_count = ret; - ret =pci_enable_msix (ha->pdev, entries, ha->msix_count); -if (ret) { -msix_failed: -ql_log (ql_log_fatal, vha,0x00c7 , -"MSI-X: Failed to enable support, " -"giving up -- %d/%d.\n" , - ha->msix_count, ret); - goto msix_out; - } - ha->max_rsp_queues = ha->msix_count -1 ; } + ha->msix_count = ret; + ha->max_rsp_queues = ha->msix_count -1 ; ha->msix_entries =kzalloc (sizeof (struct qla_msix_entry ) * ha->msix_count,GFP_KERNEL );if (!ha->msix_entries) {Signature · 1 line
1.7.7.6
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Re: [PATCH v2 RESEND 21/23] qla2xxx: Use pci_enable_msix_range() instead of pci_enable_msix()
In reply to Alexander GordeevQuoted 11 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.Log message code
0x00c6preserved, although it is reported after successful call topci_enable_msix_range(), not before possibly unsuccessful call topci_enable_msix(). Consumers of the error code should not notice the difference.
Hello,
Please, anyone (from QLogic especially) review this patch.
Thanks!
Quoted 54 lines
Signed-off-by Alexander Gordeev <[email protected]>--- drivers/scsi/qla2xxx/qla_isr.c | 27 +++++++++++---------------- 1 files changed, 11 insertions(+), 16 deletions(-)drivers/scsi/qla2xxx/qla_isr.c +11
-16@@ -2923,27 +2923,22 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)for (i =0 ; i < ha->msix_count; i++) entries[i].entry = i; - ret =pci_enable_msix (ha->pdev, entries, ha->msix_count); -if (ret) { -if (ret <MIN_MSIX_COUNT ) - goto msix_failed; - + ret =pci_enable_msix_range (ha->pdev, + entries,MIN_MSIX_COUNT , ha->msix_count); +if (ret <0 ) { +ql_log (ql_log_fatal, vha,0x00c7 , +"MSI-X: Failed to enable support, " +"giving up -- %d/%d.\n" , + ha->msix_count, ret); + goto msix_out; + }else if (ret < ha->msix_count) {ql_log (ql_log_warn, vha,0x00c6 ,"MSI-X: Failed to enable support " "-- %d/%d\n Retry with %d vectors.\n" , ha->msix_count, ret, ret); - ha->msix_count = ret; - ret =pci_enable_msix (ha->pdev, entries, ha->msix_count); -if (ret) { -msix_failed: -ql_log (ql_log_fatal, vha,0x00c7 , -"MSI-X: Failed to enable support, " -"giving up -- %d/%d.\n" , - ha->msix_count, ret); - goto msix_out; - } - ha->max_rsp_queues = ha->msix_count -1 ; } + ha->msix_count = ret; + ha->max_rsp_queues = ha->msix_count -1 ; ha->msix_entries =kzalloc (sizeof (struct qla_msix_entry ) * ha->msix_count,GFP_KERNEL );if (!ha->msix_entries) {Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 21/23] qla2xxx: Use pci_enable_msix_range() instead of pci_enable_msix()
Quoted 13 lines · Alexander Gordeev
Quoted 11 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.Log message code
0x00c6preserved, although it is reported after successful call topci_enable_msix_range(), not before possibly unsuccessful call topci_enable_msix(). Consumers of the error code should not notice the difference.
Quoted 5 lines
Hello,
Please, anyone (from QLogic especially) review this patch.
Thanks!
Looks good.
Quoted 56 lines
Quoted 55 lines
Signed-off-by Alexander Gordeev <[email protected]>--- drivers/scsi/qla2xxx/qla_isr.c | 27 +++++++++++---------------- 1 files changed, 11 insertions(+), 16 deletions(-)drivers/scsi/qla2xxx/qla_isr.c +11
-17@@ -2923,27 +2923,22 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)for (i =0 ; i < ha->msix_count; i++) entries[i].entry = i; - ret =pci_enable_msix (ha->pdev, entries, ha->msix_count); -if (ret) { -if (ret <MIN_MSIX_COUNT ) - goto msix_failed; - + ret =pci_enable_msix_range (ha->pdev, + entries,MIN_MSIX_COUNT , ha->msix_count); +if (ret <0 ) { +ql_log (ql_log_fatal, vha,0x00c7 , +"MSI-X: Failed to enable support, " +"giving up -- %d/%d.\n" , + ha->msix_count, ret); + goto msix_out; + }else if (ret < ha->msix_count) {ql_log (ql_log_warn, vha,0x00c6 ,"MSI-X: Failed to enable support " "-- %d/%d\n Retry with %d vectors.\n" , ha->msix_count, ret, ret); - ha->msix_count = ret; - ret =pci_enable_msix (ha->pdev, entries, ha->msix_count); -if (ret) { -msix_failed: -ql_log (ql_log_fatal, vha,0x00c7 , -"MSI-X: Failed to enable support, " -"giving up -- %d/%d.\n" , - ha->msix_count, ret); - goto msix_out; - } - ha->max_rsp_queues = ha->msix_count -1 ; } + ha->msix_count = ret; + ha->max_rsp_queues = ha->msix_count -1 ; ha->msix_entries =kzalloc (sizeof (struct qla_msix_entry ) * ha->msix_count,GFP_KERNEL );if (!ha->msix_entries) { --1.7.7.6
PATCH RESEND v2 22/23 qla4xxx: Use pci_enable_msix_exact() 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
--- drivers/scsi/qla4xxx/ql4_nx.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/scsi/qla4xxx/ql4_nx.c +1 -1
@@ -4221,7 +4221,7 @@ qla4_8xxx_enable_msix(struct scsi_qla_host *ha)for (i =0 ; i <QLA_MSIX_ENTRIES ; i++) entries[i].entry = qla4_8xxx_msix_entries[i].entry; - ret =pci_enable_msix (ha->pdev, entries,ARRAY_SIZE (entries)); + ret =pci_enable_msix_exact (ha->pdev, entries,ARRAY_SIZE (entries));if (ret) { ql4_printk(KERN_WARNING, ha, "MSI-X: Failed to enable support -- %d/%d\n",
Signature · 1 line
1.7.7.6
Re: [PATCH v2 RESEND 22/23] qla4xxx: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.
Hi Vikas,
Could you please reveiw this patch?
Thanks!
Quoted 26 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Vikas Chaudhary <[email protected]>Acked-by Vikas Chaudhary <[email protected]>--- drivers/scsi/qla4xxx/ql4_nx.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)drivers/scsi/qla4xxx/ql4_nx.c +1
-1@@ -4221,7 +4221,7 @@ qla4_8xxx_enable_msix(struct scsi_qla_host *ha)for (i =0 ; i <QLA_MSIX_ENTRIES ; i++) entries[i].entry = qla4_8xxx_msix_entries[i].entry; - ret =pci_enable_msix (ha->pdev, entries,ARRAY_SIZE (entries)); + ret =pci_enable_msix_exact (ha->pdev, entries,ARRAY_SIZE (entries));if (ret) { ql4_printk(KERN_WARNING, ha, "MSI-X: Failed to enable support -- %d/%d\n",Signature · 1 line
1.7.7.6
Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Vikas Chaudhary
Acked-byRe: [PATCH v2 RESEND 22/23] qla4xxx: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 46 lines · Alexander Gordeev
Quoted 6 lines · Alexander Gordeev
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.Hi Vikas,
Could you please reveiw this patch?
Thanks!
Quoted 27 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Vikas Chaudhary <[email protected]>Acked-by Vikas Chaudhary <[email protected]>--- drivers/scsi/qla4xxx/ql4_nx.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)drivers/scsi/qla4xxx/ql4_nx.c +1
-1@@ -4221,7 +4221,7 @@ qla4_8xxx_enable_msix(struct scsi_qla_host *ha)for (i =0 ; i <QLA_MSIX_ENTRIES ; i++) entries[i].entry = qla4_8xxx_msix_entries[i].entry; - ret =pci_enable_msix (ha->pdev, entries,ARRAY_SIZE (entries)); + ret =pci_enable_msix_exact (ha->pdev, entries,ARRAY_SIZE (entries));if (ret) { ql4_printk(KERN_WARNING, ha, "MSI-X: Failed to enable support -- %d/%d\n",Signature · 1 line
1.7.7.6Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Re: [PATCH v2 RESEND 22/23] qla4xxx: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 2 lines · Vikas Chaudhary
Acked-by Vikas Chaudhary <[email protected]>
Christoph,
This patch seems ready..
Quoted 49 lines · Alexander Gordeev
Quoted 47 lines · Alexander Gordeev
Quoted 6 lines
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()orpci_enable_msi_exact()andpci_enable_msix_range()orpci_enable_msix_exact()interfaces.Hi Vikas,
Could you please reveiw this patch?
Thanks!
Quoted 27 lines
Signed-off-by Alexander Gordeev <[email protected]>Cc Vikas Chaudhary <[email protected]>Acked-by Vikas Chaudhary <[email protected]>--- drivers/scsi/qla4xxx/ql4_nx.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)drivers/scsi/qla4xxx/ql4_nx.c +1
-1@@ -4221,7 +4221,7 @@ qla4_8xxx_enable_msix(struct scsi_qla_host *ha)for (i =0 ; i <QLA_MSIX_ENTRIES ; i++) entries[i].entry = qla4_8xxx_msix_entries[i].entry; - ret =pci_enable_msix (ha->pdev, entries,ARRAY_SIZE (entries)); + ret =pci_enable_msix_exact (ha->pdev, entries,ARRAY_SIZE (entries));if (ret) { ql4_printk(KERN_WARNING, ha, "MSI-X: Failed to enable support -- %d/%d\n",Signature · 1 line
1.7.7.6Signature · 3 lines
Regards, Alexander Gordeev [email protected]
Re: [PATCH v2 RESEND 22/23] qla4xxx: Use pci_enable_msix_exact() instead of pci_enable_msix()
Quoted 7 lines · Alexander Gordeev
Quoted 2 lines · Vikas Chaudhary
Acked-by Vikas Chaudhary <[email protected]>Christoph,
This patch seems ready..
I will apply all the patches that have gotten reviews once I open up the queues for 3.18 which should be in about a week from now.
PATCH RESEND v2 23/23 vmw_pvscsi: Use pci_enable_msix_exact() 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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.
--- drivers/scsi/vmw_pvscsi.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/scsi/vmw_pvscsi.c +1 -1
@@ -1194,7 +1194,7 @@ static int pvscsi_setup_msix(const struct pvscsi_adapter *adapter,struct msix_entry entry = {0 ,PVSCSI_VECTOR_COMPLETION };int ret; - ret =pci_enable_msix (adapter->dev, &entry,1 ); + ret =pci_enable_msix_exact (adapter->dev, &entry,1 );if (ret)return ret;
Signature · 1 line
1.7.7.6
RE: [PATCH v2 RESEND 23/23] vmw_pvscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
Hi Alexander,
This looks fine to me.
Thanks!
Arvind
________________________________________
From: Alexander Gordeev <[email protected]>
Sent: Wednesday, July 16, 2014 11:05 AM
To: [email protected]
Cc: Alexander Gordeev; Arvind Kumar; [email protected]; [email protected]; [email protected]
Subject: [PATCH v2 RESEND 23/23] vmw_pvscsi: 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/scsi/vmw_pvscsi.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/scsi/vmw_pvscsi.c +1 -1
@@ -1194,7 +1194,7 @@ static int pvscsi_setup_msix(const struct pvscsi_adapter *adapter,struct msix_entry entry = {0 ,PVSCSI_VECTOR_COMPLETION };int ret; - ret =pci_enable_msix (adapter->dev, &entry,1 ); + ret =pci_enable_msix_exact (adapter->dev, &entry,1 );if (ret)return ret;
--
1.7.7.6
Can I get reviews for the patches still missing one, maybe from the Distro folks? I'd like to pull in the whole things in favor of cherry picking the reviewed patches.
Thanks!
Quoted 3 lines · Christoph Hellwig
Can I get reviews for the patches still missing one, maybe from the Distro folks? I'd like to pull in the whole things in favor of cherry picking the reviewed patches.
I've applied those few patches that did get a review to the
drivers-for-3.17 branch. It still would be great if someone could help
reviewing the others.