[lkml]   [2006]   [Dec]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] WorkStruct: Implement generic UP cmpxchg() where an arch doesn't support it
    On Wed, Dec 06, 2006 at 11:05:22AM -0800, Linus Torvalds wrote:
    > On Wed, 6 Dec 2006, Christoph Lameter wrote:
    > >
    > > I'd really appreciate a cmpxchg that is generically available for
    > > all arches. It will allow lockless implementation for various performance
    > > criticial portions of the kernel.
    > I suspect ARM may have been the last one without one, no?

    It's just been pointed out to me that the parisc one isn't safe.

    <dhowells> imagine variable X is set to 3
    <dhowells> CPU A issues cmpxchg(&X, 3, 5)
    <dhowells> you'd expect that to change X to 5
    <dhowells> but what if CPU B assigns 6 to X between cmpxchg reading X
    and it setting X?

    Given parisc's paucity of atomic operations (load-and-zero-32bit and
    load-and-zero-64bit), cmpxchg() is impossible to implement safely.
    There has to be something we can hook to exclude another processor
    modifying the variable. I'm OK with using atomic_cmpxchg(); we have
    atomic_set locked against it.

    Of course, using cmpxchg() isn't really lockless. It's just hidden
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2006-12-06 20:29    [W:2.271 / U:3.068 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site