Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 Dec 2001 19:22:33 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        Mike Silbersack <silby@silby.com>, <cvs-committers@FreeBSD.ORG>, <cvs-all@FreeBSD.ORG>
Subject:   Re: cvs commit: src/sys/dev/sio sio.c
Message-ID:  <200112230322.fBN3MXd99405@apollo.backplane.com>
References:   <20011223135146.H10320-100000@gamplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
: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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200112230322.fBN3MXd99405>