From owner-freebsd-scsi@FreeBSD.ORG Fri Jan 24 19:00:48 2014 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BFCB6BCC; Fri, 24 Jan 2014 19:00:48 +0000 (UTC) Received: from mail.ambrisko.com (mail.ambrisko.com [70.91.206.90]) by mx1.freebsd.org (Postfix) with ESMTP id 914831F44; Fri, 24 Jan 2014 19:00:48 +0000 (UTC) X-Ambrisko-Me: Yes Received: from server2.ambrisko.com (HELO internal.ambrisko.com) ([192.168.1.2]) by ironport.ambrisko.com with ESMTP; 24 Jan 2014 11:05:16 -0800 Received: from ambrisko.com (localhost [127.0.0.1]) by internal.ambrisko.com (8.14.4/8.14.4) with ESMTP id s0OJ0l7q035760; Fri, 24 Jan 2014 11:00:47 -0800 (PST) (envelope-from ambrisko@ambrisko.com) Received: (from ambrisko@localhost) by ambrisko.com (8.14.4/8.14.4/Submit) id s0OJ0lLr035759; Fri, 24 Jan 2014 11:00:47 -0800 (PST) (envelope-from ambrisko) Date: Fri, 24 Jan 2014 11:00:47 -0800 From: Doug Ambrisko To: Doug Ambrisko Subject: Re: LSI - MR-Fusion controller driver patch and man page Message-ID: <20140124190047.GA34975@ambrisko.com> References: <08ba2a262fba45f687cdd3225f325110@BN1PR07MB247.namprd07.prod.outlook.com> <20140103211449.GA69721@cisco.com> <8c423414ecc2421fbace3eb9f386be91@BN1PR07MB247.namprd07.prod.outlook.com> <20140106182935.GC93278@cisco.com> <20140107181139.GC2080@cisco.com> <20140124185356.GA28724@ambrisko.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140124185356.GA28724@ambrisko.com> User-Agent: Mutt/1.4.2.3i X-Mailman-Approved-At: Fri, 24 Jan 2014 19:43:58 +0000 Cc: "scottl@netflix.com" , "Radford, Adam" , "Kenneth D. Merry" , "sean_bruno@yahoo.com" , "Mankani, Krishnaraddi" , "dwhite@ixsystems.com" , "Maloy, Joe" , "jpaetzel@freebsd.org" , "freebsd-scsi@freebsd.org" , "McConnell, Stephen" X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jan 2014 19:00:48 -0000 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.