lkml.org 
[lkml]   [2010]   [Apr]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 1/5] Add a global synchronization point for pvclock
    From
    Date
    On Sat, 2010-04-17 at 21:49 +0300, Avi Kivity wrote:
    > On 04/17/2010 09:48 PM, Avi Kivity wrote:
    > >
    > >>
    > >> +static u64 last_value = 0;
    > >
    > > Needs to be atomic64_t.
    > >
    > >> +
    > >> cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src)
    > >> {
    > >> struct pvclock_shadow_time shadow;
    > >> unsigned version;
    > >> cycle_t ret, offset;
    > >> + u64 last;
    > >>
    > >>
    > >> + do {
    > >> + last = last_value;
    > >
    > > Otherwise, this assignment can see a partial update.
    >
    > On a 32-bit guest, that is.

    Right, do bear in mind that the x86 implementation of atomic64_read() is
    terrifyingly expensive, it is better to not do that read and simply use
    the result of the cmpxchg.




    \
     
     \ /
      Last update: 2010-04-19 12:47    [W:0.032 / U:1.740 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site