From owner-cvs-all Sat Dec 22 19:22:42 2001 Delivered-To: cvs-all@freebsd.org Received: from apollo.backplane.com (apollo.backplane.com [216.240.41.2]) by hub.freebsd.org (Postfix) with ESMTP id 6CB8437B405; Sat, 22 Dec 2001 19:22:36 -0800 (PST) Received: (from dillon@localhost) by apollo.backplane.com (8.11.6/8.9.1) id fBN3MXd99405; Sat, 22 Dec 2001 19:22:33 -0800 (PST) (envelope-from dillon) Date: Sat, 22 Dec 2001 19:22:33 -0800 (PST) From: Matthew Dillon Message-Id: <200112230322.fBN3MXd99405@apollo.backplane.com> To: Bruce Evans Cc: Mike Silbersack , , Subject: Re: cvs commit: src/sys/dev/sio sio.c References: <20011223135146.H10320-100000@gamplex.bde.org> Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG :More frequent interrupts mainly hide interrupt latency problems. If :something breaks interrupt latency, then there is nothing to prevent :it from being broken by twice as much. : :Note that there is a problem if you have more than about 8 active sio :devices or similar devices on other drivers that use fast interrupt :handlers (currently, the cy serial driver is the only other driver :with non-broken fast interrupt handlers). The devices will get in :each others way. : :The driver used to have dynamic fifo trigger reduction, mainly to :support many active sio devices, but this was found harmful and backed :out: And if you have 16 ports? 32 ports? The vast majority of people using FreeBSD either have 1-4 ports, or they have smart multi-serial cards that provide aggregation of some sort. Anybody trying to take 8 discrete 16550 serial interrupt sources is just asking for it no matter *what* the FIFO levels are set to. Set the FIFO levels too high and you have random (though possibly less freqyent) silo overflows. Set the FIFO levels too low and you have an interrupt storm. You can't win with discrete interrupt sources no matter how you flip the coin. I don't think FIFO trigger levels set for multi-discrete serial interrupts on machines made in 1994 have any bearing on the problem we face today. In fact, if you wanted to support that type of discrete scheme it would be far better to poll once every 500 uS or so and not set FIFO triggers at all. That would probably be sufficient to avoid all silo errors on any machine made all the way back to 1990 or so. Do a search on Google for 'silo overflow freebsd'. I don't know about you, but it seems to me that we have a far larger problem on our hands leaving the FIFO level set so close to the wire then otherwise. We should not go breaking people with 1-4 ports, our most common case, to support ancient hardware running 8-port boards with discrete interrupt sources. -Matt To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message