Re: [patch 2/3] scheduler: add full memory barriers upon task switchat runqueue lock/unlock

From: Linus Torvalds
Date: Mon Feb 01 2010 - 13:38:20 EST




On Mon, 1 Feb 2010, Mathieu Desnoyers wrote:
>
> Here is the detailed execution scenario showing the race.

No. You've added random smp_mb() calls, but you don't actually show what
the f*ck they are protecting against.

For example

> First sys_membarrier smp_mb():

I'm not AT ALL interested in the sys_membarrier() parts. You can hav ea
million memory barriers there, and I won't care. I'm interested in what
you think the memory barriers elsewhere protect against. It's a barrier
between _which_ two operations?

You can't say it's a barrier "around" the

cpumask_clear(mm_cpumask, cpu);

because a barrier is between two things. So if you want to add two
barriers around that mm_cpumask acces, you need to describe the _three_
events you're barriers between in that call-path (with mm_cpumask being
just one of them)

And then, once you've described _those_ three events, you describe what
the sys_membarrier interaction is, and how mm_cpumask is involved there.

I'm not interested in the user-space code. Don't even quote it. It's
irrelevant apart from the actual semantics you want to guarantee for the
new membarrier() system call. So don't quote the code, just explain what
the actual barriers are.

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/