Name: Driver for LSI MPT2.0 compliant SAS 2.0 controller Submitters: Javen Wu, Dolpher Du 1) Background ------------- Over the past decade the storage industry has moved from traditional parallel SCSI based storage systems to more scalable serial storage connections. With the emergence of 3 and 6 Gigabit SAS, Sun and other vendors are revamping software storage stacks to support the new features. LSI's Fusion MPT Message Passing Technology forms the basis for a very popular family of Serial Attached SCSI HBAs. Sun makes extensive use of MPT for both PCI-E and PCI-X option cards as well as for motherboard hosted storage. The mpt(7D) driver was based on LSI's MPT v1.5, supporting both SAS and Parallel SCSI devices. LSI's support of the SAS 2.0 specification uses a new driver/firmware interface. MPT(rev2) is now under development. In order for Sun to implement those changes we need to provide a new HBA driver which does not have the legacy requirement of mpt(7D). The proposed new driver mpt_sas(7D) will drive LSI MPT2 compliant SAS controllers which include LSI SAS200x/2108 series. 2) Proposal Summary ------------------- The following features are supported by the proposed mpt_sas(7D) driver: 2.1) mpt_sas(7D) is DDI compliant and SCSA compliant as much as applicable. 2.2) SAS initiator ports registration. 2.3) SAS/SATA/SMP target device dynamic enumeration / reconfiguration. 2.4) Target device representation conforms to FWARC 2008/013. 2.5) SAS/SATA devices multipathing support. 2.6) Power management, FMA and fast reboot support. 2.7) 3rd party ioctl support for management and firmware upgrade. 3) Interface Table ------------------- |------------------------------------------------------------------------------ | Interface Name | Classification | Comments | |-------------------------+------------------+--------------------------------- | mpt_sas(7D) | Committed | Driver name | | | | | | mpt_sas.conf | Committed | Configuration file | | | | | | SUNWmptsas | Committed | Package name | | | | | |-----------------------------------------------------------------------------| 4) Proposal Details -------------------- 4.1) mpt_sas(7D) is as a SCSI/SAS HBA driver across SPARC and x86 platforms which supports stock SCSA interfaces. 4.2) The proposed driver supports multiple initiator ports. Exporting the real SCSI I-T nexus, once mpt_sas(7D) detects initiator ports, it would register the initiator ports. These are represented as individual child nexus devinfo nodes in the Solaris device tree. All attached target devices would be children of a specific initiator port rather than PCI function. The IR (Integrated RAID) volumes are children of a special virtual initiator port nexus. 4.3) The driver class of proposed driver is "scsi-self-identifying" which means that the driver is able to discover and enumerate target devices automatically rather than relying entries in the .conf file of the target driver. The proposed driver is able to discover and enumerate SAS/SATA/SMP /IR target devices. 4.4) The propsed driver represents attached target devices in standard way which would be compatible with future SCSA v3 naming rules. 4.4.1) The node names of the SAS/SATA target devices are generic node names and based on scsi device type (dtype). 4.4.2) The unit-address of SAS/SATA target devices are the form of "target identifier, lun". The detail specification of target identifier please refer to FWARC 2008/013. The rule is generally of the form: 4.4.2.1) The target identifier of SAS target device is SAS address. 4.4.2.2) The target identifier of SATA target devices with ATA "Device Name" (108-111 words of ATA IDENTIFY) is the ATA "Device Name". 4.4.2.3) The target identifier of directly attached SATA device without ATA "Device Name" is attached PHY identifier. 4.4.2.4) The target identifier of indirectly attached SATA device without ATA "Device Name" is STP address which is assigned by expander. 4.4.3) The node name of SMP target is "smp". 4.4.4) The unit address of SMP target is SAS address. 4.4.5) The node name of IR volume is "disk". 4.4.6) The unit address of IR volume is form of "w$WWID,0". WWID of IR volume is World Wide Identifier of the IR volume by replacing the top nibble to "3". 4.5) The proposed driver supports Solaris IO Multipathing(MPxIO) for SAS/SATA devices and MPxIO is turned on by default. Solaris I/O multipathing is enabled or disabled on SAS/SATA devices which associates to mpt_sas(7D) with the mpxio-disable property. Specifying mpxio-disable="no" activates I/O multipathing, while mpxio-disable="yes" disables the feature. I/O multipathing feature of mpt_sas(7D) may be enabled or disabled on a per HBA basis. /kernel/drv/mpt_sas.conf will contain commentary about property 'mpxio-disable', system administrators will need to modify the property, or use the stmsboot(1M) utility to disable or enable MPxIO. The default setting for 'mpxio-disable' (When missing the entry), will be "no". This means that the SAS/SATA MPxIO feature will be enabled by default unless specifically disabled by the system administrator. 4.6) The proposed driver supports Power management, FMA and fast reboot as required. 4.7) The proposed driver supports some Project Private ioctl interfaces. These enable the use of a vendor utility with the mpt_sas(7D) driver. 5) Packaging & Delivery: The mpt_sas(7d) driver will be delivered initially on both x86 and SPARC architectures, the driver delivery will include: /kernel/drv/mpt_sas /kernel/drv/mpt_sas.conf /kernel/drv/amd64/mpt_sas /kernel/drv/sparcv9/mpt_sas The mpt_sas(7d) manpage will be included in SUNWman. 6). Resources and Schedule: 6.1). Product Approval Committee requested information: 6.1.1) Consolidation or Component Name: ON 6.2) ARC review type: Fast Track 6.3) ARC Exposure: open 6) References ------------- LSI MPI 2.0 revision J PSARC/2006/703 MPxIO extension for Serial Attached SCSI (SAS) on mpt(7D) PSARC/2007/595 Serial Attached SCSI (SAS) Management Protocol (SMP) support for Solaris PSARC/2008/337 scsi-self-identifying PSARC/2002/510 Sun Fire V440 (Chalupa) - Platform support [introduced MPT] PSARC/2005/097 Solaris support for LSI SAS1064 on Ontario FWARC/2008/013 SCSI SAS 1275 Binding CR 6810441 Solaris needs to expose initiator port for multiple-port HBAs CR 6762621 Add interconnect type for SAS transport.