From owner-freebsd-current Mon Nov 27 14:39:26 2000 Delivered-To: freebsd-current@freebsd.org Received: from mail.gmx.net (pop.gmx.net [194.221.183.20]) by hub.freebsd.org (Postfix) with SMTP id AEDD737B479 for ; Mon, 27 Nov 2000 14:39:23 -0800 (PST) Received: (qmail 3382 invoked by uid 0); 27 Nov 2000 22:39:20 -0000 Received: from 213?21?39?123.surf-callino.de (HELO gmx.net) (213.21.39.123) by mail.gmx.net (mail08) with SMTP; 27 Nov 2000 22:39:20 -0000 Message-ID: <3A22E298.9BA9B302@gmx.net> Date: Mon, 27 Nov 2000 23:39:20 +0100 From: Robert Drehmel Reply-To: robert@gizmo.quizbot.org X-Mailer: Mozilla 4.08 [en] (X11; I; FreeBSD 5.0-CURRENT i386) MIME-Version: 1.0 To: Andrew Gallatin Cc: freebsd-current@FreeBSD.ORG Subject: Re: missing interrupts (was Re: CURRENT is freezing again ...) References: <14869.58648.34403.679348@grasshopper.cs.duke.edu> <14882.50276.726465.490454@grasshopper.cs.duke.edu> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG In <14882.50276.726465.490454@grasshopper.cs.duke.edu>, Andrew Gallatin wrote: > 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? My notes say: Non-specific EOI : 0x20 Specific EOI : 0x60 | IRQn EOI + rotate priority : 0xa0 EOI + select lowest priority : 0xe0 | IRQn -- Robert S. F. Drehmel To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message