> -----Original Message----- > From: Hannes Reinecke [mailto:hare@xxxxxxx] > Sent: Tuesday, November 15, 2016 11:37 PM > To: Raghava Aditya Renukunta; Martin K. Petersen > Cc: Christoph Hellwig; James Bottomley; linux-scsi@xxxxxxxxxxxxxxx; Hannes > Reinecke; dl-esc-Aacraid Linux Driver > Subject: Re: [PATCH] aacraid: switch to pci_alloc_irq_vectors > > EXTERNAL EMAIL > > > On 11/15/2016 08:33 PM, Raghava Aditya Renukunta wrote: > > Hi Hannes, > > Thank you for the patch > > > >> -----Original Message----- > >> From: Hannes Reinecke [mailto:hare@xxxxxxx] > >> Sent: Monday, November 7, 2016 11:12 PM > >> To: Martin K. Petersen > >> Cc: Christoph Hellwig; James Bottomley; linux-scsi@xxxxxxxxxxxxxxx; > Hannes > >> Reinecke; Hannes Reinecke; dl-esc-Aacraid Linux Driver > >> Subject: [PATCH] aacraid: switch to pci_alloc_irq_vectors > >> > >> EXTERNAL EMAIL > >> > >> > >> Use pci_alloc_irq_vectors and drop the hand-crafted > >> interrupt affinity routines. > >> > >> Signed-off-by: Hannes Reinecke <hare@xxxxxxxx> > >> Cc: Adaptec OEM Raid Solutions <aacraid@xxxxxxxxxxxxx> > >> --- > >> drivers/scsi/aacraid/aacraid.h | 1 - > >> drivers/scsi/aacraid/comminit.c | 10 +++------- > >> drivers/scsi/aacraid/commsup.c | 25 +++++-------------------- > >> drivers/scsi/aacraid/linit.c | 20 ++++---------------- > >> 4 files changed, 12 insertions(+), 44 deletions(-) > >> > >> diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h > >> index 969c312..f059c14 100644 > >> --- a/drivers/scsi/aacraid/aacraid.h > >> +++ b/drivers/scsi/aacraid/aacraid.h > >> @@ -1246,7 +1246,6 @@ struct aac_dev > >> u32 max_msix; /* max. MSI-X vectors */ > >> u32 vector_cap; /* MSI-X vector capab.*/ > >> int msi_enabled; /* MSI/MSI-X enabled */ > >> - struct msix_entry msixentry[AAC_MAX_MSIX]; > >> struct aac_msix_ctx aac_msix[AAC_MAX_MSIX]; /* context */ > >> u8 adapter_shutdown; > >> u32 handle_pci_error; > >> diff --git a/drivers/scsi/aacraid/comminit.c > b/drivers/scsi/aacraid/comminit.c > >> index 341ea32..4f56b10 100644 > >> --- a/drivers/scsi/aacraid/comminit.c > >> +++ b/drivers/scsi/aacraid/comminit.c > >> @@ -378,16 +378,12 @@ void aac_define_int_mode(struct aac_dev > *dev) > >> if (msi_count > AAC_MAX_MSIX) > >> msi_count = AAC_MAX_MSIX; > >> > >> - for (i = 0; i < msi_count; i++) > >> - dev->msixentry[i].entry = i; > >> - > >> if (msi_count > 1 && > >> pci_find_capability(dev->pdev, PCI_CAP_ID_MSIX)) { > >> min_msix = 2; > >> - i = pci_enable_msix_range(dev->pdev, > >> - dev->msixentry, > >> - min_msix, > >> - msi_count); > >> + i = pci_alloc_irq_vectors(dev->pdev, > >> + min_msix, msi_count, > >> + PCI_IRQ_MSIX | PCI_IRQ_AFFINITY); > >> if (i > 0) { > >> dev->msi_enabled = 1; > >> msi_count = i; > >> diff --git a/drivers/scsi/aacraid/commsup.c > b/drivers/scsi/aacraid/commsup.c > >> index 0aeecec..9e7551f 100644 > >> --- a/drivers/scsi/aacraid/commsup.c > >> +++ b/drivers/scsi/aacraid/commsup.c > >> @@ -2043,30 +2043,22 @@ int aac_acquire_irq(struct aac_dev *dev) > >> int i; > >> int j; > >> int ret = 0; > >> - int cpu; > >> > >> - cpu = cpumask_first(cpu_online_mask); > >> if (!dev->sync_mode && dev->msi_enabled && dev->max_msix > 1) { > >> for (i = 0; i < dev->max_msix; i++) { > >> dev->aac_msix[i].vector_no = i; > >> dev->aac_msix[i].dev = dev; > >> - if (request_irq(dev->msixentry[i].vector, > >> + if (request_irq(pci_irq_vector(dev->pdev, i), > >> dev->a_ops.adapter_intr, > >> 0, "aacraid", &(dev->aac_msix[i]))) { > >> printk(KERN_ERR "%s%d: Failed to register IRQ for vector > >> %d.\n", > >> dev->name, dev->id, i); > >> for (j = 0 ; j < i ; j++) > >> - free_irq(dev->msixentry[j].vector, > >> + free_irq(pci_irq_vector(dev->pdev, j), > >> &(dev->aac_msix[j])); > >> pci_disable_msix(dev->pdev); > >> ret = -1; > >> } > >> - if (irq_set_affinity_hint(dev->msixentry[i].vector, > >> - get_cpu_mask(cpu))) { > >> - printk(KERN_ERR "%s%d: Failed to set IRQ affinity for cpu > >> %d\n", > >> - dev->name, dev->id, cpu); > >> - } > >> - cpu = cpumask_next(cpu, cpu_online_mask); > > > > Is there a reason why the irq_set_affinity_hint was removed? Will the > PCI_IRQ_AFFINITY flag enable hints? > > > Precisely. > Setting the PCI_IRQ_AFFINITY flag will instruct the PCI subsystem to set > the interrupt affinity. > It will take the physical layout of CPU cores into account, so the > results will be far better matched to the actual system. > > Cheers, > > Hannes Yes I looked at the code and It looks good. Thank you Reviewed-by: Raghava Aditya Renukunta <raghavaaditya.renukunta@xxxxxxxxxxxxx> > -- > Dr. Hannes Reinecke Teamlead Storage & Networking > hare@xxxxxxx +49 911 74053 688 > SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg > GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton > HRB 21284 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html