aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/dma
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/ioat/dma_v2.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/dma/ioat/dma_v2.c b/drivers/dma/ioat/dma_v2.c
index effd140fc042..54d1a3c24e9c 100644
--- a/drivers/dma/ioat/dma_v2.c
+++ b/drivers/dma/ioat/dma_v2.c
@@ -507,6 +507,7 @@ int ioat2_alloc_chan_resources(struct dma_chan *c)
507 struct ioat_ring_ent **ring; 507 struct ioat_ring_ent **ring;
508 u64 status; 508 u64 status;
509 int order; 509 int order;
510 int i = 0;
510 511
511 /* have we already been set up? */ 512 /* have we already been set up? */
512 if (ioat->ring) 513 if (ioat->ring)
@@ -547,8 +548,11 @@ int ioat2_alloc_chan_resources(struct dma_chan *c)
547 ioat2_start_null_desc(ioat); 548 ioat2_start_null_desc(ioat);
548 549
549 /* check that we got off the ground */ 550 /* check that we got off the ground */
550 udelay(5); 551 do {
551 status = ioat_chansts(chan); 552 udelay(1);
553 status = ioat_chansts(chan);
554 } while (i++ < 20 && !is_ioat_active(status) && !is_ioat_idle(status));
555
552 if (is_ioat_active(status) || is_ioat_idle(status)) { 556 if (is_ioat_active(status) || is_ioat_idle(status)) {
553 set_bit(IOAT_RUN, &chan->state); 557 set_bit(IOAT_RUN, &chan->state);
554 return 1 << ioat->alloc_order; 558 return 1 << ioat->alloc_order;