Date: Mon, 27 Nov 2000 15:42:18 -0500 (EST) From: Andrew Gallatin <gallatin@cs.duke.edu> To: Bruce Evans <bde@zeta.org.au> Cc: current@FreeBSD.ORG Subject: Re: missing interrupts (was Re: CURRENT is freezing again ...) Message-ID: <14882.50276.726465.490454@grasshopper.cs.duke.edu> In-Reply-To: <Pine.BSF.4.21.0011190449250.502-100000@besplex.bde.org> References: <14869.58648.34403.679348@grasshopper.cs.duke.edu> <Pine.BSF.4.21.0011190449250.502-100000@besplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Bruce Evans writes: > Possible causes of the problem: > 1) isa_handle_intr() claims to send specific EOIs (0x30 | irq) but > actually sends non-specific ones (0x20 | garbage). Since interrupts > may be handled in non-LIFO order, this results in EOIs being sent > for the wrong interrupts. I think this just randomizes the > brokenness caused by delaying sending of EOIs. I can't see how it > would result in an EOI being lost -- the right number of EOIs will > have been sent after all handlers have returned. I think that sending non-specific EOIs is the problem. Sending specific EOIs seem to eliminate my nic timeouts and the need to manually feed an eoi to recover from a missing interrupt. My question is: how does one send a specific EOI correctly? I don't have decent documentation for this. Above, you seem to imply that 0x30 is a specific EOI. That does not seem to work for me (machine locks at boot). Linux uses 0xe0. According to some Tru64 docs I have, that means "Rotate Priority on specific EOI". According to that same documentation, 0x60 is a specific EOI. Both of these appear to work just fine. What should the alpha port use? Thanks, Drew To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?14882.50276.726465.490454>