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
|
<table class="head">
<tr>
<td class="head-ltitle">SMARTPQI(4)</td>
<td class="head-vol">Device Drivers Manual (amd64)</td>
<td class="head-rtitle">SMARTPQI(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">smartpqi</code> —
<span class="Nd">Microchip Smart Storage SCSI 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 smartpqi</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>smartpqi_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">smartpqi</code> driver provides support for
Microchip Technology Inc. / Adaptec SmartRaid and SmartHBA SATA/SAS/NVMe
PCIe controllers</p>
</section>
<section class="Sh">
<h1 class="Sh" id="HARDWARE"><a class="permalink" href="#HARDWARE">HARDWARE</a></h1>
<p class="Pp">Controllers supported by the <code class="Nm">smartpqi</code>
driver include, but not limited to:</p>
<p class="Pp"></p>
<ul class="Bl-bullet Bl-compact">
<li>HPE Gen10 Smart Array Controller Family</li>
<li>Adaptec SmartRaid and SmartHBA Controllers</li>
<li>OEM Controllers based on the Microchip Technology Inc. SmartROC and
SmartIOC Chipsets</li>
</ul>
</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.smartpqi.debug_level</var> tunable.</p>
<p class="Pp">The <var class="Va">debug_level</var> variable is set with an
integer value. The default value is 0x0060 (warn && error).</p>
<p class="Pp">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>init</td>
<td>System initialization operations</td>
</tr>
<tr>
<td>0x0002</td>
<td>info</td>
<td>Basic information</td>
</tr>
<tr>
<td>0x0004</td>
<td>function</td>
<td>Used to show function entry and exit</td>
</tr>
<tr>
<td>0x0008</td>
<td>io</td>
<td>Logging data from controller</td>
</tr>
<tr>
<td>0x0010</td>
<td>discovery</td>
<td>Device discovery</td>
</tr>
<tr>
<td>0x0020</td>
<td>warning</td>
<td>Operational warnings</td>
</tr>
<tr>
<td>0x0040</td>
<td>error</td>
<td>Parameter errors and programming bugs</td>
</tr>
<tr>
<td>0x0080</td>
<td>note</td>
<td>More detailed information</td>
</tr>
</table>
</section>
<section class="Sh">
<h1 class="Sh" id="DEVICE_HINTS"><a class="permalink" href="#DEVICE_HINTS">DEVICE
HINTS</a></h1>
<p class="Pp">The following tunable values can be set in
<span class="Pa">/boot/device.hints</span> to control the behavior of the
<code class="Nm">smartpqi</code> driver. These hints are specified as:</p>
<div class="Bd Pp Bd-indent Li">
<pre>hint.smartpqi.<unit>.<variable>=<value></pre>
</div>
<p class="Pp">The supported variables are:</p>
<dl class="Bl-tag">
<dt id="stream_disable"><var class="Va">stream_disable</var></dt>
<dd>If set to 0, disables Stream Detection.
<p class="Pp">Default is (enabled).</p>
</dd>
<dt id="sata_unique_wwn_disable"><var class="Va">sata_unique_wwn_disable</var></dt>
<dd>If set to 0, disables SATA Unique World Wide Number.
<p class="Pp">Default is (enabled).</p>
</dd>
<dt id="aio_raid1_write_disable"><var class="Va">aio_raid1_write_disable</var></dt>
<dd>If set to 0, disables acceleration of RAID1 writes
<p class="Pp">Default is (enabled).</p>
</dd>
<dt id="aio_raid5_write_disable"><var class="Va">aio_raid5_write_disable</var></dt>
<dd>If set to 0, disables acceleration of RAID5 writes
<p class="Pp">Default is (enabled).</p>
</dd>
<dt id="aio_raid6_write_disable"><var class="Va">aio_raid6_write_disable</var></dt>
<dd>If set to 0, disables acceleration of RAID6 writes
<p class="Pp">Default is (enabled).</p>
</dd>
<dt id="queue_depth"><var class="Va">queue_depth</var></dt>
<dd>Sets queue depth for the controller. If the queue depth value is greater
than the maximum supported queue size of the driver or controller, it will
be set to the lowest size. If the queue depth value is lower than the
minimum queue depth then this will be set to the minimum queue depth.
<p class="Pp">Default is driver-determined.</p>
</dd>
<dt id="sg_count"><var class="Va">sg_count</var></dt>
<dd>Sets the scatter gather (sg) count. If this sg count is greater than
maximum sg count it will be set to the maximum sg count. If this sg count
is less than minimum sg count it will be set to the minimum sg count.
<p class="Pp">Default is driver-determined.</p>
</dd>
</dl>
<p class="Pp">For example, to disable Stream Detection on the first controller,
add the following line to <span class="Pa">/boot/device.hints</span>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>hint.smartpqi.0.stream_disable="0"</pre>
</div>
</section>
<section class="Sh">
<h1 class="Sh" id="FILES"><a class="permalink" href="#FILES">FILES</a></h1>
<dl class="Bl-tag Bl-compact">
<dt><span class="Pa">/dev/smartpqi?</span></dt>
<dd>smartpqi management interface</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="NOTES"><a class="permalink" href="#NOTES">NOTES</a></h1>
<section class="Ss">
<h2 class="Ss" id="Configuration"><a class="permalink" href="#Configuration">Configuration</a></h2>
<p class="Pp">To configure a Microchip Smart Storage controller, refer to the
User Guide for the controller, which can be found by searching for the
specific controller at https://www.microchip.com/design-centers/storage</p>
</section>
</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">kld(4)</a>, <a class="Xr">linux(4)</a>,
<a class="Xr">pass(4)</a>, <a class="Xr">scsi(4)</a>,
<a class="Xr">xpt(4)</a>, <a class="Xr">loader.conf(5)</a>,
<a class="Xr">camcontrol(8)</a>, <a class="Xr">kldload(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">smartpqi</code> driver first appeared in
<span class="Ux">FreeBSD 11.1</span>.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp"><span class="An">John Hall</span>
⟨john.hall@microchip.com⟩</p>
</section>
<section class="Sh">
<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
<p class="Pp">The controller is not actually paused on suspend/resume.</p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">August 28, 2025</td>
<td class="foot-os">FreeBSD 15.0</td>
</tr>
</table>
|