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

Kenneth D. Merry ken at freebsd.org
Thu Mar 22 22:19:06 UTC 2012


On Thu, Mar 22, 2012 at 16:24:16 +0100, Jake Smith wrote:
> 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.

In looking at the specs, that card supports RAID-5 and RAID-50.  That means
it isn't a SAS card supported by mps(4), but rather a MegaRAID card.

It should be supported by mfi(4).  Try adding the PCI ID to that
driver and see if that works.  Or you can grab the driver from the
head_mfi branch, it looks like it already supports that card.  Here's the
mfi_pci.c file, you can see the PCI ID in there:

http://svnweb.freebsd.org/base/projects/head_mfi/sys/dev/mfi/mfi_pci.c?revision=232888&view=markup

Ken
-- 
Kenneth Merry
ken at FreeBSD.ORG


More information about the freebsd-scsi mailing list