summaryrefslogtreecommitdiffstats
path: root/sys/dev/pv/xen.c
diff options
context:
space:
mode:
authormikeb <mikeb@openbsd.org>2017-01-31 12:17:20 +0000
committermikeb <mikeb@openbsd.org>2017-01-31 12:17:20 +0000
commita4d4bfc49ca8a91d1a3caa8295c97eb44a14beba (patch)
treee633aa0617b5e098eb66af8bcaff6228832048ea /sys/dev/pv/xen.c
parentRemove the inifioctl hack, checking for an unheld NET_LOCK() in (diff)
downloadwireguard-openbsd-a4d4bfc49ca8a91d1a3caa8295c97eb44a14beba.tar.xz
wireguard-openbsd-a4d4bfc49ca8a91d1a3caa8295c97eb44a14beba.zip
Issue a pause instruction in the busy-wait loop on SP kernels as well
Diffstat (limited to 'sys/dev/pv/xen.c')
-rw-r--r--sys/dev/pv/xen.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/pv/xen.c b/sys/dev/pv/xen.c
index 7721e2a37d9..e4036af176b 100644
--- a/sys/dev/pv/xen.c
+++ b/sys/dev/pv/xen.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: xen.c,v 1.72 2017/01/20 16:57:38 mikeb Exp $ */
+/* $OpenBSD: xen.c,v 1.73 2017/01/31 12:17:20 mikeb Exp $ */
/*
* Copyright (c) 2015 Mike Belopuhov
@@ -1098,7 +1098,9 @@ xen_grant_table_remove(struct xen_softc *sc, grant_ref_t ref)
ge->ge_start, ge->ge_table[ref].domid);
return;
}
- CPU_BUSY_CYCLE();
+#if (defined(__amd64__) || defined(__i386__))
+ __asm volatile("pause": : : "memory");
+#endif
}
ge->ge_table[ref].frame = 0xffffffff;
}