summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authormickey <mickey@openbsd.org>2006-11-15 14:40:50 +0000
committermickey <mickey@openbsd.org>2006-11-15 14:40:50 +0000
commit91a1024da82c7aba434580a6bf5aa9261eda816c (patch)
tree5b6f990f51965fa0069870b1e7e0d1e54626ef06 /sys
parentFix the loop in malo_tx_intr(). This fixes a infinit loop that happend after (diff)
downloadwireguard-openbsd-91a1024da82c7aba434580a6bf5aa9261eda816c.tar.xz
wireguard-openbsd-91a1024da82c7aba434580a6bf5aa9261eda816c.zip
do not go processing normal interrupts after ipi.
this is to avoid spins at high spl especialy on cpu0. other local interrupts (timer and softint) still do also pending interrupts processing. niklas@ ok
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/i386/i386/apicvec.s6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/arch/i386/i386/apicvec.s b/sys/arch/i386/i386/apicvec.s
index 48a3f8e4f5a..aa6ee91a1fb 100644
--- a/sys/arch/i386/i386/apicvec.s
+++ b/sys/arch/i386/i386/apicvec.s
@@ -1,4 +1,4 @@
-/* $OpenBSD: apicvec.s,v 1.7 2006/06/12 04:41:30 gwk Exp $ */
+/* $OpenBSD: apicvec.s,v 1.8 2006/11/15 14:40:50 mickey Exp $ */
/* $NetBSD: apicvec.s,v 1.1.2.2 2000/02/21 21:54:01 sommerfeld Exp $ */
/*-
@@ -63,7 +63,9 @@ XINTR(ipi):
ioapic_asm_ack()
sti /* safe to take interrupts.. */
call _C_LABEL(i386_ipi_handler)
- jmp _C_LABEL(Xdoreti)
+ cli
+ popl CPL
+ INTRFASTEXIT
#endif
/*