Message ID | 20220513081647.1631141-1-chi.minghao@zte.com.cn (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Jason Gunthorpe |
Headers | show |
Series | qedr: Remove unnecessary synchronize_irq() before free_irq() | expand |
> -----Original Message----- > From: cgel.zte@gmail.com <cgel.zte@gmail.com> > Sent: Friday, May 13, 2022 11:17 AM > To: Michal Kalderon <mkalderon@marvell.com> > Cc: Ariel Elior <aelior@marvell.com>; jgg@ziepe.ca; leon@kernel.org; linux- > rdma@vger.kernel.org; linux-kernel@vger.kernel.org; Minghao Chi > <chi.minghao@zte.com.cn>; Zeal Robot <zealci@zte.com.cn> > Subject: [EXT] [PATCH] qedr: Remove unnecessary synchronize_irq() before > free_irq() > > External Email > > ---------------------------------------------------------------------- > From: Minghao Chi <chi.minghao@zte.com.cn> > > Calling synchronize_irq() right before free_irq() is quite useless. On one > hand the IRQ can easily fire again before free_irq() is entered, on the > other hand free_irq() itself calls synchronize_irq() internally (in a race > condition free way), before any state associated with the IRQ is freed. > > Reported-by: Zeal Robot <zealci@zte.com.cn> > Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn> > --- > drivers/infiniband/hw/qedr/main.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/infiniband/hw/qedr/main.c > b/drivers/infiniband/hw/qedr/main.c > index 65ce6d0f1885..5152f10d2e6d 100644 > --- a/drivers/infiniband/hw/qedr/main.c > +++ b/drivers/infiniband/hw/qedr/main.c > @@ -500,7 +500,6 @@ static void qedr_sync_free_irqs(struct qedr_dev > *dev) > if (dev->int_info.msix_cnt) { > idx = i * dev->num_hwfns + dev->affin_hwfn_idx; > vector = dev->int_info.msix[idx].vector; > - synchronize_irq(vector); > free_irq(vector, &dev->cnq_array[i]); > } > } > -- > 2.25.1 > Thanks, Acked-by: Michal Kalderon <michal.kalderon@marvell.com>
On Fri, May 13, 2022 at 08:16:47AM +0000, cgel.zte@gmail.com wrote: > From: Minghao Chi <chi.minghao@zte.com.cn> > > Calling synchronize_irq() right before free_irq() is quite useless. On one > hand the IRQ can easily fire again before free_irq() is entered, on the > other hand free_irq() itself calls synchronize_irq() internally (in a race > condition free way), before any state associated with the IRQ is freed. > > Reported-by: Zeal Robot <zealci@zte.com.cn> > Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn> > Acked-by: Michal Kalderon <michal.kalderon@marvell.com> > --- > drivers/infiniband/hw/qedr/main.c | 1 - > 1 file changed, 1 deletion(-) Applied to for-next, thanks Jason
diff --git a/drivers/infiniband/hw/qedr/main.c b/drivers/infiniband/hw/qedr/main.c index 65ce6d0f1885..5152f10d2e6d 100644 --- a/drivers/infiniband/hw/qedr/main.c +++ b/drivers/infiniband/hw/qedr/main.c @@ -500,7 +500,6 @@ static void qedr_sync_free_irqs(struct qedr_dev *dev) if (dev->int_info.msix_cnt) { idx = i * dev->num_hwfns + dev->affin_hwfn_idx; vector = dev->int_info.msix[idx].vector; - synchronize_irq(vector); free_irq(vector, &dev->cnq_array[i]); } }