lkml.org 
[lkml]   [2010]   [Jun]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch 05/52] lglock: introduce special lglock and brlock spin locks
    On Thu, 24 Jun 2010, npiggin@suse.de wrote:

    > +#define DEFINE_LGLOCK(name) \
    > + \
    > + DEFINE_PER_CPU(arch_spinlock_t, name##_lock); \

    Uuurgh. You want to make that an arch_spinlock ? Just to avoid the
    preempt_count overflow when you lock all cpu locks nested ?

    I'm really not happy about that, it's going to be a complete nightmare
    for RT. If you wanted to make this a present for RT giving the
    scalability stuff massive testing, then you failed miserably :)

    I know how to fix it, but can't we go for an approach which
    does not require massive RT patching again ?

    struct percpu_lock {
    spinlock_t lock;
    unsigned global_state;
    };

    And let the lock function do:

    spin_lock(&pcp->lock);
    while (pcp->global_state)
    cpu_relax();

    So the global lock side can take each single lock, modify the percpu
    "global state" and release the lock. On unlock you just need to reset
    the global state w/o taking the percpu lock and be done.

    I doubt that the extra conditional in the lock path is going to be
    relevant overhead, compared to the spin_lock it's noise.

    Thanks,

    tglx


    \
     
     \ /
      Last update: 2010-06-24 20:19    [W:5.156 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site