SMARTPQI(4)

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):

    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) 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), which appear in dmesg(8) 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), linux(4), pass(4), scsi(4), xpt(4), loader.conf(5), camcontrol(8), dmesg(8), kldload(8), sysctl(8)

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.