Solaris 10 x64 and Symbios SYM22801 (and other LSI SCSI controllers)

Today I’ve discovered that the very common Symbios 22801 (aka Symbios Logic 53c875) SCSI controller is (unexpectedly) failing to be recognized by Solaris 10 on x64 hardware. In fact I was in the middle of the upgrade of my home backup infrastructure from an old DLT 20/40 to a newer DLT 40/80 to be connected to a Symbios card inside my Solaris box. Unfortunately after the reboot, the new card was unseen.

After some research on google I was able to find out that:

  1. The ncrs driver is not shipped with x64 kernel (yet it is for 32 bit version)
  2. The default alias for PCI device 1000:000f (the Sym22801 card) is ncrs
  3. Another driver which supports the 53c875 controller, called glm, is shipped with Solaris 10 and available for both 32 and 64bit versions

So, it is enough to point the 1000:000f alias to the glm driver, instead of ncrs, to have the controller recognized. That can be easily accomplished changing the following entry in /etc/driver_aliases:

ncrs "pci1000,f"
to
glm "pci1000,f"

After that it is enough to reboot Solaris with device reconfiguration turned on (touch /reconfigure before rebooting) and check that the controller is recognized (prtconf or cfgadm -al can be used for that).

Update: I had again the same issue with an LSI Logic 53C1010-66 Ultra160 SCSI dual HBA. In this case the missing driver is symhisl, whereas the line to tweak in /etc/driver_aliases is:

symhisl "pci1000,21"
to
glm "pci1000,21"