How? It can't. By the time __cpu_die() is called, we do not even
know whether context_switch() was finished. All we know is that
rq->curr = idle.
native_cpu_die() correctly waits in a loop until the idle thread
sets CPU_DEAD.
And I think every smp_ops->cpu_die() implementation should synhcronize
with ->cpu_disable(), otherwise it is buggy.
I think __cpu_die() should ensure it is dead.
OK. This is really minor. Perhaps it is safer to keep this wait just
to preserve the current behaviour.
Oleg.
--