* balance_irq()'s move() while in machine_restart() hangs system
@ 2003-04-09 22:56 Matt Domsch
2003-04-10 8:06 ` Ingo Molnar
0 siblings, 1 reply; 2+ messages in thread
From: Matt Domsch @ 2003-04-09 22:56 UTC (permalink / raw)
To: mingo; +Cc: linux-kernel
Ingo, if one processor is in move() when another processor calls
machine_restart(), the system will hang. All otherCPUs will move into
the hlt state, but one in move(), by virtue of smp_num_cpus getting set
to 1 in smp_send_stop() before the 4th CPU has completed its work and
gets out of move(). It will loop in move() in this chunk:
if (direction == 1) {
cpu++;
if (cpu >= smp_num_cpus)
cpu = 0;
} else {
cpu--;
if (cpu == -1)
cpu = smp_num_cpus-1;
}
} while (!IRQ_ALLOWED(cpu,allowed_mask) ||
(search_idle && !IDLE_ENOUGH(cpu,now)));
with smp_num_cpus=1 and never manage to exit.
Is it fair to change smp_send_stop() to call
smp_call_function(stop_this_cpu, NULL, 1, 1) instead (make it wait for
the other CPUs to complete before continuing)?
Thanks,
Matt
--
Matt Domsch
Sr. Software Engineer, Lead Engineer, Architect
Dell Linux Solutions www.dell.com/linux
Linux on Dell mailing lists @ http://lists.us.dell.com
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: balance_irq()'s move() while in machine_restart() hangs system
2003-04-09 22:56 balance_irq()'s move() while in machine_restart() hangs system Matt Domsch
@ 2003-04-10 8:06 ` Ingo Molnar
0 siblings, 0 replies; 2+ messages in thread
From: Ingo Molnar @ 2003-04-10 8:06 UTC (permalink / raw)
To: Matt Domsch; +Cc: linux-kernel
On 9 Apr 2003, Matt Domsch wrote:
> Is it fair to change smp_send_stop() to call
> smp_call_function(stop_this_cpu, NULL, 1, 1) instead (make it wait for
> the other CPUs to complete before continuing)?
sure, it's fair - at that point all the notification has been done.
Ingo
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-04-10 7:55 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-04-09 22:56 balance_irq()'s move() while in machine_restart() hangs system Matt Domsch
2003-04-10 8:06 ` Ingo Molnar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).