summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/mps.4 3.html
blob: 504ec660e82799cf6480d3e80fd717d3f3294325 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
<table class="head">
  <tr>
    <td class="head-ltitle">MPS(4)</td>
    <td class="head-vol">Device Drivers Manual</td>
    <td class="head-rtitle">MPS(4)</td>
  </tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">mps</code> &#x2014; <span class="Nd">LSI
    Fusion-MPT 2 IT/IR 6Gb/s Serial Attached SCSI/SATA driver</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<p class="Pp">To compile this driver into the kernel, place these lines in the
    kernel configuration file:</p>
<div class="Bd Pp Bd-indent"><code class="Cd">device pci</code>
<br/>
<code class="Cd">device scbus</code>
<br/>
<code class="Cd">device mps</code></div>
<p class="Pp">The driver can be loaded as a module at boot time by placing this
    line in <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>mps_load=&quot;YES&quot;</pre>
</div>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">The <code class="Nm">mps</code> driver provides support for
    Broadcom Ltd./Avago Tech (LSI) Fusion-MPT 2 IT/IR SAS controllers and
    WarpDrive solid state storage cards.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="HARDWARE"><a class="permalink" href="#HARDWARE">HARDWARE</a></h1>
<p class="Pp">These controllers are supported by the <code class="Nm">mps</code>
    driver:</p>
<p class="Pp"></p>
<ul class="Bl-bullet Bl-compact">
  <li>Broadcom Ltd./Avago Tech (LSI) SAS 2004 (4 Port SAS)</li>
  <li>Broadcom Ltd./Avago Tech (LSI) SAS 2008 (8 Port SAS)</li>
  <li>Broadcom Ltd./Avago Tech (LSI) SAS 2108 (8 Port SAS)</li>
  <li>Broadcom Ltd./Avago Tech (LSI) SAS 2116 (16 Port SAS)</li>
  <li>Broadcom Ltd./Avago Tech (LSI) SAS 2208 (8 Port SAS)</li>
  <li>Broadcom Ltd./Avago Tech (LSI) SAS 2308 (8 Port SAS)</li>
  <li>Broadcom Ltd./Avago Tech (LSI) SSS6200 Solid State Storage</li>
  <li>Intel Integrated RAID Module RMS25JB040</li>
  <li>Intel Integrated RAID Module RMS25JB080</li>
  <li>Intel Integrated RAID Module RMS25KB040</li>
  <li>Intel Integrated RAID Module RMS25KB080</li>
</ul>
</section>
<section class="Sh">
<h1 class="Sh" id="CONFIGURATION"><a class="permalink" href="#CONFIGURATION">CONFIGURATION</a></h1>
<p class="Pp">In all tunable descriptions below, X represents the adapter
    number.</p>
<p class="Pp">To disable MSI interrupts for all <code class="Nm">mps</code>
    driver instances, set this tunable value in
    <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>hw.mps.disable_msi=1</pre>
</div>
<p class="Pp">To disable MSI interrupts for a specific
    <code class="Nm">mps</code> driver instance, set this tunable value in
    <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>dev.mps.X.disable_msi=1</pre>
</div>
<p class="Pp">To disable MSI-X interrupts for all <code class="Nm">mps</code>
    driver instances, set this tunable value in
    <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>hw.mps.disable_msix=1</pre>
</div>
<p class="Pp">To disable MSI-X interrupts for a specific
    <code class="Nm">mps</code> driver instance, set this tunable value in
    <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>dev.mps.X.disable_msix=1</pre>
</div>
<p class="Pp">To set the maximum number of DMA chains allocated for all
    adapters, set this tunable in <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>hw.mps.max_chains=NNNN</pre>
</div>
<p class="Pp">To set the maximum number of DMA chains allocated for a specific
    adapter, set this tunable in <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>dev.mps.X.max_chains=NNNN</pre>
</div>
<p class="Pp">The default max_chains value is 16384.</p>
<p class="Pp">The current number of free chain frames is stored in the
    dev.mps.X.chain_free <a class="Xr">sysctl(8)</a> variable.</p>
<p class="Pp">The lowest number of free chain frames seen since boot is stored
    in the dev.mps.X.chain_free_lowwater <a class="Xr">sysctl(8)</a>
  variable.</p>
<p class="Pp">The number of times that chain frame allocations have failed since
    boot is stored in the dev.mps.X.chain_alloc_fail <a class="Xr">sysctl(8)</a>
    variable. This can be used to determine whether the max_chains tunable
    should be increased to help performance.</p>
<p class="Pp">The current number of active I/O commands is shown in the
    dev.mps.X.io_cmds_active <a class="Xr">sysctl(8)</a> variable.</p>
<p class="Pp">To set the maximum number of pages that will be used per I/O for
    all adapters, set this tunable in <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>hw.mps.max_io_pages=NNNN</pre>
</div>
<p class="Pp">To set the maximum number of pages that will be used per I/O for a
    specific adapter, set this tunable in <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>dev.mps.X.max_io_pages=NNNN</pre>
</div>
<p class="Pp">The default max_io_pages value is -1, meaning that the maximum I/O
    size that will be used per I/O will be calculated using the IOCFacts values
    stored in the controller. The lowest value that the driver will use for
    max_io_pages is 1, otherwise IOCFacts will be used to calculate the maximum
    I/O size. The smaller I/O size calculated from either max_io_pages or
    IOCFacts will be the maximum I/O size used by the driver.</p>
<p class="Pp">The highest number of active I/O commands seen since boot is
    stored in the dev.mps.X.io_cmds_highwater <a class="Xr">sysctl(8)</a>
    variable.</p>
<p class="Pp">Devices can be excluded from <code class="Nm">mps</code> control
    for all adapters by setting this tunable in
    <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>hw.mps.exclude_ids=Y</pre>
</div>
<p class="Pp">Y represents the target ID of the device. If more than one device
    is to be excluded, target IDs are separated by commas.</p>
<p class="Pp">Devices can be excluded from <code class="Nm">mps</code> control
    for a specific adapter by setting this tunable in
    <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>dev.mps.X.exclude_ids=Y</pre>
</div>
<p class="Pp">Y represents the target ID of the device. If more than one device
    is to be excluded, target IDs are separated by commas.</p>
<p class="Pp" id="StartStopUnit">The adapter can issue the
    <a class="permalink" href="#StartStopUnit"><b class="Sy">StartStopUnit</b></a>
    SCSI command to SATA direct-access devices during shutdown. This allows the
    device to quiesce powering down. To control this feature for all adapters,
    set the</p>
<div class="Bd Pp Bd-indent Li">
<pre>hw.mps.enable_ssu</pre>
</div>
<p class="Pp">tunable in <a class="Xr">loader.conf(5)</a> to one of these
    values:</p>
<div class="Bd-indent">
<dl class="Bl-tag">
  <dt>0</dt>
  <dd>Do not send SSU to either HDDs or SSDs.</dd>
  <dt>1</dt>
  <dd>Send SSU to SSDs, but not to HDDs. This is the default value.</dd>
  <dt>2</dt>
  <dd>Send SSU to HDDs, but not to SSDs.</dd>
  <dt>3</dt>
  <dd>Send SSU to both HDDs and SSDs.</dd>
</dl>
</div>
<p class="Pp">To control this feature for a specific adapter, set this tunable
    value in <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>dev.mps.X.enable_ssu</pre>
</div>
<p class="Pp">The same set of values are valid as when setting this tunable for
    all adapters.</p>
<p class="Pp">SATA disks that take several seconds to spin up and fail the SATA
    Identify command might not be discovered by the driver. This problem can
    sometimes be overcome by increasing the value of the spinup wait time in
    <a class="Xr">loader.conf(5)</a> with the</p>
<div class="Bd Pp Bd-indent Li">
<pre>hw.mps.spinup_wait_time=NNNN</pre>
</div>
<p class="Pp">tunable. NNNN represents the number of seconds to wait for SATA
    devices to spin up when the device fails the initial SATA Identify
  command.</p>
<p class="Pp">Spinup wait times can be set for specific adapters in
    <a class="Xr">loader.conf(5)</a>: with the</p>
<div class="Bd Pp Bd-indent Li">
<pre>dev.mps.X.spinup_wait_time=NNNN</pre>
</div>
<p class="Pp">tunable. NNNN is the number of seconds to wait for SATA devices to
    spin up when they fail the initial SATA Identify command.</p>
<p class="Pp">The driver can map devices discovered by the adapter so that
    target IDs corresponding to a specific device persist across resets and
    reboots. In some cases it is possible for devices to lose their mapped IDs
    due to unexpected behavior from certain hardware, such as some types of
    enclosures. To overcome this problem, a tunable is provided that will force
    the driver to map devices using the Phy number associated with the device.
    This feature is not recommended if the topology includes multiple
    enclosures/expanders. If multiple enclosures/expanders are present in the
    topology, Phy numbers are repeated, causing all devices at these Phy numbers
    except the first device to fail enumeration. To control this feature for all
    adapters, set the</p>
<div class="Bd Pp Bd-indent Li">
<pre>hw.mps.use_phy_num</pre>
</div>
<p class="Pp">tunable in <a class="Xr">loader.conf(5)</a> to one of these
    values:</p>
<div class="Bd-indent">
<dl class="Bl-tag">
  <dt>-1</dt>
  <dd>Only use Phy numbers to map devices and bypass the driver's mapping
    logic.</dd>
  <dt>0</dt>
  <dd>Never use Phy numbers to map devices.</dd>
  <dt>1</dt>
  <dd>Use Phy numbers to map devices, but only if the driver's mapping logic
      fails to map the device that is being enumerated. This is the default
      value.</dd>
</dl>
</div>
<p class="Pp">To control this feature for a specific adapter, set this tunable
    value in <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>dev.mps.X.use_phy_num</pre>
</div>
<p class="Pp">The same set of values are valid as when setting this tunable for
    all adapters.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="DEBUGGING"><a class="permalink" href="#DEBUGGING">DEBUGGING</a></h1>
<p class="Pp">Driver diagnostic printing is controlled in
    <a class="Xr">loader.conf(5)</a> by using the global
    <var class="Va">hw.mps.debug_level</var> and per-device
    <var class="Va">dev.mps.X.debug_level</var> tunables. One can alter the
    debug level for any adapter at run-time using the
    <a class="Xr">sysctl(8)</a> variable
    <var class="Va">dev.mps.X.debug_level</var>.</p>
<p class="Pp">All <var class="Va">debug_level</var> variables can be named by
    either an integer value or a text string. Multiple values can be specified
    together by either ORing the integer values or by providing a
    comma-separated list of names. A text string prefixed by &quot;+&quot; adds
    the specified debug levels to the existing set, while the prefix
    &quot;-&quot; removes them from the existing set. The current
    <var class="Va">debug_level</var> status is reported in both formats for
    convenience. The following levels are available:</p>
<table class="Bl-column Bd-indent">
  <tr id="Flag">
    <td><a class="permalink" href="#Flag"><i class="Em">Flag</i></a></td>
    <td><a class="permalink" href="#Name"><i class="Em" id="Name">Name</i></a></td>
    <td><a class="permalink" href="#Description"><i class="Em" id="Description">Description</i></a></td>
  </tr>
  <tr>
    <td>0x0001</td>
    <td>info</td>
    <td>Basic information (enabled by default)</td>
  </tr>
  <tr>
    <td>0x0002</td>
    <td>fault</td>
    <td>Driver faults (enabled by default)</td>
  </tr>
  <tr>
    <td>0x0004</td>
    <td>event</td>
    <td>Controller events</td>
  </tr>
  <tr>
    <td>0x0008</td>
    <td>log</td>
    <td>Logging data from controller</td>
  </tr>
  <tr>
    <td>0x0010</td>
    <td>recovery</td>
    <td>Tracing of recovery operations</td>
  </tr>
  <tr>
    <td>0x0020</td>
    <td>error</td>
    <td>Parameter errors and programming bugs</td>
  </tr>
  <tr>
    <td>0x0040</td>
    <td>init</td>
    <td>System initialization operations</td>
  </tr>
  <tr>
    <td>0x0080</td>
    <td>xinfo</td>
    <td>More detailed information</td>
  </tr>
  <tr>
    <td>0x0100</td>
    <td>user</td>
    <td>Tracing of user-generated commands (IOCTL)</td>
  </tr>
  <tr>
    <td>0x0200</td>
    <td>mapping</td>
    <td>Tracing of device mapping</td>
  </tr>
  <tr>
    <td>0x0400</td>
    <td>trace</td>
    <td>Tracing through driver functions</td>
  </tr>
</table>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
  ALSO</a></h1>
<p class="Pp"><a class="Xr">cam(4)</a>, <a class="Xr">cd(4)</a>,
    <a class="Xr">ch(4)</a>, <a class="Xr">da(4)</a>, <a class="Xr">mpr(4)</a>,
    <a class="Xr">mpt(4)</a>, <a class="Xr">pci(4)</a>, <a class="Xr">sa(4)</a>,
    <a class="Xr">scsi(4)</a>, <a class="Xr">targ(4)</a>,
    <a class="Xr">loader.conf(5)</a>, <a class="Xr">mpsutil(8)</a>,
    <a class="Xr">sysctl(8)</a></p>
</section>
<section class="Sh">
<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
<p class="Pp">The <code class="Nm">mps</code> driver first appeared in
    <span class="Ux">FreeBSD 9.0</span>.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp">The <code class="Nm">mps</code> driver was originally written by
    <span class="An">Scott Long</span>
    &lt;<a class="Mt" href="mailto:scottl@FreeBSD.org">scottl@FreeBSD.org</a>&gt;.
    It has been improved and tested by LSI Corporation, Avago Technologies
    (formerly LSI), and Broadcom Ltd. (formerly Avago).</p>
<p class="Pp">This manual page was written by <span class="An">Ken Merry</span>
    &lt;<a class="Mt" href="mailto:ken@FreeBSD.org">ken@FreeBSD.org</a>&gt; with
    additional input from <span class="An">Stephen McConnell</span>
    &lt;<a class="Mt" href="mailto:slm@FreeBSD.org">slm@FreeBSD.org</a>&gt;.</p>
</section>
</div>
<table class="foot">
  <tr>
    <td class="foot-date">June 1, 2019</td>
    <td class="foot-os">FreeBSD 15.0</td>
  </tr>
</table>