Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Steven Rostedt <rostedt@...>
Cc: LKML <linux-kernel@...>, Ingo Molnar <mingo@...>, Linus Torvalds <torvalds@...>, Andrew Morton <akpm@...>, Peter Zijlstra <a.p.zijlstra@...>, Christoph Hellwig <hch@...>, Gregory Haskins <ghaskins@...>, Arnaldo Carvalho de Melo <acme@...>, Thomas Gleixner <tglx@...>, Tim Bird <tim.bird@...>, Sam Ravnborg <sam@...>, Frank Ch. Eigler <fche@...>, Steven Rostedt <srostedt@...>, Paul Mackerras <paulus@...>, Daniel Walker <dwalker@...>
Date: Wednesday, January 16, 2008 - 10:56 am

* Steven Rostedt (rostedt@goodmis.org) wrote:

Hrm, I will reply to the rest of this email in a separate mail, but
there is another concern, simpler than memory ordering, that just hit
me :

If we have CPU A calling clocksource_accumulate while CPU B is calling
get_monotonic_cycles, but events happens in the following order (because
of preemption or interrupts). Here, to make things worse, we would be on
x86 where cycle_t is not an atomic write (64 bits) :


CPU A                  CPU B

clocksource read
update cycle_mono (1st 32 bits)
                       read cycle_mono
                       read cycle_last
                       clocksource read
                       read cycle_mono
                       read cycle_last
update cycle_mono (2nd 32 bits)
update cycle_last
update cycle_acc

Therefore, we have :
- an inconsistant cycle_monotonic value
- inconsistant cycle_monotonic and cycle_last values.

Or is there something I have missed ?

If you really want an seqlock free algorithm (I _do_ want this for
tracing!) :) maybe going in the RCU direction could help (I refer to my
RCU-based 32-to-64 bits lockless timestamp counter extension, which
could be turned into the clocksource updater).

Mathieu


-- 
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Wed Jan 9, 7:29 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Tue Jan 15, 5:46 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Tue Jan 15, 6:01 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Tue Jan 15, 6:03 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Tue Jan 15, 6:08 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Tue Jan 15, 9:38 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Tue Jan 15, 11:17 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Wed Jan 16, 9:17 am)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Wed Jan 16, 10:56 am)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Wed Jan 16, 11:06 am)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Wed Jan 16, 11:28 am)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Wed Jan 16, 11:58 am)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Wed Jan 16, 1:00 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Wed Jan 16, 3:43 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Wed Jan 16, 4:17 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Thu Jan 17, 4:08 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Frank Ch. Eigler, (Thu Jan 17, 4:37 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Thu Jan 17, 5:03 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Fri Jan 18, 6:26 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Fri Jan 18, 6:49 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Frank Ch. Eigler, (Fri Jan 18, 11:32 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Fri Jan 18, 7:19 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Frank Ch. Eigler, (Fri Jan 18, 11:36 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Fri Jan 18, 11:55 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Frank Ch. Eigler, (Sat Jan 19, 12:23 am)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Sat Jan 19, 11:29 am)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Wed Jan 16, 4:49 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Wed Jan 16, 1:49 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, john stultz, (Wed Jan 16, 6:36 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, john stultz, (Wed Jan 16, 6:51 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Wed Jan 16, 7:33 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, john stultz, (Wed Jan 16, 10:28 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Wed Jan 16, 10:40 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Wed Jan 16, 10:51 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Wed Jan 16, 10:50 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Wed Jan 16, 11:02 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Paul Mackerras, (Wed Jan 16, 11:21 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Wed Jan 16, 11:39 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Thu Jan 17, 12:25 am)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Thu Jan 17, 12:22 am)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Thu Jan 17, 12:14 am)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Linus Torvalds, (Thu Jan 17, 1:46 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Thu Jan 17, 11:22 am)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Wed Jan 16, 7:39 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Wed Jan 16, 7:50 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Steven Rostedt, (Wed Jan 16, 8:36 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Linus Torvalds, (Wed Jan 16, 9:03 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Wed Jan 16, 9:35 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, john stultz, (Wed Jan 16, 10:20 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Wed Jan 16, 10:35 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, john stultz, (Wed Jan 16, 8:33 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Mathieu Desnoyers, (Wed Jan 16, 10:20 pm)
Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles, Daniel Walker, (Wed Jan 9, 11:28 pm)