diff options
author | imp <imp@FreeBSD.org> | 2001-06-25 04:13:54 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2001-06-25 04:13:54 +0000 |
commit | 9c03640f8131fa266b0dbeb2a532794b18cee818 (patch) | |
tree | 58cc23d5dc5ce8804a41880e3c58f43dd6f16b4a /sys/pccard/pcic.c | |
parent | a89ca1efdcee5122d5660c0173acb8a8d1d53225 (diff) | |
download | FreeBSD-src-9c03640f8131fa266b0dbeb2a532794b18cee818.zip FreeBSD-src-9c03640f8131fa266b0dbeb2a532794b18cee818.tar.gz |
Work around a bug in the current interrupt system by explicitly
rejecting INTR_FAST interrupts. Since they can't be shared anyway,
this just short circuits a failure case that should work but is panic
fodder now.
This bug is that if the interrut condiation is active when you activate
the interrupt, then the interrupt routine will be called. jhb had
a patch that may or may not work to fix it, but I've lost it.
This may be due to the sio probe doing something odd too.
Diffstat (limited to 'sys/pccard/pcic.c')
-rw-r--r-- | sys/pccard/pcic.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/pccard/pcic.c b/sys/pccard/pcic.c index 89c14cd..3176ce6 100644 --- a/sys/pccard/pcic.c +++ b/sys/pccard/pcic.c @@ -692,9 +692,13 @@ int pcic_setup_intr(device_t dev, device_t child, struct resource *irq, int flags, driver_intr_t *intr, void *arg, void **cookiep) { + struct pcic_softc *sc = device_get_softc(dev); struct pccard_devinfo *devi = device_get_ivars(child); int err; + if (sc->csc_route == pci_parallel && (flags & INTR_FAST)) + return (EINVAL); + if (((1 << rman_get_start(irq)) & PCIC_INT_MASK_ALLOWED) == 0) { device_printf(dev, "Hardware does not support irq %ld.\n", rman_get_start(irq)); |