Messages in this thread | | | From | "Sosnowski, Maciej" <> | Date | Mon, 14 Sep 2009 15:59:38 +0100 | Subject | RE: [PATCH 20/29] ioat: switch watchdog and reset handler from workqueue to timer |
| |
Williams, Dan J wrote: > In order to support dynamic resizing of the descriptor ring or polling > for a descriptor in the presence of a hung channel the reset handler > needs to make progress while in a non-preemptible context. The current > workqueue implementation precludes polling channel reset completion > under spin_lock(). > > This conversion also allows us to return to opportunistic cleanup in the > ioat2 case as the timer implementation guarantees at least one cleanup > after every descriptor is submitted. This means the worst case > completion latency becomes the timer frequency (for exceptional > circumstances), but with the benefit of avoiding busy waiting when the > lock is contended. > > Signed-off-by: Dan Williams <dan.j.williams@intel.com> > ---
[...] > --- a/drivers/dma/ioat/dma_v2.c > +++ b/drivers/dma/ioat/dma_v2.c > @@ -49,7 +49,7 @@ static void __ioat2_issue_pending(struct ioat2_dma_chan *ioat) > void * __iomem reg_base = ioat->base.reg_base; > > ioat->pending = 0; > - ioat->dmacount += ioat2_ring_pending(ioat); > + ioat->dmacount += ioat2_ring_pending(ioat);; double semicolon
Signed-off-by: Maciej Sosnowski <maciej.sosnowski@intel.com>
| |