mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 22:21:21 +00:00
smp: Implement kick_all_cpus_sync()
Will replace the misnomed cpu_idle_wait() function which is copied a gazillion times all over arch/* Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20120507175652.049316594@linutronix.de
This commit is contained in:
parent
9cd75e13de
commit
f37f435f33
2 changed files with 27 additions and 0 deletions
23
kernel/smp.c
23
kernel/smp.c
|
@ -795,3 +795,26 @@ void on_each_cpu_cond(bool (*cond_func)(int cpu, void *info),
|
|||
}
|
||||
}
|
||||
EXPORT_SYMBOL(on_each_cpu_cond);
|
||||
|
||||
static void do_nothing(void *unused)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* kick_all_cpus_sync - Force all cpus out of idle
|
||||
*
|
||||
* Used to synchronize the update of pm_idle function pointer. It's
|
||||
* called after the pointer is updated and returns after the dummy
|
||||
* callback function has been executed on all cpus. The execution of
|
||||
* the function can only happen on the remote cpus after they have
|
||||
* left the idle function which had been called via pm_idle function
|
||||
* pointer. So it's guaranteed that nothing uses the previous pointer
|
||||
* anymore.
|
||||
*/
|
||||
void kick_all_cpus_sync(void)
|
||||
{
|
||||
/* Make sure the change is visible before we kick the cpus */
|
||||
smp_mb();
|
||||
smp_call_function(do_nothing, NULL, 1);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kick_all_cpus_sync);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue