Frederic Weisbecker <fweis...@gmail.com> writes: > On Fri, Feb 22, 2013 at 06:21:31AM -0800, Eric Dumazet wrote: >> On Fri, 2013-02-22 at 15:09 +0100, Peter Zijlstra wrote: >> > On Fri, 2013-02-22 at 13:50 +0100, Frederic Weisbecker wrote: >> > > > Argh!! at what cost? 64bit atomics are like expensive. Wouldn't >> > > adding >> > > > a seqlock be saner? >> > > >> > > Not sure. This requires a spinlock in the write side which is called >> > > from >> > > fast path like the timer interrupt. >> > >> > A single spinlock is _way_ cheaper than a ton of cmpxchg8b()s to update >> > a few variables. >> >> We also have include/linux/u64_stats_sync.h since 2.6.36 > > Interesting, we should probably use that instead.
OK, I'll spin a version using the u64_stats interface. Unfortunately, for 32-bit platforms that have atomic 64-bit loads stores[1], u64_stats leads to some unnecessary overhead, but I'll look at possibly optimizing u64_stats for those platforms as a follow-up patch. Kevin [1] ARM >= v6k devices have ldrexd/strexd instructions for 64-bit loads stores which are used by the atomic64 accessors on those devices. (c.f. arch/arm/include/asm/atomic.h:atomic64_read() -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/