From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Vinod Koul <vinod.koul@intel.com>,
Viresh Kumar <viresh.linux@gmail.com>,
linux-kernel@vger.kernel.org,
spear-devel <spear-devel@list.st.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Subject: [PATCH] dmatest: terminate all ongoing transfers before submitting new one
Date: Tue, 16 Oct 2012 11:45:20 +0300 [thread overview]
Message-ID: <1350377120-27657-1-git-send-email-andriy.shevchenko@linux.intel.com> (raw)
The following error messages come if we have software LLP emulation enabled and
enough threads running.
modprobe dmatest iterations=40
[ 168.048601] dmatest: Started 1 threads using dma0chan0
[ 168.054546] dmatest: Started 1 threads using dma0chan1
[ 168.060441] dmatest: Started 1 threads using dma0chan2
[ 168.066333] dmatest: Started 1 threads using dma0chan3
[ 168.072250] dmatest: Started 1 threads using dma0chan4
[ 168.078144] dmatest: Started 1 threads using dma0chan5
[ 168.084057] dmatest: Started 1 threads using dma0chan6
[ 168.089948] dmatest: Started 1 threads using dma0chan7
[ 170.032962] dma0chan1-copy0: terminating after 40 tests, 0 failures (status 0)
[ 170.041274] dma0chan0-copy0: terminating after 40 tests, 0 failures (status 0)
[ 170.597559] dma0chan2-copy0: terminating after 40 tests, 0 failures (status 0)
[ 171.085059] dma0chan7-copy0: #0: test timed out
[ 171.839710] dma0chan3-copy0: terminating after 40 tests, 0 failures (status 0)
[ 172.146071] dma0chan4-copy0: terminating after 40 tests, 0 failures (status 0)
[ 172.220802] dma0chan7-copy0: #1: got completion callback, but status is 'in progress'
[ 172.242049] dma0chan7-copy0: #2: got completion callback, but status is 'in progress'
[ 172.281063] dma0chan7-copy0: #3: got completion callback, but status is 'in progress'
[ 172.400866] dma0chan7-copy0: #4: got completion callback, but status is 'in progress'
[ 172.471799] dma0chan7-copy0: #5: got completion callback, but status is 'in progress'
[ 172.613996] dma0chan7-copy0: #6: got completion callback, but status is 'in progress'
[ 172.670286] dma0chan7-copy0: #7: got completion callback, but status is 'in progress'
[ 172.750763] dma0chan7-copy0: #8: got completion callback, but status is 'in progress'
[ 172.777452] dma0chan5-copy0: terminating after 40 tests, 0 failures (status 0)
[ 172.788740] dma0chan7-copy0: #9: got completion callback, but status is 'in progress'
[ 172.845156] dma0chan7-copy0: #10: got completion callback, but status is 'in progress'
[ 172.906593] dma0chan7-copy0: #11: got completion callback, but status is 'in progress'
[ 173.181515] dma0chan6-copy0: terminating after 40 tests, 0 failures (status 0)
[ 173.512838] dma0chan7-copy0: terminating after 40 tests, 12 failures (status 0)
The patch fixes dmatest module to stop any ongoing transfer before submitting
new one. Perhaps there is a better solution and driver logic needs to be fixed
as well.
After patch we will have
modprobe dmatest iterations=50
[ 84.027375] dmatest: Started 1 threads using dma0chan0
[ 84.033282] dmatest: Started 1 threads using dma0chan1
[ 84.039182] dmatest: Started 1 threads using dma0chan2
[ 84.045089] dmatest: Started 1 threads using dma0chan3
[ 84.051003] dmatest: Started 1 threads using dma0chan4
[ 84.056916] dmatest: Started 1 threads using dma0chan5
[ 84.062828] dmatest: Started 1 threads using dma0chan6
[ 84.068714] dmatest: Started 1 threads using dma0chan7
[ 86.538284] dma0chan0-copy0: terminating after 50 tests, 0 failures (status 0)
[ 86.842221] dma0chan1-copy0: terminating after 50 tests, 0 failures (status 0)
[ 87.060460] dma0chan6-copy0: #0: test timed out
[ 87.065614] dma0chan7-copy0: #0: test timed out
[ 87.220321] dma0chan2-copy0: terminating after 50 tests, 0 failures (status 0)
[ 88.595061] dma0chan3-copy0: terminating after 50 tests, 0 failures (status 0)
[ 89.152170] dma0chan4-copy0: terminating after 50 tests, 0 failures (status 0)
[ 89.955059] dma0chan5-copy0: terminating after 50 tests, 0 failures (status 0)
[ 90.697073] dma0chan6-copy0: terminating after 50 tests, 1 failures (status 0)
[ 90.893422] dma0chan7-copy0: terminating after 50 tests, 1 failures (status 0)
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/dma/dmatest.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
index 24225f0..583f882 100644
--- a/drivers/dma/dmatest.c
+++ b/drivers/dma/dmatest.c
@@ -399,6 +399,9 @@ static int dmatest_func(void *data)
continue;
}
+ /* Stop any ongoing transfers here */
+ chan->device->device_control(chan, DMA_TERMINATE_ALL, 0);
+
done.done = false;
tx->callback = dmatest_callback;
tx->callback_param = &done;
--
1.7.10.4
next reply other threads:[~2012-10-16 8:45 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-16 8:45 Andy Shevchenko [this message]
2012-10-16 8:56 ` [PATCH] dmatest: terminate all ongoing transfers before submitting new one viresh kumar
2012-10-16 9:35 ` Andy Shevchenko
2012-10-16 9:52 ` Viresh Kumar
2012-10-16 10:14 ` Andy Shevchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1350377120-27657-1-git-send-email-andriy.shevchenko@linux.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=spear-devel@list.st.com \
--cc=vinod.koul@intel.com \
--cc=viresh.linux@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox