From owner-freebsd-scsi@FreeBSD.ORG Fri Jan 20 20:45:01 2012 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 18BC8106564A; Fri, 20 Jan 2012 20:45:01 +0000 (UTC) (envelope-from ken@kdm.org) Received: from nargothrond.kdm.org (nargothrond.kdm.org [70.56.43.81]) by mx1.freebsd.org (Postfix) with ESMTP id B3A008FC0A; Fri, 20 Jan 2012 20:45:00 +0000 (UTC) Received: from nargothrond.kdm.org (localhost [127.0.0.1]) by nargothrond.kdm.org (8.14.2/8.14.2) with ESMTP id q0KKixXV054048; Fri, 20 Jan 2012 13:44:59 -0700 (MST) (envelope-from ken@nargothrond.kdm.org) Received: (from ken@localhost) by nargothrond.kdm.org (8.14.2/8.14.2/Submit) id q0KKixV5054047; Fri, 20 Jan 2012 13:44:59 -0700 (MST) (envelope-from ken) Date: Fri, 20 Jan 2012 13:44:59 -0700 From: "Kenneth D. Merry" To: freebsd-scsi@freebsd.org, freebsd-current@freebsd.org Message-ID: <20120120204459.GA51162@nargothrond.kdm.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2i Cc: Subject: LSI supported mps(4) driver available X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2012 20:45:01 -0000 The LSI-supported version of the mps(4) driver that supports their 6Gb SAS HBAs as well as WarpDrive controllers, is available here: http://people.freebsd.org/~ken/lsi/mps_lsi.20120120.1.txt I plan to check it in to head next week, and then MFC it into stable/9 a week after that most likely. Please test it out and let me know if you run into any problems. In addition to supporting WarpDrive, the driver also supports Integrated RAID. Thanks to LSI for doing the work on this driver! I have added a number of other infrastructure changes that are necessary for the driver, and here is a brief summary: - A new Advanced Information buffer is now added to the EDT for drives that support READ CAPACITY (16). The da(4) driver updates this buffer when it grabs new read capacity data from a drive. - The mps(4) driver will look for Advanced Information state change async events, and updates its table of drives with protection information turned on accordingly. - The size of struct scsi_read_capacity_data_long has been bumped up to the amount specified in the latest SBC-3 draft. The hope is to avoid some future structure size bumps with that change. The API for scsi_read_capacity_16() has been changed to add a length argument. Hopefully this will future-proof it somewhat. - __FreeBSD_version bumped for the addition of the Advanced Information buffer with the read capacity information. The mps(4) driver has a kludgy way of getting the information on versions of FreeBSD without this change. I believe that the CAM API changes are mild enough and beneficial enough for a merge into stable/9, but they are intertwined with the unmap changes in the da(4) driver, so those changes will have to go back to stable/9 as well in order to MFC the full set of changes. Otherwise it'll just be the driver that gets merged into stable/9, and it'll use the kludgy method of getting the read capacity data for each drive. A couple of notes about issues with this driver: - Unlike the current mps(4) driver, it probes sequentially. If you have a lot of drives in your system, it will take a while to probe them all. - You may see warning messages like this: _mapping_add_new_device: failed to add the device with handle 0x0019 to persiste nt table because there is no free space available _mapping_add_new_device: failed to add the device with handle 0x001a to persiste nt table because there is no free space available - The driver is not endian safe. (It assumes a little endian machine.) This is not new, the driver in the tree has the same issue. The LSI folks know about these issues. The driver has passed their testing process. Many thanks to LSI for going through the effort to support FreeBSD. Ken -- Kenneth Merry ken@FreeBSD.ORG