lkml.org 
[lkml]   [2004]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: status of Linux on Alpha?
    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@treshna.com>, 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@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 14:02    [W:0.019 / U:0.500 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site