Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Aug 2001 10:16:30 -0600
From:      Warner Losh <imp@harmony.village.org>
To:        Eric Masson <e-masson@kisoft-services.com>
Cc:        Mailing List FreeBSD Mobile <freebsd-mobile@FreeBSD.ORG>
Subject:   Re: pcic & dmesg weirdness 
Message-ID:  <200108241616.f7OGGUW94718@harmony.village.org>
In-Reply-To: Your message of "Fri, 24 Aug 2001 10:01:43 %2B0200." <86g0ahga3c.fsf@notbsdems.nantes.kisoft-services.com> 
References:  <86g0ahga3c.fsf@notbsdems.nantes.kisoft-services.com>  <86ae0rzr9k.fsf@notbsdems.nantes.kisoft-services.com> <200108230751.f7N7p5W82193@harmony.village.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
In message <86g0ahga3c.fsf@notbsdems.nantes.kisoft-services.com> Eric Masson writes:
: I've just made the test to unplug one of my cards while using the other
: (sio + ed, ed removed), the remaining card doesn't work anymore.
: 
: <pure hypothesis>
: as pcic says [CSC serial isa irq] instead of [pci only], isn't interrupt
: release on card removal treated differently.
: </pure pure hypothesis>

Ian Dowse posted this patch.  Maybe it will fix your problem.  It has
to do with interrupt masks not being properly cleared.  The interrupt
type that is printed usually doesn't matter (you can get it to say pci
only again by adding hw.pcic.init_routing=1 to your
/boot/loader.conf).

Warner

Index: intr_machdep.c
===================================================================
RCS file: /home/iedowse/CVS/src/sys/i386/isa/intr_machdep.c,v
retrieving revision 1.29.2.2
diff -u -r1.29.2.2 intr_machdep.c
--- intr_machdep.c	2000/08/16 05:35:34	1.29.2.2
+++ intr_machdep.c	2001/08/23 20:24:17
@@ -651,15 +651,9 @@
 
 	if (find_idesc(maskptr, irq) == NULL) {
 		/* no reference to this maskptr was found in this irq's chain */
-		if ((*maskptr & mask) == 0)
-			return;
-		/* the irq was included in the classes mask, remove it */
 		*maskptr &= ~mask;
 	} else {
 		/* a reference to this maskptr was found in this irq's chain */
-		if ((*maskptr & mask) != 0)
-			return;
-		/* put the irq into the classes mask */
 		*maskptr |= mask;
 	}
 	/* we need to update all values in the intr_mask[irq] array */


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-mobile" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200108241616.f7OGGUW94718>