From owner-freebsd-hackers Thu Aug 19 12:52:10 1999 Delivered-To: freebsd-hackers@freebsd.org Received: from alpo.whistle.com (alpo.whistle.com [207.76.204.38]) by hub.freebsd.org (Postfix) with ESMTP id 28ACE151C6 for ; Thu, 19 Aug 1999 12:51:54 -0700 (PDT) (envelope-from julian@whistle.com) Received: from current1.whistle.com (current1.whistle.com [207.76.205.22]) by alpo.whistle.com (8.9.1a/8.9.1) with SMTP id MAA64007; Thu, 19 Aug 1999 12:48:53 -0700 (PDT) Date: Thu, 19 Aug 1999 12:50:11 -0700 (PDT) From: Julian Elischer To: Mike Smith Cc: Brian McGovern , hackers@FreeBSD.ORG Subject: Re: sio doesn't do HW flow correctly?!? In-Reply-To: <199908191930.MAA07521@dingo.cdrom.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Thu, 19 Aug 1999, Mike Smith wrote: > > A few weeks ago I was at a local embedded FreeBSD shop while they were > debugging a similar problem they experience with their product, which > turned out to be an extension of a known erratum in the Cyrix MediaGX's > PIC macrocell, whereby multiple simultaneous interrupts are not handled > correctly and thus the UART interrupts are lost completely. You may be > facing a similar problem, but without the right test equipment and > access to suitable documentation you may have considerable trouble in > determining this for certain. A Well here at the local embedded FreeBSD shop, we later went on to discover 2 differnt sources to teh problem, neither of which was what we thought it was when Mike was here.. Certainly, we were getting a lot of spurious interrupts on ANOTHER port (check `systat -vmstat 1` to see if this is happenning) and the system was spendign too much time looping looking at that port to react to the real interrupts ont the sio port in question.. the other was that the DISK controller (I hear you say "huh? how does DISK come into this?") was HOGGING the PCI bus for upto 4mSec at a time which was long enough for the sio to overflow. Remember that the ISA bus is usually reached VIA the PCI bus on modern systems. I have fixed the UDMA driver to run the Cyrix disk DMA engine in a slightly slower mode so that it doesn't hog the PCI bus quite as much and now we can actually get to the ISA bus while the dik is doing DMA. This just goes top show that sometimes it's really hard to figure out why you are missing interrupts.. It took a $50,000 logic analyser on the PCI bus (and the uart chip) to figure that one out so it may or may not bbe so simple... julian > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message