From owner-freebsd-current Fri Jun 5 23:05:57 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id XAA28409 for freebsd-current-outgoing; Fri, 5 Jun 1998 23:05:57 -0700 (PDT) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from sendero.simon-shapiro.org (sendero.simon-shapiro.org.142.69.207.in-addr.arpa [207.69.142.25] (may be forged)) by hub.freebsd.org (8.8.8/8.8.8) with SMTP id XAA28404 for ; Fri, 5 Jun 1998 23:05:56 -0700 (PDT) (envelope-from shimon@sendero.simon-shapiro.org) Received: (qmail 23929 invoked by uid 1000); 5 Jun 1998 20:01:08 -0000 Message-ID: X-Mailer: XFMail 1.3 [p0] on FreeBSD X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit MIME-Version: 1.0 In-Reply-To: <199806041741.KAA00849@dingo.cdrom.com> Date: Fri, 05 Jun 1998 16:01:08 -0400 (EDT) Reply-To: shimon@simon-shapiro.org Organization: The Simon Shapiro Foundation From: Simon Shapiro To: Mike Smith Subject: Re: DPT driver fails and panics with Degraded Array Cc: Greg Lehey , Bob Willcox , Karl Pielorz , tcobb , "freebsd-current@freebsd.org" , Michael Hancock Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On 04-Jun-98 Mike Smith wrote: >> >> 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. I will not swear the driver does not call biodone twice (in error), but I could never prove that it does. Neither from logical/code analysis, nor from observation. Simon --- Sincerely Yours, Simon Shapiro Shimon@Simon-Shapiro.ORG 770.265.7340 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message