DragonFly bugs List (threaded) for 2005-12
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
Re: panic with HEAD
Ok Steve, update your kernel sources again just to sync up the patch
I committed to if_wi (which is the same one you already have), and
then try this patch on top of that.
The issue is that the cardbus code's handling of BUS_SETUP_INTR ignores
the serializer passed into it from IF_WI. I think this will deal with
the case properly but I can't test it.
-Matt
Index: bus/pccard/pccard.c
===================================================================
RCS file: /cvs/src/sys/bus/pccard/pccard.c,v
retrieving revision 1.14
diff -u -r1.14 pccard.c
--- bus/pccard/pccard.c 27 Jun 2005 02:27:10 -0000 1.14
+++ bus/pccard/pccard.c 16 Dec 2005 20:58:17 -0000
@@ -1222,7 +1222,7 @@
if (func->intr_handler != NULL)
panic("Only one interrupt handler per function allowed");
err = bus_generic_setup_intr(dev, child, irq, flags, pccard_intr,
- func, cookiep, NULL);
+ func, cookiep, serializer);
if (err != 0)
return (err);
func->intr_handler = intr;
Index: dev/pccard/pccbb/pccbb.c
===================================================================
RCS file: /cvs/src/sys/dev/pccard/pccbb/pccbb.c,v
retrieving revision 1.11
diff -u -r1.11 pccbb.c
--- dev/pccard/pccbb/pccbb.c 12 Oct 2005 17:35:54 -0000 1.11
+++ dev/pccard/pccbb/pccbb.c 16 Dec 2005 21:03:41 -0000
@@ -803,6 +803,7 @@
*cookiep = ih;
ih->intr = intr;
ih->arg = arg;
+ ih->serializer = serializer;
KKASSERT(serializer == NULL); /* not yet supported */
STAILQ_INSERT_TAIL(&sc->intr_handlers, ih, entries);
/*
@@ -1057,7 +1058,13 @@
}
if (sc->flags & CBB_CARD_OK) {
STAILQ_FOREACH(ih, &sc->intr_handlers, entries) {
- (*ih->intr)(ih->arg);
+ if (ih->serializer) {
+ lwkt_serialize_handler_call(ih->serializer,
+ (inthand2_t)ih->intr, ih->arg,
+ NULL);
+ } else {
+ (*ih->intr)(ih->arg);
+ }
}
}
Index: dev/pccard/pccbb/pccbbvar.h
===================================================================
RCS file: /cvs/src/sys/dev/pccard/pccbb/pccbbvar.h,v
retrieving revision 1.1
diff -u -r1.1 pccbbvar.h
--- dev/pccard/pccbb/pccbbvar.h 10 Feb 2004 07:55:47 -0000 1.1
+++ dev/pccard/pccbb/pccbbvar.h 16 Dec 2005 21:01:05 -0000
@@ -36,6 +36,7 @@
struct cbb_intrhand {
driver_intr_t *intr;
void *arg;
+ struct lwkt_serialize *serializer;
STAILQ_ENTRY(cbb_intrhand) entries;
};
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]