2006-02-09 20:01:51

by Vincent ETIENNE

[permalink] [raw]
Subject: BUG at drivers/net/dl2k.c


I'm using 2.6.14-mm2 kernel (x86_64) on a Bi-Opteron 246 board with a PCI-64
card ( DLINK 550 GT ) plug on PCI-X interface. This card use the DL2000
driver which seems to cause this problem logged during boot time :

BUG: warning at drivers/net/dl2k.c:1481/mii_wait_link()

Call Trace: <IRQ> <ffffffff802a9c0a>{rio_interrupt+1709}
<ffffffff8013f3ef>{hrtimer_run_queues+197}
<ffffffff801465ac>{handle_IRQ_event+41}
<ffffffff80146678>{__do_IRQ+155} <ffffffff8010d69e>{do_IRQ+57}
<ffffffff80108ce5>{default_idle+0} <ffffffff8010afa8>{ret_from_intr+0}
<EOI>
<ffffffff803a6d03>{thread_return+87}
<ffffffff80108d10>{default_idle+43}
<ffffffff80108f47>{cpu_idle+98}
<ffffffff8052d114>{start_secondary+1271}
eth0: Link up
Auto 1000 Mbps, Full duplex
Enable Tx Flow Control
Enable Rx Flow Control

This is a new ethernet card so i don't have old bootlog to see if it happens
before. I just test it with 2.6.15-mm4 where i don't see this problem and
2.6.16.rc1-mm4 ( where i see it)

Except this message everything is running fine (even the ethernet card) so
it's probably not so important. But in case it could be useful....

If you would like more information or would like me to test something don't
hesitate.

Sorry for poor english, it's not my mother tongue language

Vincent ETIENNE






2006-02-11 19:58:52

by Francois Romieu

[permalink] [raw]
Subject: Re: BUG at drivers/net/dl2k.c

Vincent ETIENNE <[email protected]> :
>
> I'm using 2.6.14-mm2 kernel (x86_64) on a Bi-Opteron 246 board with a PCI-64
> card ( DLINK 550 GT ) plug on PCI-X interface. This card use the DL2000
> driver which seems to cause this problem logged during boot time :
>
> BUG: warning at drivers/net/dl2k.c:1481/mii_wait_link()
[...]

Try the bandaid below. If it is not enough, please open a PR at
http://bugzilla.kernel.org and add me to the Cc: list.

1ms delay in irq context always hurt. This stuff should be done in
an user-context.

Signed-off-by: Francois Romieu <[email protected]>

diff --git a/drivers/net/dl2k.c b/drivers/net/dl2k.c
index 430c628..2d47804 100644
--- a/drivers/net/dl2k.c
+++ b/drivers/net/dl2k.c
@@ -972,7 +972,7 @@ rio_error (struct net_device *dev, int i

/* Link change event */
if (int_status & LinkEvent) {
- if (mii_wait_link (dev, 10) == 0) {
+ if (mii_wait_link (dev, 1000) == 0) {
printk (KERN_INFO "%s: Link up\n", dev->name);
if (np->phy_media)
mii_get_media_pcs (dev);
@@ -1478,7 +1478,7 @@ mii_wait_link (struct net_device *dev, i
bmsr.image = mii_read (dev, phy_addr, MII_BMSR);
if (bmsr.bits.link_status)
return 0;
- mdelay (1);
+ udelay(10);
} while (--wait > 0);
return -1;
}

2006-02-12 10:53:10

by Vincent ETIENNE

[permalink] [raw]
Subject: Re: BUG at drivers/net/dl2k.c

Le Samedi 11 F?vrier 2006 20:57, Francois Romieu a ?crit?:
> Vincent ETIENNE <[email protected]> :
> > I'm using 2.6.14-mm2 kernel (x86_64) on a Bi-Opteron 246 board with a
> > PCI-64 card ( DLINK 550 GT ) plug on PCI-X interface. This card use the
> > DL2000 driver which seems to cause this problem logged during boot time
> > :
> >
> > BUG: warning at drivers/net/dl2k.c:1481/mii_wait_link()
>
> [...]
>
> Try the bandaid below. If it is not enough, please open a PR at
> http://bugzilla.kernel.org and add me to the Cc: list.
>
> 1ms delay in irq context always hurt. This stuff should be done in
> an user-context.
>
>

With your change, everything is ok now. No more BUG in dmesg :).

Many thanks for your help.

Vincent