diff options
Diffstat (limited to 'drivers/dma/iovlock.c')
-rw-r--r-- | drivers/dma/iovlock.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/dma/iovlock.c b/drivers/dma/iovlock.c index 9f6fe46a9b87..c0a272c73682 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, | |||
183 | iov_byte_offset, | 183 | iov_byte_offset, |
184 | kdata, | 184 | kdata, |
185 | copy); | 185 | copy); |
186 | /* poll for a descriptor slot */ | ||
187 | if (unlikely(dma_cookie < 0)) { | ||
188 | dma_async_issue_pending(chan); | ||
189 | continue; | ||
190 | } | ||
186 | 191 | ||
187 | len -= copy; | 192 | len -= copy; |
188 | iov[iovec_idx].iov_len -= copy; | 193 | 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, | |||
248 | page, | 253 | page, |
249 | offset, | 254 | offset, |
250 | copy); | 255 | copy); |
256 | /* poll for a descriptor slot */ | ||
257 | if (unlikely(dma_cookie < 0)) { | ||
258 | dma_async_issue_pending(chan); | ||
259 | continue; | ||
260 | } | ||
251 | 261 | ||
252 | len -= copy; | 262 | len -= copy; |
253 | iov[iovec_idx].iov_len -= copy; | 263 | iov[iovec_idx].iov_len -= copy; |