From owner-freebsd-current Mon Nov 27 12:42:35 2000 Delivered-To: freebsd-current@freebsd.org Received: from duke.cs.duke.edu (duke.cs.duke.edu [152.3.140.1]) by hub.freebsd.org (Postfix) with ESMTP id 164B737B4CF for ; Mon, 27 Nov 2000 12:42:20 -0800 (PST) Received: from grasshopper.cs.duke.edu (grasshopper.cs.duke.edu [152.3.145.30]) by duke.cs.duke.edu (8.9.3/8.9.3) with ESMTP id PAA16802; Mon, 27 Nov 2000 15:42:19 -0500 (EST) Received: (from gallatin@localhost) by grasshopper.cs.duke.edu (8.11.1/8.9.1) id eARKgJA79785; Mon, 27 Nov 2000 15:42:19 -0500 (EST) (envelope-from gallatin@cs.duke.edu) From: Andrew Gallatin MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Date: Mon, 27 Nov 2000 15:42:18 -0500 (EST) To: Bruce Evans Cc: current@FreeBSD.ORG Subject: Re: missing interrupts (was Re: CURRENT is freezing again ...) In-Reply-To: References: <14869.58648.34403.679348@grasshopper.cs.duke.edu> X-Mailer: VM 6.43 under 20.4 "Emerald" XEmacs Lucid Message-ID: <14882.50276.726465.490454@grasshopper.cs.duke.edu> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG 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