Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Sep 2001 10:47:20 -0600
From:      Warner Losh <imp@harmony.village.org>
To:        Lars Eggert <larse@ISI.EDU>
Cc:        mobile@FreeBSD.ORG
Subject:   Re: Partial Success! (Re: PC-Card broken: 4.4-RC4 & Dell Latitude C600) 
Message-ID:  <200109121647.f8CGlKt41269@harmony.village.org>
In-Reply-To: Your message of "Wed, 12 Sep 2001 09:12:35 PDT." <3B9F8973.C53A0ED4@isi.edu> 
References:  <3B9F8973.C53A0ED4@isi.edu>  <3B9F85BB.70DE18A6@isi.edu> <3B9EC74D.CF3DECBD@isi.edu> <3B9E81C4.5CB017D@isi.edu> <3B9D0A4C.2090203@isi.edu> <200109111837.f8BIbft34551@harmony.village.org> <200109112134.f8BLYkt35748@harmony.village.org> <3B9E843A.54EA07A7@isi.edu> <200109121453.f8CEr2t39965@harmony.village.org> <200109121604.f8CG45t40527@harmony.village.org> 

next in thread | previous in thread | raw e-mail | index | archive | help

In message <3B9F8973.C53A0ED4@isi.edu> Lars Eggert writes:
: No change.
: 
: Note that the previous patch was still in there, also. Let me know if I
: should try with just this one applied.

Damn.  OK.  Let's try the following "hail mary" patch.  Apply this one 
and the pcic_teardown_intr patch applied earlier.

Warner


Index: pcic_pci.c
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/sys/pccard/pcic_pci.c,v
retrieving revision 1.54.2.16
diff -u -r1.54.2.16 pcic_pci.c
--- pcic_pci.c	2001/09/06 20:59:49	1.54.2.16
+++ pcic_pci.c	2001/09/12 16:44:04
@@ -908,10 +908,15 @@
 	u_int32_t event;
 	u_int32_t stat;
 	int present;
+	int s;
 
 	event = bus_space_read_4(sp->bst, sp->bsh, CB_SOCKET_EVENT);
 	if (event != 0) {
 		stat = bus_space_read_4(sp->bst, sp->bsh, CB_SOCKET_STATE);
+
+		/* Ack the interrupt */
+		bus_space_write_4(sp->bst, sp->bsh, 0, event);
+
 		if (bootverbose)
 			device_printf(sc->dev, "Event mask 0x%x stat 0x%x\n",
 			    event, stat);
@@ -928,14 +933,14 @@
 				sc->cd_pending = 1;
 			} else {
 				sc->cd_present = 0;
+				s = splhigh();
 				pccard_event(sp->slt, card_removed);
+				splx(s);
 			}
 		}
 		if (stat & CB_SS_BADVCC)
 			device_printf(sc->dev, "BAD Vcc request\n");
 
-		/* Ack the interrupt */
-		bus_space_write_4(sp->bst, sp->bsh, 0, event);
 	}
 
 	/*

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?200109121647.f8CGlKt41269>