summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/mpr.4 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man4/mpr.4 3.html')
-rw-r--r--static/freebsd/man4/mpr.4 3.html351
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> &#x2014; <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=&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">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 &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">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>
+ &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">September 28, 2025</td>
+ <td class="foot-os">FreeBSD 15.0</td>
+ </tr>
+</table>