LSI mps(4) driver issues with PIKE 2008/IMR (LSI SAS2008)

Jake Smith jake at xz.cx
Thu Mar 22 15:29:34 UTC 2012


Hello,

I am trying to get the latest mps(4) driver in FreeBSD 9-STABLE working 
with am LSI SAS2008 variant from ASUS, they call it PIKE 2008/IMR. Link 
http://www.asus.com/Server_Workstation/Accessories/PIKE_2008IMR/

 From what I can see this card should be compatible with the mps(4) 
driver MFC'd to 9-STABLE about 6 weeks ago.

# uname -a
FreeBSD xxx 9.0-STABLE FreeBSD 9.0-STABLE #3 r233304M: Thu Mar 22 
12:53:17 GMT 2012     root at xxx:/usr/obj/usr/src/sys/GENERIC  amd64

Revision: 233304

Initially the card is not seen at all by the driver, however pciconf 
shows us why that is.

mps0 at pci0:2:0:0:        class=0x010700 card=0x843b1043 chip=0x00731000 
rev=0x03 hdr=0x00
     vendor     = 'LSI Logic / Symbios Logic'
     device     = 'MegaRAID SAS 9240'
     class      = mass storage
     subclass   = SAS

It seems on other models of LSI SAS2008 the chip device ID is 0x0072, 
however for some reason this card has 0x0073. So I patched the mps(4) 
driver and recompiled.

diff -ruN mps.orig/mpi/mpi2_cnfg.h mps/mpi/mpi2_cnfg.h
--- mps.orig/mpi/mpi2_cnfg.h	2012-03-22 14:50:53.000000000 +0000
+++ mps/mpi/mpi2_cnfg.h	2012-03-22 14:52:23.000000000 +0000
@@ -416,7 +416,8 @@

  /* SAS */
  #define MPI2_MFGPAGE_DEVID_SAS2004                  (0x0070)
-#define MPI2_MFGPAGE_DEVID_SAS2008                  (0x0072)
+#define MPI2_MFGPAGE_DEVID_SAS2008_1                (0x0072)
+#define MPI2_MFGPAGE_DEVID_SAS2008_2                (0x0073)
  #define MPI2_MFGPAGE_DEVID_SAS2108_1                (0x0074)
  #define MPI2_MFGPAGE_DEVID_SAS2108_2                (0x0076)
  #define MPI2_MFGPAGE_DEVID_SAS2108_3                (0x0077)
diff -ruN mps.orig/mps_pci.c mps/mps_pci.c
--- mps.orig/mps_pci.c	2012-03-22 14:48:41.000000000 +0000
+++ mps/mps_pci.c	2012-03-22 14:51:59.000000000 +0000
@@ -99,7 +99,9 @@
  } mps_identifiers[] = {
  	{ MPI2_MFGPAGE_VENDORID_LSI, MPI2_MFGPAGE_DEVID_SAS2004,
  	    0xffff, 0xffff, 0, "LSI SAS2004" },
-	{ MPI2_MFGPAGE_VENDORID_LSI, MPI2_MFGPAGE_DEVID_SAS2008,
+	{ MPI2_MFGPAGE_VENDORID_LSI, MPI2_MFGPAGE_DEVID_SAS2008_1,
+	    0xffff, 0xffff, 0, "LSI SAS2008" },
+	{ MPI2_MFGPAGE_VENDORID_LSI, MPI2_MFGPAGE_DEVID_SAS2008_2,
  	    0xffff, 0xffff, 0, "LSI SAS2008" },
  	{ MPI2_MFGPAGE_VENDORID_LSI, MPI2_MFGPAGE_DEVID_SAS2108_1,
  	    0xffff, 0xffff, 0, "LSI SAS2108" },

After reboot it now loads the mps(4) module and attempts to init the 
card but fails.

# dmesg | grep mps
mps0: <LSI SAS2008> port 0xd800-0xd8ff mem 
0xfbd7c000-0xfbd7ffff,0xfbdc0000-0xfbdfffff irq 16 at device 0.0 on pci2
mps0: Doorbell failed to activate
device_attach: mps0 attach returned 6

 From this point I'm stuck on what to try next, google does not provide 
any answers for this situation. Does any one have any advice or ideas as 
to why this is not working?
I am able to provide ssh access to the server if any one wants to log 
on and have a look at it.

Really appreciate any help you can give.

Kind Regards
Jake



More information about the freebsd-hackers mailing list