* de2104x tulip driver bug in 2.6.0-test9
@ 2003-11-21 9:51 Russell Coker
2003-11-21 15:32 ` Christian Kujau
2003-11-21 18:50 ` [PATCH/CFT] de2104x fixes Jeff Garzik
0 siblings, 2 replies; 6+ messages in thread
From: Russell Coker @ 2003-11-21 9:51 UTC (permalink / raw)
To: Linux Kernel
00:14.0 Ethernet controller: Digital Equipment Corporation DECchip 21041
[Tulip Pass 3] (rev 11)
Above is the lspci output for my PCI Ethernet card. Below is what happens
when I try to boot 2.6.0-test9. 2.4.x kernels have been working well on the
same card for a long time, so the hardware seems basically OK.
Configuring network interfaces... eth0: set link BNC
eth0: mode 0x7ffc0040, sia 0x10c4,0xffffef09,0xfffff7fd,0xffff0006
eth0: set mode 0x7ffc0000, set sia 0xef09,0xf7fd,0x6
eth0: timeout expired stopping DMA
------------[ cut here ]------------
kernel BUG at drivers/net/tulip/de2104x.c:926!
invalid operand: 0000 [#1]
CPU: 0
EIP: 0060:[<d08a7f4c>] Not tainted
EFLAGS: 00010006
EIP is at de_set_media+0x1c/0x140 [de2104x]
eax: fc200100 ebx: cf172200 ecx: c02c6770 edx: d089f000
esi: cf172200 edi: 00000000 ebp: cf021e50 esp: cf021e44
ds: 007b es: 007b ss: 0068
Process ethtool (pid: 478, threadinfo=cf020000 task=cfb0ccc0)
Stack: cf172200 000008c3 00000000 cf021e84 d08a8fb6 cf172200 cf172200
cf172200
fffff73c 00000000 00000000 00000000 ffffffea cf020000 00000001
00000000
cf021e9c d08a9104 cf172200 cf021eb0 cf021eb0 cf172000 cf021eec
c0224368
Call Trace:
[<d08a8fb6>] __de_set_settings+0x186/0x200 [de2104x]
[<d08a9104>] de_set_settings+0x24/0x50 [de2104x]
[<c0224368>] ethtool_set_settings+0x68/0x90
[<c019e4fa>] capable+0x1a/0x40
[<c022587b>] dev_ethtool+0xab/0x220
[<c0223766>] dev_ioctl+0x156/0x350
[<c02613b7>] inet_ioctl+0xb7/0xd0
[<c021ae31>] sock_ioctl+0xf1/0x280
[<c015eac2>] sys_ioctl+0x112/0x280
[<c0109169>] sysenter_past_esp+0x52/0x79
Code: 0f 0b 9e 03 04 99 8a d0 f6 86 a4 05 00 00 01 74 0a c7 42 58
<7>eth0: tx err, status 0x7fffb178
note: ethtool[478] exited with preempt_count 1
bad: scheduling while atomic!
Call Trace:
[<c0118189>] schedule+0x5b9/0x5c0
[<c013f1a3>] unmap_page_range+0x33/0x60
[<c013f3c3>] unmap_vmas+0x1f3/0x240
[<c01430a5>] exit_mmap+0x65/0x180
[<c0119aaa>] mmput+0x6a/0xc0
[<c011d938>] do_exit+0x128/0x410
[<c0109cc0>] do_invalid_op+0x0/0xa0
[<c0109a74>] die+0xc4/0xd0
[<c0109d54>] do_invalid_op+0x94/0xa0
[<d08a7f4c>] de_set_media+0x1c/0x140 [de2104x]
[<c01d5ae7>] poke_blanked_console+0x57/0x70
[<c01d4f4d>] vt_console_print+0x22d/0x310
[<c011bcd5>] __call_console_drivers+0x55/0x60
[<c011bdac>] call_console_drivers+0x5c/0x100
[<c010942d>] error_code+0x2d/0x40
[<d08a7f4c>] de_set_media+0x1c/0x140 [de2104x]
[<d08a8fb6>] __de_set_settings+0x186/0x200 [de2104x]
[<d08a9104>] de_set_settings+0x24/0x50 [de2104x]
[<c0224368>] ethtool_set_settings+0x68/0x90
[<c019e4fa>] capable+0x1a/0x40
[<c022587b>] dev_ethtool+0xab/0x220
[<c0223766>] dev_ioctl+0x156/0x350
[<c02613b7>] inet_ioctl+0xb7/0xd0
[<c021ae31>] sock_ioctl+0xf1/0x280
[<c015eac2>] sys_ioctl+0x112/0x280
[<c0109169>] sysenter_past_esp+0x52/0x79
--
http://www.coker.com.au/selinux/ My NSA Security Enhanced Linux packages
http://www.coker.com.au/bonnie++/ Bonnie++ hard drive benchmark
http://www.coker.com.au/postal/ Postal SMTP/POP benchmark
http://www.coker.com.au/~russell/ My home page
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: de2104x tulip driver bug in 2.6.0-test9 2003-11-21 9:51 de2104x tulip driver bug in 2.6.0-test9 Russell Coker @ 2003-11-21 15:32 ` Christian Kujau 2003-11-21 15:47 ` Russell Coker 2003-11-21 18:50 ` [PATCH/CFT] de2104x fixes Jeff Garzik 1 sibling, 1 reply; 6+ messages in thread From: Christian Kujau @ 2003-11-21 15:32 UTC (permalink / raw) To: russell; +Cc: Linux Kernel Russell Coker wrote: > 00:14.0 Ethernet controller: Digital Equipment Corporation DECchip 21041 > [Tulip Pass 3] (rev 11) > > Above is the lspci output for my PCI Ethernet card. Below is what happens > when I try to boot 2.6.0-test9. 2.4.x kernels have been working well on the > same card for a long time, so the hardware seems basically OK. > > Configuring network interfaces... eth0: set link BNC > eth0: mode 0x7ffc0040, sia 0x10c4,0xffffef09,0xfffff7fd,0xffff0006 > eth0: set mode 0x7ffc0000, set sia 0xef09,0xf7fd,0x6 > eth0: timeout expired stopping DMA could this be anyhow related to this: http://marc.theaimsgroup.com/?l=linux-kernel&m=106766135110165&w=2 there is a thread on linuxppc-dev too, as this is ppc specific: http://lists.linuxppc.org/linuxppc-dev/200311/msg00001.html it looks similar, but here on ppc32 i got no oops :-( Christian. -- BOFH excuse #27: radiosity depletion ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: de2104x tulip driver bug in 2.6.0-test9 2003-11-21 15:32 ` Christian Kujau @ 2003-11-21 15:47 ` Russell Coker 0 siblings, 0 replies; 6+ messages in thread From: Russell Coker @ 2003-11-21 15:47 UTC (permalink / raw) To: Christian Kujau; +Cc: Linux Kernel On Sat, 22 Nov 2003 02:32, Christian Kujau <evil@g-house.de> wrote: > Russell Coker wrote: > > 00:14.0 Ethernet controller: Digital Equipment Corporation DECchip 21041 > > [Tulip Pass 3] (rev 11) > > > > Above is the lspci output for my PCI Ethernet card. Below is what > > happens when I try to boot 2.6.0-test9. 2.4.x kernels have been working > > well on the same card for a long time, so the hardware seems basically > > OK. > > > > Configuring network interfaces... eth0: set link BNC > > eth0: mode 0x7ffc0040, sia 0x10c4,0xffffef09,0xfffff7fd,0xffff0006 > > eth0: set mode 0x7ffc0000, set sia 0xef09,0xf7fd,0x6 > > eth0: timeout expired stopping DMA > > could this be anyhow related to this: > > http://marc.theaimsgroup.com/?l=linux-kernel&m=106766135110165&w=2 > > there is a thread on linuxppc-dev too, as this is ppc specific: It is a bit different. If I don't load the module during the boot sequence then I can get it to the stage of being pingable. I think that timing is the issue, the boot scripts do everything quickly. If I modprobe it, then ifconfig it, then change the media type, then I have succeeded once in getting ping responses, but I couldn't ssh. -- http://www.coker.com.au/selinux/ My NSA Security Enhanced Linux packages http://www.coker.com.au/bonnie++/ Bonnie++ hard drive benchmark http://www.coker.com.au/postal/ Postal SMTP/POP benchmark http://www.coker.com.au/~russell/ My home page ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH/CFT] de2104x fixes 2003-11-21 9:51 de2104x tulip driver bug in 2.6.0-test9 Russell Coker 2003-11-21 15:32 ` Christian Kujau @ 2003-11-21 18:50 ` Jeff Garzik [not found] ` <200311221305.25718.russell@coker.com.au> 2003-11-25 12:57 ` Rask Ingemann Lambertsen 1 sibling, 2 replies; 6+ messages in thread From: Jeff Garzik @ 2003-11-21 18:50 UTC (permalink / raw) To: russell; +Cc: Linux Kernel, rask, akpm, netdev [-- Attachment #1: Type: text/plain, Size: 247 bytes --] So, can people give this a test? It includes a change that, I hope, addresses Russell's problem, as well as a patch from Rask. Jeff P.S. It would be great if people cc'd me on such bug reports ;-) Quicker to find and respond, these days. [-- Attachment #2: patch --] [-- Type: text/plain, Size: 1792 bytes --] ===== drivers/net/tulip/de2104x.c 1.25 vs edited ===== --- 1.25/drivers/net/tulip/de2104x.c Thu Sep 11 18:46:11 2003 +++ edited/drivers/net/tulip/de2104x.c Fri Nov 21 13:48:17 2003 @@ -28,8 +28,8 @@ */ #define DRV_NAME "de2104x" -#define DRV_VERSION "0.6" -#define DRV_RELDATE "Sep 1, 2003" +#define DRV_VERSION "0.9" +#define DRV_RELDATE "Nov 21, 2003" #include <linux/config.h> #include <linux/module.h> @@ -1380,18 +1380,18 @@ return rc; } - rc = de_init_hw(de); + rc = request_irq(dev->irq, de_interrupt, SA_SHIRQ, dev->name, dev); if (rc) { - printk(KERN_ERR "%s: h/w init failure, err=%d\n", - dev->name, rc); + printk(KERN_ERR "%s: IRQ %d request failure, err=%d\n", + dev->name, dev->irq, rc); goto err_out_free; } - rc = request_irq(dev->irq, de_interrupt, SA_SHIRQ, dev->name, dev); + rc = de_init_hw(de); if (rc) { - printk(KERN_ERR "%s: IRQ %d request failure, err=%d\n", - dev->name, dev->irq, rc); - goto err_out_hw; + printk(KERN_ERR "%s: h/w init failure, err=%d\n", + dev->name, rc); + goto err_out_free_irq; } netif_start_queue(dev); @@ -1399,10 +1399,8 @@ return 0; -err_out_hw: - spin_lock_irqsave(&de->lock, flags); - de_stop_hw(de); - spin_unlock_irqrestore(&de->lock, flags); +err_out_free_irq: + free_irq (dev->irq, dev); err_out_free: de_free_rings(de); @@ -1571,13 +1569,17 @@ (ecmd->advertising == de->media_advertise)) return 0; /* nothing to change */ - de_link_down(de); - de_stop_rxtx(de); + if (netif_running(dev)) { + de_link_down(de); + de_stop_rxtx(de); + } de->media_type = new_media; de->media_lock = media_lock; de->media_advertise = ecmd->advertising; - de_set_media(de); + + if (netif_running(dev)) + de_set_media(de); return 0; } ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <200311221305.25718.russell@coker.com.au>]
* [PATCH/CFT] de2104x fixes [not found] ` <200311221305.25718.russell@coker.com.au> @ 2003-11-22 12:07 ` Jeff Garzik 0 siblings, 0 replies; 6+ messages in thread From: Jeff Garzik @ 2003-11-22 12:07 UTC (permalink / raw) To: russell; +Cc: Linux Kernel [-- Attachment #1: Type: text/plain, Size: 907 bytes --] Russell Coker wrote: > On Sat, 22 Nov 2003 05:50, Jeff Garzik <jgarzik@pobox.com> wrote: > >>So, can people give this a test? It includes a change that, I hope, >>addresses Russell's problem, as well as a patch from Rask. > > > It does not compile for me, below are the warnings and errors. I am using > 2.6.0-test9 with no patches applied other than your patch. > > drivers/net/tulip/de2104x.c: In function `de_open': > drivers/net/tulip/de2104x.c:1369: warning: unused variable `flags' > drivers/net/tulip/de2104x.c: In function `__de_set_settings': > drivers/net/tulip/de2104x.c:1572: error: `dev' undeclared (first use in this > function) > drivers/net/tulip/de2104x.c:1572: error: (Each undeclared identifier is > reported only once > drivers/net/tulip/de2104x.c:1572: error: for each function it appears in.) Ok, here's a better patch. It's against 2.6.0-test9-BK-latest (currently bk25). [-- Attachment #2: patch --] [-- Type: text/plain, Size: 2437 bytes --] ===== drivers/net/tulip/de2104x.c 1.25 vs edited ===== --- 1.25/drivers/net/tulip/de2104x.c Thu Sep 11 18:46:11 2003 +++ edited/drivers/net/tulip/de2104x.c Sat Nov 22 07:05:40 2003 @@ -28,8 +28,8 @@ */ #define DRV_NAME "de2104x" -#define DRV_VERSION "0.6" -#define DRV_RELDATE "Sep 1, 2003" +#define DRV_VERSION "0.9" +#define DRV_RELDATE "Nov 21, 2003" #include <linux/config.h> #include <linux/module.h> @@ -1366,7 +1366,6 @@ { struct de_private *de = dev->priv; int rc; - unsigned long flags; if (netif_msg_ifup(de)) printk(KERN_DEBUG "%s: enabling interface\n", dev->name); @@ -1380,18 +1379,18 @@ return rc; } - rc = de_init_hw(de); + rc = request_irq(dev->irq, de_interrupt, SA_SHIRQ, dev->name, dev); if (rc) { - printk(KERN_ERR "%s: h/w init failure, err=%d\n", - dev->name, rc); + printk(KERN_ERR "%s: IRQ %d request failure, err=%d\n", + dev->name, dev->irq, rc); goto err_out_free; } - rc = request_irq(dev->irq, de_interrupt, SA_SHIRQ, dev->name, dev); + rc = de_init_hw(de); if (rc) { - printk(KERN_ERR "%s: IRQ %d request failure, err=%d\n", - dev->name, dev->irq, rc); - goto err_out_hw; + printk(KERN_ERR "%s: h/w init failure, err=%d\n", + dev->name, rc); + goto err_out_free_irq; } netif_start_queue(dev); @@ -1399,10 +1398,8 @@ return 0; -err_out_hw: - spin_lock_irqsave(&de->lock, flags); - de_stop_hw(de); - spin_unlock_irqrestore(&de->lock, flags); +err_out_free_irq: + free_irq (dev->irq, dev); err_out_free: de_free_rings(de); @@ -1514,7 +1511,8 @@ return 0; } -static int __de_set_settings(struct de_private *de, struct ethtool_cmd *ecmd) +static int __de_set_settings(struct net_device *dev, struct de_private *de, + struct ethtool_cmd *ecmd) { u32 new_media; unsigned int media_lock; @@ -1571,13 +1569,17 @@ (ecmd->advertising == de->media_advertise)) return 0; /* nothing to change */ - de_link_down(de); - de_stop_rxtx(de); + if (netif_running(dev)) { + de_link_down(de); + de_stop_rxtx(de); + } de->media_type = new_media; de->media_lock = media_lock; de->media_advertise = ecmd->advertising; - de_set_media(de); + + if (netif_running(dev)) + de_set_media(de); return 0; } @@ -1615,7 +1617,7 @@ int rc; spin_lock_irq(&de->lock); - rc = __de_set_settings(de, ecmd); + rc = __de_set_settings(dev, de, ecmd); spin_unlock_irq(&de->lock); return rc; ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH/CFT] de2104x fixes 2003-11-21 18:50 ` [PATCH/CFT] de2104x fixes Jeff Garzik [not found] ` <200311221305.25718.russell@coker.com.au> @ 2003-11-25 12:57 ` Rask Ingemann Lambertsen 1 sibling, 0 replies; 6+ messages in thread From: Rask Ingemann Lambertsen @ 2003-11-25 12:57 UTC (permalink / raw) To: Jeff Garzik; +Cc: Linux Kernel, akpm, netdev [-- Attachment #1: Type: text/plain, Size: 550 bytes --] On Fri, Nov 21, 2003 at 01:50:24PM -0500, Jeff Garzik wrote: > So, can people give this a test? It includes a change that, I hope, > addresses Russell's problem, as well as a patch from Rask. I have attached a patch which fixes two problems I found during compilation: 1) de_open() no longer uses the flags variable because the spinlocking is gone, but I forgot to remove the variable. 2) __de_set_settings() now references dev which is undefined. The patch should be applied on top of your patch, Jeff. -- Regards, Rask Ingemann Lambertsen [-- Attachment #2: de2104x-fix-for-jeff.patch --] [-- Type: text/plain, Size: 874 bytes --] --- linux-2.6.0-test8/drivers/net/tulip/de2104x.c-orig Tue Nov 25 13:20:25 2003 +++ linux-2.6.0-test8/drivers/net/tulip/de2104x.c Tue Nov 25 13:20:25 2003 @@ -1384,7 +1384,6 @@ static int de_open (struct net_device *d { struct de_private *de = dev->priv; int rc; - unsigned long flags; if (netif_msg_ifup(de)) printk(KERN_DEBUG "%s: enabling interface\n", dev->name); @@ -1601,7 +1600,7 @@ static int __de_set_settings(struct de_p (ecmd->advertising == de->media_advertise)) return 0; /* nothing to change */ - if (netif_running(dev)) { + if (netif_running(de->dev)) { de_link_down(de); de_stop_rxtx(de); } @@ -1610,7 +1609,7 @@ static int __de_set_settings(struct de_p de->media_lock = media_lock; de->media_advertise = ecmd->advertising; - if (netif_running(dev)) + if (netif_running(de->dev)) de_set_media(de); return 0; ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2003-11-25 12:57 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-11-21 9:51 de2104x tulip driver bug in 2.6.0-test9 Russell Coker
2003-11-21 15:32 ` Christian Kujau
2003-11-21 15:47 ` Russell Coker
2003-11-21 18:50 ` [PATCH/CFT] de2104x fixes Jeff Garzik
[not found] ` <200311221305.25718.russell@coker.com.au>
2003-11-22 12:07 ` Jeff Garzik
2003-11-25 12:57 ` Rask Ingemann Lambertsen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox