Created attachment 33982 [details] Reporter's patch On a busy network, the macb driver could get stuck in the interrupt handler, quickly triggering the watchdog, due to a confluence of factors: 1. macb_poll re-enables interrupts unconditionally, even when it will be called again because it exhausted its rx budget 2. macb_interrupt only disabled interrupts when it could scheduled macb_poll, but scheduling fails when macb_poll is already scheduled because it didn't call napi_complete 3. macb_interrupt loops until the interrupt status register is clear, which will never happen if it doesn't disable the RX interrupt Since macb_interrupt runs in interrupt context, this effectively locks up the machine, triggering the watchdog timer. (The RT kernel may have different behavior, but it's still a bug in the driver.) This issue was readily reproducible on a flooded network with the 2.6.27.48 kernel. The same problems appear to still be in 2.6.36-rc8, so I am submitting this bug report. The attached patches may need some cleanup but fix the problem for me. (The second one fixes a theoretical problem with the first.)
Please don't send patches via bugzilla - it causes lots of problems with our usual patch management and review processes. Please send this patch via email as per Documentation/SubmittingPatches. Suitable recipients may be found via scripts/get_maintainer.pl. Please also cc myself on the email. Thanks.
I have now done so.
Created attachment 34972 [details] E-mail with patch David Miller reported that the e-mail I sent was broken. I will try sending it again but in case the Outlook hint I found doesn't work (since even the first one looks fine in my Sent folder) I am attaching the contents here.
Bugs 20492, 20502, 20512, 20522, 20532, 20542, 20552, 20562, 20572, and 20582 are all (I believe) duplicates of this one, but I don't see how to mark them that way.
*** Bug 20492 has been marked as a duplicate of this bug. ***
*** Bug 20502 has been marked as a duplicate of this bug. ***
*** Bug 20512 has been marked as a duplicate of this bug. ***
*** Bug 20522 has been marked as a duplicate of this bug. ***
*** Bug 20532 has been marked as a duplicate of this bug. ***
*** Bug 20542 has been marked as a duplicate of this bug. ***
*** Bug 20552 has been marked as a duplicate of this bug. ***
*** Bug 20562 has been marked as a duplicate of this bug. ***
*** Bug 20572 has been marked as a duplicate of this bug. ***
*** Bug 20582 has been marked as a duplicate of this bug. ***
(In reply to comment #4) > Bugs 20492, 20502, 20512, 20522, 20532, 20542, 20552, 20562, 20572, and 20582 > are all (I believe) duplicates of this one, but I don't see how to mark them > that way. I have done it. (it is huge! ;-) )
I believe the duplicates came when I submitted the bug; I kept trying and getting an SQL error page from Bugzilla, but it must have filed them anyway. Oops! I will also note that Dave Miller committed the fix above as: http://git.kernel.org/linus/b336369c1e1ad88495895260a9068eb18bc48b6c and it is in v2.6.37-rc1.