aboutsummaryrefslogtreecommitdiff
path: root/sys/i386
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2005-11-16 20:58:40 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2005-11-16 20:58:40 +0000
commitdb477d6cc8ce84b3c1172aef86628ca121119c98 (patch)
tree19ed2e5ff4b6fae2b43b25381ac749d1728e117b /sys/i386
parent1c570dff3d4770532c3f76cd47cd2bf0be158cc9 (diff)
Notes
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/i386/mp_machdep.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/sys/i386/i386/mp_machdep.c b/sys/i386/i386/mp_machdep.c
index bfc3c5b511caa..fab5e0f0aa23d 100644
--- a/sys/i386/i386/mp_machdep.c
+++ b/sys/i386/i386/mp_machdep.c
@@ -1311,7 +1311,6 @@ ipi_nmi_handler()
{
int cpu = PCPU_GET(cpuid);
int cpumask = PCPU_GET(cpumask);
- void (*restartfunc)(void);
if (!(ipi_nmi_pending & cpumask))
return 1;
@@ -1330,10 +1329,10 @@ ipi_nmi_handler()
atomic_clear_int(&started_cpus, cpumask);
atomic_clear_int(&stopped_cpus, cpumask);
- restartfunc = (void (*)(void))atomic_readandclear_int(
- (u_int *)&cpustop_restartfunc);
- if (restartfunc != NULL)
- restartfunc();
+ if (cpu == 0 && cpustop_restartfunc != NULL) {
+ cpustop_restartfunc();
+ cpustop_restartfunc = NULL;
+ }
return 0;
}