Messages in this thread Patch in this message | | | From | "Rafael J. Wysocki" <> | Subject | Re: [PATCH] Fix USB suspend/resume crasher | Date | Thu, 24 Nov 2005 22:14:15 +0100 |
| |
On Thursday, 24 of November 2005 22:01, Benjamin Herrenschmidt wrote: > > > > > Well, it's there (actually the problem occurs in vanilla 2.6.15-rc2-mm1 that > > contains the patch). Do you mean it should go before the > > > > if (readl(&ehci->regs->configured_flag) != FLAG_CF) > > goto restart; > > > > thing? > > Yes. > > > > It may be worth following it with a memory barrier actually... just in case > > > (due to the absence of locks in that area). > > > > wmb()? > > Yup. > > I wrote that patch against a tree that had different things in that > function, Greg merged it by hand but he got that little bit wrong > unfortunately. I'll send a new patch later today.
Thanks.
FWIW, does the appended change look reasonable to you? (It apparently helps. ;-))
Rafael
Index: linux-2.6.15-rc2-mm1/drivers/usb/host/ehci-pci.c =================================================================== --- linux-2.6.15-rc2-mm1.orig/drivers/usb/host/ehci-pci.c 2005-11-24 21:42:34.000000000 +0100 +++ linux-2.6.15-rc2-mm1/drivers/usb/host/ehci-pci.c 2005-11-24 21:50:38.000000000 +0100 @@ -281,12 +281,13 @@ if (time_before(jiffies, ehci->next_statechange)) msleep(100); + set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); + wmb(); + /* If CF is clear, we lost PCI Vaux power and need to restart. */ if (readl(&ehci->regs->configured_flag) != FLAG_CF) goto restart; - set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); - /* If any port is suspended (or owned by the companion), * we know we can/must resume the HC (and mustn't reset it). * We just defer that to the root hub code. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |