Blackfin: fix deadlock in SMP IPI handler
authorSonic Zhang <sonic.zhang@analog.com>
Wed, 10 Jun 2009 08:42:41 +0000 (08:42 +0000)
committerMike Frysinger <vapier@gentoo.org>
Sat, 13 Jun 2009 11:20:09 +0000 (07:20 -0400)
commit86f2008bf546af9a434f480710e8d33891616bf5
treee55bf8eec1f6dbbf3ba052c3a595f4806c724a6e
parentf9ee3ab81c222219ad4467b75b406efe2616d8a4
Blackfin: fix deadlock in SMP IPI handler

When a low priority interrupt (like ethernet) is triggered between 2 high
priority IPI messages, a deadlock in disable_irq() is hit by the second
IPI handler.  This is because the second IPI message is queued within the
first IPI handler, but the handler doesn't process all messages, and new
ones are inserted rather than appended.  So now we process all the pending
messages, and append new ones to the pending list.

URL: http://blackfin.uclinux.org/gf/tracker/5226
Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
arch/blackfin/mach-common/smp.c