On Thursday 27 September 2007 20:43, Scott Wood wrote: > Jon Smirl wrote: > > The call to msleep() is inside a block protected with > > > > :#define in_interrupt() (irq_count()) > > > > if (!in_interrupt) > > > > The stack trace looks like it is in a timer interrupt so shouldn't > > irq_count be non-zero? > > Could there be some lack of coordination on irq_count and the timer > > tick with the preempt patch applied? Or does irq_count() not count > > soft irqs? > > > > (!in_interrupt) may be the wrong way to protect this code. > > I think in_atomic() is what you want.
I tried with in_atomic(). The BUG report is gone, but the problem still exists. While network stress testing: [...] NETDEV WATCHDOG: eth0: transmit timed out net eth0: transmit timed out net eth0: queues didn't drain net eth0: tx: index: 35, outdex: 36 net eth0: rx: index: 24, outdex: 25 PHY: f0003000:00 - Link is Down PHY: f0003000:00 - Link is Up - 100/Full The link is up again, but any connection is dead (no answers to ping etc.). But the serial console is still working. I'm not sure if the RT-Preempt patch *causes* this behavior or only *discover* it. Any idea? Juergen -- Dipl.-Ing. Juergen Beisert | http://www.pengutronix.de Pengutronix - Linux Solutions for Science and Industry Handelsregister: Amtsgericht Hildesheim, HRA 2686 Vertretung Sued/Muenchen, Germany Phone: +49-8766-939 228 | Fax: +49-5121-206917-9 _______________________________________________ Linuxppc-embedded mailing list Linuxppc-embedded@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-embedded