]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - tools/tools/ioat/ioatcontrol.8
MFC ioat(4) driver in its present state.
[FreeBSD/stable/10.git] / tools / tools / ioat / ioatcontrol.8
1 .\" Copyright (c) 2015 EMC / Isilon Storage Division
2 .\" All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\"
13 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
14 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
17 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 .\" SUCH DAMAGE.
24 .\"
25 .\" $FreeBSD$
26 .\"
27 .Dd December 14, 2015
28 .Dt IOATCONTROL 8
29 .Os
30 .Sh NAME
31 .Nm ioatcontrol
32 .Nd Userspace tool to test
33 .Xr ioat 4
34 .Sh SYNOPSIS
35 .Nm
36 .Op Fl c Ar period
37 .Op Fl E
38 .Op Fl f
39 .Op Fl m
40 .Op Fl V
41 .Op Fl z
42 .Ar channel_number
43 .Ar num_txns
44 .Ar [ bufsize
45 .Ar [ chain-len
46 .Ar [ duration ] ] ]
47 .Nm
48 .Fl r
49 .Op Fl c Ar period
50 .Op Fl v
51 .Op Fl V
52 .Op Fl w
53 .Op Fl z
54 .Ar channel_number
55 .Ar address
56 .Ar [ bufsize ]
57 .Sh DESCRIPTION
58 .Nm
59 allows one to issue some number of test operations to the
60 .Xr ioat 4
61 driver on a specific hardware channel.
62 The arguments are as follows:
63 .Bl -tag -width Ds
64 .It Fl c Ar period
65 Configure the channel's interrupt coalescing period, in microseconds.
66 .It Fl E
67 Test non-contiguous 8k copy.
68 .It Fl f
69 Test block fill (by default,
70 .Nm
71 tests copy)
72 .It Fl m
73 Test memcpy instead of DMA.
74 .It Fl V
75 Verify copies/fills for accuracy
76 .It Fl z
77 Zero device statistics before running test.
78 .El
79 .Pp
80 Alternatively one can use
81 .Nm
82 .Fl r
83 to issue DMA to or from a specific
84 .Ar address .
85 The arguments in "raw" mode are:
86 .Bl -tag -width Ds
87 .It Fl c Ar period
88 As above.
89 .It Fl v
90 .Ar address
91 is a kernel virtual address (by default,
92 .Ar address
93 is assumed to be a physical address)
94 .It Fl V
95 Dump the resulting hex to syslog
96 .It Fl w
97 Write to the specified
98 .Ar address
99 (by default,
100 .Nm
101 .Fl r
102 reads)
103 .It Fl z
104 As above.
105 .El
106 .Pp
107 .Nm
108 operates in one of two modes; if the
109 .Ar duration
110 argument is passed,
111 .Nm
112 tries to estimate the copy rate in bytes per second by running
113 .Ar num_txns
114 repeatedly in loop.
115 If
116 .Ar duration
117 is not passed,
118 .Nm
119 only runs through
120 .Ar num_txns
121 once and prints the total bytes copied, as well as error information.
122 .Pp
123 The
124 .Ar bufsize
125 argument determines the size of buffers to use for each
126 .Fn ioat_copy
127 invocation.
128 The default is 256 KB.
129 In raw mode, the default is 4 KB.
130 .Pp
131 The
132 .Ar chain-len
133 argument determines the number of copies to chain together in a single DMA
134 transaction.
135 The default is 1, and the maximum is currently 4.
136 .Pp
137 The
138 .Ar duration
139 argument specifies an approximate time limit for the test, in milliseconds.
140 .Pp
141 The test will allocate two chunks of memory for each component of each
142 transaction's chain.
143 It will initialize them with specific data patterns.
144 During the test, it submits DMA requests to copy between pairs of buffers.
145 If the
146 .Fl V
147 flag was specified, it will compare the contents in the callback for a copy
148 error.
149 .Sh FILES
150 .Pa /dev/ioat_test
151 .Pp
152 The interface between
153 .Nm
154 and
155 .Xr ioat 4 .
156 .Xr ioat 4
157 exposes it with
158 .Cd hw.ioat.enable_ioat_test=1 .
159 .Sh DIAGNOSTICS
160 The wait channel
161 .Va test_submit
162 indicates that the test code has enqueued all requested transactions and is
163 waiting on the IOAT hardware to complete one before issuing another operation.
164 .Sh SEE ALSO
165 .Xr ioat 4
166 .Sh HISTORY
167 The
168 .Xr ioat 4
169 driver first appeared in
170 .Fx 11.0 .
171 .Sh AUTHORS
172 The
173 .Xr ioat 4
174 driver and
175 .Nm
176 tool were developed by
177 .An \&Jim Harris Aq Mt jimharris@FreeBSD.org ,
178 .An \&Carl Delsey Aq Mt carl.r.delsey@intel.com ,
179 and
180 .An \&Conrad Meyer Aq Mt cem@FreeBSD.org .
181 This manual page was written by
182 .An \&Conrad Meyer Aq Mt cem@FreeBSD.org .