Re: modprobe 3c509 segfaults

From: Kimmo Sundqvist
Date: Sun Apr 18 2004 - 07:59:06 EST


On Saturday 17 April 2004 20:55, Andrew Morton wrote:

> Seems that we used to unconditionally link the device into the
> el3_root_devchain in el3_common_init(), but that was removed, and we now
> conditionally link it, denendent upon sone ifdefs which you presumably have
> not set.

> Does this fix it up?

Now I can use modprobe and then remove the module as many times as I want, but
some a bit odd behavior appeared. Some details are repeated from my original
message:

Two 3c509 cards, a BNC/AUI one, configured with 3com's setup utility
(3c5x9cfg.exe) to IRQ 9, port 0x210, and a RJ-45 one, configured to IRQ 5,
port 0x300. Both use non-pnp initalisation, and don't say anything if I do
pnpdump.

Under Debian (kernel 2.4.22), the cards were probed IRQ 12 and 5, but ifconfig
said IRQ 9 and 5 if I had told modprobe "irq=9,5", and both cards worked
perfectly.

Under Gentoo, kernel 2.6.6-rc1 and your patch applied (I couldn't figure out
how to correctly use patch, so I deleted the two lines in 3c509.c manually),
the BNC card is found at IRQ 12 and RJ-45 card at IRQ 5 according
to /var/log/messages. And this is the same with every single run of insmod.

1. modprobe (or insmod) with no irq given:
eth0 doesn't come up, Device or resource busy
eth1 comes up with IRQ 5, port 0x300, and appears working

2. modprobe (or insmod) with irq=9,5 given:
eth0 comes up with IRQ _5_, port 0x210, and for some odd reason, works
eth1: Device or resource busy

3. same as the above, (irq=9,5) but eth1 up first
eth1 comes up with IRQ 5, port 0x300, and appears working
eth0: Device or resource busy

4. modprobe (or insmod) with irq=5,9 given:
both come up and work as expected
eth0 is IRQ 9, eth1 is IRQ 5

It is documented that the order of detection is arbitrary. Both systems have
the card at IRQ 9 (IRQ 12 in logs) always found first, but Gentoo (kernel
2.6.6-rc1) needs irq=5,9 while Debian (vanilla kernel 2.4.22) needs irq=9,5.

Biggest thing left to understand is, why does the card work in try 2? I know
for sure that eth0 of try 2 is eth0 of try 3 (the BNC card), so we have
different cards working there.

There is a network only at the BNC connector of one card, so by "appears
working" I mean that the RJ-45 card comes up and generates interrupts, takes
an IP address and transmits pings, but - as is expected - doesn't get any
replies.

-Kimmo S.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/