sio: lots of silo overflows on Asus K8V with Moxa Smartio C104H/PCI solved

Burkard Meyendriesch bm at malepartus.de
Sun May 2 10:52:27 PDT 2004


On Sat, 1 May 2004 21:41:27 +1000 (EST) Bruce Evans wrote:
> ...
> So there must be something holding Giant for too long, and if my other
> patch doesn't help then there must also be a thread with priority
> higher than PI_TTYLOW that runs for too long.  This doesn't seem to
> be much of a problem in my local configurations, so you can test fixes
> and workarounds for it better than me.  Try the following untested
> hack to get higher priority than most threads:
> 
> %%%
> Index: sio.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/dev/sio/sio.c,v
> retrieving revision 1.428
> diff -u -2 -r1.428 sio.c
> --- sio.c	30 Apr 2004 21:16:52 -0000	1.428
> +++ sio.c	1 May 2004 11:29:44 -0000
> @@ -1164,5 +1302,6 @@
>  		if (ret) {
>  			ret = BUS_SETUP_INTR(device_get_parent(dev), dev,
> -					     com->irqres, INTR_TYPE_TTY,
> +					     com->irqres,
> +					     INTR_TYPE_CLOCK | INTR_MPSAFE,
>  					     siointr, com, &com->cookie);
>  			if (ret == 0)
> %%%
> 
> This is a superset of the previous patch.
> 
I applied your patch to version 1.428 of sio.c of my actual source
tree. The compiler complains:

/usr/src/sys/dev/sio/sio.c: In function `sioattach':
/usr/src/sys/dev/sio/sio.c:1167: error: `INTR_TYPE_CLOCK' undeclared (first use in this function)
/usr/src/sys/dev/sio/sio.c:1167: error: (Each undeclared identifier is reported only once
/usr/src/sys/dev/sio/sio.c:1167: error: for each function it appears in.)
*** Error code 1

I grep'ed the complete source tree for INTR_TYPE_CLOCK but couldn't
find it. Did you mean INTR_TYPE_CLK out of /usr/src/sys/sys/bus.h?

I tried INTR_TYPE_CLK. The boot message is now:

May  2 16:09:34 Reineke kernel: puc0: <Moxa Technologies, Smartio C104H/PCI> port 0xa000-0xa00f,0xa400-0xa43f,0xa800-0xa87f irq 19 at device 14.0 on pci0
May  2 16:09:34 Reineke kernel: puc0: Reserved 0x40 bytes for rid 0x18 type 4 at 0xa400
May  2 16:09:34 Reineke kernel: sio4: <Moxa Technologies, Smartio C104H/PCI> on puc0
May  2 16:09:34 Reineke kernel: sio4: type 16550A
May  2 16:09:34 Reineke kernel: sio5: <Moxa Technologies, Smartio C104H/PCI> on puc0
May  2 16:09:34 Reineke kernel: sio5: type 16550A
May  2 16:09:34 Reineke kernel: sio6: <Moxa Technologies, Smartio C104H/PCI> on puc0
May  2 16:09:34 Reineke kernel: sio6: type 16550A
May  2 16:09:34 Reineke kernel: sio7: <Moxa Technologies, Smartio C104H/PCI> on puc0
May  2 16:09:34 Reineke kernel: sio7: type 16550A

I made a complete backup of my Palm Tungsten T3. systat -v showed
me a sustained interrupt rate of 1400 ints/s on puc while iostat 1
showed reasonable 11000 chars of input/s at 115200 bps. The Palm
backup took about 58 minutes and produced absolutely NO silo
overflow. The problem is obviously solved . . .

Thank you!

> > Btw, "device apic" doesn't exist; did you mean "device acpi"?
> 
> They both exist in -current.  "device apic" is newer.
> 
/usr/src/UPDATING explains "device apic" as a device for i386 kernels.
For amd64 it doesn't seem to work.

Burkard

--
Burkard Meyendriesch
Stevern 2
D-48301 Nottuln


More information about the freebsd-current mailing list