2.6.23-rc4-mm1: e1000e napi lockup
Subsystems (2)
Hi,
I found a regression in 2.6.23-rc4-mm1 (since -rc3-mm1) in e1000e driver. napi_disable(&adapter->napi) in e1000_probe freezes the kernel on boot.
regards,
Signature · 2 lines
Jiri Slaby ([email protected]) Faculty of Informatics, Masaryk University
David Miller
maintainerFrom: Jiri Slaby <[email protected]>
Date: Fri, 07 Sep 2007 09:19:30 +0200
Quoted 2 lines
I found a regression in 2.6.23-rc4-mm1 (since -rc3-mm1) in e1000e driver.
napi_disable(&adapter->napi)ine1000_probefreezes the kernel on boot.
Yes, the semantics changed slightly in the net-2.6.24 tree the other week and someone needs to fix it up.
The netif_napi_add() implicitly does a napi_disable() call. Device open must explicitly napi_enable() and device close must explicitly napi_disable(), and if done elsewhere these calls must be strictly balanced.
Quoted 6 lines · David Miller
From: Jiri Slaby <[email protected]>
Date: Fri, 07 Sep 2007 09:19:30 +0200Quoted 2 lines
I found a regression in 2.6.23-rc4-mm1 (since -rc3-mm1) in e1000e driver.
napi_disable(&adapter->napi)ine1000_probefreezes the kernel on boot.
Quoted 7 lines
Yes, the semantics changed slightly in the net-2.6.24 tree the other week and someone needs to fix it up.
The
netif_napi_add()implicitly does anapi_disable()call. Device open must explicitlynapi_enable()and device close must explicitlynapi_disable(), and if done elsewhere these calls must be strictly balanced.
I'll fix it... it's my patch that adds the new napi code to it and I need to get it ready for the merge window anyway.
thanks for testing.
Auke
Quoted 11 lines · Auke
Quoted 10 lines · David Miller
From: Jiri Slaby <[email protected]>
Date: Fri, 07 Sep 2007 09:19:30 +0200Quoted 3 lines
I found a regression in 2.6.23-rc4-mm1 (since -rc3-mm1) in e1000e driver.
napi_disable(&adapter->napi)ine1000_probefreezes the kernel on boot.Yes, the semantics changed slightly in the net-2.6.24 tree the other week and someone needs to fix it up.
Quoted 7 lines
Quoted 4 lines
The
netif_napi_add()implicitly does anapi_disable()call. Device open must explicitlynapi_enable()and device close must explicitlynapi_disable(), and if done elsewhere these calls must be strictly balanced.I'll fix it... it's my patch that adds the new napi code to it and I need to get it ready for the merge window anyway.
well.... since its close to the merge window opening, we could see what happens if DaveM pulls branch 'upstream' ofgit://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
That should make this class of pre-merge-window annoyance go away.
Jeff
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
Quoted 15 lines · Jeff Garzik
Quoted 14 lines · Auke
Quoted 13 lines · David Miller
From: Jiri Slaby <[email protected]>
Date: Fri, 07 Sep 2007 09:19:30 +0200Quoted 3 lines
I found a regression in 2.6.23-rc4-mm1 (since -rc3-mm1) in e1000e driver.
napi_disable(&adapter->napi)ine1000_probefreezes the kernel on boot.Yes, the semantics changed slightly in the net-2.6.24 tree the other week and someone needs to fix it up.
The
netif_napi_add()implicitly does anapi_disable()call. Device open must explicitlynapi_enable()and device close must explicitlynapi_disable(), and if done elsewhere these calls must be strictly balanced.
Quoted 8 lines
Quoted 2 lines
I'll fix it... it's my patch that adds the new napi code to it and I need to get it ready for the merge window anyway.
well.... since its close to the merge window opening, we could see what happens if DaveM pulls branch 'upstream' of
git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.gitThat should make this class of pre-merge-window annoyance go away.
If I do that now I get a big merge conflict:
$ git-pull . net-2.6.24 100% (22583/22583) done Removed Documentation/networking/NAPI_HOWTO.txt Auto-merged drivers/net/8139cp.c Auto-merged drivers/net/8139too.c CONFLICT (content): Merge conflict in drivers/net/8139too.c Auto-merged drivers/net/Kconfig Auto-merged drivers/net/Makefile Auto-merged drivers/net/cxgb3/cxgb3_main.c Auto-merged drivers/net/cxgb3/sge.c Auto-merged drivers/net/fs_enet/fs_enet-main.c Auto-merged drivers/net/gianfar.h Auto-merged drivers/net/ibmveth.c CONFLICT (content): Merge conflict in drivers/net/ibmveth.c Auto-merged drivers/net/ibmveth.h Auto-merged drivers/net/myri10ge/myri10ge.c Auto-merged drivers/net/netxen/netxen_nic_main.c Auto-merged drivers/net/pasemi_mac.c CONFLICT (content): Merge conflict in drivers/net/pasemi_mac.c Auto-merged drivers/net/pasemi_mac.h Auto-merged drivers/net/pcnet32.c Auto-merged drivers/net/ps3_gelic_net.c Auto-merged drivers/net/qla3xxx.c Auto-merged drivers/net/s2io.c CONFLICT (content): Merge conflict in drivers/net/s2io.c Auto-merged drivers/net/s2io.h Auto-merged drivers/net/sb1250-mac.c Auto-merged drivers/net/sky2.c Auto-merged drivers/net/sky2.h Auto-merged drivers/net/tsi108_eth.c Auto-merged drivers/net/wireless/rtl8187_dev.c Auto-merged drivers/net/xen-netfront.c Removed include/net/tcp_ecn.h Automatic merge failed; fix conflicts and then commit the result.
for e1000e the fixup is just a 1-line change from the previous -mm napi fixup patch, so I don't really care (it's peanuts), but people might want to start looking into the above conflicts ;)
Cheers,
Auke
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
Quoted 20 lines · Auke
Quoted 19 lines · Jeff Garzik
Quoted 17 lines · Auke
Quoted 7 lines · David Miller
From: Jiri Slaby <[email protected]>
Date: Fri, 07 Sep 2007 09:19:30 +0200Quoted 4 lines
I found a regression in 2.6.23-rc4-mm1 (since -rc3-mm1) in e1000e driver.
napi_disable(&adapter->napi)ine1000_probefreezes the kernel on boot.Quoted 7 lines
Yes, the semantics changed slightly in the net-2.6.24 tree the other week and someone needs to fix it up.
The
netif_napi_add()implicitly does anapi_disable()call. Device open must explicitlynapi_enable()and device close must explicitlynapi_disable(), and if done elsewhere these calls must be strictly balanced.I'll fix it... it's my patch that adds the new napi code to it and I need to get it ready for the merge window anyway.
Quoted 7 lines
Quoted 5 lines
well.... since its close to the merge window opening, we could see what happens if DaveM pulls branch 'upstream' of
git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.gitThat should make this class of pre-merge-window annoyance go away.
If I do that now I get a big merge conflict:
oh you are _guaranteed_ conflicts. most of that is NAPI-area code that got changed by both.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
Quoted 16 lines · Jeff Garzik
Quoted 15 lines · Auke
Quoted 14 lines · Jeff Garzik
Quoted 13 lines · Auke
Quoted 12 lines · David Miller
From: Jiri Slaby <[email protected]>
Date: Fri, 07 Sep 2007 09:19:30 +0200Quoted 2 lines
I found a regression in 2.6.23-rc4-mm1 (since -rc3-mm1) in e1000e driver.
napi_disable(&adapter->napi)ine1000_probefreezes the kernel on boot.Yes, the semantics changed slightly in the net-2.6.24 tree the other week and someone needs to fix it up.
The
netif_napi_add()implicitly does anapi_disable()call. Device open must explicitlynapi_enable()and device close must explicitlynapi_disable(), and if done elsewhere these calls must be strictly balanced.
Quoted 7 lines
Quoted 5 lines
Quoted 4 lines
Quoted 1 line
I'll fix it... it's my patch that adds the new napi code to it and I need to get it ready for the merge window anyway.
well.... since its close to the merge window opening, we could see what happens if DaveM pulls branch 'upstream' of
git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.gitThat should make this class of pre-merge-window annoyance go away.
If I do that now I get a big merge conflict:
oh you are _guaranteed_ conflicts. most of that is NAPI-area code that got changed by both.
actually that's the only thing it was, and fixing it up was trivial (took me about 3 minutes). it was 3x the napi code and once a struct indent change...
I'll have a new e1000e napi patch for andrew in a sec.
Auke
Quoted 4 lines · Jiri Slaby
Hi,
I found a regression in 2.6.23-rc4-mm1 (since -rc3-mm1) in e1000e driver.
napi_disable(&adapter->napi)ine1000_probefreezes the kernel on boot.
Ok, after these changes:
drivers/net/e1000e/netdev.c +1 -5
@@ -1693,10 +1693,7 @@ quit_polling:if (adapter->itr_setting &3 )e1000_set_itr (adapter);netif_rx_complete (poll_dev, napi); -if (test_bit (__E1000_DOWN, &adapter->state)) -atomic_dec (&adapter->irq_sem); -else -e1000_irq_enable (adapter); +e1000_irq_enable (adapter);return 0 ; }
@@ -4257,7 +4254,6 @@ static int __devinit e1000_probe(struct pci_dev *pdev,/* tell the stack to leave us alone until e1000_open() is called */ netif_carrier_off (netdev);netif_stop_queue (netdev); -napi_disable (&adapter->napi);strcpy (netdev->name,"eth%d" ); err =register_netdev (netdev);
I still have problems with the driver. When I do `ip link set eth0 up', ksoftirq runs with 100 % cpu time, so I think you endlessly re-schedule some timer (or the new napi layer?)
regards,
Signature · 2 lines
Jiri Slaby ([email protected]) Faculty of Informatics, Masaryk University
Quoted 33 lines · Jiri Slaby
Quoted 4 lines · Jiri Slaby
Hi,
I found a regression in 2.6.23-rc4-mm1 (since -rc3-mm1) in e1000e driver.
napi_disable(&adapter->napi)ine1000_probefreezes the kernel on boot.Ok, after these changes:
drivers/net/e1000e/netdev.c +1
-5@@ -1693,10 +1693,7 @@ quit_polling:if (adapter->itr_setting &3 )e1000_set_itr (adapter);netif_rx_complete (poll_dev, napi); -if (test_bit (__E1000_DOWN, &adapter->state)) -atomic_dec (&adapter->irq_sem); -else -e1000_irq_enable (adapter); +e1000_irq_enable (adapter);return 0 ; }@@ -4257,7 +4254,6 @@ static int __devinit e1000_probe(struct pci_dev *pdev,/* tell the stack to leave us alone until e1000_open() is called */ netif_carrier_off (netdev);netif_stop_queue (netdev); -napi_disable (&adapter->napi);strcpy (netdev->name,"eth%d" ); err =register_netdev (netdev);
Quoted 3 lines
I still have problems with the driver. When I do `ip link set eth0 up', ksoftirq runs with 100 % cpu time, so I think you endlessly re-schedule some timer (or the new napi layer?)
something changed in the logic and e1000e apparently does something wrong. I'll look into it on monday and resubmit a fixup patch (see robert olsson's mail as well discussing this issue)
Auke
Kok, Auke napsal(a):
Quoted 10 lines
Quoted 5 lines · Jiri Slaby
I still have problems with the driver. When I do `ip link set eth0 up', ksoftirq
runs with 100 % cpu time, so I think you endlessly re-schedule some timer (or
the new napi layer?)something changed in the logic and e1000e apparently does something wrong. I'll look into it on monday and resubmit a fixup patch (see robert olsson's mail as well discussing this issue)
he's posted me a patch, but no change on my side :(.
Anyway, I'm going away of the box on monday (today). will be back on fri to test patches :).
thanks,
Signature · 2 lines
http://www.fi.muni.cz/~xslaby/ Jiri Slaby faculty of informatics, masaryk university, brno, cz
Quoted 7 lines · Jiri Slaby
Kok, Auke napsal(a):
Quoted 6 lines
Quoted 5 lines · Jiri Slaby
I still have problems with the driver. When I do `ip link set eth0 up', ksoftirq
runs with 100 % cpu time, so I think you endlessly re-schedule some timer (or
the new napi layer?)
Quoted 5 lines
Quoted 3 lines
something changed in the logic and e1000e apparently does something wrong. I'll look into it on monday and resubmit a fixup patch (see robert olsson's mail as well discussing this issue)
he's posted me a patch, but no change on my side :(.
that's what I feared/thought as well when I saw his patch - e1000e and e1000 are slightly different so the exit condition will be as well.
Quoted 2 lines
Anyway, I'm going away of the box on monday (today). will be back on fri to test patches :).
I'll be on top of it. Since e1000e will be merged I need to get this workign properly before the merge window opens - no pressure :)
Auke