summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorvisa <visa@openbsd.org>2016-01-08 05:26:25 +0000
committervisa <visa@openbsd.org>2016-01-08 05:26:25 +0000
commit75c26c4d33b84f4ac0e4d910e64faac9fa467da6 (patch)
tree06c04fc4d9b3d3ab00bd344a5010739bbbfa5958 /sys
parentSimplify the mparse_open() interface. (diff)
downloadwireguard-openbsd-75c26c4d33b84f4ac0e4d910e64faac9fa467da6.tar.xz
wireguard-openbsd-75c26c4d33b84f4ac0e4d910e64faac9fa467da6.zip
Make sure the new rendezvous state is visible to other CPUs before
sending IPIs. Without this, a rendezvous can fail if write buffering is enabled on octeon.
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/mips64/mips64/ipifuncs.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/arch/mips64/mips64/ipifuncs.c b/sys/arch/mips64/mips64/ipifuncs.c
index ddae5f3adbc..0a1d28281dc 100644
--- a/sys/arch/mips64/mips64/ipifuncs.c
+++ b/sys/arch/mips64/mips64/ipifuncs.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ipifuncs.c,v 1.11 2015/07/27 16:33:40 visa Exp $ */
+/* $OpenBSD: ipifuncs.c,v 1.12 2016/01/08 05:26:25 visa Exp $ */
/* $NetBSD: ipifuncs.c,v 1.40 2008/04/28 20:23:10 martin Exp $ */
/*-
@@ -209,6 +209,7 @@ smp_rendezvous_cpus(unsigned long map,
smp_rv_func_arg = arg;
smp_rv_waiters[0] = 0;
smp_rv_waiters[1] = 0;
+ mips_sync();
/* signal other processors, which will enter the IPI with interrupts off */
mips64_multicast_ipi(map & ~cpumask, MIPS64_IPI_RENDEZVOUS);