Commit | Line | Data |
---|---|---|
851b7e16 AS |
1 | DMA Test Guide |
2 | ============== | |
3 | ||
4 | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | |
5 | ||
6 | This small document introduces how to test DMA drivers using dmatest module. | |
7 | ||
8 | Part 1 - How to build the test module | |
9 | ||
10 | The menuconfig contains an option that could be found by following path: | |
11 | Device Drivers -> DMA Engine support -> DMA Test client | |
12 | ||
13 | In the configuration file the option called CONFIG_DMATEST. The dmatest could | |
14 | be built as module or inside kernel. Let's consider those cases. | |
15 | ||
16 | Part 2 - When dmatest is built as a module... | |
17 | ||
18 | After mounting debugfs and loading the module, the /sys/kernel/debug/dmatest | |
a6c268d0 AS |
19 | folder with nodes will be created. There are two important files located. First |
20 | is the 'run' node that controls run and stop phases of the test, and the second | |
21 | one, 'results', is used to get the test case results. | |
851b7e16 AS |
22 | |
23 | Note that in this case test will not run on load automatically. | |
24 | ||
25 | Example of usage: | |
a6c268d0 AS |
26 | % echo dma0chan0 > /sys/module/dmatest/parameters/channel |
27 | % echo 2000 > /sys/module/dmatest/parameters/timeout | |
28 | % echo 1 > /sys/module/dmatest/parameters/iterations | |
851b7e16 AS |
29 | % echo 1 > /sys/kernel/debug/dmatest/run |
30 | ||
31 | Hint: available channel list could be extracted by running the following | |
32 | command: | |
33 | % ls -1 /sys/class/dma/ | |
34 | ||
35 | After a while you will start to get messages about current status or error like | |
36 | in the original code. | |
37 | ||
bcc567e3 | 38 | Note that running a new test will not stop any in progress test. |
851b7e16 | 39 | |
3e5ccd86 AS |
40 | The following command should return actual state of the test. |
41 | % cat /sys/kernel/debug/dmatest/run | |
42 | ||
43 | To wait for test done the user may perform a busy loop that checks the state. | |
44 | ||
45 | % while [ $(cat /sys/kernel/debug/dmatest/run) = "Y" ] | |
46 | > do | |
47 | > echo -n "." | |
48 | > sleep 1 | |
49 | > done | |
50 | > echo | |
51 | ||
851b7e16 AS |
52 | Part 3 - When built-in in the kernel... |
53 | ||
54 | The module parameters that is supplied to the kernel command line will be used | |
55 | for the first performed test. After user gets a control, the test could be | |
bcc567e3 AS |
56 | re-run with the same or different parameters. For the details see the above |
57 | section "Part 2 - When dmatest is built as a module..." | |
851b7e16 | 58 | |
a6c268d0 AS |
59 | In both cases the module parameters are used as the actual values for the test |
60 | case. You always could check them at run-time by running | |
851b7e16 | 61 | % grep -H . /sys/module/dmatest/parameters/* |
95019c8c AS |
62 | |
63 | Part 4 - Gathering the test results | |
64 | ||
65 | The module provides a storage for the test results in the memory. The gathered | |
66 | data could be used after test is done. | |
67 | ||
68 | The special file 'results' in the debugfs represents gathered data of the in | |
69 | progress test. The messages collected are printed to the kernel log as well. | |
70 | ||
71 | Example of output: | |
72 | % cat /sys/kernel/debug/dmatest/results | |
73 | dma0chan0-copy0: #1: No errors with src_off=0x7bf dst_off=0x8ad len=0x3fea (0) | |
74 | ||
75 | The message format is unified across the different types of errors. A number in | |
76 | the parens represents additional information, e.g. error code, error counter, | |
77 | or status. | |
78 | ||
d86b2f29 AS |
79 | Comparison between buffers is stored to the dedicated structure. |
80 | ||
81 | Note that the verify result is now accessible only via file 'results' in the | |
82 | debugfs. |