diff options
Diffstat (limited to 'drivers/dma')
-rw-r--r-- | drivers/dma/ioat/dma_v2.c | 8 |
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; |