| Date | Sat, 12 Jul 2014 13:59:45 +0000 (UTC) | From | Mathieu Desnoyers <> | Subject | Re: [patch 54/55] timekeeping: Provide fast and NMI safe access to CLOCK_MONOTONIC[_RAW] |
| |
----- Original Message ----- > From: "Thomas Gleixner" <tglx@linutronix.de> > To: "Mathieu Desnoyers" <mathieu.desnoyers@efficios.com> > Cc: "LKML" <linux-kernel@vger.kernel.org>, "John Stultz" <john.stultz@linaro.org>, "Peter Zijlstra" > <peterz@infradead.org>, "Steven Rostedt" <rostedt@goodmis.org> > Sent: Saturday, July 12, 2014 4:11:17 AM > Subject: Re: [patch 54/55] timekeeping: Provide fast and NMI safe access to CLOCK_MONOTONIC[_RAW] > > On Fri, 11 Jul 2014, Mathieu Desnoyers wrote: > > > ----- Original Message ----- > > > From: "Thomas Gleixner" <tglx@linutronix.de> > > > To: "LKML" <linux-kernel@vger.kernel.org> > > > Cc: "John Stultz" <john.stultz@linaro.org>, "Peter Zijlstra" > > > <peterz@infradead.org>, "Steven Rostedt" > > > <rostedt@goodmis.org>, "Mathieu Desnoyers" > > > <mathieu.desnoyers@efficios.com> > > > Sent: Friday, July 11, 2014 9:45:19 AM > > > Subject: [patch 54/55] timekeeping: Provide fast and NMI safe access to > > > CLOCK_MONOTONIC[_RAW] > > > On the update side: > > > > > > tkf->seq++; > > > smp_wmb(); > > > update(tkf->base[0], tk; > > > > missing ")" > > :) > > > Any reason why the updater wouldn't do: > > > > tkf->seq++; > > smp_wmb(); > > update(tkf->base[1 - (tkf->seq & 0x01)], tk); > > > > instead of updating both array entries each time ? > > base[0]; <- Current active > seq++; -> Makes base[1] the active one for readers > update(base[0]); > > So readers are always one update cycle behind. Probably not an issue > most of the time, but think about fast wrapping clocksources and > NOHZ....
Ah, yep, got it.
So instead of calling update() twice per update, could we do the following instead ?
tkf->seq++; smp_wmb(); update(tkf->base[0], tk); tkf->seq++; smp_wmb(); memcpy(tkf->base[1], tkf->base[0], sizeof(tkf->base[1]);
just in case "update" would happen to be expensive for some clock implementation.
Thanks,
Mathieu
> > Thanks, > > tglx > > >
-- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com
|