---
name: "smartpqi"
section: "4"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/smartpqi"
---

# smartpqi(4)

Microchip Smart Storage SCSI driver

## NAME

**smartpqi** – Microchip Smart Storage SCSI driver

## SYNOPSIS

To compile this driver into the kernel, place these lines in the kernel configuration file:

**device** **pci** **device** **scbus** **device** **smartpqi**

The driver can be loaded as a module at boot time by placing this line in [loader.conf(5)](/loader.conf/5.md):

```
smartpqi_load="YES"
```

## DESCRIPTION

The **smartpqi** driver provides support for Microchip Technology Inc. / Adaptec SmartRaid and SmartHBA SATA/SAS/NVMe PCIe controllers

## HARDWARE

Controllers supported by the **smartpqi** driver include, but not limited to:

- HPE Gen10 Smart Array Controller Family

- Adaptec SmartRaid and SmartHBA Controllers

- OEM Controllers based on the Microchip Technology Inc. SmartROC and SmartIOC Chipsets

## DEBUGGING

Driver diagnostic printing is controlled at boot time in [loader.conf(5)](/loader.conf/5.md) by using the global *hw.smartpqi.debug\_level* tunable, or at runtime via the per-controller *dev.smartpqi.\<unit\>.debug\_level* sysctl.

The *debug\_level* variable is set with an integer value. The default value is 0x0060 (warn && error).

The following levels are available:

| | | |
| --- | --- | --- |
| *Flag* | *Name* | *Description* |
| 0x0001 | init | System initialization operations |
| 0x0002 | info | Basic information |
| 0x0004 | function | Used to show function entry and exit |
| 0x0008 | io | Logging data from controller |
| 0x0010 | discovery | Device discovery state transitions |
| 0x0020 | warning | Operational warnings |
| 0x0040 | error | Parameter errors and programming bugs |
| 0x0080 | note | More detailed information |

In addition to the level-gated debug output, the driver always logs device addition, device removal, and controller events (hotplug, hardware, physical/logical device changes, AIO state and configuration changes) via [device\_printf(9)](/device_printf/9.md), which appear in [dmesg(8)](/dmesg/8.md) regardless of the *debug\_level* setting.

For example, to enable discovery logging at runtime on the first controller:

```
sysctl dev.smartpqi.0.debug_level=0x0070
```

## DEVICE HINTS

The following tunable values can be set in */boot/device.hints* to control the behavior of the **smartpqi** driver. These hints are specified as:

```
hint.smartpqi.<unit>.<variable>=<value>
```

The supported variables are:

- *stream\_disable*

  If set to 0, disables Stream Detection.

  Default is (enabled).

- *sata\_unique\_wwn\_disable*

  If set to 0, disables SATA Unique World Wide Number.

  Default is (enabled).

- *aio\_raid1\_write\_disable*

  If set to 0, disables acceleration of RAID1 writes

  Default is (enabled).

- *aio\_raid5\_write\_disable*

  If set to 0, disables acceleration of RAID5 writes

  Default is (enabled).

- *aio\_raid6\_write\_disable*

  If set to 0, disables acceleration of RAID6 writes

  Default is (enabled).

- *queue\_depth*

  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.

  Default is driver-determined.

- *sg\_count*

  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.

  Default is driver-determined.

For example, to disable Stream Detection on the first controller, add the following line to */boot/device.hints*:

```
hint.smartpqi.0.stream_disable="0"
```

## FILES

- */dev/smartpqi?*

  smartpqi management interface

## NOTES

### Configuration

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

## SEE ALSO

[kld(4)](/kld/4.md), [linux(4)](/linux/4.md), [pass(4)](/pass/4.md), [scsi(4)](/scsi/4.md), [xpt(4)](/xpt/4.md), [loader.conf(5)](/loader.conf/5.md), [camcontrol(8)](/camcontrol/8.md), [dmesg(8)](/dmesg/8.md), [kldload(8)](/kldload/8.md), [sysctl(8)](/sysctl/8.md)

## HISTORY

The **smartpqi** driver first appeared in FreeBSD 11.1.

## AUTHORS

John Hall ⟨*john.hall@microchip.com*⟩

## BUGS

The controller is not actually paused on suspend/resume.
