summaryrefslogtreecommitdiffstats
path: root/sys/sys/smp.h
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2004-08-23 21:39:29 +0000
committerpeter <peter@FreeBSD.org>2004-08-23 21:39:29 +0000
commit326b7f663e843b9660f17260119f638a9a7d2f72 (patch)
tree89b1af9b2f1d343fd5676d1084f6d765458e27d1 /sys/sys/smp.h
parent02488a6b3c5b0d35621962fc89ebba434f72ec06 (diff)
downloadFreeBSD-src-326b7f663e843b9660f17260119f638a9a7d2f72.zip
FreeBSD-src-326b7f663e843b9660f17260119f638a9a7d2f72.tar.gz
Commit Doug White and Alan Cox's fix for the cross-ipi smp deadlock.
We were obtaining different spin mutexes (which disable interrupts after aquisition) and spin waiting for delivery. For example, KSE processes do LDT operations which use smp_rendezvous, while other parts of the system are doing things like tlb shootdowns with a different mutex. This patch uses the common smp_rendezvous mutex for all MD home-grown IPIs that spinwait for delivery. Having the single mutex means that the spinloop to aquire it will enable interrupts periodically, thus avoiding the cross-ipi deadlock. Obtained from: dwhite, alc Reviewed by: jhb
Diffstat (limited to 'sys/sys/smp.h')
-rw-r--r--sys/sys/smp.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/sys/smp.h b/sys/sys/smp.h
index b9d57e2..5a1ab86 100644
--- a/sys/sys/smp.h
+++ b/sys/sys/smp.h
@@ -95,6 +95,7 @@ void forward_roundrobin(void);
int restart_cpus(cpumask_t);
int stop_cpus(cpumask_t);
void smp_rendezvous_action(void);
+extern struct mtx smp_rv_mtx;
#endif /* SMP */
void smp_rendezvous(void (*)(void *),
void (*)(void *),
OpenPOWER on IntegriCloud