From owner-freebsd-hackers Sat May 4 9:31:16 2002 Delivered-To: freebsd-hackers@freebsd.org Received: from beppo.feral.com (beppo.feral.com [192.67.166.79]) by hub.freebsd.org (Postfix) with ESMTP id 0A2A737B417; Sat, 4 May 2002 09:30:57 -0700 (PDT) Received: from mailhost.feral.com (mjacob@mailhost.feral.com [192.67.166.1]) by beppo.feral.com (8.11.3/8.11.3) with ESMTP id g44GUug26324; Sat, 4 May 2002 09:30:56 -0700 (PDT) (envelope-from mjacob@feral.com) Date: Sat, 4 May 2002 09:30:56 -0700 (PDT) From: Matthew Jacob X-Sender: mjacob@beppo Reply-To: mjacob@feral.com To: Michael Smith Cc: hackers@freebsd.org Subject: Re: naive i386 && FreeBSD interrupt question In-Reply-To: <200205040626.g446Q9h00791@mass.dis.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Fri, 3 May 2002, Michael Smith wrote: > > > > This was -stable- but it's really a hacker's question. > > > > I really am *not* much of an i386 weenie and I'll have to admit that I don't > > fully understand the interrupt mask scheme and I ran into a troubling problem > > . > > > > I was running some very extensive tests on a dual processor (but not SMP > > configured) system- I was in the middle of calling busdma_load from the isp > > driver when I got interrupted and blew up fielding an isp interrupt. > > You call isp_intr out of isp_watchdog; any chance that the timeout could > have gone off and dumped you in there? The callstack didn't show isp_watchdog- it also calls splcam() > > Otherwise, no, you should not have had your interrupt handler reentered > while it was masked. You shouldn't have to call splsoftvm() when calling > the busdma code; it should take whatever locks it needs at the time. > > Knowing the contents of cpl vs. the CAM spl mask and the actual interrupt > in question would be useful, as would the stack backtrace from the > explosion (ie. when you say "got interrupted" was the backtrace through > the actual interrupt entry point?) > Yes- that's the problematic thingie. I haven't reproduced it yet and didn't save the stack, but basically it was in the middle of call to the budma code when isp_intr was executed. If I see it again, I'll stay in DDB and spend more time. This was at a client's lab and running maybe 5000+ interrupts/sec pumping stuff thru Fibre Channel. -matt To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message