Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Jun 1998 04:16:01 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        current@FreeBSD.ORG, dacole@netcom.ca
Subject:   Re: sio problem
Message-ID:  <199806191816.EAA31192@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>example:  I type 'a', nothing shows.  I type 't', the a appears.  I
>type '<cr>', the t appears.  I type <cr> again, I get OK to appear.

sio interrupts are apparently not working.

>I'm curious about the 'irc maps' stuff (as seen in the following dmesg
>dumps)

They tell you whether sio interrupts worked normally at probe time.

>NONWORKING 486 (example 1):
>
>sio0: irq maps: 0x8009 0x8019 0x8009 0x8009
>sio0 at 0x3f8-0x3ff irq 4 flags 0x10 on isa
>sio0: type 16550A
>
>(ick.)

Irq 4 worked normally here.  The 0x10 bit was originally off (no irq 4
present), then it went on (irq 4 for ready-to-transmit-another-character),
then it went off (driver examined status) and stayed off.  The 0x8 bit
can't be relied on here, but if it is set it then the setting is probably
due to initialization of irq 3 for sio1 and/or sio3.

>NONWORKING 486 (after turning off all but sio0 from visual config):
>
>sio0: configured irq 4 not in bitmap of probed irqs 0
>sio0: irq maps: 0x1 0x1 0x1 0x1
>sio0 at 0x3f8-0x3ff irq 4 flags 0x20010 on isa
>sio0: type ST16650A
>
>(identical ick.)

Irq 4 didn't work at all here.  This would have caused a the probe to
fail in previous versions.  The 0x8 bit is apparently clear because you
disabled the other sio ports.  Sio ports with conflicting irqs should
not be disabled, because an active irq on an unconfigured port might
stop interrupts from working on a configured port.

>WORKING p100:
>
>sio0: irq maps: 0x1 0x11 0x1 0x1
>sio0 at 0x3f8-0x3ff irq 4 flags 0x10 on isa
>sio0: type 16550A
>
>(happy contented config, seemingly.  this entire email done over this 
>connection, through aliasing even.)

Irq 4 worked normally here.

>NONWORKING 486 (example 1):
>...
>sio0: irq maps: 0x8009 0x8019 0x8009 0x8009
>sio0 at 0x3f8-0x3ff irq 4 flags 0x10 on isa
>sio0: type 16550A
>sio1: irq maps: 0x8001 0x8009 0x8001 0x8001
>sio1 at 0x2f8-0x2ff irq 3 on isa
>sio1: type 16450
>sio2: configured irq 5 not in bitmap of probed irqs 0x10
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       This error would have caused the probe to fail before.
>sio2: irq maps: 0x8001 0x8011 0x8001 0x8001
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       Sio2's irq is apparently 4, so it conflicts at the hardware level.
>sio2 at 0x3e8-0x3ef irq 5 on isa
                     ^^^^^
       Unfortunately, the configuration lies about the irq, so the conflict
       is not detected by FreeBSD.
>sio2 not probed due to irq conflict with ed0 at 5
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       Fortunately, the irq conflicted with something else, and sio2 should
       not have been attached, so sio0 should have worked.  The probe
       message is silly - the previous messages were from sio2 being probed
       :-).  sio2 just fails a conflict check after being probed.
>sio3: configured irq 9 not in bitmap of probed irqs 0x8000
>sio3: irq maps: 0x1 0x8001 0x1 0x1
>sio3 at 0x2e8-0x2ef irq 9 on isa
>sio3: type 16550A
       Similarly for sio3, except there is no fortuitous conflict to
       prevent it being attached.

Apparently the conflicting irqs weren't conflicting enough to interfere
at probe time (not that that would make any difference), but conflicted
enough to cause problems later.

>NONWORKING 486 (after turning off all but sio0 from visual config):
>...
>sio0: configured irq 4 not in bitmap of probed irqs 0
>sio0: irq maps: 0x1 0x1 0x1 0x1
>sio0 at 0x3f8-0x3ff irq 4 flags 0x20010 on isa
>sio0: type ST16650A

Apparently the unitialialized conflicting irq for sio2 interferes even
at probe time.

>WORKING p100:
>...
>sio0: irq maps: 0x1 0x11 0x1 0x1
>sio0 at 0x3f8-0x3ff irq 4 flags 0x10 on isa
>sio0: type 16550A
>sio1: irq maps: 0x1 0x9 0x1 0x1
>sio1 at 0x2f8-0x2ff irq 3 on isa
>sio1: type 16550A
>sio2: disabled, not probed.
>sio3: disabled, not probed.

Do you have sio2-3?  They could only conflict if the BIOS didn't initialize
them properly, but it seems to be normal for BIOSes to not initialize them
at all after a warm boot.

Possible fix: configure the ports to what you have (all 4 there, with
conflicting irqs).

Bruce

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



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