From owner-freebsd-scsi@FreeBSD.ORG Fri Jan 3 21:18:29 2014 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 716E080C; Fri, 3 Jan 2014 21:18:29 +0000 (UTC) Received: from mtv-iport-4.cisco.com (mtv-iport-4.cisco.com [173.36.130.15]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3F8A6137A; Fri, 3 Jan 2014 21:18:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=7501; q=dns/txt; s=iport; t=1388783909; x=1389993509; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=jgamb5np21tecUMSgcsJXFQjaeCeTd9IREvC+CAMpZg=; b=F8BrixePL/RzcC562YaEZBk1TLzh79uhN4EOEtDACLvQ/MpINMgOWHDZ uT+q7gl5JTQ5mN7VHOR/d1Lix01VT7JXmQYd9/j+4GZYcyYMbbyTFGtl9 3sdO+xChqNUZGhGT715ylkH3d6k6dTBkN4YGoPsZ0AZe9MDMTkxvVEzDW 0=; X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgEFAGEox1KrRDoH/2dsb2JhbABYgws4uV+BDBZ0giYBAQQOLCsUEAshJQ8FSRyHeg7DEheONw5JB4MkgRMEiUOENoodAZIUg06BSA X-IronPort-AV: E=Sophos;i="4.95,599,1384300800"; d="scan'208";a="102001567" Received: from mtv-core-2.cisco.com ([171.68.58.7]) by mtv-iport-4.cisco.com with ESMTP; 03 Jan 2014 21:17:20 +0000 Received: from dambriskodt.cisco.com (dambriskodt.cisco.com [171.71.230.115]) by mtv-core-2.cisco.com (8.14.5/8.14.5) with ESMTP id s03LHKGB032762 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 3 Jan 2014 21:17:20 GMT Received: from dambriskodt.cisco.com (localhost [127.0.0.1]) by dambriskodt.cisco.com (8.14.7/8.14.3) with ESMTP id s03LEnQI070042; Fri, 3 Jan 2014 13:14:49 -0800 (PST) (envelope-from ambrisko@dambriskodt.cisco.com) Received: (from ambrisko@localhost) by dambriskodt.cisco.com (8.14.7/8.14.3/Submit) id s03LEnDj070041; Fri, 3 Jan 2014 13:14:49 -0800 (PST) (envelope-from ambrisko) Date: Fri, 3 Jan 2014 13:14:49 -0800 From: Doug Ambrisko To: "Desai, Kashyap" Subject: Re: LSI - MR-Fusion controller driver patch and man page Message-ID: <20140103211449.GA69721@cisco.com> References: <08ba2a262fba45f687cdd3225f325110@BN1PR07MB247.namprd07.prod.outlook.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <08ba2a262fba45f687cdd3225f325110@BN1PR07MB247.namprd07.prod.outlook.com> User-Agent: Mutt/1.4.2.3i X-Mailman-Approved-At: Sat, 04 Jan 2014 02:11:54 +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, 03 Jan 2014 21:18:29 -0000 On Fri, Dec 06, 2013 at 02:37:21PM +0000, Desai, Kashyap wrote: | Hi, | | Please consider attached patch for FreeBSD upstream check-in. | | Please find attached patch for driver for LSI's MegaRaid Controllers. This driver supports Thunderbolt onwards Device IDs of MR controllers. | Currently it supports 0x005B and 0x005D Device IDs. | | NOTE : This driver will not eliminate or by pass any functionality of driver which already support above to Device IDs to keep existing user experience unchanged. | | Driver will be always given priority over driver and only if customer/user wants to use/migrate from to , it will hook up into kernel via device.hint rules. (Attached is mrsas man page for more info.) | | LSI will continue to update driver in future in timely bases. We have another set of patch in pipeline to be submitted for , but need first go ahead for attached patch and later we will continue to keep up-to-date (In sync with LSI released driver which is available at lsi's external site) | | Apply patch with "patch -p0 < patchname.patch" from head directory. | | -- Few notes for user-- | LSI recommends using fusion_force bit In hint settings at start of the day, if they want to use . ( will be a default choice for MR-Fusion HBA), if will be changed only with fusion_force hint settings. (See mrsas man page) Changing any default behavior is well tested for most of the condition. | Switching from to for MR-Fusion options is designed to allow user as one time choice, though multiple time switch from to is possible, it is not recommended. So, user needs to decide from start of the day, which driver they want to use for MR-Fusion card. | | -- Implementation details -- | To support this feature, we have modify code to change default return type from probe. Currently driver return "BUS_PROBE_DEFAULT". driver has been be changed to return "BUS_PROBE_LOW_PRIORITY" if fusion_force hint from device.hints is set. | Please notice, above mentioned implementation in driver is only applicable in case of MR-Fusion controller detection. For any other controllers, supported by driver, the behavior of probe return will remain same as before. | | | -- High level feature list of -- | 1. Supports Fast Path feature of LSI controllers. | 2. Supports 4K sector Drives. | 3. CAM layer based interface. All VDs will be attached to CAM layer (Expected storage will be visible in "camcontroll") | 4. Complete support of Online Controller Reset. (OCR) | 5. OCR on Fimrware fault and IO timeout case. | 6. Work well with management application which is generic application provided by LSI for all other Operating system. | 7. Supporst DIF enabled VDs (Same support as provided in Linux and other OSes in FreeBSD) | 8. Fast Path Load balance support. | | - In summary, this driver is in part with Linux based MR drivers and all other features will be available to as planned activity from LSI | | This code is well tested by LSI Q/A team on 32 bit and 64 bit FreeBSD Released OSes. Sorry it is has taken so long to start playing with this. I found one critical issue with read performance. I added a printf to the driver to make sure the fast path is not being used and it claims it isn't. Doing either a dd or using the dt(http://www.scsifaq.org/RMiller_Tools/dt.html) I see good write performance with both mrsas and mfi but on read mrsas is backing up and appears to be single threaded. With mrsas doing a dd of=/dev/zero if=/dev/da0 bs=1m I'm seeing 45685 kBps and with mfi seeing 597072 kBps via gstat. Using dt via: dt of=/dev/da0 bs=64k limit=1g aios=32 I see writes at 538977 Kbytes/sec and reads at bouncing around between 20000 - 8000 Kbytes/sec, mfi reports 244744 Kbytes/sec. The interesting piece is seeing the L(q) via gstat being around 30 when doing mrsas reads, writes are 1 or less. With mfi both read and writes are 1 or less. This is with a GENERIC kernel on -current/amd64. I updated my source to 260231 and see the same. Witness, etc. are all on. I don't recall seeing this when I tested mrsas a long time ago. The card I'm using is: LSI MegaRAID SAS 9266-8i Firmware BIOS 5.38.00_4.12.05.00_0x05180000 Firmware BCON 6.1-49-e_49-Rel Firmware PCLI 05.05-03:#%00011 Firmware APP 3.220.75-2196 Firmware NVDT 2.1209.03-0117 Firmware BTBL 2.05.00.00-0010 Firmware BOOT 07.26.13.219 Some other issues I ran into when I kldunload mrsas I got a: sysctl_unregister_oid: failed to unregister sysctl and then when I kldload mrsas I got a panic: mrsas0: port 0x7000-0x70ff mem 0xdf060000-0xdf0 63fff,0xdf000000-0xdf03ffff irq 32 at device 0.0 on pci4 ######################################################### Driver has detected MR-Fusion Controller.If you wish to switch to driver for MR-Fusion,read manual of mrsas. Once you chose to use Driverf or MR-Fusion Controllers, you should not switch to .LSI recommend to use driver for MR-Fusion.Use if you are not sure about choice.Quick he lp to use for MR-Fustion Card: Remove hint.mrsas.0.fusion_force=1 from /boot/device.hints. ######################################################### mrsas0: Waiting for FW to come to ready state db> tr Tracing pid 534 tid 100245 td 0xfffff80015035490 malloc() at malloc+0x1c8/frame 0xfffffe03fbab3200 cpuctl_devs() at cpuctl_devs+0x61df/frame 0xfffffe03fbab3290 cpuctl_devs() at cpuctl_devs+0x6189/frame 0xfffffe03fbab32f0 cpuctl_devs() at cpuctl_devs+0x990a/frame 0xfffffe03fbab34b0 device_attach() at device_attach+0x3a2/frame 0xfffffe03fbab3510 pci_driver_added() at pci_driver_added+0xfa/frame 0xfffffe03fbab3550 devclass_driver_added() at devclass_driver_added+0x7d/frame 0xfffffe03fbab3590 devclass_add_driver() at devclass_add_driver+0x127/frame 0xfffffe03fbab35d0 module_register_init() at module_register_init+0xb0/frame 0xfffffe03fbab3600 linker_load_module() at linker_load_module+0xbda/frame 0xfffffe03fbab3930 kern_kldload() at kern_kldload+0xad/frame 0xfffffe03fbab3970 sys_kldload() at sys_kldload+0x5b/frame 0xfffffe03fbab39a0 amd64_syscall() at amd64_syscall+0x265/frame 0xfffffe03fbab3ab0 Xfast_syscall() at Xfast_syscall+0xfb/frame 0xfffffe03fbab3ab0 I played with storcli/storcli64 and MegaCli/MegaCli64 from LSI's web site. I noticed that the 32 bit versions are built for FreeBSD 8.1 and the 64 bit FreeBSD 7.4. It might not be a critical problem but some companies might still be on earlier releases. I need to look at adding the ioctl translation support for mfiutil and Linux to mrsas. This means we should have a 32 bit to 64 bit ioctl translator in the driver since our Linux emulation is 32 bit. It's also handy to run 32 bit tools on the 64 bit kernel. It would be good to add alias support for /dev/mfid* such as was done via ATA CAM sys/cam/ata/ata_da.c. Search for ada_legacy_aliases and legacy_id. The helped the migration from /dev/ad* to /dev/ada*. I'm not sure hint.mrsas..fusion_force="1" is a good toggle to enable/disable mrsas. I can see why you did that but it might be more obvious to make hint.mfi..disabled="1" to work since that follows more of what people are used to. Thanks, Doug A.