Date: Wed, 01 Jul 1998 20:09:41 -0700 From: David Greenman <dg@root.com> To: "Larry S. Lile" <lile@stdio.com> Cc: Mike Smith <mike@smith.net.au>, hackers@FreeBSD.ORG Subject: Re: Problems with irq 9(2)? Message-ID: <199807020309.UAA19925@implode.root.com> In-Reply-To: Your message of "Wed, 01 Jul 1998 15:58:26 EDT." <Pine.SUN.3.91.980701155042.13549E-100000@heathers2.stdio.com>
next in thread | previous in thread | raw e-mail | index | archive | help
>> The short answer is that you can't "block" ISA interupts, so the >> problem you're seeing has to be related to how you're talking to the >> card. The only confirmation of interrupt delivery that the card will >> ever get has to come from your code. > >I thought that was the entire purpose behind splxxx(), It held off >the 8259's until the kernel could process the next interrupt. *confused* Sort of. It has little to do with the 8259, however. The purpose of spl* is to prevent reentrancy into interrupt handlers and to protect critical sections in other parts of the kernel. >Anyway, the card has a register (isrp) that has a bit that shows whether >or not the card can interrrupt the 8259 on its irq line. This works for >the first interrupt but as soon as I enter an spl loop that bit goes >high, saying he can't interrupt, and never drops even after exiting the >spl loop. Sounds to me like you aren't acking the interrupt in your ISR. >Maybe I am confused about how 8259's work, it has been a long time >since I played with that level of the machine, and then it was only for >college class under dos. You don't need to know how the 8259 works to write a device driver. -DG David Greenman Co-founder/Principal Architect, The FreeBSD Project To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199807020309.UAA19925>