From owner-cvs-src@FreeBSD.ORG Mon Mar 31 21:54:06 2008 Return-Path: Delivered-To: cvs-src@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E57141065672; Mon, 31 Mar 2008 21:54:06 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id D9B7D8FC1A; Mon, 31 Mar 2008 21:54:06 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m2VLs6uJ077017; Mon, 31 Mar 2008 21:54:06 GMT (envelope-from scottl@repoman.freebsd.org) Received: (from scottl@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m2VLs6Mi077016; Mon, 31 Mar 2008 21:54:06 GMT (envelope-from scottl) Message-Id: <200803312154.m2VLs6Mi077016@repoman.freebsd.org> From: Scott Long Date: Mon, 31 Mar 2008 21:54:05 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/dev/mpt mpt.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 31 Mar 2008 21:54:07 -0000 scottl 2008-03-31 21:54:05 UTC FreeBSD src repository Modified files: sys/dev/mpt mpt.c Log: The MPT driver treats the "core" module with the same importance and abstraction as the RAID and CAM modules, making it nearly impossible for enough initialization to be done in time for the RAID module to know whether to attach. On top of this, no reset was being done on the controller on attach, in violation of the spec. Additionally, the port enable step was being deferred to the end of the attach process, long after it should have been done to ensure reliable operation from the controller. Fix all of these with a few hacks to force the "attach" and "enable" steps of the core module early on, and ensure that a reset and port enable also happens early on. In the future, the driver needs to be refactored to eliminate the core module abstraction, clean up withe reset/enable steps, and defer event messages until all of the modules are available to recieve them. Revision Changes Path 1.47 +7 -4 src/sys/dev/mpt/mpt.c