Have you looked at the code path that does carrier detect for possibly recursing printks? Often by virtue of being in an interrupt context already. -- Mathematics is the supreme nostalgia of our time
Well the purpose of the LLTX flag is to reduce serializing on the xmit_lock. If we take the lock anyway, that should be harmless as Andi says. So I'm afraid it looks to be a performance fix at best (
Wait, I think I see the problem. Sungem processes link status in it's ->poll() NAPI handler. This occurs via calls to gem_pcs_interrupt(), for example. Non-pcs sungem variants use a timer to poll lin
If we're in the ->poll() handler for non-netpoll reasons, and the link state changes, causing a printk, we'll potentially reenter ->poll() via netconsole. This also explains the original fix quite ni
There is no recursion on poll because printk will never call into the low level console driver when the console sem is already taken. -Andi P.S.: I made the same mistake long ago, but akpm set me st
Ergh, you deleted the context. Again, imagine we're originally in console sem is not taken, because we're just doing routine network I/O. While in poll(), we take a private driver lock. Then for what
Hi, I tried replacing spin_lock by spin_trylock in poll() and a few other functions (and returning accordingly), but it didn't help. I'm beginning to think I won't be able to debug this one! ;) -- Co
Hi Eric, Ok, it tried... It doesn't help. I tried the wild way too: It didn't help either. I'll give a look to other net drivers, to see if they do stuff differently, but I fear that I won't find it
[cc:ed to netdev] Well this doesn't look unreasonable, but I haven't run into it with the NICs I've tested. Nor have I seen this reported before. Which NICs is this with? I wonder if netif_running is
Hi, Sungem. I didn't find anything strange in sungem, but it may be... Probably... I wanted to do the less modifications possible. -- Colin http://colino.net/323/ - Presenting the Mazda 323 Rouge
I think this is very strange that only sungem behaves this way. I don't think netpoll is doing anything different than what would happen, f.e., when bringing an interface up using dhcp. That should c
Hi, Thanks for your help. You meant zero here ? (or didn't I understand something) Btw, shouldn't gem_poll() check for gp->hw_running, too? I added a printk at the end of gem_open(), it's 1 even when
Hi, My girlfriend told me what was outputted by my infinite loop: netpoll: netif_running 1, netif_carrier_ok 0, netif_queue_stopped 0. Shouldn't sungem stop its queue when there's no carrier ? (I rea
Hi again, I looked a bit more at the code and found out a possible problem. However it doesn't fix the hang, so either it's not what I found, or there's something else. First, my newbie question: is