# smartpqi

## 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) and
           hpsa(4) drivers, many, but not all of the ioctl(2) 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 enabled).
    
           **disable_heartbeat=**{**0** |**1**}
                  Disables support for the controller's heartbeat check.
                  This parameter is used for debugging purposes.  The default
                  value is 0 (the controller's heartbeat check is enabled).
    
           **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 default 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.
    
       [1mSmartPQI-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 configuration
                  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 driver 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 identification 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**
    
       [1mSmartPQI-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-enabled volumes.  (Ioaccel is an
                  alternative driver submission path that allows the driver
                  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 device.
    
                  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 device 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 priority 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 controller, which can be found by searching for
           the specific controller at 
           ⟨https://www.microchip.com/design-centers/storage⟩.
    


* * *