^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) .. SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) =========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) HPSA - Hewlett Packard Smart Array driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) =========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) This file describes the hpsa SCSI driver for HP Smart Array controllers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) The hpsa driver is intended to supplant the cciss driver for newer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) Smart Array controllers. The hpsa driver is a SCSI driver, while the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) cciss driver is a "block" driver. Actually cciss is both a block
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) driver (for logical drives) AND a SCSI driver (for tape drives). This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) "split-brained" design of the cciss driver is a source of excess
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) complexity and eliminating that complexity is one of the reasons
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) for hpsa to exist.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) Supported devices
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) =================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) - Smart Array P212
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) - Smart Array P410
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) - Smart Array P410i
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) - Smart Array P411
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) - Smart Array P812
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) - Smart Array P712m
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) - Smart Array P711m
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) - StorageWorks P1210m
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) Additionally, older Smart Arrays may work with the hpsa driver if the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) boot parameter "hpsa_allow_any=1" is specified, however these are not tested
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) nor supported by HP with this driver. For older Smart Arrays, the cciss
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) driver should still be used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) The "hpsa_simple_mode=1" boot parameter may be used to prevent the driver from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) putting the controller into "performant" mode. The difference is that with simple
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) mode, each command completion requires an interrupt, while with "performant mode"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) (the default, and ordinarily better performing) it is possible to have multiple
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) command completions indicated by a single interrupt.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) HPSA specific entries in /sys
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) =============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) In addition to the generic SCSI attributes available in /sys, hpsa supports
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) the following attributes:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) HPSA specific host attributes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) =============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) /sys/class/scsi_host/host*/rescan
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) /sys/class/scsi_host/host*/firmware_revision
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) /sys/class/scsi_host/host*/resettable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) /sys/class/scsi_host/host*/transport_mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) the host "rescan" attribute is a write only attribute. Writing to this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) attribute will cause the driver to scan for new, changed, or removed devices
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) (e.g. hot-plugged tape drives, or newly configured or deleted logical drives,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) etc.) and notify the SCSI midlayer of any changes detected. Normally this is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) triggered automatically by HP's Array Configuration Utility (either the GUI or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) command line variety) so for logical drive changes, the user should not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) normally have to use this. It may be useful when hot plugging devices like
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) tape drives, or entire storage boxes containing pre-configured logical drives.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) The "firmware_revision" attribute contains the firmware version of the Smart Array.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) For example::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) root@host:/sys/class/scsi_host/host4# cat firmware_revision
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) 7.14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) The transport_mode indicates whether the controller is in "performant"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) or "simple" mode. This is controlled by the "hpsa_simple_mode" module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) parameter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) The "resettable" read-only attribute indicates whether a particular
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) controller is able to honor the "reset_devices" kernel parameter. If the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) device is resettable, this file will contain a "1", otherwise, a "0". This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) parameter is used by kdump, for example, to reset the controller at driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) load time to eliminate any outstanding commands on the controller and get the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) controller into a known state so that the kdump initiated i/o will work right
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) and not be disrupted in any way by stale commands or other stale state
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) remaining on the controller from the previous kernel. This attribute enables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) kexec tools to warn the user if they attempt to designate a device which is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) unable to honor the reset_devices kernel parameter as a dump device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) HPSA specific disk attributes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) -----------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) /sys/class/scsi_disk/c:b:t:l/device/unique_id
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) /sys/class/scsi_disk/c:b:t:l/device/raid_level
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) /sys/class/scsi_disk/c:b:t:l/device/lunid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) (where c:b:t:l are the controller, bus, target and lun of the device)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) For example::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) root@host:/sys/class/scsi_disk/4:0:0:0/device# cat unique_id
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) 600508B1001044395355323037570F77
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) root@host:/sys/class/scsi_disk/4:0:0:0/device# cat lunid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 0x0000004000000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) root@host:/sys/class/scsi_disk/4:0:0:0/device# cat raid_level
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) RAID 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) HPSA specific ioctls
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) For compatibility with applications written for the cciss driver, many, but
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) not all of the ioctls supported by the cciss driver are also supported by the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) hpsa driver. The data structures used by these are described in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) include/linux/cciss_ioctl.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) CCISS_DEREGDISK, CCISS_REGNEWDISK, CCISS_REGNEWD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) The above three ioctls all do exactly the same thing, which is to cause the driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) to rescan for new devices. This does exactly the same thing as writing to the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) hpsa specific host "rescan" attribute.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) CCISS_GETPCIINFO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) Returns PCI domain, bus, device and function and "board ID" (PCI subsystem ID).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) CCISS_GETDRIVVER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) Returns driver version in three bytes encoded as::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) (major_version << 16) | (minor_version << 8) | (subminor_version)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) CCISS_PASSTHRU, CCISS_BIG_PASSTHRU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) Allows "BMIC" and "CISS" commands to be passed through to the Smart Array.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) These are used extensively by the HP Array Configuration Utility, SNMP storage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) agents, etc. See cciss_vol_status at http://cciss.sf.net for some examples.