From owner-freebsd-current@FreeBSD.ORG Wed Nov 9 21:06:32 2005 Return-Path: X-Original-To: current@freebsd.org Delivered-To: freebsd-current@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6ED4016A422 for ; Wed, 9 Nov 2005 21:06:32 +0000 (GMT) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [209.31.154.42]) by mx1.FreeBSD.org (Postfix) with ESMTP id EAFB543D45 for ; Wed, 9 Nov 2005 21:06:31 +0000 (GMT) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [209.31.154.41]) by cyrus.watson.org (Postfix) with ESMTP id EBB3946BDC; Wed, 9 Nov 2005 16:06:28 -0500 (EST) Date: Wed, 9 Nov 2005 21:06:28 +0000 (GMT) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Mark Linimon In-Reply-To: <20051109200458.GA26742@soaustin.net> Message-ID: <20051109210246.Y33260@fledge.watson.org> References: <20051108232855.2d1b7df5.lists@yazzy.org> <20051109093920.GA45506@samodelkin.net> <20051109110903.583bb72d.lists@yazzy.org> <20051109121720.M39365@fledge.watson.org> <20051109200458.GA26742@soaustin.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Marcin Jessa , current@freebsd.org, Max Khon Subject: Re: Generic Kernel API X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Nov 2005 21:06:32 -0000 On Wed, 9 Nov 2005, Mark Linimon wrote: > On Wed, Nov 09, 2005 at 12:20:14PM +0000, Robert Watson wrote: >> My hope is that in the next year or so, things will settle down >> significantly as we begin to flush the last of the non-MPSAFE drivers >> from the system, and reach a point where all device drivers can use >> consistent synchronization. > > If we are working towards that, I'd like to see someone contact the > suppliers of the binary-only drivers and tell them that's where we're > heading. IMHO we are starting to win back some 'mind-share' out there > in the real world with 6.0 and we should build on that momentum. I think the first step is to figure out what we're doing. In the past, we've tried to offer relative API/ABI stability across minor releases for two classes of device drivers: - Network interface device drivers - Storage device drivers However, we've not made a formal effort to decide what APIs are "safe" for device driver vendors to use, and only in the 5/6 time frame have we attempted to start hardening the APIs so as to make it possible to keep evolving the implementation in a branch without breaking device drivers. Some work needs to be done up front to survey what APIs and ABIs device drivers currently use, or use indirectly -- things like which data structures they depend on for stability (offset of fields in struct thread?), which symbols they depend on, what structures they embed (meaning we need to preserve size, not just layout) in the stack or their own data structures. In 6.x, with ifnet no longer being embedded in device driver data structures, we've improved quite a bit. In the developer summit session on the topic, I'm proposing we identify depenendencies of network device drivers, and then discuss where to harden, where to hide, and so on. We won't get it entirely right the first time, but I think a bit of investigation and a bit of cleanup will go a long way. Fortunately, we have a pretty good sampling of network device drivers in our tree already to look at. Robert N M Watson