diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2005-11-16 20:58:40 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2005-11-16 20:58:40 +0000 |
| commit | db477d6cc8ce84b3c1172aef86628ca121119c98 (patch) | |
| tree | 19ed2e5ff4b6fae2b43b25381ac749d1728e117b /sys/i386 | |
| parent | 1c570dff3d4770532c3f76cd47cd2bf0be158cc9 (diff) | |
Notes
Diffstat (limited to 'sys/i386')
| -rw-r--r-- | sys/i386/i386/mp_machdep.c | 9 |
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; } |
