X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=kernel%2Fstop_machine.c;h=b7350bbfb076293dd6d13d7ba060b3aba1f673a9;hb=035cfc61a523343fe0bee5ec54348e26f330a06c;hp=dc25b0baaa96944df5a61cc3cfef356f7f0c3bbd;hpb=429f731dea577bdd43693940cdca524135287e6a;p=pandora-kernel.git diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c index dc25b0baaa96..b7350bbfb076 100644 --- a/kernel/stop_machine.c +++ b/kernel/stop_machine.c @@ -62,8 +62,7 @@ static int stopmachine(void *cpu) * help our sisters onto their CPUs. */ if (!prepared && !irqs_disabled) yield(); - else - cpu_relax(); + cpu_relax(); } /* Ack: we are exiting. */ @@ -106,8 +105,10 @@ static int stop_machine(void) } /* Wait for them all to come to life. */ - while (atomic_read(&stopmachine_thread_ack) != stopmachine_num_threads) + while (atomic_read(&stopmachine_thread_ack) != stopmachine_num_threads) { yield(); + cpu_relax(); + } /* If some failed, kill them all. */ if (ret < 0) { @@ -134,8 +135,7 @@ static void restart_machine(void) preempt_enable_no_resched(); } -struct stop_machine_data -{ +struct stop_machine_data { int (*fn)(void *); void *data; struct completion done;