From owner-freebsd-current Thu Jun 4 11:48:00 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id LAA06222 for freebsd-current-outgoing; Thu, 4 Jun 1998 11:48:00 -0700 (PDT) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from dingo.cdrom.com (dingo.cdrom.com [204.216.28.145]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id LAA06167 for ; Thu, 4 Jun 1998 11:47:52 -0700 (PDT) (envelope-from mike@dingo.cdrom.com) Received: from dingo.cdrom.com (localhost [127.0.0.1]) by dingo.cdrom.com (8.8.8/8.8.5) with ESMTP id KAA00849; Thu, 4 Jun 1998 10:41:23 -0700 (PDT) Message-Id: <199806041741.KAA00849@dingo.cdrom.com> X-Mailer: exmh version 2.0zeta 7/24/97 To: shimon@simon-shapiro.org cc: Mike Smith , Michael Hancock , "freebsd-current@freebsd.org" , tcobb , Karl Pielorz , Bob Willcox , Greg Lehey Subject: Re: DPT driver fails and panics with Degraded Array In-reply-to: Your message of "Thu, 04 Jun 1998 12:19:44 EDT." Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Thu, 04 Jun 1998 10:41:23 -0700 From: Mike Smith Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG > > On 03-Jun-98 Mike Smith wrote: > > .... > > >> This would normally cause a 'biodone: buffer already done' message, > >> which is a warning, not a panic. The only way I could think of this > >> happening on a valid buffer (apart from the obvious of calling it > >> while it wasn't busy) would be if something messed around with other > >> buffer flags. > > > > It would be an issue if the buf struct had been recycled, but hadn't > > yet been marked busy, or if the buf pointer was invalid (the business > > check is the very first check in biodone()). > > Is this code surrounded by splhigh() ? If not, it is entirely possible for > that to happen. Due to the caching/quieing nature of the DPT, especially > the PM3334, and the multi-threaded nature of the DPT driver, for several > interrupts to be issued less than 1us apart. This means that there will be > several hardware interrupts and several soft interrupts generated in a very > short period of time. The possibilities I mentioned above are only relevant if the DPT is calling biodone() more than once in error. If you're confident that this is not happening, then the above is not relevant. -- \\ Sometimes you're ahead, \\ Mike Smith \\ sometimes you're behind. \\ mike@smith.net.au \\ The race is long, and in the \\ msmith@freebsd.org \\ end it's only with yourself. \\ msmith@cdrom.com To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message