aboutsummaryrefslogtreecommitdiff
path: root/drivers/dma/iovlock.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2009-09-08 17:52:57 -0700
committerDan Williams <dan.j.williams@intel.com>2009-09-08 17:52:57 -0700
commite12c4fa377ffda2490476caae17f24daaf9c9bd7 (patch)
treeaa7a19d8f7f931709a8a835a4b0d441f83d759fd /drivers/dma/iovlock.c
parenta348a7e6fdbcd2d5192a09719a479bb238fde727 (diff)
parent4b652f0db3be891c7b76b109c3b55003b920fc96 (diff)
Merge branch 'ioat' into dmaengine
Diffstat (limited to 'drivers/dma/iovlock.c')
-rw-r--r--drivers/dma/iovlock.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/dma/iovlock.c b/drivers/dma/iovlock.c
index 9f6fe46a9b8..c0a272c7368 100644
--- a/drivers/dma/iovlock.c
+++ b/drivers/dma/iovlock.c
@@ -183,6 +183,11 @@ dma_cookie_t dma_memcpy_to_iovec(struct dma_chan *chan, struct iovec *iov,
iov_byte_offset,
kdata,
copy);
+ /* poll for a descriptor slot */
+ if (unlikely(dma_cookie < 0)) {
+ dma_async_issue_pending(chan);
+ continue;
+ }
len -= copy;
iov[iovec_idx].iov_len -= copy;
@@ -248,6 +253,11 @@ dma_cookie_t dma_memcpy_pg_to_iovec(struct dma_chan *chan, struct iovec *iov,
page,
offset,
copy);
+ /* poll for a descriptor slot */
+ if (unlikely(dma_cookie < 0)) {
+ dma_async_issue_pending(chan);
+ continue;
+ }
len -= copy;
iov[iovec_idx].iov_len -= copy;