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 [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to