PING: Someone on the core team. (Modem Problem)

Rick C. Petty rick-freebsd at kiwi-computer.com
Fri Feb 9 20:30:09 UTC 2007


On Fri, Feb 09, 2007 at 10:27:07AM -0800, Daniel Rudy wrote:
> 
> The modem is PCI, and there is no facility in the BIOS to display what
> cards are in the system.  Furthermore, the irq mapping shows irq 3-15,
> irq 17, 18, and 19 do not show on the list.  Below is the full dmesg
> from the boot:

What list and what mapping?

Here are the relevant lines in your case:

> sis0: <SiS 900 10/100BaseTX> port 0xd000-0xd0ff mem 0xeb103000-0xeb103fff irq 19 at device 4.0 on pci0

> sio0: configured irq 19 not in bitmap of probed irqs 0
> sio0: port may not be enabled
> sio0: <Lucent kermit based PCI Modem> port 0xdc00-0xdcff,0xe000-0xe0ff,0xe400-0xe407 mem 0xeb107000-0xeb1070ff irq 19 at device 11.0 on pci0
> sio0: type 16550A

> >> I have no idea WHY it's saying IRQ 19 as IRQ 19 is used by sis0.
> > 
> > Interrupts on the PCI bus can be shared and quite often are.

Because PCI interrupts have to be mapped to high numbers so they don't
interfere with legacy (ISA, etc.) IRQs.  The PCI bus handles its own
interrupts, so I wouldn't expect to see irq 3, for example.  In fact each
PCI slot typically maps to a specific IRQ (via the INT mechanism).

> And FreeBSD doesn't support shared interrupts, right?  (At least that
> used to be the case, not sure about now).  If it does allow irq sharing,
> then why isn't it working?  And if it doesn't support irq sharing, then
> why is FreeBSD assigning 2 devices to the same irq to begin with?

<snip>

> Its kinda strange though if that was the case, the other cards wouldn't
> work then because they would all be sharing the same irq.  The 3 network
> interfaces are assigned 17, 18, and 19.  sis0 is on the mainboard, sis1
> and sis2 are add-in cards on the pci bus.

Not strange at all, FreeBSD does support shared IRQs.  However, the sio
device does NOT support shared IRQs.  There was a patch floating around
which enabled IRQ sharing for this device, in fact I used it on a number of
systems successfully.  I'm not sure why it never made it into the base
system.

Here's something to try, if you don't want to patch your kernel.  Find a
PCI slot that doesn't share an IRQ with anything else and throw the modem
into that slot.  If you have an Asus board, the user's manual lists the
PCI interrupts and sharing.  If not, use trial-and-error.  You could
probably make an educated guess by looking at which cards are being mapped
to which interrupts.  Pick a device which has a solitary (unshared) IRQ and
swap with the modem.

-- Rick C. Petty


More information about the freebsd-hackers mailing list