diff options
Diffstat (limited to 'static/freebsd/man4/mpr.4 3.html')
| -rw-r--r-- | static/freebsd/man4/mpr.4 3.html | 351 |
1 files changed, 351 insertions, 0 deletions
diff --git a/static/freebsd/man4/mpr.4 3.html b/static/freebsd/man4/mpr.4 3.html new file mode 100644 index 00000000..b545c3ae --- /dev/null +++ b/static/freebsd/man4/mpr.4 3.html @@ -0,0 +1,351 @@ +<table class="head"> + <tr> + <td class="head-ltitle">MPR(4)</td> + <td class="head-vol">Device Drivers Manual</td> + <td class="head-rtitle">MPR(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">mpr</code> — <span class="Nd">LSI + Fusion-MPT 3/3.5 IT/IR 12Gb/s Serial Attached SCSI/SATA/PCIe + 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 mpr</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>mpr_load="YES"</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">mpr</code> driver provides support for + Broadcom Ltd./Avago Tech (LSI) Fusion-MPT 3/3.5 IT/IR SAS/PCIe + controllers.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="HARDWARE"><a class="permalink" href="#HARDWARE">HARDWARE</a></h1> +<p class="Pp">The <code class="Nm">mpr</code> driver supports the following + SATA/SAS/NVMe RAID controllers:</p> +<p class="Pp"></p> +<ul class="Bl-bullet Bl-compact"> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3004 (4 Port SAS)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3008 (8 Port SAS)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3108 (8 Port SAS)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3216 (16 Port SAS)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3224 (24 Port SAS)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3316 (16 Port SAS)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3324 (24 Port SAS)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3408 (8 Port SAS/PCIe)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3416 (16 Port SAS/PCIe)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3508 (8 Port SAS/PCIe)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3516 (16 Port SAS/PCIe)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3616 (16 Port SAS/PCIe)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3708 (8 Port SAS/PCIe)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3716 (16 Port SAS/PCIe)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3808 (8 Port SAS/PCIe)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3816 (16 Port SAS/PCIe)</li> + <li>Broadcom Ltd./Avago Tech (LSI) SAS 3916 (16 Port SAS/PCIe)</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">mpr</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.mpr.disable_msi=1</pre> +</div> +<p class="Pp">To disable MSI interrupts for a specific + <code class="Nm">mpr</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.mpr.X.disable_msi=1</pre> +</div> +<p class="Pp">To disable MSI-X interrupts for all <code class="Nm">mpr</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.mpr.disable_msix=1</pre> +</div> +<p class="Pp">To disable MSI-X interrupts for a specific + <code class="Nm">mpr</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.mpr.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.mpr.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.mpr.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.mpr.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.mpr.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.mpr.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.mpr.X.io_cmds_active <a class="Xr">sysctl(8)</a> variable.</p> +<p class="Pp">The current number of free PRP pages is stored in the + dev.mpr.X.prp_pages_free <a class="Xr">sysctl(8)</a> variable. PRP pages are + used by NVMe devices for I/O transfers, much like Scatter/Gather lists.</p> +<p class="Pp">The lowest number of free PRP pages seen since boot is stored in + the dev.mpr.X.prp_pages_free_lowwater <a class="Xr">sysctl(8)</a> + variable.</p> +<p class="Pp">The number of times that PRP page allocations have failed since + boot is stored in the dev.mpr.X.prp_page_alloc_fail + <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.mpr.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.mpr.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.mpr.X.io_cmds_highwater <a class="Xr">sysctl(8)</a> + variable.</p> +<p class="Pp">Devices can be excluded from <code class="Nm">mpr</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.mpr.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">mpr</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.mpr.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.mpr.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.mpr.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.mpr.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.mpr.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.mpr.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.mpr.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.mpr.debug_level</var> and per-device + <var class="Va">dev.mpr.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.mpr.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 "+" adds + the specified debug levels to the existing set, while the prefix + "-" 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">mps(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">mprutil(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">mpr</code> driver first appeared in + <span class="Ux">FreeBSD 9.3</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">mpr</code> driver was originally written by + <span class="An">Scott Long</span> + <<a class="Mt" href="mailto:scottl@FreeBSD.org">scottl@FreeBSD.org</a>>. + 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> + <<a class="Mt" href="mailto:ken@FreeBSD.org">ken@FreeBSD.org</a>> with + additional input from <span class="An">Stephen McConnell</span> + <<a class="Mt" href="mailto:slm@FreeBSD.org">slm@FreeBSD.org</a>>.</p> +</section> +</div> +<table class="foot"> + <tr> + <td class="foot-date">September 28, 2025</td> + <td class="foot-os">FreeBSD 15.0</td> + </tr> +</table> |
