summaryrefslogtreecommitdiffstats
path: root/sys/pccard/pcic.c
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2001-06-25 04:13:54 +0000
committerimp <imp@FreeBSD.org>2001-06-25 04:13:54 +0000
commit9c03640f8131fa266b0dbeb2a532794b18cee818 (patch)
tree58cc23d5dc5ce8804a41880e3c58f43dd6f16b4a /sys/pccard/pcic.c
parenta89ca1efdcee5122d5660c0173acb8a8d1d53225 (diff)
downloadFreeBSD-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.c4
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));
OpenPOWER on IntegriCloud