arch/tile: fix rwlock so would-be write lockers don't block new readers
authorChris Metcalf <cmetcalf@tilera.com>
Mon, 15 Nov 2010 14:18:49 +0000 (09:18 -0500)
committerChris Metcalf <cmetcalf@tilera.com>
Mon, 15 Nov 2010 14:18:49 +0000 (09:18 -0500)
commit24f3f6b5eff92608a62449e33bfac0eed1447d02
tree7f487b3989657b9c1c896d6c0b3916c60c3ddfa8
parentd02db4f8d79c5841ba32b326edb75ea6acd081ca
arch/tile: fix rwlock so would-be write lockers don't block new readers

This avoids a deadlock in the IGMP code where one core gets a read
lock, another core starts trying to get a write lock (thus blocking
new readers), and then the first core tries to recursively re-acquire
the read lock.

We still try to preserve some degree of balance by giving priority
to additional write lockers that come along while the lock is held
for write, so they can all complete quickly and return the lock to
the readers.

Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
arch/tile/lib/spinlock_32.c