LSI - MR-Fusion controller driver <mrsas> patch and man page
Doug Ambrisko
ambrisko at cisco.com
Tue Mar 18 14:39:42 UTC 2014
Sounds good. I'll try it out and see how it works.
I won't be able to make today's meeting.
Thanks,
Doug A.
On Tue, Mar 18, 2014 at 09:23:23AM +0000, Desai, Kashyap wrote:
| Hi,
|
| Please find the latest <mrsas> patch for upstream commit.
|
| - This patch include all latest and greatest feature supported by
| <mrsas> driver released at LSI external site.
| - mfi vs mrsas interopt is resolved using latest <mfi> commit which uses
| tunable " hw.mfi.mrsas_enable".
|
| <mrsas> man page is still under re-work. I will be posting <mrsas> man
| page as a follow up action item.
|
| Thanks, Kashyap
|
| > -----Original Message-----
| > From: Doug Ambrisko [mailto:ambrisko at ambrisko.com]
| > Sent: Saturday, January 25, 2014 12:31 AM
| > To: Doug Ambrisko
| > Cc: Desai, Kashyap; freebsd-scsi at freebsd.org; scottl at netflix.com;
| > sean_bruno at yahoo.com; dwhite at ixsystems.com; jpaetzel at freebsd.org;
| > Maloy, Joe; Mankani, Krishnaraddi; McConnell, Stephen; Saxena, Sumit;
| > Radford, Adam; Kenneth D. Merry
| > Subject: Re: LSI - MR-Fusion controller driver <mrsas> patch and man page
| >
| > On Fri, Jan 24, 2014 at 10:53:56AM -0800, Doug Ambrisko wrote:
| > | On Tue, Jan 07, 2014 at 10:11:39AM -0800, Doug Ambrisko wrote:
| > | [snip]
| > | | Yes, we can probably make the minimal change to mfi to allow mrsas
| > | | to optionally take over. That can probably be done the quickest.
| > |
| > | Here is the patch I propose to mfi(4) to allow mrsas(4) to optionally
| > | take newer cards.
| >
| > I noticed that this patch is partially incomplete since I didn't have
| > FLAGS_MRSAS added to all of the TBOLT ID's. I'll fix that in the commit.
| >
| > | Index: mfi_pci.c
| > |
| > ==========================================================
| > =========
| > | --- mfi_pci.c (revision 260231)
| > | +++ mfi_pci.c (working copy)
| > | @@ -112,6 +112,11 @@
| > | SYSCTL_INT(_hw_mfi, OID_AUTO, msi, CTLFLAG_RDTUN, &mfi_msi, 0,
| > | "Enable use of MSI interrupts");
| > |
| > | +static int mfi_mrsas_enable = 0;
| > | +TUNABLE_INT("hw.mfi.mrsas_enable", &mfi_msi); SYSCTL_INT(_hw_mfi,
| > | +OID_AUTO, mrsas_enable, CTLFLAG_RDTUN, &mfi_mrsas_enable,
| > | + 0, "Allow mrasas to take newer cards");
| > | +
| > | struct mfi_ident {
| > | uint16_t vendor;
| > | uint16_t device;
| > | @@ -127,11 +132,11 @@
| > | {0x1000, 0x005b, 0x1028, 0x1f34, MFI_FLAGS_SKINNY|
| > MFI_FLAGS_TBOLT, "Dell PERC H710P Mini (monolithics)"},
| > | {0x1000, 0x005b, 0x1028, 0x1f35, MFI_FLAGS_SKINNY|
| > MFI_FLAGS_TBOLT, "Dell PERC H710 Adapter"},
| > | {0x1000, 0x005b, 0x1028, 0x1f37, MFI_FLAGS_SKINNY|
| > MFI_FLAGS_TBOLT, "Dell PERC H710 Mini (blades)"},
| > | - {0x1000, 0x005b, 0x1028, 0x1f38, MFI_FLAGS_SKINNY|
| > MFI_FLAGS_TBOLT, "Dell PERC H710 Mini (monolithics)"},
| > | - {0x1000, 0x005b, 0x8086, 0x9265, MFI_FLAGS_SKINNY|
| > MFI_FLAGS_TBOLT, "Intel (R) RAID Controller RS25DB080"},
| > | - {0x1000, 0x005b, 0x8086, 0x9285, MFI_FLAGS_SKINNY|
| > MFI_FLAGS_TBOLT, "Intel (R) RAID Controller RS25NB008"},
| > | - {0x1000, 0x005b, 0xffff, 0xffff, MFI_FLAGS_SKINNY|
| > MFI_FLAGS_TBOLT, "ThunderBolt"},
| > | - {0x1000, 0x005d, 0xffff, 0xffff, MFI_FLAGS_SKINNY|
| > MFI_FLAGS_TBOLT, "Invader"},
| > | + {0x1000, 0x005b, 0x1028, 0x1f38, MFI_FLAGS_SKINNY|
| > MFI_FLAGS_TBOLT| MFI_FLAGS_MRSAS, "Dell PERC H710 Mini
| > (monolithics)"},
| > | + {0x1000, 0x005b, 0x8086, 0x9265, MFI_FLAGS_SKINNY|
| > MFI_FLAGS_TBOLT| MFI_FLAGS_MRSAS, "Intel (R) RAID Controller
| > RS25DB080"},
| > | + {0x1000, 0x005b, 0x8086, 0x9285, MFI_FLAGS_SKINNY|
| > MFI_FLAGS_TBOLT| MFI_FLAGS_MRSAS, "Intel (R) RAID Controller
| > RS25NB008"},
| > | + {0x1000, 0x005b, 0xffff, 0xffff, MFI_FLAGS_SKINNY|
| > MFI_FLAGS_TBOLT| MFI_FLAGS_MRSAS, "ThunderBolt"},
| > | + {0x1000, 0x005d, 0xffff, 0xffff, MFI_FLAGS_SKINNY|
| > MFI_FLAGS_TBOLT|
| > | +MFI_FLAGS_MRSAS, "Invader"},
| > | {0x1000, 0x0060, 0x1028, 0xffff, MFI_FLAGS_1078, "Dell PERC 6"},
| > | {0x1000, 0x0060, 0xffff, 0xffff, MFI_FLAGS_1078, "LSI MegaSAS
| > 1078"},
| > | {0x1000, 0x0071, 0xffff, 0xffff, MFI_FLAGS_SKINNY, "Drake Skinny"},
| > | @@ -178,7 +183,13 @@
| > |
| > | if ((id = mfi_find_ident(dev)) != NULL) {
| > | device_set_desc(dev, id->desc);
| > | - return (BUS_PROBE_DEFAULT);
| > | +
| > | + /* give priority to mrsas if tunable set */
| > | + TUNABLE_INT_FETCH("hw.mfi.mrsas_enable",
| > &mfi_mrsas_enable);
| > | + if ((id->flags & MFI_FLAGS_MRSAS) && mfi_mrsas_enable)
| > | + return (BUS_PROBE_LOW_PRIORITY);
| > | + else
| > | + return (BUS_PROBE_DEFAULT);
| > | }
| > | return (ENXIO);
| > | }
| > | Index: mfivar.h
| > |
| > ==========================================================
| > =========
| > | --- mfivar.h (revision 260231)
| > | +++ mfivar.h (working copy)
| > | @@ -199,6 +199,7 @@
| > | #define MFI_FLAGS_GEN2 (1<<6)
| > | #define MFI_FLAGS_SKINNY (1<<7)
| > | #define MFI_FLAGS_TBOLT (1<<8)
| > | +#define MFI_FLAGS_MRSAS (1<<9)
| > | // Start: LSIP200113393
| > | bus_dma_tag_t verbuf_h_dmat;
| > | bus_dmamap_t verbuf_h_dmamap;
| > |
| > | This creates a hw.mfi.mrsas_enable tunable to control it. The method
| > | via hints wasn't the best since for one the unit index was being
| > | abused a non-unit specfic option. It was also a little strange to
| > | have mrsas hint be in mfi(4).
| > |
| > | Then we need a minor change to mrsas.c
| > |
| > |
| > | --- ../mrsas.orig/mrsas.c 2014-01-03 11:30:28.000000000 -0800
| > | +++ ./mrsas.c 2014-01-24 10:43:20.000000000 -0800
| > | @@ -328,25 +328,11 @@ static struct mrsas_ident * mrsas_find_i static
| > | int mrsas_probe(device_t dev) {
| > | struct mrsas_ident *id;
| > | - unsigned int force = 0, ivar;
| > |
| > | if ((id = mrsas_find_ident(dev)) != NULL) {
| > | - if (id->device == 0x005b || id->device == 0x005d) {
| > | - resource_int_value("mrsas", 0, "fusion_force", &ivar);
| > | -
| > | - if (ivar == 0 || ivar == 1)
| > | - force = ivar;
| > | -
| > | - device_set_desc(dev, id->desc);
| > | - if (force)
| > | - return (BUS_PROBE_DEFAULT);
| > | - //return (BUS_PROBE_SPECIFIC); //give priority to MFI driver
| > | - else
| > | - return (BUS_PROBE_LOW_PRIORITY);
| > | - }
| > | - else
| > | - device_set_desc(dev, id->desc);
| > | - return (BUS_PROBE_DEFAULT);
| > | + device_set_desc(dev, id->desc);
| > | + /* between BUS_PROBE_DEFAULT and BUS_PROBE_LOW_PRIORITY
| > */
| > | + return (-30);
| > | }
| > | return (ENXIO);
| > |
| > | So that its probe part way between mfi(4) results and then it doesn't
| > | have to change.
| > |
| > | If no one has concerns then I'll check in the mfi(4) change.
| >
| > Thanks,
| >
| > Doug A.
|
More information about the freebsd-scsi
mailing list