Changeset View
Standalone View
share/man/man4/mpr.4
.\" | .\" | ||||
.\" Copyright (c) 2010 Spectra Logic Corporation | .\" Copyright (c) 2010 Spectra Logic Corporation | ||||
.\" Copyright (c) 2014 LSI Corp | .\" Copyright (c) 2014 LSI Corp | ||||
.\" Copyright (c) 2016 Avago Technologies | |||||
.\" Copyright (c) 2016 Broadcom Ltd. | |||||
.\" All rights reserved. | .\" All rights reserved. | ||||
.\" | .\" | ||||
.\" Redistribution and use in source and binary forms, with or without | .\" Redistribution and use in source and binary forms, with or without | ||||
.\" modification, are permitted provided that the following conditions | .\" modification, are permitted provided that the following conditions | ||||
.\" are met: | .\" are met: | ||||
.\" 1. Redistributions of source code must retain the above copyright | .\" 1. Redistributions of source code must retain the above copyright | ||||
.\" notice, this list of conditions, and the following disclaimer, | .\" notice, this list of conditions, and the following disclaimer, | ||||
.\" without modification. | .\" without modification. | ||||
Show All 14 Lines | |||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||||
.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | .\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | ||||
.\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | .\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||||
.\" POSSIBILITY OF SUCH DAMAGES. | .\" POSSIBILITY OF SUCH DAMAGES. | ||||
.\" | .\" | ||||
.\" mpr driver man page. | .\" mpr driver man page. | ||||
.\" | .\" | ||||
.\" Author: Ken Merry <ken@FreeBSD.org> | .\" Author: Ken Merry <ken@FreeBSD.org> | ||||
.\" Author: Stephen McConnell <stephen.mcconnell@lsi.com> | .\" Author: Stephen McConnell <slm@FreeBSD.org> | ||||
.\" | .\" | ||||
.\" $Id$ | .\" $Id$ | ||||
.\" $FreeBSD$ | .\" $FreeBSD$ | ||||
.\" | .\" | ||||
.Dd May 2, 2014 | .Dd Jan 25, 2016 | ||||
wblock: Please bump this. | |||||
.Dt MPR 4 | .Dt MPR 4 | ||||
.Os | .Os | ||||
.Sh NAME | .Sh NAME | ||||
.Nm mpr | .Nm mpr | ||||
.Nd "LSI Fusion-MPT 3 IT/IR 12Gb/s Serial Attached SCSI/SATA driver" | .Nd "LSI Fusion-MPT 3 IT/IR 12Gb/s Serial Attached SCSI/SATA driver" | ||||
.Sh SYNOPSIS | .Sh SYNOPSIS | ||||
To compile this driver into the kernel, place the following lines in your | To compile this driver into the kernel if not already in the kernel that you | ||||
wblockUnsubmitted Not Done Inline ActionsThis sentence mentions the kernel three times now. "if not already in the kernel that you are using" can be assumed from context. "the following" is almost always used incorrectly, usually "these" is better. Avoid "you" and "your" (https://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/writing-style.html#writing-style-tips) So, I suggest: To compile this driver into the kernel, place these lines in the kernel configuration file: wblock: This sentence mentions the kernel three times now.
"if not already in the kernel that you are… | |||||
kernel configuration file: | are using, place the following lines in your kernel configuration file: | ||||
.Bd -ragged -offset indent | .Bd -ragged -offset indent | ||||
.Cd "device pci" | .Cd "device pci" | ||||
.Cd "device scbus" | .Cd "device scbus" | ||||
.Cd "device mpr" | .Cd "device mpr" | ||||
.Ed | .Ed | ||||
.Pp | .Pp | ||||
Alternatively, to load the driver as a | Alternatively, to load the driver as a module at boot time if not already | ||||
module at boot time, place the following line in | loaded, place the following line in | ||||
wblockUnsubmitted Not Done Inline ActionsSimpler: The driver can be loaded as a module at boot time by placing this line in ("Alternatively" and "if not already loaded" are not needed, if the module is already part of the kernel there is only a non-fatal warning.) wblock: Simpler:
```The driver can be loaded as a module at boot time by placing this line in```… | |||||
.Xr loader.conf 5 : | .Xr loader.conf 5 : | ||||
.Bd -literal -offset indent | .Bd -literal -offset indent | ||||
mpr_load="YES" | mpr_load="YES" | ||||
.Ed | .Ed | ||||
.Sh DESCRIPTION | .Sh DESCRIPTION | ||||
The | The | ||||
.Nm | .Nm | ||||
driver provides support for LSI Fusion-MPT 3 IT/IR | driver provides support for Broadcom Ltd./Avago Tech (LSI) | ||||
Fusion-MPT 3 IT/IR | |||||
.Tn SAS | .Tn SAS | ||||
controllers. | controllers. | ||||
.Sh HARDWARE | .Sh HARDWARE | ||||
The following controllers are supported by the | The following controllers are supported by the | ||||
.Nm | .Nm | ||||
driver: | driver: | ||||
.Pp | .Pp | ||||
.Bl -bullet -compact | .Bl -bullet -compact | ||||
.It | .It | ||||
LSI SAS 3004 (4 Port SAS) | Broadcom Ltd./Avago Tech (LSI) SAS 3004 (4 Port SAS) | ||||
.It | .It | ||||
LSI SAS 3008 (8 Port SAS) | Broadcom Ltd./Avago Tech (LSI) SAS 3008 (8 Port SAS) | ||||
.It | .It | ||||
LSI SAS 3108 (8 Port SAS) | Broadcom Ltd./Avago Tech (LSI) SAS 3108 (8 Port SAS) | ||||
.It | |||||
Broadcom Ltd./Avago Tech (LSI) SAS 3216 (16 Port SAS) | |||||
.It | |||||
Broadcom Ltd./Avago Tech (LSI) SAS 3224 (24 Port SAS) | |||||
.El | .El | ||||
.Sh CONFIGURATION | .Sh CONFIGURATION | ||||
To disable MSI interrupts for all | To disable MSI interrupts for all | ||||
.Nm | .Nm | ||||
driver instances, set the following tunable value in | driver instances, set the following tunable value in | ||||
.Xr loader.conf 5 : | .Xr loader.conf 5 : | ||||
.Bd -literal -offset indent | .Bd -literal -offset indent | ||||
hw.mpr.disable_msi=1 | hw.mpr.disable_msi=1 | ||||
Show All 36 Lines | |||||
set the following variable in | set the following variable in | ||||
.Xr loader.conf 5 : | .Xr loader.conf 5 : | ||||
.Bd -literal -offset indent | .Bd -literal -offset indent | ||||
dev.mpr.X.max_chains=NNNN | dev.mpr.X.max_chains=NNNN | ||||
.Ed | .Ed | ||||
.Pp | .Pp | ||||
This variable may also be viewed via | This variable may also be viewed via | ||||
.Xr sysctl 8 | .Xr sysctl 8 | ||||
to see the maximum set for a given adapter. | to see the maximum set for a given adapter. The default value is 2048. | ||||
wblockUnsubmitted Not Done Inline ActionsPlease start new sentences on new lines. wblock: Please start new sentences on new lines. | |||||
.Pp | .Pp | ||||
The current number of free chain frames may be seen via the | The current number of free chain frames may be seen via the | ||||
wblockUnsubmitted Not Done Inline Actions"may" is for permission, "can" is for possibility. "via" still means "a route" to me, but I know that not everyone agrees. Also, "can be seen" seems a little weird. The command is what shows them, but the value is actually stored in the variable, not shown. The current number of free chain frames is stored in the wblock: "may" is for permission, "can" is for possibility. "via" still means "a route" to me, but I… | |||||
dev.mpr.X.chain_free | dev.mpr.X.chain_free | ||||
.Xr sysctl 8 | .Xr sysctl 8 | ||||
variable. | variable. | ||||
.Pp | .Pp | ||||
The lowest number of free chain frames may be seen via the | The lowest number of free chain frames seen since boot may be seen via the | ||||
wblockUnsubmitted Not Done Inline ActionsAs above (but avoiding repeating "seen"): The lowest number of free chain frames seen since boot is stored in the wblock: As above (but avoiding repeating "seen"):
```The lowest number of free chain frames seen since… | |||||
dev.mpr.X.chain_free_lowwater | dev.mpr.X.chain_free_lowwater | ||||
.Xr sysctl 8 | .Xr sysctl 8 | ||||
variable. | variable. | ||||
.Pp | .Pp | ||||
The number of times that chain frame allocations have failed since boot | |||||
may be seen via the | |||||
wblockUnsubmitted Not Done Inline ActionsAs above: is stored in the wblock: As above:
```is stored in the``` | |||||
dev.mpr.X.chain_alloc_fail | |||||
.Xr sysctl 8 | |||||
variable. This can be used to determine if the max_chains variable should | |||||
wblockUnsubmitted Not Done Inline ActionsPlease start new sentences on new lines. wblock: Please start new sentences on new lines.
Also, s/if/whether/ | |||||
be increased to help performance. | |||||
.Pp | |||||
The current number of active I/O commands is shown in the | The current number of active I/O commands is shown in the | ||||
dev.mpr.X.io_cmds_active | dev.mpr.X.io_cmds_active | ||||
.Xr sysctl 8 | .Xr sysctl 8 | ||||
variable. | variable. | ||||
.Pp | .Pp | ||||
The maximum number of active I/O commands seen since boot is shown in the | The highest number of active I/O commands seen since boot is shown in the | ||||
wblockUnsubmitted Not Done Inline Actionss/is shown in/is stored in/ wblock: s/is shown in/is stored in/ | |||||
dev.mpr.X.io_cmds_highwater | dev.mpr.X.io_cmds_highwater | ||||
.Xr sysctl 8 | .Xr sysctl 8 | ||||
variable. | variable. | ||||
.Pp | .Pp | ||||
Devices can be excluded from | Devices can be excluded from | ||||
.Nm | .Nm | ||||
control for all adapters by setting the following variable in | control for all adapters by setting the following variable in | ||||
.Xr loader.conf 5 : | .Xr loader.conf 5 : | ||||
Show All 11 Lines | |||||
.Xr loader.conf 5 : | .Xr loader.conf 5 : | ||||
.Bd -literal -offset indent | .Bd -literal -offset indent | ||||
dev.mpr.X.exclude_ids=Y | dev.mpr.X.exclude_ids=Y | ||||
.Ed | .Ed | ||||
.Pp | .Pp | ||||
where X is the adapter number and Y is the target ID of the device. | where X is the adapter number and Y is the target ID of the device. | ||||
If more | If more | ||||
than one device is to be excluded, target ID's are separated by commas. | than one device is to be excluded, target ID's are separated by commas. | ||||
.Pp | |||||
The adapter can issue the | |||||
.Sy StartStopUnit | |||||
SCSI command to SATA direct-access devices during shutdown, to allow the | |||||
wblockUnsubmitted Not Done Inline ActionsNo comma needed here. It would not hurt to break that into two sentences, though: SCSI command to SATA direct-access devices during shutdown. This allows the wblock: No comma needed here. It would not hurt to break that into two sentences, though:
```SCSI… | |||||
device to quiesce before being powered down. | |||||
wblockUnsubmitted Not Done Inline ActionsI would say "before powering down." wblock: I would say "before powering down." | |||||
To control this feature for all adapters, set the | |||||
.Bd -literal -offset indent | |||||
hw.mpr.enable_ssu | |||||
.Ed | |||||
.Pp | |||||
tunable value in | |||||
.Xr loader.conf 5 | |||||
to one of the following values: | |||||
wblockUnsubmitted Not Done Inline ActionsAs above: wblock: As above:
s/the following/these/ | |||||
.Bl -tag -width 6n -offset indent | |||||
.It 0 | |||||
Do not send SSU to either HDDs or SSDs. | |||||
.It 1 | |||||
Send SSU to SSDs, but not to HDDs; this is the default value. | |||||
wblockUnsubmitted Not Done Inline ActionsAvoid semicolons, the rutabaga of the punctuation world. Send SSU to SSDs, but not to HDDs. This is the default value. wblock: Avoid semicolons, the rutabaga of the punctuation world.
```Send SSU to SSDs, but not to HDDs. | |||||
.It 2 | |||||
Send SSU to HDDs, but not to SSDs. | |||||
.It 3 | |||||
Send SSU to both HDDs and SSDs. | |||||
.El | |||||
.Pp | |||||
To control the feature for a specific adapter, set the following tunable | |||||
wblockUnsubmitted Not Done Inline ActionsAs above: wblock: As above:
s/the following/this/ | |||||
value in | |||||
.Xr loader.conf 5 : | |||||
.Bd -literal -offset indent | |||||
dev.mpr.X.enable_ssu | |||||
.Ed | |||||
.Pp | |||||
where X is the adapter number. | |||||
The same set of values are valid as for all adapters. | |||||
wblockUnsubmitted Not Done Inline Actionss/are valid as/are valid/ wblock: s/are valid as/are valid/ | |||||
.Pp | |||||
Some SATA disks may fail to be discovered by the driver due to a failed | |||||
wblockUnsubmitted Not Done Inline ActionsThis sentence is repetitive, using "failed" for several things. Also "may" versus "can". How about: SATA disks that take several seconds to spin up and fail the SATA Identify command might not be discovered by the driver. wblock: This sentence is repetitive, using "failed" for several things. Also "may" versus "can". How… | |||||
SATA Identify command if the disk takes several seconds to spin up. | |||||
This problem might be overcome by changing the following tunable for all | |||||
wblockUnsubmitted Not Done Inline Actions"The following" is usually best avoided. Also, "spinup" versus "spin up". This problem can sometimes be overcome by increasing the value of the spinup wait time in .Xr loader.conf 5 with the .Bd -literal -offset indent hw.mpr.spinup_wait_time .Ed .Pp tunable. The value is the number of seconds to wait for SATA devices to spin up when the device fails the initial SATA identify command. wblock: "The following" is usually best avoided. Also, "spinup" versus "spin up".
```This problem can… | |||||
adapters in | |||||
.Xr loader.conf 5 : | |||||
.Bd -literal -offset indent | |||||
hw.mpr.spinup_wait_time=NNNN | |||||
.Ed | |||||
.Pp | |||||
where NNNN is the number of seconds to wait for SATA devices to spinup if | |||||
the device fails its initial SATA Identify command. | |||||
.El | |||||
.Pp | |||||
To control the feature for a specific adapter, set the following tunable | |||||
wblockUnsubmitted Not Done Inline ActionsTry to avoid if/then sentences with a pause (comma). Better to have declarative sentences. Spinup wait times can be set for specific adapters in .Xr loader.conf 5 with the .Bd -literal -offset indent dev.mpr.X.spinup_wait_time .Ed .Pp tunable. X represents the adapter number, and the tunable value is the number of seconds to wait for SATA devices to spin up when they fail the initial SATA Identify command. wblock: Try to avoid if/then sentences with a pause (comma). Better to have declarative sentences. | |||||
value in | |||||
.Xr loader.conf 5 : | |||||
.Bd -literal -offset indent | |||||
dev.mpr.X.spinup_wait_time=NNNN | |||||
.Ed | |||||
.Pp | |||||
where X is the adapter number and NNNN is the number of seconds to wait | |||||
for SATA devices to spinup if the device fails its initial SATA Identify | |||||
command. | |||||
.Sh DEBUGGING | .Sh DEBUGGING | ||||
To enable debugging prints from the | To enable debugging prints from the | ||||
.Nm | .Nm | ||||
driver, set the | driver, set the | ||||
.Bd -literal -offset indent | .Bd -literal -offset indent | ||||
hw.mpr.X.debug_level | hw.mpr.X.debug_level | ||||
.Ed | .Ed | ||||
.Pp | .Pp | ||||
variable, where X is the adapter number, either in | variable, where X is the adapter number, either in | ||||
.Xr loader.conf 5 | .Xr loader.conf 5 | ||||
or via | or via | ||||
.Xr sysctl 8 . | .Xr sysctl 8 . | ||||
The following bits have the described effects: | The following bits have the described effects: | ||||
.Bd -literal -offset indent | .Bd -literal -offset indent | ||||
0x0001 Enable informational prints. | 0x0001 Enable informational prints (set by default). | ||||
0x0002 Enable prints for driver faults. | 0x0002 Enable prints for driver faults (set by default). | ||||
0x0004 Enable prints for controller events. | 0x0004 Enable prints for controller events. | ||||
0x0008 Enable prints for controller logging. | 0x0008 Enable prints for controller logging. | ||||
0x0010 Enable prints for tracing recovery operations. | 0x0010 Enable prints for tracing recovery operations. | ||||
0x0020 Enable prints for parameter errors and programming bugs. | 0x0020 Enable prints for parameter errors and programming bugs. | ||||
0x0040 Enable prints for system initialization operations. | 0x0040 Enable prints for system initialization operations. | ||||
0x0080 Enable prints for more detailed information. | 0x0080 Enable prints for more detailed information. | ||||
0x0100 Enable prints for user-generated commands. | 0x0100 Enable prints for user-generated commands (IOCTL). | ||||
0x0200 Enable prints for device mapping. | 0x0200 Enable prints for device mapping. | ||||
0x0400 Enable prints for tracing through driver functions. | 0x0400 Enable prints for tracing through driver functions. | ||||
.Ed | .Ed | ||||
.Sh SEE ALSO | .Sh SEE ALSO | ||||
.Xr cam 4 , | .Xr cam 4 , | ||||
.Xr cd 4 , | .Xr cd 4 , | ||||
.Xr ch 4 , | .Xr ch 4 , | ||||
.Xr da 4 , | .Xr da 4 , | ||||
Show All 10 Lines | |||||
.Nm | .Nm | ||||
driver first appeared in FreeBSD 9.3. | driver first appeared in FreeBSD 9.3. | ||||
.Sh AUTHORS | .Sh AUTHORS | ||||
The | The | ||||
.Nm | .Nm | ||||
driver was originally written by | driver was originally written by | ||||
.An -nosplit | .An -nosplit | ||||
.An Scott Long Aq Mt scottl@FreeBSD.org . | .An Scott Long Aq Mt scottl@FreeBSD.org . | ||||
It has been improved and tested by LSI Corporation. | It has been improved and tested by LSI Corporation, | ||||
Avago Technologies (formally LSI), and Broadcom Ltd. (formally Avago). | |||||
.Pp | .Pp | ||||
This man page was written by | This man page was written by | ||||
.An Ken Merry Aq Mt ken@FreeBSD.org | .An Ken Merry Aq Mt ken@FreeBSD.org | ||||
with additional input from | with additional input from | ||||
.An Stephen McConnell Aq Mt stephen.mcconnell@lsi.com . | .An Stephen McConnell Aq Mt slm@FreeBSD.org . |
Please bump this.