On Wednesday 11 February 2009, Narnakaje, Snehaprabha wrote: > > We were trying to see why we need this additional dm9000 specific > disable/enable interrupts in the xmit function. It seems like dm9000 > ethernet controller being used on other boards does not require this.
I suddenly started seeing these watchdog issues recently ... after I disabled lockdep in Kconfig, so I could measure something without its performance impact. These timeouts would trigger with simple SCP or SSH commands, which used to work fine before lockdep got disabled. First thought: lockdep forces IRQF_DISABLED on, which has been known to create bugs in some drivers ... or hide them. And sure enough, the dm9000 IRQ handler should be using spin_lock_irqsave(), not spin_lock(), since request_irq() doesn't pass IRQF_DISABLED. That flavor bug is something lockdep has hidden for years in some other drivers. (I've sent that bugfix on to netdev.) Yet ... that bugfix alone was not enough to make these watchdog messages go away. If I rolled in a version of your patch (keeping the TX locking) it worked again. Mostly. Sometimes the driver just stopped responding entirely... This suggests a few potential reasons why not everyone sees these timeouts: - It might be a timing issue ... lockdep slows down spin_lock() and friends. EMIF may be set up wrong. Lots of platforms have bus timing setup issues. - This might be an issue with the dm9000a (vs b or e) chips. Not all boards use the A version. - The IRQ handler has similar "disable irqs at the chip" logic, with no comments about why ... maybe a lot more places in this driver need to protect against some TBS bug(s). At any rate ... I'm back to running with lockdep enabled. - Dave _______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
