diff options
author | Mike Belopuhov <mikeb@cvs.openbsd.org> | 2015-07-09 13:23:52 +0000 |
---|---|---|
committer | Mike Belopuhov <mikeb@cvs.openbsd.org> | 2015-07-09 13:23:52 +0000 |
commit | d53a9f52e8f3eaa7cfe83c44ba22ab05830851fe (patch) | |
tree | eb24f3b3523a484df0ea49515d07382e23f8578f /sys/arch/amd64 | |
parent | cdceb8f14ec1ce504dbd4b4f9258f23aef286695 (diff) |
Prevent possible interrupt recursion before unwinding the stack.
Xen delivers about 20 seconds worth of missed LAPIC timer events
after we enable interrupts on application CPUs and this makes us
recurse and burn the stack.
OK kettenis, guenther, deraadt, "good find" mlarkin
Diffstat (limited to 'sys/arch/amd64')
-rw-r--r-- | sys/arch/amd64/amd64/vector.S | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/sys/arch/amd64/amd64/vector.S b/sys/arch/amd64/amd64/vector.S index 76b58ced70a..011a497524e 100644 --- a/sys/arch/amd64/amd64/vector.S +++ b/sys/arch/amd64/amd64/vector.S @@ -1,4 +1,4 @@ -/* $OpenBSD: vector.S,v 1.40 2015/06/29 03:02:38 mlarkin Exp $ */ +/* $OpenBSD: vector.S,v 1.41 2015/07/09 13:23:51 mikeb Exp $ */ /* $NetBSD: vector.S,v 1.5 2004/06/28 09:13:11 fvdl Exp $ */ /* @@ -350,7 +350,6 @@ IDTVEC(resume_lapic_ipi) 2: movq $(1 << LIR_IPI),%rax orq %rax,CPUVAR(IPENDING) - sti INTRFASTEXIT IDTVEC(ipi_invltlb) @@ -435,7 +434,6 @@ IDTVEC(resume_lapic_ltimer) 2: movq $(1 << LIR_TIMER),%rax orq %rax,CPUVAR(IPENDING) - sti INTRFASTEXIT #endif /* NLAPIC > 0 */ @@ -518,12 +516,10 @@ IDTVEC(intr_##name##num) ;\ orq %rax,CPUVAR(IPENDING) ;\ level_mask(num) ;\ late_ack(num) ;\ - sti ;\ INTRFASTEXIT ;\ 9: \ unmask(num) ;\ late_ack(num) ;\ - sti ;\ INTRFASTEXIT #define ICUADDR IO_ICU1 |