polling for sio?
M. Warner Losh
imp at bsdimp.com
Thu Apr 8 11:34:06 PDT 2004
In message: <20040408024455.GC20138 at dhcp01.pn.xcllnt.net>
Marcel Moolenaar <marcel at xcllnt.net> writes:
: On Wed, Apr 07, 2004 at 03:36:02PM -0700, othermark wrote:
: > > , or fix
: > > sio so that COM_MULTIPORT (for shared interrupts) doesn't poll all
: > > sio devices, and instead it keeps track of which devices need to be
: > > polled for each interrupt (and possible use the AST/4 register to
: > > decide which ports to query)....
: > >
: > > uart already has most of this logic, but I haven't written an isa
: > > attachment for it to make use of the interrupt routing logic..
: > I have a multi-port PCI card under puc and sio that has 4 19200
: > connections to it now, and when data is streaming across all of
: > them at once, I get several silo overflows. Would it be better
: > to run this under puc + uart?
: Not really. The problem is that puc(4) iterates over all ports in
: the same way whether you use uart(4) or sio(4). So, puc(4) is
: the problem more that sio(4) or uart(4). However, uart(4) has the
: beginnings of an interface that puc(4) could use to figure out
: which UART needs attention without actually calling the interrupt
: routine for each of them.
Yes, but at 19200 baud, his problems likely aren't related to the
iteration. They are likely related to the fact that he said his
interrupt is shared and therefore not fast. We have horrible
interrupt latency in current when you want to get to the FIFOs of
UARTs quickly :-(.
I've had an 8 port puc + sio stream data at 115200 w/o losing data or
getting overflows in a test setup, but that was on -stable (4.5) with
a dedicated interrupt for the puc board.
More information about the freebsd-hackers