hpsa(4)

πŸ’– hpsa β€” HP Smart Array SCSI driver πŸ’–

okay bestie, gather round, because this is the manual page for hpsa from the kernel interfaces girlies, and she is serving RAID controller realness. no cap.


✨ NAME ✨

hpsa β€” HP Smart Array SCSI driver


🌸 SYNOPSIS 🌸

modprobe hpsa [ hpsa_allow_any=1 ]

πŸ¦‹ DESCRIPTION πŸ¦‹

hpsa is a SCSI driver for HP Smart Array RAID controllers. that's the whole vibe. it talks to your RAID hardware so your disks can be disks. πŸ’…

πŸŽ€ Options πŸŽ€

  • hpsa_allow_any=1 β€” this one lets the driver try to operate on any HP Smart Array hardware RAID controller, even one it doesn't explicitly know about. it's giving "let me in, i can handle it." the point is letting newer hardware work with older drivers β€” usually so you can install an operating system from media that predates the RAID controller. it may also be used to enable hpsa to drive older controllers that would normally be handled by the cciss(4) driver. BUT β€” and this is the important part β€” those older boards have not been tested and are not supported with hpsa, and cciss(4) should still be used for these. do not come crying to me. πŸ™ˆ

πŸ‘‘ Supported hardware πŸ‘‘

the hpsa driver supports these Smart Array boards:

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

since Linux 4.14, these Smart Array boards are also supported:

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

(yes, Smart Array E200i is listed four whole times. she said it with her chest. we respect it. πŸ’€)

🧚 Configuration details 🧚

to configure HP Smart Array controllers, you use the HP Array Configuration Utility (either hpacuxe(8) or hpacucli(8)), or the Offline ROM-based Configuration Utility (ORCA), which you run from the Smart Array's option ROM at boot time. pick your fighter. ✨


🌈 FILES 🌈

πŸ“ Device nodes πŸ“

logical drives are accessed via the SCSI disk driver (sd(4)), tape drives via the SCSI tape driver (st(4)), and the RAID controller via the SCSI generic driver (sg(4)), with device nodes named /dev/sd*, /dev/st*, and /dev/sg*, respectively. cute little family of paths, honestly. 🫢

πŸ’œ HPSA-specific host attribute files in /sys πŸ’œ

  • /sys/class/scsi_host/host*/rescan β€” this is a write-only attribute. writing to it makes the driver scan for new, changed, or removed devices (think: hot-plugged tape drives, or newly configured or deleted logical drives, etc.) and notify the SCSI midlayer of any changes it detected. normally a rescan gets triggered automatically by HP's Array Configuration Utility (either the GUI or the command-line variety), so for logical drive changes you should not normally have to use this attribute. it's useful when you're hot plugging devices like tape drives, or entire storage boxes containing preconfigured logical drives. niche but iconic.
  • /sys/class/scsi_host/host*/firmware_revision β€” this attribute holds the firmware version of the Smart Array.

for example:

# cd /sys/class/scsi_host/host4;
# cat firmware_revision;
7.14

🌸 HPSA-specific disk attribute files in /sys 🌸

  • /sys/class/scsi_disk/c:b:t:l/device/unique_id β€” holds a 32 hex-digit unique ID for each logical drive.

for example:

# cd /sys/class/scsi_disk/4:0:0:0/device;
# cat unique_id;
600508B1001044395355323037570F77
  • /sys/class/scsi_disk/c:b:t:l/device/raid_level β€” holds the RAID level of each logical drive.

for example:

# cd /sys/class/scsi_disk/4:0:0:0/device;
# cat raid_level;
RAID 0
  • /sys/class/scsi_disk/c:b:t:l/device/lunid β€” holds the 16 hex-digit (8 byte) LUN ID by which a logical drive or physical device can be addressed. c:b:t:l are the controller, bus, target, and lun of the device.

for example:

# cd /sys/class/scsi_disk/4:0:0:0/device;
# cat lunid;
0x0000004000000000

⭐ Supported ioctl() operations ⭐

for compatibility with applications written for the cciss(4) driver, many, but not all of the ioctls supported by the cciss(4) driver are also supported by the hpsa driver. the data structures used by these ioctls are described in the Linux kernel source file include/linux/cciss_ioctl.h. slay, backwards compatibility. πŸ’…

  • 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. it does exactly the same thing as writing to the hpsa-specific host "rescan" attribute. three names, one job. multitasking queen. πŸ‘‘

  • 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, and so on. see cciss_vol_status at http://cciss.sf.net for some examples. πŸ”₯


πŸ¦„ SEE ALSO πŸ¦„

cciss(4), sd(4), st(4), cciss_vol_status(8), hpacucli(8), hpacuxe(8)

http://cciss.sf.net, and Documentation/scsi/hpsa.rst and Documentation/ABI/testing/sysfs-bus-pci-devices-cciss in the Linux kernel source tree


heads up bestie: that hpsa_allow_any=1 thing is not a free-for-all. those older boards are unsupported and untested with hpsa, and you should keep using cciss(4) for them. i'm not being dramatic, i'm being correct. 😭

okay that's the whole page!! this one came from the Linux man-pages 6.20 collection, dated 2026-02-08, and it's the hpsa(4) page specifically. mwah, go read your cciss(4) next, it's her sister fr fr. πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’…πŸ«Ά

πŸ“¦ where this page comes from
  • arch rolling: man-pages 6.20-1 Β· BSD-2-Clause AND BSD-3-Clause AND BSD-4.3TAHOE AND BSD-4-Clause-UC AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-linking-exception AND LGPL-3.0-or-later AND LicenseRef-Public-Domain AND LicenseRef-UltraPermissive AND Linux-man-pages-1-para AND Linux-man-pages-copyleft AND Linux-man-pages-copyleft-2-para AND Linux-man-pages-copyleft-var AND MIT AND Spencer-94
  • nixpkgs unstable: man-pages 6.20
  • πŸ“œ the page's license: GPL-2.0-only
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms