Thread (14 messages) 14 messages, 2 authors, 2015-02-26

Re: [RFC][PATCH v2] sched/rt: Use IPI to trigger RT task push migration instead of pulling

From: Steven Rostedt <rostedt@goodmis.org>
Date: 2015-02-26 12:42:11
Also in: lkml

On Thu, 26 Feb 2015 08:45:59 +0100
Peter Zijlstra [off-list ref] wrote:
On Wed, Feb 25, 2015 at 12:50:15PM -0500, Steven Rostedt wrote:
quoted
It can't be used for state?

If one CPU writes "zero", and the other CPU wants to decide if the
system is in the state to do something, isn't a rmb() fine to use?


CPU 1:

	x = 0;
	/* Tell other CPUs they can now do something */
	smp_wmb();

CPU 2:
	/* Make sure we see current state of x */
	smp_rmb();
	if (x == 0)
		do_something();

The above situation is not acceptable?
Acceptable is just not the word. It plain doesn't work that way.
Thinking about this more, is it because a wmb just forces the CPU to
write everything before this before it writes anything after it. That
is, the writes themselves can happen at a much later time. Does a plain
mb() work the same way if there are no reads required?
quoted
Otherwise, we fail to be able to do_something() when it is perfectly
fine to do so.
Can't be helped.
What about using atomic_t?

Note, my latest code doesn't have any of this, but I just want to
understand the semantics of these operations a bit better.

-- Steve
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help