[Cbe-oss-dev] [PATCH 1/5] usb: Fix PS3 EHCI suspend
Geoff Levand
geoff at infradead.org
Thu Nov 24 12:37:08 EST 2011
Hi Alan,
On Fri, 2011-11-18 at 11:19 -0500, Alan Stern wrote:
> On Thu, 17 Nov 2011, Geoff Levand wrote:
> > I don't think the frame index should stop incrementing after the second port is
> > suspended, and I think the cause is the reason the ehci_quiesce handshake
> > fails.
>
> Yes indeed. So it appears the root hub really does get stopped when
> all the ports are suspended. Can you add a call to dbg_status() in
> _ps3_frame_index_check()? I'd like to know if the STS_HALT bit is set.
Here's the output:
ps3-ehci-driver sb_06: port 1 SUSPEND
ehci_hub_control:976: frame_index: ok
ps3-ehci-driver sb_06: ps3_frame_index_check status 8009 Async FLR INT
ehci_hub_control:1004: frame_index: ok
ps3-ehci-driver sb_06: ps3_frame_index_check status 8009 Async FLR INT
ps3-ehci-driver sb_06: port 2 SUSPEND
ehci_hub_control:976: frame_index: ok
ps3-ehci-driver sb_06: ps3_frame_index_check status 8008 Async FLR
....................
ehci_hub_control:1004: frame_index: stopped
ps3-ehci-driver sb_06: ps3_frame_index_check status 8008 Async FLR
usb usb1: bus auto-suspend, wakeup 1
ps3-ehci-driver sb_06: suspend root hub
ps3-ehci-driver sb_06: force halt; handshake d000080080020014 0000c000 00000000 -> -110
> > > Does the controller do this if only one port is suspended and the other
> > > is not enabled? What if neither port is enabled?
> >
> > I have not tested these.
>
> It would be nice to know. Is there any way you can test it? If those
> hubs are internal and permanently connected then I guess you can't. Do
> the controllers really have only two ports?
They are internal, and only two ports. The PS3 has an additional
USB hub inside its case to provide 4 external ports.
> > > > kernel BUG at drivers/usb/host/ehci-mem.c:74!
> > >
> > > This means some qh was still linked (or something similar) when it was
> > > removed. I don't see how these are connected to the root hub stopping.
> >
> > I think it is because when the HC frame index stops incrementing the qh
> > processing does not finish up, so it is still linked.
>
> I would expect the IAA watchdog timer to catch something like that.
I'll do some more investigation into this error and give a more
detailed report.
-Geoff
More information about the cbe-oss-dev
mailing list