summaryrefslogtreecommitdiffstats
path: root/sys/pccard/pcic.c
diff options
context:
space:
mode:
authornate <nate@FreeBSD.org>1997-01-11 18:23:20 +0000
committernate <nate@FreeBSD.org>1997-01-11 18:23:20 +0000
commit74e2dbdd0962c9c9675a75887cb3494992d8d81e (patch)
treef7c60d90f7e55971345c032d841959b4d84a160d /sys/pccard/pcic.c
parent8a825f6d66e058aef45a59f2e60978de7197881d (diff)
downloadFreeBSD-src-74e2dbdd0962c9c9675a75887cb3494992d8d81e.zip
FreeBSD-src-74e2dbdd0962c9c9675a75887cb3494992d8d81e.tar.gz
Update the PCIC controller's imask with individual slot IRQ's.
Assuming that the intr_mask[] was updated by changing the maskptrs (the existing update_intr_masks() function will not work) this code was written so the PCIC controller insertion/removal events will not interrupt the card IRQ handler events. Some possible scenarios: + Card is removed during IRQ handler: - PCIC card handler is allowed to interrupt - card removal event is called, removing the driver and data structures * card interrupt handler continues w/out driver, data structures, and hardware OR (the code just committed) * card IRQ handler has no hardware to read/write to, but has code and data to run on (XXX- Assume it completes and doesn't spin forever) - PCIC card handler unloads the card driver The current situation at least leaves the card interrupt handlers the drivers and data structures to work with although the hardware can't be guaranteed. Reviewed by: bde
Diffstat (limited to 'sys/pccard/pcic.c')
-rw-r--r--sys/pccard/pcic.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/pccard/pcic.c b/sys/pccard/pcic.c
index 5a834c2..e06a034 100644
--- a/sys/pccard/pcic.c
+++ b/sys/pccard/pcic.c
@@ -567,6 +567,7 @@ pcic_probe(void)
cinfo.maxmem = PCIC_MEM_WIN;
cinfo.maxio = PCIC_IO_WIN;
cinfo.irqs = free_irqs;
+ cinfo.pcic_imask = &pcic_imask;
#ifdef LKM
bzero(pcic_slots, sizeof(pcic_slots));
OpenPOWER on IntegriCloud