| HPSA - Hewlett Packard Smart Array driver | |
| ----------------------------------------- | |
| This file describes the hpsa SCSI driver for HP Smart Array controllers. | |
| The hpsa driver is intended to supplant the cciss driver for newer | |
| Smart Array controllers. The hpsa driver is a SCSI driver, while the | |
| cciss driver is a "block" driver. Actually cciss is both a block | |
| driver (for logical drives) AND a SCSI driver (for tape drives). This | |
| "split-brained" design of the cciss driver is a source of excess | |
| complexity and eliminating that complexity is one of the reasons | |
| for hpsa to exist. | |
| Supported devices: | |
| ------------------ | |
| Smart Array P212 | |
| Smart Array P410 | |
| Smart Array P410i | |
| Smart Array P411 | |
| Smart Array P812 | |
| Smart Array P712m | |
| Smart Array P711m | |
| StorageWorks P1210m | |
| Additionally, older Smart Arrays may work with the hpsa driver if the kernel | |
| boot parameter "hpsa_allow_any=1" is specified, however these are not tested | |
| nor supported by HP with this driver. For older Smart Arrays, the cciss | |
| driver should still be used. | |
| The "hpsa_simple_mode=1" boot parameter may be used to prevent the driver from | |
| putting the controller into "performant" mode. The difference is that with simple | |
| mode, each command completion requires an interrupt, while with "performant mode" | |
| (the default, and ordinarily better performing) it is possible to have multiple | |
| command completions indicated by a single interrupt. | |
| HPSA specific entries in /sys | |
| ----------------------------- | |
| In addition to the generic SCSI attributes available in /sys, hpsa supports | |
| the following attributes: | |
| HPSA specific host attributes: | |
| ------------------------------ | |
| /sys/class/scsi_host/host*/rescan | |
| /sys/class/scsi_host/host*/firmware_revision | |
| /sys/class/scsi_host/host*/resettable | |
| /sys/class/scsi_host/host*/transport_mode | |
| 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 drives, | |
| etc.) and notify the SCSI midlayer of any changes detected. Normally this is | |
| triggered automatically by HP's Array Configuration Utility (either the GUI or | |
| command line variety) so for logical drive changes, the user should not | |
| normally have to use this. It may be useful when hot plugging devices like | |
| tape drives, or entire storage boxes containing pre-configured logical drives. | |
| The "firmware_revision" attribute contains the firmware version of the Smart Array. | |
| For example: | |
| root@host:/sys/class/scsi_host/host4# cat firmware_revision | |
| 7.14 | |
| The transport_mode indicates whether the controller is in "performant" | |
| or "simple" mode. This is controlled by the "hpsa_simple_mode" module | |
| parameter. | |
| The "resettable" read-only attribute indicates whether a particular | |
| controller is able to honor the "reset_devices" kernel parameter. If the | |
| device is resettable, this file will contain a "1", otherwise, a "0". This | |
| parameter is used by kdump, for example, to reset the controller at driver | |
| load time to eliminate any outstanding commands on the controller and get the | |
| controller into a known state so that the kdump initiated i/o will work right | |
| and not be disrupted in any way by stale commands or other stale state | |
| remaining on the controller from the previous kernel. This attribute enables | |
| kexec tools to warn the user if they attempt to designate a device which is | |
| unable to honor the reset_devices kernel parameter as a dump device. | |
| HPSA specific disk attributes: | |
| ------------------------------ | |
| /sys/class/scsi_disk/c:b:t:l/device/unique_id | |
| /sys/class/scsi_disk/c:b:t:l/device/raid_level | |
| /sys/class/scsi_disk/c:b:t:l/device/lunid | |
| (where c:b:t:l are the controller, bus, target and lun of the device) | |
| For example: | |
| root@host:/sys/class/scsi_disk/4:0:0:0/device# cat unique_id | |
| 600508B1001044395355323037570F77 | |
| root@host:/sys/class/scsi_disk/4:0:0:0/device# cat lunid | |
| 0x0000004000000000 | |
| root@host:/sys/class/scsi_disk/4:0:0:0/device# cat raid_level | |
| RAID 0 | |
| HPSA specific ioctls: | |
| --------------------- | |
| For compatibility with applications written for the cciss driver, many, but | |
| not all of the ioctls supported by the cciss driver are also supported by the | |
| hpsa driver. The data structures used by these are described in | |
| include/linux/cciss_ioctl.h | |
| 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 | |
| hpsa 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: | |
| (major_version << 16) | (minor_version << 8) | (subminor_version) | |
| CCISS_PASSTHRU | |
| CCISS_BIG_PASSTHRU | |
| Allows "BMIC" and "CISS" commands to be passed through to the Smart Array. | |
| These are used extensively by the HP Array Configuration Utility, SNMP storage | |
| agents, etc. See cciss_vol_status at http://cciss.sf.net for some examples. | |