
SMARTPQI - Microsemi Smart PQI Driver
-----------------------------------------

This file describes the smartpqi SCSI driver for Microsemi
(http://www.microsemi.com) PQI controllers. The smartpqi driver
is the next generation SCSI driver for Microsemi Corp. The smartpqi
driver is the first SCSI driver to implement the PQI queuing model.

The smartpqi driver will replace the aacraid driver for Adaptec Series 9
controllers. Customers running an older kernel (Pre-4.9) using an Adaptec
Series 9 controller will have to configure the smartpqi driver or their
volumes will not be added to the OS.

For Microsemi smartpqi controller support, enable the smartpqi driver
when configuring the kernel.

For more information on the PQI Queuing Interface, please see:
http://www.t10.org/drafts.htm
http://www.t10.org/members/w_pqi2.htm

Supported devices:
------------------
<Controller names to be added as they become publically available.>

smartpqi specific entries in /sys
-----------------------------

  smartpqi host attributes:
  -------------------------
  /sys/class/scsi_host/host*/rescan
  /sys/class/scsi_host/host*/version

  The host rescan attribute is a write only attribute. Writing to this
  attribute will trigger the driver to scan for new, changed, or removed
  devices and notify the SCSI mid-layer of any changes detected.

  The version attribute is read-only and will return the driver version
  and the controller firmware version.
  For example:
              driver: 0.9.13-370
              firmware: 0.01-522

  smartpqi sas device attributes
  ------------------------------
  HBA devices are added to the SAS transport layer. These attributes are
  automatically added by the SAS transport layer.

  /sys/class/sas_device/end_device-X:X/sas_address
  /sys/class/sas_device/end_device-X:X/enclosure_identifier
  /sys/class/sas_device/end_device-X:X/scsi_target_id

smartpqi specific ioctls:
-------------------------

  For compatibility with applications written for the cciss protocol.

  CCISS_DEREGDISK
  CCISS_REGNEWDISK
  CCISS_REGNEWD

  The above three ioctls all do exactly the same thing, which is to cause the driver
  to rescan for new devices.  This does exactly the same thing as writing to the
  smartpqi specific host "rescan" attribute.

  CCISS_GETPCIINFO

	Returns PCI domain, bus, device and function and "board ID" (PCI subsystem ID).

  CCISS_GETDRIVVER

	Returns driver version in three bytes encoded as:
	(DRIVER_MAJOR << 28) | (DRIVER_MINOR << 24) | (DRIVER_RELEASE << 16) | DRIVER_REVISION;

  CCISS_PASSTHRU

	Allows "BMIC" and "CISS" commands to be passed through to the Smart Storage Array.
	These are used extensively by the SSA Array Configuration Utility, SNMP storage
	agents, etc.

