.\" Copyright (C) 2011, Hewlett-Packard Development Company, L.P.
.\" Written by Stephen M. Cameron <scameron@beardog.cce.hp.com>
.\"
.\" SPDX-License-Identifier: GPL-2.0-only
.\"
.\" shorthand for double quote that works everywhere.
.ds q \N'34'
.TH hpsa 4 2022-10-30 "Linux man-pages 6.04"
.SH NAME
hpsa \- HP Smart Array SCSI driver
.SH SYNOPSIS
.nf
modprobe hpsa [ hpsa_allow_any=1 ]
.fi
.SH DESCRIPTION
.B hpsa
is a SCSI driver for HP Smart Array RAID controllers.
.SS Options
.IR "hpsa_allow_any=1" :
This option allows the driver to attempt to operate on
any HP Smart Array hardware RAID controller,
even if it is not explicitly known to the driver.
This allows newer hardware to work with older drivers.
Typically this is used to allow installation of
operating systems from media that predates the
RAID controller, though it may also be used to enable
.B hpsa
to drive older controllers that would normally be handled by the
.BR cciss (4)
driver.
These older boards have not been tested and are
not supported with
.BR hpsa ,
and
.BR cciss (4)
should still be used for these.
.SS Supported hardware
The
.B hpsa
driver supports the following Smart Array boards:
.PP
.nf
    Smart Array P700M
    Smart Array P212
    Smart Array P410
    Smart Array P410i
    Smart Array P411
    Smart Array P812
    Smart Array P712m
    Smart Array P711m
    StorageWorks P1210m
.fi
.PP
.\" commit 135ae6edeb51979d0998daf1357f149a7d6ebb08
Since Linux 4.14, the following Smart Array boards are also supported:
.PP
.nf
    Smart Array 5300
    Smart Array 5312
    Smart Array 532
    Smart Array 5i
    Smart Array 6400
    Smart Array 6400 EM
    Smart Array 641
    Smart Array 642
    Smart Array 6i
    Smart Array E200
    Smart Array E200i
    Smart Array E200i
    Smart Array E200i
    Smart Array E200i
    Smart Array E500
    Smart Array P400
    Smart Array P400i
    Smart Array P600
    Smart Array P700m
    Smart Array P800
.fi
.SS Configuration details
To configure HP Smart Array controllers,
use the HP Array Configuration Utility (either
.BR hpacuxe (8)
or
.BR hpacucli (8))
or the Offline ROM-based Configuration Utility (ORCA)
run from the Smart Array's option ROM at boot time.
.SH FILES
.SS Device nodes
Logical drives are accessed via the SCSI disk driver
.RB ( sd (4)),
tape drives via the SCSI tape driver
.RB ( st (4)),
and
the RAID controller via the SCSI generic driver
.RB ( sg (4)),
with device nodes named
.IR /dev/sd* ,
.IR /dev/st* ,
and
.IR /dev/sg* ,
respectively.
.SS HPSA-specific host attribute files in /sys
.TP
.I /sys/class/scsi_host/host*/rescan
This 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 a rescan is triggered automatically
by HP's Array Configuration Utility (either the GUI or the
command-line variety);
thus, for logical drive changes, the user should not
normally have to use this attribute.
This attribute may be useful when hot plugging devices like tape drives,
or entire storage boxes containing preconfigured logical drives.
.TP
.I /sys/class/scsi_host/host*/firmware_revision
This attribute contains the firmware version of the Smart Array.
.IP
For example:
.IP
.in +4n
.EX
# \fBcd /sys/class/scsi_host/host4\fP
# \fBcat firmware_revision\fP
7.14
.EE
.in
.\"
.SS HPSA-specific disk attribute files in /sys
.TP
.I /sys/class/scsi_disk/c:b:t:l/device/unique_id
This attribute contains a 32 hex-digit unique ID for each logical drive.
.IP
For example:
.IP
.in +4n
.EX
# \fBcd /sys/class/scsi_disk/4:0:0:0/device\fP
# \fBcat unique_id\fP
600508B1001044395355323037570F77
.EE
.in
.TP
.I /sys/class/scsi_disk/c:b:t:l/device/raid_level
This attribute contains the RAID level of each logical drive.
.IP
For example:
.IP
.in +4n
.EX
# \fBcd /sys/class/scsi_disk/4:0:0:0/device\fP
# \fBcat raid_level\fP
RAID 0
.EE
.in
.TP
.I /sys/class/scsi_disk/c:b:t:l/device/lunid
This attribute contains the 16 hex-digit (8 byte) LUN ID
by which a logical drive or physical device can be addressed.
.IR c : b : t : l
are the controller, bus, target, and lun of the device.
.PP
For example:
.IP
.in +4n
.EX
# \fBcd /sys/class/scsi_disk/4:0:0:0/device\fP
# \fBcat lunid\fP
0x0000004000000000
.EE
.in
.\"
.SS Supported ioctl() operations
For compatibility with applications written for the
.BR cciss (4)
driver, many, but
not all of the ioctls supported by the
.BR cciss (4)
driver are also supported by the
.B hpsa
driver.
The data structures used by these ioctls are described in
the Linux kernel source file
.IR include/linux/cciss_ioctl.h .
.TP
.BR CCISS_DEREGDISK ", " CCISS_REGNEWDISK ", " CCISS_REGNEWD
These 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.
.TP
.B CCISS_GETPCIINFO
Returns PCI domain, bus, device, and function and "board ID" (PCI subsystem ID).
.TP
.B CCISS_GETDRIVVER
Returns driver version in three bytes encoded as:
.IP
.in +4n
.EX
(major_version << 16) | (minor_version << 8) |
    (subminor_version)
.EE
.in
.TP
.BR 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, and so on.
See
.I cciss_vol_status
at
.UR http://cciss.sf.net
.UE
for some examples.
.SH SEE ALSO
.BR cciss (4),
.BR sd (4),
.BR st (4),
.BR cciss_vol_status (8),
.BR hpacucli (8),
.BR hpacuxe (8)
.PP
.UR http://cciss.sf.net
.UE ,
and
.I Documentation/scsi/hpsa.txt
and
.I Documentation/ABI/testing/sysfs\-bus\-pci\-devices\-cciss
in the Linux kernel source tree
.\" .SH AUTHORS
.\" Don Brace, Steve Cameron, Tom Lawler, Mike Miller, Scott Teel
.\" and probably some other people.
