summaryrefslogtreecommitdiffstats
path: root/drivers/dma/iop-adma.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2008-07-18 02:59:56 +0200
committerDan Williams <dan.j.williams@intel.com>2008-07-18 02:59:56 +0200
commitc7141d005a19d2a0a316b3bf9c170d3bedf07bfd (patch)
treecac1072c6230a3c8f33213802f399a70fdc7e882 /drivers/dma/iop-adma.c
parentasync_tx: make async_tx_test_ack a boolean routine (diff)
downloadlinux-c7141d005a19d2a0a316b3bf9c170d3bedf07bfd.tar.xz
linux-c7141d005a19d2a0a316b3bf9c170d3bedf07bfd.zip
iop_adma: directly reclaim descriptors on allocation failure
Force callers that trigger an "out of descriptors" condition to run the cleanup loop directly. Alleviates the requirement to have soft-irqs enabled when polling for a descriptor in async_xor. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/dma/iop-adma.c')
-rw-r--r--drivers/dma/iop-adma.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/dma/iop-adma.c b/drivers/dma/iop-adma.c
index 434013d41288..8acbc3ab0b92 100644
--- a/drivers/dma/iop-adma.c
+++ b/drivers/dma/iop-adma.c
@@ -373,8 +373,8 @@ retry:
if (!retry++)
goto retry;
- /* try to free some slots if the allocation fails */
- tasklet_schedule(&iop_chan->irq_tasklet);
+ /* perform direct reclaim if the allocation fails */
+ __iop_adma_slot_cleanup(iop_chan);
return NULL;
}