Basically, think about the interactions of
CPU#1 CPU#2
irq handler bottom half handler
wait_on_bh(); cli();
and I've solved it by simply prioiritizing in a very simple manner:
hardware interrupts have "higher priority" than bottom half handlers, and
as such a hardware interrupt will never wait for a bottom half handler.
Deadlock avoided.
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/