DMA Engine development
 help / color / mirror / Atom feed
From: Seraj Mohammed <seraj.mohammed@sondrel.com>
To: Peter Ujfalusi <peter.ujfalusi@ti.com>,
	Seraj Alijan <seraj.alijan@sondrel.com>,
	vkoul@kernel.org
Cc: dmaengine@vger.kernel.org, dan.j.williams@intel.com,
	james.hartley@sondrel.com, sifan.naeem@sondrel.com,
	ed.blake@sondrel.com
Subject: [V2,5/5] dmaengine: Documentation: Add documentation for multi chan testing
Date: Fri, 31 Aug 2018 14:41:03 +0100	[thread overview]
Message-ID: <abdd703b-ad1a-2c15-0a35-571e83b9b8bd@sondrel.com> (raw)

Hello,

On 31/08/18 12:17, Peter Ujfalusi wrote:
> Hi,
> 
> On 2018-08-31 14:03, Seraj Alijan wrote:
>> Modify documentation to add multi channel testing support.
>>
>> Signed-off-by: Seraj Alijan <seraj.alijan@sondrel.com>
>> ---
>>  Documentation/driver-api/dmaengine/dmatest.rst | 27 ++++++++++++++++++++------
>>  1 file changed, 21 insertions(+), 6 deletions(-)
>>
>> diff --git a/Documentation/driver-api/dmaengine/dmatest.rst b/Documentation/driver-api/dmaengine/dmatest.rst
>> index 7ce5e71..0a7e4c3 100644
>> --- a/Documentation/driver-api/dmaengine/dmatest.rst
>> +++ b/Documentation/driver-api/dmaengine/dmatest.rst
>> @@ -26,28 +26,43 @@ Part 2 - When dmatest is built as a module
>>  
>>  Example of usage::
>>  
>> -    % modprobe dmatest channel=dma0chan0 timeout=2000 iterations=1 run=1
>> +    % modprobe dmatest timeout=2000 iterations=1 channel=dma0chan0 run=1
>>  
>>  ...or::
>>  
>>      % modprobe dmatest
>> -    % echo dma0chan0 > /sys/module/dmatest/parameters/channel
>>      % echo 2000 > /sys/module/dmatest/parameters/timeout
>>      % echo 1 > /sys/module/dmatest/parameters/iterations
>> +    % echo dma0chan0 > /sys/module/dmatest/parameters/channel
>>      % echo 1 > /sys/module/dmatest/parameters/run
>>  
>>  ...or on the kernel command line::
>>  
>> -    dmatest.channel=dma0chan0 dmatest.timeout=2000 dmatest.iterations=1 dmatest.run=1
>> +    dmatest.timeout=2000 dmatest.iterations=1 dmatest.channel=dma0chan0 dmatest.run=1
>> +
>> +Example of multi-channel test usage:
>> +    % modprobe dmatest
>> +    % echo 2000 > /sys/module/dmatest/parameters/timeout
>> +    % echo 1 > /sys/module/dmatest/parameters/iterations
>> +    % echo dma0chan0 > /sys/module/dmatest/parameters/channel
>> +    % echo dma0chan1 > /sys/module/dmatest/parameters/channel
>> +    % echo dma0chan2 > /sys/module/dmatest/parameters/channel
> 
> Can I still use:
> echo "" > /sys/module/dmatest/parameters/channel
> 
> to stop dmatest to run on the specific channel(s) or do I need to reboot
> the machine to do so?

is this behavior documented somewhere? or did you discover this from your
experience with using the module?
The short answer to your question is no, with this change you cannot stop
a test by echoing an empty string to the channel parameter, you will either
have to run the test, or reboot the machine.

Setting the channel parameter to an empty string will request all
channels up to "max_channels" parameter value. This is because with this
change, editing the channel parameter will invoke the process of allocating
a thread for the specified channel and storing that thread in a thread
list, after that, setting run to 1 will simply iterate through the thread
list and start all pending threads.

> I normally test multi channel memcpy with:
> echo 8000000 > /sys/module/dmatest/parameters/test_buf_size
> echo 2000 > /sys/module/dmatest/parameters/timeout
> echo 20 > /sys/module/dmatest/parameters/iterations
> echo 20 > /sys/module/dmatest/parameters/max_channels
> echo 1 > /sys/module/dmatest/parameters/run
> 
> So it will start running memtest on 20 channels.
> 
> If I do a test on specific channel (different DMA controller) I set the
> channel run the test and then with "" I can revert back to normal
> torture test.

Yes, but the problem is that you either run a test on all channels, or
a single channel. This change makes it possible to specify a list of
channels to test, for example we can now launch a test on channels 0,3,5,6
by doing

echo dma0chan0 > /sys/module/dmatest/parameters/channel
echo dma0chan3 > /sys/module/dmatest/parameters/channel
echo dma0chan5 > /sys/module/dmatest/parameters/channel
echo dma0chan6 > /sys/module/dmatest/parameters/channel
echo 1 > /sys/module/dmatest/parameters/run

as far as I'm aware this functionality was not possible before.

You can still run your torture test with a simple modification:

echo 8000000 > /sys/module/dmatest/parameters/test_buf_size
echo 2000 > /sys/module/dmatest/parameters/timeout
echo 20 > /sys/module/dmatest/parameters/iterations
echo 20 > /sys/module/dmatest/parameters/max_channels
echo "" > /sys/module/dmatest/parameters/channel << allocates 20 channels
echo 1 > /sys/module/dmatest/parameters/run

>> +    % echo 1 > /sys/module/dmatest/parameters/run
>>  
>> +Note: the channel parameter should always be the last parameter set prior to
>> +running the test (setting run=1), this is because upon setting the channel
>> +parameter, that specific channel is requested using the dmaengine and a thread
>> +is created with the existing parameters. This thread is set as pending
>> +and will be executed once run is set to 1. Any parameters set after the thread
>> +is created are not applied.
>>  .. hint::
>>    available channel list could be extracted by running the following command::
>>  
>>      % ls -1 /sys/class/dma/
>>  
>> -Once started a message like "dmatest: Started 1 threads using dma0chan0" is
>> -emitted. After that only test failure messages are reported until the test
>> -stops.
>> +Once started a message like " dmatest: Added 1 threads using dma0chan0" is
>> +emitted. A thread for that specific channel is created and is now pending, the
>> +pending thread is started once run is to 1.
>>  
>>  Note that running a new test will not stop any in progress test.
>>  
>>
> 
> - Péter
> 
> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
> 

- Seraj

             reply	other threads:[~2018-08-31 13:41 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-31 13:41 Seraj Mohammed [this message]
  -- strict thread matches above, loose matches on Subject: below --
2018-09-04 19:15 [V2,5/5] dmaengine: Documentation: Add documentation for multi chan testing Peter Ujfalusi
2018-09-03 14:49 Seraj Mohammed
2018-09-03  8:19 Peter Ujfalusi
2018-08-31 15:48 Seraj Mohammed
2018-08-31 15:42 Seraj Mohammed
2018-08-31 15:01 Seraj Mohammed
2018-08-31 14:22 Peter Ujfalusi
2018-08-31 14:02 Peter Ujfalusi
2018-08-31 11:29 Peter Ujfalusi
2018-08-31 11:17 Peter Ujfalusi
2018-08-31 11:03 Seraj Alijan

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=abdd703b-ad1a-2c15-0a35-571e83b9b8bd@sondrel.com \
    --to=seraj.mohammed@sondrel.com \
    --cc=dan.j.williams@intel.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=ed.blake@sondrel.com \
    --cc=james.hartley@sondrel.com \
    --cc=peter.ujfalusi@ti.com \
    --cc=seraj.alijan@sondrel.com \
    --cc=sifan.naeem@sondrel.com \
    --cc=vkoul@kernel.org \
    /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