Hi,

On an Acer Aspire 5500, freebsd is hanging in
usb/ehci_pci in the ehci_takecontroller function.
The device pci conf space reads invalid values
0xffffffff, making the function looping at infinite,
thus never entering ehci_init.

I dont know if the problem does not come from
earlier, but I did the following patch:

--- orig/sys/dev/usb/ehci_pci.c 2009-01-11 06:14:12.000000000 +0100
+++ new/sys/dev/usb/ehci_pci.c  2009-01-11 06:15:14.000000000 +0100
@@ -549,6 +549,10 @@

        cparams = EREAD4(sc, EHCI_HCCPARAMS);

+       /* prevent from looping ad infinite. ehci_init will fail. */
+       if (cparams == 0xffffffff)
+         return ;
+
        /* Synchronise with the BIOS if it owns the controller. */
        for (eecp = EHCI_HCC_EECP(cparams); eecp != 0;
            eecp = EHCI_EECP_NEXT(eec)) {
@@ -584,6 +588,9 @@
        int eecp;

        cparams = EREAD4(sc, EHCI_HCCPARAMS);
+       if (cparams == 0xffffffff)
+         return ;
+
        for (eecp = EHCI_HCC_EECP(cparams); eecp >= 0x40;
            eecp = EHCI_EECP_NEXT(eec)) {
                eec = pci_read_config(self, eecp, 4);

I hop it helps,

Fabien.


-- 
"What I cannot create I dont understand"
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "[email protected]"

Reply via email to