Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: MegaRAID 3008/3108



On 06/03/15 21:30, Christos Zoulas wrote:
In article <20150603122110.5f267ef8@taliesin-2.local>,
Harry Waddell  <waddell%caravan-epub.com@localhost> wrote:
On Wed, 3 Jun 2015 18:27:44 +0000 (UTC)
christos%astron.com@localhost (Christos Zoulas) wrote:

In article <20150603111042.4fad14b2@taliesin-2.local>,
Harry Waddell  <waddell%caravaninfotech.com@localhost> wrote:
On Tue, 2 Jun 2015 16:13:07 +0100 (BST)
Stephen Borrill <netbsd%precedence.co.uk@localhost> wrote:

Anyone working on adding support for SYMBIOS MEGARAID 3108 (0x1000/0x005d)
or 3008 (0x1000/0x005f)? These are supported in OpenBSD by the mfii driver
which also supports the MEGARAID 2208 (0x1000/0x005b). In NetBSD, the
mfi(4) driver was extended to support the 2208 (Thunderbolt) rather than
adding a new driver. The 3008/3108 will require another MFI_IOP type
(OpenBSD call it 25).

--
Stephen

I have a system with this on the motherboard, but I'm dropping an lsi
9261-i8 in
because the newer cards are not supported. My vendor has told me that
the 9261 is near EOL,
so it would be really helpful if someone could add support for the newer LSI
cards. Unfortunately, I don't have much experience in this area.
Shouldn't be too hard to do... As long someone has a card to test...

christos

I just double checked my invoice and the MB has an embedded 3108
hooked up to 7 sata and 1 ssd drive ( for cachecade ).

I don't need to put this into production immediately, so I
can test something during the next few days.
After that, it will be hard  to test with drives hooked up as
the cables are not the same for it and the 9261. Just seeing if the
hw get recognized without drives attached would be easy enough.

I should be getting two more identical systems in the next few months,
so I could test it with one of those too. The plan is to put
netbsd-7 on these, but I could boot a current kernel if needed.
If Frank can post his patches and we can take a look at the OpenBSD
driver for the I/O performance fix.

christos
Well, here is the proof of concept patch - could be a starting point.
Frank
Index: ic/mfi.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/mfi.c,v
retrieving revision 1.57
diff -u -r1.57 mfi.c
--- ic/mfi.c	4 Apr 2015 15:10:47 -0000	1.57
+++ ic/mfi.c	3 Jun 2015 19:41:32 -0000
@@ -71,7 +71,6 @@
  * are those of the authors and should not be interpreted as representing
  * official policies,either expressed or implied, of the FreeBSD Project.
  */
-
 #include <sys/cdefs.h>
 __KERNEL_RCSID(0, "$NetBSD: mfi.c,v 1.57 2015/04/04 15:10:47 christos Exp $");
 
@@ -109,7 +108,7 @@
 #endif /* NBIO > 0 */
 
 #ifdef MFI_DEBUG
-uint32_t	mfi_debug = 0
+uint32_t	mfi_debug = ~0 /* XXXkd */
 /*		    | MFI_D_CMD  */
 /*		    | MFI_D_INTR */
 /*		    | MFI_D_MISC */
@@ -3292,7 +3291,11 @@
 	for (i = 0; i < sge_idx; i++) {
 		sgl_ptr->Address = htole64(sgd[i].ds_addr);
 		sgl_ptr->Length = htole32(sgd[i].ds_len);
-		sgl_ptr->Flags = 0;
+		if (i == sge_count - 1) {
+			sgl_ptr->Flags = MPI25_IEEE_SGE_FLAGS_END_OF_LIST;
+		} else {
+			sgl_ptr->Flags = 0;
+		}
 		if (sge_idx < sge_count) {
 			DNPRINTF(MFI_D_DMA,
 			    "sgl %p %d 0x%" PRIx64 " len 0x%" PRIx32
@@ -3309,8 +3312,11 @@
 		sg_chain = sgl_ptr;
 		/* Prepare chain element */
 		sg_chain->NextChainOffset = 0;
+		sg_chain->Flags = (MPI2_IEEE_SGE_FLAGS_CHAIN_ELEMENT);
+#if 0 /* XXXkd */
 		sg_chain->Flags = (MPI2_IEEE_SGE_FLAGS_CHAIN_ELEMENT |
-		    MPI2_IEEE_SGE_FLAGS_IOCPLBNTA_ADDR);
+				   MPI2_IEEE_SGE_FLAGS_IOCPLBNTA_ADDR); /* XXXkd not in FreeBSD! */
+#endif
 		sg_chain->Length =  (sizeof(mpi2_sge_io_union) *
 		    (sge_count - sge_idx));
 		sg_chain->Address = ccb->ccb_tb_psg_frame;
@@ -3322,7 +3328,11 @@
 		for (; i < sge_count; i++) {
 			sgl_ptr->Address = htole64(sgd[i].ds_addr);
 			sgl_ptr->Length = htole32(sgd[i].ds_len);
-			sgl_ptr->Flags = 0;
+			if (i == sge_count - 1) {
+				sgl_ptr->Flags = MPI25_IEEE_SGE_FLAGS_END_OF_LIST;
+			} else {
+				sgl_ptr->Flags = 0;
+			}
 			DNPRINTF(MFI_D_DMA,
 			    "sgl %p %d 0x%" PRIx64 " len 0x%" PRIx32
 			    " flags 0x%x\n", sgl_ptr, i, sgl_ptr->Address,
Index: pci/mfi_pci.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/mfi_pci.c,v
retrieving revision 1.18
diff -u -r1.18 mfi_pci.c
--- pci/mfi_pci.c	29 Mar 2014 19:28:25 -0000	1.18
+++ pci/mfi_pci.c	3 Jun 2015 19:41:32 -0000
@@ -144,6 +144,8 @@
 	  MFI_IOP_SKINNY,	mfi_skinny_subtypes },
 	{ PCI_VENDOR_SYMBIOS,	PCI_PRODUCT_SYMBIOS_MEGARAID_2208,
 	  MFI_IOP_TBOLT,	mfi_tbolt_subtypes },
+	{ PCI_VENDOR_SYMBIOS,	PCI_PRODUCT_SYMBIOS_MEGARAID_3108,
+	  MFI_IOP_TBOLT,	mfi_tbolt_subtypes },
 };
 
 const struct mfi_pci_device *


Home | Main Index | Thread Index | Old Index