diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2006-04-08 20:50:39 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2006-04-08 20:50:39 +0000 |
commit | f5328318a2b1babb70b1908b5036796ba6a75381 (patch) | |
tree | a45d42f281d547f132b0d40cea71e06685c23faa /sys/arch/i386 | |
parent | eebd71ccf19874003fd1aabc5d223e0f64a69351 (diff) |
Don't panic in apic_intr_establush() if interrupt is not sharable and already
taken; return NULL instead, just like we do for non-apic interrupts.
Fixes PR 5064.
ok mickey@
Diffstat (limited to 'sys/arch/i386')
-rw-r--r-- | sys/arch/i386/i386/ioapic.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/sys/arch/i386/i386/ioapic.c b/sys/arch/i386/i386/ioapic.c index 9a9f0bdd0ad..a80bea4457c 100644 --- a/sys/arch/i386/i386/ioapic.c +++ b/sys/arch/i386/i386/ioapic.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ioapic.c,v 1.7 2006/03/06 19:10:06 kettenis Exp $ */ +/* $OpenBSD: ioapic.c,v 1.8 2006/04/08 20:50:38 kettenis Exp $ */ /* $NetBSD: ioapic.c,v 1.7 2003/07/14 22:32:40 lukem Exp $ */ /*- @@ -625,13 +625,13 @@ apic_intr_establish(int irq, int type, int level, int (*ih_fun)(void *), if (type == pin->ip_type) break; case IST_PULSE: - if (type != IST_NONE) - /* XXX should not panic here! */ - panic("apic_intr_establish: " - "intr %d can't share %s with %s", - intr, - isa_intr_typename(sc->sc_pins[intr].ip_type), - isa_intr_typename(type)); + if (type != IST_NONE) { + /*printf("%s: intr_establish: can't share %s with %s, irq %d\n", + ih_what, isa_intr_typename(pin->ip_type), + isa_intr_typename(type), intr);*/ + free(ih, M_DEVBUF); + return (NULL); + } break; } |