Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/dev/usb



smb%NetBSD.org@localhost said:
> Patch from Jared McNeill to prevent USB interrupt storms on resume on
> Thinkpad T61.  (Note: to prevent a very similar-seeming problem, T61
> users should also install firmware 2.06 or later, according to
> thinkwiki.) 

This doesn't look like a real fix.
What interrupt bits caused the storm - was it the
"host controller halted" one?
If yes, the appended patch should be better.
(And why do you think the firmware is to blame? What is
that similar-looking problem?)

best regards
Matthias





-------------------------------------------------------------------
-------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich

Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzende des Aufsichtsrats: MinDir'in Baerbel Brumme-Bothe
Geschaeftsfuehrung: Prof. Dr. Achim Bachem (Vorsitzender),
Dr. Ulrich Krafft (stellv. Vorsitzender), Prof. Dr. Harald Bolt,
Dr. Sebastian M. Schmidt
-------------------------------------------------------------------
-------------------------------------------------------------------
#
# old_revision [39e985f9ba4cf317402eeea6fc3953c5d09539f1]
#
# patch "sys/dev/usb/uhci.c"
#  from [c0b6d6ac26b5a10f86781bdf072c39d7a9d37dc1]
#    to [b9a6a7339830b606091e96cfb2cfdc3a6b3ae5f5]
#
============================================================
--- sys/dev/usb/uhci.c  c0b6d6ac26b5a10f86781bdf072c39d7a9d37dc1
+++ sys/dev/usb/uhci.c  b9a6a7339830b606091e96cfb2cfdc3a6b3ae5f5
@@ -1252,15 +1252,13 @@ uhci_intr1(uhci_softc_t *sc)
                       USBDEVNAME(sc->sc_bus.bdev));
        }
        if (status & UHCI_STS_HCH) {
-               /* no acknowledge needed */
-               if (!sc->sc_dying) {
-                       printf("%s: host controller halted\n",
-                           USBDEVNAME(sc->sc_bus.bdev));
+               ack |= UHCI_STS_HCH;
 #ifdef UHCI_DEBUG
+               printf("%s: host controller halted\n",
+                      USBDEVNAME(sc->sc_bus.bdev));
+               if (uhcidebug > 3)
                        uhci_dump_all(sc);
 #endif
-               }
-               sc->sc_dying = 1;
        }
 
        if (!ack)


Home | Main Index | Thread Index | Old Index