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