Messages in this thread | | | Subject | Re: [PATCH 3/3] dmaengine: ioat: adding missed issue_pending to timeout handler | From | Dave Jiang <> | Date | Wed, 22 Apr 2020 07:21:10 -0700 |
| |
On 4/22/2020 4:22 AM, leonid.ravich@dell.com wrote: > From: Leonid Ravich <Leonid.Ravich@emc.com> > > completion timeout might trigger unnesesery DMA engine hw reboot > in case of missed issue_pending() .
Just curious, are you hitting a use case where this is happening? And what's causing the completion timeout?
> > Signed-off-by: Leonid Ravich <Leonid.Ravich@emc.com> > --- > drivers/dma/ioat/dma.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c > index 55a8cf1..2ab07a3 100644 > --- a/drivers/dma/ioat/dma.c > +++ b/drivers/dma/ioat/dma.c > @@ -955,6 +955,13 @@ void ioat_timer_event(struct timer_list *t) > goto unlock_out; > } > > + /* handle missed issue pending case */ > + if (ioat_ring_pending(ioat_chan)) { > + spin_lock_bh(&ioat_chan->prep_lock); > + __ioat_issue_pending(ioat_chan); > + spin_unlock_bh(&ioat_chan->prep_lock); > + } > + > set_bit(IOAT_COMPLETION_ACK, &ioat_chan->state); > mod_timer(&ioat_chan->timer, jiffies + COMPLETION_TIMEOUT); > unlock_out: >
| |