> -----Original Message----- > From: linux-rdma-owner@xxxxxxxxxxxxxxx <linux-rdma- > owner@xxxxxxxxxxxxxxx> On Behalf Of Steve Wise > Sent: Wednesday, February 6, 2019 3:12 PM > To: dledford@xxxxxxxxxx; jgg@xxxxxxxxxxxx > Cc: linux-rdma@xxxxxxxxxxxxxxx; hch@xxxxxxxxxxxxx; sagi@xxxxxxxxxxx > Subject: [PATCH rdma-next] lib/irq_poll: support schedules in non-interrupt > contexts > > Do not assume irq_poll_sched() is called from an interrupt context only. > So use raise_softirq_irqoff() instead of __raise_softirq_irqoff() so it > will kick the ksoftirqd if the schedule is from a non-interrupt context. > > This is required for RDMA drivers, like soft iwarp, that generate cq > completion notifications in a workqueue or kthread context. Without this > change, siw completion notifications to the ULP can take several hundred > usecs, depending on the system load. > > Signed-off-by: Steve Wise <swise@xxxxxxxxxxxxxxxxxxxxx> > --- > lib/irq_poll.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/irq_poll.c b/lib/irq_poll.c > index 86a709954f5a..2f17b488d58e 100644 > --- a/lib/irq_poll.c > +++ b/lib/irq_poll.c > @@ -35,7 +35,7 @@ void irq_poll_sched(struct irq_poll *iop) > > local_irq_save(flags); > list_add_tail(&iop->list, this_cpu_ptr(&blk_cpu_iopoll)); > - __raise_softirq_irqoff(IRQ_POLL_SOFTIRQ); > + raise_softirq_irqoff(IRQ_POLL_SOFTIRQ); > local_irq_restore(flags); > } > EXPORT_SYMBOL(irq_poll_sched); > -- > 1.8.3.1 Are there any comments on this patch? Thanks, Steve.