lkml.org 
[lkml]   [2010]   [Jun]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 1/4, v2] x86: enlightenment for ticket spin locks - base implementation
    On 06/30/2010 01:52 PM, Jan Beulich wrote:
    > I fail to see that: Depending on the hypervisor's capabilities, the
    > two main functions could be much smaller (potentially there wouldn't
    > even be a need for the unlock hook in some cases),

    What mechanism are you envisaging in that case?

    >> That appears to be a mechanism to allow it to take interrupts while
    >> spinning on the lock, which is something that stock ticket locks don't
    >> allow. If that's a useful thing to do, it should happen in the generic
    >> ticketlock code rather than in the per-hypervisor backend (otherwise we
    >> end up with all kinds of subtle differences in lock behaviour depending
    >> on the exact environment, which is just going to be messy). Even if
    >> interrupts-while-spinning isn't useful on native hardware, it is going
    >> to be equally applicable to all virtual environments.
    >>
    > While we do interrupt re-enabling in our pv kernels, I intentionally
    > didn't do this here - it complicates the code quite a bit further, and
    > that did seem right for an initial submission.
    >

    Ah, I was confused by this:
    > + /*
    > + * If we interrupted another spinlock while it was blocking, make
    > + * sure it doesn't block (again) without re-checking the lock.
    > + */
    > + if (spinning.prev)
    > + sync_set_bit(percpu_read(poll_evtchn),
    > + xen_shared_info->evtchn_pending);
    > +
    > +

    > The list really juts is needed to not pointlessly tickle CPUs that
    > won't own the just released lock next anyway (or would own
    > it, but meanwhile went for another one where they also decided
    > to go into polling mode).

    Did you measure that it was a particularly common case which was worth
    optimising for?

    J


    \
     
     \ /
      Last update: 2010-06-30 14:55    [W:0.021 / U:1.352 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site