Re: status of Linux on Alpha?

From: Ivan Kokshaysky
Date: Tue Apr 27 2004 - 12:58:15 EST


On Tue, Apr 27, 2004 at 06:51:24PM +0200, Marc Giger wrote:
> What's the current status of the problem?

Hopefully resolved - thanks to Dru <andru@xxxxxxxxxxx>, who provided
an easy way to reproduce the problem.

What we have in lib/rwsem.c:__rwsem_do_wake():
int woken, loop;
^^^
and several lines below:
loop = woken;
woken *= RWSEM_ACTIVE_BIAS-RWSEM_WAITING_BIAS;
woken -= RWSEM_ACTIVE_BIAS;

However, rw_semaphore->count is 64-bit on Alpha, so
RWSEM_WAITING_BIAS has been defined as -0x0000000100000000L.
Obviously, this blows up in the write contention case.

Ivan.

--- linux.orig/lib/rwsem.c Mon Apr 26 20:11:36 2004
+++ linux/lib/rwsem.c Tue Apr 27 20:04:14 2004
@@ -40,8 +40,7 @@ static inline struct rw_semaphore *__rws
{
struct rwsem_waiter *waiter;
struct list_head *next;
- signed long oldcount;
- int woken, loop;
+ signed long oldcount, woken, loop;

rwsemtrace(sem,"Entering __rwsem_do_wake");

-
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/