Re: long disable of Softirqs in br_forward_delay_timer_expired()

From: Juergen Pfeiffer
Date: Fri Jan 19 2007 - 04:35:49 EST


Juergen Pfeiffer schrieb:

I had problems in my implementation of Profibus-protocol, because my FDL-State machine is implemented in tasklets and
sometimes there were situations, where Soft-Irqs were disabled for 20-40mS (Coldfire 5485 / 96MHz).
After inserting some testpoints in kernels source, doing dump_stack(), when the jiffie-time get longer then 20mS,
i detected the place of the long Soft-Irq disable in function

static void br_forward_delay_timer_expired(..)
inside file "net/bridge/br_stp_timer.c"

It does a
spin_lock_bh(..);
... some functionality;
spin_unlock_bh(..);


Hi

I found the reason for the long disabling of Soft-Irqs:

In-between the spin_lock_bh() and spin_unlock_bh() was a printk() going to serial console with 19200baud.
So it took easily 30mS for console-output.

No i start klogd an the log Messages go to a file in tmpfs in a short time.



Juergen Pfeiffer,
Seskion GmbH
Karlsruher Str. 11/1
70771 Leinfelden-Echterdingen
Germany

j.pfeiffer@xxxxxxxxxx

www.seskion.de
------------------------------------------------------------------------
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/