# smartpqi - Microchip Smart Storage SCSI driver - man(4) - [phpMan]

[_smartpqi_(4)](https://www.chedong.com/phpMan.php/man/smartpqi/4/markdown)                           Kernel Interfaces Manual                           [_smartpqi_(4)](https://www.chedong.com/phpMan.php/man/smartpqi/4/markdown)

## NAME
       smartpqi - Microchip Smart Storage SCSI driver

## SYNOPSIS
       **modprobe smartpqi **[**disable_device_id_wildcards=**{**0**|**1**}] [**disable_heartbeat=**{**0**|**1**}]
                         [**disable_ctrl_shutdown=**{**0**|**1**}] [**lockup_action=**{**none**|**reboot**|**panic**}]
                         [**expose_ld_first=**{**0**|**1**}] [**hide_vsep=**{**0**|**1**}]
                         [**disable_managed_interrupts=**{**0**|**1**}] [**ctrl_ready_timeout=**{**0**|[**30**,**1800**]}]

## DESCRIPTION
       **smartpqi **is a SCSI driver for Microchip Smart Storage controllers.

### Supported _ioctl_() operations
       For  compatibility  with applications written for the [**cciss**(4)](https://www.chedong.com/phpMan.php/man/cciss/4/markdown) and [**hpsa**(4)](https://www.chedong.com/phpMan.php/man/hpsa/4/markdown) drivers, many, but
       not all of the [**ioctl**(2)](https://www.chedong.com/phpMan.php/man/ioctl/2/markdown) operations supported by the **hpsa **driver are  also  supported  by  the
       **smartpqi  **driver.   The  data  structures used by these operations are described in the Linux
       kernel source file _include/linux/cciss_ioctl.h_.

       **CCISS_DEREGDISK**
       **CCISS_REGNEWDISK**
       **CCISS_REGNEWD**
              These operations all do exactly the same thing, which is to cause the  driver  to  re-
              scan  for  new  devices.  This does exactly the same thing as writing to the **smartpqi**-
              specific host _rescan_ attribute.

       **CCISS_GETPCIINFO**
              This operation returns the PCI domain, bus, device, and function and "board  ID"  (PCI
              subsystem ID).

       **CCISS_GETDRIVVER**
              This operation returns the driver version in four bytes, encoded as:

                  (major_version << 28) | (minor_version << 24) |
                          (release << 16) | revision

       **CCISS_PASSTHRU**
              Allows BMIC and CISS commands to be passed through to the controller.

### Boot options
       **disable_device_id_wildcards=**{**0**|**1**}
              Disables  support  for device ID wildcards.  The default value is 0 (wildcards are en‐
              abled).

       **disable_heartbeat=**{**0**|**1**}
              Disables support for the controller's heartbeat check.  This parameter is used for de‐
              bugging purposes.  The default value is 0 (the controller's  heartbeat  check  is  en‐
              abled).

       **disable_ctrl_shutdown=**{**0**|**1**}
              Disables support for shutting down the controller in the event of a controller lockup.
              The default value is 0 (controller will be shut down).

       **lockup_action=**{**none**|**reboot**|**panic**}
              Specifies  the  action the driver takes when a controller lockup is detected.  The de‐
              fault action is **none**.
              parameter   action
              ─────────────────────────────────────────────
              **none        **take controller offline only
              **reboot      **reboot the system
              **panic       **panic the system

       **expose_ld_first=**{**0**|**1**}
              This option exposes logical devices to the OS before physical  devices.   The  default
              value is 0 (physical devices exposed first).

       **hide_vsep=**{**0**|**1**}
              This  option  disables  exposure of the virtual SEP to the OS.  The default value is 0
              (virtual SEP is exposed).

       **disable_managed_interrupts=**{**0**|**1**}
              Disables driver utilization of Linux kernel managed interrupts for  controllers.   The
              managed  interrupts feature automatically distributes interrupts to all available CPUs
              and assigns SMP affinity.  The default value is 0 (managed interrupts enabled).

       **ctrl_ready_timeout=**{**0**|[**30**,**1800**]}
              This option specifies the timeout in seconds for the driver to wait for the controller
              to be ready.  The valid range is 0 or [**30**, **1800**].   The  default  value  is  0,  which
              causes the driver to use a timeout of 180 seconds.

## FILES
### Device nodes
       Disk  drives are accessed via the SCSI disk driver (_sd_), tape drives via the SCSI tape driver
       (_st_), and the RAID controller via the SCSI generic  driver  (_sg_),  with  device  nodes  named
       _/dev/sd_*, _/dev/st_*, and _/dev/sg_*, respectively.

### SmartPQI-specific host attribute files in /sys
       _/sys/class/scsi_host/host_*_/rescan_
              The  host  _rescan_ attribute is a write-only attribute.  Writing to this attribute will
              cause the driver to scan for new, changed, or removed devices (e.g., hot-plugged  tape
              drives,  or newly configured or deleted logical volumes) and notify the SCSI mid-layer
              of any changes detected.  Usually this action is triggered automatically by configura‐
              tion changes, so the user should not normally have to write to this  file.   Doing  so
              may  be  useful  when hot-plugging devices such as tape drives or entire storage boxes
              containing pre-configured logical volumes.

       _/sys/class/scsi_host/host_*_/lockup_action_
              The host _lockup_action_ attribute is a read/write attribute.  This attribute will cause
              the driver to perform a specific action in the unlikely event that a controller lockup
              has been detected.  See **OPTIONS **above for an explanation of the _lockup_action_ values.

       _/sys/class/scsi_host/host_*_/driver_version_
              The _driver_version_ attribute is read-only.  This attribute contains the smartpqi  dri‐
              ver version.

              For example:

                  $ **cat /sys/class/scsi_host/host1/driver_version**
                  1.1.2-126

       _/sys/class/scsi_host/host_*_/firmware_version_
              The  _firmware_version_  attribute is read-only.  This attribute contains the controller
              firmware version.

              For example:

                  $ **cat /sys/class/scsi_host/host1/firmware_version**
                  1.29-112

       _/sys/class/scsi_host/host_*_/model_
              The _model_ attribute is read-only.  This attribute contains the product  identification
              string of the controller.

              For example:

                  $ **cat /sys/class/scsi_host/host1/model**
                  1100-16i

       _/sys/class/scsi_host/host_*_/serial_number_
              The  _serial_number_ attribute is read-only.  This attribute contains the unique identi‐
              fication number of the controller.

              For example:

                  $ **cat /sys/class/scsi_host/host1/serial_number**
                  6A316373777

       _/sys/class/scsi_host/host_*_/vendor_
              The _vendor_ attribute is read-only.  This attribute contains the vendor  identification
              string of the controller.

              For example:

                  $ **cat /sys/class/scsi_host/host1/vendor**
                  Adaptec

       _/sys/class/scsi_host/host_*_/enable_stream_detection_
              The  _enable_stream_detection_ attribute is read-write.  This attribute enables/disables
              stream detection in the driver.  Enabling  stream  detection  can  improve  sequential
              write  performance  for  ioaccel-enabled volumes.  See the **ssd_smart_path_enabled **disk
              attribute section for details on ioaccel-enabled volumes.   The  default  value  is  1
              (stream detection enabled).

              Enable example:

                  $ **echo 1 > /sys/class/scsi_host/host1/enable_stream_detection**

       _/sys/class/scsi_host/host_*_/enable_r5_writes_
              The  _enable_r5_writes_ attribute is read-write.  This attribute enables/disables RAID 5
              write operations for ioaccel-enabled volumes.  Enabling can improve  sequential  write
              performance.   See  the  **ssd_smart_path_enabled  **disk attribute section for details on
              ioaccel-enabled volumes.  The default value is 1 (RAID 5 writes enabled).

              Enable example:

                  $ **echo 1 > /sys/class/scsi_host/host1/enable_r5_writes**

       _/sys/class/scsi_host/host_*_/enable_r6_writes_
              The _enable_r6_writes_ attribute is read-write.  This attribute enables/disables RAID  6
              write  operations  for ioaccel-enabled volumes.  Enabling can improve sequential write
              performance.  See the **ssd_smart_path_enabled **disk attribute  section  for  details  on
              ioaccel-enabled volumes.  The default value is 1 (RAID 6 writes enabled).

              Enable example:

                  $ **echo 1 > /sys/class/scsi_host/host1/enable_r6_writes**

### SmartPQI-specific disk attribute files in /sys
       In the file specifications below, _c_ stands for the number of the appropriate SCSI controller,
       _b_ is the bus number, _t_ the target number, and _l_ is the logical unit number (LUN).

       _/sys/class/scsi_disk/_c_:_b_:_t_:_l_/device/raid_level_
              The  _raid_level_ attribute is read-only.  This attribute contains the RAID level of the
              logical volume.

              For example:

                  $ **cat /sys/class/scsi_disk/4:0:0:0/device/raid_level**
                  RAID 0

       _/sys/class/scsi_disk/_c_:_b_:_t_:_l_/device/sas_address_
              The _sas_address_ attribute is read-only.  This attribute contains the  SAS  address  of
              the device.

              For example:

                  $ **cat /sys/class/scsi_disk/1:0:3:0/device/sas_address**
                  0x5001173d028543a2

       _/sys/class/scsi_disk/_c_:_b_:_t_:_l_/device/ssd_smart_path_enabled_
              The  _ssd_smart_path_enabled_ attribute is read-only.  This attribute is for ioaccel-en‐
              abled volumes.  (Ioaccel is an alternative driver submission path that allows the dri‐
              ver to send I/O requests directly to backend SCSI devices,  bypassing  the  controller
              firmware.   This  results  in an increase in performance.  This method is used for HBA
              disks and for logical volumes comprised of SSDs.)  Contains 1 if  ioaccel  is  enabled
              for the volume and 0 otherwise.

              For example:

                  $ **cat /sys/class/scsi_disk/1:0:3:0/device/ssd_smart_path_enabled**
                  0

       _/sys/class/scsi_disk/_c_:_b_:_t_:_l_/device/lunid_
              The _lunid_ attribute is read-only.  This attribute contains the SCSI LUN ID for the de‐
              vice.

              For example:

                  $ **cat /sys/class/scsi_disk/13:1:0:3/device/lunid**
                  0x0300004000000000

       _/sys/class/scsi_disk/_c_:_b_:_t_:_l_/device/unique_id_
              The  _unique_id_  attribute  is  read-only.   This  attribute contains a 16-byte ID that
              uniquely identifies the device within the controller.

              For example:

                  $ **cat /sys/class/scsi_disk/13:1:0:3/device/unique_id**
                  600508B1001C6D4723A8E98D704FDB94

       _/sys/class/scsi_disk/_c_:_b_:_t_:_l_/device/path_info_
              The _path_info_ attribute is read-only.  This attribute contains the _c_:_b_:_t_:_l_ of the  de‐
              vice  along with the device type and whether the device is Active or Inactive.  If the
              device is an HBA device, _path_info_ will also display the PORT, BOX, and BAY the device
              is plugged into.

              For example:

                  $ **cat /sys/class/scsi_disk/13:1:0:3/device/path_info**
                  [13:1:0:3]    Direct-Access     Active

                  $ **cat /sys/class/scsi_disk/12:0:9:0/device/path_info**
                  [12:0:9:0]  Direct-Access   PORT: C1 BOX: 1 BAY: 14 Inactive
                  [12:0:9:0]  Direct-Access   PORT: C0 BOX: 1 BAY: 14 Active

       _/sys/class/scsi_disk/_c_:_b_:_t_:_l_/device/raid_bypass_cnt_
              The _raid_bypass_cnt_ attribute is read-only.  This attribute contains the number of I/O
              requests that have gone through the ioaccel path for ioaccel-enabled volumes.  See the
              **ssd_smart_path_enabled **disk attribute section for details on ioaccel-enabled volumes.

              For example:

                  $ **cat /sys/class/scsi_disk/13:1:0:3/device/raid_bypass_cnt**
                  0x300

       _/sys/class/scsi_disk/_c_:_b_:_t_:_l_/device/sas_ncq_prio_enable_
              The _sas_ncq_prio_enable_ attribute is read/write.  This attribute enables SATA NCQ pri‐
              ority support.  This attribute works only when device has NCQ support  and  controller
              firmware can handle IO with NCQ priority attribute.

              For example:

                  $ **echo 1 > /sys/class/scsi_disk/13:1:0:3/device/sas_ncq_prio_enable**

## VERSIONS
       The **smartpqi **driver was added in Linux 4.9.

## NOTES
### Configuration
       To  configure  a  Microchip  Smart  Storage  controller, refer to the User Guide for the con‐
       troller, which can be found by searching  for  the  specific  controller  at  <https://www.mi>‐
       crochip.com/design-centers/storage.

## HISTORY
       _/sys/class/scsi_host/host*/version_ was replaced by two sysfs entries:

              _/sys/class/scsi_host/host*/driver_version_

              _/sys/class/scsi_host/host*/firmware_version_

## SEE ALSO
       [**cciss**(4)](https://www.chedong.com/phpMan.php/man/cciss/4/markdown), [**hpsa**(4)](https://www.chedong.com/phpMan.php/man/hpsa/4/markdown), [**sd**(4)](https://www.chedong.com/phpMan.php/man/sd/4/markdown), [**st**(4)](https://www.chedong.com/phpMan.php/man/st/4/markdown), [**sg**(4)](https://www.chedong.com/phpMan.php/man/sg/4/markdown)

       _Documentation/ABI/testing/sysfs-bus-pci-devices-cciss_ in the Linux kernel source tree.

Linux man-pages 6.7                          2023-10-31                                  [_smartpqi_(4)](https://www.chedong.com/phpMan.php/man/smartpqi/4/markdown)
