forked from Minki/linux
1392de9d7a
Link: https://lore.kernel.org/r/ea58e04176d43fb7194615b145060aa04c9cf3ad.1583136624.git.mchehab+huawei@kernel.org Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
130 lines
5.1 KiB
ReStructuredText
130 lines
5.1 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0
|
|
|
|
=========================================
|
|
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.
|