2 .\" Copyright (c) 2010 Spectra Logic Corporation
3 .\" Copyright (c) 2014 LSI Corp
4 .\" Copyright (c) 2015-2017 Avago Technologies
5 .\" Copyright (c) 2015-2017 Broadcom Ltd.
6 .\" All rights reserved.
8 .\" Redistribution and use in source and binary forms, with or without
9 .\" modification, are permitted provided that the following conditions
11 .\" 1. Redistributions of source code must retain the above copyright
12 .\" notice, this list of conditions, and the following disclaimer,
13 .\" without modification.
14 .\" 2. Redistributions in binary form must reproduce at minimum a disclaimer
15 .\" substantially similar to the "NO WARRANTY" disclaimer below
16 .\" ("Disclaimer") and any redistribution must be conditioned upon
17 .\" including a substantially similar Disclaimer requirement for further
18 .\" binary redistribution.
21 .\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 .\" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 .\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
24 .\" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 .\" HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
29 .\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
30 .\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 .\" POSSIBILITY OF SUCH DAMAGES.
33 .\" mpr driver man page.
35 .\" Author: Ken Merry <ken@FreeBSD.org>
36 .\" Author: Stephen McConnell <slm@FreeBSD.org>
46 .Nd "LSI Fusion-MPT 3/3.5 IT/IR 12Gb/s Serial Attached SCSI/SATA/PCIe driver"
48 To compile this driver into the kernel, place these lines in the kernel
50 .Bd -ragged -offset indent
56 The driver can be loaded as a module at boot time by placing this line in
58 .Bd -literal -offset indent
64 driver provides support for Broadcom Ltd./Avago Tech (LSI)
65 Fusion-MPT 3/3.5 IT/IR
69 These controllers are supported by the
75 Broadcom Ltd./Avago Tech (LSI) SAS 3004 (4 Port SAS)
77 Broadcom Ltd./Avago Tech (LSI) SAS 3008 (8 Port SAS)
79 Broadcom Ltd./Avago Tech (LSI) SAS 3108 (8 Port SAS)
81 Broadcom Ltd./Avago Tech (LSI) SAS 3216 (16 Port SAS)
83 Broadcom Ltd./Avago Tech (LSI) SAS 3224 (24 Port SAS)
85 Broadcom Ltd./Avago Tech (LSI) SAS 3316 (16 Port SAS)
87 Broadcom Ltd./Avago Tech (LSI) SAS 3324 (24 Port SAS)
89 Broadcom Ltd./Avago Tech (LSI) SAS 3408 (8 Port SAS/PCIe)
91 Broadcom Ltd./Avago Tech (LSI) SAS 3416 (16 Port SAS/PCIe)
93 Broadcom Ltd./Avago Tech (LSI) SAS 3508 (8 Port SAS/PCIe)
95 Broadcom Ltd./Avago Tech (LSI) SAS 3516 (16 Port SAS/PCIe)
97 Broadcom Ltd./Avago Tech (LSI) SAS 3616 (16 Port SAS/PCIe)
99 Broadcom Ltd./Avago Tech (LSI) SAS 3708 (8 Port SAS/PCIe)
101 Broadcom Ltd./Avago Tech (LSI) SAS 3716 (16 Port SAS/PCIe)
104 In all tunable descriptions below, X represents the adapter number.
106 To disable MSI interrupts for all
108 driver instances, set this tunable value in
110 .Bd -literal -offset indent
114 To disable MSI interrupts for a specific
116 driver instance, set this tunable value in
118 .Bd -literal -offset indent
119 dev.mpr.X.disable_msi=1
122 To disable MSI-X interrupts for all
124 driver instances, set this tunable value in
126 .Bd -literal -offset indent
127 hw.mpr.disable_msix=1
130 To disable MSI-X interrupts for a specific
132 driver instance, set this tunable value in
134 .Bd -literal -offset indent
135 dev.mpr.X.disable_msix=1
138 To set the maximum number of DMA chains allocated for all adapters, set
141 .Bd -literal -offset indent
142 hw.mpr.max_chains=NNNN
145 To set the maximum number of DMA chains allocated for a specific adapter,
148 .Bd -literal -offset indent
149 dev.mpr.X.max_chains=NNNN
152 The default max_chains value is 2048.
154 The current number of free chain frames is stored in the
159 The lowest number of free chain frames seen since boot is stored in the
160 dev.mpr.X.chain_free_lowwater
164 The number of times that chain frame allocations have failed since boot is
166 dev.mpr.X.chain_alloc_fail
169 This can be used to determine whether the max_chains tunable should be
170 increased to help performance.
172 The current number of active I/O commands is shown in the
173 dev.mpr.X.io_cmds_active
177 The current number of free PRP pages is stored in the
178 dev.mpr.X.prp_pages_free
181 PRP pages are used by NVMe devices for I/O transfers, much like Scatter/Gather
184 The lowest number of free PRP pages seen since boot is stored in the
185 dev.mpr.X.prp_pages_free_lowwater
189 The number of times that PRP page allocations have failed since boot is
191 dev.mpr.X.prp_page_alloc_fail
195 To set the maximum number of pages that will be used per I/O for all adapters,
198 .Bd -literal -offset indent
199 hw.mpr.max_io_pages=NNNN
202 To set the maximum number of pages that will be used per I/O for a specific
203 adapter, set this tunable in
205 .Bd -literal -offset indent
206 dev.mpr.X.max_io_pages=NNNN
209 The default max_io_pages value is -1, meaning that the maximum I/O size that
210 will be used per I/O will be calculated using the IOCFacts values stored in
212 The lowest value that the driver will use for max_io_pages is 1, otherwise
213 IOCFacts will be used to calculate the maximum I/O size.
214 The smaller I/O size calculated from either max_io_pages or IOCFacts will be the
215 maximum I/O size used by the driver.
217 The highest number of active I/O commands seen since boot is stored in the
218 dev.mpr.X.io_cmds_highwater
222 Devices can be excluded from
224 control for all adapters by setting this tunable in
226 .Bd -literal -offset indent
230 Y represents the target ID of the device.
231 If more than one device is to be excluded, target IDs are separated by commas.
233 Devices can be excluded from
235 control for a specific adapter by setting this tunable in
237 .Bd -literal -offset indent
238 dev.mpr.X.exclude_ids=Y
241 Y represents the target ID of the device.
242 If more than one device is to be excluded, target IDs are separated by commas.
244 The adapter can issue the
246 SCSI command to SATA direct-access devices during shutdown.
247 This allows the device to quiesce powering down.
248 To control this feature for all adapters, set the
249 .Bd -literal -offset indent
255 to one of these values:
256 .Bl -tag -width 6n -offset indent
258 Do not send SSU to either HDDs or SSDs.
260 Send SSU to SSDs, but not to HDDs.
261 This is the default value.
263 Send SSU to HDDs, but not to SSDs.
265 Send SSU to both HDDs and SSDs.
268 To control this feature for a specific adapter, set this tunable value in
270 .Bd -literal -offset indent
274 The same set of values are valid as when setting this tunable for all adapters.
276 SATA disks that take several seconds to spin up and fail the SATA Identify
277 command might not be discovered by the driver.
278 This problem can sometimes be overcome by increasing the value of the spinup
282 .Bd -literal -offset indent
283 hw.mpr.spinup_wait_time=NNNN
287 NNNN represents the number of seconds to wait for SATA devices to spin up when
288 the device fails the initial SATA Identify command.
290 Spinup wait times can be set for specific adapters in
293 .Bd -literal -offset indent
294 dev.mpr.X.spinup_wait_time=NNNN
298 NNNN is the number of seconds to wait for SATA devices to spin up when they fail
299 the initial SATA Identify command.
301 The driver can map devices discovered by the adapter so that target IDs
302 corresponding to a specific device persist across resets and reboots.
303 In some cases it is possible for devices to lose their mapped IDs due to
304 unexpected behavior from certain hardware, such as some types of enclosures.
305 To overcome this problem, a tunable is provided that will force the driver to
306 map devices using the Phy number associated with the device.
307 This feature is not recommended if the topology includes multiple
308 enclosures/expanders.
309 If multiple enclosures/expanders are present in the topology, Phy numbers are
310 repeated, causing all devices at these Phy numbers except the first device to
312 To control this feature for all adapters, set the
313 .Bd -literal -offset indent
319 to one of these values:
320 .Bl -tag -width 6n -offset indent
322 Only use Phy numbers to map devices and bypass the driver's mapping logic.
324 Never use Phy numbers to map devices.
326 Use Phy numbers to map devices, but only if the driver's mapping logic fails
327 to map the device that is being enumerated.
328 This is the default value.
331 To control this feature for a specific adapter, set this tunable value in
333 .Bd -literal -offset indent
334 dev.mpr.X.use_phy_num
337 The same set of values are valid as when setting this tunable for all adapters.
340 Driver diagnostic printing is controlled in
343 .Va hw.mpr.debug_level
345 .Va dev.mpr.X.debug_level
347 One can alter the debug level for any adapter at run-time using the
350 .Va dev.mpr.X.debug_level .
354 variables can be named by either an integer value or a text string.
355 Multiple values can be specified together by either ORing the
356 integer values or by providing a comma-separated list of names.
357 A text string prefixed by
359 adds the specified debug levels to the existing set, while the prefix
361 removes them from the existing set.
364 status is reported in both formats for convenience.
365 The following levels are available:
366 .Bl -column "FlagXX" "NameXXXX" "Description" -offset indent
367 .It Em Flag Ta Em Name Ta Em Description
368 .It 0x0001 Ta info Ta Basic information (enabled by default)
369 .It 0x0002 Ta fault Ta Driver faults (enabled by default)
370 .It 0x0004 Ta event Ta Controller events
371 .It 0x0008 Ta log Ta Logging data from controller
372 .It 0x0010 Ta recovery Ta Tracing of recovery operations
373 .It 0x0020 Ta error Ta Parameter errors and programming bugs
374 .It 0x0040 Ta init Ta System initialization operations
375 .It 0x0080 Ta xinfo Ta More detailed information
376 .It 0x0100 Ta user Ta Tracing of user-generated commands (IOCTL)
377 .It 0x0200 Ta mapping Ta Tracing of device mapping
378 .It 0x0400 Ta trace Ta Tracing through driver functions
396 driver first appeared in FreeBSD 9.3.
400 driver was originally written by
402 .An Scott Long Aq Mt scottl@FreeBSD.org .
403 It has been improved and tested by LSI Corporation,
404 Avago Technologies (formally LSI), and Broadcom Ltd. (formally Avago).
406 This man page was written by
407 .An Ken Merry Aq Mt ken@FreeBSD.org
408 with additional input from
409 .An Stephen McConnell Aq Mt slm@FreeBSD.org .