lkml.org 
[lkml]   [2007]   [Aug]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRE: [PATCH] i386: Fix a couple busy loops in mach_wakecpu.h:wait_for_init_deassert()
    Date
    From
    >>  static inline void wait_for_init_deassert(atomic_t *deassert)
    >> {
    >> - while (!atomic_read(deassert));
    >> + while (!atomic_read(deassert))
    >> + cpu_relax();
    >> return;
    >> }
    >
    > For less-than-briliant people like me, it's totally non-obvious that
    > cpu_relax() is needed for correctness here, not just to make P4 happy.

    Not just P4 ... there are other threaded cpus where it is useful to
    let the core know that this is a busy loop so it would be a good thing
    to let other threads have priority.

    Even on a non-threaded cpu the cpu_relax() could be useful in the
    future to hint to the cpu that it could drop into a lower power
    hogging state.

    But I agree with your main point that the loop without the cpu_relax()
    looks like it ought to work because atomic_read() ought to actually
    go out and read memory each time around the loop.

    -Tony
    -
    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: 2007-08-24 18:23    [W:0.029 / U:211.572 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site