|
|
@@ -642,11 +642,9 @@ static int dmatest_func(void *data)
|
|
|
srcs[i] = um->addr[i] + src_off;
|
|
|
ret = dma_mapping_error(dev->dev, um->addr[i]);
|
|
|
if (ret) {
|
|
|
- dmaengine_unmap_put(um);
|
|
|
result("src mapping error", total_tests,
|
|
|
src_off, dst_off, len, ret);
|
|
|
- failed_tests++;
|
|
|
- continue;
|
|
|
+ goto error_unmap_continue;
|
|
|
}
|
|
|
um->to_cnt++;
|
|
|
}
|
|
|
@@ -661,11 +659,9 @@ static int dmatest_func(void *data)
|
|
|
DMA_BIDIRECTIONAL);
|
|
|
ret = dma_mapping_error(dev->dev, dsts[i]);
|
|
|
if (ret) {
|
|
|
- dmaengine_unmap_put(um);
|
|
|
result("dst mapping error", total_tests,
|
|
|
src_off, dst_off, len, ret);
|
|
|
- failed_tests++;
|
|
|
- continue;
|
|
|
+ goto error_unmap_continue;
|
|
|
}
|
|
|
um->bidi_cnt++;
|
|
|
}
|
|
|
@@ -693,12 +689,10 @@ static int dmatest_func(void *data)
|
|
|
}
|
|
|
|
|
|
if (!tx) {
|
|
|
- dmaengine_unmap_put(um);
|
|
|
result("prep error", total_tests, src_off,
|
|
|
dst_off, len, ret);
|
|
|
msleep(100);
|
|
|
- failed_tests++;
|
|
|
- continue;
|
|
|
+ goto error_unmap_continue;
|
|
|
}
|
|
|
|
|
|
done->done = false;
|
|
|
@@ -707,12 +701,10 @@ static int dmatest_func(void *data)
|
|
|
cookie = tx->tx_submit(tx);
|
|
|
|
|
|
if (dma_submit_error(cookie)) {
|
|
|
- dmaengine_unmap_put(um);
|
|
|
result("submit error", total_tests, src_off,
|
|
|
dst_off, len, ret);
|
|
|
msleep(100);
|
|
|
- failed_tests++;
|
|
|
- continue;
|
|
|
+ goto error_unmap_continue;
|
|
|
}
|
|
|
dma_async_issue_pending(chan);
|
|
|
|
|
|
@@ -725,16 +717,14 @@ static int dmatest_func(void *data)
|
|
|
dmaengine_unmap_put(um);
|
|
|
result("test timed out", total_tests, src_off, dst_off,
|
|
|
len, 0);
|
|
|
- failed_tests++;
|
|
|
- continue;
|
|
|
+ goto error_unmap_continue;
|
|
|
} else if (status != DMA_COMPLETE) {
|
|
|
dmaengine_unmap_put(um);
|
|
|
result(status == DMA_ERROR ?
|
|
|
"completion error status" :
|
|
|
"completion busy status", total_tests, src_off,
|
|
|
dst_off, len, ret);
|
|
|
- failed_tests++;
|
|
|
- continue;
|
|
|
+ goto error_unmap_continue;
|
|
|
}
|
|
|
|
|
|
dmaengine_unmap_put(um);
|
|
|
@@ -779,6 +769,12 @@ static int dmatest_func(void *data)
|
|
|
verbose_result("test passed", total_tests, src_off,
|
|
|
dst_off, len, 0);
|
|
|
}
|
|
|
+
|
|
|
+ continue;
|
|
|
+
|
|
|
+error_unmap_continue:
|
|
|
+ dmaengine_unmap_put(um);
|
|
|
+ failed_tests++;
|
|
|
}
|
|
|
ktime = ktime_sub(ktime_get(), ktime);
|
|
|
ktime = ktime_sub(ktime, comparetime);
|