git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
[pandora-kernel.git]
/
arch
/
x86
/
kernel
/
smp.c
diff --git
a/arch/x86/kernel/smp.c
b/arch/x86/kernel/smp.c
index
d801210
..
513deac
100644
(file)
--- a/
arch/x86/kernel/smp.c
+++ b/
arch/x86/kernel/smp.c
@@
-159,10
+159,10
@@
asmlinkage void smp_reboot_interrupt(void)
irq_exit();
}
irq_exit();
}
-static void native_s
mp_send_stop(void
)
+static void native_s
top_other_cpus(int wait
)
{
unsigned long flags;
{
unsigned long flags;
- unsigned long
wai
t;
+ unsigned long
timeou
t;
if (reboot_force)
return;
if (reboot_force)
return;
@@
-179,9
+179,12
@@
static void native_smp_send_stop(void)
if (num_online_cpus() > 1) {
apic->send_IPI_allbutself(REBOOT_VECTOR);
if (num_online_cpus() > 1) {
apic->send_IPI_allbutself(REBOOT_VECTOR);
- /* Don't wait longer than a second */
- wait = USEC_PER_SEC;
- while (num_online_cpus() > 1 && wait--)
+ /*
+ * Don't wait longer than a second if the caller
+ * didn't ask us to wait.
+ */
+ timeout = USEC_PER_SEC;
+ while (num_online_cpus() > 1 && (wait || timeout--))
udelay(1);
}
udelay(1);
}
@@
-227,7
+230,7
@@
struct smp_ops smp_ops = {
.smp_prepare_cpus = native_smp_prepare_cpus,
.smp_cpus_done = native_smp_cpus_done,
.smp_prepare_cpus = native_smp_prepare_cpus,
.smp_cpus_done = native_smp_cpus_done,
- .s
mp_send_stop = native_smp_send_stop
,
+ .s
top_other_cpus = native_stop_other_cpus
,
.smp_send_reschedule = native_smp_send_reschedule,
.cpu_up = native_cpu_up,
.smp_send_reschedule = native_smp_send_reschedule,
.cpu_up = native_cpu_up,