Hi 2012/11/19 Oleg Nesterov <oleg@xxxxxxxxxx>: > > I am wondering if it makes sense unconditionally. A lot of callers do > > if (waitqueue_active(q)) > wake_up(...); > > this patch makes the optimization above pointless and adds mb(). > > > But I won't argue. > > Oleg. > This patch solved an issue for me that I had with the TTY line discipline idle handling: Testing on a PREEMPT_RT system with TTY serial communication. Each time the TTY line discipline is dereferenced the Idle handling wait queue is woken up (see function put_ldisc in /drivers/tty/tty_ldisc.c) However line discipline idle handling is not used very often so the wait queue is empty most of the time. But still the wake_up() function enters the critical section guarded by spin locks. This causes additional scheduling overhead when a lower priority thread has control of that same lock. The /drivers/tty/tty_ldisc.c did not use the waitqueue_active() call to check if the waitqueue was filled.... maybe I should solve this problem the other way around: and make tty_ldisc.c first do the waitqueue_active() call? Regards, Ivo -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html