From owner-freebsd-questions Wed Jul 28 15:26:53 1999 Delivered-To: freebsd-questions@freebsd.org Received: from sugar.pharlap.com (sugar.pharlap.com [192.107.36.1]) by hub.freebsd.org (Postfix) with ESMTP id 7C18F15169 for ; Wed, 28 Jul 1999 15:26:40 -0700 (PDT) (envelope-from clark@pharlap.com) Received: from clark ([192.107.36.171]) by sugar.pharlap.com (Post.Office MTA v3.5.2 release 221 ID# 0-56365U200L2S100V35) with SMTP id com; Wed, 28 Jul 1999 18:24:26 -0400 From: clark@pharlap.com (Clark Jarvis) Date: Wed, 28 Jul 1999 18:24:45 -0400 To: .(Andy V. Oleynik) , freebsd-questions@FreeBSD.ORG In-Reply-To: <379F686D.BEA781F2@prime.net.ua> Subject: Re: too many stray irq 7's; not logging any more. Solved X-Mailer: MR/2 Internet Cruiser Edition for OS/2 v1.60 b60 Message-ID: <19990728222426822.AAA228@sugar.pharlap.com@clark> Sender: owner-freebsd-questions@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG In <379F686D.BEA781F2@prime.net.ua>, on 07/28/99 at 11:30 PM, . (Andy V. Oleynik) said: >Yet another half of day and question is "yes, local port is dead as well >as remote".But I'm still interesting about stray irq 7 and >interrupt-level overflow. Though the latter is selfexplainig and one look >in the source confirms guess, first is not obviouse. Anyway link is up >now, errors in config file (0x0a01 flags to 0x0981) fixed. Thanks to all, >war is finished, all can go >back to home :) >" . (Andy V. Oleynik)" wrote: >> Jul 26 18:59:17 host1 /kernel: stray irq 7 >> ----------------------------------------------- >> Jul 26 18:59:17 host1 last message repeated 4 times >> Jul 26 18:59:17 host1 /kernel: too many stray irq 7's; not logging any >> more I have to make some assumptions here, because I've never seen this with FreeBSD, just with our embedded OS, and apologies to you if you already know this. Stray IRQ7s (and 15s) happen when the 8259 Interrupt controller and CPU get slightly out of phase with each other. I.e., somebody (probably your serial port card) signalled an interrupt to the 8259, which in turn signalled the CPU. By the time the CPU responds to the request from the 8259, whatever signal that occurred to cause the 8259 to ask for an interrupt is either gone or changed, so the 8259 doesn't know what to tell the CPU to do. However, the CPU _has_ to have something to do, we're in an unresolvable state until the CPU gets an interrupt to process. There is no signal from the 8259 to the CPU to tell the CPU "Nevermind, I was just kidding, I don't really want an interrupt to happen". So, the 8259 has to give the CPU something, so it gives a "fake" IRQ7. Fake, because if you read the Interrupts Pending register of the 8259, IRQ7 isn't signalled, but the handler for IRQ7 gets invoked. The handler checks the pending bit, sees that it isn't set, and notices the "spurious" IRQ7. Given that it is probably your serial port card that is the "problem", if you changed the card's IRQ to a "high" IRQ (between 9-15), you would probably be getting spurious IRQ15s instead. I don't know enough about FreeBSDs interrupt handling to know if you can either ignore or disable the warning. Some of this is PC-architecture specific - it's probably possible to wire up the 8259 interrupt controllers and CPU so that spurious IRQs aren't necesary. [insert copious criticisms of IBM/Intel PC architecture design decisions here.] -- Clark To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message