[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